/* ============================================================================
   cart.css — module-private styles for modules/product/pages/cart.html
   De-inlined (go-live combine-pass · 2026-07-19). Two layers:
     1) MOBILE (Source-of-Truth) — exact rules that were inline; phone view unchanged.
     2) DESKTOP light-2026 lives in cart.desktop.css (media-gated link).
   Trimmed to only the classes this page renders (mobile look identical).
   Load AFTER shared tokens/layout/components/utilities so page tokens win.
   ============================================================================ */

/* ---- page theme (shopping orange accent) — page-scoped :root ---- */
:root{
  --sun:#FF7A1A;--sun-deep:#EF5F06;--ember:#FF3D2E;--gold:#FFB23E;
  --cream:#FFF8F2;--cream-2:#FFEFE2;--paper:#fff;
  --ink:#2A2016;--ink-2:#6E5C4C;--muted:#9A8b7c;--line:#F2E6D8;
  --clay:#C8692B;--clay-soft:#FBEEE2;--clay-deep:#A9531F;--leaf:#1E9E6A;--leaf-soft:#E6F6EE;
  --fd:'Mitr',sans-serif;--fb:'Prompt',sans-serif;--fm:'Prompt',monospace;
  --sh:0 12px 34px -22px rgba(120,70,20,.5);
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;overflow-x:hidden}
body{font-family:var(--fb);color:var(--ink);background:var(--cream);font-size:15px;line-height:1.55;-webkit-font-smoothing:antialiased}
body.has-nav{padding-bottom:66px}
body.has-bar{padding-bottom:74px}
a{color:inherit;text-decoration:none}
h1,h2,h3,.disp{font-family:var(--fd);font-weight:600;margin:0;line-height:1.25}
p{margin:0 0 10px}
img{max-width:100%;display:block}

