/* หน้าสั่งซื้อ /shop/ — โครงจาก AI_CommentSell/assets/app.css สีและฟอนต์ชุดเดียวกับเว็บหลัก (Base.astro + design.js) */
:root{
  --bg:#f6f6f4; --card:#fff; --ink:#1c1e1a; --muted:#5d6259; --line:#ececea;
  --sage-t:#e8f0e5; --sage-m:#b5ccb0; --sage-d:#3b5d42;
  --butter-t:#f8f1dc; --butter-m:#e8d8a4; --butter-d:#6f5611;
  --ok:#3b5d42; --ok-bg:#e8f0e5; --err:#9e2c2c; --err-bg:#fbeceb; --wait:#6f5611; --wait-bg:#f8f1dc;
  --ff:"Familjen Grotesk","Anuphan",system-ui,sans-serif; --radius:18px;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --bg:#12140f; --card:#1b1e17; --ink:#eef0e9; --muted:#9aa092; --line:#2a2e25;
  --sage-t:#243020; --sage-d:#b5ccb0; --butter-t:#332c17; --butter-d:#e8d8a4;
  --ok:#b5ccb0; --ok-bg:#243020; --err:#f0a3a3; --err-bg:#3a2222; --wait:#e8d8a4; --wait-bg:#332c17;
}}
*{box-sizing:border-box}
/* Familjen Grotesk มี contextual alternates ที่วาด "!!!!" เป็น "!!1!" และเลขซ้ำเพี้ยน — ปิดทั้งเว็บ รวมช่องกรอก (เจ้าของเจอ 6 ต.ค. 2569) */
*,input,textarea,select,button{font-variant-ligatures:none;font-feature-settings:"calt" 0,"liga" 0}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--ff);font-size:16px;line-height:1.7;-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased}
a{color:inherit}
.lnk{color:var(--sage-d);text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--sage-m)}

header.top{display:flex;align-items:center;justify-content:space-between;gap:12px;max-width:560px;margin:0 auto;padding:14px 16px}
header.top .logo{width:108px;color:var(--ink)}
header.top .logo svg{display:block;width:100%;height:auto}
header.top nav{display:flex;align-items:center;gap:4px;font-size:14px}
header.top nav a{padding:7px 10px;border-radius:999px;text-decoration:none;color:var(--muted);white-space:nowrap}
header.top nav a:hover{background:var(--card);color:var(--ink)}
.cartl{position:relative;display:inline-flex;align-items:center}
.cn{position:absolute;top:0;right:0;min-width:17px;height:17px;padding:0 4px;border-radius:999px;background:var(--sage-d);color:#fff;font-size:11px;line-height:17px;text-align:center;font-weight:600}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .cn{color:#12140f}}

.wrap{max-width:560px;margin:0 auto;padding:4px 16px 32px}
.head{text-align:center;padding:10px 0 18px}
.head h1{font-size:24px;font-weight:500;margin:0;line-height:1.3}
.ono{color:var(--muted);font-size:13.5px;margin-top:4px}

.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:20px;margin-bottom:14px}
.card h2{font-size:17px;font-weight:600;margin:0 0 12px}
.center{text-align:center}
.big-icon{font-size:46px}
.muted{color:var(--muted)}
.small{font-size:14px}

.timeline{list-style:none;margin:0;padding:0}
.step{display:flex;gap:12px;align-items:flex-start;position:relative;padding-bottom:14px}
.step:last-child{padding-bottom:0}
.step::before{content:"";position:absolute;left:17px;top:34px;bottom:0;width:2px;background:var(--line)}
.step:last-child::before{display:none}
.step .dot{width:36px;height:36px;flex:0 0 36px;border-radius:50%;display:grid;place-items:center;font-size:17px;background:var(--bg);border:1px solid var(--line);position:relative;z-index:1}
.step .txt{padding-top:5px;display:flex;flex-direction:column}
.step .txt b{font-weight:600}
.step .txt i{font-style:normal;font-size:13.5px;color:var(--muted)}
.step.todo{opacity:.45}
.step.done .dot{background:var(--ok-bg);border-color:var(--ok-bg);color:var(--ok)}
.step.now .dot{background:var(--butter-t);border-color:var(--butter-m);box-shadow:0 0 0 4px var(--card),0 0 0 6px var(--butter-t)}
.step.now .txt b{color:var(--butter-d)}

