.nv-member-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:12px;background:#fff3f9}.nv-member-grid figure{margin:0;min-width:0;border:1px solid #efd6e2;border-radius:10px;overflow:hidden;background:#f7eaf1}.nv-member-grid img{width:100%;aspect-ratio:3/4;object-fit:contain;display:block}.nv-member-grid figcaption{padding:8px 4px;background:#fff;text-align:center;font-size:14px;font-weight:600;color:#4a0a2a;overflow-wrap:anywhere}.nv-no-photo{aspect-ratio:3/4;display:grid;place-items:center;color:#85566c;font-size:32px}.nv-price-list{display:grid;gap:7px;padding:12px 16px;background:#fff}.nv-price-row{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:9px 11px;background:#fff4fa;border:1px solid #efd6e2;border-radius:8px;color:#4a0a2a}.nv-price-row strong{font-size:20px;color:#ae174d;white-space:nowrap}.nv-price-row small{font-size:12px;margin-left:7px;color:#80536a}.nv-collection-card{border:1px solid #efd6e2;background:white;border-radius:16px;overflow:hidden;color:#4a0a2a;box-shadow:0 5px 18px #4a0a2a08;align-self:start}.nv-collection-title{margin:0;padding:16px 16px 0;font-weight:700;font-size:20px}.nv-collection-trigger{width:calc(100% - 32px);margin:12px 16px 16px;padding:12px;background:#ce2860;color:white;border:0;border-radius:9px;font:inherit;cursor:pointer;min-height:44px}.nv-admin-picker h4{font-weight:700;font-size:16px;margin:12px 0}.nv-help{font-size:12px;line-height:1.7;color:#80536a;margin:10px 0}.nv-add-row{display:flex;gap:8px}.nv-add-row select{min-width:0;flex:1}.nv-add-row button,.nv-admin-member-title button{padding:8px 12px;border:1px solid #e9cada;border-radius:8px;min-height:40px;background:white;color:#4a0a2a}.nv-add-row select{border:1px solid #e9cada;border-radius:8px;background:white;color:#4a0a2a;padding:8px}.nv-selected-member{border:1px solid #e9cada;border-radius:10px;padding:12px;margin:12px 0;background:#fff}.nv-admin-member-title{display:flex;justify-content:space-between;gap:8px;align-items:center}.nv-photo-choices{display:flex;flex-wrap:wrap;gap:7px;margin-top:12px;max-height:230px;overflow:auto;padding:4px}.nv-photo-choices button{padding:0;border:2px solid transparent;width:65px;min-height:80px;background:#f8eaf1;border-radius:8px;overflow:hidden;cursor:pointer}.nv-photo-choices button[aria-pressed=true]{border-color:#ce2860;box-shadow:0 0 0 2px #f9c2d7}.nv-photo-choices img{width:100%;height:82px;object-fit:contain;display:block}.nv-error{color:#aa2443;font-size:13px;margin:8px 0}.nv-gallery-dialog{width:min(900px,calc(100vw - 24px));max-height:90dvh;border:1px solid #edcddd;border-radius:16px;padding:0;background:#fff9fc;color:#4a0a2a}.nv-gallery-dialog::backdrop{background:#32102399}.nv-gallery-dialog header{display:flex;justify-content:space-between;gap:14px;align-items:center;padding:14px 20px;position:sticky;top:0;background:#fff;z-index:2;border-bottom:1px solid #edcddd}.nv-gallery-dialog h2{font-size:20px;font-weight:700;margin:0}.nv-gallery-dialog button{cursor:pointer;min-height:44px}.nv-gallery-members{display:flex;gap:8px;padding:14px 20px;overflow:auto}.nv-gallery-members button{border:1px solid #edcddd;border-radius:9px;padding:9px 16px;white-space:nowrap;background:white}.nv-gallery-members button[aria-pressed=true]{background:#4a0a2a;color:white}.nv-gallery-content{display:grid;grid-template-columns:1fr 1fr;gap:18px;padding:0 20px 20px}.nv-gallery-main{width:100%;height:400px;object-fit:contain;background:#f7eaf1;border-radius:10px}.nv-gallery-content h3{font-size:22px;font-weight:700}.nv-admin-picker button:disabled{opacity:.4;cursor:not-allowed}.nv-admin-picker button:focus-visible,.nv-gallery-dialog button:focus-visible,.nv-collection-trigger:focus-visible{outline:3px solid #a81749;outline-offset:2px}#duoGrid,#soloGrid{grid-template-columns:1fr!important}@media(min-width:768px){#duoGrid,#soloGrid{grid-template-columns:repeat(2,minmax(0,1fr))!important}.nv-member-grid:not(.nv-duo-grid){grid-template-columns:repeat(3,minmax(0,1fr))}.nv-admin-picker{min-width:0}}@media(min-width:1100px){#duoGrid{grid-template-columns:repeat(3,minmax(0,1fr))!important}}@media(max-width:600px){.nv-gallery-content{grid-template-columns:1fr}.nv-gallery-main{height:340px}.nv-price-row strong{font-size:19px}} 
.nv-legacy-poster{padding:12px;background:#fff3f9}.nv-legacy-poster img{width:100%;aspect-ratio:1024/731;object-fit:contain;display:block;border:1px solid #efd6e2;border-radius:10px;background:#f7eaf1}
/* ── VS คั่นกลางคู่ Duo + ป้ายข้อมูลช่วยตัดสินใจ (23 ก.ย. 69) ───────────── */
.nv-duo-grid{position:relative}
/* ป้าย VS = ภาพที่เจ้าของส่งมา (ลบพื้นหลังแล้ว) — มีแสงและเส้นสปีดมาในตัว
   จึงไม่ต้องวาดวงกลม/เงาซ้อนทับอีก · ย่อเป็น WebP 18 KB เสิร์ฟจาก /vs-badge.webp
   อัตราส่วนภาพ 200×237 → กว้าง 78px สูงตามสัดส่วน */
.nv-vs{position:absolute;left:50%;top:38%;transform:translate(-50%,-50%);z-index:2;pointer-events:none;
 width:78px;aspect-ratio:200/237;
 background:url('/vs-badge.webp?v=20260923c') center/contain no-repeat;
 filter:drop-shadow(0 3px 10px rgba(231,48,101,.38))}
@media(prefers-reduced-motion:no-preference){
 .nv-collection-card:hover .nv-vs{transform:translate(-50%,-50%) scale(1.06);transition:transform .25s ease}}
.nv-member-meta,.nv-gallery-meta{display:block;margin-top:4px;font-weight:500;font-size:12px;line-height:1.6;color:#80536a}
.nv-member-meta span,.nv-gallery-meta span{display:block;overflow-wrap:anywhere}
.nv-gallery-meta{font-size:15px;color:#6d4459;margin:6px 0 10px}

/* ปุ่มลอย LINE/Telegram/แชต เป็น position:fixed ทับมุมล่างขวาของจอเสมอ — ตัวเลขราคาที่
   ชิดขวาการ์ดจะถูกบังบางแถวตามจังหวะที่เลื่อน · จัดราคาให้เป็นคอลัมน์กลางการ์ดแทน
   ปุ่มจึงทับแค่พื้นที่ว่าง (ในป๊อปอัปไม่เจอปัญหานี้ เพราะ <dialog> อยู่ top layer เหนือปุ่ม) */
.nv-collection-card .nv-price-row{justify-content:flex-start;gap:0}
.nv-collection-card .nv-price-row>span{flex:0 0 58%;min-width:0}

/* 🪤 NVkissme.html มี media query ที่ตั้ง `header{display:flex!important;
   flex-direction:column!important}` ไว้สำหรับหัวเว็บ แต่ selector เปล่าแบบนั้นจับ
   <header> ทุกตัวในหน้า รวมหัวป๊อปอัปนี้ → ชื่อกลุ่มกับปุ่มปิดหลุดไปคนละบรรทัด
   ต้องทับด้วย !important เท่านั้น (specificity อย่างเดียวชนะ !important ไม่ได้) */
.nv-gallery-dialog>header{flex-direction:row!important;padding:14px 20px!important}

/* ── ฟอนต์ให้ตรงกับการ์ดหน้าแรก (23 ก.ย. 69) ────────────────────────────────
   ทั้งสองหน้าโหลดชุดเดียวกัน (Bai Jamjuree · Anuphan · Playfair Display) และมี
   ตัวแปร --brand-pink/--brand-wine เหมือนกัน — เดิมไฟล์นี้ไม่ได้ตั้ง font-family เลย
   การ์ดเลยไปหยิบฟอนต์ระบบมาใช้ ดูเป็นคนละเว็บกับหน้าแรก
   ชื่อ = .neon-name ของหน้าแรก (Playfair + ไล่สีชมพู→ไวน์) · ราคา/ปุ่ม = .price-box */
.nv-collection-card,.nv-gallery-dialog{font-family:'Bai Jamjuree','Anuphan',sans-serif}
.nv-collection-title,.nv-member-grid figcaption,.nv-gallery-dialog h2,.nv-gallery-dialog h3{
 /* 🪤 NVkissme.html ตั้ง h2,h3{font-family:'Anuphan'!important} ไว้ชนะ Tailwind — หัวข้อของเรา
    เป็น h3/h2 ด้วย เลยโดนทับไปด้วย ต้องย้ำ !important ถึงจะได้ Playfair เหมือนชื่อน้องหน้าแรก */
 font-family:'Playfair Display','Anuphan','Bai Jamjuree',serif!important;font-weight:700;letter-spacing:.02em;
 background-image:linear-gradient(105deg,var(--brand-pink,#E73065),var(--brand-wine,#93154E));
 -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent;
 filter:drop-shadow(0 1px 4px rgba(147,21,78,.18))}
.nv-member-grid figcaption{font-size:15px;padding:9px 4px 4px}
.nv-member-meta,.nv-gallery-meta{font-family:'Bai Jamjuree','Anuphan',sans-serif;
 -webkit-text-fill-color:currentColor;color:#80536a}
.nv-gallery-meta{color:#6d4459}
.nv-price-row{font-family:'Anuphan','Bai Jamjuree',sans-serif;font-weight:600;letter-spacing:.005em}
.nv-price-row strong{font-weight:700;letter-spacing:.015em}
.nv-collection-trigger{font-family:'Anuphan','Bai Jamjuree',sans-serif;font-weight:700;
 letter-spacing:.015em;font-size:16px;
 background:linear-gradient(135deg,var(--brand-pink,#E73065) 0%,var(--brand-wine,#93154E) 100%);
 border:1px solid rgba(255,255,255,.16);text-shadow:0 1px 2px rgba(0,0,0,.18);
 box-shadow:0 8px 18px rgba(231,48,101,.32),inset 0 1px 0 rgba(255,255,255,.25)}
.nv-gallery-members button{font-family:'Anuphan','Bai Jamjuree',sans-serif;font-weight:600}

/* ── ปรับตามที่เจ้าของทักรอบ 2 (23 ก.ย. 69) ─────────────────────────────── */

/* 1) ชื่อแพ็กเกจให้เท่าชื่อน้องบนการ์ดหน้าแรก (.card h2 = 1.42rem · letter-spacing .02em) */
.nv-collection-title{font-size:1.42rem;line-height:1.35;margin:0;padding:16px 16px 2px}

/* 2) แถวราคา — จัดคู่ "เวลา + ราคา" ไว้กลางการ์ดแบบกล่องราคาหน้าแรก แทนการดันชิดขอบ
      ได้ทั้งความสมดุลและพ้นปุ่มลอย LINE/TG ที่ลอยทับมุมขวาล่างของจอ
      (วัดที่การ์ด 355px: คู่ราคาจบที่ ~296px · ปุ่มลอยเริ่ม 299px) */
.nv-price-list{gap:8px;padding:14px 16px 4px}
.nv-collection-card .nv-price-row{justify-content:center;gap:0;padding:10px 11px}
.nv-collection-card .nv-price-row>span{flex:0 0 auto;min-width:118px;text-align:right;
 display:flex;align-items:baseline;justify-content:flex-end;gap:6px}
.nv-collection-card .nv-price-row>span small{margin:0}
.nv-collection-card .nv-price-row>strong{min-width:88px;text-align:left;padding-left:18px}

/* 3) ป๊อปอัปคู่ (Duo) ยังเป็นธีมมืดของเว็บรุ่นเก่า — ทับให้เป็นชมพูสว่างเหมือนทั้งเว็บ
      ทำที่ CSS เพราะคลาสพวกนี้ถูกประกอบเป็นสตริงกระจายหลายสิบจุดในไฟล์ ไล่แก้มือแล้วตกหล่นง่าย
      `#profilePairBody` เป็น id จึงชนะ utility ของ Tailwind ได้โดยไม่ต้องใช้ !important
      ยกเว้นที่ Tailwind ใส่ค่ามาทาง inline-ish utility (bg-*/border-*) ต้องย้ำ */
#profilePairBody{background:#fff!important;border-color:#efd6e2!important;color:#4a0a2a;
 font-family:'Bai Jamjuree','Anuphan',sans-serif;box-shadow:0 18px 44px rgba(74,10,42,.18)}
#profilePairBody h2{font-family:'Playfair Display','Anuphan',serif!important;font-weight:700;font-style:normal;
 letter-spacing:.02em;font-size:1.55rem;filter:none;
 background-image:linear-gradient(105deg,var(--brand-pink,#E73065),var(--brand-wine,#93154E));
 -webkit-background-clip:text;background-clip:text}
#profilePairBody h2 span{color:transparent;-webkit-text-fill-color:transparent;filter:none;text-shadow:none}
#profilePairBody h2 .text-red-500{-webkit-text-fill-color:var(--brand-pink,#E73065);color:var(--brand-pink,#E73065)}
#profilePairBody p,#profilePairBody .text-slate-400{color:#80536a}
#profilePairBody .text-slate-300{color:#6d4459}
#profilePairBody .text-white{color:#4a0a2a}
#profilePairBody .text-red-500{color:#ae174d}
#profilePairBody .bg-slate-800\/40,#profilePairBody .bg-slate-800\/60{background:#fff8fc!important}
#profilePairBody .bg-black\/40,#profilePairBody .bg-black\/30{background:#fff!important}
#profilePairBody .bg-slate-700\/50{background:#f7e6ef!important}
#profilePairBody .border-white\/10,#profilePairBody .border-white\/5{border-color:#efd6e2!important}
#profilePairBody h3{font-family:'Playfair Display','Anuphan',serif!important;font-style:normal;letter-spacing:.02em}
@media(min-width:640px){#profilePairBody h2{font-size:2rem}}
/* ชื่อน้องที่ทับอยู่บนรูป (พื้นไล่สีดำจากล่างขึ้นบน) ต้องเป็นสีขาว —
   กฎ .text-red-500 ด้านบนทำให้กลายเป็นสีไวน์ซึ่งอ่านไม่ออกบนพื้นเข้ม */
#profilePairBody a h3,#profilePairBody a h3 .text-red-500{color:#fff!important;
 -webkit-text-fill-color:#fff;text-shadow:0 2px 6px rgba(0,0,0,.75)}