header{position:sticky;top:0;z-index:40;background:rgba(255,248,242,.94);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.hd{display:flex;align-items:center;gap:10px;padding:11px 12px}
.ib{width:38px;height:38px;border:none;background:transparent;display:grid;place-items:center;cursor:pointer;color:var(--ink);flex:none;position:relative}
.htitle{font-family:var(--fd);font-weight:600;font-size:17px;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* buttons (page override of shared .btn — mobile SoT) */
.btn{display:block;width:100%;text-align:center;border:none;border-radius:13px;padding:13px;font-family:var(--fd);font-weight:600;font-size:15px;cursor:pointer;transition:transform .14s;line-height:1.55}
.btn:active{transform:scale(.98)}
.btn:hover{filter:none}
.btn.sun{background:linear-gradient(135deg,var(--sun),var(--sun-deep));color:#fff;box-shadow:0 10px 22px -10px var(--sun)}

/* empty state (ตะกร้าว่าง) — จัดกลาง เป็นระเบียบ */
.cempty{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:56px 24px 40px}
.cempty-ic{width:100px;height:100px;border-radius:50%;display:grid;place-items:center;margin-bottom:18px;color:var(--sun-deep);background:radial-gradient(circle at 50% 36%,var(--cream-2),var(--cream));box-shadow:inset 0 0 0 1px var(--line),0 16px 34px -22px rgba(239,95,6,.45)}
.cempty-ic svg{width:46px;height:46px}
.cempty-t{font-family:var(--fd);font-weight:600;font-size:18px;color:var(--ink)}
.cempty-s{font-size:13.5px;color:var(--muted);margin-top:6px;max-width:300px;line-height:1.6}
.cempty-btn{display:block;width:100%;max-width:240px;margin:22px auto 0;align-self:center}

/* slim header row ("ตะกร้าของฉัน · N รายการ") */
.slim{display:flex;align-items:center;justify-content:space-between}
.slim .t{font-family:var(--fd);font-weight:500}
.slim .c{font-size:12.5px;color:var(--muted)}

/* checkbox */
.cbx{width:22px;height:22px;border:2px solid #E2D2BE;border-radius:7px;display:grid;place-items:center;cursor:pointer;flex:none;background:#fff;position:relative;transition:.15s}
.cbx svg{width:13px;height:13px;opacity:0;transition:.12s;color:#fff}
.cbx.on{background:linear-gradient(135deg,var(--sun),var(--sun-deep));border-color:transparent}
.cbx.on svg{opacity:1}
.cbx.ind{border-color:var(--sun);background:var(--cream-2)}
.cbx.ind::after{content:"";width:10px;height:2.5px;border-radius:2px;background:var(--sun);position:absolute}

/* shop group */
.shopg{background:#fff;border-bottom:8px solid var(--cream)}
.shophd{display:flex;align-items:center;gap:11px;padding:13px 16px;border-bottom:1px solid var(--line)}
.shophd .si{width:26px;height:26px;border-radius:8px;background:var(--clay-soft);color:var(--clay);display:grid;place-items:center;flex:none}
.shophd .sn{font-family:var(--fd);font-weight:500;font-size:14px}
.shophd .tagpf{font-size:10.5px;color:var(--muted);background:var(--cream-2);padding:1px 7px;border-radius:6px}

/* item */
.citem{display:flex;gap:11px;padding:14px 16px;background:#fff;border-bottom:1px solid var(--line);align-items:flex-start}
.citem:last-child{border-bottom:none}
.cimg{width:74px;height:74px;border-radius:11px;flex:none;background:repeating-linear-gradient(45deg,#faf3ea,#faf3ea 9px,#f4ebe0 9px,#f4ebe0 18px);display:grid;place-items:center;color:#CBB9A6;cursor:pointer}
.cimg svg{width:26px;height:26px}
.cinfo{flex:1;min-width:0}
.ctit{font-size:13.5px;line-height:1.35;max-height:36px;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;cursor:pointer}
.copt{font-size:11.5px;color:var(--muted);margin-top:3px}
.crow{display:flex;align-items:center;justify-content:space-between;margin-top:9px}
.cprice{font-family:var(--fd);font-weight:600;color:var(--sun-deep);font-size:15px}
.qty{display:flex;align-items:center;border:1.5px solid var(--line);border-radius:9px;overflow:hidden}
.qty button{width:44px;height:44px;min-width:44px;min-height:44px;border:none;background:#fff;color:var(--sun-deep);font-size:16px;cursor:pointer}
.qty b{min-width:32px;text-align:center;font-family:var(--fd);font-size:13px}
.ctrash{border:none;background:transparent;color:#C4A882;cursor:pointer;padding:4px;flex:none}

/* summary rows */
.sumrow{display:flex;justify-content:space-between;padding:6px 0;font-size:13.5px;color:var(--ink-2)}
.sumrow b{font-family:var(--fd);font-weight:500;color:var(--ink)}
.sumrow.tot{font-family:var(--fd);font-weight:600;color:var(--ink);font-size:17px;border-top:1px dashed var(--line);margin-top:6px;padding-top:12px}
.sumrow.tot .v{color:var(--sun-deep)}

/* sticky action bar + pay bar */
.actbar{position:fixed;left:0;right:0;bottom:0;z-index:50;background:rgba(255,255,255,.97);backdrop-filter:blur(10px);border-top:1px solid var(--line);padding:10px 14px calc(10px + env(safe-area-inset-bottom))}
.paybar{display:flex;align-items:center;gap:11px}
.paybar .sa{display:flex;align-items:center;gap:8px;cursor:pointer}
.paybar .sa span{font-size:13px}
.paybar .amt{flex:1;text-align:right}
.paybar .amt .s{font-size:10.5px;color:var(--muted)}
.paybar .amt .v{font-family:var(--fd);font-weight:700;color:var(--sun-deep);font-size:18px}
.paybar .go{flex:none;border:none;border-radius:13px;padding:13px 18px;font-family:var(--fd);font-weight:600;font-size:14.5px;color:#fff;background:linear-gradient(135deg,var(--sun),var(--sun-deep));box-shadow:0 10px 22px -10px var(--sun);cursor:pointer}
.paybar .go:active{transform:scale(.97)}

@media(prefers-reduced-motion:reduce){*{animation:none!important}}
:focus-visible{outline:2px solid var(--sun);outline-offset:2px}