.track{text-align:center;background:linear-gradient(180deg,var(--card),var(--sage-t))}
.track-label{color:var(--muted)}
.track-no{font-size:22px;font-weight:700;margin:4px 0 12px;word-break:break-all;font-family:system-ui,sans-serif}
/* ไทม์ไลน์พัสดุไปรษณีย์ไทย ล่าสุดอยู่บน */
.thp{list-style:none;margin:16px 0 0;padding:0 0 0 14px;text-align:left;border-left:2px solid var(--sage-t)}
.thp li{position:relative;padding:0 0 12px 12px;display:flex;flex-direction:column;line-height:1.45}
.thp li::before{content:'';position:absolute;left:-21px;top:5px;width:10px;height:10px;border-radius:50%;background:var(--sage-m)}
.thp li.now::before{background:var(--sage-d,#4d7c5a)}
.thp li b{font-weight:600;font-size:14.5px}.thp li:not(.now) b{font-weight:500;color:var(--muted)}
.thp li span{font-size:12.5px;color:var(--muted)}
.thp-link{display:inline-block;margin-top:6px;font-size:13.5px;color:var(--muted);text-decoration:underline;text-underline-offset:3px}

.item{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px dashed var(--line)}
.item-main{flex:1;display:flex;flex-direction:column;min-width:0;line-height:1.45}
.item-main b{font-weight:600}
/* โปร: รายการราคาเต็มทีละชิ้น + ส่วนลด (ต่อ 1 ชุด) */
.sum-row.disc{color:#b23b3b}
/* โปร: รูป + ชื่อโปรเป็นรายการหลัก · สินค้าในโปรเป็นหัวข้อย่อยย่อหน้าเข้าไป (เจ้าของ 8 ต.ค.) */
.item.phead{border-bottom:0;padding-bottom:4px}
.psub{display:flex;flex-direction:column;gap:6px;margin:0 0 0 22px;padding:2px 0 10px 12px;border-left:2px solid var(--sage-t);border-bottom:1px dashed var(--line)}
.psub .pi{display:flex;align-items:center;gap:10px;font-size:14px}
.psub img{width:36px;height:36px;object-fit:contain;border-radius:8px;background:var(--bg);flex:none}
.psub .pn{flex:1;display:flex;flex-direction:column;line-height:1.35;min-width:0}.psub .pn b{font-weight:500}.psub small{color:var(--muted);font-size:12.5px}
.psub .ps{white-space:nowrap}
.item-main .muted{font-size:13px}
.thumb{width:56px;height:56px;flex:none;border-radius:12px;overflow:hidden;background:var(--bg)}
.thumb img{display:block;width:100%;height:100%;object-fit:contain}
/* โปรหลายชิ้น: รูปทุกชิ้นในกรอบเดียว (n2 = ซ้าย/ขวา · n3-4 = 2×2) */
.thumb{display:block}.thumb>span{display:block;position:relative;width:100%;height:100%}.thumb.tg{display:grid;grid-template-columns:1fr 1fr;gap:1px}.thumb.tg.n2{width:88px}.thumb.tg.n2>span{height:100%}.thumb.tg.n3>span,.thumb.tg.n4>span{height:auto;aspect-ratio:1}
.thumb b{position:absolute;right:1px;bottom:0;font-size:10px;line-height:1.2;background:#fff;border-radius:6px;padding:0 3px}
.qty{width:60px;padding:9px 6px;text-align:center;border:1px solid var(--line);border-radius:10px;font-size:16px;font-family:inherit;background:var(--bg);color:var(--ink)}
.qty-static{color:var(--muted)}
.item-sum{min-width:64px;text-align:right;font-variant-numeric:tabular-nums}
.sum{padding-top:12px}
.sum-row{display:flex;justify-content:space-between;font-size:14.5px;color:var(--muted)}
.sum-row.total{font-size:18px;font-weight:700;color:var(--ink);margin-top:6px}
.free{color:var(--ok);font-weight:600}
.sum + p + h2,.sum + h2{margin-top:24px}

label{display:block;font-size:14.5px;color:var(--muted);margin-bottom:12px}
input[type=text],input[type=tel],input[type=password],input[type=email],textarea{width:100%;margin-top:4px;padding:12px;font-size:16px;font-family:inherit;border:1px solid var(--line);border-radius:12px;background:var(--bg);color:var(--ink)}
input:focus,textarea:focus{outline:2px solid var(--sage-m);border-color:var(--sage-d)}
textarea{resize:vertical}

.btn{display:block;width:100%;padding:14px;font-size:16px;font-family:inherit;font-weight:600;border-radius:999px;border:1px solid transparent;cursor:pointer;text-align:center;text-decoration:none;line-height:1.3}
.btn.primary{background:var(--ink);color:var(--card)}
.btn.primary:active{transform:translateY(1px)}
.btn.primary:disabled{opacity:.6;cursor:wait}
.btn.ghost{background:var(--card);border-color:var(--line);color:var(--ink)}
a.btn{display:inline-block;width:auto;padding:12px 28px}
.linkbtn{background:none;border:0;color:var(--muted);font:inherit;font-size:14px;text-decoration:underline;text-underline-offset:3px;cursor:pointer;padding:6px 10px;margin:0 0 14px}

.qr-box{text-align:center;margin-bottom:6px}
#qr{display:inline-block;padding:12px;background:#fff;border:1px solid var(--line);border-radius:12px}
#qr svg{display:block;width:190px;height:190px}
.qr-hint{font-size:12.5px;color:var(--muted);margin-top:8px}

/* เลขบัญชีต้องเด่นและคัดลอกง่าย — ลูกค้าต้องพิมพ์ตามในแอปธนาคาร */
.bank{background:var(--bg);border:1px dashed var(--sage-m);border-radius:14px;padding:16px}
.bank-name{color:var(--muted)}
.acct{margin:2px 0;font-size:26px;font-weight:700;color:var(--sage-d);font-family:system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;letter-spacing:0;word-break:break-all}
.acct-owner{color:var(--muted)}
.copy-row{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}
.copy-row .btn{flex:1 1 140px;min-width:0;padding:10px;font-size:14px;white-space:nowrap}
.btn.copied{background:var(--ok-bg);border-color:var(--ok);color:var(--ok)}

.file{display:block;border:2px dashed var(--line);border-radius:12px;padding:18px;text-align:center;cursor:pointer;color:var(--ink)}
.file input{width:100%;font-size:15px;font-family:inherit}
.file input::file-selector-button{font-size:15px;font-family:inherit;padding:8px 14px;margin-right:10px;border:1px solid var(--line);border-radius:999px;background:var(--card);color:var(--ink);cursor:pointer}
.file span{display:block;margin-top:10px;font-size:14px;color:var(--muted)}

.slip{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:6px 0}
.slip a{color:var(--sage-d)}
.badge{font-size:12.5px;padding:2px 10px;border-radius:999px;white-space:nowrap;background:var(--bg);color:var(--muted)}
.badge.ok,.badge.st-paid,.badge.st-shipped,.badge.st-delivered{background:var(--ok-bg);color:var(--ok)}
.badge.err,.badge.st-cancelled{background:var(--err-bg);color:var(--err)}
.badge.wait,.badge.st-awaiting_payment,.badge.st-new{background:var(--wait-bg);color:var(--wait)}

.flash{padding:12px 14px;border-radius:12px;margin-bottom:14px;font-size:14.5px}
.flash.ok{background:var(--ok-bg);color:var(--ok)}
.flash.err{background:var(--err-bg);color:var(--err)}

.deadline{display:flex;flex-direction:column;gap:2px;background:var(--wait-bg);color:var(--wait);border-radius:12px;padding:14px;margin-bottom:14px;font-size:16px}
.deadline span{font-size:14.5px}
.deadline.soon{background:var(--err-bg);color:var(--err)}
.deadline.done{background:var(--ok-bg);color:var(--ok)}

.addr-box{background:var(--bg);border-radius:12px;padding:14px 16px;line-height:1.7}
.addr-box > div + div{margin-top:4px}
.addr-k{display:inline-block;min-width:50px;color:var(--muted)}
.addr-note{margin:12px 0 0;font-size:14px;color:var(--muted)}

.orow{display:flex;align-items:center;gap:10px;padding:12px 0;border-bottom:1px dashed var(--line);text-decoration:none}
.orow:last-child{border-bottom:0}
.orow > span:first-child{flex:1;display:flex;flex-direction:column;line-height:1.4}
.orow i{font-style:normal;font-size:12.5px;color:var(--muted)}
.n{font-variant-numeric:tabular-nums}

.foot{text-align:center;font-size:14px;color:var(--muted);padding:10px 20px}
footer.bot{text-align:center;font-size:13px;color:var(--muted);padding:20px 16px 36px;line-height:2}
footer.bot a{color:var(--muted)}
footer.bot .co{opacity:.8}
footer.bot .dbd{display:inline-block;margin-top:10px}
footer.bot .dbd img{display:block;width:120px;height:auto;background:#fff;padding:5px;border-radius:9px}

/* ช่องรหัสผ่าน: ปุ่มตา + ข้อความเทียบช่องยืนยัน (6 ต.ค. 2569) */
.pw{position:relative;display:block}.pw input{padding-right:48px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;letter-spacing:.03em}   /* ตอนเปิดตาดู ! กับ 1 กับ l ต้องแยกออก (เจ้าของ 6 ต.ค.) */
.pw-eye{position:absolute;right:4px;top:50%;transform:translateY(-50%);width:40px;height:40px;display:flex;align-items:center;justify-content:center;border:0;background:none;color:var(--muted);cursor:pointer;padding:0;margin:0;min-height:0;box-shadow:none}
.pw-hint{display:block;font-size:12.5px;margin-top:4px}.pw-hint.ok{color:var(--sage-d)}.pw-hint.bad{color:#9e2c2c}
/* การ์ดสร้างบัญชีหลังสั่งซื้อ — ต้องเด่น (เจ้าของ 6 ต.ค. 2569) */
.reg{background:var(--sage-t);border:2px solid var(--sage-m);box-shadow:0 6px 18px rgba(59,93,66,.12)}
.reg-hd{display:flex;align-items:center;gap:10px;margin-bottom:10px}.reg-hd h2{margin:0;font-size:18px;color:var(--sage-d);line-height:1.35}
.reg-ic{flex:none;width:40px;height:40px;border-radius:50%;background:var(--sage-d);color:var(--card);display:flex;align-items:center;justify-content:center}
.reg .muted{color:var(--ink)}.reg input{background:var(--card)}
.reg .btn.primary{background:var(--sage-d);border-color:var(--sage-d);color:var(--card)}

/* ปุ่มจ่ายบัตร Stripe + เส้นคั่น "หรือโอนเงิน" (10 ต.ค. 2569) */
.cardpay{display:flex;flex-direction:column;gap:8px;margin:6px 0 4px}.cardpay .btn{width:100%}.cardpay .small{text-align:center}
.or{display:flex;align-items:center;gap:10px;margin:18px 0 6px;color:var(--muted);font-size:13.5px}.or::before,.or::after{content:"";flex:1;height:1px;background:var(--line)}
