/* ============================================================
   pm-layout.css — container · grid · ระยะห่างของ section
   ที่มา: docs/design.md §8.1, §8.2, §8.4
   ⛔ ห้ามมีค่า hex (B-1) · ⛔ ห้ามใช้ระยะนอกสเกล --s1…--s8 (§8.1)
   ============================================================ */

/* ---- Container (B-6) — design.md §8.2 ----
   กฎที่แก้อาการเว็บเบ้ซ้าย · ทุก section ต้องมี container นี้
   ⚠️ ห้ามใส่ margin:0 แบบ inline ทับ — เป็นสาเหตุจริงของอาการเบ้ซ้าย 6 ก.ย.
   เงื่อนไขผ่าน: เปิดที่ 1568px แล้วไม่มี section ใดเบ้ */
.pm-container{
  max-width:var(--wrap);              /* 1240px */
  margin:0 auto;
  padding-inline:var(--pad);          /* 40 → 40 → 22 (pm-tokens.css) */
}

/* ---- ระยะห่างแนวตั้งของ section — design.md §8.1 ----
   ค่าย่อตามหน้าจอมาจาก pm-tokens.css เอง (--s7 96→72→56 · --s8 128→88→64)
   จึงไม่ต้องเขียน media query ซ้ำที่นี่ */
.pm-section{ padding-block:var(--s7); }
.pm-band{    padding-block:var(--s8); }

/* แถบเต็มความกว้างที่เป็นพื้นเข้ม / พื้น brand — B-2:
   ไม่เกิน 1 แถบต่อ 1 section และสองแถบเข้มต้องไม่ติดกัน */
.pm-band--night{ background:var(--color-night); color:var(--color-on-night); }
.pm-band--brand{ background:var(--color-brand); color:var(--color-on-night); }
.pm-band--night h1,.pm-band--night h2,.pm-band--night h3,
.pm-band--night h4,.pm-band--night h5,.pm-band--night h6,
.pm-band--brand h1,.pm-band--brand h2,.pm-band--brand h3,
.pm-band--brand h4,.pm-band--brand h5,.pm-band--brand h6{ color:var(--color-on-night); }

/* ---- โครงสองคอลัมน์ เนื้อหา + TOC — design.md §8.2 ----
   720 + 64 + 300 = 1084 ≤ 1240 − (40×2) = 1160 ✅ พอดีในกรอบ container */
.pm-shell{
  display:grid;
  grid-template-columns:minmax(0,var(--measure-body)) var(--aside);
  gap:var(--gap-shell);
  align-items:start;
}
/* ที่ ≤1180px aside ยุบลงไปต่อท้ายเนื้อหา — ไม่ใช่ซ่อน
   TOC ยังต้องอยู่ใน DOM ตาม C-10 */
@media(max-width:1180px){
  .pm-shell{ grid-template-columns:minmax(0,1fr); gap:var(--s5); }
}

/* ---- ความกว้างของคอลัมน์ข้อความ — design.md §8.2 ---- */
.pm-measure{ max-width:var(--measure-body); }        /* 720px */
.pm-prose{   max-width:var(--measure-prose); }       /* 62ch — บล็อกแคบ: FAQ · การ์ด */

/* ---- กริดทั่วไป ---- */
.pm-grid{ display:grid; gap:var(--s4); }
.pm-grid--2{ grid-template-columns:repeat(2,minmax(0,1fr)); }
.pm-grid--3{ grid-template-columns:repeat(3,minmax(0,1fr)); }
.pm-grid--4{ grid-template-columns:repeat(4,minmax(0,1fr)); }
@media(max-width:1180px){
  .pm-grid--4{ grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media(max-width:680px){
  .pm-grid--2,.pm-grid--3,.pm-grid--4{ grid-template-columns:minmax(0,1fr); }
}

/* ---- ช่องภาพ (B-7) — design.md §8.4 ----
   ทุกใบในกริดเดียวกันต้องอัตราส่วนเท่ากัน
   🔴 P-2 ยังบังคับ: ห้าม publish ภาพสินค้าชุดเก่า */
.pm-media{
  background:var(--color-shade);      /* ⛔ ห้ามมีตัวอักษรบนนี้ — §3.1 */
  border-radius:var(--radius);
  overflow:hidden;
}
.pm-media img{ width:100%; height:100%; object-fit:cover; }
.pm-media--product{ aspect-ratio:var(--ratio-product); }   /* 1:1 */
/* 🔴 ชั่วคราว (15 ก.ย. 2026 · รอบที่ 9) — พื้นขาวเฉพาะช่องที่ **มีภาพจริงแล้ว**
   เทมเพลตเป็นคนติดคลาสนี้ให้ ไม่ใช่ CSS เดาเอง → ช่องที่ยังไม่มีภาพยังเป็น --color-shade เหมือนเดิม
   ⛔ ห้ามย้ายกฎนี้ไปไว้ที่ .pm-media--product เฉย ๆ เพราะจะทำให้ช่องรอภาพกลายเป็นกล่องขาวเปล่า
   ✅ ลบทิ้งพร้อม --color-photo-bg เมื่อได้ภาพชุดใหม่ที่คุมพื้นหลังเดียวกัน (P-2 · B-7) */
.pm-media--photo{ background:var(--color-photo-bg); }
.pm-media--hero{    aspect-ratio:var(--ratio-hero);        /* 4:5 */
                    border-radius:var(--radius-hero); }    /* §8.3 — hero เท่านั้น */
.pm-media--article{ aspect-ratio:var(--ratio-article); }   /* 16:10 */

/* ============================================================
   H · เลย์เอาต์เฉพาะหน้า Home (Case A)
   ที่มา: Claude Design `Case A - Home.dc.html` (artboard) — แปลงจาก inline
   style เป็นคลาส · ทุกระยะมาจากสเกล --s1…--s8 เท่านั้น (§8.1)
   ⛔ ห้ามมีค่า hex (B-1)
   เพิ่มเมื่อ 11 ก.ย. 2026 — รายงาน report-home-template-2026-09-11.md
   ============================================================ */

/* ---- หัว section แบบสองฝั่ง (หัวเรื่องซ้าย · คำโปรย/ลิงก์ขวา) ---- */
.pm-sechead{
  display:flex; justify-content:space-between; align-items:flex-end;
  gap:var(--s6); margin-bottom:var(--s5);
}
.pm-sechead__aside{ max-width:330px; color:var(--color-ink-muted); }
@media(max-width:680px){
  .pm-sechead{ flex-direction:column; align-items:flex-start; gap:var(--s3); }
  .pm-sechead__aside{ max-width:none; }
}

/* ---- 1 · Hero (โครงเดิม สองคอลัมน์บนพื้น paper) ----
   ⚠️ superseded 14 ก.ย. 2026 โดย .pm-banner ข้างล่าง — hero.php ไม่เรียกใช้คลาสชุดนี้แล้ว
      คงไว้เพื่ออ้างอิง/ย้อนกลับ (โฟลเดอร์นี้ไม่ใช่ git repo) ห้ามลบ
   สัดส่วน 1.04 / .96 มาจาก artboard · ภาพล้นออกขอบขวาของ container
   ด้วย margin ลบเท่ากับ --pad พอดี (ไม่ใช่ค่าที่คิดขึ้นใหม่) */
.pm-hero{ position:relative; overflow:hidden; }
.pm-hero__grid{
  display:grid; grid-template-columns:1.04fr .96fr;
  gap:var(--s6); align-items:center;
  padding-block:var(--s5) var(--s6);
}
.pm-hero__art{ position:relative; margin-right:calc(var(--pad) * -1); }
/* แถบข้อเท็จจริงใต้ปุ่ม — dt/dd สามช่อง */
.pm-hero__specs{
  display:grid; grid-template-columns:repeat(3,auto);
  justify-content:start; gap:0 var(--s5);
  border-top:1px solid var(--color-line);
  padding-top:var(--s3); margin:0;
}
/* การ์ดลอยที่ทับมุมซ้ายของภาพ hero */
.pm-hero__assay{ position:absolute; left:calc(var(--s4) * -1); top:41%; max-width:246px; }

@media(max-width:1180px){
  .pm-hero__grid{ grid-template-columns:minmax(0,1fr); gap:var(--s5); }
  .pm-hero__art{ margin-right:0; max-width:460px; }
  .pm-hero__assay{ position:static; max-width:460px; margin-top:var(--s2); box-shadow:none; }
}
@media(max-width:680px){
  .pm-hero__art,.pm-hero__assay{ max-width:none; }
  .pm-hero__specs{ grid-template-columns:minmax(0,1fr); gap:0; }
  .pm-hero__specs > div + div{
    border-top:1px solid var(--color-line);
    padding-top:var(--s2); margin-top:var(--s2);
  }
}

/* ---- 1a · Banner slider — เพิ่ม 14 ก.ย. 2026 (รอบ 7) ----
   คำสั่ง: มี banner หลายอัน · UX/UI ต่างกัน · เลื่อนสไลด์ได้

   🔴 ทำงานได้โดยไม่มี JS (C-10):
      track เป็น overflow-x:auto + scroll-snap → ปัด/สกรอลล์ดูครบ 5 ใบโดยไม่ต้องมี JS
      ⛔ ห้ามซ่อน scrollbar ของ viewport — ถ้าไม่มี JS มันคือสิ่งเดียวที่บอกว่ามีสไลด์อื่น
   🔴 ความสูงคงที่: ทั้ง 5 ใบเป็น flex item ในแถวเดียวกัน แถวจึงสูงเท่าใบที่สูงสุดเสมอ
      → เลื่อนสไลด์แล้วความสูง section ไม่ขยับ (กัน CLS)
      ⛔ ห้ามเปลี่ยน track เป็น position:absolute ทับกัน จะเสียคุณสมบัตินี้ทันที
   🔴 B-2: slider = หนึ่ง section → สไลด์พื้นเข้ม/พื้น brand มีได้ใบเดียว (ตอนนี้ = --promotion)
      และ padding ล่างของ section กันไม่ให้สไลด์ใดไปติดแถบ trust ที่เป็นพื้นเข้ม */
/* ไม่มี padding บน — สไลด์ต้องเริ่มชิด header เหมือนแบนเนอร์เต็มจอจริง
   padding ล่างคือ "ช่องว่างสีครีม" ที่กันไม่ให้สไลด์พื้น brand ไปติดแถบ trust ที่เป็นพื้นเข้ม
   ⛔ B-2: ห้ามลดค่าล่างนี้ลงจนสไลด์ brand ชนแถบเข้ม */
.pm-slider{ padding-block:0 var(--s5); background:var(--color-surface);
            border-bottom:1px solid var(--color-line); }
.pm-slider__viewport{
  overflow-x:auto; overflow-y:hidden;
  scroll-snap-type:x mandatory;
  scroll-behavior:smooth;
  overscroll-behavior-x:contain;
  /* 🔴 ทำให้บางลง แต่ **ห้ามซ่อนทิ้ง** — ถ้าไม่มี JS มันคือสิ่งเดียวที่บอกว่ามีสไลด์อื่น
     ⛔ ห้ามใช้ scrollbar-width:none หรือ ::-webkit-scrollbar{display:none} */
  scrollbar-width:thin;
  scrollbar-color:var(--color-line-strong) transparent;
}
/* 🔴 F-6 — เพิ่ม 15 ก.ย. 2026
   pm-base.css ปิดไว้แค่ animation กับ transition · **scroll-behavior ไม่ได้อยู่ในนั้น**
   สไลเดอร์จึงยังไถให้เห็นอยู่ดีสำหรับคนที่เปิด prefers-reduced-motion
   (ทั้งตอนกดปุ่ม ตอนปัด และตอนลิงก์ #anchor พาไปที่สไลด์)
   ⛔ อย่าพึ่ง JS ฝั่งเดียว — JS คุมได้เฉพาะการเลื่อนที่ตัวเองสั่ง */
@media (prefers-reduced-motion: reduce){
  .pm-slider__viewport{ scroll-behavior:auto; }
}

/* ring ของ viewport ต้องเห็นชัด — มันรับ focus ได้ (tabindex=0) เพื่อให้เลื่อนด้วยลูกศรได้ */
.pm-slider__viewport:focus-visible{ outline:2px solid var(--color-brand-ink); outline-offset:-2px; }
.pm-slider__track{ display:flex; align-items:stretch; }
/* 🔴 align-items:flex-start ไม่ใช่ center — แก้ 15 ก.ย. 2026
   ของเดิมจัดกึ่งกลาง ซึ่งขัดกับวิธีตรึงความสูงของ pm-heroslider.js โดยตรง:
   บนจอ ≥1181px track เป็น align-items:stretch → กล่องสไลด์ทุกใบสูงเท่าใบที่สูงที่สุด (805px)
   แต่ JS ตรึง viewport ไว้เท่า "ความสูงตามธรรมชาติ" ของใบที่กำลังดู (เช่น 666px)
   เนื้อในที่ถูกจัดกึ่งกลางใน 805px จึงเริ่มต่ำลงมา 133px แล้วโดน overflow-y:hidden
   ตัดท้ายทิ้ง — วัดจริงบน preview: สไลด์ goal โดนตัด **6px** (ป้ายช่องภาพหายไปครึ่งบรรทัด)
   วันนี้ 6px เพราะ padding ของสไลด์บังเอิญหักล้างกันเกือบพอดี — ขยับ padding หรือ
   เนื้อหาเมื่อไร ตัวเลขนี้โตทันที
   → ชิดบน = เนื้อในเริ่มที่ padding ของตัวเองเสมอ · ส่วนที่ถูกตัดคือพื้นเปล่าล้วน
   ⛔ ห้ามกลับไปเป็น center ตราบใดที่ JS ยังตรึงความสูงเท่าใบที่กำลังดู */
.pm-slide{
  flex:0 0 100%; min-width:0;
  scroll-snap-align:start;
  display:flex; align-items:flex-start;
  padding-block:var(--s6);
}
.pm-slide > .pm-container{ width:100%; }

/* แผงควบคุม
   🔴 **จัดใหม่ 15 ก.ย. 2026 — เดิมเป็น justify-content:space-between**
   ของเดิมทำงานตรงตามที่เขียนไว้ทุกอย่าง แต่ผลคือชุดควบคุมชุดเดียวกันถูกฉีกห่างกัน
   วัดจริง: จุดบอกตำแหน่งจบที่ x=605 · ลูกศรเริ่มที่ x=1365 → **ห่างกัน 760px** ที่จอ 1866
   (701px ที่ 1181 · 420px ที่ 900) จุดไปอยู่ใต้คอลัมน์ภาพ ลูกศรไปอยู่ใต้คอลัมน์ตัวหนังสือ
   สายตาอ่านไม่ออกว่าสองก้อนนี้คุมของชิ้นเดียวกัน
   → รวมเป็นก้อนเดียวชิดขวา = จบอยู่ฝั่งเดียวกับปุ่ม CTA ซึ่งเป็นที่ที่สายตาอยู่พอดีตอนอ่านจบ
   ระยะ --s4 ระหว่างจุดกับลูกศรกันไม่ให้กดพลาดข้ามก้อน (F-3 ต้องการแค่ 8px ให้เกินไว้)
   ⛔ จอ ≤680px ยังจัดกึ่งกลางเหมือนเดิม — ที่นั่นไม่มีคอลัมน์ให้ไปเกาะ */
.pm-slider__controls{
  display:flex; align-items:center; justify-content:flex-end;
  gap:var(--s4); flex-wrap:wrap; margin-top:var(--s4);
}
.pm-slider__dots,.pm-slider__nav{ display:flex; align-items:center; gap:var(--s1); }

@media(max-width:1180px){
  .pm-slide{ padding-block:var(--s4); }
  /* 🔴 จอแคบ = ทุกใบเรียงเดี่ยว ใบที่ 1 จึงสูงกว่าเพื่อนมาก (วัดได้ 1511px ที่ 555)
     ถ้ายังจัดกึ่งกลาง ใบที่สั้นกว่าจะลอยอยู่กลางช่องว่างเปล่า อ่านว่า "หน้าพัง"
     → ชิดบนแทน ช่องว่างไปกองอยู่ข้างล่างซึ่งอ่านว่า "จบแล้ว" ไม่ใช่ "หาย" */
  .pm-slider__track{ align-items:flex-start; }
}
@media(max-width:680px){
  .pm-slider__controls{ justify-content:center; }
  /* ย่อกรอบภาพของใบที่ 1 บนมือถือ — 4:5 เต็มความกว้างจอสูงเกือบหนึ่งหน้าจอเต็ม
     และความสูงนั้นถูกบังคับไปที่อีก 4 ใบด้วย (ทุกใบอยู่ในแถว flex เดียวกัน) */
  .pm-slide--specialist .pm-banner__frame{ width:min(100%,300px); }
}

/* ---- 1a-2 · เลย์เอาต์เฉพาะของแต่ละสไลด์ ----
   🔴 ความต่างของ UX/UI มาจาก "โครง" ไม่ใช่ "สี" — เพราะสีถูกล็อกด้วยสองกฎ:
      B-2 (สไลด์เข้ม/brand ได้ใบเดียว) และ §3.2 (โควตา accent 3 จุด/หน้าใช้ครบแล้ว) */

/* 2 · promotion — จัดกึ่งกลางทั้งใบ */
.pm-slide__center{ text-align:center; max-width:860px; margin-inline:auto; }
.pm-slide__deck{ margin-inline:auto; max-width:56ch; }
/* 🔴 การ์ดชุดเป็น "ภาพซ้าย ข้อความขวา" ไม่ใช่ "ภาพทับข้อความ" — เหตุผลคือความสูง:
   ใบนี้จัดกึ่งกลาง ทุกอย่างจึงเรียงลงมาเป็นชั้น ๆ อยู่แล้ว
   ถ้าวางภาพ 1:1 ทับบนข้อความอีก ใบนี้จะสูง 940px และ **บังคับให้ทั้ง 5 ใบสูงตาม**
   ทำให้สไลด์ที่ 1 (ที่อนุมัติแล้ว สูงตามธรรมชาติ 699px) มีที่ว่างตาย 240px
   → วางแนวนอน ความสูงของแถวจึงเท่ากับความสูงภาพ ไม่ใช่ภาพบวกข้อความ
   ⛔ ถ้าจะกลับไปวางภาพทับข้อความ ต้องวัดความสูงทั้ง 5 ใบใหม่ทุกครั้ง */
.pm-slide__sets{
  list-style:none; margin:0 auto; padding:0; max-width:780px;
  display:grid; grid-template-columns:repeat(3,minmax(0,1fr));
  gap:var(--s3);
}
.pm-slide__sets li{
  display:flex; align-items:center; gap:var(--s2); text-align:left;
  padding-top:var(--s3); border-top:1px solid var(--color-line-night);
}
@media(max-width:680px){ .pm-slide__sets{ grid-template-columns:minmax(0,1fr); gap:var(--s2); } }

/* 3 · shipping — หัวข้อ+ตาราง+ปุ่มซ้าย · ภาพขวา · ข้อเท็จจริง 3 บรรทัดพาดล่าง
   🔴 เขียนใหม่รอบ 10 (14 ก.ย.) หลังเจ้าของงานว่า "รกไปละ"
      รอบ 9 วางเป็น [ข้อความ+3 ช่อง] | [ตาราง+ภาพ] = ซ้ายมี 4 ก้อน ขวามี 2 ก้อน
      ทั้งสองฝั่งแย่งกันเป็นพระเอก · ตอนนี้ขวาเหลือ **ภาพอย่างเดียว** ตารางย้ายไปอยู่ใต้หัวข้อ
   🔴 คอลัมน์กลับมาเป็น 1fr 1fr — คอลัมน์ขวาไม่ต้องแคบแล้วเพราะไม่มีตารางอยู่ในนั้น
   🔴 align-items:start ไม่ใช่ center: สองคอลัมน์สูงไม่เท่ากันโดยธรรมชาติ
      ถ้าจัดกึ่งกลาง ขอบบนของภาพจะไม่ตรงกับหัวข้อ อ่านเป็นสองก้อนที่ไม่เกี่ยวกัน */
/* 🔴 คอลัมน์ห่าง --s6 แต่ **แถวห่างแค่ --s5** — เดิมใช้ gap เดียวทั้งสองแกน
   ผลคือช่องว่างเหนือแถวข้อเท็จจริงกว้างเท่าช่องว่างระหว่างคอลัมน์ ซึ่งอ่านเป็น "หลุด"
   ไม่ใช่ "ต่อเนื่อง" เพราะแถวล่างเป็นของก้อนเดียวกับด้านบน ไม่ใช่คนละเรื่อง */
.pm-slide__strip{
  display:grid; grid-template-columns:1fr 1fr;
  column-gap:var(--s6); row-gap:var(--s5);
  align-items:start;
}
/* justify-items:start — ไม่งั้นปุ่มซึ่งเป็น grid item จะยืดเต็มคอลัมน์ */
.pm-slide__striphead{ display:grid; gap:0; justify-items:start; }
.pm-slide__striphead .pm-tablewrap{ justify-self:stretch; width:100%; }
/* แถวล่างกับหมายเหตุท้ายใบต้องพาดสองคอลัมน์ ไม่งั้นไปนั่งใต้คอลัมน์ซ้ายคอลัมน์เดียว */
.pm-slide__strip > .pm-slide__facts,
.pm-slide__strip > .pm-slide__foot{ grid-column:1 / -1; }
/* .pm-slide__foot มี margin-top:--s5 มาจาก pm-components.css สำหรับสไลด์ที่ไม่ใช่ grid
   ในใบนี้ row-gap ทำหน้าที่นั้นอยู่แล้ว ถ้าปล่อยไว้จะได้ระยะซ้อนกันสองชั้น (40 + 40) */
.pm-slide__strip > .pm-slide__foot{ margin-top:0; }
/* superseded รอบ 10 — เดิมเป็นกล่องรวม [ตาราง + ภาพ] ในคอลัมน์ขวา ตอนนี้ไม่มีในมาร์กอัปแล้ว
   .pm-slide__shipside{ display:grid; gap:var(--s4); justify-items:start; width:100%; }
   .pm-slide__shipside .pm-tablewrap{ width:100%; } */
.pm-slide__shipfig{ margin:0; }
/* 🔴 256 → 340 (รอบ 10) — คอลัมน์ขวาเหลือภาพอย่างเดียว ภาพจึงโตได้โดยไม่ดันความสูงรวม
   4:5 ที่ 340 กว้าง = 425 สูง
   ⛔ ถ้าแก้ตัวเลขนี้ ต้องกลับไปแก้ทั้ง pm_home_photo_slots()['shipping']
      **และ docs/photo-brief-2026-09-14.md** — ทีมกราฟฟิกอ่านไฟล์บรีฟ ไม่ได้อ่าน CSS */
.pm-slide__shipfig .pm-slide__shot{ max-width:340px; }
.pm-slide__shipfig .pm-photo-note{ max-width:340px; }

/* แถวข้อเท็จจริง — **บรรทัดเดียวต่อข้อ** ไอคอนอยู่หน้าบรรทัด ไม่ใช่หัวข้อ+เนื้อความแยก
   🔴 รอบ 9 ใช้ .pm-slide__cols ซึ่งมีหัวข้อหนา + เนื้อความ 2 บรรทัด = 6 ก้อนข้อความเล็ก
      คือสาเหตุใหญ่ที่สุดที่ใบนี้อ่านว่า "รก"
   ⛔ ห้ามเพิ่มเนื้อความใต้บรรทัดพวกนี้ — ถ้าต้องอธิบายยาว มันไม่ควรอยู่บนแบนเนอร์ */
.pm-slide__facts{
  list-style:none; margin:0; padding:0;
  display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:var(--s4);
  border-top:1px solid var(--color-line); padding-top:var(--s4);
}
.pm-slide__facts li{
  display:flex; align-items:center; gap:var(--s2);
  font-size:var(--fs-small); color:var(--color-ink-body);
}
.pm-slide__facts .pm-slide__ico{ flex:none; }

.pm-slide__cols{
  list-style:none; margin:0; padding:0;
  display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:var(--s4);
}
.pm-slide__cols{ margin-top:var(--s5); }
.pm-slide__cols li{ border-top:1px solid var(--color-line); padding-top:var(--s3); }
@media(max-width:900px){
  .pm-slide__strip{ grid-template-columns:minmax(0,1fr); gap:var(--s5); }
}
@media(max-width:680px){
  .pm-slide__cols{ grid-template-columns:minmax(0,1fr); gap:var(--s3); }
  /* เรียงลงล่างบนมือถือ — 3 ช่องเรียงข้างที่ 346px เหลือช่องละ ~100px ตัวหนังสือหักทุกคำ */
  .pm-slide__facts{ grid-template-columns:minmax(0,1fr); gap:var(--s2); }
}

/* 4 · goal — ข้อความซ้าย การ์ดเรียงขวา */
.pm-slide__goal{ display:grid; grid-template-columns:1fr 1fr; gap:var(--s6); align-items:center; }
.pm-slide__goals{ list-style:none; margin:0; padding:0; display:grid; gap:var(--s2); }
.pm-slide__goals li{ display:flex; align-items:center; gap:var(--s3); }
.pm-slide__goalbody{ display:grid; gap:var(--s1); }
@media(max-width:900px){ .pm-slide__goal{ grid-template-columns:minmax(0,1fr); gap:var(--s5); } }

/* 5 · discover — ตัวพิมพ์ใหญ่ซ้าย รายการมีเลขขวา */
.pm-slide__read{ display:grid; grid-template-columns:1fr 1.05fr; gap:var(--s6); align-items:center; }
.pm-slide__reads{ list-style:none; margin:0; padding:0; display:grid; }
.pm-slide__reads li{
  display:flex; align-items:center; gap:var(--s3);
  border-top:1px solid var(--color-line); padding-block:var(--s3);
}
.pm-slide__reads .pm-slide__readbody{ flex:1; }
.pm-slide__reads li:last-child{ border-bottom:1px solid var(--color-line); }
.pm-slide__readbody{ display:grid; gap:var(--s1); }
@media(max-width:900px){ .pm-slide__read{ grid-template-columns:minmax(0,1fr); gap:var(--s5); } }

/* ---- 1a-3 · คุมความสูงบนจอแคบ ----
   🔴 บล็อกนี้ต้องอยู่ **ท้ายสุด** ของกฎสไลด์ทั้งหมด
      เพราะ `.pm-slide__shipfig .pm-slide__shot` ของฐานมีน้ำหนักเท่ากัน (0,2,0)
      ถ้าเขียนไว้ก่อน กฎฐานจะชนะด้วยลำดับในไฟล์ (เจอจริง 14 ก.ย.: แก้แล้วค่าไม่ขยับเลย)
   🔴 วัดที่ 390px ตอนตั้งกฎนี้ (รอบ 8): shipping 1458 · specialist 1274 · promotion 1037 · goal 967 · discover 958
      ใบ shipping กลายเป็นใบสูงสุดแทนใบที่ 1 ทั้งแถวจึงถูกดึงไปตามใบที่ไม่ใช่ตัวหลัก
   🔴 **168 → 264 (รอบ 10)** — เหตุผลเดิมหมดอายุแล้วสองชั้น:
      (1) ใบ shipping ถูกรื้อให้เบาลง เหลือ 1109px ที่ 390px ไม่ใช่ใบที่สูงสุดอีกต่อไป (ใบ 1 = 1274)
      (2) JS ตรึงความสูงตามใบที่ดูอยู่แล้ว ใบที่สูงกว่าไม่ลากใบอื่นไปด้วยอีก
      ที่ 168px ภาพเล็กจนไม่ทำหน้าที่ "ดึงดูด" ตามที่เจ้าของงานสั่งไว้ในรอบ 8
   ⛔ ถ้าแก้ค่าพวกนี้ ต้องกลับไปวัดความสูงทั้ง 5 ใบที่ 390px ใหม่ทุกครั้ง */
@media(max-width:680px){
  .pm-slide__shipfig .pm-slide__shot,
  .pm-slide__shipfig .pm-photo-note{ max-width:264px; }
  .pm-slide__cols{ margin-top:var(--s4); gap:var(--s2); }
  .pm-slide__cols li{ padding-top:var(--s2); }
}

/* ---- 1b · Banner เต็มความกว้าง พื้นสว่าง — เขียนใหม่ 14 ก.ย. 2026 (รอบ 2) ----
   คำสั่งเจ้าของงาน: กว้างเท่าอุปกรณ์ · พื้นขาว · ช่องภาพต้องบอกสเปกให้กราฟฟิก

   เต็มความกว้างแบบเดียวกับ .pm-band--night: section กินขอบจอ แต่ของข้างในอยู่ใน
   .pm-container ที่ margin:0 auto → B-6 ยังผ่าน (เปิด 1742px แล้วเบ้ = 0)
   ⛔ ไม่ใช้ vh ที่ใดเลย — ความสูงถูกกำหนดโดยกรอบภาพ 4:5 ซึ่งมาจาก token
      (ค่า vh เป็นมิติที่ไม่มีในชุด token · ถ้าจะใช้ต้องเป็นมติแยก) */
.pm-hero--banner{
  background:var(--color-surface);   /* §3.1 "แถบที่ต้องยกจากพื้น" — พื้นหน้าเว็บยังเป็น paper */
  border-bottom:1px solid var(--color-line);
  padding-block:var(--s6);
}

.pm-banner{
  display:grid; grid-template-columns:1fr 1.1fr;
  gap:var(--s6); align-items:center;
}

/* DOM เขียน copy ไว้ก่อน (ลำดับอ่าน = ลำดับที่เห็นบนมือถือ · F-2 · C-11)
   จอกว้างจึงสั่งคอลัมน์เอง ไม่พึ่งลำดับ DOM */
.pm-banner__copy  { grid-column:2; grid-row:1; align-self:center; max-width:560px; }
.pm-banner__figure{ grid-column:1; grid-row:1; position:relative; margin:0; }

/* กรอบภาพ — .pm-banner__frame คือ "ที่อ้างอิงของการ์ดลอย" ไม่ใช่ทั้ง figure
   🔴 รอบแรกผูกการ์ดไว้กับ figure ซึ่งรวมป้ายใต้ภาพด้วย → การ์ดไปนั่งทับตัวหนังสือป้าย */
.pm-banner__frame{ position:relative; width:min(100%,420px); margin-left:auto; }

/* 4:5 + ทรงโค้งบนของ 1a — ไม่แตะ --ratio-hero / --radius-hero (B-7 · design.md §8.3) */
.pm-banner__slot{
  aspect-ratio:var(--ratio-hero);
  border-radius:var(--radius-hero);
  background:var(--color-shade);     /* §3.1 บทบาท "พื้นช่องภาพ placeholder" */
  border:1px solid var(--color-line);
}

/* ภาพจริงของช่องนี้ (เพิ่ม 15 ก.ย. 2026 · attachment 9275)
   <img> รับคลาส .pm-banner__slot เดิมไปทั้งชุด จึงได้ aspect-ratio · radius · border เท่ากับ
   ช่องรอภาพเป๊ะ → **ทรงโค้งบนของ 1a ไม่เปลี่ยน ไม่ว่าจะมีภาพหรือไม่มี**
   ⛔ ห้ามแยก radius ของสองสถานะออกจากกัน — ทรงนี้คือสิ่งที่ design.md §8.3 ล็อกไว้

   `overflow:hidden` เขียนไว้ทั้งที่ border-radius ก็คลิปเนื้อ <img> ให้อยู่แล้ว
   — กันไว้เผื่อวันหน้ามีอะไรซ้อนอยู่ในกรอบเดียวกัน ไม่ใช่เพราะวันนี้ไม่คลิป
   พื้น --color-shade คงไว้: เป็นสิ่งที่เห็นระหว่างภาพยังโหลดไม่เสร็จ และตอนภาพเสีย */
.pm-banner__slot--photo{
  display:block; width:100%; height:auto;
  object-fit:cover; object-position:center;
  overflow:hidden;
}

/* ป้ายสั้นใต้กรอบ — บรีฟเต็มอยู่ที่ .pm-buildnote ใต้แบนเนอร์ */
.pm-banner__slotnote{ width:min(100%,420px); margin-left:auto; }

/* การ์ดลอยทับมุมซ้ายล่างของกรอบ
   ยื่นออกซ้ายของกรอบ --s7 เพื่อให้ทับเนื้อภาพราว 1 ใน 3 ไม่ใช่ครึ่งใบ
   (รอบแรกทับ ~60% จนมองไม่ออกว่าภาพเป็นทรงอะไร) */
.pm-banner__facts{
  position:absolute; left:calc(var(--s7) * -1); bottom:var(--s5);
  width:min(250px,64%);
  background:var(--color-surface);
  border:1px solid var(--color-line);   /* §8.3 เงาไม่เคยเป็นตัวบอกขอบเขตเพียงลำพัง */
  border-radius:var(--radius);
  padding:var(--s3);
  box-shadow:var(--shadow-lift);
}
/* หนึ่งแถวต่อหนึ่งข้อเท็จจริง — โครงสามคอลัมน์ของรอบแรกทำให้ค่าที่ยาวตัดบรรทัดไม่ตรงกัน */
.pm-banner__specs{ margin:var(--s3) 0; display:grid; }
.pm-banner__specs > div{
  display:flex; align-items:baseline; justify-content:space-between; gap:var(--s2);
  border-top:1px solid var(--color-line); padding-block:var(--s1);
}
.pm-banner__specs dt{ white-space:nowrap; }
.pm-banner__specs dd{ margin:0; text-align:right; color:var(--color-ink); font-weight:600; }

/* ---- แผงบรีฟภาพใต้แบนเนอร์ — นั่งร้าน ลบทิ้งเมื่อภาพจริงมาแล้ว (P-2) ----
   ตั้งใจให้ "อ่านออกว่าไม่ใช่เนื้อหาเว็บ": พื้น paper · เส้นซ้ายหนา · ตัวอักษรขนาด meta
   (ใช้วิธีเดียวกับกล่องเตือนใน design.md §7.5 ที่ไม่มีสีแดงในระบบ) */
/* ⛔ 15 ก.ย. 2026 — คลาสชุด .pm-buildnote ไม่ถูก render บนหน้าอีกแล้ว (ถอดออกจาก hero.php)
   คงสไตล์ไว้เพราะไฟล์ preview ของ 14 ก.ย. ยัง <link> มาที่ไฟล์นี้ · C-9 ยังเหลือที่มาก */
.pm-buildnote{
  background:var(--color-paper);
  border-bottom:1px solid var(--color-line);
  padding-block:var(--s4);
}
.pm-buildnote .pm-container{ border-left:3px solid var(--color-line-strong); }
.pm-buildnote__list{
  margin:0; display:grid; grid-template-columns:repeat(2,minmax(0,1fr));
  gap:var(--s1) var(--s5);
}
.pm-buildnote__list > div{ display:grid; grid-template-columns:72px minmax(0,1fr); gap:var(--s2); }
.pm-buildnote__list dt{ font-size:var(--fs-meta); color:var(--color-ink); font-weight:600; }
.pm-buildnote__list dd{ margin:0; font-size:var(--fs-meta); line-height:1.5; color:var(--color-ink-body); }
.pm-buildnote__foot{ margin:var(--s3) 0 0; padding-top:var(--s2);
                     border-top:1px solid var(--color-line); }
@media(max-width:900px){ .pm-buildnote__list{ grid-template-columns:minmax(0,1fr); } }

/* 🔴 **ย้ายจุดตัดเรียงเดี่ยวจาก 1180 → 900 เมื่อ 15 ก.ย. 2026** ของเดิมอยู่ที่ `.superseded-2026-09-15e`
   เหตุผลวัดได้ ไม่ใช่รสนิยม — ที่ 900px แบนเนอร์ใบที่ 1 สูง **1,374px**
   (copy เต็มความกว้าง + กรอบ 4:5 กว้าง 420 = สูง 525 + การ์ดข้อเท็จจริงที่ตกลงมาเรียงต่อ 357
    + ป้ายใต้ภาพ) → **แผงควบคุมไปอยู่ที่ 1,406px จากหัว slider**
   แปลว่าบนโน้ตบุ๊กและแท็บเล็ต **ไม่มีใครรู้เลยว่ามีแบนเนอร์ 5 ใบ** เพราะจุดกับลูกศรอยู่ใต้จอ
   ที่ 901px สองคอลัมน์ยังอ่านสบาย (คอลัมน์ละ ~368px) เมื่อหุบกรอบภาพเหลือ 300px
   วัดหลังแก้: ใบที่ 1 เหลือ **494px** · แผงควบคุมขึ้นมาอยู่ที่ **526px** — เห็นตั้งแต่ยังไม่สกรอลล์
   ⛔ ห้ามดันจุดตัดลงต่ำกว่านี้อีก — ต่ำกว่า ~900px คอลัมน์ copy แคบจนหัว --fs-d1 ตัดบรรทัดเละ */
/* 901–1180 · สองคอลัมน์เหมือนจอกว้าง แต่ทั้งกรอบภาพและการ์ดลอยต้องหุบตามคอลัมน์ที่แคบลง
   ทุกค่าข้างล่างมาจากการวัด ไม่ได้เดา — เงื่อนไขที่ต้องผ่านพร้อมกันสามข้อ:
     1. การ์ดต้องไม่มุดใต้ header ที่ sticky สูง 69px ตอนสไลเดอร์ถูกเลื่อนมาชิดบนสุด
        (กรอบ 300px สูงแค่ 375 ส่วนการ์ดสูง 357 → หัวการ์ดโผล่เหนือกรอบ 14px แล้วโดน header กิน
         วัดได้ −46px ที่ 1000px คือ "CURRENT LOT" กับชื่อการ์ดหายไปเลย)
     2. การ์ดต้องไม่ยื่นพ้นขอบหน้าต่าง — ที่ 901px คอลัมน์ซ้ายเหลือ ~368px
        ระยะยื่นซ้ายจึงใช้ --s7 ของจอกว้างไม่ได้ ต้องเหลือ --s5
     3. แผงควบคุมต้องยังอยู่เหนือขอบจอ
   ผลที่วัดได้: กรอบ 340 (สูง 425) · การ์ดพ้น header +7px ที่ทั้ง 901/1000/1180 ·
   ขอบซ้ายการ์ดห่างขอบหน้าต่าง 20px ที่ 901px · ใบที่ 1 สูง 535px · แผงควบคุมที่ 567px
   ⛔ ห้ามหุบการ์ดให้แคบกว่า 230px เพื่อเอาที่ว่าง — ทดสอบ 210px แล้วข้อความตัดบรรทัดเพิ่ม
      การ์ด **สูงขึ้น** เป็น 384 แล้วกลับไปมุดใต้ header อีก (−28px) คือได้ผลตรงข้าม */
@media(max-width:1180px){
  .pm-banner__frame,.pm-banner__slotnote{ width:min(100%,340px); }
}
@media(min-width:901px) and (max-width:1180px){
  .pm-banner{ gap:var(--s5); }
  .pm-banner__facts{ left:calc(var(--s5) * -1); bottom:var(--s3); width:min(230px,78%); }
}

@media(max-width:900px){
  /* เรียงเดี่ยว = คืนลำดับให้เป็นไปตาม DOM (copy → ภาพ → การ์ด)
     H1 จึงอยู่เหนือกรอบภาพเสมอ ไม่ถูกกรอบ 4:5 ดันตกจอ */
  .pm-banner{ grid-template-columns:minmax(0,1fr); gap:var(--s5); }
  .pm-banner__copy  { grid-column:auto; grid-row:auto; max-width:none; }
  .pm-banner__figure{ grid-column:auto; grid-row:auto; }
  /* เรียงเดี่ยวแล้วการ์ดไปต่อท้ายภาพ ความสูงจึงบวกกันตรง ๆ — กรอบกลับมา 300px
     เพื่อไม่ให้ก้อนรวมสูงขึ้นอีก 50px โดยไม่ได้อะไรกลับมา */
  .pm-banner__frame,.pm-banner__slotnote{ width:min(100%,300px); margin-left:0; }
  .pm-banner__facts{ position:static; width:auto; box-shadow:none; margin-top:var(--s3); }
}
@media(max-width:680px){
  .pm-banner__frame,.pm-banner__slotnote{ width:100%; }
  .pm-buildnote__list > div{ grid-template-columns:minmax(0,1fr); gap:0; }
}

/* ---- 2 · แถบความน่าเชื่อถือ (4 ข้อ บนแถบเข้ม) ---- */
.pm-trust{
  list-style:none; margin:0 auto; padding-block:var(--s3);
  display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:var(--s2) var(--s4);
}
.pm-trust li{ display:flex; align-items:center; gap:var(--s1); }
.pm-trust svg{ flex:none; width:20px; height:20px; stroke:var(--color-on-night-3); }
@media(max-width:1180px){ .pm-trust{ grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media(max-width:680px){  .pm-trust{ grid-template-columns:minmax(0,1fr); } }

/* ---- โครงสองคอลัมน์ที่ไม่ใช่ 50/50 — ใช้ซ้ำใน section 3 · 7 · 8 ---- */
.pm-split{ display:grid; gap:var(--s6); align-items:center; }
.pm-split--media{  grid-template-columns:.86fr 1.14fr; }   /* ภาพซ้าย เนื้อหาขวา */
.pm-split--evidence{ grid-template-columns:.82fr 1.18fr; align-items:start; }
.pm-split--ask{    grid-template-columns:.5fr 1fr; align-items:start; }
@media(max-width:1180px){
  .pm-split{ grid-template-columns:minmax(0,1fr); gap:var(--s5); }
}

/* ---- ตารางข้อเท็จจริง (dl สองคอลัมน์ มีเส้นคั่นทุกแถว) ---- */
.pm-facts{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:0 var(--s5); margin:0; }
.pm-facts > div{ border-top:1px solid var(--color-line); padding-block:var(--s2); }
.pm-facts > div:nth-last-child(-n+2){ border-bottom:1px solid var(--color-line); }
@media(max-width:1024px){ .pm-facts{ grid-template-columns:minmax(0,1fr); }
                          .pm-facts > div:nth-last-child(-n+2){ border-bottom:0; }
                          .pm-facts > div:last-child{ border-bottom:1px solid var(--color-line); } }

/* ---- 4 · สามชั้นการใช้งาน — กว้างไม่เท่ากันโดยตั้งใจ (artboard) ---- */
/* 🔴 แก้ 15 ก.ย. 2026 — เดิมเป็น flex ที่กว้างไม่เท่ากัน (1.3 / 1 / .92)
   section นี้มีหน้าที่เดียวคือ "เลือกหนึ่งในสาม" ความกว้างที่ไม่เท่ากันจึงสื่อว่า
   ใบซ้ายสำคัญกว่า พร้อม ๆ กับที่ใบขวาเป็นพื้นเข้มซึ่งสื่อว่าใบขวาสำคัญกว่า
   → สองสัญญาณขัดกันเองในกริดเดียว = ต้นเหตุหนึ่งของ "ดูแล้วงง"
   grid ที่ 3 คอลัมน์เท่ากันทำให้เทียบราคาและเนื้อหากันได้ตรง ๆ ทีละบรรทัด
   ถอดกลับ: เปลี่ยนสามบรรทัดนี้กลับเป็น flex ชุดเดิมที่เก็บไว้ใน .superseded-2026-09-15 */
.pm-layers{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:var(--s2); align-items:stretch; }
.pm-layers > *{ display:flex; flex-direction:column; gap:var(--s2); padding:var(--s5) var(--s4); }
@media(max-width:1180px){ .pm-layers{ grid-template-columns:minmax(0,1fr); } }
@media(max-width:680px){  .pm-layers > *{ padding:var(--s4) var(--s3); } }

/* ---- 5 · กล่อง Ritual Sets (แถบเข้มในกรอบ container ไม่เต็มจอ) ---- */
.pm-inset{ border-radius:var(--radius); padding:var(--s6) var(--s5); }
@media(max-width:680px){ .pm-inset{ padding:var(--s5) var(--s3); } }

/* ---- 6 · กริดสินค้า — ใบแรกกว้างสองช่อง ---- */
.pm-prodgrid{ display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:var(--s2); }
/* ใบแรกกว้างสองช่องและวางแนวนอน — ไม่ใช่ "ภาพใหญ่กว่า"
   🔴 artboard ให้ใบนี้ใช้ภาพ 16:10 ขณะที่ใบอื่นเป็น 1:1 → **ผิด B-7 สองข้อพร้อมกัน**
      ("สินค้า 1:1" และ "ทุกใบในกริดเดียวกันต้องเท่ากัน")
      ทางแก้ที่ยังรักษาเจตนาเดิมไว้: กว้างสองช่องเหมือนเดิม แต่วางภาพไว้ครึ่งซ้าย
      ภาพจึงยังเป็นสี่เหลี่ยมจัตุรัสขนาดเท่าการ์ดใบอื่นเป๊ะ · ตัวหนังสือไปอยู่ครึ่งขวา
   align-self:flex-start ที่ช่องภาพ = ภาพไม่ถูกยืดตามความสูงของแถว (ถ้ายืด 1:1 จะเพี้ยน) */
/* 🔴 แก้รอบที่ 2 (15 ก.ย. 2026) — `.is-featured` **ไม่ใช่การ์ดสินค้าอีกแล้ว**
   เหตุผล (วัดจริง): ช่องภาพสินค้าถูกล็อก 1:1 (B-7) ที่ความกว้างครึ่งใบ = สูง 285px
   แต่แถวสูง 471px → เหลือพื้นการ์ดเปล่าใต้ภาพ **186px** และช่องว่างในเนื้อการ์ด **272px**
   ตอนนี้ `.is-featured` = ใบทางเข้า Ritual Bundles ซึ่งไม่มีภาพ จึงยืดเต็มแถวได้พอดี
   ⛔ ห้ามใส่ `.is-featured` ให้การ์ดที่มีช่องภาพ 1:1 อีก — พื้นที่เปล่าจะกลับมาทันที */
@media(min-width:681px){
  .pm-prodgrid > .is-featured{ grid-column:span 2; }
  /* กฎสองบรรทัดข้างล่างเหลือไว้เผื่อวันที่มีภาพจริงแล้วอยากได้การ์ดสินค้าแนวนอนอีกครั้ง
     — ต้องแก้สัดส่วนภาพก่อนถึงจะใช้ได้ ตอนนี้ไม่มีอะไร match */
  .pm-prodgrid > .is-featured.pm-card--link{ flex-direction:row; align-items:stretch; }
  .pm-prodgrid > .is-featured .pm-prodcard__media{ flex:0 0 50%; align-self:flex-start; }
  .pm-prodgrid > .is-featured .pm-prodcard__body{ flex:1 1 50%; justify-content:center; }
  /* 🔴 เคยเขียน `.is-featured .pm-prodcard__foot{ margin-top:var(--s2) }` ไว้ตรงนี้แล้ว **ถอดออก**
     เหตุผล: มันลอยราคาของใบกว้างสองช่องขึ้นไป **สูงกว่าราคาของอีกสามใบในแถวเดียวกัน 128px**
     ซึ่งเป็นข้อบกพร่องชนิดเดียวกับที่รอบ §5 ถือว่าต้องแก้ (ราคาต้องเทียบกันได้ในแนวเดียวกัน)
     ปล่อยให้ margin-top:auto ของบล็อกหลักทำงาน → ราคาทั้งสี่ใบในแถวแรกอยู่ระดับเดียวกัน
     ⛔ ห้ามใส่ override กลับมาโดยไม่วัดแนวราคาของแถวแรกใหม่ */
}
@media(max-width:1180px){ .pm-prodgrid{ grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media(max-width:680px){  .pm-prodgrid{ grid-template-columns:minmax(0,1fr); }
                          .pm-prodgrid > .is-featured{ grid-column:span 1; } }

/* ---- 7 · รายการหลักฐาน (แถวมีเส้นคั่น บนแถบเข้ม) ---- */
.pm-evidence > div{ border-top:1px solid var(--color-line-night); padding-block:var(--s3); }
.pm-evidence > div:last-child{ border-bottom:1px solid var(--color-line-night); }

/* ---- 9 · ลำดับการอ่าน (ol สามใบ) ---- */
.pm-reading{
  list-style:none; margin:0; padding:0;
  display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:var(--s3);
}
.pm-reading > li{ display:flex; }
@media(max-width:1024px){ .pm-reading{ grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media(max-width:680px){  .pm-reading{ grid-template-columns:minmax(0,1fr); } }

/* ============================================================
   12 · หน้า Shop — โครงสองคอลัมน์ (ตัวกรองซ้าย · ผลลัพธ์ขวา)
   เพิ่ม 16 ก.ย. 2026 · ที่มา `Case A - Shop.dc.html` section 2
   รายงาน docs/report-shop-2026-09-16.md
   ============================================================ */

/* ⚠️ **ไม่ใช้ .pm-shell ซ้ำ** ทั้งที่เป็นโครงสองคอลัมน์เหมือนกัน
   .pm-shell คือ "เนื้อหา 720 + aside 300" — คอลัมน์กว้างอยู่ **ซ้าย** และถูกล็อกที่ 720px
   หน้า Shop ต้องการตรงข้ามทุกข้อ: คอลัมน์แคบอยู่ซ้าย และคอลัมน์ขวาต้องยืดเต็มที่เหลือ
   เพราะมันคือกริดสินค้า 3 คอลัมน์ ไม่ใช่ย่อหน้าข้อความที่มีเพดานความยาวบรรทัด
   ⛔ ห้ามแก้ .pm-shell ให้รองรับทั้งสองแบบ — จะพังหน้าบทความที่ใช้มันอยู่ */
.pm-shopshell{
  display:grid;
  grid-template-columns:var(--aside) minmax(0,1fr);
  gap:var(--gap-shell);
  align-items:start;
}

/* ตัวกรองเกาะขอบบนตอนเลื่อน — ตามไฟล์ออกแบบ (position:sticky;top:96px)
   ใช้ --s7 (96px) ตรง ๆ ไม่ได้ตั้งค่าใหม่ */
.pm-shopside{
  position:sticky; top:var(--s7);
  display:flex; flex-direction:column; gap:var(--s4);
}

/* ที่ ≤1180px ยุบเป็นคอลัมน์เดียว — ตัวกรอง **ขึ้นไปอยู่บนกริด ไม่ใช่ถูกซ่อน**
   (C-10: ตัวกรองต้องอยู่ใน DOM เสมอ) · เลิก sticky เพราะแถบที่เกาะอยู่บนจอแคบ
   จะกินความสูงจอไปโดยเปล่าประโยชน์ */
@media(max-width:1180px){
  .pm-shopshell{ grid-template-columns:minmax(0,1fr); gap:var(--s5); }
  .pm-shopside{ position:static; gap:var(--s3); }
}

/* กริดสินค้าของหน้า Shop = 3 คอลัมน์ (ไฟล์ออกแบบ) ไม่ใช่ 4 แบบ §6 หน้า Home
   เพราะหน้านี้เสียความกว้างไปให้คอลัมน์ตัวกรองด้านซ้ายแล้ว */
.pm-prodgrid--shop{ grid-template-columns:repeat(3,minmax(0,1fr)); }
@media(max-width:1180px){ .pm-prodgrid--shop{ grid-template-columns:repeat(3,minmax(0,1fr)); } }
@media(max-width:1024px){ .pm-prodgrid--shop{ grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media(max-width:680px){  .pm-prodgrid--shop{ grid-template-columns:minmax(0,1fr); } }

/* ระยะแนวตั้งของหน้า Shop — ไฟล์ออกแบบให้หัวหน้าอยู่ชิดกว่า .pm-section ปกติมาก
   (artboard: หัวหน้า padding 56/0 · กริด padding-top 44) เพราะหน้านี้เป็นหน้าใช้งาน
   คนมาเพื่อดูสินค้า ไม่ใช่มาอ่านหัวเรื่อง → ช่องว่าง 96px ของ --s7 ดันกริดตกจอไปเปล่า ๆ
   ⛔ ห้ามแก้ .pm-section เพื่อการนี้ — ทุกหน้าที่ใช้มันอยู่จะขยับตาม */
.pm-shophead{ padding-block:var(--s5) 0; }
.pm-shophead .pm-sechead{ margin-bottom:0; }
.pm-shopmain{ padding-block:var(--s4) var(--s7); }

/* ============================================================
   หน้าตะกร้า — โครงสองคอลัมน์ (16 ก.ย. 2026)
   ที่มา: `Case A - Cart.dc.html` · รายงาน docs/report-cart-minicart-2026-09-16.md
   ============================================================ */

/* หัวหน้าชิดกว่า .pm-section ปกติ แบบเดียวกับหน้า Shop
   ⛔ ห้ามแก้ .pm-section เพื่อการนี้ — ทุกหน้าที่ใช้มันอยู่จะขยับตาม */
.pm-cart .pm-cart__head{ padding-block:var(--s5) 0; }
.pm-cart .pm-cart__main{ padding-block:var(--s4) var(--s8); }
.pm-cart__lead{ color:var(--color-ink-muted); margin:var(--s1) 0 0; }

/* artboard: h1 56px สี brand (ค่าเริ่มต้นของธีมคือ d1 78px สี ink)
   ใช้ --fs-d2 (58px) ซึ่งเป็นขั้นที่ใกล้ที่สุดในสเกล ต่างจาก artboard 2px มองไม่ออก
   ⛔ scope ไว้ที่ .pm-cart เท่านั้น — หน้าอื่นยังใช้ h1 78px ตามเดิม
   (เพิ่ม 16 ก.ย. 2026 รอบ "ปรับให้ตรง artboard" · วิธีเดียวกับที่ .pm-checkout ทำไปก่อนหน้า) */
.pm-cart .pm-cart__head h1{ font-size:var(--fs-d2); color:var(--color-brand); }

/* 🔴 กริดนี้อยู่ **ใน** cart.php ของ WooCommerce ไม่ใช่ใน template ของหน้า
   เพราะ [woocommerce_cart] พ่นทั้งฟอร์มและคอลัมน์สรุปยอดออกมาจากไฟล์เดียวกัน */
/* 16 ก.ย. 2026 — ปรับให้ตรง artboard: `1.5fr .75fr` gap 28px
   ของเดิมคือ `minmax(0,1fr) + --aside(300px)` gap 64px ซึ่งทำให้คอลัมน์ขวาแคบ
   และช่องไฟกลางกว้างกว่าไฟล์ออกแบบเท่าตัว
   🔴 minmax(0,…) ยังจำเป็นกับคอลัมน์ซ้าย — ป้ายวิธีส่งกับชื่อสินค้าที่ยาวมาก
      จะดัน track ให้กว้างเกินกริดถ้าไม่มี (ค่าเริ่มต้นของ fr คือ minmax(auto,1fr))
   ⛔ --gap-checkout เป็นชื่อที่มาจากรอบ checkout แต่เป็นค่าเดียวกันของ artboard ทั้งสองใบ
      → ใช้ร่วมกัน ไม่ตั้งชื่อใหม่ให้ค่าซ้ำ */
.pm-cart__grid{
  display:grid;
  grid-template-columns:minmax(0,1.5fr) minmax(0,.75fr);
  gap:var(--gap-checkout);
  align-items:start;
}
/* artboard: sticky top 96px = --s7 · ของเดิม --s5 (48px) ชิดหัวเกินไป */
.pm-cart__aside{ position:sticky; top:var(--s7); display:grid; gap:var(--s2); align-content:start; }

/* cross-sell ถูกย้ายมาต่อท้ายเต็มความกว้าง (hook ใน functions.php) */
.pm-cart__cross{ padding-block:var(--s7) 0; }

@media(max-width:980px){
  .pm-cart__grid{ grid-template-columns:1fr; gap:var(--s5); }
  /* ⛔ sticky ในคอลัมน์เดียวจะทำให้การ์ดสรุปยอดลอยทับรายการ — ปิดทิ้ง */
  .pm-cart__aside{ position:static; }
}

/* ============================================================
   หน้าชำระเงิน — โครงสองคอลัมน์ (16 ก.ย. 2026)
   ที่มา: `Case A - Checkout.dc.html` · รายงาน docs/report-checkout-2026-09-16.md
   ⛔ ไม่มีค่า hex ในบล็อกนี้ — ทุกสีมาจาก pm-tokens.css (B-1)
   ============================================================ */

/* หัวหน้าชิดกว่า .pm-section ปกติ แบบเดียวกับหน้าตะกร้าและหน้า Shop
   ⛔ ห้ามแก้ .pm-section เพื่อการนี้ — ทุกหน้าที่ใช้มันอยู่จะขยับตาม */
#pm-main.pm-checkout .pm-checkout__head{ padding-block:var(--s5) 0; }
#pm-main.pm-checkout .pm-checkout__main{ padding-block:var(--s4) var(--s8); }
#pm-main.pm-checkout .pm-checkout__lead{ color:var(--color-ink-muted); margin:var(--s1) 0 0; }
/* artboard: h1 56px สี brand (ค่าเริ่มต้นของธีมคือ d1 78px สี ink)
   ใช้ --fs-d2 (58px) ซึ่งเป็นขั้นที่ใกล้ที่สุดในสเกล ต่างจาก artboard 2px มองไม่ออก
   ⛔ scope ไว้ที่ .pm-checkout เท่านั้น — หน้าอื่นยังใช้ h1 78px ตามเดิม */
#pm-main.pm-checkout .pm-checkout__head h1{ font-size:var(--fs-d2); color:var(--color-brand); }

/* 🔴 กริดนี้อยู่ **ใน** form-checkout.php ของ WooCommerce ไม่ใช่ใน template ของหน้า
   เพราะ [woocommerce_checkout] พ่นทั้งฟอร์มที่อยู่และคอลัมน์สรุปออกมาจากไฟล์เดียวกัน
   (เหตุผลเดียวกับ .pm-cart__grid ข้างบน)
   🔴 คอลัมน์ขวากว้างกว่าของหน้าตะกร้า (--aside = 300px) เพราะต้องใส่ทั้งสรุปออเดอร์
      และการ์ดชำระเงิน — 300px ทำให้ชื่อ gateway ที่ยาวมาก
      ("Credit / Debit Card and Cash Payment (2C2P)") ตัดบรรทัดจนอ่านยาก */
#pm-main.pm-checkout .pm-checkout__grid{
  display:grid;
  grid-template-columns:minmax(0,1.5fr) minmax(0,.75fr);   /* artboard */
  gap:var(--gap-checkout);
  align-items:start;
}
#pm-main.pm-checkout .pm-checkout__main{ min-width:0; }
/* 🔴 `gap:0` โดยตั้งใจ — `<h3>` หัวการ์ดกับ `#order_review` ต้อง **ติดกัน** เพราะเป็นการ์ดใบเดียวกัน
   (หัว = ครึ่งบน · ตาราง = ครึ่งล่าง) ถ้าใส่ gap ที่ระดับนี้จะมีช่องว่างผ่ากลางการ์ด
   ⛔ ระยะห่างระหว่างการ์ดไปจัดที่ `#order_review` และ `.pm-checkout__assure` แทน */
#pm-main.pm-checkout .pm-checkout__aside{
  position:sticky; top:var(--s5);
  display:flex; flex-direction:column; gap:0;
  min-width:0;
}
#pm-main.pm-checkout .pm-checkout__aside > .pm-checkout__assure{ margin-top:var(--s3); }
/* 🔴 `#order_review` เป็นแค่กล่องเปล่าของ WooCommerce (ข้างในมีตาราง + การ์ดจ่ายเงิน)
   ต้องทำให้มันเป็น flex column ด้วย ไม่งั้นการ์ดจ่ายเงินจะเบียดติดตารางโดยไม่มีระยะ
   ⛔ ห้ามใส่พื้น/ขอบให้ #order_review — จะกลายเป็นการ์ดซ้อนการ์ด */
#pm-main.pm-checkout .pm-checkout__aside #order_review{
  display:flex; flex-direction:column; gap:var(--s3);
  min-width:0;
}

/* 🔴 การ์ดในคอลัมน์ซ้ายเรียงลงมาแนวตั้ง — ไฟล์ออกแบบวางแบบนี้
   ทำที่ CSS ไม่ใช่รื้อ markup: `.col2-set`/`.col-1`/`.col-2` ของ WooCommerce
   ยังอยู่ครบเพราะปลั๊กอินอ้างถึง (ดูหัวไฟล์ woocommerce/checkout/form-checkout.php) */
#pm-main.pm-checkout .col2-set{ display:flex; flex-direction:column; gap:var(--s3); }
.pm-checkout .col2-set::after,
#pm-main.pm-checkout .col2-set::before{ content:none; }   /* ล้าง clearfix เก่าของ Woo ที่ทำให้เกิดช่องว่างลอย */
#pm-main.pm-checkout .col-1,
#pm-main.pm-checkout .col-2{
  float:none; width:auto;                          /* ต้นฉบับของ Woo เป็น float:left 48% */
  display:flex; flex-direction:column; gap:var(--s3);
}

/* 🔴 หัวข้อ "Your order" + ตารางสรุป = **การ์ดใบเดียวกัน** ตามไฟล์ออกแบบ
   ปัญหาที่ต้องแก้: `<h3>` อยู่ *นอก* `#order_review` และตารางอยู่ *ใน* (โครงของ WooCommerce
   ซึ่งห้ามรื้อ เพราะ #order_review คือกล่องที่ checkout.js แทนที่เนื้อใน)
   → ทำให้ดูเป็นการ์ดเดียวด้วยการให้ **หัวเป็นครึ่งบน ตารางเป็นครึ่งล่าง** แล้วเชื่อมขอบกัน
   ⛔ ห้ามแก้ด้วยการย้าย <h3> เข้าไปใน #order_review — มันจะถูก AJAX ล้างทิ้งตอนรีเฟรชยอด */
#pm-main.pm-checkout .pm-checkout__asidetitle{
  font-size:var(--fs-d5b); line-height:1.2;              /* artboard 24px */
  color:var(--color-brand-ink);
  margin:0;
  background:var(--color-surface);
  border:1px solid var(--color-line);
  border-bottom:0;
  border-radius:var(--radius-xl) var(--radius-xl) 0 0;
  padding:var(--s3) var(--s3) 0;
}

@media(max-width:1024px){
  #pm-main.pm-checkout .pm-checkout__grid{ grid-template-columns:1fr; gap:var(--s5); }
  /* ⛔ ต้องปลด sticky ที่จอแคบ ไม่งั้นคอลัมน์ขวาจะค้างทับฟอร์มตอนเลื่อน */
  #pm-main.pm-checkout .pm-checkout__aside{ position:static; }
}

/* ============================================================
   รอบขึ้น staging 17 ก.ย. 2026 — ความจำเพาะของ **โครงสองคอลัมน์** หน้า Checkout
   รายงาน: docs/report-checkout-staging-2026-09-17.md
   ------------------------------------------------------------
   วัดบนหน้าจริง: การ์ดในคอลัมน์ซ้ายกว้างแค่ 362px ทั้งที่คอลัมน์กว้าง 755px
   ต้นเหตุ: `woocommerce-layout.css` (ลำดับ 23) ประกาศ
       `.woocommerce .col2-set .col-1{width:48%;float:left}`   (0,3,0)
   ส่วนกฎของเราข้างบนเขียนไว้เป็น `.pm-checkout .col-1`         (0,2,0) → **แพ้**
   ⛔ ไม่ใช้ !important — ไล่ความจำเพาะให้ "เท่ากัน" (0,3,0) พอ เพราะ
      `pm-layout.css` อยู่ลำดับ 51 ซึ่งมาหลัง 23 (หลักการเดียวกับบล็อกของหน้าตะกร้า)
   ============================================================ */
#pm-main.pm-checkout .col2-set .col-1,
#pm-main.pm-checkout .col2-set .col-2{
  float:none; width:auto;
  /* 🔴 ตัวที่กัดจริงคือ **max-width** ไม่ใช่ width — Bajaar `woocommerce.css?ver=1.6` (ลำดับ 40)
     ประกาศ `.woocommerce .col2-set .col-1{flex:1 1 48%;max-width:48%}` ไว้ด้วย
     แก้ width อย่างเดียวจึงยังกว้าง 48% เท่าเดิม (วัดจริงบน staging ก่อนแก้: 362 / 755px) */
  max-width:none; flex:1 1 auto;
}


/* ============================================================================
   P · เลย์เอาต์หน้าสินค้าเดี่ยว (Case A) — เพิ่ม 18 ก.ย. 2026
   ที่มา: Claude Design `Case A - Product.dc.html`
   รายงาน: docs/report-product-2026-09-18.md
   ⛔ ห้ามมีค่า hex (B-1) · ทุกระยะมาจากสเกล --s1…--s8 เท่านั้น
   ============================================================================ */

/* ---- §1 สองคอลัมน์: ภาพ / สรุปสินค้า ----
   artboard ใช้ 1.05fr / .95fr + gap 56px
   🔴 ปัดเป็น minmax(0,1fr) สองฝั่งเท่ากัน + --s6 (64px) เพราะ:
      (ก) 1.05/.95 ต่างกัน 5% ซึ่งมองไม่ออกด้วยตา แต่ทำให้ช่องภาพไม่ลงตัวกับ --ratio-product
      (ข) 56px ไม่มีในสเกล --s1…--s8 · การเติมค่านอกสเกลคือจุดเริ่มของสเกลที่พัง (§8.1)
   ⛔ ห้ามใส่ `1fr 1fr` เปล่า ๆ — ต้องเป็น minmax(0,1fr) ไม่งั้นภาพกว้างเกินจะดันคอลัมน์ล้น */
.pm-pdp__grid{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  gap:var(--s6);
  align-items:start;
}

/* คอลัมน์ภาพเกาะอยู่กับที่ขณะเลื่อนอ่านคอลัมน์ขวา — ตาม artboard (`position:sticky;top:96px`)
   🔴 top ต้องมากกว่าความสูงของ .pm-header (sticky) ไม่งั้นภาพจะมุดใต้หัวเว็บ
   ⛔ ห้ามใส่ sticky ที่จอเล็ก — คอลัมน์ซ้อนกันแล้ว sticky จะทำให้ภาพบังเนื้อหา */
@media (min-width:1025px){
  .pm-gallery{ position:sticky; top:var(--s7); }
}

.pm-gallery{ display:flex; flex-direction:column; gap:var(--s2); }

/* ภาพย่อย — auto-fill ไม่ใช่ repeat(4,1fr)
   🔴 ของจริงมี 3 ใบ · ถ้าตรึงเป็น 4 คอลัมน์ ช่องที่ 4 จะว่างซึ่งอ่านได้ว่า "ยังมีภาพที่ไม่ได้ส่ง"
   ⛔ ห้ามเติมช่องเปล่าให้ครบตาม artboard */
.pm-gallery__thumbs{
  list-style:none; margin:0; padding:0;
  display:grid; grid-template-columns:repeat(auto-fill,minmax(76px,1fr));
  gap:var(--s2);
}

/* ---- §2 แถบสเปก ----
   auto-fit + minmax → จำนวนช่องเปลี่ยนตามข้อมูลที่มีจริงโดยไม่ทิ้งช่องผี */
.pm-specs__grid{
  margin:0;
  display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr));
  gap:var(--s3);
}

/* ---- §5 กริดสินค้าที่เกี่ยวข้อง ----
   ⛔ ห้ามตรึง 3 คอลัมน์ — ถ้าหมวดนั้นเหลือสินค้า 2 ตัว การ์ดจะถูกยืดจนคนละขนาดกับหน้า Shop (B-7) */
.pm-prodgrid--related{
  display:grid; grid-template-columns:repeat(auto-fit,minmax(260px,1fr));
  gap:var(--s3);
}

/* ---- จอกลาง/เล็ก ----
   🔴 จุดตัดเดียวกับที่ artboard ใช้ (`@media(max-width:1024px)` ทำให้ [data-r="pdp"] เป็นคอลัมน์เดียว) */
@media (max-width:1024px){
  .pm-pdp__grid{ grid-template-columns:minmax(0,1fr); gap:var(--s4); }
}

/* ============================================================
   หน้า Journal (Case A) — 23 ก.ย. 2026
   ที่มา: `Case A - Journal.dc.html` · รายงาน docs/report-journal-2026-09-23.md
   ⛔ ไม่มีค่า hex (B-1) — ทุกสีของไฟล์ออกแบบแมปเข้า token ที่มีอยู่แล้ว ไม่ได้เพิ่ม token ใหม่
      ตารางแมปทีละค่าอยู่ในรายงาน §4 (⛔ ห้ามคัดลอกค่า hex มาเป็นคอมเมนต์ที่นี่ — grep ของ B-1 นับคอมเมนต์ด้วย)
      ขอบช่องค้นหาใช้ --color-line-strong ไม่ใช่สีขอบของไฟล์ออกแบบ เพราะตัวนั้นตก 3:1 ของขอบ control
      eyebrow lavender → .pm-eyebrow ปกติ ตามข้อห้ามของ --color-accent · ลายทางช่องภาพ → .pm-media พื้นเรียบ
   ⛔ ไม่มี IBM Plex Mono — ธีมมี 2 family ตามมติ 10 ก.ย. · ป้าย mono ในไฟล์ออกแบบ → .pm-eyebrow
   ============================================================ */

/* ระยะทุกค่ามาจากสเกล --s1…--s8 (design.md §8.1) — ค่าพิกเซลของไฟล์ออกแบบถูกปัดเข้าขั้นที่ใกล้ที่สุด
   ข้อยกเว้นที่ไม่ใช่ระยะ: ช่องภาพใบเล็ก 104px · ช่องค้นหากว้าง 320px (ขนาดชิ้นงานตามไฟล์ออกแบบ)
   section ชิดกันกว่า .pm-section ปกติ
   ⛔ ห้ามแก้ .pm-section เพื่อการนี้ (เหตุผลเดียวกับหน้า Shop) */
.pm-journalhead{ padding-block:var(--s5) 0; }
.pm-journalhead .pm-sechead{ margin-bottom:0; align-items:flex-end; }
.pm-journalhead h1{ font-size:var(--fs-d2); line-height:1; color:var(--color-brand); margin:0 0 var(--s2); }
.pm-journalhead__text{ max-width:620px; }
.pm-journalhead__deck{ color:var(--color-ink-muted); margin:0; max-width:520px; }

.pm-journalsearch{
  display:flex; align-items:center; gap:var(--s1);
  width:320px; max-width:100%; min-height:48px;     /* F-3 */
  padding:0 0 0 var(--s2);
  background:var(--color-surface);
  border:1px solid var(--color-line-strong);         /* 3.07 ✅ ขอบ control */
  border-radius:var(--radius);
  color:var(--color-ink-muted);
}
.pm-journalsearch:focus-within{ outline:2px solid var(--color-brand-ink); outline-offset:2px; }
.pm-journalsearch__icon{ flex:none; }
.pm-journalsearch__input{
  flex:1; min-width:0; min-height:46px;
  border:0; background:none; padding:0;
  font:inherit; font-size:var(--fs-small); color:var(--color-ink);
}
.pm-journalsearch__input:focus{ outline:none; }        /* ring อยู่ที่กรอบทั้งกล่องข้างบน */
.pm-journalsearch__input::placeholder{ color:var(--color-ink-muted); opacity:1; }
/* ปุ่มส่งต้องมีจริง (ปิด JS แล้วคนที่ไม่รู้ว่ากด Enter ได้ต้องมีทางไป) — ไฟล์ออกแบบไม่มีปุ่มนี้ */
.pm-journalsearch__go{
  align-self:stretch; min-height:46px; padding:0 var(--s2);
  border:0; border-left:1px solid var(--color-line);
  background:none; cursor:pointer;
  font-size:var(--fs-meta); font-weight:600; color:var(--color-brand-ink);
}
.pm-journalsearch__go:hover{ background:var(--color-paper); }

/* §2 ใหม่สุด 3 ใบ */
.pm-journallatest{ padding-block:var(--s5) 0; }
.pm-journallatest h2.pm-eyebrow{ font-family:var(--font-body); }
.pm-journallatest__grid{
  display:grid; grid-template-columns:1.35fr .95fr; gap:var(--s3); align-items:stretch;
}
/* 🔴 .pm-card.* — pm-components.css โหลด **หลัง** ไฟล์นี้ (C-7) · selector เดี่ยวจะแพ้ padding ของ .pm-card */
.pm-card.pm-jlead{ padding:0; overflow:hidden; display:flex; flex-direction:column; }
.pm-jlead__media{ display:block; aspect-ratio:16/9; border-radius:0; }
.pm-jlead__body{ padding:var(--s4); }
.pm-jlead__title{ font-size:var(--fs-d4b); line-height:1.05; margin:0 0 var(--s1); }
.pm-journallatest__side{ display:flex; flex-direction:column; gap:var(--s3); }
.pm-card.pm-jside{ flex:1; display:flex; gap:var(--s2); align-items:center; padding:var(--s2); }
.pm-jside__media{ flex:none; width:104px; aspect-ratio:1; }
.pm-jside__title{ font-size:var(--fs-d5b); line-height:1.15; margin:0 0 var(--s1); }
.pm-jlead .pm-card__title,
.pm-jside .pm-card__title,
.pm-jcard .pm-card__title,
.pm-jstep .pm-card__title{ font-family:var(--font-display); font-weight:400; color:var(--color-brand); }
/* <a> ในหัวการ์ดมีสีของตัวเองจาก pm-base.css → ต้องสั่งให้รับสีจากหัวเรื่อง ไม่งั้นหัวเรื่องเป็นสี ink */
.pm-jlead .pm-card__title a,
.pm-jside .pm-card__title a,
.pm-jcard .pm-card__title a,
.pm-jstep .pm-card__title a{ color:inherit; }

/* §3 แถบหมวด/การเรียง — เกาะขอบบนตามไฟล์ออกแบบ (sticky) */
.pm-journalmain{ padding-block:var(--s6) 0; }
/* 🔴 แก้ 23 ก.ย. 2026 (บั๊กที่เจ้าของงานแจ้งพร้อมภาพ) — เดิม `top:var(--s7)` (96px) แบบหน้า Shop
      แต่ header ที่ sticky สูง 69px (.pm-header__bar 68 + เส้นล่าง 1 · แถบประกาศอยู่ **นอก** <header>
      จึงเลื่อนหายไป ไม่นับ) → เหลือช่อง 27px ระหว่าง header กับแถบ ที่การ์ด **เลื่อนทะลุให้เห็น**
      (ชื่อบทความถูกตัดครึ่งโผล่เหนือแถบ) · ไฟล์ออกแบบเขียน `top:69px` ตรงกับค่าจริงพอดี
   ⛔ ห้ามกลับไปใช้ --s7 · ถ้าวันหนึ่งความสูงของ .pm-header__bar เปลี่ยน ต้องแก้ค่านี้ตาม
   ⚠️ หน้า Shop ใช้ --s7 ได้เพราะเป็นคอลัมน์ข้างที่ไม่มีพื้นหลังเต็มแถว — คนละกรณีกัน */
.pm-journalbar{
  position:sticky; top:69px; z-index:20;
  display:flex; justify-content:space-between; align-items:center; gap:var(--s2) var(--s3); flex-wrap:wrap;
  padding:var(--s2) 0; background:var(--color-paper); border-bottom:1px solid var(--color-line);
}
.pm-journalbar__topics,
.pm-journalbar__sorts{ display:flex; flex-wrap:wrap; gap:var(--s1); }
.pm-journalbar__right{ display:flex; align-items:center; gap:var(--s2); flex-wrap:wrap; }
.pm-journalbar__count{ margin:0; font-variant-numeric:tabular-nums; }
.pm-journalmain__query{ margin:var(--s3) 0 0; color:var(--color-ink-muted); }

.pm-journalgrid{
  list-style:none; margin:0; padding:var(--s4) 0 0;
  display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:var(--s4) var(--s3);
}
.pm-jcard{ display:flex; flex-direction:column; gap:var(--s2); }
.pm-jcard .pm-eyebrow,
.pm-jcard .pm-text-meta{ margin:0; }
.pm-jcard__title{ font-size:var(--fs-d5b); line-height:1.2; margin:0; }
/* การ์ดกริดไม่มีกรอบ (ไฟล์ออกแบบ) → hover เปลี่ยนสีหัวเรื่องแทนเงา */
.pm-card--link.pm-jcard:hover{ box-shadow:none; }
.pm-card--link.pm-jcard:hover .pm-card__title{ color:var(--color-brand-ink); text-decoration:underline; text-underline-offset:3px; }
/* ตำแหน่งที่ Load more พามา — เว้นที่ให้แถบ sticky ไม่ทับการ์ดใบแรกของรอบใหม่ */
.pm-journalgrid > li{ scroll-margin-top:calc(69px + var(--s7) + var(--s3)); }  /* header + แถบ sticky + ระยะหายใจ */

.pm-journalmore{ display:flex; justify-content:center; padding-top:var(--s5); }
/* ระหว่าง pm-journal.js ดึงผล (เพิ่ม 24 ก.ย. 2026) — หรี่อย่างเดียว ไม่มี transition (B-9) · ปิด JS ไม่มีวันเห็น */
.pm-journalmain[aria-busy="true"] .pm-journalgrid,
.pm-journalmain[aria-busy="true"] .pm-journalempty{ opacity:.5; }
.pm-journalmain[aria-busy="true"] .pm-journalmore .pm-btn,
.pm-journalmore .pm-btn[aria-disabled="true"]{ cursor:progress; }
.pm-card.pm-journalempty{ margin-top:var(--s4); padding:var(--s5); text-align:center; }
.pm-journalempty__title{ font-family:var(--font-display); font-size:var(--fs-d5); color:var(--color-brand); margin:0 0 var(--s1); }

/* §4 ลำดับการอ่าน */
.pm-journalpath{ padding-block:var(--s7) var(--s8); }
.pm-journalpath h2.pm-eyebrow{ font-family:var(--font-body); }
.pm-journalpath__list{
  list-style:none; margin:0; padding:0;
  display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:var(--s3);
}
.pm-jstep{ display:flex; gap:var(--s2); align-items:flex-start; }
.pm-jstep__num{ flex:none; font-family:var(--font-display); font-size:var(--fs-d4); line-height:1; color:var(--color-accent-field); }
.pm-jstep__title{ font-size:var(--fs-d6); line-height:1.2; margin:0 0 var(--s1); }
.pm-jstep .pm-text-small{ margin:0; color:var(--color-ink-muted); }

/* จุดตัดเดียวกับไฟล์ออกแบบ: 1024 · 860 · 600 */
@media(max-width:1024px){
  .pm-journallatest__grid,
  .pm-journalpath__list{ grid-template-columns:minmax(0,1fr); }
  .pm-journalhead .pm-sechead{ flex-direction:column; align-items:flex-start; gap:var(--s3); }
}
@media(max-width:860px){ .pm-journalgrid{ grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media(max-width:600px){
  .pm-journalgrid{ grid-template-columns:minmax(0,1fr); }
  /* H1 ไม่ต้อง override — --fs-d2 ย่อเป็น 38px เองที่ ≤680px (pm-tokens.css) */
  .pm-jlead__title{ font-size:var(--fs-d5); }
  .pm-jlead__body{ padding:var(--s3); }
  /* แถบบนมือถือยาวหลายบรรทัด ถ้า sticky จะกินครึ่งจอ → ปล่อยให้เลื่อนตามปกติ */
  .pm-journalbar{ position:static; }
}

/* ============================================================
   หน้าบทความ (Case A · T1 Article) — 23 ก.ย. 2026
   ที่มา: `Case A - Article.dc.html` · สเปก docs/content-pattern.md §1.2 §2.1 §3 §4
   รายงาน docs/report-article-2026-09-23.md
   ⛔ ไม่มีค่า hex (B-1) · ขนาดตัวอักษร/ระยะมาจาก token ทั้งหมด
   ⛔ ความกว้างตามสเปก ไม่ใช่ไฟล์ออกแบบ: --wrap 1240 · --measure-body 720 · --aside 300 · --gap-shell 64
   ⛔ ป้าย 11px uppercase ของไฟล์ออกแบบ → .pm-eyebrow 12.5px (B-4)
   ============================================================ */

/* ทุก anchor ในหน้า — หยุดใต้ header ที่ sticky (69px · ค่าเดียวกับแถบหมวดหน้า Journal) */
.pm-article [id]{ scroll-margin-top:calc(69px + var(--s3)); }

/* spine 1–5 */
.pm-arthead{ padding-block:var(--s5) 0; }
.pm-arthead__text{ max-width:var(--measure-body); }
.pm-arthead h1{ font-size:var(--fs-d2); line-height:1.02; color:var(--color-brand); margin:0 0 var(--s2); }
.pm-arthead__deck{ font-size:var(--fs-deck); line-height:1.6; color:var(--color-ink-muted); margin:0; }
.pm-artmeta{
  display:flex; justify-content:space-between; align-items:center; gap:var(--s2) var(--s3); flex-wrap:wrap;
  margin-top:var(--s4); padding-block:var(--s2);
  border-top:1px solid var(--color-line); border-bottom:1px solid var(--color-line);
}
.pm-artmeta p{ margin:0; }
.pm-artmeta__by{ display:flex; align-items:baseline; gap:var(--s1); }
.pm-artmeta__label{ font-size:var(--fs-meta); color:var(--color-ink-muted); }
.pm-artmeta__name{ font-size:var(--fs-small); font-weight:600; color:var(--color-ink); }
.pm-artmeta__facts{ display:flex; gap:var(--s1); flex-wrap:wrap; font-size:var(--fs-meta); color:var(--color-ink-muted); }

/* spine 6 — ภาพ 16:10 (B-7 · ไม่ใช่ 21:9 ของไฟล์ออกแบบ) */
.pm-arthero{ padding-top:var(--s4); }
.pm-arthero__fig{ margin:0; }
.pm-arthero__media{ display:block; aspect-ratio:var(--ratio-article); }
.pm-arthero__cap{ margin:var(--s1) 0 0; color:var(--color-ink-muted); }

/* spine 7 — quick answer */
.pm-artanswer{ padding-top:var(--s5); }
.pm-artanswer__box{ max-width:var(--measure-body); border-left:2px solid var(--color-brand); padding:2px 0 2px var(--s3); }
.pm-artanswer__label{ color:var(--color-brand-ink); margin:0 0 var(--s1); }
.pm-artanswer__text{ font-size:var(--fs-deck); line-height:1.6; color:var(--color-ink); margin:0; }

/* spine 8 — โครงสองคอลัมน์ */
.pm-artbody{ padding-top:var(--s6); }
.pm-artshell{
  display:grid; grid-template-columns:minmax(0,1fr) var(--aside);
  gap:var(--gap-shell); align-items:start;
}
.pm-artcol{ min-width:0; max-width:var(--measure-body); }

/* เนื้อหา — ใช้สัญญา `.pm-prose` ชุดเดียวของเว็บ (pm-components.css บล็อก 15 + 15.8 ชุดรูปแบบ HTML)
   🔴 แก้ 23 ก.ย. รอบที่ 2: ร่างแรกเขียนกฎหัวเรื่อง/ย่อหน้า/ตารางซ้ำไว้ที่นี่ = "สองเวอร์ชัน" ที่ content-pattern §1.1 ห้าม
      และแพ้ `#pm-main .pm-prose …` อยู่แล้ว (id = specificity 100) → ลบออก ใช้บล็อก 15 ตัวเดียว
   ⛔ ห้ามเขียนกฎของ h2–h6 · p · ul · table ของเนื้อหาที่นี่อีก — แก้ที่ pm-components.css บล็อก 15 ที่เดียว */

/* spine 8b–13 — หัวข้อท้ายบทความใช้ขนาดเดียวกับ h2 ในเนื้อหา (d4 · สีจาก pm-base) */
.pm-artblock{ margin-top:var(--s5); }
.pm-artblock h2{ font-size:var(--fs-d4); line-height:1.15; margin:0 0 var(--s2); }
.pm-artblock h2.pm-artminor{ font-size:var(--fs-d6); }  /* "Sources" = h2 ขนาด d6 (§3 กฎ 2) · selector ยาวกว่า .pm-artblock h2 จึงชนะโดยไม่ต้อง !important (C-7) */
.pm-arttake ul{ margin:0; padding-left:var(--s3); font-size:var(--fs-body-long); line-height:1.7; color:var(--color-ink-body); }
.pm-arttake li{ margin-bottom:var(--s1); }
.pm-artprods{ list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:var(--s2); }
.pm-artprod{ display:flex; flex-direction:column; gap:var(--s1); padding:var(--s2); }
.pm-artprod .pm-card__title{ font-family:var(--font-display); font-weight:400; font-size:var(--fs-d6); line-height:1.15; color:var(--color-brand); margin:0; }
.pm-artprod .pm-card__title a{ color:inherit; }
.pm-artprod p{ margin:0; }

/* FAQ — <details> (B08) · ไม่มี max-height · อ่านได้เมื่อปิด JS */
.pm-artfaq{ border-bottom:1px solid var(--color-line); }
.pm-artfaq h2{ margin-bottom:var(--s3); }
.pm-artfaq__item{ border-top:1px solid var(--color-line); }
.pm-artfaq__item summary{
  display:flex; justify-content:space-between; align-items:center; gap:var(--s3);
  min-height:44px; padding:var(--s2) 0; cursor:pointer; list-style:none;           /* F-3 */
}
.pm-artfaq__item summary::-webkit-details-marker{ display:none; }
.pm-artfaq__item summary::after{ content:"+"; flex:none; font-size:var(--fs-d6); line-height:1; color:var(--color-ink-muted); transition:transform var(--dur-micro) ease; }
.pm-artfaq__item[open] summary::after{ transform:rotate(45deg); }
.pm-artfaq__item summary:focus-visible{ outline:2px solid var(--color-brand-ink); outline-offset:2px; }
.pm-artfaq__item summary h5{ margin:0; font-size:var(--fs-h5); font-weight:600; color:var(--color-ink); }
.pm-artfaq__item p{ margin:0 0 var(--s2); max-width:var(--measure-prose); color:var(--color-ink-muted); }
@media(prefers-reduced-motion:reduce){ .pm-artfaq__item summary::after{ transition:none; } }

.pm-artrefs ol{ margin:0; padding-left:var(--s3); font-size:var(--fs-small); line-height:1.7; color:var(--color-ink-muted); }
.pm-artrefs a{ color:var(--color-brand-ink); text-decoration:underline; }

.pm-artnote{
  margin-top:var(--s4); padding:var(--s2);
  border:1px solid var(--color-line); border-radius:var(--radius);
  font-size:var(--fs-meta); line-height:1.65; color:var(--color-ink-muted);
}
.pm-artnote p{ margin:0; }
.pm-artnote p + p{ margin-top:var(--s1); }

.pm-card.pm-artpub{ margin-top:var(--s4); }
.pm-artpub p{ margin:0; }
.pm-artpub p.pm-artpub__name{ font-family:var(--font-display); font-size:var(--fs-d6); color:var(--color-brand); margin:var(--s1) 0; }

/* aside — สารบัญ + การ์ดถาม · sticky ใต้ header 69px */
.pm-artaside{ position:sticky; top:calc(69px + var(--s3)); display:flex; flex-direction:column; gap:var(--s3); }
.pm-arttoc ol{ list-style:none; margin:0; padding:0; }
.pm-arttoc a{
  display:flex; align-items:center; min-height:44px;                                 /* F-3 */
  padding:var(--s1) 0 var(--s1) var(--s2);
  border-left:2px solid var(--color-line);
  font-size:var(--fs-small); line-height:1.35; color:var(--color-ink-muted); text-decoration:none;
}
.pm-arttoc a:hover{ color:var(--color-brand-ink); border-left-color:var(--color-brand); }
.pm-card.pm-artask{ background:var(--color-brand); border-color:var(--color-brand); color:var(--color-on-night); }   /* ถัง 20% · การ์ด olive 1 ใบ (B-2 ✅) */
.pm-artask__title{ font-family:var(--font-display); font-size:var(--fs-d6); line-height:1.15; margin:0 0 var(--s1); }
.pm-artask__text{ font-size:var(--fs-small); margin:0 0 var(--s2); }

/* spine 14 — read next (การ์ดชุดเดียวกับหน้า Journal) */
.pm-artnext{ padding-block:var(--s7) var(--s8); }
.pm-artnext__h{ font-size:var(--fs-d6); color:var(--color-ink); margin:0; }
.pm-artnext .pm-journalgrid{ padding-top:var(--s3); }

/* 🔴 กรอบ "ต้องกรอก" — เห็นเฉพาะพนักงานที่แก้บทความได้ (pm_article_staff_view()) · ลูกค้าไม่เห็น
   เส้นประ = แยกจากส่วนของหน้าเว็บจริงด้วยรูปทรง ไม่ใช่สี (ระบบไม่มีสีเตือน · design.md §7.5) */
.pm-staffslot{
  margin:var(--s3) 0; padding:var(--s2);
  background:var(--color-surface);
  border:2px dashed var(--color-line-strong); border-radius:var(--radius);
}
.pm-staffslot p{ margin:0; }
.pm-staffslot__label{ font-size:var(--fs-meta); font-weight:600; color:var(--color-brand-ink); }
.pm-staffslot__label span{ font-weight:400; color:var(--color-ink-muted); }
.pm-staffslot p.pm-staffslot__rule{ margin-top:var(--s1); font-size:var(--fs-meta); line-height:1.6; color:var(--color-ink-body); }

/* จุดตัดตามสเปก 1024 / 680 (content-pattern §1.2 — ไม่ใช่ 640 ของไฟล์ออกแบบ) */
@media(max-width:1024px){
  .pm-artshell{ grid-template-columns:minmax(0,1fr); gap:var(--s4); }
  .pm-artaside{ position:static; order:-1; }
  .pm-artprods{ grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media(max-width:680px){
  .pm-artprods{ grid-template-columns:minmax(0,1fr); }
}
/* ============================================================
   หน้า Sign in / Create account / Reset password — 24 ก.ย. 2026 · ในเครื่องเท่านั้น
   ที่มา: Claude Design `Case A - Login.dc.html` · รายงาน docs/report-login-2026-09-24.md
   <main class="pm-login"> ของ template-account-case-a.php · ฟอร์มจาก woocommerce/myaccount/*.php
   ⛔ ไม่มีค่า hex ในบล็อกนี้ (B-1) — ตารางแปลงสีของ artboard → token อยู่ในรายงาน §4
      (เขียนค่า hex ไว้ในคอมเมนต์ก็ทำให้ grep ของ B-1 ตก จึงไม่เขียนที่นี่)
      ⛔ พื้นแถบแท็บใช้ --color-paybox ไม่ใช่ --color-shade (ห้ามมีตัวอักษรบนนั้น)
      ⛔ ตัวอักษรเทาของ artboard ไม่ถึง 4.5:1 บน paper → ใช้ --color-ink-muted (B-3)
   ⛔ ไม่มี IBM Plex Mono (ธีมมี 2 family — B-5/C-9) → ป้าย mono ใช้ --font-body + --fs-label
   🔴 ตัวเลขที่ไม่มี token (56px/420px/520px/14px/30px) ยกจาก artboard ตรง ๆ
      เหมือนบล็อกหน้าอื่นในไฟล์นี้ — ระยะ ≠ สี จึงไม่อยู่ใต้ B-1 grep
   ============================================================ */
.pm-login__head{ padding-block:var(--s5) 0; }
.pm-login__head .pm-breadcrumb{ margin-bottom:26px; }
.pm-login__body{ padding-block:0 var(--s7); }

.pm-login__split{
  display:grid; grid-template-columns:minmax(0,1fr) 420px;
  gap:56px; align-items:start;
}
.pm-login__title{
  font-family:var(--font-display); font-weight:400;
  font-size:var(--fs-d2); line-height:1.02;
  color:var(--color-brand); margin:0 0 10px;
}
.pm-login__lead{
  font-size:var(--fs-body); color:var(--color-ink-muted);
  margin:0 0 28px; max-width:52ch; text-wrap:pretty;
}

/* แท็บ — ลิงก์จริง (C-10) · สูง 44px ไม่ใช่ 42px ของ artboard เพื่อผ่าน F-3 */
.pm-login__tabs{
  display:flex; gap:4px; width:fit-content; max-width:100%;
  padding:4px; margin-bottom:var(--s3);
  background:var(--color-paybox); border:1px solid var(--color-line);
  border-radius:var(--radius-pill);
}
.pm-login__tab{
  display:inline-flex; align-items:center; min-height:44px; padding:0 22px;
  border-radius:var(--radius-pill);
  font-size:var(--fs-h6); font-weight:600; line-height:1;
  color:var(--color-ink-muted); text-decoration:none;
  /* ไม่มี transition — B-9 อนุญาตเฉพาะ transform/opacity (ถอด 25 ก.ย. 2026 ตอนขึ้น staging) */
}
.pm-login__tab:hover{ color:var(--color-ink); }
.pm-login__tab.is-active{ background:var(--color-brand); color:var(--color-on-night); }   /* 5.20 ✅ */

/* การ์ดฟอร์ม */
.pm-login__card{
  max-width:520px; padding:30px 32px;
  background:var(--color-surface); border:1px solid var(--color-line);
  border-radius:var(--radius-lg);
}
.pm-login__card > .woocommerce > *:first-child{ margin-top:0; }
.pm-login__card .pm-notice{ margin:0 0 var(--s2); }

/* รีเซ็ตกฎของ woocommerce.css ที่ติดมากับ form.login / form.register / .form-row
   (กรอบ 1px + padding 20px + margin 2em · .form-row-first ลอยซ้ายกว้าง 47%)
   ความจำเพาะ (0,3,0)+ ชนะ `.woocommerce form.login` (0,2,1) โดยไม่ต้องใช้ !important */
.pm-login .pm-login__card .pm-login__form{
  display:flex; flex-direction:column; gap:14px;
  margin:0; padding:0; border:0; border-radius:0; text-align:left;
}
.pm-login .pm-login__form .form-row{ margin:0; padding:0; float:none; width:auto; }
.pm-login .pm-login__form .clear{ display:none; }
.pm-login .pm-login__form p{ margin:0; }

.pm-login .pm-login__field{ display:flex; flex-direction:column; gap:6px; }
.pm-login .pm-login__form .pm-field__label{
  margin:0; line-height:1.3;
  text-transform:none; letter-spacing:.04em;   /* artboard: ตัวเล็กปกติ ไม่ใช่ตัวพิมพ์ใหญ่แบบคูปอง */
}
.pm-login .pm-login__form .required{ display:none; }   /* aria-hidden อยู่แล้ว · "Required" ยังอ่านได้จาก screen-reader-text */

/* (0,4,1) — ต้องชนะ `.woocommerce form .form-row .input-text` (0,3,1) ของ woocommerce.css */
.pm-login .pm-login__form .form-row input.pm-login__input{
  display:block; width:100%; min-height:48px; margin:0;
  padding:0 14px; box-sizing:border-box;
  background:var(--color-surface); color:var(--color-ink);
  border:1px solid var(--color-line-strong);   /* 3.07 — ขอบ control ✅ */
  border-radius:var(--radius-sm);
  font-size:var(--fs-small); line-height:normal;
}
.pm-login .pm-login__form .form-row input.pm-login__input:focus{ border-color:var(--color-brand); }
.pm-login .pm-login__form .form-row input.pm-login__input:focus-visible{
  outline:2px solid var(--color-brand-ink); outline-offset:2px;   /* F-2 — Bajaar ล้าง outline ของ input ทิ้ง */
}

/* ปุ่ม show/hide ของ woocommerce.js (ครอบ span.password-input + button.show-password-input ให้เอง)
   ⛔ ไม่ทำปุ่มของเราเอง — จะได้สองปุ่ม · ที่นี่แค่เปลี่ยนไอคอนฟอนต์ WooCommerce เป็นคำ show/hide ตาม artboard */
.pm-login .pm-login__form .password-input{ position:relative; display:block; }
.pm-login .pm-login__form .password-input input.pm-login__input{ padding-right:78px; }
.pm-login .pm-login__form .password-input .show-password-input{
  position:absolute; right:4px; top:2px;
  min-width:44px; min-height:44px; padding:0 10px;               /* F-3 */
  background:none; border:0; cursor:pointer;
  font-size:var(--fs-label); font-weight:600; color:var(--color-brand-ink);
}
.pm-login .pm-login__form .password-input .show-password-input::after{
  content:"show"; font-family:var(--font-body); font-size:var(--fs-label);
  margin:0; position:static; transform:none;
}
.pm-login .pm-login__form .password-input .show-password-input.display-password::after{ content:"hide"; }

.pm-login .pm-login__row{
  display:flex; align-items:center; justify-content:space-between;
  gap:var(--s2); flex-wrap:wrap; margin-top:2px;
}
.pm-login .pm-login__check{
  display:inline-flex; align-items:center; gap:9px; min-height:44px;
  font-size:var(--fs-h6); color:var(--color-ink-muted); cursor:pointer; margin:0;
}
.pm-login .pm-login__check input{ width:17px; height:17px; margin:0; accent-color:var(--color-brand); cursor:pointer; }

/* 🔴 แก้ 25 ก.ย. 2026 ตอนขึ้น staging — preview ไม่มี woocommerce-layout.css จึงไม่เห็น
   · `.woocommerce form .form-row label{display:block}` (0,3,1) ชนะ .pm-login__check → checkbox กับคำ Remember me แยกบรรทัด
   · `.woocommerce form .show-password-input` ตั้ง top:50% + transform · ::before เป็นไอคอนตา display:block → ปุ่มลอยเหนือช่อง + ไอคอนซ้อนคำ show
   ใช้ #pm-main.pm-login (1,x,x) ชนะโดยไม่ใช้ !important */
#pm-main.pm-login .pm-login__form .pm-login__check{ display:inline-flex; width:auto; }   /* width — label ของ Bajaar กว้าง 100% → Forgot password? ตกบรรทัด */
#pm-main.pm-login .pm-login__form .password-input .show-password-input{
  top:2px; transform:none; display:inline-flex; align-items:center; justify-content:center;
}
#pm-main.pm-login .pm-login__form .password-input .show-password-input::before{ display:none; }
/* แถว Remember me | Forgot password? — clearfix ::before/::after ของ .form-row กลายเป็น flex item (ดันของออกจากขอบ)
   · label ถูกตั้ง top:-10px · checkbox ได้ min-height 48px จากกฎช่องกรอก */
#pm-main.pm-login .pm-login__form .pm-login__row::before,
#pm-main.pm-login .pm-login__form .pm-login__row::after{ display:none; }
#pm-main.pm-login .pm-login__form .pm-login__check{ top:0; }
#pm-main.pm-login .pm-login__form .pm-login__check input{ min-height:0; height:17px; top:0; margin:0; }
.pm-login .pm-login__forgot,
.pm-login .pm-login__back a{
  display:inline-flex; align-items:center; min-height:44px;
  font-size:var(--fs-h6); font-weight:600; color:var(--color-brand-ink);
}

/* ปุ่มหลัก — pill เต็มความกว้าง · (0,3,0)+ ชนะ `.woocommerce button.button` (0,2,1) */
.pm-login .pm-login__form .pm-login__submit{
  width:100%; min-height:50px; margin-top:8px;
  border:1px solid var(--color-brand); border-radius:var(--radius-pill);
  background:var(--color-brand); color:var(--color-on-night);
  font-size:15px; font-weight:600; line-height:1;
}
.pm-login .pm-login__form .pm-login__submit:hover{ background:var(--color-night); border-color:var(--color-night); color:var(--color-on-night); }
/* 🔴 แก้ 25 ก.ย. 2026 บน staging — Bajaar มี `form.woocommerce-form.woocommerce-form-register.register .woocommerce-form-register__submit`
   (0,5,1) ทาพื้นดำให้ปุ่ม Create account → ยกด้วย #pm-main (1,3,0) · ไม่ใช้ !important */
#pm-main.pm-login .pm-login__form .pm-login__submit{ background:var(--color-brand); border-color:var(--color-brand); color:var(--color-on-night); }
#pm-main.pm-login .pm-login__form .pm-login__submit:hover{ background:var(--color-night); border-color:var(--color-night); color:var(--color-on-night); }

.pm-login .pm-login__note,
.pm-login .pm-login__intro{ font-size:var(--fs-small); color:var(--color-ink-muted); }
.pm-login .woocommerce-privacy-policy-text p{ font-size:var(--fs-meta); line-height:1.55; color:var(--color-ink-muted); }

.pm-login__guest{
  margin:20px 0 0; max-width:520px;
  font-size:var(--fs-h6); color:var(--color-ink-muted);
}

/* คอลัมน์ขวา */
.pm-login__aside{
  display:flex; flex-direction:column; gap:18px;
  position:sticky; top:96px;
}
.pm-login__perks{
  display:flex; flex-direction:column; gap:14px; padding:28px;
  background:linear-gradient(160deg,var(--color-night-2),var(--color-night));
  color:var(--color-on-night); border-radius:var(--radius-lg);
}
.pm-login__eyebrow{
  margin:0; font-size:var(--fs-label); font-weight:600; line-height:1;
  letter-spacing:.22em; text-transform:uppercase; color:var(--color-gold);
}
.pm-login__perklist{ list-style:none; margin:4px 0 0; padding:0; display:flex; flex-direction:column; gap:11px; }
.pm-login__perklist li{
  display:flex; gap:11px; align-items:flex-start;
  font-size:var(--fs-small); color:var(--color-on-night-2);
}
.pm-login__perklist li::before{
  content:""; flex:none; width:6px; height:6px; margin-top:9px;
  border-radius:var(--radius-pill); background:var(--color-gold);
}
.pm-login__help{ margin:0; font-size:var(--fs-meta); line-height:1.55; color:var(--color-ink-muted); }

/* หน้า login แล้ว (แดชบอร์ด · ยังไม่ได้ออกแบบรอบนี้) — แค่ให้หัวไม่ห่างเกิน */
.pm-login--member .pm-login__head{ padding-bottom:0; }
.pm-login--member .pm-login__member{ padding-top:var(--s4); }

/* artboard ซ่อนคอลัมน์ขวาที่ ≤980px — ที่นี่ **ย้ายลงล่าง** แทน
   เพราะบรรทัด "Trouble signing in? WhatsApp" เป็นทางออกเดียวของคนที่เข้าไม่ได้ และมือถือคือคนส่วนใหญ่ */
@media(max-width:980px){
  .pm-login__split{ grid-template-columns:minmax(0,1fr); gap:var(--s4); }
  .pm-login__aside{ position:static; }
  .pm-login__card{ max-width:none; }
}
@media(max-width:560px){
  .pm-login__head{ padding-top:36px; }
  .pm-login__card{ padding:26px 22px; }
  .pm-login__tabs{ width:100%; }
  .pm-login__tab{ flex:1; justify-content:center; padding:0 12px; }
}

/* ============================================================
   หน้าบัญชีหลัง login (แดชบอร์ด) — 25 ก.ย. 2026 · ในเครื่องเท่านั้น
   ที่มา: Claude Design `Case A - Account.dc.html` · รายงาน docs/report-account-dashboard-2026-09-25.md
   <main class="pm-login pm-login--member pm-acct"> ของ template-account-case-a.php
   + woocommerce/myaccount/ my-account · navigation · dashboard · orders · my-address · form-edit-account
   ⛔ เมนู/แผง Subscription ไม่มี (คำสั่งเจ้าของงาน 25 ก.ย.)
   ⛔ ไม่มีค่า hex ในบล็อกนี้ (B-1) — ตารางแปลงสีอยู่ในรายงาน §4
   🔴 คลาส WooCommerce ที่ Additional CSS (post 9271) เกาะด้วย !important ถูกเปลี่ยนเป็นคลาส pm-acct__* ใน override
      → บล็อกนี้ไม่ต้องใช้ !important สักตัว · ถ้าวันหนึ่งใส่คลาสเดิมกลับ หน้านี้จะโดนสี/ฟอนต์เก่าทับทันที
   🔴 ตัวเลขที่ไม่มี token (240px/36px/18px/90px/420px) ยกจาก artboard ตรง ๆ — ระยะ ≠ สี
   ============================================================ */
#pm-main.pm-acct .pm-login__head .pm-breadcrumb{ margin-bottom:26px; }
#pm-main.pm-acct .pm-acct__title{ margin-bottom:8px; }
#pm-main.pm-acct .pm-acct__greeting{ margin:0; font-size:var(--fs-body); color:var(--color-ink-muted); }
#pm-main.pm-login--member.pm-acct .pm-login__member{ padding-top:36px; padding-bottom:var(--s7); }

#pm-main.pm-acct .pm-acct__grid{
  display:grid; grid-template-columns:240px minmax(0,1fr);
  gap:36px; align-items:start;
}
#pm-main.pm-acct .pm-acct__grid > *{ min-width:0; }

/* เมนูซ้าย — การ์ดขาว ลิงก์ทีละบรรทัด · ตัวที่เปิดอยู่ = olive + ตัวอักษร on-night (5.20 ✅) */
#pm-main.pm-acct .pm-acct__nav{
  background:var(--color-surface); border:1px solid var(--color-line);
  border-radius:var(--radius-lg); padding:10px;
}
#pm-main.pm-acct .pm-acct__navlist{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:2px; }
#pm-main.pm-acct .pm-acct__navlist li{ margin:0; }
#pm-main.pm-acct .pm-acct__nav .pm-acct__link{
  display:flex; align-items:center; min-height:44px;               /* F-3 */
  padding:0 16px; border-radius:10px;
  font-size:var(--fs-h6); font-weight:600; line-height:1.2;
  color:var(--color-night); text-decoration:none;
  /* ไม่มี transition — B-9 อนุญาตเฉพาะ transform/opacity */
}
#pm-main.pm-acct .pm-acct__nav .pm-acct__link:hover{ background:var(--color-paybox); color:var(--color-ink); }
#pm-main.pm-acct .pm-acct__nav .pm-acct__link:focus-visible{
  outline:2px solid var(--color-brand-ink); outline-offset:-2px;   /* F-2 · ด้านในกันถูกตัดตอนเลื่อนแนวนอน */
}
#pm-main.pm-acct .pm-acct__nav .is-active .pm-acct__link,
#pm-main.pm-acct .pm-acct__nav .pm-acct__link[aria-current="page"]{
  background:var(--color-brand); color:var(--color-on-night);
}
#pm-main.pm-acct .pm-acct__nav .is-active .pm-acct__link:focus-visible{ outline-color:var(--color-on-night); outline-offset:-4px; }
/* Log out แยกจากเมนูด้วยเส้น — ไม่ใช้สีแดงของ Additional CSS เดิม */
#pm-main.pm-acct .pm-acct__navlist .woocommerce-MyAccount-navigation-link--customer-logout{
  margin-top:6px; padding-top:6px; border-top:1px solid var(--color-line);
}
#pm-main.pm-acct .pm-acct__nav .woocommerce-MyAccount-navigation-link--customer-logout .pm-acct__link{
  color:var(--color-ink-muted); font-weight:500;
}

/* การ์ดเนื้อหา */
#pm-main.pm-acct .pm-acct__card{
  background:var(--color-surface); border:1px solid var(--color-line);
  border-radius:var(--radius-lg); padding:28px 30px;
}
#pm-main.pm-acct .pm-acct__content > .pm-notice,
#pm-main.pm-acct .pm-acct__content > .woocommerce-notices-wrapper:not(:empty){ margin-bottom:var(--s2); }
#pm-main.pm-acct .pm-acct__hello{ margin:0 0 14px; font-size:var(--fs-small); color:var(--color-ink); }
#pm-main.pm-acct .pm-acct__muted,
#pm-main.pm-acct .pm-acct__intro{ margin:0; font-size:var(--fs-small); color:var(--color-ink-muted); }
#pm-main.pm-acct .pm-acct__intro{ margin-bottom:var(--s2); }
#pm-main.pm-acct .pm-acct__content a{ color:var(--color-brand-ink); }
#pm-main.pm-acct .pm-acct__help{ margin:20px 0 0; font-size:var(--fs-h6); color:var(--color-ink-muted); }

/* Orders — แถวละออเดอร์ (artboard 90px | 1fr | auto) */
#pm-main.pm-acct .pm-acct__orders{ list-style:none; margin:0; padding:6px 26px; }
#pm-main.pm-acct .pm-acct__order{
  display:grid; grid-template-columns:90px minmax(0,1fr) auto;
  gap:20px; align-items:center; padding:20px 0; margin:0;
}
#pm-main.pm-acct .pm-acct__order + .pm-acct__order{ border-top:1px solid var(--color-line); }
#pm-main.pm-acct .pm-acct__order-no{ font-size:var(--fs-meta); color:var(--color-ink-muted); }
#pm-main.pm-acct .pm-acct__order-no a{ color:var(--color-ink-muted); display:inline-flex; align-items:center; min-height:44px; }
#pm-main.pm-acct .pm-acct__order-main{ display:flex; flex-direction:column; gap:3px; }
#pm-main.pm-acct .pm-acct__order-summary{ font-size:var(--fs-small); font-weight:600; color:var(--color-brand-ink); }
#pm-main.pm-acct .pm-acct__order-meta,
#pm-main.pm-acct .pm-acct__order-extra{ font-size:var(--fs-meta); color:var(--color-ink-muted); }
#pm-main.pm-acct .pm-acct__order-side{ display:flex; flex-direction:column; align-items:flex-end; gap:4px; text-align:right; }
#pm-main.pm-acct .pm-acct__order-total{ font-size:var(--fs-meta); color:var(--color-ink-muted); }
#pm-main.pm-acct .pm-acct__order-total strong{ font-size:var(--fs-small); font-weight:700; color:var(--color-ink); }
#pm-main.pm-acct .pm-acct__order-actions{ display:flex; flex-wrap:wrap; justify-content:flex-end; gap:4px 14px; }
/* (0,3,0) ชนะ `.woocommerce a.button` (0,2,1) — ปุ่มของ WooCommerce กลายเป็นลิงก์ตัวหนาแบบ artboard */
#pm-main.pm-acct .pm-acct__order-actions .pm-acct__action{
  display:inline-flex; align-items:center; min-height:44px; padding:0; margin:0;
  background:none; border:0; border-radius:0; box-shadow:none;
  font-size:var(--fs-meta); font-weight:600; line-height:1.2; color:var(--color-brand-ink);
}
#pm-main.pm-acct .pm-acct__order-actions .pm-acct__action:hover{ background:none; color:var(--color-ink); text-decoration:underline; }
#pm-main.pm-acct .pm-acct__pager{ display:flex; justify-content:space-between; gap:var(--s2); margin-top:var(--s2); }

/* Addresses — การ์ดสองใบ */
#pm-main.pm-acct .pm-acct__addrs{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:20px; }
#pm-main.pm-acct .pm-acct__addr{ padding:24px; display:flex; flex-direction:column; align-items:flex-start; }
#pm-main.pm-acct .pm-acct__content h2.pm-acct__eyebrow{   /* (1,3,1) ต้องชนะกฎ h2 ของหน้าย่อยข้างล่าง (1,2,1) */
  margin:0 0 12px; font-family:var(--font-body); font-size:var(--fs-label); font-weight:600;
  line-height:1.2; letter-spacing:.2em; text-transform:uppercase; color:var(--color-ink-muted);
}
#pm-main.pm-acct .pm-acct__address{ margin:0 0 6px; font-style:normal; font-size:var(--fs-h6); line-height:1.6; color:var(--color-ink-muted); }
#pm-main.pm-acct .pm-acct__edit{ display:inline-flex; align-items:center; min-height:44px; font-size:var(--fs-meta); font-weight:600; }

/* Account details — ฟอร์มของ WooCommerce ครบทุกช่อง ในการ์ดกว้าง 520px
   (0,3,0)+ ชนะ `.woocommerce form .form-row-first` (0,2,1) ที่ลอยซ้าย 47% */
#pm-main.pm-acct .pm-acct__formcard{ max-width:560px; }
#pm-main.pm-acct .pm-acct__form{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; margin:0; }
#pm-main.pm-acct .pm-acct__form > *{ grid-column:1 / -1; }
#pm-main.pm-acct .pm-acct__form > .form-row-first,
#pm-main.pm-acct .pm-acct__form > .form-row-last{ grid-column:auto; }
#pm-main.pm-acct .pm-acct__form .clear{ display:none; }
#pm-main.pm-acct .pm-acct__content .form-row{ float:none; width:auto; margin:0; padding:0; display:flex; flex-direction:column; gap:6px; }
#pm-main.pm-acct .pm-acct__content .form-row label{ margin:0; font-size:var(--fs-label); letter-spacing:.04em; line-height:1.3; color:var(--color-ink-muted); }
#pm-main.pm-acct .pm-acct__content .form-row .required{ color:var(--color-ink-muted); text-decoration:none; border:0; }
/* (0,4,1) ชนะ `.woocommerce form .form-row .input-text` (0,3,1) */
#pm-main.pm-acct .pm-acct__content .form-row input.input-text,
#pm-main.pm-acct .pm-acct__content .form-row textarea.input-text{
  width:100%; min-height:44px; margin:0; padding:0 12px; box-sizing:border-box;
  background:var(--color-surface); color:var(--color-ink);
  border:1px solid var(--color-line-strong);                         /* 3.07 — ขอบ control ✅ */
  border-radius:10px; font-size:var(--fs-h6); line-height:normal;
}
#pm-main.pm-acct .pm-acct__content .form-row input.input-text:focus{ border-color:var(--color-brand); }
#pm-main.pm-acct .pm-acct__content .form-row input.input-text:focus-visible{ outline:2px solid var(--color-brand-ink); outline-offset:2px; }
#pm-main.pm-acct .pm-acct__hint em{ font-style:normal; font-size:var(--fs-meta); color:var(--color-ink-muted); }
#pm-main.pm-acct .pm-acct__fieldset{
  margin:6px 0 0; padding:18px 20px 20px; display:flex; flex-direction:column; gap:14px;
  border:1px solid var(--color-line); border-radius:var(--radius-md);
}
#pm-main.pm-acct .pm-acct__fieldset legend{ padding:0 8px; font-size:var(--fs-label); font-weight:600; letter-spacing:.2em; text-transform:uppercase; color:var(--color-ink-muted); }
#pm-main.pm-acct .pm-acct__submitrow{ margin:6px 0 0; }
#pm-main.pm-acct .pm-acct__form .pm-acct__submit{ width:100%; min-height:48px; border-radius:var(--radius-pill); border:1px solid var(--color-brand); font-size:var(--fs-h6); }
#pm-main.pm-acct .pm-acct__form .pm-acct__submit:hover{ background:var(--color-night); border-color:var(--color-night); color:var(--color-on-night); }

/* หน้าย่อยที่ไม่ได้ override (view-order · edit-address) — แค่ให้เข้าชุด ไม่วาดใหม่ · ต้องดูบน staging */
#pm-main.pm-acct .pm-acct__content > form{
  background:var(--color-surface); border:1px solid var(--color-line);
  border-radius:var(--radius-lg); padding:28px 30px;
}
#pm-main.pm-acct .pm-acct__content h2,
#pm-main.pm-acct .pm-acct__content h3{ font-family:var(--font-display); font-weight:400; color:var(--color-brand); }

@media(max-width:900px){
  #pm-main.pm-acct .pm-acct__grid{ grid-template-columns:minmax(0,1fr); gap:var(--s3); }
  #pm-main.pm-acct .pm-acct__nav{ padding:6px; overflow-x:auto; }
  #pm-main.pm-acct .pm-acct__navlist{ flex-direction:row; gap:6px; }
  #pm-main.pm-acct .pm-acct__nav .pm-acct__link{ white-space:nowrap; }
  #pm-main.pm-acct .pm-acct__navlist .woocommerce-MyAccount-navigation-link--customer-logout{
    margin:0 0 0 auto; padding:0 0 0 6px; border-top:0; border-left:1px solid var(--color-line);
  }
}
@media(max-width:700px){
  #pm-main.pm-acct .pm-acct__orders{ padding:4px 20px; }
  #pm-main.pm-acct .pm-acct__order{ grid-template-columns:70px minmax(0,1fr) auto; gap:14px; }
  #pm-main.pm-acct .pm-acct__addrs{ grid-template-columns:minmax(0,1fr); }
}
@media(max-width:560px){
  #pm-main.pm-acct .pm-acct__card,#pm-main.pm-acct .pm-acct__content > form{ padding:24px 20px; }
  #pm-main.pm-acct .pm-acct__form{ grid-template-columns:minmax(0,1fr); }
  #pm-main.pm-acct .pm-acct__form > .form-row-first,
  #pm-main.pm-acct .pm-acct__form > .form-row-last{ grid-column:1 / -1; }
  /* แถวออเดอร์: เลข + ยอด บรรทัดบน · สรุป บรรทัดล่างเต็มกว้าง */
  #pm-main.pm-acct .pm-acct__order{ grid-template-columns:minmax(0,1fr) auto; gap:4px 14px; }
  #pm-main.pm-acct .pm-acct__order-main{ grid-column:1 / -1; grid-row:2; }
  #pm-main.pm-acct .pm-acct__order-side{ grid-row:1 / span 3; grid-column:2; }
}

/* ---- ข้อความแจ้งของ WooCommerce ในหน้าบัญชี (บันทึกสำเร็จ · error · "No order has been made yet")
   ค่าเดียวกับ .pm-cart .pm-notice ใน pm-components.css (16 ก.ย.)
   🔴 Additional CSS (post 9271) ประกาศ .woocommerce-info/-message/-error ด้วย !important ทุก property
      → ต้องใช้ !important สู้ (C-7 อนุญาต · เหตุผลเดียวกับบล็อกของหน้า Cart) · ✅ ลบได้ทันทีที่ย้ายหนี้ 17 */
#pm-main.pm-acct .pm-notice{
  margin:0 0 var(--s2) !important;
  padding:var(--s3) !important;
  background:var(--color-surface) !important;
  border:1px solid var(--color-line) !important;
  border-left:3px solid var(--color-line-strong) !important;
  border-radius:var(--radius) !important;
  font-family:var(--font-body) !important;
  font-size:var(--fs-small) !important; line-height:1.55;
  color:var(--color-ink-body) !important;
  list-style:none;
}
#pm-main.pm-acct .pm-notice--success{ border-left-color:var(--color-brand) !important; }
#pm-main.pm-acct .pm-notice--error{ border-left-color:var(--color-accent) !important; }
#pm-main.pm-acct .pm-notice::before{ display:none; }
#pm-main.pm-acct .pm-notice .button,
#pm-main.pm-acct .pm-notice a{
  display:inline-flex; align-items:center; min-height:44px;          /* F-3 */
  padding:0; margin:0 0 0 var(--s2); background:none; border:0; border-radius:0;
  font-family:var(--font-body); font-size:var(--fs-small); font-weight:600;
  color:var(--color-brand-ink); text-decoration:underline;
}
#pm-main.pm-acct .pm-notice a:hover{ color:var(--color-ink); }

/* ============================================================
   หน้า Why Pueraria (Case A) — เพิ่ม 24 ก.ย. 2026
   template-why-case-a.php · template-parts/why/*.php · รายงาน docs/report-why-pueraria-2026-09-24.md
   ที่มา: `Case A - Why Pueraria.dc.html`
   🔴 B-1 — ไม่มี hex ในบล็อกนี้ · ทุกค่ามาจาก pm-tokens.css
   🔴 B-3 — บนพื้น --color-brand ใช้ตัวอักษร --color-on-night สีเดียว (5.20)
      ไฟล์ออกแบบใช้ cream 72% (≈3.2) และ eyebrow lavender บน olive → ตกเกณฑ์ ไม่ลอก
      และ pm-utilities.css ตั้ง .pm-text-* บน .pm-band--brand เป็น on-night-2 (3.18 ตก)
      → บล็อกนี้ override กลับเป็น on-night ภายในหน้านี้เท่านั้น
   🔴 ตัวเลขลำดับขั้น: ไฟล์ออกแบบใช้สีจาง (≈1.3:1) → ใช้ --color-brand-ink ตาม .pm-ordinal (6.85)
   ============================================================ */
.pm-why__hero{ padding-top:var(--s6); }
.pm-why__crumb{ margin-bottom:var(--s3); }
.pm-why__kicker{ margin:0 0 var(--s2); }
.pm-why__h1{ font-size:var(--fs-d2); line-height:1.0; color:var(--color-brand); max-width:900px; margin:0 0 var(--s3); }
.pm-why__deck{ max-width:600px; margin:0 0 var(--s4); color:var(--color-ink-muted); }
.pm-why__sec{ padding-top:var(--s7); }
.pm-why__sec--last{ padding-bottom:var(--s7); }
.pm-why__h2{ color:var(--color-brand); margin:0 0 var(--s3); }
.pm-why__h2--tight{ margin-bottom:var(--s1); }
.pm-why__h2--narrow{ max-width:700px; margin-bottom:var(--s2); }
.pm-why__h3{ font-size:var(--fs-d5b); color:var(--color-brand); margin:0; }
.pm-why__p{ max-width:560px; margin:0 0 var(--s2); }
.pm-why__p:last-child{ margin-bottom:0; }
.pm-why__lead{ max-width:540px; margin:0 0 var(--s4); color:var(--color-ink-muted); }
.pm-why__fig{ margin:0; }
/* 4:5 ตามไฟล์ออกแบบ · ⛔ ไม่ใช้ .pm-media--hero เพราะมี --radius-hero (โค้งบน) ที่ §8.3 สงวนให้ hero เท่านั้น */
.pm-why__media--tall{ aspect-ratio:var(--ratio-hero); }

.pm-why__split--plant{ grid-template-columns:1.1fr .9fr; }
.pm-why__split--chain{ grid-template-columns:.85fr 1.15fr; }

.pm-why__actives{ margin-top:var(--s4); gap:20px; }
.pm-why__card{ padding:30px; display:flex; flex-direction:column; gap:10px; }
.pm-why__card .pm-eyebrow,.pm-why__card .pm-text-small{ margin:0; }

.pm-why__stats{ margin:var(--s5) 0 0; gap:18px; }
.pm-why__stat{ padding:28px; display:flex; flex-direction:column-reverse; justify-content:flex-end; }
.pm-why__stat dt{ margin:0; color:var(--color-ink-muted); }
.pm-why__statn{ margin:0; font-family:var(--font-display); font-size:var(--fs-d4); line-height:1.1; color:var(--color-brand); }

.pm-why__chain{ list-style:none; margin:0; padding:0; }
.pm-why__step{ display:flex; gap:20px; border-top:1px solid var(--color-line); padding:18px 0; }
.pm-why__stepn{ flex:none; font-family:var(--font-display); font-size:var(--fs-d5b); line-height:1.2; color:var(--color-brand-ink); }
.pm-why__steptitle{ font-family:var(--font-body); font-size:var(--fs-h5); font-weight:600; line-height:1.4; color:var(--color-brand); margin:0; }
.pm-why__step .pm-text-small{ margin:0; }

.pm-why__quality{ margin-top:var(--s7); padding-block:80px; }
.pm-why__quality .pm-eyebrow,
.pm-why__quality .pm-text-body,
.pm-why__quality .pm-text-small,
.pm-why__col--us .pm-eyebrow,
.pm-why__cta .pm-text-body{ color:var(--color-on-night); }
.pm-why__quality .pm-why__h2,
.pm-why__quality .pm-why__h3{ color:var(--color-on-night); }
.pm-why__quality .pm-why__p{ margin-bottom:var(--s4); }
.pm-why__qgrid{ gap:18px; }
.pm-why__qcard{ border:1px solid var(--color-line-night); border-radius:var(--radius); padding:28px; }
.pm-why__qcard .pm-why__h3{ margin-bottom:10px; }
.pm-why__qcard .pm-text-small{ margin:0; }
.pm-why__actions{ margin-top:var(--s4); }

.pm-why__pair{ gap:20px; }
.pm-why__col{ padding:34px; }
.pm-why__col--us{ background:var(--color-brand); color:var(--color-on-night); border-radius:var(--radius); }
.pm-why__colhead{ font-family:var(--font-body); margin:0 0 var(--s2); }
.pm-why__list{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:12px; }
.pm-why__list li{ border-top:1px solid var(--color-line); padding-top:12px; font-size:var(--fs-body); color:var(--color-ink-muted); }
.pm-why__col--us .pm-why__list li{ border-top-color:var(--color-line-night); color:var(--color-on-night); }

.pm-why__rvhead{ display:flex; justify-content:space-between; align-items:flex-end; gap:30px; flex-wrap:wrap; margin-bottom:28px; }
.pm-why__review{ padding:28px; display:flex; flex-direction:column; gap:14px; }
.pm-why__stars{ display:inline-flex; gap:3px; color:var(--color-accent); }
.pm-why__quote{ margin:0; padding:0; border:0; }   /* ไฟล์ออกแบบไม่มีเส้นซ้ายแบบ blockquote ของ pm-base */
.pm-why__quote p{ margin:0; font-family:var(--font-display); font-size:var(--fs-d6); line-height:1.4; color:var(--color-brand); }
.pm-why__who{ margin:auto 0 0; color:var(--color-ink-muted); }

.pm-why__faq{ background:var(--color-surface); border:1px solid var(--color-line); border-radius:var(--radius); overflow:hidden; }
.pm-why__qa + .pm-why__qa{ border-top:1px solid var(--color-line); }
.pm-why__q{
  list-style:none; cursor:pointer; min-height:44px;                 /* F-3 */
  display:flex; justify-content:space-between; align-items:center; gap:20px;
  padding:24px 30px; font-size:var(--fs-deck); font-weight:600; color:var(--color-brand);
}
.pm-why__q::-webkit-details-marker{ display:none; }
.pm-why__q:hover{ color:var(--color-brand-ink); }
.pm-why__q:focus-visible{ outline:2px solid var(--color-brand-ink); outline-offset:-4px; } /* F-2 */
.pm-why__qicon{ flex:none; font-size:22px; line-height:1; color:var(--color-accent); transition:transform var(--dur-micro) ease; }
.pm-why__qa[open] .pm-why__qicon{ transform:rotate(45deg); }
.pm-why__a{ max-width:760px; margin:0; padding:0 30px 26px; color:var(--color-ink-muted); }

.pm-why__cta{
  background:var(--color-brand); color:var(--color-on-night); border-radius:var(--radius);
  padding:var(--s6) 56px; display:flex; justify-content:space-between; align-items:center; gap:30px; flex-wrap:wrap;
}
.pm-why__ctatitle{ font-size:var(--fs-d3); line-height:1.05; max-width:520px; margin:0 0 10px; color:var(--color-on-night); }
.pm-why__cta .pm-text-body{ max-width:460px; margin:0; }

/* ---- การ์ดบรีฟในกรอบรอภาพ — เพิ่ม 24 ก.ย. 2026 รอบสอง (pm_why_photo()) ----
   🔴 ตัวอักษรอยู่บนการ์ด --color-surface ที่วางใน --color-shade · ไม่ได้อยู่บน shade ตรง ๆ
   ภาษาไทย → ฟอนต์ของธีมมีแค่ Latin (O-4) จึงตกไปฟอนต์ระบบ — ตั้งใจ เพราะเป็นโน้ตภายใน ไม่ใช่เนื้อหาเว็บ */
.pm-why__slot{ display:flex; align-items:center; justify-content:center; padding:var(--s3); }
.pm-why__brief{
  width:100%; max-height:100%; overflow:auto;
  background:var(--color-surface); border:1px dashed var(--color-line-strong); border-radius:var(--radius);
  padding:var(--s2) 20px; font-family:system-ui,-apple-system,'Sukhumvit Set','Noto Sans Thai',sans-serif;
}
.pm-why__brieftitle{ margin:0 0 10px; font-size:var(--fs-h6); font-weight:600; color:var(--color-brand-ink); }
.pm-why__briefdl{ margin:0; display:flex; flex-direction:column; gap:6px; }
.pm-why__briefrow{ display:grid; grid-template-columns:92px minmax(0,1fr); gap:10px;
  border-top:1px solid var(--color-line); padding-top:6px; }
.pm-why__briefrow dt{ font-size:var(--fs-label); font-weight:600; color:var(--color-ink-muted); }
.pm-why__briefrow dd{ margin:0; font-size:var(--fs-meta); line-height:1.5; color:var(--color-ink-body); }
.pm-why__briefrow.is-key dd{ font-weight:700; color:var(--color-ink); }
@media(max-width:680px){ .pm-why__slot{ aspect-ratio:auto; padding:var(--s2); } }

@media (prefers-reduced-motion:reduce){ .pm-why__qicon{ transition:none; } }
@media(max-width:1024px){
  .pm-why__split--plant,.pm-why__split--chain{ grid-template-columns:minmax(0,1fr); }
}
@media(max-width:680px){
  .pm-why__h1{ font-size:var(--fs-d3); }
  .pm-why__card,.pm-why__stat,.pm-why__qcard,.pm-why__col,.pm-why__review{ padding:var(--s3); }
  .pm-why__q{ padding:20px var(--s3); }
  .pm-why__a{ padding:0 var(--s3) 22px; }
  .pm-why__cta{ padding:var(--s5) var(--s3); }
  .pm-why__ctatitle{ font-size:var(--fs-d4); }
}

/* ============================================================
   หน้า Firmness & Lift (Case A · Shop by Goal) — เพิ่ม 24 ก.ย. 2026
   template-firmness-case-a.php · template-parts/firmness/*.php · รายงาน docs/report-firmness-lift-2026-09-24.md
   ที่มา: `Case A - Firmness & Lift.dc.html`
   🔴 B-1 — ไม่มี hex ในบล็อกนี้ · ทุกค่ามาจาก pm-tokens.css
   🔴 B-3 — บนพื้น --color-brand ใช้ตัวอักษร --color-on-night สีเดียว (5.20) · ไฟล์ออกแบบใช้ cream 70–72%
      และ lavender บน olive (ตก) → ไม่ลอก · override .pm-text-* ของ .pm-band--brand (on-night-2 = 3.18 ตก)
   🔴 ตัวเลขลำดับ: ไฟล์ออกแบบใช้สีจาง (≈1.3:1) → --color-brand-ink (6.85)
   ♻️ ใช้ของหน้า Why ซ้ำ: FAQ (.pm-why__faq …) · การ์ดบรีฟในช่องรอภาพ (.pm-why__slot / __brief …)
   ⛔ ไม่มี hover แบบยกการ์ด+เงาของไฟล์ออกแบบ — ใช้ .pm-card--link:hover ของธีม (C-7 · B-9)
   ============================================================ */
.pm-firm__hero{ padding-top:var(--s6); }
.pm-firm__crumb{ margin-bottom:var(--s3); }
.pm-firm__kicker{ margin:0 0 var(--s2); }
.pm-firm__split--hero{ grid-template-columns:1.05fr .95fr; }
.pm-firm__split--howto{ grid-template-columns:1fr 1fr; }
.pm-firm__h1{ font-size:var(--fs-d2); line-height:1.0; color:var(--color-brand); margin:0 0 var(--s3); }
.pm-firm__deck{ max-width:520px; margin:0 0 var(--s4); color:var(--color-ink-muted); }
.pm-firm__actions{ margin-bottom:var(--s3); }
.pm-firm__proof{ list-style:none; margin:0; padding:0; display:flex; flex-wrap:wrap; gap:10px 26px; color:var(--color-ink-muted); }
.pm-firm__proof li{ display:inline-flex; align-items:center; gap:8px; }
.pm-firm__fig{ margin:0; }
/* 4:5 มุมเหลี่ยม · ⛔ ไม่ใช้ .pm-media--hero (--radius-hero สงวนให้ hero หน้า Home · §8.3) */
.pm-firm__media--tall{ aspect-ratio:var(--ratio-hero); }
/* 6 ต.ค. 2026 — ภาพพื้นโปร่งใส (hero Daily Care): ไม่มีกล่องพื้นหลัง · contain กันขอบมือโดนครอปถ้าช่องไม่ใช่ 4:5 พอดี */
.pm-media--cutout{ background:none; border-radius:0; }
.pm-media--cutout img{ object-fit:contain; }

.pm-firm__stats-sec{ padding-top:var(--s6); }
.pm-firm__stats{ margin:0; gap:18px; }
.pm-firm__stat{ padding:28px; display:flex; flex-direction:column-reverse; justify-content:flex-end; }
.pm-firm__stat dt{ margin:0; color:var(--color-ink-muted); }
.pm-firm__statn{ margin:0; font-family:var(--font-display); font-size:var(--fs-d4); line-height:1.1; color:var(--color-brand); }

.pm-firm__sec{ padding-top:var(--s7); }
.pm-firm__sec--last{ padding-bottom:var(--s7); }
.pm-firm__h2{ color:var(--color-brand); margin:0 0 var(--s3); }
.pm-firm__h2--tight{ margin-bottom:var(--s1); }
.pm-firm__h2--flush{ margin:0; }
.pm-firm__h3{ font-size:var(--fs-d5b); color:var(--color-brand); margin:0; }
.pm-firm__lead{ max-width:560px; margin:0 0 var(--s4); color:var(--color-ink-muted); }
.pm-firm__p{ max-width:560px; margin:0 0 var(--s4); }

.pm-firm__causes{ list-style:none; margin:0; padding:0; gap:20px; }
.pm-card.pm-firm__cause{ padding:32px; display:flex; flex-direction:column; gap:12px; }
.pm-firm__cause .pm-text-small{ margin:0; }
.pm-firm__num{ font-family:var(--font-display); font-size:var(--fs-d4); line-height:1; color:var(--color-brand-ink); }
.pm-firm__answer{ margin:auto 0 0; font-size:var(--fs-meta); font-weight:600; color:var(--color-brand-ink); }

.pm-firm__rowhead{ display:flex; justify-content:space-between; align-items:flex-end; gap:30px; flex-wrap:wrap; margin-bottom:28px; }
.pm-firm__products{ list-style:none; margin:0; padding:0; gap:20px; }
.pm-card.pm-firm__prod{ padding:0; overflow:hidden; display:flex; flex-direction:column; }
.pm-firm__shot{ display:block; border-radius:0; }
.pm-firm__prodbody{ padding:26px; display:flex; flex-direction:column; gap:10px; flex:1; }
.pm-firm__prodbody .pm-eyebrow{ margin:0; }
.pm-firm__prodname{ font-family:var(--font-display); font-weight:400; font-size:var(--fs-d5b); line-height:1.15; color:var(--color-brand); margin:0; }
.pm-firm__prodname a{ color:inherit; }
.pm-firm__prodnote{ margin:0; flex:1; }
.pm-firm__actives{ margin:0; padding-top:12px; border-top:1px solid var(--color-line); color:var(--color-ink-muted); }

.pm-firm__bundle{
  margin-top:22px; background:var(--color-brand); color:var(--color-on-night); border-radius:var(--radius);
  padding:34px; display:flex; justify-content:space-between; align-items:center; gap:26px; flex-wrap:wrap;
}
.pm-firm__bundletitle{ font-size:var(--fs-d5); color:var(--color-on-night); margin:0 0 6px; }
.pm-firm__bundle .pm-text-body{ margin:0; }

.pm-firm__protocol{ margin-top:var(--s7); padding-block:80px; }
.pm-firm__protocol .pm-firm__h2{ max-width:640px; margin-bottom:12px; }
.pm-firm__protocol .pm-eyebrow,
.pm-firm__protocol .pm-text-body,
.pm-firm__protocol .pm-text-small,
.pm-firm__protocol .pm-firm__h2,
.pm-firm__bundle .pm-text-body,
.pm-firm__cta .pm-text-body{ color:var(--color-on-night); }
.pm-firm__weeks{ list-style:none; margin:0; padding:0; gap:18px; }
.pm-firm__week{ border:1px solid var(--color-line-night); border-radius:var(--radius); padding:28px; display:flex; flex-direction:column; gap:10px; }
.pm-firm__week .pm-text-small{ margin:0; }
.pm-firm__weekn{ font-family:var(--font-display); font-size:var(--fs-d4); line-height:1; color:var(--color-on-night); }
.pm-firm__weektitle{ font-family:var(--font-body); font-size:var(--fs-h5); font-weight:600; line-height:1.4; color:var(--color-on-night); margin:0; }

.pm-firm__steps{ list-style:none; margin:0; padding:0; }
.pm-firm__step{ display:flex; gap:20px; border-top:1px solid var(--color-line); padding:18px 0; }
.pm-firm__step .pm-text-small{ margin:0; }
.pm-firm__stepn{ flex:none; font-family:var(--font-display); font-size:var(--fs-d6); line-height:1.3; color:var(--color-brand-ink); }
.pm-firm__steptitle{ font-family:var(--font-body); font-size:var(--fs-h5); font-weight:600; line-height:1.4; color:var(--color-brand); margin:0; }

.pm-firm__review{ padding:28px; display:flex; flex-direction:column; gap:14px; }
.pm-firm__stars{ display:inline-flex; gap:3px; color:var(--color-accent); }
.pm-firm__quote{ margin:0; padding:0; border:0; }
.pm-firm__quote p{ margin:0; font-family:var(--font-display); font-size:var(--fs-d6); line-height:1.4; color:var(--color-brand); }
.pm-firm__who{ margin:auto 0 0; color:var(--color-ink-muted); }

.pm-firm__ctagrid{ display:grid; grid-template-columns:1.2fr .8fr; gap:24px; }
.pm-firm__cta{ background:var(--color-brand); color:var(--color-on-night); border-radius:var(--radius); padding:var(--s5); }
.pm-firm__ctatitle{ font-size:var(--fs-d3); line-height:1.05; max-width:460px; margin:0 0 12px; color:var(--color-on-night); }
.pm-firm__cta .pm-text-body{ max-width:440px; margin:0 0 28px; }
.pm-card.pm-firm__others{ padding:40px; display:flex; flex-direction:column; gap:16px; }
.pm-firm__othershead{ font-family:var(--font-body); margin:0; }
.pm-firm__others ul{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; }
.pm-firm__others a{
  display:flex; justify-content:space-between; align-items:center; gap:14px; min-height:44px;   /* F-3 */
  border-top:1px solid var(--color-line); border-bottom:0; font-size:var(--fs-body); color:var(--color-ink); text-decoration:none;
}
.pm-firm__others a span{ color:var(--color-accent); }
.pm-firm__others a:hover{ color:var(--color-brand-ink); }

/* ── เนื้อหาใหม่ 9 ต.ค. 2026 (docs/report-firming-content-2026-10-09.md) — ต่อยอดคลาสเดิม ไม่มีค่าสี/ฟอนต์ใหม่ (B-1) ── */
.pm-card.pm-firm__answerbox{ padding:32px; }
.pm-firm__answertext{ margin:0; max-width:820px; color:var(--color-ink); }
.pm-firm__lead--flush{ margin:var(--s1) 0 0; }
.pm-firm__bundle--solo{ margin-top:0; }
.pm-firm__bundle--solo > div{ flex:1 1 420px; max-width:720px; }
.pm-firm__bundle .pm-eyebrow{ color:var(--color-on-night); }
.pm-firm__bundle h2.pm-firm__bundletitle{ margin-bottom:10px; }
.pm-firm__infos{ gap:20px; }
.pm-card.pm-firm__info{ padding:32px; display:flex; flex-direction:column; gap:12px; }
.pm-firm__info .pm-firm__kicker{ margin:0; }
.pm-firm__info .pm-text-small{ margin:0; }
.pm-firm__list{ margin:0; padding-left:1.2em; display:flex; flex-direction:column; gap:6px; }
.pm-firm__links{ margin:auto 0 0; padding-top:8px; display:flex; flex-wrap:wrap; gap:10px 26px; }

@media(max-width:1024px){
  .pm-firm__split--hero,.pm-firm__split--howto,.pm-firm__ctagrid{ grid-template-columns:minmax(0,1fr); }
}
@media(max-width:900px){
  .pm-firm__stats.pm-grid--4,.pm-firm__weeks{ grid-template-columns:repeat(2,minmax(0,1fr)); }
  .pm-firm__causes,.pm-firm__products{ grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media(max-width:680px){
  .pm-firm__h1{ font-size:var(--fs-d3); }
  .pm-firm__stats,.pm-firm__stats.pm-grid--4,.pm-firm__weeks,.pm-firm__causes,.pm-firm__products{ grid-template-columns:minmax(0,1fr); }
  .pm-firm__stat,.pm-card.pm-firm__cause,.pm-firm__week,.pm-firm__review,.pm-card.pm-firm__others{ padding:var(--s3); }
  .pm-firm__prodbody{ padding:var(--s3); }
  .pm-firm__bundle,.pm-firm__cta{ padding:var(--s4) var(--s3); }
  .pm-firm__ctatitle{ font-size:var(--fs-d4); }
}


/* ============================================================
   หน้า Ritual Sets (Case A · เมนูหลัก) — เพิ่ม 24 ก.ย. 2026
   template-ritual-sets-case-a.php · template-parts/ritual-sets/*.php · รายงาน docs/report-ritual-sets-2026-09-24.md
   ที่มา: `Case A - Ritual Sets.dc.html`
   🔴 B-1 — ไม่มี hex ในบล็อกนี้ · ทุกค่ามาจาก pm-tokens.css
   🔴 B-3 — การ์ดใบกลาง (พื้น --color-brand) ใช้ตัวอักษร --color-on-night ทึบสีเดียว (5.20)
      ไฟล์ออกแบบใช้ opacity .6–.8 + ชิปลาเวนเดอร์บน olive (ตก) → ไม่ลอก
   🔴 B-4 — ไฟล์ออกแบบมีตัวอักษร 11 / 11.5 / 12.5 px → ขั้นต่ำ --fs-label
   ♻️ ใช้ของหน้า Why ซ้ำ: FAQ (.pm-why__faq …) · การ์ดบรีฟ (.pm-why__slot / __brief …)
      → ตอนขึ้น staging ต้องอัป pm-layout.css ตัวที่มีบล็อก Why ด้วย
   ============================================================ */
.pm-rs__hero{ padding-top:var(--s6); }
.pm-rs__crumb{ margin-bottom:var(--s3); }
.pm-rs__kicker{ margin:0 0 var(--s2); color:var(--color-accent); }
.pm-rs__head{ display:flex; justify-content:space-between; align-items:flex-end; gap:var(--s5); flex-wrap:wrap; }
.pm-rs__h1{ font-size:var(--fs-d2); line-height:1.0; color:var(--color-brand); margin:0; }
.pm-rs__deck{ max-width:400px; margin:0; color:var(--color-ink-muted); }

.pm-rs__sec{ padding-top:var(--s7); }
.pm-rs__sec--sets{ padding-top:var(--s5); }
.pm-rs__sec--last{ padding-bottom:var(--s7); }
.pm-rs__h2{ color:var(--color-brand); margin:0 0 var(--s3); }

/* ---- การ์ดชุด ---- */
.pm-rs__sets{ gap:20px; align-items:stretch; }
.pm-rs__set{
  background:var(--color-surface); color:var(--color-ink); border:1px solid var(--color-line); border-radius:var(--radius);
  padding:34px; display:flex; flex-direction:column; gap:18px;
}
.pm-rs__set.is-pick{ background:var(--color-brand); color:var(--color-on-night); border-color:var(--color-shade-deep); }
.pm-rs__level{ margin:0; font-size:var(--fs-label); font-weight:600; letter-spacing:.14em; text-transform:uppercase; color:var(--color-ink-muted); }
.pm-rs__name{ font-size:var(--fs-d5); line-height:1.1; margin:6px 0 0; color:var(--color-brand); }
.pm-rs__note{ margin:0; }
.pm-rs__items{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:10px; }
.pm-rs__item{ display:flex; gap:14px; align-items:flex-start; border-top:1px solid var(--color-line); padding-top:10px; position:relative; }
/* F-3 — ชื่อสินค้าเป็น stretched link คลุมทั้งแถว (แถวสูง ≥ 44px จากกล่องเลข) */
.pm-rs__itemname::after{ content:""; position:absolute; inset:0; }
.pm-rs__itemname:focus-visible{ outline:0; }
.pm-rs__item:focus-within{ outline:2px solid var(--color-brand-ink); outline-offset:2px; }
.pm-rs__set.is-pick .pm-rs__item:focus-within{ outline-color:var(--color-on-night); }
.pm-rs__mark{
  flex:none; width:44px; height:44px; display:grid; place-items:center; border-radius:var(--radius);
  background:var(--color-paper); border:1px solid var(--color-line);
  font-family:var(--font-display); font-size:var(--fs-h5); color:var(--color-brand-ink);
}
.pm-rs__itembody{ flex:1; min-width:0; display:flex; flex-direction:column; }
.pm-rs__itemname{ font-size:var(--fs-small); font-weight:600; color:var(--color-ink); border-bottom:0; text-decoration:none; }
.pm-rs__itemname:hover{ color:var(--color-brand-ink); text-decoration:underline; }
.pm-rs__use{ font-size:var(--fs-meta); color:var(--color-ink-muted); }
.pm-rs__itemprice{ flex:none; font-size:var(--fs-h6); color:var(--color-ink-muted); }

.pm-rs__foot{ margin-top:auto; display:flex; flex-direction:column; gap:10px; }
.pm-rs__price{ margin:0; display:flex; align-items:baseline; gap:12px; flex-wrap:wrap; }
.pm-rs__now{ font-family:var(--font-display); font-size:var(--fs-d4b); line-height:1; }
.pm-rs__save{ font-size:var(--fs-label); font-weight:600; letter-spacing:.08em; text-transform:uppercase; color:var(--color-brand-ink); }
.pm-rs__sep{ margin:0; font-size:var(--fs-meta); color:var(--color-ink-muted); }
.pm-rs__sep b{ font-weight:600; color:var(--color-ink); }
.pm-rs__pending{
  margin:0; padding:10px 12px; border:1px dashed var(--color-line-strong); border-radius:var(--radius);
  font-size:var(--fs-meta); color:var(--color-ink-muted);
}
.pm-rs__btn{ width:100%; justify-content:center; }

/* ใบกลาง — พื้น brand: ทุกตัวอักษร on-night ทึบ · เส้น line-night */
.pm-rs__set.is-pick .pm-rs__level,
.pm-rs__set.is-pick .pm-rs__name,
.pm-rs__set.is-pick .pm-rs__note,
.pm-rs__set.is-pick .pm-rs__itemname,
.pm-rs__set.is-pick .pm-rs__itemname:hover,
.pm-rs__set.is-pick .pm-rs__use,
.pm-rs__set.is-pick .pm-rs__itemprice,
.pm-rs__set.is-pick .pm-rs__mark,
.pm-rs__set.is-pick .pm-rs__save,
.pm-rs__set.is-pick .pm-rs__sep,
.pm-rs__set.is-pick .pm-rs__sep b,
.pm-rs__set.is-pick .pm-rs__pending{ color:var(--color-on-night); }
.pm-rs__set.is-pick .pm-rs__item{ border-top-color:var(--color-line-night); }
.pm-rs__set.is-pick .pm-rs__mark{ background:transparent; border-color:var(--color-line-night); }
.pm-rs__set.is-pick .pm-rs__pending{ border-color:var(--color-line-night); }

/* ---- How a ritual runs ---- */
.pm-rs__split{ grid-template-columns:.9fr 1.1fr; }
.pm-rs__fig{ margin:0; }
.pm-rs__media--tall{ aspect-ratio:var(--ratio-hero); }
.pm-rs__weeks{ list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; }
.pm-rs__week{ border-top:1px solid var(--color-line); padding-top:14px; display:flex; flex-direction:column; gap:4px; }
.pm-rs__week .pm-text-small{ color:var(--color-ink-muted); }
.pm-rs__weekn{ font-family:var(--font-display); font-size:var(--fs-d5b); line-height:1.2; color:var(--color-brand); }
.pm-rs__more{ margin-top:28px; }

/* ---- FAQ ---- */
.pm-rs__faqbox{ background:var(--color-surface); border:1px solid var(--color-line); border-radius:var(--radius); padding:var(--s5); }

/* ---- ภาพสินค้าในแถว — เพิ่ม 25 ก.ย. 2026 (รอบขึ้น staging · คำสั่ง "รูปสินค้า … ให้นำมาใส่") ----
   แทนกล่องเลข 01/02/03 เมื่อสินค้ามีภาพ (ลำดับยังอยู่ใน <ol>) · 56px ≥ 44 → แถวยังผ่าน F-3
   พื้น --color-photo-bg แบบ .pm-media--photo ของการ์ดหน้า Home · ภาพชุดเก่า = เดินสวน P-2 โดยคำสั่ง */
.pm-rs__thumb{
  flex:none; width:56px; height:56px; border-radius:var(--radius); overflow:hidden;
  background:var(--color-photo-bg); border:1px solid var(--color-line);
}
.pm-rs__thumb img{ display:block; width:100%; height:100%; object-fit:contain; }
.pm-rs__set.is-pick .pm-rs__thumb{ border-color:var(--color-line-night); }
/* anchor #pm-rs-{key} (เมนู Starter/Complete/Intensive · ปุ่มชุดหน้า Home/Firmness) — เพิ่ม 25 ก.ย. 2026
   เป้าคือ h2 ในการ์ด → เผื่อ header sticky 69px + ป้าย Level + padding การ์ด ให้หัวการ์ดโผล่ครบ (เจอบน staging) */
.pm-rs__name{ scroll-margin-top:calc(69px + var(--s7)); }

@media(max-width:900px){
  .pm-rs__sets.pm-grid--3,.pm-rs__split{ grid-template-columns:minmax(0,1fr); }
}
@media(max-width:680px){
  .pm-rs__h1{ font-size:var(--fs-d3); }
  .pm-rs__set{ padding:var(--s3); }
  .pm-rs__faqbox{ padding:var(--s3) 0 0; border:0; background:transparent; }
  .pm-rs__weeks{ grid-template-columns:minmax(0,1fr); }
}

/* ============================================================
   หน้า Shop by Goal (Case A · เมนูหลัก) — เพิ่ม 24 ก.ย. 2026
   template-goal-case-a.php · template-parts/goal/*.php · js/pm-goal.js · รายงาน docs/report-shop-by-goal-2026-09-24.md
   ที่มา: `Case A - Shop by Goal.dc.html`
   🔴 B-1 — ไม่มี hex ในบล็อกนี้ · ทุกค่ามาจาก pm-tokens.css
   🔴 B-3 — การ์ดผลและตัวเลือกที่ถูกเลือก (พื้น --color-brand) ใช้ --color-on-night ทึบ
      ไฟล์ออกแบบใช้ opacity .6–.75 → ไม่ลอก
   🔴 B-4 — ไฟล์ออกแบบมี 11 / 11.5 / 12.5 px → ขั้นต่ำ --fs-label
   🔴 C-10 — สถานะเลือกใช้ :checked ไม่ต้องมี JS · ปุ่ม submit ซ่อนเมื่อ JS ทำงาน (attribute hidden)
   ============================================================ */
.pm-goal__hero{ padding-top:var(--s6); }
.pm-goal__crumb{ margin-bottom:var(--s3); }
.pm-goal__kicker{ margin:0 0 14px; color:var(--color-accent); }
.pm-goal__h1{ font-size:var(--fs-d2); line-height:1.0; color:var(--color-brand); margin:0 0 var(--s2); max-width:760px; }
.pm-goal__deck{ max-width:520px; margin:0; color:var(--color-ink-muted); }

.pm-goal__sec{ padding-top:var(--s7); }
.pm-goal__sec--finder{ padding-top:44px; }
.pm-goal__sec--last{ padding-bottom:var(--s7); }

/* ---- ตัวช่วยเลือก ---- */
.pm-goal__quiz{ display:grid; grid-template-columns:1.25fr .75fr; gap:var(--s3); align-items:start; }
.pm-goal__form{
  background:var(--color-surface); border:1px solid var(--color-line); border-radius:var(--radius);
  padding:40px; display:flex; flex-direction:column; gap:34px; min-width:0;
}
.pm-goal__progress{ display:flex; align-items:center; gap:14px; }
.pm-goal__bar{ flex:1; height:4px; background:var(--color-shade); border-radius:var(--radius); overflow:hidden; }
.pm-goal__barfill{ display:block; height:100%; background:var(--color-brand); transition:width var(--dur-micro); }
.pm-goal__count{ font-size:var(--fs-label); color:var(--color-ink-muted); white-space:nowrap; }

.pm-goal__q{ border:0; margin:0; padding:0; min-width:0; }
.pm-goal__legend{ display:flex; align-items:baseline; gap:12px; padding:0; margin-bottom:14px; }
.pm-goal__n{ font-family:var(--font-display); font-size:var(--fs-d6); color:var(--color-accent); }
.pm-goal__qh{ font-size:var(--fs-d5); line-height:1.15; color:var(--color-brand); margin:0; }
.pm-goal__opts{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
.pm-goal__opt{ position:relative; display:flex; }
/* radio ตัวจริงซ่อนด้วย clip (ไม่ใช่ display:none) → ยังโฟกัสด้วย Tab/ลูกศรได้ */
.pm-goal__radio{ position:absolute; opacity:0; width:1px; height:1px; margin:0; clip-path:inset(50%); }
.pm-goal__label{
  flex:1; display:flex; flex-direction:column; gap:4px; min-height:44px; cursor:pointer;
  padding:18px 20px; border:1px solid var(--color-line-strong); border-radius:var(--radius);
  background:var(--color-paper); color:var(--color-ink);
  transition:border-color var(--dur-micro),background var(--dur-micro);
}
.pm-goal__label:hover{ border-color:var(--color-brand); }
.pm-goal__optname{ font-size:var(--fs-body); font-weight:600; }
.pm-goal__optnote{ font-size:var(--fs-meta); color:var(--color-ink-muted); }
.pm-goal__radio:checked + .pm-goal__label{ background:var(--color-brand); border-color:var(--color-brand); color:var(--color-on-night); }
.pm-goal__radio:checked + .pm-goal__label .pm-goal__optnote{ color:var(--color-on-night); }
/* F-2 — วงอยู่นอกการ์ด (บนพื้น surface) จึงเห็นทั้งตอนเลือกและไม่เลือก */
.pm-goal__radio:focus-visible + .pm-goal__label{ outline:2px solid var(--color-brand-ink); outline-offset:3px; }
.pm-goal__submit[hidden]{ display:none; }

/* ---- การ์ดผล (พื้น brand) ---- */
.pm-goal__result{
  position:sticky; top:96px; background:var(--color-brand); color:var(--color-on-night);
  border-radius:var(--radius); padding:34px; display:flex; flex-direction:column; gap:18px; min-width:0;
}
.pm-goal__rkicker{ margin:0; font-size:var(--fs-label); font-weight:600; letter-spacing:.14em; text-transform:uppercase; }
.pm-goal__live{ display:flex; flex-direction:column; gap:18px; }
.pm-goal__rname{ font-size:var(--fs-d4); line-height:1.1; margin:0; color:var(--color-on-night); }
.pm-goal__rnote{ margin:0; font-size:var(--fs-small); }
.pm-goal__items{ list-style:none; margin:4px 0 0; padding:0; display:flex; flex-direction:column; gap:10px; }
.pm-goal__items:empty{ display:none; }
.pm-goal__item{ display:flex; justify-content:space-between; gap:14px; border-top:1px solid var(--color-line-night); padding-top:10px; position:relative; min-height:44px; }
.pm-goal__itembody{ display:flex; flex-direction:column; min-width:0; }
.pm-goal__result .pm-goal__itemname{ font-size:var(--fs-small); font-weight:600; color:var(--color-on-night); border-bottom:0; }
.pm-goal__result .pm-goal__itemname:hover{ text-decoration:underline; }
/* F-3 — ชื่อสินค้าเป็น stretched link คลุมทั้งแถว */
.pm-goal__itemname::after{ content:""; position:absolute; inset:0; }
.pm-goal__itemname:focus-visible{ outline:0; }
.pm-goal__item:focus-within{ outline:2px solid var(--color-on-night); outline-offset:2px; }
.pm-goal__use{ font-size:var(--fs-meta); }
.pm-goal__itemprice{ font-size:var(--fs-small); white-space:nowrap; }
/* ภาพสินค้าในการ์ดผล — เพิ่ม 25 ก.ย. 2026 (รอบขึ้น staging · คำสั่ง "รูปสินค้า … ให้นำมาใส่")
   สูตรเดียวกับ .pm-rs__thumb ของหน้า Ritual Sets · กรอบบนพื้น olive ใช้ --color-line-night · ภาพชุดเก่า = เดินสวน P-2 โดยคำสั่ง */
.pm-goal__thumb{
  flex:none; width:56px; height:56px; border-radius:var(--radius); overflow:hidden;
  background:var(--color-photo-bg); border:1px solid var(--color-line-night);
}
.pm-goal__thumb img{ display:block; width:100%; height:100%; object-fit:contain; }
.pm-goal__thumb + .pm-goal__itembody{ flex:1; }
/* anchor #pm-goal-result (ฟอร์มไม่มี JS) · #pm-goal-start-h ("Other goals" หน้า Firmness) — กันมุดใต้ header sticky 69px
   บทเรียนเดียวกับ .pm-rs__name (เจอบน staging 25 ก.ย. 2026) */
.pm-goal__result,.pm-goal__h2{ scroll-margin-top:calc(69px + var(--s3)); }
.pm-goal__total{
  margin:4px 0 0; display:flex; justify-content:space-between; align-items:baseline;
  border-top:1px solid var(--color-line-night); padding-top:14px;
}
.pm-goal__totallabel{ font-size:var(--fs-meta); }
.pm-goal__totalnum{ font-family:var(--font-display); font-size:var(--fs-d4); font-weight:400; line-height:1; }
.pm-goal__totalnote{ margin:-10px 0 0; font-size:var(--fs-label); text-align:right; }
.pm-goal__btn{ width:100%; justify-content:center; }
.pm-goal__result .pm-goal__alt{
  display:flex; align-items:center; justify-content:center; min-height:44px; text-align:center;
  font-size:var(--fs-meta); color:var(--color-on-night); border-bottom:0; text-decoration:underline;
}

/* ---- การ์ด goal ---- */
.pm-goal__h2{ font-size:var(--fs-d3); color:var(--color-brand); margin:0 0 var(--s1); }
.pm-goal__sub{ margin:0 0 30px; max-width:520px; color:var(--color-ink-muted); }
.pm-goal__cards{ list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:18px; }
.pm-goal__card{
  height:100%; box-sizing:border-box; min-height:210px; padding:28px; display:flex; flex-direction:column; gap:12px;
  background:var(--color-surface); border:1px solid var(--color-line); border-radius:var(--radius);
  color:var(--color-ink); text-decoration:none; border-bottom-width:1px;
  transition:transform var(--dur-micro),box-shadow var(--dur-micro);
}
.pm-goal__card:hover{ transform:translateY(-4px); box-shadow:var(--shadow-card); color:var(--color-ink); }
.pm-goal__cardn{ font-family:var(--font-display); font-size:var(--fs-d4); line-height:1; color:var(--color-accent); }
.pm-goal__cardh{ font-size:var(--fs-d5b); color:var(--color-brand); margin:0; }
.pm-goal__cardnote{ flex:1; font-size:var(--fs-small); color:var(--color-ink-muted); }
.pm-goal__cardmeta{ font-size:var(--fs-meta); color:var(--color-ink-muted); }
@media(prefers-reduced-motion:reduce){ .pm-goal__card:hover{ transform:none; } .pm-goal__barfill{ transition:none; } }

@media(max-width:1024px){ .pm-goal__cards{ grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media(max-width:900px){
  .pm-goal__quiz{ grid-template-columns:minmax(0,1fr); }
  .pm-goal__result{ position:static; }
}
@media(max-width:680px){
  .pm-goal__h1{ font-size:var(--fs-d3); }
  .pm-goal__form{ padding:var(--s3); }
  .pm-goal__result{ padding:var(--s3); }
  .pm-goal__opts,.pm-goal__cards{ grid-template-columns:minmax(0,1fr); }
}
/* ============================================================
   หน้า How to choose a format (Case A · Discover) — เพิ่ม 24 ก.ย. 2026
   template-format-case-a.php · template-parts/format/*.php · รายงาน docs/report-choose-format-2026-09-24.md
   ที่มา: `Case A - Choose Format.dc.html`
   🔴 B-1 — ไม่มี hex ในบล็อกนี้ · ทุกค่ามาจาก pm-tokens.css
   🔴 B-3 — กล่อง CTA พื้น --color-brand → --color-on-night ทึบ (artboard cream 72% ≈3.2 ตก)
   🔴 B-4 — ป้าย 10.5–11.5px IBM Plex Mono ของ artboard → .pm-eyebrow / --fs-label (12.5)
      ป้ายสี lavender (accent2) บนพื้นครีม = ห้ามเป็นสีตัวอักษร (pm-tokens) → --color-ink-muted / --color-brand-ink
   🔴 ตัวเลขกฎ 1–2: artboard accent3 บนครีม (≈1.1:1) → --color-brand-ink
   🔴 C-10 — ตัวเลือกเป้าหมายใช้ radio + :checked ล้วน · โครง [radio][label][panel] เป็นพี่น้องใน grid
      จอกว้าง: label คอลัมน์ 1 · panel คอลัมน์ 2 ยาวตลอด (แถว auto × n + แถว 1fr รับความสูงส่วนเกิน
      → label ไม่ถูกยืดตามการ์ด) · ≤1024px: คอลัมน์เดียว การ์ดที่เลือกอยู่ใต้ label ของมันเอง
   ♻️ FAQ ใช้ .pm-why__faq / __qa / __q ของหน้า Why (แบบเดียวกับ Firmness)
   ============================================================ */
.pm-fmt__hero{ padding-top:var(--s6); }
.pm-fmt__crumb{ margin-bottom:var(--s4); }
.pm-fmt__intro{ max-width:820px; }
.pm-fmt__kicker{ margin:0 0 var(--s2); }
.pm-fmt__h1{ font-size:var(--fs-d2); line-height:1.0; color:var(--color-brand); margin:0 0 var(--s3); }
.pm-fmt__deck{ margin:0; color:var(--color-ink-muted); }
.pm-fmt__meta{
  display:flex; justify-content:space-between; align-items:center; gap:var(--s2) var(--s4); flex-wrap:wrap;
  margin-top:var(--s5); padding:var(--s2) 0; border-block:1px solid var(--color-line); color:var(--color-ink-muted);
}
.pm-fmt__metalist{ list-style:none; margin:0; padding:0; display:flex; flex-wrap:wrap; gap:6px 20px; }
.pm-fmt__metalist a{ display:inline-flex; align-items:center; min-height:44px; }   /* F-3 */
/* แก้ 9 ต.ค. 2026 — ข้อความล้วน ("~6 min read") ชิดบน ส่วนลิงก์ (สูง 44px · F-3) อยู่กลาง → ตัวอักษรเหลื่อมกัน 13px · จัดกึ่งกลางทั้งแถว */
.pm-fmt__metalist{ align-items:center; }

.pm-fmt__sec{ padding-top:var(--s7); }
.pm-fmt__sec--answer{ padding-top:var(--s5); }
.pm-fmt__sec--last{ padding-bottom:var(--s7); }
.pm-fmt__split{ display:grid; grid-template-columns:minmax(0,1fr) 340px; gap:56px; align-items:start; }
.pm-fmt__h2{ color:var(--color-brand); margin:0 0 var(--s2); }
.pm-fmt__h3{ font-size:var(--fs-d5b); line-height:1.1; color:var(--color-brand); margin:0; }
.pm-fmt__head{ max-width:720px; margin-bottom:var(--s4); }
.pm-fmt__lead{ margin:0; color:var(--color-ink-muted); }
/* กดสารบัญแล้วหัวข้อหยุดใต้ header sticky (แบบเดียวกับ About) */
.pm-fmt__anchor{ scroll-margin-top:calc(69px + var(--s3)); }   /* .pm-header sticky 69px — สูตรเดียวกับ .pm-article [id] */

/* ป้ายเล็กทั้งหน้า — .pm-eyebrow ของธีม + สีที่ผ่าน B-3 */
.pm-fmt__label{ display:block; margin:0 0 12px; font-family:var(--font-body); color:var(--color-brand-ink); }
.pm-fmt__label--muted{ color:var(--color-ink-muted); }

/* ---- Quick answer ---- */
.pm-fmt__quick{ border-left:2px solid var(--color-brand); padding:2px 0 2px var(--s3); }
.pm-fmt__quicktext{ margin:0; font-size:var(--fs-deck); line-height:1.6; color:var(--color-ink); }
.pm-card.pm-fmt__lines{ padding:var(--s3); }
.pm-fmt__linelist{ margin:0; display:flex; flex-direction:column; gap:11px; }
.pm-fmt__line{ display:flex; justify-content:space-between; align-items:baseline; gap:14px;
  border-bottom:1px solid var(--color-line); padding-bottom:9px; }
.pm-fmt__line dt{ font-size:var(--fs-small); font-weight:600; color:var(--color-ink); }
.pm-fmt__line dd{ margin:0; font-size:var(--fs-meta); text-align:right; color:var(--color-brand-ink); }

/* ---- ตัวเลือกเป้าหมาย (radio + :checked) ---- */
.pm-fmt__picker{ border:0; margin:0; padding:0; min-width:0; }
.pm-fmt__pgrid{
  display:grid; grid-template-columns:minmax(0,360px) minmax(0,1fr);
  grid-template-rows:repeat(var(--pm-fmt-n,4),auto) 1fr; gap:8px 24px; align-items:start;
}
.pm-fmt__radio{ position:absolute; opacity:0; width:1px; height:1px; margin:0; clip-path:inset(50%); }
.pm-fmt__opt{
  grid-column:1; display:flex; flex-direction:column; gap:6px; min-height:44px; cursor:pointer;
  padding:18px 20px; border:1px solid var(--color-line-strong); border-radius:var(--radius);
  background:var(--color-surface); color:var(--color-ink);
}
.pm-fmt__opt:hover{ border-color:var(--color-brand); }
.pm-fmt__opttag{ font-size:var(--fs-label); font-weight:600; letter-spacing:.14em; text-transform:uppercase; color:var(--color-ink-muted); }
.pm-fmt__optlabel{ font-size:var(--fs-body); font-weight:500; line-height:1.35; }
.pm-fmt__radio:checked + .pm-fmt__opt{ background:var(--color-brand); border-color:var(--color-brand); color:var(--color-on-night); }
.pm-fmt__radio:checked + .pm-fmt__opt .pm-fmt__opttag{ color:var(--color-on-night); }
/* F-2 — วงอยู่นอกการ์ด (บนพื้น paper) จึงเห็นทั้งตอนเลือกและไม่เลือก */
.pm-fmt__radio:focus-visible + .pm-fmt__opt{ outline:2px solid var(--color-brand-ink); outline-offset:3px; }

.pm-fmt__panel{
  display:none; grid-column:2; grid-row:1 / -1; align-self:start;
  border:1px solid var(--color-brand); border-radius:var(--radius); background:var(--color-surface); padding:32px;
}
.pm-fmt__radio:checked + .pm-fmt__opt + .pm-fmt__panel{ display:block; }
.pm-fmt__pickname{ font-size:var(--fs-d4); line-height:1.08; color:var(--color-brand); margin:0 0 12px; }
.pm-fmt__pickwhy{ max-width:58ch; margin:0 0 20px; color:var(--color-ink-body); }
.pm-fmt__pickdl{ margin:0; display:flex; flex-direction:column; gap:12px; border-top:1px solid var(--color-line); padding-top:18px; }
.pm-fmt__pickdl .pm-fmt__label{ margin-bottom:5px; }
.pm-fmt__pickdl dd,.pm-fmt__pair dd{ margin:0; color:var(--color-ink-muted); }
.pm-fmt__pickactions{ margin-top:22px; }
.pm-fmt__alt{ display:inline-flex; align-items:center; min-height:44px; margin-top:6px; font-size:var(--fs-small); }

/* ---- เนื้อหาหลัก ---- */
.pm-fmt__article{ min-width:0; max-width:760px; font-size:var(--fs-body-long); line-height:1.78; color:var(--color-ink-body); }
.pm-fmt__article > p{ margin:0 0 var(--s3); }
.pm-fmt__article > .pm-fmt__h2{ margin-top:var(--s5); }
.pm-fmt__article > .pm-fmt__h2:first-child{ margin-top:0; }

.pm-fmt__cards{ list-style:none; margin:0 0 var(--s4); padding:0; display:flex; flex-direction:column; gap:16px; }
.pm-card.pm-fmt__card{ padding:26px; }
.pm-fmt__cardhead{ display:flex; align-items:baseline; justify-content:space-between; gap:6px 14px; flex-wrap:wrap; }
.pm-fmt__tier{ margin:0; color:var(--color-brand-ink); }
.pm-fmt__cardbody{ margin:12px 0 16px; font-size:var(--fs-body); line-height:1.7; }
.pm-fmt__pair{ margin:0; display:grid; grid-template-columns:1fr 1fr; gap:16px; border-top:1px solid var(--color-line); padding-top:16px; }
.pm-fmt__pair .pm-fmt__label{ margin-bottom:5px; }

.pm-fmt__table{ width:100%; border-collapse:separate; border-spacing:0; margin:0 0 var(--s4);
  background:var(--color-surface); border:1px solid var(--color-line); border-radius:var(--radius); }
.pm-fmt__table th,.pm-fmt__table td{ padding:18px 22px; text-align:left; vertical-align:baseline; }
.pm-fmt__table tbody tr + tr > *{ border-top:1px solid var(--color-line); }
.pm-fmt__table th{ font-weight:400; font-size:var(--fs-body); color:var(--color-ink); }
.pm-fmt__table td{ width:300px; font-size:var(--fs-small); font-weight:600; color:var(--color-brand-ink); }

.pm-fmt__rules{ list-style:none; margin:0 0 var(--s3); padding:0; }
.pm-fmt__rule{ display:grid; grid-template-columns:56px minmax(0,1fr); gap:18px; padding:20px 0; border-top:1px solid var(--color-line); }
.pm-fmt__rulen{ font-family:var(--font-display); font-size:var(--fs-d4); line-height:1; color:var(--color-brand-ink); }
.pm-fmt__ruletitle{ font-family:var(--font-body); font-size:var(--fs-body-long); font-weight:600; line-height:1.4; color:var(--color-ink); margin:0 0 6px; }
.pm-fmt__rulebody{ margin:0; font-size:var(--fs-body); color:var(--color-ink-muted); }

.pm-fmt__takeaways{ list-style:none; margin:0 0 var(--s4); padding:0; display:flex; flex-direction:column; gap:14px; }
.pm-fmt__takeaways li{ position:relative; padding-left:36px; }
.pm-fmt__takeaways li::before{ content:""; position:absolute; left:0; top:.65em; width:8px; height:8px; border-radius:50%; background:var(--color-brand); }

.pm-fmt__faq{ margin:0 0 var(--s4); }
.pm-fmt__faq .pm-why__q{ font-size:var(--fs-body-long); padding:18px 24px; }
.pm-fmt__faq .pm-why__a{ padding:0 24px 20px; }

.pm-fmt__refs{ border-top:1px solid var(--color-line); padding-top:26px; }
.pm-fmt__reflist{ margin:0; padding-left:20px; font-size:var(--fs-small); line-height:1.7; color:var(--color-ink-muted); }
.pm-fmt__reflist li{ margin-bottom:8px; }
.pm-fmt__disclaimer{ margin:26px 0 0; padding:16px 18px; font-size:var(--fs-meta); line-height:1.65; color:var(--color-ink-muted);
  border:1px solid var(--color-line); border-radius:var(--radius); }

/* ---- แถบข้าง ---- */
.pm-fmt__aside{ position:sticky; top:92px; display:flex; flex-direction:column; gap:22px; }
.pm-card.pm-fmt__toc,.pm-card.pm-fmt__also{ padding:20px; }
.pm-fmt__toclist,.pm-fmt__alsolist{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; }
/* F-3 (05: ระยะห่างเป้ากด ≥ 8px) — เดิมลิงก์สารบัญติดกัน 0px · แก้ 25 ก.ย. 2026 ตอนขึ้น staging (หนี้จากรายงาน Discover §0) */
.pm-fmt__toclist{ gap:8px; }
.pm-fmt__toclist a{ display:flex; align-items:center; min-height:44px; padding:0 0 0 12px;
  border-left:2px solid var(--color-line); font-size:var(--fs-small); line-height:1.35; color:var(--color-ink-muted); }
.pm-fmt__toclist a:hover{ border-left-color:var(--color-brand); color:var(--color-brand-ink); }
.pm-fmt__alsolist a{ display:flex; align-items:center; gap:6px; min-height:44px; font-size:var(--fs-small); line-height:1.45; }

/* ---- CTA ---- */
.pm-fmt__cta{
  background:var(--color-brand); color:var(--color-on-night); border-radius:var(--radius);
  padding:52px; display:flex; justify-content:space-between; align-items:center; gap:36px; flex-wrap:wrap;
}
.pm-fmt__ctatitle{ font-size:var(--fs-d3); line-height:1.05; max-width:540px; margin:0 0 12px; color:var(--color-on-night); }
.pm-fmt__cta .pm-text-body{ max-width:460px; margin:0; color:var(--color-on-night); }

@media(max-width:1024px){
  .pm-fmt__split{ grid-template-columns:minmax(0,1fr); gap:var(--s5); }
  .pm-fmt__aside{ position:static; }
  .pm-fmt__pgrid{ grid-template-columns:minmax(0,1fr); grid-template-rows:none; }
  .pm-fmt__panel{ grid-column:1; grid-row:auto; margin-bottom:8px; }
}
@media(max-width:680px){
  .pm-fmt__h1{ font-size:var(--fs-d3); }
  .pm-fmt__panel{ padding:var(--s3); }
  .pm-fmt__pickname{ font-size:var(--fs-d5); }
  .pm-fmt__pair{ grid-template-columns:minmax(0,1fr); }
  .pm-fmt__table,.pm-fmt__table tbody,.pm-fmt__table tr,.pm-fmt__table th,.pm-fmt__table td{ display:block; width:auto; }
  .pm-fmt__table th{ padding-bottom:4px; }
  .pm-fmt__table td{ padding-top:0; }
  .pm-fmt__table tbody tr + tr > td{ border-top:0; }
  .pm-fmt__cta{ padding:var(--s5) var(--s3); }
  .pm-fmt__ctatitle{ font-size:var(--fs-d4); }
}

/* ---- แก้ 9 ต.ค. 2026 — เนื้อหาใหม่จาก docx (รายงาน docs/report-format-content-2026-10-09.md) · token ล้วน (B-1) ----
   hero มีแถวปุ่ม · กล่อง Quick answer คอลัมน์เดียว · ตารางเทียบ 7 รูปแบบ (.pm-fmt__ctable) ราคา/ปุ่มจาก card-buy.php ผัง inline */
.pm-fmt__heroactions{ margin-top:var(--s4); }
.pm-fmt__split--solo{ grid-template-columns:minmax(0,1fr); }
.pm-fmt__split--solo .pm-fmt__quick{ max-width:820px; }
.pm-fmt__ctable{ width:100%; border-collapse:separate; border-spacing:0;
  background:var(--color-surface); border:1px solid var(--color-line); border-radius:var(--radius); }
.pm-fmt__ctable th,.pm-fmt__ctable td{ padding:18px 20px; text-align:left; vertical-align:top; font-size:var(--fs-small); line-height:1.55; color:var(--color-ink-body); }
/* แก้ 9 ต.ค. 2026 — ธีมแม่ใส่ border บน/ซ้ายให้ทุก th/td (#e7e7e7 · เห็นเป็นเส้นแนวตั้ง + เส้นแถวขาด ๆ บน staging) → ล้างแล้วใช้เส้นของเราเอง · ตาราง Make it easy (.pm-fmt__table) โดนเหมือนกันตั้งแต่ 25 ก.ย. */
.pm-fmt__ctable th,.pm-fmt__ctable td,.pm-fmt__table th,.pm-fmt__table td{ border:0; }
.pm-fmt__ctable thead th{ font-size:var(--fs-label); font-weight:600; letter-spacing:.14em; text-transform:uppercase; color:var(--color-ink-muted); border-bottom:1px solid var(--color-line); }
.pm-fmt__ctable tbody tr + tr > *{ border-top:1px solid var(--color-line); }
.pm-fmt__ctable tbody th.pm-fmt__cname{ font-family:var(--font-display); font-size:var(--fs-d5b); font-weight:400; line-height:1.15; color:var(--color-brand); }
.pm-fmt__cname a{ color:inherit; display:inline-flex; align-items:center; min-height:44px; margin-top:-12px; }
/* แก้ 9 ต.ค. 2026 — ลิงก์ในตารางไม่มีเส้นใต้ (แบบ .pm-card--link a) · hover เปลี่ยนสี · แถวย่อย Nano */
.pm-fmt__ctable a:not(.pm-btn){ text-decoration:none; border-bottom:0; }
.pm-fmt__ctable a:not(.pm-btn):hover{ color:var(--color-brand-ink); }
.pm-fmt__csize a{ display:inline-flex; align-items:center; min-height:44px; margin-top:-12px; color:var(--color-ink); font-weight:600; }
.pm-fmt__ctable tbody tr.pm-fmt__csubrow > *{ border-top:1px dashed var(--color-line); }
.pm-fmt__csize{ white-space:nowrap; }
.pm-fmt__cbuy{ width:280px; }
.pm-fmt__cbuy .pm-btn,.pm-fmt__cbuy .pm-prodcard__price{ white-space:nowrap; }
.pm-fmt__cbuy .pm-prodcard__foot{ margin-top:0; padding-top:0; border-top:0; flex-wrap:wrap; row-gap:var(--s2); }
.pm-fmt__cview .pm-btn{ margin-left:auto; }
.pm-fmt__cbuy .pm-fmt__cview{ flex-wrap:nowrap; } /* "From $36.00" + View product อยู่บรรทัดเดียว */
/* ขนาดเดียว (Nano 40 ml / 40 g) → ซ่อนตัวเลือกขนาด · radio ที่ checked ยังส่งไปกับฟอร์ม · หลายขนาด = แสดงตามปกติ */
.pm-fmt__cbuy .pm-sizes:has(.pm-sizes__list > .pm-size:only-of-type){ display:none; }
.pm-fmt__cardbody--last{ margin-bottom:0; }
.pm-fmt__links{ margin:0 0 var(--s3); }
.pm-fmt__subh{ margin:0 0 var(--s2); }
@media(max-width:1024px){
  .pm-fmt__ctable thead{ position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); }
  .pm-fmt__ctable,.pm-fmt__ctable tbody,.pm-fmt__ctable tr,.pm-fmt__ctable th,.pm-fmt__ctable td{ display:block; width:auto; }
  .pm-fmt__ctable tbody tr{ padding:var(--s2) 0; }
  .pm-fmt__ctable tbody tr + tr > *{ border-top:0; }
  .pm-fmt__ctable tbody tr + tr{ border-top:1px solid var(--color-line); }
  .pm-fmt__ctable tbody tr.pm-fmt__csubrow{ border-top:1px dashed var(--color-line); padding-top:var(--s1); }
  .pm-fmt__ctable tbody tr.pm-fmt__csubrow > *{ border-top:0; }
  .pm-fmt__ctable th,.pm-fmt__ctable td{ padding:6px 20px; }
  .pm-fmt__ctable td[data-label]::before{ content:attr(data-label); display:block; font-size:var(--fs-label); font-weight:600; letter-spacing:.14em; text-transform:uppercase; color:var(--color-ink-muted); }
  .pm-fmt__cbuy{ padding-top:var(--s2) !important; }
}

/* ============================================================
   หน้า Discover — "The complete guide to Pueraria Mirifica" (pillar) — เพิ่ม 25 ก.ย. 2026 · ในเครื่องเท่านั้น
   template-discover-case-a.php · template-parts/discover/*.php · รายงาน docs/report-discover-2026-09-25.md
   ที่มา: `Case A - Discover.dc.html`
   ♻️ ใช้คลาสโครงของหน้า Choose Format ซ้ำ (บล็อกข้างบน): pm-fmt__hero · __crumb · __intro · __kicker · __h1 · __deck ·
      __meta · __sec · __split · __h2 · __head · __lead · __anchor · __label · __quick · __article · __takeaways ·
      __faq · __refs · __disclaimer · __aside · __toc · และ FAQ .pm-why__* ของหน้า Why
      → **แก้บล็อก Choose Format = กระทบหน้านี้ด้วย** · <main> ใช้ .pm-dsc (ไม่ใส่ .pm-fmt)
   🔴 B-1 — ไม่มี hex ในบล็อกนี้ · สีแดงของแถว "Not supported" ไม่ใช้ (หนี้ 28) · สี hover ของ artboard = --color-brand-ink
   🔴 B-4 — ป้าย 10.5–11.5px IBM Plex Mono → .pm-eyebrow / --fs-label (12.5) · ป้าย lavender (accent2) → brand-ink / ink-muted
   🔴 B-3 — กล่อง CTA olive ในแถบข้าง: cream 75% → --color-on-night ทึบ (5.20)
   🔴 กล่องเตือน = หน้าตาเดียวกับ .pm-prose .pm-note--warn (design.md §7.5) แต่คลาสของตัวเอง เพราะหน้านี้ไม่มี .pm-prose
   ============================================================ */
/* ---- Entity card ---- */
.pm-card.pm-dsc__entity{ padding:var(--s3); }
.pm-dsc__facts{ margin:0; display:flex; flex-direction:column; gap:14px; }
.pm-dsc__facts .pm-fmt__label{ margin-bottom:5px; }
.pm-dsc__facts dd{ margin:0; font-size:var(--fs-small); line-height:1.45; color:var(--color-ink); }

/* ---- Start where you are ---- */
.pm-dsc__rulehead{ display:flex; align-items:baseline; gap:12px; margin-bottom:var(--s3); }
.pm-dsc__rulehead .pm-fmt__label{ margin:0; }
.pm-dsc__rule{ flex:1; height:1px; background:var(--color-line); }
.pm-dsc__paths{ list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:20px; }
.pm-dsc__paths > li{ display:flex; }
.pm-dsc__path{
  flex:1; display:flex; flex-direction:column; gap:10px; padding:26px;
  background:var(--color-surface); border:1px solid var(--color-line); border-radius:var(--radius);
  color:var(--color-ink); text-decoration:none;
}
.pm-dsc__path .pm-fmt__label{ margin:0; }
.pm-dsc__path:hover{ border-color:var(--color-brand); }
.pm-dsc__path:focus-visible,.pm-dsc__piece:focus-visible{ outline:2px solid var(--color-brand-ink); outline-offset:3px; }
.pm-dsc__pathtitle{ font-family:var(--font-display); font-size:var(--fs-d5); line-height:1.1; color:var(--color-brand); }
.pm-dsc__pathnote{ font-size:var(--fs-small); line-height:1.55; color:var(--color-ink-muted); }
.pm-dsc__pathcta{ margin-top:auto; padding-top:4px; font-size:var(--fs-meta); font-weight:600; color:var(--color-brand-ink); }

/* ---- Five pieces (cluster) ---- */
.pm-dsc__cluster{ list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:20px; }
.pm-dsc__cluster > li{ display:flex; }
.pm-dsc__piece{
  flex:1; display:flex; flex-direction:column; padding:28px;
  background:var(--color-surface); border:1px solid var(--color-line); border-radius:var(--radius);
  color:var(--color-ink); text-decoration:none;
}
a.pm-dsc__piece:hover{ border-color:var(--color-brand); }
.pm-dsc__piece.is-here{ background:var(--color-accent-field); border-color:var(--color-brand); }
.pm-dsc__piecehead{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.pm-dsc__badge{
  font-size:var(--fs-label); font-weight:600; letter-spacing:.12em; text-transform:uppercase; line-height:1.2;
  padding:5px 9px; border-radius:var(--radius); border:1px solid var(--color-brand-ink); color:var(--color-brand-ink);
}
.pm-dsc__badge--landing{ background:var(--color-brand); border-color:var(--color-brand); color:var(--color-on-night); }
.pm-dsc__group{ font-size:var(--fs-label); letter-spacing:.1em; text-transform:uppercase; color:var(--color-ink-muted); }
.pm-dsc__piecetitle{ display:block; margin-top:14px; font-family:var(--font-display); font-size:var(--fs-d5); line-height:1.12; color:var(--color-brand); }
.pm-dsc__pieceblurb{ display:block; margin-top:10px; font-size:var(--fs-small); line-height:1.6; color:var(--color-ink-muted); }
.pm-dsc__slug{ display:block; margin-top:auto; padding-top:14px; border-top:1px solid var(--color-line);
  font-size:var(--fs-meta); color:var(--color-ink-muted); overflow-wrap:anywhere; }
.pm-dsc__pieceblurb + .pm-dsc__slug{ margin-top:16px; }

/* ---- เนื้อหา: การ์ดเทียบ 3 ใบ ---- */
.pm-dsc__cmphead{ margin:var(--s4) 0 12px; }
.pm-dsc__cmp{ list-style:none; margin:0 0 var(--s4); padding:0; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px; }
.pm-card.pm-dsc__cmpcard{ padding:18px; }
.pm-dsc__cmpname{ font-family:var(--font-display); font-weight:400; font-size:var(--fs-d6); line-height:1.2; color:var(--color-brand); margin:0 0 7px; }
.pm-dsc__cmpcard .pm-text-small{ margin:0; color:var(--color-ink-muted); }

/* ---- เนื้อหา: แถวหลักฐาน ---- */
.pm-dsc__research{ margin:0 0 var(--s4); background:var(--color-surface); border:1px solid var(--color-line); border-radius:var(--radius); }
.pm-dsc__row{ display:grid; grid-template-columns:220px minmax(0,1fr); gap:24px; align-items:start; padding:20px 22px; }
.pm-dsc__row + .pm-dsc__row{ border-top:1px solid var(--color-line); }
.pm-dsc__row dt{ margin:0; }
.pm-dsc__topic{ display:block; font-size:var(--fs-body); font-weight:600; line-height:1.4; color:var(--color-ink); }
.pm-dsc__strength{ display:block; margin-top:6px; font-size:var(--fs-label); font-weight:600; letter-spacing:.08em; text-transform:uppercase; line-height:1.3; color:var(--color-brand-ink); }
.pm-dsc__row dd{ margin:0; font-size:var(--fs-body); line-height:1.7; color:var(--color-ink-muted); }

/* ---- เนื้อหา: กล่องเตือน ---- */
.pm-dsc__caution{
  position:relative; margin:0 0 var(--s4); padding:var(--s3) var(--s3) var(--s3) calc(var(--s3) + var(--s4));
  background:var(--color-surface); border:1px solid var(--color-line-strong); border-left:4px solid var(--color-ink); border-radius:var(--radius);
}
.pm-dsc__caution::before{
  content:""; position:absolute; left:var(--s3); top:calc(var(--s3) + 2px); width:20px; height:20px;
  background:var(--color-ink);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3 2 21h20L12 3Z'/%3E%3Cpath d='M12 10v5M12 18h.01'/%3E%3C/svg%3E") center/contain no-repeat;
          mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3 2 21h20L12 3Z'/%3E%3Cpath d='M12 10v5M12 18h.01'/%3E%3C/svg%3E") center/contain no-repeat;
}
.pm-dsc__cautionhead{ margin:0 0 8px; font-family:var(--font-body); font-size:var(--fs-h5); font-weight:600; line-height:1.4; color:var(--color-ink); }
.pm-dsc__caution p{ margin:0; font-size:var(--fs-small); line-height:1.65; color:var(--color-ink-body); }
.pm-dsc__caution a{ color:var(--color-brand-ink); }

/* ---- แถบข้าง ---- */
/* F-3 (05: ระยะห่างเป้ากด ≥ 8px) — .pm-fmt__toclist ของหน้า Format ติดกัน 0px · แก้เฉพาะหน้านี้ ไม่แตะบล็อก Format (หนี้ของ Format ในรายงาน §0) */
.pm-dsc .pm-fmt__toclist{ gap:8px; }
.pm-dsc__next{ background:var(--color-brand); color:var(--color-on-night); border-radius:var(--radius); padding:24px; }
.pm-dsc__nexttitle{ font-size:var(--fs-d5b); line-height:1.12; margin:0 0 8px; color:var(--color-on-night); }
.pm-dsc__next .pm-text-small{ margin:0 0 16px; color:var(--color-on-night); }
.pm-card.pm-dsc__aka{ padding:20px; }
.pm-dsc__aka .pm-text-small{ margin:0; color:var(--color-ink-muted); }

/* ---- CTA ท้ายหน้า ---- */
.pm-dsc__cta{
  background:var(--color-accent-field); border-radius:var(--radius); padding:52px;
  display:flex; justify-content:space-between; align-items:center; gap:36px; flex-wrap:wrap;
}
.pm-dsc__ctatitle{ font-size:var(--fs-d3); line-height:1.05; max-width:560px; margin:0 0 12px; color:var(--color-ink); }
.pm-dsc__cta .pm-text-body{ max-width:480px; margin:0; color:var(--color-ink-muted); }

@media(max-width:1024px){
  .pm-dsc__paths,.pm-dsc__cluster,.pm-dsc__cmp{ grid-template-columns:minmax(0,1fr); }
}
@media(max-width:680px){
  .pm-dsc__row{ grid-template-columns:minmax(0,1fr); gap:8px; }
  .pm-dsc__path,.pm-dsc__piece{ padding:var(--s3); }
  .pm-dsc__cta{ padding:var(--s5) var(--s3); }
  .pm-dsc__ctatitle{ font-size:var(--fs-d4); }
}

/* ---- ภาพ 3 ช่อง (เพิ่ม 25 ก.ย. 2026 · คำสั่ง "อยากให้มีการเพิ่มรูปเข้าไปด้วย") ----
   hero = ข้อความซ้าย + ภาพ 4:5 ขวา · ⛔ ไม่ใช้ .pm-media--hero (--radius-hero สงวนให้ hero หน้า Home · §8.3)
   ภาพในเนื้อหา = .pm-media--article (16:10) ทั้งสองใบ (B-7: อัตราส่วนเท่ากัน) */
.pm-dsc__hero{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,400px); gap:var(--s6); align-items:center; }
.pm-dsc__herofig{ margin:0; }
.pm-dsc__media--tall{ aspect-ratio:var(--ratio-hero); }
.pm-dsc__fig{ margin:var(--s4) 0; }
.pm-dsc__cap{ margin-top:var(--s1); }
@media(max-width:1024px){
  .pm-dsc__hero{ grid-template-columns:minmax(0,1fr); gap:var(--s4); }
  .pm-dsc__herofig{ max-width:480px; }
}

/* ============================================================
   หน้าชุดรายชุด — Starter Ritual (Case A · Ritual Sets) — เพิ่ม 26 ก.ย. 2026
   template-starter-ritual-case-a.php · template-parts/set-page/*.php · inc/set-page-content.php
   รายงาน docs/report-starter-ritual-2026-09-26.md · ที่มา: `Case A - Starter Ritual.dc.html`
   🔴 B-1 — ไม่มี hex ในบล็อกนี้ · ทุกค่ามาจาก pm-tokens.css
   🔴 B-3 — พื้น --color-brand (กล่อง Why choose it · แถบ CTA) ใช้ --color-on-night ทึบสีเดียว (5.20)
      ไฟล์ออกแบบใช้ opacity .8 + lavender บน olive → ไม่ลอก
   🔴 B-4 — ไฟล์ออกแบบมี 11 / 11.5 / 12 / 12.5 px → ขั้นต่ำ --fs-label · H1 64px → --fs-d2
   ♻️ ใช้ของหน้า Why ซ้ำ: FAQ (.pm-why__faq …) · การ์ดบรีฟ (.pm-why__slot / __brief …)
      → ตอนขึ้น staging ต้องอัป pm-layout.css ตัวที่มีบล็อก Why ด้วย
   ============================================================ */
.pm-sp__hero{ padding-top:var(--s6); }
.pm-sp__crumb{ margin-bottom:var(--s3); }
.pm-sp__split--hero{ grid-template-columns:1.05fr .95fr; }
.pm-sp__split--why{ grid-template-columns:1fr 1fr; align-items:end; }
.pm-sp__split--media{ grid-template-columns:.9fr 1.1fr; align-items:start; }
.pm-sp__split--how{ grid-template-columns:.8fr 1.2fr; align-items:start; margin-top:var(--s5); }
.pm-sp__level,
.pm-sp__kicker{ margin:0 0 var(--s2); font-size:var(--fs-label); font-weight:600; letter-spacing:.14em; text-transform:uppercase; color:var(--color-ink-muted); }
.pm-sp__h1{ font-size:var(--fs-d2); line-height:1.0; color:var(--color-brand); margin:0 0 var(--s3); }
.pm-sp .pm-sp__deck{ max-width:520px; margin:0 0 var(--s4); color:var(--color-ink-muted); }
.pm-sp__h2{ color:var(--color-brand); margin:0 0 var(--s4); }
.pm-sp__h2--flush{ margin:0; }
.pm-sp__h3{ font-size:var(--fs-d5b); line-height:1.15; color:var(--color-brand); margin:0 0 6px; }
.pm-sp .pm-sp__lead{ margin:0; color:var(--color-ink-muted); }
.pm-sp__fig{ margin:0; }
.pm-sp__media--tall{ aspect-ratio:var(--ratio-hero); }
.pm-sp__media--square{ aspect-ratio:var(--ratio-product); }
.pm-sp__media--wide{ aspect-ratio:var(--ratio-article); }

.pm-sp__sec{ padding-top:var(--s7); }
.pm-sp__sec--last{ padding-bottom:var(--s7); }

/* ---- ราคา + ปุ่ม ---- */
.pm-sp__buy{ max-width:520px; display:flex; flex-direction:column; gap:12px; }
.pm-sp__price{ margin:0; display:flex; align-items:baseline; gap:12px; flex-wrap:wrap; }
.pm-sp__now{ font-family:var(--font-display); font-size:var(--fs-d3); line-height:1; }
.pm-sp__was,.pm-sp__sep{ margin:0; font-size:var(--fs-small); color:var(--color-ink-muted); }
.pm-sp__sep b{ font-weight:600; color:var(--color-ink); }
.pm-sp__save{ font-size:var(--fs-label); font-weight:600; letter-spacing:.08em; text-transform:uppercase; color:var(--color-brand-ink); }
.pm-sp__pending{
  margin:0; padding:10px 12px; border:1px dashed var(--color-line-strong); border-radius:var(--radius);
  font-size:var(--fs-meta); color:var(--color-ink-muted);
}
.pm-sp__btn{ width:100%; justify-content:center; }
.pm-sp__proof{ list-style:none; margin:0; padding:0; display:flex; flex-wrap:wrap; gap:8px 22px; color:var(--color-ink-muted); }
.pm-sp__proof a{ font-weight:600; color:var(--color-brand-ink); }
/* F-3 — ลิงก์ในบรรทัดเล็ก ๆ สูงอย่างน้อย 44px */
.pm-sp__proof a,.pm-sp__trustcell a{ display:inline-flex; align-items:center; min-height:44px; }
.pm-sp__trustcell{ padding-block:12px; }

/* ---- แถบความน่าเชื่อถือ ---- */
.pm-sp__trust{ margin:var(--s6) 0 0; display:grid; grid-template-columns:repeat(4,minmax(0,1fr));
  border-top:1px solid var(--color-line); border-bottom:1px solid var(--color-line); }
.pm-sp__trustcell{ padding:20px 20px 20px 0; }
.pm-sp__trustcell dt{ font-size:var(--fs-label); font-weight:600; letter-spacing:.08em; text-transform:uppercase; color:var(--color-ink-muted); }
.pm-sp__trustcell dd{ margin:4px 0 0; font-size:var(--fs-body); font-weight:500; color:var(--color-ink); }
.pm-sp__trustcell a{ color:var(--color-brand-ink); }

/* ---- Why this set ---- */
.pm-sp__quote{ margin:0; border-top:1px solid var(--color-line); padding-top:var(--s3); }
.pm-sp__quote blockquote{ margin:0 0 14px; padding:0; border:0; }
.pm-sp__quote blockquote p{ margin:0; font-family:var(--font-display); font-size:var(--fs-d5); line-height:1.2; color:var(--color-ink); }
.pm-sp__quote figcaption{ color:var(--color-ink-muted); }

/* ---- What's inside ---- */
.pm-sp__items{ list-style:none; margin:0; padding:0; gap:20px; }
.pm-card.pm-sp__item{ padding:0; overflow:hidden; display:flex; flex-direction:column; position:relative; }
.pm-sp__item .pm-media{ border-radius:0; }
.pm-sp__itembody{ padding:26px; display:flex; flex-direction:column; gap:12px; flex:1; }
.pm-sp__itemhead{ margin:0; display:flex; justify-content:space-between; gap:12px; align-items:baseline; }
.pm-sp__role{ font-size:var(--fs-label); font-weight:600; letter-spacing:.08em; text-transform:uppercase; color:var(--color-ink-muted); }
.pm-sp__itemprice{ font-size:var(--fs-small); color:var(--color-ink-muted); }
.pm-sp__itemname{ font-size:var(--fs-d5b); line-height:1.1; margin:0; }
.pm-sp__itemname a{ color:var(--color-brand); border-bottom:0; text-decoration:none; }
.pm-sp__itemname a:hover{ color:var(--color-brand-ink); text-decoration:underline; }
/* F-3 — ชื่อสินค้าเป็น stretched link คลุมการ์ดทั้งใบ */
.pm-sp__itemname a::after{ content:""; position:absolute; inset:0; }
.pm-sp__itemname a:focus-visible{ outline:0; }
.pm-card.pm-sp__item:focus-within{ outline:2px solid var(--color-brand-ink); outline-offset:2px; }
.pm-sp .pm-sp__itemdesc{ margin:0; color:var(--color-ink-muted); }
.pm-sp__spec{ margin:auto 0 0; padding-top:12px; border-top:1px solid var(--color-line); display:flex; flex-direction:column; gap:6px; }
.pm-sp__spec > div{ display:grid; grid-template-columns:64px minmax(0,1fr); gap:14px; font-size:var(--fs-meta); }
.pm-sp__spec dt{ color:var(--color-ink-muted); font-weight:600; }
.pm-sp__spec dd{ margin:0; color:var(--color-ink); }

.pm-sp__sum{
  margin:20px 0 0 auto; max-width:520px; background:var(--color-surface); border:1px solid var(--color-line);
  border-radius:var(--radius); padding:24px 28px; display:flex; flex-direction:column; gap:8px;
}
.pm-sp__sumrow{ margin:0; display:flex; justify-content:space-between; align-items:baseline; gap:16px; font-size:var(--fs-small); color:var(--color-ink-muted); }
.pm-sp__sumrow--line{ border-top:1px solid var(--color-line); padding-top:8px; }
.pm-sp__sumrow--line b{ font-weight:600; color:var(--color-ink); }
.pm-sp__sumrow--total b{ font-size:var(--fs-body); color:var(--color-ink); }
.pm-sp__sumnow{ font-family:var(--font-display); font-size:var(--fs-d4b); color:var(--color-ink); }
.pm-sp__sumpending{ font-size:var(--fs-meta); color:var(--color-ink-muted); }

/* ---- Benefits ---- */
.pm-sp__steps{ list-style:none; margin:0; padding:0; }
.pm-sp__step{ display:grid; grid-template-columns:44px minmax(0,1fr); gap:16px; border-top:1px solid var(--color-line); padding:20px 0; }
.pm-sp__step .pm-text-small{ margin:0; color:var(--color-ink-muted); }
.pm-sp__stepn{ font-family:var(--font-display); font-size:var(--fs-d5b); line-height:1; color:var(--color-brand-ink); }
.pm-sp__fine{ margin:0; padding-top:14px; border-top:1px solid var(--color-line); color:var(--color-ink-muted); }

/* ---- How to use ---- */
.pm-sp__rows{ margin:0; }
.pm-sp__row{ display:grid; grid-template-columns:200px minmax(0,1fr); gap:20px; border-top:1px solid var(--color-line); padding:18px 0; }
.pm-sp__row dt{ font-family:var(--font-display); font-size:var(--fs-d6); line-height:1.3; color:var(--color-brand); }
.pm-sp__row dd{ margin:0; font-size:var(--fs-body); color:var(--color-ink); align-self:center; }

/* ---- Checkpoints ---- */
.pm-sp__checks{ list-style:none; margin:0; padding:0; gap:18px; }
.pm-sp__check{ border-top:2px solid var(--color-brand); padding-top:14px; }
.pm-sp__checkn{ display:block; font-family:var(--font-display); font-size:var(--fs-d5b); color:var(--color-brand); }
.pm-sp__check .pm-text-small{ margin:4px 0 0; color:var(--color-ink-muted); }

/* ---- Who it's for · Pros ---- */
.pm-sp__pair{ gap:20px; }
.pm-sp__box{ border:1px solid var(--color-line); border-radius:var(--radius); padding:32px; }
.pm-sp__box--surface{ background:var(--color-surface); }
.pm-sp__box--brand{ background:var(--color-brand); border-color:var(--color-shade-deep); color:var(--color-on-night); }
.pm-sp__boxhead{ margin:0 0 14px; font-family:var(--font-body); font-size:var(--fs-label); font-weight:600; letter-spacing:.2em; text-transform:uppercase; color:var(--color-brand-ink); }
.pm-sp__boxhead--muted{ color:var(--color-ink-muted); }
.pm-sp__list{ list-style:none; margin:0; padding:0; }
.pm-sp__list li{ display:flex; gap:14px; align-items:flex-start; border-top:1px solid var(--color-line); padding:12px 0; font-size:var(--fs-body); color:var(--color-ink); }
.pm-sp__list svg{ flex:none; width:18px; height:18px; margin-top:4px; color:var(--color-brand-ink); }
.pm-sp__list--no li,.pm-sp__list--minus li{ color:var(--color-ink-muted); }
/* เครื่องหมาย — / + / – เป็น CSS ไม่ใช่ตัวอักษรใน HTML (B-8 · สกรีนรีดเดอร์ไม่อ่าน) */
.pm-sp__list--no li::before,.pm-sp__list--plus li::before,.pm-sp__list--minus li::before{
  content:""; flex:none; width:12px; height:0; margin-top:13px; border-top:2px solid currentColor; }
.pm-sp__list--plus li::before{ width:12px; height:12px; margin-top:7px; border:0;
  background:linear-gradient(currentColor,currentColor) center/12px 2px no-repeat, linear-gradient(currentColor,currentColor) center/2px 12px no-repeat; }
.pm-sp__box--brand .pm-sp__boxhead,
.pm-sp__box--brand .pm-sp__list li{ color:var(--color-on-night); }
.pm-sp__box--brand .pm-sp__list li{ border-top-color:var(--color-line-night); }

/* ---- The other two sets ---- */
.pm-sp__rowhead{ display:flex; justify-content:space-between; align-items:flex-end; gap:24px; flex-wrap:wrap; margin-bottom:var(--s4); }
.pm-sp__rowhead .pm-link-cta svg,.pm-sp__otherview svg{ display:inline-block; width:16px; height:16px; vertical-align:-3px; }
.pm-sp__others{ list-style:none; margin:0; padding:0; gap:20px; }
.pm-card.pm-sp__other{ padding:28px; display:flex; flex-direction:column; gap:8px; position:relative; }
.pm-sp__other .pm-sp__level{ margin:0; }
.pm-sp .pm-sp__othername{ font-size:var(--fs-d5); line-height:1.1; margin:0; }
.pm-sp .pm-sp__othername a{ color:var(--color-brand); border-bottom:0; text-decoration:none; }
/* F-3 — ชื่อชุดเป็น stretched link คลุมการ์ดทั้งใบ */
.pm-sp__othername a::after{ content:""; position:absolute; inset:0; }
.pm-sp__othername a:focus-visible{ outline:0; }
.pm-sp__other:focus-within{ outline:2px solid var(--color-brand-ink); outline-offset:2px; }
.pm-sp .pm-sp__othernote{ margin:0; color:var(--color-ink-muted); }
.pm-sp__othermeta{ margin:6px 0 0; color:var(--color-ink); }
.pm-sp__otherview{ font-weight:600; color:var(--color-brand-ink); }

/* ---- FAQ ---- */
.pm-sp__faqbox{ background:var(--color-surface); border:1px solid var(--color-line); border-radius:var(--radius); padding:var(--s5); }
.pm-sp .pm-sp__safety{ margin:var(--s3) 0 0; padding-top:var(--s3); border-top:1px solid var(--color-line); color:var(--color-ink-muted); }
.pm-sp__safetylink{ font-weight:600; color:var(--color-brand-ink); }
/* ธีมจริงวันนี้ FAQ ทั้ง 5 ข้อติด hold → กล่องเหลือหัวข้อ + บรรทัดเตือน · ตัดเส้นคั่นที่ไม่มีอะไรให้คั่น */
.pm-sp .pm-sp__h2 + .pm-sp__safety{ margin-top:0; padding-top:0; border-top:0; }

/* ---- CTA ---- */
.pm-sp__cta{ display:grid; grid-template-columns:1fr 1fr; background:var(--color-brand); color:var(--color-on-night); border-radius:var(--radius); overflow:hidden; align-items:center; }
.pm-sp__ctabody{ padding:52px; display:flex; flex-direction:column; gap:18px; }
.pm-sp__ctatitle{ font-size:var(--fs-d3); line-height:1.05; margin:0; color:var(--color-on-night); }
.pm-sp__cta .pm-text-body{ margin:0; color:var(--color-on-night); }
.pm-sp__ctaactions{ flex-wrap:wrap; gap:14px; }
.pm-sp__ctaactions .pm-sp__btn{ width:auto; }
/* hover ของปุ่ม primary / ghost-night — แก้ที่ต้นทางใน pm-components.css แล้ว (26 ก.ย. 2026 รอบ Complete) · ไม่ต้อง override ที่นี่ */
.pm-sp__cta .pm-sp__fig{ padding:16px; }

/* ---- แถบ sticky มือถือ (render เฉพาะเมื่อมีราคาชุด) ---- */
.pm-sp__sticky{ display:none; }

@media(max-width:1024px){
  .pm-sp__split--hero,.pm-sp__split--why,.pm-sp__split--media,.pm-sp__split--how,.pm-sp__cta{ grid-template-columns:minmax(0,1fr); }
}
@media(max-width:900px){
  .pm-sp__trust,.pm-sp__checks.pm-grid--4,.pm-sp__items.pm-grid--3{ grid-template-columns:repeat(2,minmax(0,1fr)); }
  .pm-sp__sticky{
    display:flex; position:fixed; left:0; right:0; bottom:0; z-index:50; justify-content:space-between; align-items:center; gap:14px;
    background:var(--color-surface); border-top:1px solid var(--color-line); padding:12px 20px;
  }
  .pm-sp__stickyname{ margin:0; font-size:var(--fs-small); }
}
@media(max-width:680px){
  .pm-sp__h1{ font-size:var(--fs-d3); }
  .pm-sp__trust,.pm-sp__checks.pm-grid--4,.pm-sp__items.pm-grid--2,.pm-sp__items.pm-grid--3,.pm-sp__pair.pm-grid--2,.pm-sp__others.pm-grid--2{ grid-template-columns:minmax(0,1fr); }
  .pm-sp__row{ grid-template-columns:minmax(0,1fr); gap:4px; }
  .pm-sp__box,.pm-card.pm-sp__other{ padding:var(--s3); }
  .pm-sp__itembody{ padding:var(--s3); }
  .pm-sp__faqbox{ padding:var(--s3) 0 0; border:0; background:transparent; }
  .pm-sp__ctabody{ padding:var(--s4) var(--s3); }
  .pm-sp__ctatitle{ font-size:var(--fs-d4); }
}


/* ── ใส่สินค้า + ปุ่ม Add to cart (เพิ่ม 28 ก.ย. 2026 · คำสั่ง "ใส่สินค้าไปเลย พร้อมปุ่ม add to cart เลย") ──
   ภาพสินค้าจริงในการ์ด = ภาพแพ็กเกจชุดเก่า (เดินสวน P-2 โดยคำสั่ง · แบบ Ritual Sets / Home) · contain บนพื้น photo-bg ไม่ครอปขวด
   ปุ่มใส่ทั้งชุด = <form> ห่อปุ่มเดียว → ให้ฟอร์มยืดเต็มแถวเหมือนปุ่มเดิม · ลิงก์ WhatsApp เป็นทางรองสูง ≥ 44px (F-3) */
.pm-sp__shot img{ object-fit:contain; padding:var(--s3); }
.pm-sp__item .pm-buy{ margin-top:auto; padding-top:var(--s2); border-top:1px solid var(--color-line); }
.pm-sp__setbuy{ margin:0; display:flex; }
.pm-sp__ctaactions .pm-sp__setbuy{ display:inline-flex; }
.pm-sp__asklink{
  display:inline-flex; align-items:center; min-height:44px; align-self:flex-start;
  color:inherit; font-size:var(--fs-small); text-decoration:underline; text-underline-offset:3px;
}
.pm-sp__asklink:hover{ color:inherit; text-decoration-thickness:2px; }
/* แก้ 9 ต.ค. 2026 — แถวใต้ปุ่ม Add all (hero ของ 3 หน้าชุด): ลิงก์ WhatsApp ย้ายเข้ามาเป็น <li> แรก (pm_sp_ask_link)
   เดิม: ลิงก์ WhatsApp ลอยบรรทัดของตัวเอง ตัวใหญ่กว่า · "Free standard shipping" ชิดบน แต่ "What’s inside" (44px) อยู่กลาง → เหลื่อม 13px
   ตอนนี้: บรรทัดเดียว กึ่งกลางแนวตั้ง · ลิงก์ทั้งสองแบบเดียวกัน (ขนาด meta · ตัวหนา · สี brand-ink · ขีดเส้นใต้) */
.pm-sp__proof{ align-items:center; gap:4px 20px; }
.pm-sp__proof a{ text-decoration:underline; text-underline-offset:3px; text-decoration-thickness:1px; }
.pm-sp__proof a:hover{ color:var(--color-brand-ink); text-decoration-thickness:2px; }
.pm-sp__proof .pm-sp__asklink{ align-self:auto; font-size:inherit; }

/* ---- แก้ 9 ต.ค. 2026 — Starter Ritual เนื้อหาใหม่จาก docx (รายงาน docs/report-starter-content-2026-10-09.md) · token ล้วน (B-1) ----
   คลาสใหม่ทั้งหมด → Complete / Intensive ไม่ได้ใช้ (ไม่เปลี่ยน) */
.pm-sp__inbox{ margin:var(--s2) 0 0; color:var(--color-ink-muted); }
.pm-sp__inbox b{ color:var(--color-ink); font-weight:600; }
.pm-sp__trustline{ margin:var(--s6) 0 0; padding-top:var(--s3); border-top:1px solid var(--color-line); color:var(--color-ink-muted); }
.pm-sp__answer{ max-width:820px; margin:0; border-left:2px solid var(--color-brand); padding:2px 0 2px var(--s3);
  font-size:var(--fs-deck); line-height:1.6; color:var(--color-ink); }
.pm-sp .pm-sp__lead--stack + .pm-sp__lead--stack{ margin-top:var(--s2); }
.pm-sp__rowstep{ font-weight:600; margin-right:8px; }
.pm-sp__rowtip{ color:var(--color-ink-muted); }
.pm-sp .pm-sp__monthnote{ margin:var(--s3) 0 0; color:var(--color-ink-muted); }
.pm-sp__assure{ max-width:880px; }
.pm-sp__assure .pm-sp__list li:first-child{ border-top:0; padding-top:0; }
.pm-sp .pm-sp__assurenote{ margin:var(--s2) 0 0; color:var(--color-ink-muted); }
.pm-sp__assurelinks{ margin-top:var(--s3); }
/* แก้ 9 ต.ค. 2026 — ลูกศร SVG ไม่มีขนาด = ขยายเต็มพื้นที่ (เจ้าของงาน: "css พังปะ") → ขนาดเดียวกับลิงก์ Compare all three · ข้อความไม่ตัดบรรทัด */
.pm-sp__assurelinks .pm-link-cta{ white-space:nowrap; gap:6px; }
.pm-sp__assurelinks .pm-link-cta svg{ display:inline-block; flex:none; width:16px; height:16px; vertical-align:-3px; }
.pm-sp__items--plain .pm-buy .pm-prodcard__foot{ border-top:0; padding-top:0; }   /* การ์ดไม่มี spec → เส้นเดียว (.pm-buy) ไม่ซ้อนกับเส้นของแถวราคา */
@media(max-width:900px){
  .pm-sp:has(.pm-sp__sticky){ padding-bottom:88px; }   /* แถบติดล่างไม่บังท้ายหน้า */
}

/* ============================================================
   หน้า About Us (Case A) — เพิ่ม 24 ก.ย. 2026
   template-about-case-a.php · template-parts/about/*.php · รายงาน docs/report-about-us-2026-09-24.md
   ที่มา: `Case A - About Us.dc.html`
   🔴 B-1 — ไม่มี hex ในบล็อกนี้ · ทุกค่ามาจาก pm-tokens.css
   🔴 B-3 — บนพื้น --color-brand (timeline) ใช้ --color-on-night สีเดียว · artboard ใช้ cream 72% + ทอง → ตก ไม่ลอก
   ♻️ ใช้ของหน้า Why ซ้ำ: ขั้นตอน (.pm-why__chain / __step …) · ภาพ 4:5 (.pm-why__media--tall) · การ์ดบรีฟ (.pm-why__slot / __brief …)
   🔴 anchor ของเมนู (.pm-about__anchor) — scroll-margin-top กันหัว section มุดใต้ .pm-header (sticky 69px)
      ฐานเดียวกับ .pm-article [id] แต่หัก padding ของ section
   ============================================================ */
/* หัก padding-top ของ section (--s7) ออก → หัว section/ขอบการ์ดลงห่างใต้ header เท่า --s3 (วัดจริงใน Chrome 24 ก.ย.) */
.pm-about__anchor{ scroll-margin-top:calc(69px + var(--s3) - var(--s7)); }
.pm-about__hero{ padding-top:var(--s6); }
.pm-about__crumb{ margin-bottom:var(--s3); }
.pm-about__kicker{ margin:0 0 var(--s2); }
.pm-about__h1{ font-size:var(--fs-d2); line-height:1.0; color:var(--color-brand); max-width:920px; margin:0 0 var(--s3); }
.pm-about__deck{ max-width:620px; margin:0; color:var(--color-ink-muted); }
.pm-about__sec{ padding-top:var(--s7); }
.pm-about__sec--last{ padding-bottom:var(--s7); }
.pm-about__h2{ color:var(--color-brand); margin:0 0 var(--s3); }
.pm-about__h2--tight{ margin-bottom:var(--s1); }
.pm-about__h2--narrow{ max-width:700px; margin-bottom:var(--s4); }
.pm-about__h3{ font-size:var(--fs-d5b); color:var(--color-brand); margin:0 0 10px; }
.pm-about__p{ max-width:620px; margin:0 0 var(--s2); }
.pm-about__p:last-child{ margin-bottom:0; }
.pm-about__lead{ max-width:560px; color:var(--color-ink-muted); margin-bottom:var(--s4); }
.pm-about__fig{ margin:0; }

.pm-about__wide{ margin-top:var(--s5); }
.pm-about__media--wide{ aspect-ratio:21/9; }
.pm-about__stats{ margin:var(--s5) 0 0; gap:18px; }
.pm-about__stat{ padding:28px; display:flex; flex-direction:column-reverse; justify-content:flex-end; }
.pm-about__stat dt{ margin:0; color:var(--color-ink-muted); }
.pm-about__statn{ margin:0; font-family:var(--font-display); font-size:var(--fs-d4); line-height:1.1; color:var(--color-brand); }

.pm-about__split{ align-items:start; }
.pm-about__split--story{ grid-template-columns:1.15fr .85fr; }
.pm-about__split--src{ grid-template-columns:.85fr 1.15fr; align-items:center; }
.pm-about__split--mk{ grid-template-columns:1.15fr .85fr; }

.pm-about__promise{ padding:34px; }
.pm-about__boxhead{ margin:0 0 var(--s2); }
.pm-about__list{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:14px; }
.pm-about__list li{ border-top:1px solid var(--color-line); padding-top:14px; }
.pm-about__list .pm-text-small{ display:block; margin:0; }
.pm-about__itemtitle{ display:block; font-family:var(--font-body); font-size:var(--fs-h5); font-weight:600; line-height:1.4; color:var(--color-brand); margin:0; }

.pm-about__timeline{ margin-top:var(--s7); padding-block:80px; }
.pm-about__timeline .pm-eyebrow,
.pm-about__timeline .pm-text-small,
.pm-about__timeline .pm-about__h2,
.pm-about__timeline .pm-about__tltitle,
.pm-about__timeline .pm-about__year{ color:var(--color-on-night); }
.pm-about__tl{ list-style:none; margin:0; padding:0; }
.pm-about__tlrow{ display:grid; grid-template-columns:160px minmax(0,1fr); gap:32px; border-top:1px solid var(--color-line-night); padding:24px 0; }
.pm-about__year{ font-family:var(--font-display); font-size:var(--fs-d5); line-height:1.1; }
.pm-about__tltitle{ font-family:var(--font-body); font-size:var(--fs-deck); font-weight:600; margin:0 0 4px; }
.pm-about__tlrow .pm-text-small{ margin:0; }

.pm-about__steps{ margin-top:var(--s3); }

.pm-about__panel{ padding:48px; }
.pm-about__facts{ margin:0; display:flex; flex-direction:column; }
.pm-about__fact{ border-top:1px solid var(--color-line); padding:14px 0; }
.pm-about__fact dt{ margin:0 0 2px; color:var(--color-ink-muted); }
.pm-about__fact dd{ margin:0; font-size:var(--fs-h5); font-weight:600; color:var(--color-brand); }

.pm-about__qgrid{ gap:18px; }
.pm-about__qcard{ padding:28px; }
.pm-about__qcard .pm-text-small{ margin:0; }
.pm-about__more{ margin:var(--s3) 0 0; }

.pm-about__people{ gap:20px; }
.pm-about__person{ padding:0; overflow:hidden; }
.pm-about__personbody{ padding:22px; }
.pm-about__role{ margin:4px 0 10px; }
.pm-about__personbody .pm-text-small{ margin:0; }

.pm-about__presshead{ margin-bottom:var(--s3); }
.pm-about__pgrid{ gap:24px; }
.pm-about__pitem{ border-top:1px solid var(--color-line); padding-top:18px; }
.pm-about__pitem .pm-about__itemtitle{ margin-bottom:6px; }
.pm-about__pitem .pm-text-small{ margin:0; }

.pm-about__next{ gap:20px; }
.pm-card.pm-about__nextcard{
  padding:34px; display:flex; flex-direction:column; gap:10px;
  text-decoration:none; border-bottom:1px solid var(--color-line); color:inherit;
}
.pm-about__nextcard .pm-text-small{ color:var(--color-ink-muted); }
.pm-about__nexttitle{ font-family:var(--font-display); font-size:var(--fs-d5); line-height:1.15; color:var(--color-brand); }
.pm-card.pm-about__nextcard:hover{ border-color:var(--color-accent); }
.pm-card.pm-about__nextcard:focus-visible{ outline:2px solid var(--color-brand-ink); outline-offset:3px; }   /* F-2 */

@media(max-width:1024px){
  .pm-about__split--story,.pm-about__split--src,.pm-about__split--mk{ grid-template-columns:minmax(0,1fr); }
}
@media(max-width:680px){
  .pm-about__h1{ font-size:var(--fs-d3); }
  .pm-about__stat,.pm-about__promise,.pm-about__qcard,.pm-about__nextcard{ padding:var(--s3); }
  .pm-about__panel{ padding:var(--s4) var(--s3); }
  .pm-about__tlrow{ grid-template-columns:minmax(0,1fr); gap:6px; }
  .pm-about__media--wide{ aspect-ratio:4/3; }
}


/* ============================================================
   หน้า About Us — หน้า hub (ฉบับออกแบบใหม่) · เพิ่ม 26 ก.ย. 2026
   รายงาน docs/report-about-us-hub-2026-09-26.md · ต่อท้ายบล็อก About 24 ก.ย. (ใช้ .pm-about__h1/h2/kicker/p/stat/nextcard ซ้ำ)
   🔴 B-1 — ไม่มี hex · ทุกค่ามาจาก pm-tokens.css
   🔴 B-3 — แถบ olive: artboard ใช้ kicker ทอง + cream 75–78% → ไม่ลอก · ทุกตัวอักษรเป็น --color-on-night (5.20)
      pm-utilities.css ตั้ง .pm-text-* บน .pm-band--brand เป็น on-night-2 (3.18 ตก) → override ในบล็อกนี้
   ============================================================ */
.pm-about__h1 em{ font-style:italic; }
.pm-about__split--who{ grid-template-columns:1fr 1fr; gap:64px; align-items:center; }
.pm-about__split--pr{ grid-template-columns:.8fr 1.2fr; gap:56px; align-items:start; }
.pm-about__ctas{ display:flex; flex-wrap:wrap; gap:12px; margin-top:var(--s4); }

.pm-about__list--pr{ gap:0; }
.pm-about__list--pr li{ padding:20px 0; }
.pm-about__list--pr .pm-about__itemtitle{ font-size:var(--fs-deck); margin-bottom:4px; }
.pm-about__list--pr .pm-text-body{ display:block; color:var(--color-ink-muted); }

.pm-about__care{ margin-top:var(--s7); padding-block:80px; }
.pm-about__care .pm-eyebrow,
.pm-about__care .pm-text-body,
.pm-about__care .pm-about__h2,
.pm-about__care .pm-about__caretitle{ color:var(--color-on-night); }
.pm-about__carelead{ max-width:560px; margin-bottom:var(--s5); }
.pm-about__caregrid{ list-style:none; margin:0; padding:0; gap:18px; }
.pm-about__careitem{ border-top:1px solid var(--color-line-night); padding-top:20px; }
.pm-about__caretitle{ font-family:var(--font-display); font-weight:400; font-size:var(--fs-d5); line-height:1.15; margin:0 0 6px; }
.pm-about__careitem .pm-text-body{ margin:0; }

/* แถว stats ชิดใต้แถบ olive ตาม artboard (56px) · ถ้าแถบไม่ render (เว็บจริง) ระยะยังเท่า section อื่น */
.pm-about__care + .pm-about__sec--stats{ padding-top:var(--s5); }
.pm-about__sec--stats .pm-about__stats{ margin:0; }

.pm-card.pm-about__teaser{
  display:grid; grid-template-columns:1fr 1fr; padding:0; overflow:hidden;
  text-decoration:none; border-bottom:1px solid var(--color-line); color:inherit;
}
.pm-about__teaser .pm-about__fig{ height:100%; }
.pm-about__media--teaser{ min-height:320px; height:100%; }
.pm-about__teaserbody{ padding:48px; display:flex; flex-direction:column; justify-content:center; gap:12px; }
.pm-about__teaserbody .pm-text-body{ color:var(--color-ink-muted); }
.pm-about__teasertitle{ font-family:var(--font-display); font-size:var(--fs-d4); line-height:1.08; color:var(--color-brand); }
.pm-about__teaser .pm-about__more{ margin:6px 0 0; font-weight:600; color:var(--color-brand); }
.pm-card.pm-about__teaser:hover{ border-color:var(--color-accent); }
.pm-card.pm-about__teaser:focus-visible{ outline:2px solid var(--color-brand-ink); outline-offset:3px; }   /* F-2 */

.pm-about__deeper{ list-style:none; margin:0; padding:0; gap:18px; }
.pm-about__deeper li{ display:flex; }
.pm-about__deeper .pm-about__nextcard{ flex:1; gap:8px; }
.pm-about__deeper .pm-text-body{ color:var(--color-ink-muted); }

.pm-card.pm-about__ask{ display:grid; grid-template-columns:1fr auto; gap:32px; align-items:center; padding:44px; }
.pm-about__asktitle{ font-size:var(--fs-d4); line-height:1.1; color:var(--color-brand); margin:0 0 8px; }
.pm-about__ask .pm-text-body{ margin:0; color:var(--color-ink-muted); }
.pm-about__ask .pm-about__ctas{ margin-top:0; }

@media(max-width:1024px){
  .pm-about__split--who,.pm-about__split--pr,.pm-card.pm-about__teaser,.pm-card.pm-about__ask{ grid-template-columns:minmax(0,1fr); }
  .pm-about__split--who{ gap:var(--s5); }
}
@media(max-width:680px){
  .pm-about__teaserbody,.pm-card.pm-about__ask{ padding:var(--s3); }
  .pm-about__media--teaser{ min-height:0; aspect-ratio:3/2; }
  .pm-about__care{ padding-block:var(--s6); }
}
/* เว็บจริงเหลือ stat ใบเดียว (3/4 เป็น mock) → ไม่ให้ยืดเต็ม 1160px เป็นแถบว่าง · ใช้ความกว้างเท่า 1 ใน 4 คอลัมน์ของ artboard */
.pm-about__stats.pm-grid--1{ grid-template-columns:minmax(0,275px); }
@media(max-width:680px){ .pm-about__stats.pm-grid--1{ grid-template-columns:minmax(0,1fr); } }


/* ============================================================
   หน้า Our Story (Case A) — เพิ่ม 26 ก.ย. 2026
   template-story-case-a.php · template-parts/story/*.php · รายงาน docs/report-our-story-2026-09-26.md
   ♻️ ใช้ของหน้า About ซ้ำ: .pm-about__crumb/kicker/wide/media--wide · กล่องท้ายหน้า .pm-about__ask/asktitle/ctas
      ภาพ 4:5 + การ์ดบรีฟของหน้า Why (.pm-why__media--tall · .pm-why__slot · .pm-why__brief*)
   🔴 B-1 — ไม่มี hex · 🔴 B-3 — แถบ olive ใช้ --color-on-night สีเดียว (artboard: ทอง + cream 80% → ไม่ลอก)
      pm-utilities.css ตั้ง .pm-text-* บน .pm-band--brand เป็น on-night-2 (3.18 ตก) → override ในบล็อกนี้
   ============================================================ */
.pm-story__hero{ padding-top:var(--s6); }
.pm-story__h1{ font-size:var(--fs-d1); line-height:.96; color:var(--color-brand); max-width:1040px; margin:0 0 var(--s3); text-wrap:balance; }
.pm-story__h1 em{ font-style:italic; }
.pm-story__deck{ max-width:640px; margin:0; color:var(--color-ink-muted); }
.pm-story__sec{ padding-top:var(--s8); }
.pm-story__sec--last{ padding-bottom:var(--s8); }
.pm-story__fig{ margin:0; }
.pm-story__p{ max-width:560px; margin:0 0 var(--s2); color:var(--color-ink-muted); }
.pm-story__h2{ color:var(--color-brand); margin:0 0 var(--s3); text-wrap:balance; }
.pm-story__h2--narrow{ max-width:720px; margin-bottom:var(--s4); }

/* คำพูดเปิด */
.pm-story__quote{ max-width:840px; margin:0 auto; text-align:center; }
.pm-story__quote blockquote{ margin:0 0 var(--s3); padding:0; border:0; }
.pm-story__quote blockquote p{ font-family:var(--font-display); font-size:var(--fs-d3); line-height:1.2; color:var(--color-ink); margin:0; text-wrap:balance; }

/* บท — ภาพสลับด้านตามลำดับที่ render (.is-flip) */
.pm-story__chapters{ display:flex; flex-direction:column; gap:var(--s8); }
.pm-story__chapter{ display:grid; grid-template-columns:1fr 1fr; gap:64px; align-items:center; }
.pm-story__chapter.is-flip .pm-story__chmedia{ order:1; }
.pm-story__chapter[id]{ scroll-margin-top:calc(69px + var(--s3)); }
.pm-story__chmeta{ display:flex; align-items:baseline; flex-wrap:wrap; gap:6px 14px; margin:0 0 var(--s2); }
.pm-story__chno{ font-family:var(--font-display); font-style:italic; font-size:var(--fs-d6); color:var(--color-brand); }
.pm-story__chmeta .pm-eyebrow{ margin:0; }

/* แถบ olive */
.pm-story__roles{ margin-top:var(--s8); padding-block:88px; scroll-margin-top:69px; }
.pm-story__roles .pm-eyebrow,
.pm-story__roles .pm-text-body,
.pm-story__roles .pm-story__h2,
.pm-story__roles .pm-story__roletitle{ color:var(--color-on-night); }
.pm-story__h2--band{ max-width:760px; margin-bottom:var(--s2); }
.pm-story__bandlead{ max-width:600px; margin:0 0 var(--s5); }
.pm-story__rolegrid{ list-style:none; margin:0; padding:0; gap:18px; }
.pm-story__role{ border-top:1px solid var(--color-line-night); padding-top:22px; }
.pm-story__who{ display:block; margin:0 0 8px; }
.pm-story__roletitle{ font-family:var(--font-display); font-weight:400; font-size:var(--fs-d5); line-height:1.1; margin:0 0 10px; }
.pm-story__role .pm-text-body{ margin:0; }

/* Milestones */
.pm-story__ms{ list-style:none; margin:0; padding:0; }
.pm-story__msrow{ display:grid; grid-template-columns:160px minmax(0,1fr); gap:32px; border-top:1px solid var(--color-line); padding:24px 0; }
.pm-story__year{ font-family:var(--font-display); font-size:var(--fs-d5); line-height:1.1; color:var(--color-brand); }
.pm-story__mstitle{ font-family:var(--font-body); font-size:var(--fs-deck); font-weight:600; color:var(--color-brand); margin:0 0 4px; }
.pm-story__msrow .pm-text-body{ margin:0; color:var(--color-ink-muted); }

/* การ์ด 3 ใบใต้กล่องท้ายหน้า */
.pm-story__more{ list-style:none; margin:18px 0 0; padding:0; gap:18px; }
.pm-story__morelink{ display:flex; flex-direction:column; gap:4px; min-height:44px; padding:20px 0; border-top:1px solid var(--color-line); border-bottom:0; text-decoration:none; color:inherit; }
.pm-story__moretitle{ font-family:var(--font-display); font-size:var(--fs-d5b); color:var(--color-brand); }
.pm-story__morelink .pm-text-body{ color:var(--color-ink-muted); }
.pm-story__morelink:hover .pm-story__moretitle{ color:var(--color-accent); }
.pm-story__morelink:focus-visible{ outline:2px solid var(--color-brand-ink); outline-offset:3px; }   /* F-2 */

/* โน้ตนักออกแบบ — render เฉพาะไฟล์ preview -flags (filter pm_story_show_notes) */
.pm-story__note{ max-width:560px; margin:var(--s3) 0 0; padding:12px 16px; border:1px dashed var(--color-accent); border-radius:12px;
                 background:var(--color-accent-field); color:var(--color-ink); font-size:var(--fs-small, 14px); text-align:left; }
.pm-story__quote .pm-story__note{ margin-inline:auto; }

@media(max-width:1024px){
  .pm-story__chapter{ grid-template-columns:minmax(0,1fr); gap:var(--s4); }
  .pm-story__chapter.is-flip .pm-story__chmedia{ order:0; }
}
@media(max-width:680px){
  .pm-story__h1{ font-size:var(--fs-d2); }
  .pm-story__quote blockquote p{ font-size:var(--fs-d5); }
  .pm-story__roles{ padding-block:var(--s6); }
  .pm-story__msrow{ grid-template-columns:minmax(0,1fr); gap:6px; }
}

/* ============================================================
   หน้า Our Manufacturer (Case A) — เพิ่ม 26 ก.ย. 2026
   template-manufacturer-case-a.php · template-parts/maker/*.php · รายงาน docs/report-our-manufacturer-2026-09-26.md
   ♻️ ใช้ของหน้า Our Story ซ้ำ: hero/h1/deck/sec/h2/p · บท (.pm-story__chapter) · แถบ olive (.pm-story__roles → override สี on-night)
      กล่องท้ายหน้า + การ์ด 3 ใบ · ของหน้า About: crumb/kicker/wide/split--pr/lead/itemtitle
   🔴 B-1 — ไม่มี hex · 🔴 B-3 — ตัวเลขบนแถบ olive ใช้ --color-on-night (artboard: ทอง → ไม่ลอก)
   ============================================================ */
.pm-maker__h1{ font-size:var(--fs-d1); }

.pm-maker__facts{ margin:var(--s5) 0 0; gap:18px; }
.pm-maker__fact{ border-top:1px solid var(--color-line); padding-top:18px; display:flex; flex-direction:column-reverse; justify-content:flex-end; }
.pm-maker__fact dt{ margin:0; color:var(--color-ink-muted); }
.pm-maker__factv{ margin:0; font-family:var(--font-display); font-size:var(--fs-d3); line-height:1; color:var(--color-brand); }

.pm-maker__steps{ list-style:none; margin:0; padding:0; }
.pm-maker__step{ display:grid; grid-template-columns:80px 300px minmax(0,1fr); gap:32px; align-items:baseline;
                 border-top:1px solid var(--color-line-night); padding:24px 0; }
.pm-maker__stepn{ font-family:var(--font-display); font-size:var(--fs-d4); line-height:1; color:var(--color-on-night); }
.pm-maker__step .pm-story__roletitle{ margin:0; }
.pm-maker__step .pm-text-body{ margin:0; }

.pm-maker__rows{ list-style:none; margin:0; padding:0; }
.pm-maker__row{ display:grid; grid-template-columns:64px minmax(0,1fr); gap:24px; border-top:1px solid var(--color-line); padding:22px 0; }
.pm-maker__rown{ font-family:var(--font-display); font-size:var(--fs-d5); line-height:1; color:var(--color-brand); }
.pm-maker__rowtitle{ font-size:var(--fs-deck); margin:0 0 4px; }
.pm-maker__row .pm-text-body{ margin:0; color:var(--color-ink-muted); }
.pm-maker__after{ margin:18px 0 0; padding-top:16px; border-top:1px solid var(--color-line); color:var(--color-ink-muted); }

.pm-maker__gens{ list-style:none; margin:0; padding:0; gap:20px; }
.pm-card.pm-maker__gen{ padding:28px; display:flex; flex-direction:column; gap:10px; }
.pm-maker__gen .pm-eyebrow,.pm-maker__gen .pm-text-body,.pm-maker__gen .pm-text-small{ margin:0; }
.pm-maker__gen .pm-text-body{ color:var(--color-ink-muted); }
.pm-maker__gentitle{ font-family:var(--font-display); font-weight:400; font-size:var(--fs-d5); line-height:1.1; color:var(--color-brand); margin:0; }
.pm-card.pm-maker__gen .pm-maker__genitems{ margin-top:auto; padding-top:10px; border-top:1px solid var(--color-line); color:var(--color-ink-muted); } /* 3 class ชนะ margin:0 ของแถวบน */

.pm-maker__tests{ margin:0; }
.pm-maker__test{ display:grid; grid-template-columns:220px minmax(0,1fr); gap:24px; align-items:baseline; border-top:1px solid var(--color-line); padding:18px 0; }
.pm-maker__test dt{ font-weight:600; color:var(--color-brand); }
.pm-maker__test dd{ margin:0; color:var(--color-ink-muted); }

.pm-maker__visit{ display:grid; grid-template-columns:1fr 1fr; gap:20px; align-items:stretch; }
.pm-maker__media--office{ aspect-ratio:16/10; }
.pm-card.pm-maker__details{ padding:40px; display:flex; flex-direction:column; gap:18px; }
.pm-maker__details .pm-eyebrow{ margin:0; }
.pm-maker__name{ font-size:var(--fs-d4); line-height:1.1; color:var(--color-brand); margin:0; }
.pm-maker__addr{ font-style:normal; display:flex; flex-direction:column; gap:16px; }
.pm-maker__addr > .pm-text-body{ color:var(--color-ink-muted); }
.pm-maker__lines{ display:flex; flex-direction:column; gap:6px; border-top:1px solid var(--color-line); padding-top:16px; color:var(--color-ink-muted); }
.pm-maker__lines a{ display:inline-flex; align-items:center; min-height:44px; }   /* F-3 */

@media(max-width:1024px){
  .pm-maker__visit{ grid-template-columns:minmax(0,1fr); }
  .pm-maker__step{ grid-template-columns:56px minmax(0,1fr); }
  .pm-maker__step .pm-text-body{ grid-column:2; }
}
@media(max-width:820px){ .pm-maker__test{ grid-template-columns:minmax(0,1fr); gap:4px; } }
@media(max-width:680px){
  .pm-maker__h1{ font-size:var(--fs-d2); }
  .pm-card.pm-maker__details{ padding:var(--s3); }
}

/* ============================================================
   หน้า Quality & Certifications (Case A) — เพิ่ม 26 ก.ย. 2026
   template-quality-case-a.php · template-parts/quality/*.php · รายงาน docs/report-quality-certifications-2026-09-26.md
   ♻️ ใช้ซ้ำ: Our Story (hero/h1/deck/sec/h2 · แถบ olive .pm-story__roles · กล่องท้าย + การ์ด 3 ใบ)
      Our Manufacturer (.pm-maker__rows/__row · .pm-maker__steps/__step) · About (crumb/kicker/ask) · Why (ภาพ 4:5 + การ์ดบรีฟ)
   🔴 B-1 — ไม่มี hex · 🔴 B-3 — ปีบนแถบ olive ใช้ --color-on-night (artboard: ทอง → ไม่ลอก)
   ============================================================ */
.pm-quality__sec{ padding-top:var(--s7); }
.pm-quality__listhead{ display:flex; justify-content:space-between; align-items:baseline; gap:8px 16px; flex-wrap:wrap;
                       border-bottom:1px solid var(--color-line); padding-bottom:16px; margin-bottom:24px; }
.pm-quality__listtitle{ font-family:var(--font-body); font-size:var(--fs-label); font-weight:600; line-height:1.2;
                        text-transform:uppercase; letter-spacing:.3em; color:var(--color-ink-muted); margin:0; }
.pm-quality__count{ margin:0; font-size:var(--fs-label); letter-spacing:.12em; text-transform:uppercase; color:var(--color-ink-muted); }

.pm-quality__certs{ list-style:none; margin:0; padding:0; gap:18px; }
.pm-card.pm-quality__cert{ padding:26px; display:grid; grid-template-columns:84px minmax(0,1fr); gap:20px; align-items:start; }
.pm-quality__logo{ width:84px; height:84px; box-sizing:border-box; padding:10px; border-radius:var(--radius-md);
                   background:var(--color-photo-bg); border:1px solid var(--color-line); display:grid; place-items:center; }
.pm-quality__logo img{ max-width:100%; max-height:100%; width:auto; height:auto; object-fit:contain; display:block; }
.pm-quality__logoslot{ font-size:var(--fs-label); letter-spacing:.12em; text-transform:uppercase; color:var(--color-ink-muted); }
.pm-quality__certbody{ display:flex; flex-direction:column; gap:6px; min-width:0; }
.pm-quality__certname{ font-size:var(--fs-d5); line-height:1.05; color:var(--color-brand); margin:0; }
.pm-quality__certwhat{ margin:0; font-weight:500; line-height:1.4; color:var(--color-ink); }
.pm-quality__certby{ margin:4px 0 0; padding-top:8px; border-top:1px solid var(--color-line); line-height:1.45; color:var(--color-ink-muted); }

.pm-quality__checks{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:64px; align-items:center; }
.pm-quality__checks .pm-story__h2{ margin-bottom:var(--s3); }

.pm-quality__labs .pm-maker__step{ grid-template-columns:96px 340px minmax(0,1fr); padding:22px 0; }
.pm-quality__year{ font-size:var(--fs-meta); letter-spacing:.1em; text-transform:uppercase; color:var(--color-on-night); }

@media(max-width:1024px){
  .pm-quality__checks{ grid-template-columns:minmax(0,1fr); gap:var(--s5); }
  .pm-quality__labs .pm-maker__step{ grid-template-columns:96px minmax(0,1fr); }
}
@media(max-width:820px){
  .pm-quality__certs.pm-grid--3{ grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media(max-width:600px){
  .pm-quality__certs.pm-grid--3{ grid-template-columns:minmax(0,1fr); }
  .pm-quality__labs .pm-maker__step{ grid-template-columns:minmax(0,1fr); gap:4px; }
  .pm-quality__labs .pm-maker__step .pm-text-body{ grid-column:1; }
  .pm-card.pm-quality__cert{ padding:var(--s3); }
}

/* ============================================================
   หน้า Our Farm (Case A) — เพิ่ม 26 ก.ย. 2026
   template-farm-case-a.php · template-parts/farm/*.php · รายงาน docs/report-our-farm-2026-09-26.md
   ♻️ ใช้ซ้ำ: Our Story (hero/h1/deck/sec/h2/p · แถบ olive · กล่องท้าย + การ์ด 3 ใบ) · About (crumb/kicker/wide/split--pr/lead)
      Our Manufacturer (.pm-maker__steps/__step · __rows/__row · __after) · Quality (.pm-quality__checks) · Why (ภาพ 4:5 + การ์ดบรีฟ)
   🔴 B-1 — ไม่มี hex · 🔴 B-3 — ป้ายขั้นบนแถบ olive ใช้ --color-on-night (artboard: ทอง → ไม่ลอก)
   ============================================================ */
.pm-farm__fiveg .pm-maker__step .pm-story__roletitle{ margin:0 0 4px; }
.pm-farm__stage{ margin:0; font-size:var(--fs-label); letter-spacing:.14em; text-transform:uppercase; color:var(--color-on-night); }
.pm-quality__checks .pm-story__p:last-child{ margin-bottom:0; }

.pm-farm__markets{ list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:18px; }
.pm-farm__market{ border-top:1px solid var(--color-line); padding-top:18px;
                  font-family:var(--font-display); font-size:var(--fs-d5); line-height:1.1; color:var(--color-brand); }

@media(max-width:820px){ .pm-farm__markets{ grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media(max-width:600px){ .pm-farm__markets{ grid-template-columns:minmax(0,1fr); } }

/* ============================================================
   หน้า Press & Partners (Case A) — เพิ่ม 26 ก.ย. 2026
   template-press-case-a.php · template-parts/press/*.php · รายงาน docs/report-press-partners-2026-09-26.md
   ♻️ ใช้ซ้ำ: Our Story (hero/h1/deck/sec/h2/p) · About (crumb/kicker) · Our Manufacturer (การ์ด .pm-maker__gen) · .pm-card--link (components)
   🔴 B-1 — ไม่มี hex
   ============================================================ */
.pm-press__h1{ font-size:var(--fs-d2); max-width:920px; }

.pm-press__partners{ list-style:none; margin:var(--s5) 0 0; padding:0; gap:20px; }

.pm-press__split{ display:grid; grid-template-columns:1.15fr .85fr; gap:56px; align-items:start; }
.pm-press__split .pm-story__p:last-child{ margin-bottom:0; }
.pm-card.pm-press__contact{ padding:34px; display:flex; flex-direction:column; align-items:flex-start; gap:14px; }
.pm-press__contact .pm-eyebrow,.pm-press__contact .pm-text-body{ margin:0; }
.pm-press__contact .pm-text-body{ color:var(--color-ink-muted); }

.pm-press__next{ list-style:none; margin:0; padding:0; gap:20px; }
.pm-card.pm-press__nextcard{ padding:34px; }
.pm-press__nextcard .pm-eyebrow{ margin:0 0 12px; }
.pm-press__nexttitle{ font-size:var(--fs-d5); line-height:1.1; margin:0 0 6px; }
.pm-press__nexttitle .pm-card__title{ color:var(--color-brand); }
.pm-press__nextcard .pm-text-body{ margin:0; color:var(--color-ink-muted); }

@media(max-width:1024px){ .pm-press__split{ grid-template-columns:minmax(0,1fr); gap:var(--s5); } }
@media(max-width:820px){ .pm-press__partners.pm-grid--3{ grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media(max-width:600px){
  .pm-press__partners.pm-grid--3,.pm-press__next.pm-grid--2{ grid-template-columns:minmax(0,1fr); }
  .pm-card.pm-press__contact,.pm-card.pm-press__nextcard{ padding:var(--s3); }
}

/* ============================================================
   หน้า Contact Us (Case A) — เพิ่ม 24 ก.ย. 2026
   template-contact-case-a.php · template-parts/contact/*.php · รายงาน docs/report-contact-us-2026-09-24.md
   ที่มา: `Case A - Contact Us.dc.html`
   🔴 B-1 — ไม่มี hex ในบล็อกนี้ · ทุกค่ามาจาก pm-tokens.css
   🔴 B-3 — บนพื้น --color-brand (กล่องเวลาทำการ · #consult) ใช้ --color-on-night ทึบสีเดียว
      artboard ใช้ cream 72% / 60% + ทอง --color-gold (วัดไว้เฉพาะบนพื้น night) → ตก ไม่ลอก
   🔴 B-4 — artboard ใช้ 11–11.5px ในป้าย → ≥ --fs-label
   ♻️ ใช้ของหน้า Why ซ้ำ: FAQ (.pm-why__faq …)
   ============================================================ */
.pm-contact__anchor{ scroll-margin-top:calc(69px + var(--s3) - var(--s7)); }
.pm-contact__hero{ padding-top:var(--s6); }
.pm-contact__crumb{ margin-bottom:var(--s3); }
.pm-contact__kicker{ margin:0 0 var(--s2); }
.pm-contact__h1{ font-size:var(--fs-d2); line-height:1.0; color:var(--color-brand); max-width:880px; margin:0 0 var(--s3); }
.pm-contact__deck{ max-width:600px; margin:0; color:var(--color-ink-muted); }
.pm-contact__sec{ padding-top:var(--s7); }
.pm-contact__sec--last{ padding-bottom:var(--s7); }
.pm-contact__h2{ color:var(--color-brand); margin:0 0 var(--s3); }
.pm-contact__h2--tight{ margin-bottom:10px; }
.pm-contact__h2--narrow{ max-width:720px; margin-bottom:var(--s2); }
.pm-contact__h3{ font-size:var(--fs-d5b); margin:0 0 10px; }
.pm-contact__lead{ max-width:560px; margin:0 0 var(--s4); color:var(--color-ink-muted); }

/* การ์ดช่องทาง — ทั้งใบเป็นลิงก์ */
.pm-contact__channels{ list-style:none; margin:var(--s5) 0 0; padding:0; gap:18px; }
.pm-contact__chwrap{ display:flex; flex-direction:column; }
/* เว็บจริงตอนนี้เหลือช่องทางเดียว (WhatsApp) — ไม่ให้การ์ดใบเดียวยืดเต็ม 1160px */
.pm-contact__channels.pm-grid--1{ grid-template-columns:minmax(0,560px); }
.pm-card.pm-contact__channel{
  flex:1; display:flex; flex-direction:column; gap:8px; padding:30px;
  border-radius:var(--radius-lg); text-decoration:none; border-bottom:1px solid var(--color-line);
}
.pm-contact__channel .pm-eyebrow{ margin:0; }
.pm-contact__channel .pm-text-small{ color:var(--color-ink-muted); }
.pm-contact__chtitle{ font-family:var(--font-display); font-size:var(--fs-d5); line-height:1.15; color:var(--color-brand); }
.pm-contact__chmeta{ margin-top:10px; font-size:var(--fs-meta); font-weight:600; letter-spacing:.04em; color:var(--color-brand-ink); }
.pm-card.pm-contact__channel:hover{ border-color:var(--color-accent); }
.pm-card.pm-contact__channel:focus-visible{ outline:2px solid var(--color-brand-ink); outline-offset:3px; }   /* F-2 */

/* #form */
.pm-contact__formgrid{ display:grid; grid-template-columns:1.2fr .8fr; gap:var(--s5); align-items:start; }
.pm-contact__formgrid.is-single{ grid-template-columns:minmax(0,1fr); max-width:620px; }
.pm-card.pm-contact__formcard{ padding:44px; border-radius:var(--radius-xl); }
.pm-contact__form{ display:flex; flex-direction:column; gap:20px; margin:0; }
.pm-contact__pair{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:20px; }
.pm-contact__field{ display:flex; flex-direction:column; min-width:0; }
.pm-contact__field .pm-field__label{ margin-bottom:var(--s1); }
.pm-contact__opt{ text-transform:none; letter-spacing:0; font-weight:400; }
.pm-input.pm-contact__input{ width:100%; box-sizing:border-box; background:var(--color-paper); border-radius:var(--radius-sm); font-size:var(--fs-small); }
.pm-contact__textarea{ min-height:150px; }
.pm-input.pm-contact__input:focus{ border-color:var(--color-brand); }
.pm-input.pm-contact__input:focus-visible{ outline:2px solid var(--color-brand-ink); outline-offset:2px; }   /* F-2 */
.pm-contact__help{ margin:6px 0 0; color:var(--color-ink-muted); }

/* หัวข้อ = radio จริง (C-10) หน้าตาเป็นชิปตาม artboard · ตัว input ซ่อนแบบยังโฟกัสได้ */
.pm-contact__topics{ border:0; margin:0; padding:0; min-width:0; }
.pm-contact__topics legend{ padding:0; margin-bottom:12px; }
.pm-contact__chips{ display:flex; flex-wrap:wrap; gap:10px; }
.pm-contact__chip{ position:relative; display:inline-flex; }
.pm-contact__chip input{ position:absolute; opacity:0; width:1px; height:1px; margin:0; }
.pm-contact__chip span{
  display:inline-flex; align-items:center; min-height:44px; padding:0 18px; box-sizing:border-box;   /* F-3 */
  border:1px solid var(--color-line-strong); border-radius:var(--radius-pill);
  font-size:var(--fs-h6); font-weight:500; color:var(--color-ink-body); cursor:pointer;
}
.pm-contact__chip span:hover{ border-color:var(--color-ink); }
.pm-contact__chip input:checked + span{ background:var(--color-brand); border-color:var(--color-brand); color:var(--color-on-night); }
.pm-contact__chip input:focus-visible + span{ outline:2px solid var(--color-brand-ink); outline-offset:3px; }   /* F-2 */

.pm-contact__submit{ display:flex; align-items:center; gap:18px; flex-wrap:wrap; }
.pm-contact__formnote{ margin:0; color:var(--color-ink-muted); }

.pm-contact__aside{ display:flex; flex-direction:column; gap:18px; }
.pm-contact__asidek{ margin:0 0 14px; }
.pm-contact__hours{ background:var(--color-brand); color:var(--color-on-night); border-radius:var(--radius-lg); padding:32px; }
.pm-contact__hours .pm-eyebrow,
.pm-contact__hours .pm-text-small{ color:var(--color-on-night); }
.pm-contact__hlist{ margin:0; display:flex; flex-direction:column; gap:10px; }
.pm-contact__hrow{ display:flex; justify-content:space-between; gap:16px; border-top:1px solid var(--color-line-night); padding-top:10px; font-size:var(--fs-small); }
.pm-contact__hrow dt,.pm-contact__hrow dd{ margin:0; }
.pm-contact__hrow dd{ font-weight:600; text-align:right; }
.pm-contact__hnote{ margin:18px 0 0; }
.pm-card.pm-contact__where{ padding:32px; border-radius:var(--radius-lg); }
.pm-contact__wtitle{ font-family:var(--font-display); font-size:var(--fs-d5b); color:var(--color-brand); margin:0 0 6px; }
.pm-contact__addr{ font-style:normal; margin:0 0 18px; color:var(--color-ink-muted); }
.pm-contact__map{
  aspect-ratio:16/10; border-radius:var(--radius-md); background:var(--color-shade);
  display:grid; place-items:center; padding:14px; text-align:center;
  font-size:var(--fs-label); letter-spacing:.08em; text-transform:uppercase; color:var(--color-ink-muted);
}

/* #consult */
.pm-contact__consult{ margin-top:var(--s7); padding-block:80px; }
.pm-contact__consult .pm-eyebrow,
.pm-contact__consult .pm-text-body,
.pm-contact__consult .pm-text-small,
.pm-contact__consult .pm-contact__h2,
.pm-contact__consult .pm-contact__h3,
.pm-contact__consult .pm-contact__lead{ color:var(--color-on-night); }
.pm-contact__cgrid{ list-style:none; margin:var(--s4) 0 0; padding:0; gap:18px; }
.pm-contact__ccard{ border:1px solid var(--color-line-night); border-radius:var(--radius-lg); padding:28px; }
.pm-contact__ccard .pm-text-small{ margin:0; }
.pm-contact__cactions{ display:flex; gap:14px; flex-wrap:wrap; margin-top:var(--s4); }

/* #faq */
.pm-contact__faqgrid{ display:grid; grid-template-columns:.8fr 1.2fr; gap:56px; align-items:start; }

/* #shipping */
.pm-contact__ship{ margin:0; gap:18px; }
/* > 4 ใบ (preview ที่เปิด mock) — ไม่ให้เหลือใบเดียวค้างแถวสอง */
.pm-contact__ship.pm-contact__ship--many{ grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); }
.pm-contact__shipcard{ padding:28px; display:flex; flex-direction:column-reverse; justify-content:flex-end; border-radius:var(--radius-lg); }
.pm-contact__shipcard dt{ margin:0; color:var(--color-ink-muted); }
.pm-contact__shipn{ margin:0; font-family:var(--font-display); font-size:var(--fs-d5); line-height:1.15; color:var(--color-brand); }

@media (max-width:1024px){
  .pm-contact__formgrid,.pm-contact__faqgrid{ grid-template-columns:minmax(0,1fr); }
  .pm-contact__faqgrid{ gap:var(--s3); }
}
@media (max-width:680px){
  .pm-contact__h1{ font-size:var(--fs-d3); }
  .pm-contact__pair{ grid-template-columns:minmax(0,1fr); }
  .pm-card.pm-contact__formcard{ padding:var(--s4) var(--s3); }
  .pm-card.pm-contact__channel,.pm-contact__hours,.pm-card.pm-contact__where,.pm-contact__ccard,.pm-contact__shipcard{ padding:var(--s3); }
}

/* ============================================================
   หน้า Contact Us (Case A) — **ฉบับออกแบบใหม่** · เพิ่ม 26 ก.ย. 2026
   template-contact-case-a.php · template-parts/contact/{hero,details,form,map}.php · รายงาน docs/report-contact-us-2026-09-26.md
   ♻️ ใช้ซ้ำ: บล็อก Contact 24 ก.ย. (.pm-contact__channel/chtitle/chmeta · __formcard/__form/__pair/__field/__input · __addr)
      Our Story (hero/h1/deck/sec/h2) · Press (.pm-press__h1) · Why (การ์ดบรีฟในช่องรอภาพ)
   ⚠️ กฎของบล็อก 24 ก.ย. ที่ไม่มีผู้ใช้แล้ว (consult · faq · ship · hours · chips) คงไว้ — CSS append-only
   🔴 B-1 — ไม่มี hex · 🔴 B-3 — แถบแผนที่ใช้ --color-on-night (artboard: ทอง + cream 85% → ไม่ลอก)
   ============================================================ */
.pm-contact__first{ padding-top:var(--s6); }
.pm-contact__cards{ list-style:none; margin:0; padding:0; gap:18px; }
.pm-card.pm-contact__channel .pm-eyebrow{ margin:0; font-family:var(--font-body); }
.pm-contact__company{ font-size:var(--fs-d5b); margin:0; }
.pm-contact__channel .pm-contact__addr{ margin:0; }
.pm-contact__tel{ display:inline-flex; align-items:center; min-height:44px; text-decoration:none; border-bottom:0; }   /* F-3 */
.pm-contact__mail{ font-family:var(--font-display); font-size:var(--fs-d6); line-height:1.2; color:var(--color-brand); overflow-wrap:break-word; text-decoration:none; border-bottom:0; min-height:44px; display:inline-flex; align-items:center; }   /* ≈ 26 ตัวอักษร: 24px ล้นการ์ด 4 คอลัมน์ (216px) ตัดกลางคำ — เจอใน Chrome 26 ก.ย. */
.pm-contact__more{ margin-top:auto; display:inline-flex; align-items:center; min-height:44px; text-decoration:none; border-bottom:0; }

.pm-contact__formh{ margin-bottom:var(--s4); }

.pm-contact__mapband{ display:grid; grid-template-columns:.8fr 1.2fr; background:var(--color-brand); color:var(--color-on-night);
                      border-radius:var(--radius-xl); overflow:hidden; }
.pm-contact__mapbody{ padding:40px; display:flex; flex-direction:column; gap:12px; }
.pm-contact__mapbody .pm-eyebrow,.pm-contact__mapbody .pm-text-body{ color:var(--color-on-night); margin:0; }
.pm-contact__maph{ font-size:var(--fs-d4); line-height:1.1; color:var(--color-on-night); margin:0; }
.pm-contact__mapaddr{ font-style:normal; }
.pm-contact__mapbtn{ align-self:flex-start; margin-top:10px; }
.pm-contact__mapmedia{ min-height:360px; display:flex; }
.pm-contact__mapmedia > .pm-media{ flex:1; border-radius:0; }
.pm-contact__mapslot{ height:100%; }

@media(max-width:1024px){ .pm-contact__mapband{ grid-template-columns:minmax(0,1fr); } }
@media(max-width:680px){
  .pm-card.pm-contact__formcard{ padding:var(--s3); }
  .pm-contact__pair{ grid-template-columns:minmax(0,1fr); }
  .pm-contact__mapbody{ padding:var(--s3); }
  .pm-contact__mapmedia{ min-height:0; }
}

/* ============================================================
   หน้า FAQ (Case A) — เพิ่ม 26 ก.ย. 2026
   template-faq-case-a.php · template-parts/faq/*.php · รายงาน docs/report-faq-2026-09-26.md
   ♻️ ใช้ซ้ำ: FAQ ของหน้า Why (.pm-why__faq/__qa/__q/__a) · Press (.pm-press__h1 · การ์ด .pm-press__next) · Story (hero/deck/sec)
   .pm-faq__list = หน้าตาตาม artboard: เส้นคั่นบน-ล่าง ไม่มีกล่อง ไม่มีพื้น · กว้างสุด 860px
   🔴 B-1 — ไม่มี hex
   ============================================================ */
.pm-faq__sec{ padding-top:var(--s5); }
.pm-why__faq.pm-faq__list{ max-width:860px; background:transparent; border:0; border-top:1px solid var(--color-line); border-bottom:1px solid var(--color-line); border-radius:0; }
.pm-faq__list .pm-why__q{ padding:22px 0; font-weight:500; }
.pm-faq__list .pm-why__a{ max-width:640px; padding:0 0 22px; }

/* ============================================================
   หน้า Shipping & delivery (Case A) — เพิ่ม 26 ก.ย. 2026
   template-shipping-case-a.php · template-parts/shipping/*.php · รายงาน docs/report-shipping-delivery-2026-09-26.md
   ♻️ ใช้ซ้ำ: Story (hero/h1/deck/sec/h2) · About (crumb/kicker/stats/lead) · Press (.pm-press__h1 · การ์ด .pm-press__next)
   🔴 B-3 — การ์ดใบกลาง (.is-brand · พื้น --color-brand) ใช้ --color-on-night ทึบสีเดียว (5.20) · artboard ใช้ cream ทึบอยู่แล้ว
   🔴 B-1 — ไม่มี hex · C-7 — ไม่มี !important
   ============================================================ */
.pm-ship__statsec{ padding-top:var(--s5); }
.pm-ship__stats{ margin-top:0; }

.pm-ship__rates{ list-style:none; margin:0; padding:0; gap:20px; }
.pm-card.pm-ship__rate{ padding:36px; display:flex; flex-direction:column; gap:22px; border-radius:var(--radius-xl); }
.pm-card.pm-ship__rate.is-brand{ background:var(--color-brand); border-color:var(--color-brand); color:var(--color-on-night); }
.pm-ship__ratetop{ display:flex; justify-content:space-between; align-items:baseline; gap:16px; }
.pm-ship__ratetag{ font-family:var(--font-body); font-size:var(--fs-label); line-height:1.2; font-weight:600; letter-spacing:.2em; text-transform:uppercase; color:var(--color-ink-muted); margin:0; }
.pm-ship__ratenote{ font-size:var(--fs-meta); color:var(--color-ink-muted); text-align:right; }
.pm-ship__price{ font-family:var(--font-display); font-size:var(--fs-d2); line-height:1; color:var(--color-brand); margin:0; }
.pm-ship__sub{ margin:6px 0 0; color:var(--color-ink-muted); }
.pm-ship__lines{ list-style:none; margin:0; padding:0; border-top:1px solid var(--color-line); }
.pm-ship__lines li{ border-bottom:1px solid var(--color-line); padding:12px 0; font-size:var(--fs-small); }
.pm-ship__pair{ display:flex; justify-content:space-between; gap:12px; }
.pm-ship__pair strong{ font-weight:600; color:var(--color-brand); }
.pm-ship__pill{ margin:auto 0 0; background:var(--color-paper); border-radius:var(--radius-md); padding:14px 18px; font-size:var(--fs-small); font-weight:600; color:var(--color-brand); }
.pm-ship__rate.is-brand .pm-ship__ratetag,
.pm-ship__rate.is-brand .pm-ship__ratenote,
.pm-ship__rate.is-brand .pm-ship__price,
.pm-ship__rate.is-brand .pm-ship__sub,
.pm-ship__rate.is-brand .pm-ship__lines li{ color:var(--color-on-night); }
.pm-ship__rate.is-brand .pm-ship__lines,
.pm-ship__rate.is-brand .pm-ship__lines li{ border-color:var(--color-line-night); }
.pm-ship__fine{ max-width:720px; margin:20px 0 0; color:var(--color-ink-muted); }

.pm-ship__split{ display:grid; grid-template-columns:.8fr 1.2fr; gap:56px; align-items:start; }
.pm-ship__muted{ margin:0; color:var(--color-ink-muted); }
.pm-ship__privacy{ margin:0; border-bottom:1px solid var(--color-line); }
.pm-ship__prow{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.4fr); gap:20px; border-top:1px solid var(--color-line); padding:22px 0; }
.pm-ship__prow dt{ font-size:var(--fs-deck); font-weight:500; color:var(--color-brand); }
.pm-ship__prow dd{ margin:0; color:var(--color-ink-muted); }

.pm-ship__incl{ list-style:none; margin:0; padding:0; gap:18px; }
.pm-ship__item{ border-top:2px solid var(--color-brand); padding-top:18px; }
.pm-ship__itemn{ font-size:var(--fs-label); letter-spacing:.2em; font-weight:600; color:var(--color-accent); }
.pm-ship__itemtitle{ font-family:var(--font-display); font-weight:400; font-size:var(--fs-d5b); line-height:1.15; color:var(--color-ink); margin:8px 0; }

.pm-ship__nextmail{ overflow-wrap:anywhere; }

@media(max-width:1024px){ .pm-ship__split{ grid-template-columns:minmax(0,1fr); gap:var(--s4); } }
@media(max-width:820px){ .pm-ship__rates.pm-grid--3,.pm-ship__stats.pm-grid--3{ grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media(max-width:600px){
  .pm-ship__rates.pm-grid--3,.pm-ship__stats.pm-grid--3{ grid-template-columns:minmax(0,1fr); }
  .pm-card.pm-ship__rate{ padding:var(--s3); }
  .pm-ship__prow{ grid-template-columns:minmax(0,1fr); gap:4px; }
}

/* ============================================================
   หน้า Returns & Refunds (Case A) — เพิ่ม 26 ก.ย. 2026
   template-returns-case-a.php · template-parts/returns/*.php · รายงาน docs/report-returns-refunds-2026-09-26.md
   ♻️ ใช้ซ้ำ: Story (hero/h1/deck/sec/h2) · About (crumb/kicker) · Shipping (.pm-ship__split · .pm-ship__muted) · Why (.pm-why__cta · on-brand)
   🔴 B-3 — กล่อง olive ใช้ --color-on-night สีเดียว (5.20) · ป้าย "Days" ของ artboard 11px lavender → --fs-label 12.5px
   🔴 B-1 — ไม่มี hex · C-7 — ไม่มี !important
   ============================================================ */
.pm-ret__hero{ display:grid; grid-template-columns:1.3fr .7fr; gap:56px; align-items:end; }
.pm-ret__h1{ font-size:var(--fs-d1); line-height:.98; margin-bottom:20px; }
.pm-ret__stats{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; margin:0; }
.pm-card.pm-ret__stat{ padding:24px; border-radius:var(--radius-lg); display:flex; flex-direction:column-reverse; justify-content:flex-end; }
.pm-ret__stat dt{ margin:0; color:var(--color-ink-muted); }
.pm-ret__statn{ margin:0; font-family:var(--font-display); font-size:var(--fs-d3); line-height:1; color:var(--color-brand); }
.pm-ret__unit{ display:block; margin-top:8px; font-family:var(--font-body); font-size:var(--fs-label); letter-spacing:.18em; text-transform:uppercase; font-weight:600; color:var(--color-accent); }

.pm-ret__intro{ margin-bottom:40px; }
.pm-ret__h2{ margin:0; }
.pm-ret__policies{ list-style:none; margin:0; padding:0; gap:18px; }
.pm-card.pm-ret__policy{ padding:32px; border-radius:var(--radius-lg); }
.pm-ret__policy .pm-eyebrow{ margin:0 0 12px; }
.pm-ret__ptitle{ font-size:var(--fs-d5); line-height:1.1; color:var(--color-brand); margin:0 0 12px; }

.pm-why__cta.pm-ret__help{ border-radius:var(--radius-xl); align-items:flex-end; }
.pm-ret__helpkicker{ color:var(--color-on-night); margin:0 0 14px; }
.pm-btn.pm-ret__mail{ border-radius:var(--radius-pill); padding:14px 26px; max-width:100%; overflow-wrap:anywhere; text-align:center; line-height:1.3; }

@media(max-width:1024px){ .pm-ret__hero{ grid-template-columns:minmax(0,1fr); gap:var(--s4); } }
@media(max-width:820px){ .pm-ret__policies.pm-grid--2{ grid-template-columns:minmax(0,1fr); } }
@media(max-width:600px){
  .pm-ret__stats{ grid-template-columns:minmax(0,1fr); }
  .pm-card.pm-ret__policy{ padding:var(--s3); }
}
.pm-ret__help .pm-eyebrow.pm-ret__helpkicker{ color:var(--color-on-night); }   /* pm-components.css โหลดหลัง → .pm-eyebrow ชนะคลาสเดียว (Chrome เจอ 1.29) · 5.20 ✅ */

/* ============================================================
   หน้า Payment Methods (Case A) — เพิ่ม 26 ก.ย. 2026
   template-payment-case-a.php · template-parts/payment/*.php · รายงาน docs/report-payment-methods-2026-09-26.md
   ♻️ ใช้ซ้ำ: Returns (.pm-ret__hero/__stats/__intro/__h2/__help) · Shipping (.pm-ship__split/__muted) · Why (.pm-why__cta)
   ตัวอักษร IBM Plex Mono ของ artboard → --font-body (ไม่เพิ่มฟอนต์ · C-9) · ป้าย 11–12px → --fs-label 12.5px
   🔴 B-1 — ไม่มี hex · C-7 — ไม่มี !important
   ============================================================ */
.pm-pay__statn{ overflow-wrap:anywhere; }

.pm-pay__gateways{ list-style:none; margin:0; padding:0; gap:18px; }
.pm-pay__gateways--one.pm-grid--2{ grid-template-columns:minmax(0,1fr); max-width:640px; }
.pm-card.pm-pay__gw{ padding:36px; border-radius:var(--radius-lg); display:flex; flex-direction:column; gap:18px; }
.pm-pay__gwtop{ display:flex; justify-content:space-between; align-items:flex-start; gap:16px; }
.pm-pay__gwtop .pm-eyebrow{ margin:0; }
.pm-pay__gwn{ font-size:var(--fs-meta); letter-spacing:.06em; color:var(--color-ink-muted); }
.pm-pay__gwname{ font-size:var(--fs-d3); line-height:1; color:var(--color-brand); margin:0 0 6px; }
.pm-pay__gwsub{ margin:0; font-size:var(--fs-small); font-weight:600; color:var(--color-ink); }
.pm-pay__accepted{ display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
.pm-pay__acclabel{ font-size:var(--fs-label); letter-spacing:.06em; text-transform:uppercase; color:var(--color-ink-muted); }
.pm-pay__badges{ list-style:none; margin:0; padding:0; display:flex; flex-wrap:wrap; gap:8px; }
.pm-pay__badge{ display:inline-flex; align-items:center; min-height:30px; padding:0 10px; border:1px solid var(--color-line); border-radius:var(--radius);
                font-size:var(--fs-label); letter-spacing:.06em; color:var(--color-ink); white-space:nowrap; }
.pm-pay__points{ list-style:none; margin:0; padding:18px 0 0; border-top:1px solid var(--color-line); display:flex; flex-direction:column; gap:10px; }
.pm-pay__points li{ display:flex; gap:12px; align-items:baseline; font-size:var(--fs-small); color:var(--color-ink); }
.pm-pay__points li::before{ content:""; width:6px; height:6px; border-radius:50%; background:var(--color-brand); flex:none; transform:translateY(-2px); }

.pm-pay__security{ list-style:none; margin:0; padding:0; gap:18px; }
.pm-card.pm-pay__sec{ padding:26px; border-radius:var(--radius-lg); }
.pm-pay__secn{ display:block; font-size:var(--fs-label); color:var(--color-accent); margin-bottom:10px; }
.pm-pay__seclabel{ font-family:var(--font-display); font-size:var(--fs-d5b); line-height:1.1; color:var(--color-brand); }
.pm-pay__quote{ font-family:var(--font-display); font-style:italic; font-size:var(--fs-d3); line-height:1.25; color:var(--color-ink);
                max-width:820px; margin:64px auto 0; text-align:center; text-wrap:balance; }

@media(max-width:820px){ .pm-pay__gateways.pm-grid--2{ grid-template-columns:minmax(0,1fr); } }
@media(max-width:600px){ .pm-card.pm-pay__gw{ padding:var(--s3); } .pm-pay__quote{ margin-top:var(--s5); } }

/* ============================================================
   หน้า Science & safety (Case A) — เพิ่ม 26 ก.ย. 2026
   template-science-case-a.php · template-parts/science/*.php · รายงาน docs/report-science-2026-09-26.md
   ที่มา: `Case A - Science.dc.html`
   ♻️ ใช้ของหน้า Why ซ้ำ: หัวหน้า (.pm-why__crumb / __kicker / __h1 / __deck) · .pm-why__sec / __h2 · FAQ (.pm-why__faq …)
   🔴 B-1 — ไม่มี hex ในบล็อกนี้ · ป้ายระดับหลักฐานของไฟล์ออกแบบใช้สีพื้น 2 ค่าที่ไม่ใช่ token → แมปเป็น token เดิม
   🔴 B-3 — บนพื้น --color-brand ใช้ --color-on-night สีเดียว (5.20) · ไฟล์ออกแบบใช้ cream 72% + eyebrow lavender → ตก
      pm-utilities.css ตั้ง .pm-text-* บน .pm-band--brand เป็น on-night-2 (3.18 ตก) → override ในบล็อกนี้
   🔴 B-4 — ป้าย / eyebrow ไฟล์ออกแบบ 11.5px → --fs-label 12.5px (เล็กสุดของระบบ)
   ============================================================ */
.pm-sci__hero{ padding-top:var(--s6); }
.pm-sci__hero .pm-why__deck{ margin-bottom:0; }
.pm-sci__basics{ padding-top:var(--s5); }
.pm-sci__grid{ gap:18px; }
.pm-sci__card{ padding:30px; }
.pm-sci__h3{ font-size:var(--fs-d5b); line-height:1.25; color:var(--color-brand); margin:0 0 10px; }
.pm-sci__card .pm-text-small{ margin:0; }

/* Evidence map — <table> (ข้อมูลเป็นตารางจริง · design.md หนี้ 22) */
.pm-sci__map{
  width:100%; border-collapse:collapse; margin:0;
  background:var(--color-surface); border:1px solid var(--color-line); border-radius:var(--radius);
}
.pm-sci__map thead th{
  text-align:left; font-size:var(--fs-label); font-weight:600; letter-spacing:.08em; text-transform:uppercase;
  color:var(--color-ink-muted); padding:16px 30px 12px; border-bottom:1px solid var(--color-line);
}
.pm-sci__map tbody th,.pm-sci__map tbody td{
  text-align:left; vertical-align:middle; padding:22px 30px; border-top:1px solid var(--color-line);
}
.pm-sci__claim{ width:28%; font-family:var(--font-display); font-weight:400; font-size:var(--fs-d6); line-height:1.3; color:var(--color-brand); }
.pm-sci__form{ font-size:var(--fs-small); color:var(--color-ink-body); white-space:nowrap; }
.pm-sci__detail{ font-size:var(--fs-small); line-height:1.55; color:var(--color-ink-muted); }
.pm-sci__badge{
  display:inline-block; font-size:var(--fs-label); line-height:1.2; letter-spacing:.12em; text-transform:uppercase; font-weight:600;
  padding:6px 12px; border-radius:var(--radius); border:1px solid transparent; white-space:nowrap;
}
.pm-sci__badge--moderate{ background:var(--color-brand); color:var(--color-on-night); }                        /* 5.20 */
.pm-sci__badge--emerging{ background:var(--color-accent-field); color:var(--color-ink); }                      /* ink บน accent-field */
.pm-sci__badge--limited{ background:var(--color-surface); color:var(--color-ink-muted); border-color:var(--color-line-strong); } /* 6.68 */
.pm-sci__note{ max-width:700px; margin:var(--s2) 0 0; }

/* Safety — แถบพื้น brand */
.pm-sci__safety{ margin-top:var(--s7); padding-block:80px; }
.pm-sci__split{ display:grid; grid-template-columns:.8fr 1.2fr; gap:56px; }
.pm-sci__safety .pm-eyebrow,
.pm-sci__safety .pm-text-body,
.pm-sci__safety .pm-text-small,
.pm-sci__safety .pm-sci__h3{ color:var(--color-on-night); }
.pm-sci__safetyh{ font-size:var(--fs-d3); line-height:1.05; color:var(--color-on-night); margin:0 0 var(--s2); }
.pm-sci__p{ margin:0 0 var(--s3); }
.pm-sci__rules{ list-style:none; margin:0; padding:0; display:grid; gap:14px; }
.pm-sci__rule{ border:1px solid var(--color-line-night); border-radius:var(--radius); padding:24px 26px; }
.pm-sci__rule .pm-sci__h3{ margin-bottom:8px; }
.pm-sci__rule .pm-text-small{ margin:0; }

.pm-sci__legal{ max-width:820px; margin-top:var(--s3); }
.pm-sci__legal .pm-text-meta{ margin:0 0 6px; }

@media(max-width:1024px){
  .pm-sci__split{ grid-template-columns:minmax(0,1fr); gap:var(--s4); }
}
@media(max-width:820px){
  .pm-sci__grid{ grid-template-columns:minmax(0,1fr); }
  /* ตารางเป็นการ์ดซ้อนบนจอแคบ · display:block ทำให้บางเบราว์เซอร์ทิ้งความเป็นตาราง → role="table|row|cell…" ใน evidence.php รักษาไว้ (แบบ .pm-summary__table) */
  .pm-sci__map thead{ position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); }
  .pm-sci__map,.pm-sci__map tbody,.pm-sci__map tr,.pm-sci__map tbody th,.pm-sci__map tbody td{ display:block; width:auto; }
  .pm-sci__map tr{ padding:20px var(--s3); border-top:1px solid var(--color-line); }
  .pm-sci__map tr:first-child{ border-top:0; }
  .pm-sci__map tbody th,.pm-sci__map tbody td{ padding:0; border:0; }
  .pm-sci__claim{ margin-bottom:10px; }
  .pm-sci__form,.pm-sci__map tbody td:nth-child(3){ display:inline-block; margin:0 12px 10px 0; vertical-align:middle; }
}
@media(max-width:680px){
  .pm-sci__card,.pm-sci__rule{ padding:var(--s3); }
  .pm-sci__safetyh{ font-size:var(--fs-d4); }
  .pm-sci__safety{ padding-block:var(--s6); }
}


/* ============================================================
   หน้า Reviews (Case A) — เพิ่ม 26 ก.ย. 2026 · 🔴🔴 mockup (รีวิวจริง 0 · M-7)
   template-reviews-case-a.php · template-parts/reviews/*.php · รายงาน docs/report-reviews-2026-09-26.md
   ที่มา: `Case A - Reviews.dc.html`
   ♻️ ใช้ของเดิม: .pm-why__crumb / __kicker · .pm-card · .pm-chip / --selected · .pm-util__label
   🔴 B-1 — ไม่มี hex · รางแท่งกระจายของ artboard ใช้สีพื้นที่ไม่ใช่ token → --color-line (ประดับ · ไม่มีตัวอักษรบนนี้)
   🔴 B-4 — ตัวเล็กของ artboard 12.5px → --fs-label/--fs-meta · ดาว = SVG สี accent (ไอคอน ≥ 3:1)
   ============================================================ */
.pm-rv__hero{ padding-top:var(--s6); }
.pm-rv__head{ display:grid; grid-template-columns:1.1fr .9fr; gap:48px; align-items:end; }
.pm-rv__head--solo{ grid-template-columns:minmax(0,1fr); }
.pm-rv__h1{ font-size:var(--fs-d2); line-height:1.0; color:var(--color-brand); margin:0 0 var(--s2); }
.pm-rv__deck{ max-width:480px; margin:0; color:var(--color-ink-muted); }

.pm-rv__summary{ padding:30px; display:flex; gap:30px; align-items:center; }
.pm-rv__avg{ flex:none; display:flex; flex-direction:column; align-items:center; gap:6px; }
.pm-rv__avgn{ margin:0; font-family:var(--font-display); font-size:var(--fs-d2); line-height:1; color:var(--color-brand); }
.pm-rv__stars{ display:inline-flex; gap:3px; color:var(--color-accent); }
.pm-rv__bars{ flex:1; list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:7px; }
.pm-rv__bar{ display:flex; align-items:center; gap:10px; font-size:var(--fs-meta); color:var(--color-ink-muted); }
.pm-rv__barlabel{ flex:none; width:52px; }
.pm-rv__track{ flex:1; height:6px; background:var(--color-line); border-radius:var(--radius); overflow:hidden; }
.pm-rv__fill{ display:block; height:100%; background:var(--color-brand); }
.pm-rv__barn{ flex:none; width:44px; text-align:right; }

.pm-rv__list{ padding-top:44px; padding-bottom:var(--s7); }
.pm-rv__bar-top{ display:flex; justify-content:space-between; align-items:center; gap:20px; flex-wrap:wrap;
  padding-bottom:18px; border-bottom:1px solid var(--color-line); margin-bottom:26px; }
.pm-rv__filters{ display:flex; gap:8px; flex-wrap:wrap; }
.pm-rv__filters .pm-chip:hover{ border-color:var(--color-brand); color:var(--color-brand-ink); }
.pm-rv__filters .pm-chip--selected:hover{ color:var(--color-on-night); }
.pm-rv__count{ margin:0; color:var(--color-ink-muted); }
.pm-rv__grid{ gap:20px; }
.pm-rv__card{ padding:30px; display:flex; flex-direction:column; gap:14px; }
.pm-rv__cardtop{ display:flex; justify-content:space-between; align-items:center; gap:16px; }
.pm-rv__cardtop .pm-text-meta{ margin:0; }
.pm-rv__quote{ margin:0; padding:0; border:0; }
.pm-rv__quote p{ margin:0; font-family:var(--font-display); font-size:var(--fs-d6); line-height:1.35; color:var(--color-brand); }
.pm-rv__body{ margin:0; color:var(--color-ink-muted); }
.pm-rv__meta{ margin-top:auto; display:flex; justify-content:space-between; gap:14px; flex-wrap:wrap;
  border-top:1px solid var(--color-line); padding-top:14px; }
.pm-rv__meta .pm-text-meta{ margin:0; }
.pm-rv__meta{ align-items:center; }   /* แก้ 9 ต.ค. 2026 — "Verified customer" กับลิงก์สินค้า (44px) เหลื่อมกัน 13px */
.pm-rv__product{ color:var(--color-ink); display:inline-flex; align-items:center; min-height:44px; margin-block:-10px; } /* F-3 · margin ลบเพื่อไม่ให้แถวล่างสูงขึ้น */
.pm-rv__product:hover{ color:var(--color-brand-ink); }
.pm-rv__none{ margin:0; color:var(--color-ink-muted); }

.pm-rv__empty{ padding-top:var(--s5); padding-bottom:var(--s7); }
.pm-rv__emptycard{ padding:30px; display:flex; justify-content:space-between; align-items:center; gap:var(--s3); flex-wrap:wrap; }
.pm-rv__emptycard .pm-text-body{ margin:0; max-width:560px; }

@media(max-width:1024px){ .pm-rv__head{ grid-template-columns:minmax(0,1fr); gap:var(--s4); } }
@media(max-width:820px){ .pm-rv__grid{ grid-template-columns:minmax(0,1fr); } }
@media(max-width:680px){
  .pm-rv__h1{ font-size:var(--fs-d3); }
  .pm-rv__summary{ flex-direction:column; align-items:stretch; padding:var(--s3); gap:var(--s3); }
  .pm-rv__card,.pm-rv__emptycard{ padding:var(--s3); }
}


/* ============================================================
   หน้าหมวดสินค้า (product_cat) — Case A · 26 ก.ย. 2026 · MOCKUP รอไว้ก่อน
   รายงาน docs/report-product-category-2026-09-26.md
   ที่มา: `Case A - Product Category.dc.html` · parts: template-parts/category/*.php
   🔴 ยังไม่มีไฟล์ใดผูกหน้านี้เข้ากับ WordPress (H-3) — บล็อกนี้โหลดอยู่แต่ไม่มี markup ใดเรียกใช้บนเซิร์ฟเวอร์
   B-1: ไม่มี hex · ทุกค่ามาจาก pm-tokens.css
   ============================================================ */
.pm-cat__head{ padding-block:var(--s5) 0; }
.pm-cat__hero{
  display:grid; grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);
  gap:var(--s5); align-items:end;
}
/* 🔴 ไฟล์นี้โหลดก่อน pm-components.css → class เดี่ยวแพ้ .pm-eyebrow / .pm-text-deck / .pm-card__title
   ที่ความเจาะจงเท่ากัน (วัด computed style จริง 26 ก.ย.) → ผูกกับตัวแม่เพิ่มหนึ่งชั้น */
.pm-cat__hero .pm-cat__kicker{ color:var(--color-accent); margin-bottom:var(--s2); }   /* accent บน paper ≈ 4.6 ✅ */   /* accent บน paper ≈ 4.6 ✅ */
.pm-cat__h1{ font-size:var(--fs-d2); line-height:1; color:var(--color-brand); margin:0 0 var(--s2); text-wrap:balance; }
.pm-cat__hero .pm-cat__intro{ max-width:52ch; margin:0; color:var(--color-ink-muted); text-wrap:pretty; }
.pm-cat__facts{
  margin:0; background:var(--color-surface);
  border:1px solid var(--color-line); border-radius:var(--radius);
}
.pm-cat__fact{
  display:grid; grid-template-columns:120px minmax(0,1fr); gap:var(--s2);
  padding:14px var(--s3); border-bottom:1px solid var(--color-line);
}
.pm-cat__fact:last-child{ border-bottom:0; }
.pm-cat__fact dt{ color:var(--color-accent); padding-top:2px; }
.pm-cat__fact dd{ margin:0; font-size:var(--fs-small); color:var(--color-ink); }

.pm-cat__main{ padding-block:var(--s5) 0; }
/* แท็บ = ลิงก์ · เส้นใต้ 2px บอกหมวดปัจจุบัน (ไม่ใช่สีอย่างเดียว — F-1/B-3 ไม่พึ่งสี) */
.pm-cat__tabs{
  display:flex; gap:4px; flex-wrap:wrap;
  border-bottom:1px solid var(--color-line);
}
.pm-cat__tab{
  display:inline-flex; align-items:center; min-height:44px;          /* F-3 ✅ */
  padding:0 var(--s2); margin-bottom:-1px;
  border-bottom:2px solid transparent;
  font-size:var(--fs-small); font-weight:500; color:var(--color-ink-muted);
  text-decoration:none;
  transition:color var(--dur-micro) ease, border-color var(--dur-micro) ease;
}
.pm-cat__tab:hover{ color:var(--color-brand-ink); border-bottom-color:var(--color-line-strong); }
.pm-cat__tab.is-current{ color:var(--color-brand); font-weight:600; border-bottom-color:var(--color-brand); }
.pm-cat__tab:focus-visible{ outline:2px solid var(--color-brand-ink); outline-offset:2px; }

.pm-cat__bar{
  display:flex; justify-content:space-between; align-items:center;
  gap:var(--s2) var(--s3); flex-wrap:wrap;
  padding-block:var(--s3);
}
.pm-cat__chips{ display:flex; gap:var(--s1); flex-wrap:wrap; align-items:center; }
.pm-cat__chips .pm-eyebrow{ margin-right:4px; }
.pm-cat__chips .pm-chip:focus-visible{ outline:2px solid var(--color-brand-ink); outline-offset:3px; }
.pm-cat__sortwrap{ display:flex; gap:var(--s2); align-items:center; flex-wrap:wrap; margin-left:auto; }
.pm-cat__count{ margin:0; color:var(--color-ink-muted); }
.pm-cat__empty{
  padding:var(--s5); text-align:center;
  border:1px dashed var(--color-line-strong); border-radius:var(--radius);
}

/* แผง "Using this category" — กล่องในกรอบ container แบบเดียวกับ .pm-shopranges__band */
.pm-cat__use{ padding-block:var(--s7) 0; }
.pm-cat__usebox{
  background:var(--color-brand); color:var(--color-on-night);
  border-radius:var(--radius); padding:var(--s5);
}
.pm-cat__usebox .pm-eyebrow{ color:var(--color-on-night); margin-bottom:var(--s1); }   /* 5.20 ✅ */
.pm-cat__useh{ font-size:var(--fs-d4b); line-height:1.1; color:var(--color-on-night); margin:0 0 var(--s4); }
.pm-cat__steps{
  list-style:none; margin:0; padding:0;
  display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:var(--s2);
}
.pm-cat__step{ border:1px solid var(--color-line-night); border-radius:var(--radius); padding:var(--s3); }
.pm-cat__steptext{ margin:0; font-size:var(--fs-small); color:var(--color-on-night); }

.pm-cat__others{ padding-block:var(--s7); }
.pm-cat__othersh{ font-size:var(--fs-d4); color:var(--color-brand); margin:0 0 var(--s3); }
.pm-cat__othergrid{
  list-style:none; margin:0; padding:0;
  display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:var(--s2);
}
.pm-cat__other{ display:flex; flex-direction:column; gap:var(--s1); }
.pm-cat__other .pm-eyebrow{ color:var(--color-accent); }
.pm-cat__other .pm-cat__othername{ font-family:var(--font-display); font-size:var(--fs-d5b); font-weight:400; line-height:1.15; margin:0; color:var(--color-brand); }
.pm-cat__other .pm-cat__othername a{ color:inherit; }
.pm-cat__other:hover .pm-cat__othername{ color:var(--color-brand-ink); }
.pm-cat__other .pm-text-meta{ margin:0; }
.pm-cat__othergo{
  display:flex; align-items:center; gap:var(--s1); margin:var(--s1) 0 0;
  font-size:var(--fs-meta); font-weight:600; color:var(--color-ink);
}
.pm-cat__othericon{ display:inline-flex; transition:transform var(--dur-micro) ease; }
.pm-cat__othericon svg{ width:16px; height:16px; }   /* SVG ของ pm_home_icon() ไม่มีขนาดในตัว */
.pm-cat__other:hover .pm-cat__othericon{ transform:translateX(3px); }
@media (prefers-reduced-motion:reduce){
  .pm-cat__tab,.pm-cat__othericon{ transition:none; }
  .pm-cat__other:hover .pm-cat__othericon{ transform:none; }                    /* B-9 */
}

@media(max-width:1024px){
  .pm-cat__hero{ grid-template-columns:minmax(0,1fr); gap:var(--s4); }
}
@media(max-width:900px){
  .pm-cat__steps,.pm-cat__othergrid{ grid-template-columns:minmax(0,1fr); }
}
@media(max-width:680px){
  .pm-cat__h1{ font-size:var(--fs-d3); }
  .pm-cat__usebox{ padding:var(--s4); }
  .pm-cat__fact{ grid-template-columns:minmax(0,1fr); gap:4px; }
  .pm-cat__sortwrap{ margin-left:0; }
}


/* ============================================================
   หน้า Contact Us — สถานะของฟอร์มที่ต่อ Fluent Forms · 6 ต.ค. 2026
   template-parts/contact/form.php · js/pm-contact.js · รายงาน docs/report-contact-form-fluent-2026-10-06.md
   ⛔ ไม่มีค่า hex (B-1) · ยังไม่มี token สี error → ใช้ ink + เส้นขอบหนา · ข้อความบอกปัญหาเสมอ (ไม่พึ่งสีอย่างเดียว)
      ถ้าต้องการสี error เฉพาะ ต้องขอ token จาก Claude Design ก่อน
   ⛔ ไม่มี animation / transition (B-9)
   ============================================================ */
.pm-contact__err{ margin:6px 0 0; font-size:var(--fs-small); font-weight:600; color:var(--color-ink); }
.pm-contact__err::before{ content:"! "; }
.pm-input.pm-contact__input[aria-invalid="true"]{ border-color:var(--color-ink); border-width:2px; }
.pm-contact__status{ margin:0; padding:var(--s2) var(--s3); border:2px solid var(--color-ink); border-radius:var(--radius-sm);
                     background:var(--color-paper); color:var(--color-ink); font-size:var(--fs-small); font-weight:600; }
.pm-contact__status a,
.pm-contact__lead a{ color:var(--color-brand-ink); text-decoration:underline; }
.pm-contact__form[aria-busy="true"] .pm-btn{ cursor:progress; }
.pm-contact__sent{ padding:var(--s3) 0 0; }
.pm-contact__sent:focus-visible{ outline:2px solid var(--color-brand-ink); outline-offset:4px; }   /* F-2 */
.pm-contact__senttitle{ margin:0 0 var(--s1); font-family:var(--font-display); font-size:var(--fs-d5); line-height:1.2; color:var(--color-brand); }
.pm-contact__senttext{ margin:0; color:var(--color-ink-muted); }
.pm-contact__form[hidden]{ display:none; }   /* .pm-contact__form เป็น display:flex ซึ่งชนะ [hidden] ของเบราว์เซอร์ → ซ่อนฟอร์มหลังส่งสำเร็จไม่ได้ถ้าไม่มีบรรทัดนี้ */

/* ============================================================
   หน้า "ขอบคุณที่สั่งซื้อ" (order-received) — 8 ต.ค. 2026
   ที่มา: `Case A - Thank You.dc.html` · override woocommerce/checkout/thankyou.php
   รายงาน: docs/report-thank-you-2026-10-08.md
   ⛔ ไม่มีค่า hex — ทุกสีมาจาก pm-tokens.css (B-1)
   ⛔ ไม่มี IBM Plex Mono — ป้าย mono ในแบบ → ฟอนต์ตัวเนื้อ + .pm-eyebrow (B-5)
   สีทุกตัวของ artboard ถูกจับคู่กับ token ที่มีอยู่แล้ว (ตารางเต็มในรายงาน §4) — ไม่เพิ่ม token ใหม่
   ============================================================ */
#pm-main.pm-checkout .pm-ty{ display:flex; flex-direction:column; gap:var(--s4); }

/* hero */
#pm-main.pm-checkout .pm-ty__meta{ display:flex; flex-wrap:wrap; gap:10px; align-items:center; margin:0 0 22px; }
#pm-main.pm-checkout .pm-ty__pill{
  display:inline-flex; align-items:center; gap:var(--s1);
  background:var(--color-brand); color:var(--color-on-night);           /* 5.20 ✅ */
  border-radius:var(--radius-pill); padding:7px 14px;
  font-size:var(--fs-label); font-weight:500; letter-spacing:.08em; text-transform:uppercase; line-height:1.2;
}
#pm-main.pm-checkout .pm-ty__pill--pending{ background:transparent; color:var(--color-ink); border:1px solid var(--color-line-strong); }
#pm-main.pm-checkout .pm-ty__dot{ width:7px; height:7px; border-radius:50%; background:var(--color-on-night); }
#pm-main.pm-checkout .pm-ty__orderno{ font-size:var(--fs-label); font-weight:500; letter-spacing:.06em; text-transform:uppercase; color:var(--color-ink-muted); }
#pm-main.pm-checkout .pm-ty__h1{
  font-family:var(--font-display); font-weight:400;
  font-size:var(--fs-d1); line-height:.98; letter-spacing:-.01em;
  color:var(--color-brand); margin:0 0 20px; max-width:900px; text-wrap:pretty;
}
#pm-main.pm-checkout .pm-ty__h1 em{ color:var(--color-accent); }   /* ตัวใหญ่ ≥ 3:1 ✅ (B-3) */
#pm-main.pm-checkout .pm-ty__deck{ font-size:var(--fs-deck); color:var(--color-ink-muted); margin:0; max-width:640px; text-wrap:pretty; }
#pm-main.pm-checkout .pm-ty__deck b{ color:var(--color-ink); }
#pm-main.pm-checkout .pm-ty__actions{ display:flex; flex-wrap:wrap; gap:12px; margin:var(--s3) 0 0; }

/* ไทม์ไลน์ 4 ขั้น */
#pm-main.pm-checkout .pm-ty__steps{
  list-style:none; margin:var(--s2) 0 0; padding:0;
  display:grid; grid-template-columns:repeat(4,minmax(0,1fr));
  background:var(--color-surface); border:1px solid var(--color-line);
  border-radius:var(--radius-xl); overflow:hidden;
}
#pm-main.pm-checkout .pm-ty__step{ padding:26px var(--s3); margin:0; }
#pm-main.pm-checkout .pm-ty__step + .pm-ty__step{ border-left:1px solid var(--color-line); }
#pm-main.pm-checkout .pm-ty__step.is-done{ background:var(--color-paybox); }
#pm-main.pm-checkout .pm-ty__when{
  display:flex; align-items:center; gap:10px; margin:0 0 14px;
  font-size:var(--fs-label); font-weight:500; letter-spacing:.1em; text-transform:uppercase; color:var(--color-ink-muted);
}
#pm-main.pm-checkout .pm-ty__stepdot{ width:10px; height:10px; border-radius:50%; flex:none; border:1.5px solid var(--color-line-strong); }
#pm-main.pm-checkout .pm-ty__step.is-done .pm-ty__stepdot{ background:var(--color-brand); border-color:var(--color-brand); }
#pm-main.pm-checkout .pm-ty__steptitle{ font-family:var(--font-display); font-size:var(--fs-d5b); line-height:1.1; color:var(--color-brand); margin:0 0 6px; }
#pm-main.pm-checkout .pm-ty__stepnote{ font-size:var(--fs-small); color:var(--color-ink-muted); margin:0; text-wrap:pretty; }

/* สองคอลัมน์ */
#pm-main.pm-checkout .pm-ty__grid{ display:grid; grid-template-columns:minmax(0,1.5fr) minmax(0,.85fr); gap:var(--gap-checkout); align-items:start; }
#pm-main.pm-checkout .pm-ty__col{ display:flex; flex-direction:column; gap:20px; min-width:0; }
#pm-main.pm-checkout .pm-ty__aside{ position:sticky; top:var(--s5); display:flex; flex-direction:column; gap:var(--s2); min-width:0; }

/* การ์ดเข้ม — Before your box arrives */
#pm-main.pm-checkout .pm-ty__night{ background:var(--color-night); color:var(--color-on-night); border-radius:var(--radius-xl); padding:36px 34px; }
#pm-main.pm-checkout .pm-ty__nighteyebrow{ color:var(--color-on-night-3); margin:0 0 14px; }   /* 7.10 ✅ */
#pm-main.pm-checkout .pm-ty__nighth2{ font-family:var(--font-display); font-weight:400; font-size:var(--fs-d3); line-height:1.02; color:var(--color-on-night); margin:0 0 12px; }
#pm-main.pm-checkout .pm-ty__nightdeck{ font-size:var(--fs-body); color:var(--color-on-night-2); margin:0 0 var(--s3); max-width:560px; }   /* 7.71 ✅ */
#pm-main.pm-checkout .pm-ty__night .pm-btn:focus-visible{ outline:2px solid var(--color-on-night); outline-offset:3px; }   /* F-2 บนพื้นเข้ม */

/* การ์ดสว่าง */
#pm-main.pm-checkout .pm-ty__two{ display:grid; grid-template-columns:1fr 1fr; gap:20px; }
#pm-main.pm-checkout .pm-ty__two > :only-child{ grid-column:1 / -1; }   /* ไม่มีการ์ดที่อยู่ (ไม่ใช่เจ้าของออเดอร์) → การ์ดจ่ายเงินเต็มแถว */
#pm-main.pm-checkout .pm-ty__card{ background:var(--color-surface); border:1px solid var(--color-line); border-radius:var(--radius-xl); padding:26px 28px; min-width:0; }
#pm-main.pm-checkout .pm-ty__label{
  font-family:var(--font-body); font-size:var(--fs-label); font-weight:600;
  letter-spacing:.14em; text-transform:uppercase; color:var(--color-ink-muted); margin:0 0 10px;
}
#pm-main.pm-checkout .pm-ty__addr{ font-style:normal; font-size:var(--fs-small); line-height:1.55; color:var(--color-ink); }
#pm-main.pm-checkout .pm-ty__value{ font-size:var(--fs-small); color:var(--color-ink); margin:0; }
#pm-main.pm-checkout .pm-ty__sub{ font-size:var(--fs-meta); color:var(--color-ink-muted); margin:var(--s1) 0 0; }
#pm-main.pm-checkout .pm-ty__small{ font-size:var(--fs-small); color:var(--color-ink-muted); margin:0; }
#pm-main.pm-checkout .pm-ty__small a{ font-weight:600; }
#pm-main.pm-checkout .pm-ty__rule{ height:1px; background:var(--color-line); margin:var(--s2) 0; }

/* สรุปออเดอร์ */
#pm-main.pm-checkout .pm-ty__summary{ padding:26px var(--s3); }
#pm-main.pm-checkout .pm-ty__sumhead{ display:flex; justify-content:space-between; align-items:baseline; gap:12px; margin-bottom:12px; }
#pm-main.pm-checkout .pm-ty__sumtitle{ font-family:var(--font-display); font-weight:400; font-size:var(--fs-d5b); color:var(--color-brand); margin:0; }
#pm-main.pm-checkout .pm-ty__date{ font-size:var(--fs-label); color:var(--color-ink-muted); white-space:nowrap; }
#pm-main.pm-checkout .pm-ty__lines{ list-style:none; margin:0; padding:0; }
#pm-main.pm-checkout .pm-ty__line{ display:flex; gap:14px; align-items:center; border-top:1px solid var(--color-line); padding:14px 0; margin:0; }
#pm-main.pm-checkout .pm-ty__thumb{ display:block; width:52px; height:52px; flex:none; border-radius:var(--radius-sm); overflow:hidden; background:var(--color-shade); }
#pm-main.pm-checkout .pm-ty__thumb img{ width:100%; height:100%; object-fit:cover; display:block; }
#pm-main.pm-checkout .pm-ty__linebody{ flex:1; min-width:0; display:flex; flex-direction:column; }
#pm-main.pm-checkout .pm-ty__linename{ font-size:var(--fs-small); font-weight:600; color:var(--color-brand-ink); line-height:1.25; }
#pm-main.pm-checkout .pm-ty__lineqty{ font-size:var(--fs-label); color:var(--color-ink-muted); }
#pm-main.pm-checkout .pm-ty__linetotal{ font-size:var(--fs-small); white-space:nowrap; }
#pm-main.pm-checkout .pm-ty__totals{ border-top:1px solid var(--color-line); margin:6px 0 0; padding-top:var(--s2); display:flex; flex-direction:column; gap:9px; font-size:var(--fs-small); }
#pm-main.pm-checkout .pm-ty__totalrow{ display:flex; justify-content:space-between; align-items:baseline; gap:12px; }
#pm-main.pm-checkout .pm-ty__totalrow dt{ color:var(--color-ink-muted); font-weight:400; }
#pm-main.pm-checkout .pm-ty__totalrow dd{ margin:0; font-weight:600; text-align:right; }
#pm-main.pm-checkout .pm-ty__totalrow.is-grand{ border-top:1px solid var(--color-line); padding-top:var(--s1); margin-top:4px; }
#pm-main.pm-checkout .pm-ty__totalrow.is-grand dd{ font-family:var(--font-display); font-size:var(--fs-d4); font-weight:400; color:var(--color-brand); }
#pm-main.pm-checkout .pm-ty__totalrow.is-grand dd small{ display:block; font-family:var(--font-body); font-size:var(--fs-label); color:var(--color-ink-muted); }
#pm-main.pm-checkout .pm-ty__sumactions{ display:flex; flex-direction:column; gap:10px; margin-top:18px; }
#pm-main.pm-checkout .pm-ty__sumactions .pm-btn{ width:100%; justify-content:center; border-radius:var(--radius-pill); }
#pm-main.pm-checkout .pm-ty__assure{
  background:var(--color-surface); border:1px solid var(--color-line); border-radius:var(--radius-lg);
  padding:20px 22px; font-size:var(--fs-meta); color:var(--color-ink-muted); margin:0;
}

/* ช่องที่ gateway / ปลั๊กอินพ่นของ (ว่างตามปกติ) */
#pm-main.pm-checkout .pm-ty__hooks{ min-width:0; }

/* While you wait */
#pm-main.pm-checkout .pm-ty__reads{ padding-top:var(--s6); }
#pm-main.pm-checkout .pm-ty__readshead{ display:flex; flex-wrap:wrap; justify-content:space-between; align-items:baseline; gap:12px; margin-bottom:22px; }
#pm-main.pm-checkout .pm-ty__readsh2{ font-family:var(--font-display); font-weight:400; font-size:var(--fs-d3); line-height:1; color:var(--color-brand); margin:0; }
#pm-main.pm-checkout .pm-ty__all{ font-weight:600; font-size:var(--fs-small); display:inline-flex; align-items:center; min-height:44px; }   /* F-3 */
#pm-main.pm-checkout .pm-ty__readgrid{ list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:20px; }
#pm-main.pm-checkout .pm-ty__readgrid li{ margin:0; }
#pm-main.pm-checkout .pm-ty__read{
  display:flex; flex-direction:column; gap:10px; height:100%; box-sizing:border-box;
  background:var(--color-surface); border:1px solid var(--color-line); border-radius:var(--radius-xl);
  padding:26px 26px 24px; color:var(--color-ink); text-decoration:none;
  transition:border-color var(--dur-micro) ease;
}
#pm-main.pm-checkout .pm-ty__read:hover{ border-color:var(--color-brand); }
#pm-main.pm-checkout .pm-ty__read:focus-visible{ outline:2px solid var(--color-brand-ink); outline-offset:3px; }   /* F-2 */
#pm-main.pm-checkout .pm-ty__readtitle{ font-family:var(--font-display); font-size:var(--fs-d5b); line-height:1.08; color:var(--color-brand); text-wrap:pretty; }

@media(max-width:1024px){
  #pm-main.pm-checkout .pm-ty__grid{ grid-template-columns:1fr; }
  #pm-main.pm-checkout .pm-ty__aside{ position:static; }
  #pm-main.pm-checkout .pm-ty__steps{ grid-template-columns:1fr 1fr; }
  #pm-main.pm-checkout .pm-ty__step:nth-child(3){ border-left:0; }
  #pm-main.pm-checkout .pm-ty__step:nth-child(n+3){ border-top:1px solid var(--color-line); }
  #pm-main.pm-checkout .pm-ty__readgrid{ grid-template-columns:1fr 1fr; }
}
@media(max-width:700px){
  #pm-main.pm-checkout .pm-ty__steps,
  #pm-main.pm-checkout .pm-ty__two,
  #pm-main.pm-checkout .pm-ty__readgrid{ grid-template-columns:1fr; }
  #pm-main.pm-checkout .pm-ty__step + .pm-ty__step{ border-left:0; border-top:1px solid var(--color-line); }
  #pm-main.pm-checkout .pm-ty__h1{ font-size:var(--fs-d2); }
  #pm-main.pm-checkout .pm-ty__night,
  #pm-main.pm-checkout .pm-ty__card{ padding:var(--s3) 20px; }
}
@media (prefers-reduced-motion: reduce){
  #pm-main.pm-checkout .pm-ty__read{ transition:none; }   /* B-9 */
}
@media print{
  /* ใบเสร็จ: เหลือเฉพาะเนื้อออเดอร์ */
  #pm-main.pm-checkout .pm-ty__night,
  #pm-main.pm-checkout .pm-ty__reads,
  #pm-main.pm-checkout .pm-ty__sumactions,
  #pm-main.pm-checkout .pm-ty__assure{ display:none; }
  #pm-main.pm-checkout .pm-ty__grid{ grid-template-columns:1fr; }
  #pm-main.pm-checkout .pm-ty__aside{ position:static; }
}

/* ---- หน้าขอบคุณ: ตัวเลขเงิน — 🔴 กรณีที่ C-7 อนุญาต !important (เพิ่ม 8 ต.ค. 2026 หลังทดสอบออเดอร์ #9366) ----
   `wp-custom-css` (หนี้ 17) ประกาศ `.woocommerce-Price-amount.amount{font-family:"DM Sans"!important; color:…!important}`
   วัดบนหน้าจริง: ราคาทุกตัวในสรุปออเดอร์เป็น DM Sans (ไม่ได้โหลด → ฟอนต์เครื่อง) · ชนะด้วยความจำเพาะไม่ได้
   ✅ ใช้ inherit → ราคาตามฟอนต์/สีของแถวที่มันอยู่ (ยอดรวม = display · brand) · ไม่มีค่าสีใหม่ (B-1)
   🔴 วันที่ย้าย Additional CSS ออกตามแผนหนี้ 17 ให้ลบสองบรรทัดนี้ทิ้งด้วย */
#pm-main.pm-checkout .pm-ty .woocommerce-Price-amount.amount{ font-family:inherit !important; color:inherit !important; }

/* ---- หน้าขอบคุณ: กล่องที่ gateway พ่นของ (เช่น COD "Pay with cash upon delivery.") — เพิ่ม 8 ต.ค. 2026 หลังทดสอบ #9366 ----
   เดิมลอยเป็นข้อความเปล่าใต้กริด → ทำเป็นการ์ดเดียวกับแถบล่างของคอลัมน์ขวา */
#pm-main.pm-checkout .pm-ty__hooks{
  background:var(--color-surface); border:1px solid var(--color-line); border-radius:var(--radius-lg);
  padding:20px 22px; font-size:var(--fs-small); color:var(--color-ink-body);
}
#pm-main.pm-checkout .pm-ty__hooks > :first-child{ margin-top:0; }
#pm-main.pm-checkout .pm-ty__hooks > :last-child{ margin-bottom:0; }


/* ============================================================
   หน้า 404 — Case A (8 ต.ค. 2026) · 404.php · ที่มา `Case A - 404.dc.html`
   รายงาน docs/report-404-2026-10-08.md · ⛔ ไม่มี hex (B-1)
   สี artboard → token: พื้นการ์ด → --color-surface · ขอบการ์ด → --color-line · ขอบช่องค้นหา → --color-line-strong (ขอบ control 3.07)
   กล่องเข้ม → --color-night · ข้อความรอง → --color-on-night-2 · เลข "0" + ลำดับการ์ด → --color-accent (ตัวประดับ / ป้ายเล็ก 5.13 บน surface)
   ============================================================ */
#pm-main.pm-404{ padding-bottom:var(--s7); }
.pm-404__hero{ padding-top:72px; }
.pm-404__grid{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.1fr); gap:var(--s5); align-items:end; }
.pm-404__kicker{ margin:0 0 var(--s3); overflow-wrap:anywhere; }
.pm-404__path{ text-transform:none; letter-spacing:.04em; }
.pm-404__num{
  display:flex; margin:0;
  font-family:var(--font-display); font-weight:400;
  font-size:clamp(150px, 22vw, 260px); line-height:.82; letter-spacing:-.03em;
  color:var(--color-brand);
}
.pm-404__num em{ display:block; font-style:italic; color:var(--color-accent); line-height:.82; }   /* ตัวประดับขนาดใหญ่ (B-3 ตัวใหญ่ ≥ 3:1) · aria-hidden */
.pm-404__copy{ padding-bottom:14px; }
.pm-404__h1{
  font-family:var(--font-display); font-weight:400;
  font-size:var(--fs-d2); line-height:1; color:var(--color-brand);
  margin:0 0 var(--s2); text-wrap:pretty;
}
.pm-404__deck{ font-size:var(--fs-body-long); color:var(--color-ink-muted); margin:0 0 26px; max-width:520px; text-wrap:pretty; }   /* 6.68 ✅ */
.pm-404__search{ display:flex; flex-wrap:wrap; gap:10px; max-width:560px; margin:0; }
.pm-404__input{
  flex:1; min-width:220px; min-height:50px; box-sizing:border-box;
  border:1px solid var(--color-line-strong); border-radius:var(--radius-pill);
  padding:0 20px; font-family:var(--font-body); font-size:var(--fs-small);
  background:var(--color-surface); color:var(--color-ink);
}
.pm-404__input::placeholder{ color:var(--color-ink-muted); opacity:1; }
.pm-404__input:focus{ border-color:var(--color-brand); }
.pm-404__input:focus-visible{ outline:2px solid var(--color-brand-ink); outline-offset:2px; }   /* F-2 — ห้าม outline:none ตามแบบ */
.pm-btn.pm-404__go{ border-radius:var(--radius-pill); min-height:50px; padding:0 26px; }   /* .pm-btn อยู่ใน pm-components.css ที่โหลดทีหลัง → ต้อง (0,2,0) · วัดก่อนแก้: 2px */

.pm-404__next{ padding-top:var(--s6); }
.pm-404__nexth{ margin:0 0 var(--s2); font-family:var(--font-body); }
.pm-404__links{ list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:20px; }
.pm-404__links > li{ margin:0; display:flex; }
.pm-404__link{
  display:flex; flex-direction:column; gap:10px; flex:1; min-height:190px;
  background:var(--color-surface); border:1px solid var(--color-line); border-radius:var(--radius-xl);
  padding:26px; color:var(--color-ink); text-decoration:none;
  transition:border-color var(--dur-micro) ease;
}
.pm-404__link:hover{ border-color:var(--color-brand); color:var(--color-ink); }
.pm-404__n{ font-size:var(--fs-label); font-weight:500; letter-spacing:.08em; color:var(--color-accent); }
.pm-404__title{ font-family:var(--font-display); font-size:var(--fs-d5); line-height:1.05; color:var(--color-brand); }
.pm-404__note{ flex:1; font-size:var(--fs-small); color:var(--color-ink-muted); text-wrap:pretty; }
.pm-404__cta{ font-size:var(--fs-h6); font-weight:600; color:var(--color-brand-ink); }

.pm-404__help{ padding-top:28px; }
.pm-404__night{
  display:flex; flex-wrap:wrap; gap:20px; align-items:center; justify-content:space-between;
  background:var(--color-night); color:var(--color-on-night);
  border-radius:var(--radius-xl); padding:30px 34px;
}
.pm-404__helptext{ max-width:620px; }
.pm-404__helph{ font-family:var(--font-display); font-weight:400; font-size:var(--fs-d5); line-height:1.1; color:var(--color-on-night); margin:0 0 4px; }
.pm-404__helpdeck{ font-size:var(--fs-small); color:var(--color-on-night-2); margin:0; }   /* 7.71 ✅ */
.pm-404__actions{ display:flex; flex-wrap:wrap; gap:12px; }
.pm-btn.pm-404__pill{ border-radius:var(--radius-pill); padding:0 22px; }   /* เหตุผลเดียวกับ .pm-404__go */
.pm-404__night .pm-btn:focus-visible{ outline:2px solid var(--color-on-night); outline-offset:3px; }   /* F-2 บนพื้นเข้ม */

@media (max-width:1024px){
  .pm-404__grid{ grid-template-columns:1fr; gap:var(--s4); }
  .pm-404__links{ grid-template-columns:1fr 1fr; }
}
@media (max-width:700px){
  .pm-404__hero{ padding-top:var(--s5); }
  .pm-404__links{ grid-template-columns:1fr; }
  .pm-404__link{ min-height:0; }
  .pm-404__night{ padding:26px 22px; }
}
@media (prefers-reduced-motion:reduce){ .pm-404__link{ transition:none; } }

/* ==========================================================================
   หน้า Cookie Settings (Case A) — เพิ่ม 8 ต.ค. 2026 · template-cookie-case-a.php
   รายงาน docs/report-cookie-settings-2026-10-08.md
   ♻️ ใช้ของหน้า Story ซ้ำ: .pm-story__hero/h1/deck/sec · breadcrumb .pm-about__crumb · ปุ่ม .pm-btn
   สี artboard → token (ตารางเต็มในรายงาน §4): ราง/ขอบป้าย → --color-line-strong (control ต้อง ≥3:1) ·
   ขอบ "Always on" → --color-accent-field · เส้นคั่น → --color-line · IBM Plex Mono → --font-body + uppercase
   ========================================================================== */
.pm-cky__bar{
  display:flex; flex-wrap:wrap; gap:var(--s2); align-items:center; justify-content:space-between;
  margin-top:var(--s4); padding:var(--s2) 0;
  border-top:1px solid var(--color-line); border-bottom:1px solid var(--color-line);
}
.pm-cky__pills{ display:flex; flex-wrap:wrap; gap:var(--s1); }
.pm-cky__pill{
  display:inline-flex; align-items:center; min-height:44px; padding:0 18px;
  border:1px solid var(--color-line-strong); border-radius:var(--radius-pill);
  color:var(--color-ink); font-size:var(--fs-h6); font-weight:600; text-decoration:none;
  transition:border-color var(--dur-micro) ease, color var(--dur-micro) ease;
}
.pm-cky__pill:hover{ border-color:var(--color-brand); color:var(--color-brand); }
.pm-cky__pill.is-current{ background:var(--color-brand); border-color:var(--color-brand); color:var(--color-on-night); }
.pm-cky__updated{
  margin:0; font-size:var(--fs-label); font-weight:500; letter-spacing:.12em; text-transform:uppercase;
  color:var(--color-ink-muted); white-space:nowrap;
}

.pm-cky__grid{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,460px); gap:80px; align-items:start; }
.pm-cky__article{ min-width:0; }
.pm-cky__sec{ border-top:1px solid var(--color-line); padding:36px 0 40px; }
.pm-cky__sec p{ font-size:var(--fs-body); color:var(--color-ink-muted); margin:0 0 var(--s2); max-width:var(--measure-prose); }
.pm-cky__sec p:last-child{ margin-bottom:0; }
.pm-cky__n{ display:block; font-size:var(--fs-meta); font-weight:500; color:var(--color-accent); margin-bottom:14px; }
.pm-cky__h2{ font-family:var(--font-display); font-weight:400; font-size:var(--fs-d4b); line-height:1.05; color:var(--color-brand); margin:0 0 var(--s2); }
.pm-cky__list{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:var(--s1); }
.pm-cky__list li{ display:flex; gap:14px; align-items:baseline; }
.pm-cky__list li::before{
  content:""; flex:none; width:6px; height:6px; border-radius:50%;
  background:var(--color-accent); transform:translateY(-2px);
}

.pm-cky__table{
  width:100%; border-collapse:separate; border-spacing:0; overflow:hidden;
  background:var(--color-surface); border:1px solid var(--color-line); border-radius:var(--radius-lg);
}
.pm-cky__table th,
.pm-cky__table td{ text-align:left; vertical-align:baseline; padding:18px 24px; border-top:1px solid var(--color-line); }
.pm-cky__table thead th{
  border-top:0; padding:14px 24px; font-size:var(--fs-label); font-weight:500; letter-spacing:.12em;
  text-transform:uppercase; color:var(--color-ink-muted);
}
.pm-cky__table tbody th{ font-weight:600; color:var(--color-ink); }
.pm-cky__life{ font-family:var(--font-display); font-size:22px; line-height:1.1; color:var(--color-brand); }
.pm-cky__use{ font-size:var(--fs-small); color:var(--color-ink-muted); }

.pm-cky__panel{
  position:sticky; top:calc(69px + var(--s3));
  background:var(--color-surface); border:1px solid var(--color-line); border-radius:var(--radius-xl); padding:30px;
}
.pm-cky__kicker{
  margin:0 0 12px; font-size:var(--fs-label); font-weight:500; letter-spacing:.14em; text-transform:uppercase; color:var(--color-ink-muted);
}
.pm-cky__ptitle{ font-family:var(--font-display); font-weight:400; font-size:var(--fs-d4); line-height:1.05; color:var(--color-brand); margin:0 0 var(--s1); }
.pm-cky__pdeck{ font-size:var(--fs-h6); color:var(--color-ink-muted); margin:0 0 18px; }
.pm-cky__cats{ list-style:none; margin:0; padding:0; }
.pm-cky__cat{
  display:flex; gap:var(--s2); align-items:flex-start; justify-content:space-between;
  padding:18px 0; border-top:1px solid var(--color-line);
}
.pm-cky__catcopy{ min-width:0; }
.pm-cky__catname{ margin:0 0 3px; font-weight:600; font-size:15.5px; color:var(--color-ink); }
.pm-cky__catdesc{ margin:0; font-size:var(--fs-h6); line-height:1.5; color:var(--color-ink-muted); text-wrap:pretty; }
.pm-cky__always{
  flex:none; padding:7px 10px; border:1px solid var(--color-accent-field); border-radius:var(--radius-pill);
  font-size:var(--fs-label); font-weight:500; letter-spacing:.1em; text-transform:uppercase; color:var(--color-accent); white-space:nowrap;
}
/* สวิตช์ 48×28 ตามแบบ · พื้นที่กด 48×44 ด้วย padding โปร่ง (F-3) */
.pm-cky__switch{
  flex:none; position:relative; width:48px; height:44px; margin:-8px 0; padding:0;
  border:0; background:transparent; cursor:pointer;
}
.pm-cky__switch::before{
  content:""; position:absolute; left:0; top:8px; width:48px; height:28px; border-radius:var(--radius-pill);
  background:var(--color-line-strong); transition:background-color var(--dur-micro) ease;
}
.pm-cky__switch[aria-checked="true"]::before{ background:var(--color-brand); }
.pm-cky__knob{
  position:absolute; top:12px; left:4px; width:20px; height:20px; border-radius:50%;
  background:var(--color-surface); box-shadow:var(--shadow-card); transition:transform var(--dur-micro) ease;
}
.pm-cky__switch[aria-checked="true"] .pm-cky__knob{ transform:translateX(20px); }
.pm-cky__switch:disabled{ cursor:default; opacity:.5; }
.pm-cky__actions{ display:flex; flex-direction:column; gap:10px; margin-top:var(--s1); padding-top:20px; border-top:1px solid var(--color-line); }
.pm-cky__btn{ width:100%; border-radius:var(--radius-pill); padding:0 var(--s2); }
.pm-cky__btn:disabled{ cursor:default; opacity:.5; }
.pm-cky__pair{ display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.pm-cky__note{ margin:4px 0 0; font-size:var(--fs-meta); color:var(--color-accent); text-align:center; }
.pm-cky__note:empty{ margin:0; }  /* ไม่ display:none — live region ที่ถูกซ่อนตอนแรกมักไม่ถูกอ่านเมื่อมีข้อความ */

@media (max-width:1024px){
  .pm-cky__grid{ grid-template-columns:1fr; gap:var(--s5); }
  .pm-cky__panel{ position:static; }
}
@media (max-width:700px){
  .pm-cky__h2{ font-size:var(--fs-d3); }
  .pm-cky__table, .pm-cky__table tbody{ display:block; }
  .pm-cky__table thead{ display:none; }
  .pm-cky__table tr{ display:grid; gap:4px; padding:18px 20px; border-top:1px solid var(--color-line); }
  .pm-cky__table tbody tr:first-child{ border-top:0; }
  .pm-cky__table th,
  .pm-cky__table td{ padding:0; border:0; }
  .pm-cky__panel{ padding:24px 20px; }
  .pm-cky__updated{ white-space:normal; }
}
@media (prefers-reduced-motion:reduce){
  .pm-cky__pill, .pm-cky__switch::before, .pm-cky__knob{ transition:none; }
}
.pm-cky__always--off{ border-color:var(--color-line); color:var(--color-ink-muted); }
/* รอบตรวจด้วยตา 8 ต.ค. — .pm-btn ใน pm-components (โหลดหลัง) ทับมุมมน · ตารางโดนเส้นแนวตั้งของธีมแม่ · ระยะบนตามแบบ 56px */
.pm-cky .pm-story__sec{ padding-top:var(--s5); }
.pm-cky .pm-cky__btn{ border-radius:var(--radius-pill); padding:0 var(--s2); }
.pm-cky .pm-cky__table th,
.pm-cky .pm-cky__table td{ border-left:0; border-right:0; border-bottom:0; background:transparent; }
.pm-cky__table th:first-child{ width:26%; }
.pm-cky__table .pm-cky__life{ width:30%; }
@media (max-width:700px){
  .pm-cky .pm-cky__table th,
  .pm-cky .pm-cky__table td{ border:0; width:auto; }
}

/* ==========================================================================
   หน้า Privacy Policy (Case A) — เพิ่ม 8 ต.ค. 2026 · template-privacy-case-a.php (page 3)
   รายงาน docs/report-privacy-policy-2026-10-08.md
   ♻️ ใช้ซ้ำ: Story (hero/h1/deck/sec) · About (crumb) · Cookie (.pm-cky__bar/pills/pill/updated/h2/list)
            · Why/Returns (.pm-why__cta · .pm-ret__help/__mail) · ปุ่ม .pm-btn--on-night / --ghost-night
   สี artboard → token: กล่องท้ายหน้า → --color-night (ค่าเดียวกับแบบ) · ตัวเลข/จุด → --color-accent ·
   เส้นคั่น/ขอบ → --color-line · พื้นการ์ด → --color-surface · IBM Plex Mono → --font-body + uppercase
   header เกาะบน 69px → สารบัญ top + scroll-margin-top บวก 69px (แบบเขียน 24px ซึ่งไม่มี header เกาะ)
   ========================================================================== */
.pm-pp .pm-story__sec{ padding-top:var(--s5); }
.pm-pp .pm-pp__helpsec{ padding-top:40px; }
.pm-pp__grid{ display:grid; grid-template-columns:260px minmax(0,1fr); gap:80px; align-items:start; }

.pm-pp__toc{
  position:sticky; top:calc(69px + var(--s3));
  background:var(--color-surface); border:1px solid var(--color-line); border-radius:var(--radius-lg); padding:var(--s3);
}
.pm-pp__tochead{
  margin:0 0 14px; font-size:var(--fs-label); font-weight:500; letter-spacing:.14em; text-transform:uppercase;
  color:var(--color-ink-muted);
}
.pm-pp__toclist{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:2px; }
.pm-pp__toclist a{
  display:flex; gap:12px; padding:8px 0; font-size:var(--fs-small); line-height:1.35;
  color:var(--color-ink); text-decoration:none;
}
.pm-pp__toclist a:hover{ color:var(--color-brand); }
.pm-pp__tocn{ flex:none; font-size:var(--fs-label); font-weight:500; line-height:1.6; color:var(--color-accent); }

.pm-pp__article{ max-width:780px; min-width:0; }
.pm-pp__sec{
  display:grid; grid-template-columns:56px minmax(0,1fr); column-gap:8px; align-items:baseline;
  border-top:1px solid var(--color-line); padding:36px 0 40px; scroll-margin-top:calc(69px + var(--s3));
}
.pm-pp__n{ font-size:var(--fs-meta); font-weight:500; color:var(--color-accent); }
.pm-cky__h2.pm-pp__h2{ margin:0 0 18px; }
.pm-pp__blocks{ grid-column:2; display:flex; flex-direction:column; gap:14px; }
.pm-pp__block{ display:flex; flex-direction:column; gap:10px; }
.pm-pp__block p{ margin:0; font-size:var(--fs-body); color:var(--color-ink-muted); max-width:var(--measure-prose); }
.pm-pp__h3{ margin:8px 0 0; font-family:var(--font-body); font-size:var(--fs-h5); font-weight:600; line-height:1.4; color:var(--color-ink); }
.pm-pp__block p.pm-pp__callout{
  max-width:none; background:var(--color-surface); border:1px solid var(--color-line); border-radius:var(--radius-lg);
  padding:var(--s3) 28px; font-family:var(--font-display); font-size:var(--fs-d5); line-height:1.15; color:var(--color-brand);
}
.pm-pp__link{ align-self:flex-start; font-size:var(--fs-small); font-weight:600; color:var(--color-brand); overflow-wrap:anywhere; }
.pm-pp__link:hover{ color:var(--color-brand-ink); }

.pm-why__cta.on-night.pm-pp__help{ background:var(--color-night); padding:34px 38px; align-items:center; }
.pm-pp__help .pm-why__ctatitle{ font-size:var(--fs-d5); margin-bottom:6px; max-width:620px; }
.pm-pp__help .pm-text-body{ color:var(--color-on-night-2); max-width:620px; }
.pm-pp__helpbtns{ display:flex; flex-wrap:wrap; gap:12px; max-width:100%; }
.pm-pp .pm-btn.pm-ret__mail{ border-radius:var(--radius-pill); }

@media(max-width:1024px){
  .pm-pp__grid{ grid-template-columns:minmax(0,1fr); gap:var(--s4); }
  .pm-pp__toc{ position:static; }
}
@media(max-width:700px){
  .pm-pp__sec{ grid-template-columns:minmax(0,1fr); row-gap:6px; }
  .pm-pp__blocks{ grid-column:1; }
  .pm-why__cta.on-night.pm-pp__help{ padding:var(--s4) var(--s3); }
  .pm-pp__helpbtns, .pm-pp__helpbtns .pm-btn{ width:100%; }
}

/* ==========================================================================
   Is It Safe (L4 Safety & Evidence) — template-safe-case-a.php · 9 ต.ค. 2026
   ที่มา: `Case A - Is It Safe.dc.html` · รายงาน docs/report-is-it-safe-2026-10-09.md
   ♻️ ใช้ซ้ำ: หัวหน้า Why (.pm-why__crumb / __kicker / __h1 / __deck) · โครงบทความ (.pm-artshell / .pm-artaside /
      .pm-arttoc / .pm-artask / .pm-artanswer__box / .pm-artrefs / .pm-artnote) · FAQ Why (.pm-why__faq …) · การ์ดบรีฟ (.pm-why__slot …)
   ⛔ ไม่มีค่า hex ในบล็อกนี้ — ทุกสีมาจาก pm-tokens.css (B-1)
   🔴 สีเตือน --warn (แดงอิฐ) ของ artboard ไม่มีใน token → ใช้ --color-ink (ขอบกล่อง Who / ช่อง "—") · ไม่เพิ่ม token เอง
   ========================================================================== */
.pm-safe__hero{ padding-top:var(--s6); }
.pm-safe__top{ display:grid; grid-template-columns:minmax(0,1fr) 340px; gap:var(--s6); align-items:end; }
.pm-safe__h1.pm-why__h1{ max-width:760px; }
.pm-safe__top .pm-why__deck{ margin-bottom:0; }
.pm-card.pm-safe__glance{ padding:0; }
.pm-safe__glancehead{ margin:0; padding:14px 20px; border-bottom:1px solid var(--color-line); }
.pm-safe__glance dl{ margin:0; }
.pm-safe__glancerow{ display:grid; grid-template-columns:72px minmax(0,1fr); gap:14px; align-items:baseline; padding:14px 20px; }
.pm-safe__glancerow + .pm-safe__glancerow{ border-top:1px solid var(--color-line); }
.pm-safe__glancen{ font-family:var(--font-display); font-size:30px; line-height:1; color:var(--color-brand); }
.pm-safe__glancen.is-warn{ color:var(--color-ink); }
.pm-safe__glance dd{ margin:0; font-size:var(--fs-h6); color:var(--color-ink-muted); }
.pm-safe__answer{ margin-top:var(--s5); }
.pm-safe__meta{
  display:flex; flex-wrap:wrap; gap:var(--s1) var(--s3); margin:var(--s4) 0 0; padding:var(--s2) 0;
  border-top:1px solid var(--color-line); border-bottom:1px solid var(--color-line);
}

/* คอลัมน์เนื้อหาเต็มช่อง (การ์ดงานวิจัย 2 ใบต่อแถวแคบเกินที่ 720px) · ย่อหน้ายังคุมที่ --measure-body */
.pm-artcol.pm-safe__col{ max-width:none; }
.pm-safe__lede, .pm-safe__who{ max-width:var(--measure-body); }
.pm-safe__col{ font-size:var(--fs-body-long); line-height:1.75; color:var(--color-ink-body); }
.pm-safe__col p{ margin:0; }
.pm-safe__muted{ color:var(--color-ink-muted); }
.pm-safe__h2{ font-size:var(--fs-d4b); line-height:1.12; color:var(--color-brand); margin:72px 0 14px; scroll-margin-top:calc(69px + var(--s3)); }
.pm-safe__lede{ margin:0 0 28px; }
.pm-safe__col .pm-safe__lede{ margin-bottom:28px; }
#who, #hrt, #cancer{ scroll-margin-top:calc(69px + var(--s3)); }

/* Who should not use it */
.pm-safe__who{ border:2px solid var(--color-ink); border-radius:var(--radius); background:var(--color-surface); padding:var(--s4); }
.pm-safe__whokick{ color:var(--color-ink); margin:0; }
.pm-safe__whoh{ font-size:36px; line-height:1.1; color:var(--color-ink); margin:10px 0 12px; }
.pm-safe__who > .pm-safe__muted{ margin-bottom:20px; }
.pm-safe__wholist{ list-style:none; margin:0; padding:0; border-top:1px solid var(--color-line); }
.pm-safe__wholist li{ display:grid; grid-template-columns:28px minmax(0,1fr); gap:12px; padding:14px 0; border-bottom:1px solid var(--color-line); font-weight:600; color:var(--color-ink); }
.pm-safe__whon{ font-size:var(--fs-meta); font-weight:500; color:var(--color-brand-ink); padding-top:3px; }
.pm-safe__col .pm-safe__whonote{ margin-top:var(--s2); }

/* Study cards */
.pm-safe__studies{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:20px; }
.pm-safe__study{ display:flex; flex-direction:column; background:var(--color-surface); border:1px solid var(--color-line); border-radius:var(--radius); }
.pm-safe__studyhead{ padding:22px 22px 18px; border-bottom:1px solid var(--color-line); }
.pm-safe__col .pm-safe__studyrow{ display:flex; justify-content:space-between; align-items:center; gap:12px; margin-bottom:10px; }
.pm-safe__studyn{ margin:0; color:var(--color-accent); }
.pm-safe__tag{ font-size:var(--fs-label); line-height:1.4; padding:3px 9px; border-radius:var(--radius-pill); background:var(--color-accent-field); color:var(--color-ink); white-space:nowrap; }
.pm-safe__h3{ font-size:25px; line-height:1.2; margin:0; color:var(--color-ink); }
.pm-safe__facts{ margin:0; padding:6px 22px 18px; flex:1; }
.pm-safe__facts > div{ display:grid; grid-template-columns:108px minmax(0,1fr); gap:14px; padding:11px 0; border-bottom:1px solid var(--color-line); }
.pm-safe__facts dt{ font-size:var(--fs-label); color:var(--color-ink-muted); padding-top:2px; }
.pm-safe__facts dd{ margin:0; font-size:var(--fs-small); line-height:1.55; color:var(--color-ink-body); }
.pm-safe__studynote{ margin:0 22px 22px; padding:14px 16px; background:var(--color-paper); border-radius:var(--radius); font-size:var(--fs-h6); line-height:1.6; color:var(--color-ink-muted); }
.pm-safe__col .pm-safe__notelabel{ margin:0 0 6px; color:var(--color-brand-ink); }

/* Duration chart */
.pm-safe__chart{ margin:0 0 28px; padding:26px 26px 22px; background:var(--color-surface); border:1px solid var(--color-line); border-radius:var(--radius); }
.pm-safe__charthead{ display:block; margin:0 0 18px; }
.pm-safe__bars{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:10px; }
.pm-safe__bar{ display:grid; grid-template-columns:150px minmax(0,1fr); gap:var(--s2); align-items:center; }
.pm-safe__barlabel{ font-size:var(--fs-h6); line-height:1.4; color:var(--color-ink-body); }
.pm-safe__bartrack{ position:relative; height:22px; border-radius:1px; background:repeating-linear-gradient(135deg,var(--color-line) 0 6px,transparent 6px 12px); }
.pm-safe__barfill{ position:absolute; left:0; top:0; bottom:0; width:var(--w); background:var(--color-brand); border-radius:1px; }
.pm-safe__barwk{ position:absolute; left:calc(var(--w) + 8px); top:50%; transform:translateY(-50%); font-size:var(--fs-label); line-height:1; color:var(--color-brand-ink); background:var(--color-surface); padding:2px 4px; }
.pm-safe__axisrow{ margin-top:10px; }
.pm-safe__axis{ display:flex; justify-content:space-between; font-size:var(--fs-label); color:var(--color-ink-muted); border-top:1px solid var(--color-line); padding-top:6px; }
.pm-safe__col .pm-safe__chartnote{ margin-top:var(--s2); }
.pm-safe__unknowns{ margin:0; }
.pm-safe__unknowns > div{ display:grid; grid-template-columns:200px minmax(0,1fr); gap:var(--s3); padding:18px 0; border-top:1px solid var(--color-line); }
.pm-safe__unknowns dt{ font-weight:600; color:var(--color-ink); }
.pm-safe__unknowns dd{ margin:0; color:var(--color-ink-muted); }

/* Side effects · HRT · cancer */
.pm-safe__two{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:20px; }
.pm-safe__effect{ border-top:2px solid var(--color-brand); padding-top:18px; }
.pm-safe__effect.is-alt{ border-top-color:var(--color-accent); }
.pm-safe__col .pm-safe__effectlabel{ margin:0 0 10px; color:var(--color-brand-ink); }
.pm-safe__col .is-alt .pm-safe__effectlabel{ color:var(--color-accent); }
.pm-safe__pair{ margin-top:72px; }
.pm-safe__pair p{ font-size:var(--fs-body); }
.pm-card.pm-safe__hrt{ display:flex; flex-direction:column; gap:18px; padding:28px; }
.pm-safe__hrt p{ flex:1; }
.pm-safe__cardh{ font-size:30px; line-height:1.15; color:var(--color-brand); margin:0 0 12px; }
.pm-card.pm-safe__hrt .pm-safe__cardh{ margin:0; }
.pm-safe__cancer{ background:var(--color-night); color:var(--color-on-night-2); border-radius:var(--radius); padding:28px; }
.pm-safe__cancer .pm-safe__cardh{ color:var(--color-on-night); }

/* Choosing */
.pm-safe__col .pm-safe__checkhead{ margin:0 0 12px; }
.pm-safe__checks{ list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1px; background:var(--color-line); border:1px solid var(--color-line); border-radius:var(--radius); overflow:hidden; }
.pm-safe__checks li{ display:grid; grid-template-columns:30px minmax(0,1fr); gap:10px; align-items:start; padding:20px 22px; background:var(--color-surface); font-size:var(--fs-body); }
.pm-safe__box{ width:18px; height:18px; margin-top:4px; border:1.5px solid var(--color-brand); border-radius:var(--radius); }
.pm-safe__col .pm-safe__outro{ margin:20px 0 14px; font-size:var(--fs-body); }
.pm-safe__col .pm-safe__btns{ display:flex; flex-wrap:wrap; gap:12px; }

/* FAQ — ปุ่ม WhatsApp ในข้อสุดท้าย */
.pm-safe__col .pm-safe__faqbtn{ margin:0 0 20px; padding:0 var(--s3); }

/* If you decide to try it */
.pm-safe__next{ padding-top:var(--s7); }
.pm-card.pm-safe__nextbox{ padding:44px; }
.pm-safe__nexthead{ max-width:640px; margin-bottom:30px; }
.pm-safe__nexthead p{ margin:0; }
.pm-safe__nexthead .pm-why__kicker{ margin-bottom:12px; }
.pm-safe__nextgrid{ list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:20px; }
.pm-safe__nextcard{ display:flex; flex-direction:column; gap:12px; color:var(--color-ink); text-decoration:none; }
.pm-safe__nexttitle{ font-family:var(--font-display); font-size:25px; line-height:1.2; color:var(--color-brand); }
.pm-safe__nextcard:hover .pm-safe__nexttitle{ color:var(--color-brand-ink); text-decoration:underline; }
.pm-safe__nextcopy{ font-size:var(--fs-small); }

/* References */
.pm-safe__refs{ padding:var(--s6) 0 var(--s7); }
.pm-safe__refsbox{ max-width:820px; border-top:1px solid var(--color-line); padding-top:26px; }
.pm-safe__refsh.pm-eyebrow{ font-family:var(--font-body); margin:0 0 14px; }
.pm-safe__refsbox li{ margin-bottom:var(--s1); }

@media(max-width:1024px){
  .pm-safe__top{ grid-template-columns:minmax(0,1fr); gap:var(--s4); }
  .pm-safe__studies, .pm-safe__nextgrid{ grid-template-columns:minmax(0,1fr); }
}
@media(max-width:640px){
  .pm-safe__h2{ font-size:var(--fs-d4); margin-top:var(--s5); }
  .pm-safe__whoh{ font-size:var(--fs-d5); }
  .pm-safe__who, .pm-card.pm-safe__nextbox{ padding:var(--s3); }
  .pm-safe__two, .pm-safe__checks{ grid-template-columns:minmax(0,1fr); }
  .pm-safe__pair{ margin-top:var(--s5); }
  .pm-safe__facts > div, .pm-safe__unknowns > div{ grid-template-columns:minmax(0,1fr); gap:4px; }
  .pm-safe__bar{ grid-template-columns:minmax(0,1fr); gap:6px; }
  .pm-safe__axisrow > span:first-child{ display:none; }
  .pm-safe__chart{ padding:var(--s3) var(--s2); }
}

/* ==========================================================================
   Pure Pueraria (L5-B วัตถุดิบสำหรับผู้ผลิต) — template-pure-case-a.php · 9 ต.ค. 2026
   ที่มา: `Case A - Pure Pueraria.dc.html` · รายงาน docs/report-pure-pueraria-2026-10-09.md
   ♻️ ใช้ซ้ำ: หัวหน้า Why (.pm-why__crumb / __h1) · การ์ดบรีฟ (.pm-why__slot …) · การ์ดสินค้า/ฟอร์มซื้อ (.pm-prodcard · .pm-buy)
   ⛔ ไม่มีค่า hex ในบล็อกนี้ — ทุกสีมาจาก pm-tokens.css (B-1)
   🔴 สีเตือน --warn ของ artboard ไม่มีใน token → --color-ink (กล่องข้อควรระวัง) · บรรทัดฐานหน้า Is It Safe
   ========================================================================== */
.pm-pure__hero{ padding-top:var(--s6); }
.pm-pure__top{ display:grid; grid-template-columns:minmax(0,1.05fr) minmax(0,1fr); gap:56px; align-items:center; }
.pm-pure__pill{
  display:inline-flex; margin:0 0 20px; padding:5px 11px; border:1px solid var(--color-accent); border-radius:var(--radius-pill);
  font-size:var(--fs-label); letter-spacing:.14em; text-transform:uppercase; color:var(--color-accent);
}
.pm-pure__h1.pm-why__h1{ font-size:var(--fs-d3); line-height:1.02; max-width:none; margin-bottom:18px; }
.pm-pure__deck{ margin:0 0 14px; color:var(--color-ink-body); }
.pm-pure__lede{ margin:0 0 28px; max-width:560px; color:var(--color-ink-muted); line-height:1.7; }
.pm-pure__btns{ display:flex; flex-wrap:wrap; gap:12px; }
.pm-pure__mosaic{ display:grid; grid-template-columns:1fr 1fr; gap:14px; }
.pm-pure__mosaicwide{ grid-column:1 / 3; }
.pm-pure__mosaic > div{ min-width:0; }
.pm-pure__facts{
  list-style:none; display:flex; flex-wrap:wrap; gap:12px 40px; margin:44px 0 0; padding:18px 0;
  border-top:1px solid var(--color-line); border-bottom:1px solid var(--color-line);
}
.pm-pure__facts li{ display:flex; align-items:center; gap:10px; }
.pm-pure__dot{ width:8px; height:8px; border-radius:50%; background:var(--color-brand); flex:none; }

.pm-pure__sec{ padding-top:var(--s7); }
.pm-pure__sec--last{ padding-bottom:var(--s7); }
.pm-pure__kicker{ margin:0 0 12px; color:var(--color-accent); }
.pm-pure__h2{ font-family:var(--font-display); font-weight:400; font-size:var(--fs-d4b); line-height:1.05; color:var(--color-brand); margin:0; }
.pm-pure__h2--sm{ font-size:var(--fs-d4); }
.pm-pure__muted{ margin:0; color:var(--color-ink-muted); }
#why, #spec, #six, #coa, #range{ scroll-margin-top:calc(69px + var(--s3)); }

/* Why */
.pm-pure__why{ display:grid; grid-template-columns:340px minmax(0,1fr); gap:72px; align-items:start; }
.pm-pure__whyside{ position:sticky; top:110px; }
.pm-pure__whyside .pm-pure__h2{ margin-bottom:22px; }
.pm-pure__r45{ aspect-ratio:var(--ratio-hero); }
.pm-pure__whybody{ max-width:700px; font-size:var(--fs-body-long); line-height:1.78; color:var(--color-ink-body); }
.pm-pure__whybody > p{ margin:0 0 22px; }
.pm-pure__quote{ margin:8px 0 30px; padding:0 0 0 24px; border-left:2px solid var(--color-brand); }
.pm-pure__quote p{ margin:0; font-family:var(--font-display); font-size:32px; line-height:1.2; color:var(--color-brand); }
.pm-pure__stat{
  display:grid; grid-template-columns:auto minmax(0,1fr); gap:22px; align-items:center; margin:8px 0 30px; padding:22px 24px;
  background:var(--color-surface); border:1px solid var(--color-line); border-radius:var(--radius);
}
.pm-pure__stat p{ margin:0; font-size:var(--fs-body); line-height:1.6; }
.pm-pure__stat .pm-pure__statn{ font-family:var(--font-display); font-size:56px; line-height:1; color:var(--color-brand); white-space:nowrap; }
.pm-pure__note{
  display:grid; grid-template-columns:24px minmax(0,1fr); gap:14px; margin-top:8px; padding:20px 22px;
  border:1px solid var(--color-ink); border-radius:var(--radius); background:var(--color-surface); font-size:var(--fs-body); line-height:1.65;
}
.pm-pure__note p{ margin:0; }
.pm-pure__note a{ font-weight:600; text-decoration:underline; }
.pm-pure__notemark{ font-weight:600; color:var(--color-ink); }

/* Spec table */
.pm-pure__spechead{ display:flex; justify-content:space-between; align-items:flex-end; gap:24px; flex-wrap:wrap; margin-bottom:28px; }
.pm-pure__missing{ margin:0; }
.pm-pure__tablewrap{ overflow-x:auto; border:1px solid var(--color-line); border-radius:var(--radius); background:var(--color-surface); }
.pm-pure__table{ width:100%; min-width:600px; border-collapse:collapse; table-layout:fixed; }
.pm-pure__table th, .pm-pure__table td{ padding:16px 24px; text-align:left; vertical-align:top; }
.pm-pure__table thead th, .pm-pure__table thead td{ padding:24px; border-bottom:1px solid var(--color-line); }
.pm-pure__table thead td{ width:200px; }
.pm-pure__table thead th + th, .pm-pure__table thead td + th, .pm-pure__table tbody td{ border-left:1px solid var(--color-line); }
.pm-pure__table tbody tr:nth-child(odd){ background:var(--color-paper); }
.pm-pure__table tbody th{ font-size:var(--fs-meta); font-weight:500; color:var(--color-ink-muted); }
.pm-pure__table tbody td{ font-size:var(--fs-body); line-height:1.55; color:var(--color-ink-body); }
.pm-pure__pack{ aspect-ratio:16 / 9; margin-bottom:16px; }
.pm-pure__pack img{ width:100%; height:100%; object-fit:contain; }
.pm-pure__grade{ display:block; color:var(--color-accent); }
.pm-pure__colname{ display:block; margin-top:4px; font-family:var(--font-display); font-weight:400; font-size:30px; line-height:1.1; color:var(--color-ink); }
.pm-pure__table tbody tr.pm-pure__buyrow, .pm-pure__table tbody tr.pm-pure__bulkrow{ background:var(--color-surface); } /* ต้องแรงกว่า tr:nth-child(odd) */
/* ราคา + Add to cart สองคอลัมน์แนวเดียวกัน (แก้ 9 ต.ค.) — td สูง 1px = ให้ลูก height:100% ใช้ความสูงจริงของแถวได้ */
.pm-pure__buyrow td{ height:1px; }
.pm-pure__buycell{ display:flex; flex-direction:column; height:100%; max-width:340px; }
.pm-pure__bulkrow th, .pm-pure__bulkrow td{ padding-top:0; padding-bottom:26px; }

/* Six */
.pm-pure__sixhead{ max-width:680px; margin-bottom:34px; }
.pm-pure__sixhead .pm-pure__h2{ margin-bottom:14px; }
.pm-pure__six{ list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); border-top:1px solid var(--color-line); border-left:1px solid var(--color-line); }
.pm-pure__six li{ display:flex; flex-direction:column; gap:14px; padding:28px 26px 30px; border-right:1px solid var(--color-line); border-bottom:1px solid var(--color-line); }
.pm-pure__sixn{ font-family:var(--font-display); font-size:44px; line-height:1; color:var(--color-accent); }
.pm-pure__sixt{ margin:0; font-family:var(--font-body); font-size:var(--fs-body-long); font-weight:600; color:var(--color-ink); }
.pm-pure__six p{ margin:0; font-size:var(--fs-small); line-height:1.6; color:var(--color-ink-muted); }
.pm-pure__more{ margin:22px 0 0; font-weight:600; }

/* COA band */
.pm-pure__band{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:56px; align-items:start; padding:56px; background:var(--color-brand); color:var(--color-on-night); border-radius:var(--radius); }
.pm-pure__band .pm-pure__bandkick{ margin:0 0 12px; color:var(--color-on-night); }
.pm-pure__bandh.pm-pure__h2{ color:var(--color-on-night); margin-bottom:16px; }
.pm-pure__bandp{ margin:0 0 28px; line-height:1.65; color:var(--color-on-night); }
.pm-pure__mail{ margin:18px 0 0; color:var(--color-on-night); }
.pm-pure__mail a{ color:var(--color-on-night); text-decoration:underline; }
.pm-pure__tell{ padding:26px 28px; background:var(--color-night-card); border-radius:var(--radius); }
.pm-pure__tell ol{ list-style:none; margin:0; padding:0; }
.pm-pure__tell li{ display:grid; grid-template-columns:34px minmax(0,1fr); gap:10px; align-items:baseline; padding:12px 0; border-bottom:1px solid var(--color-line-night); color:var(--color-on-night); }
.pm-pure__tell li span{ font-size:var(--fs-meta); color:var(--color-on-night); } /* on-night-2 บนแถบ = 3.18 ตก B-3 (ตรวจ 9 ต.ค.) */

/* Range + related */
.pm-pure__rule{ display:flex; align-items:baseline; gap:12px; margin-bottom:24px; }
.pm-pure__rule > span{ flex:1; height:1px; background:var(--color-line); }
.pm-pure__relh.pm-eyebrow{ margin:0; font-family:var(--font-body); color:var(--color-accent); }
.pm-pure__rel{ list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:16px; }
.pm-pure__rel a{
  display:flex; flex-direction:column; justify-content:space-between; gap:28px; height:100%; min-height:150px; padding:22px;
  border:1px solid var(--color-line); border-radius:var(--radius); background:var(--color-surface); color:var(--color-ink); text-decoration:none;
}
.pm-pure__rel a:hover{ border-color:var(--color-brand); }
.pm-pure__relq{ font-size:var(--fs-small); line-height:1.55; color:var(--color-ink-muted); }
.pm-pure__rellabel{ font-family:var(--font-display); font-size:22px; line-height:1.15; color:var(--color-brand); }

@media(max-width:1024px){
  .pm-pure__top, .pm-pure__why, .pm-pure__band{ grid-template-columns:minmax(0,1fr); gap:var(--s4); }
  .pm-pure__whyside{ position:static; }
  .pm-pure__whyside .pm-pure__r45{ max-width:340px; }
  .pm-pure__six, .pm-pure__rel{ grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media(max-width:640px){
  .pm-pure__h1.pm-why__h1{ font-size:var(--fs-d4); }
  .pm-pure__mosaic{ grid-template-columns:minmax(0,1fr); } /* การ์ดบรีฟในช่องจตุรัสครึ่งจอล้น 12px ที่ 375 (ตรวจ 9 ต.ค.) */
  .pm-pure__mosaicwide{ grid-column:auto; }
  .pm-pure__h2{ font-size:var(--fs-d4); }
  .pm-pure__six, .pm-pure__rel{ grid-template-columns:minmax(0,1fr); }
  .pm-pure__band{ padding:32px 22px; }
  .pm-pure__table thead td{ width:96px; }
  .pm-pure__table th, .pm-pure__table td, .pm-pure__table thead th, .pm-pure__table thead td{ padding:14px 16px; }
  .pm-pure__quote p{ font-size:26px; }
  .pm-pure__stat .pm-pure__statn{ font-size:44px; }
}
