/* ========== TaviMarket — Storefront (Người mua) ========== */
:root{
  --red:#E23744;--red-dark:#C42A38;--red-soft:#FDECEE;--amber:#E8A33D;--gold:#C9922E;--gold-soft:#FBF1DE;
  --green:#16A34A;--ink:#1F2A44;--ink-soft:#5A6478;--muted:#8B93A5;--bg:#F6F3EE;--surface:#fff;--line:#ECE7DE;
  --grad-brand:linear-gradient(135deg,#F0682E,#E23744,#C42A38);--grad-gold:linear-gradient(135deg,#F6C560,#C9922E);
  --e1:0 1px 3px rgba(31,42,68,.07);--e2:0 8px 22px -10px rgba(31,42,68,.2);
}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:'Be Vietnam Pro',system-ui,sans-serif;background:var(--bg);color:var(--ink);font-size:14px;line-height:1.55}
a{text-decoration:none;color:inherit}
h1,h2,h3,h4{font-family:'Plus Jakarta Sans','Be Vietnam Pro',sans-serif}
img{max-width:100%}
.wrap{max-width:1200px;margin:0 auto;padding:0 20px}
.flex{display:flex;align-items:center}.between{justify-content:space-between}
.small{font-size:12.5px}.muted{color:var(--muted)}.mt{margin-top:10px}.center{text-align:center}
.hide-m{display:inline}

/* header */
.topbar-strip{background:linear-gradient(90deg,#3a1218,#241a2e);color:#f0e4ea;font-size:12.5px;padding:7px 0}
.topbar-strip a{color:#fff}
.shop-header{background:#fff;border-bottom:1px solid var(--line);padding:15px 0;position:sticky;top:0;z-index:40}
.s-logo{display:flex;align-items:center;gap:10px}
.s-mark{width:40px;height:40px;border-radius:11px;background:var(--grad-brand);display:grid;place-items:center;font-size:21px;box-shadow:0 6px 15px -5px rgba(226,55,68,.6)}
.s-name{font-family:'Plus Jakarta Sans';font-weight:800;font-size:21px;letter-spacing:-.5px}
.s-name span{color:var(--amber)}
.s-search{flex:1;display:flex;max-width:520px;border:2px solid var(--line);border-radius:30px;overflow:hidden;transition:.15s}
.s-search:focus-within{border-color:var(--red)}
.s-search input{flex:1;border:none;padding:10px 18px;font-size:14px;outline:none;font-family:inherit}
.s-search button{border:none;background:var(--grad-brand);color:#fff;padding:0 20px;cursor:pointer;font-size:15px}
.s-nav{display:flex;align-items:center;gap:20px;margin-left:auto;font-weight:600;font-size:13.5px}
.s-nav a{display:flex;align-items:center;gap:5px}.s-nav a:hover{color:var(--red)}
.cart-link{position:relative}
.cart-badge{background:var(--red);color:#fff;font-size:11px;font-weight:800;min-width:19px;height:19px;border-radius:20px;display:inline-grid;place-items:center;padding:0 5px}
.cat-bar{background:#fff;border-bottom:1px solid var(--line);padding:9px 0}
.cat-pill{white-space:nowrap;padding:7px 15px;border-radius:20px;background:var(--bg);font-size:13px;font-weight:600;transition:.15s}
.cat-pill:hover{background:var(--red);color:#fff}

/* hero */
.hero{position:relative;border-radius:20px;overflow:hidden;margin:22px 0;box-shadow:var(--e2)}
.hero img{width:100%;display:block}
.hero-cap{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;padding:0 8%;color:#fff}
.hero-cap h1{font-size:40px;font-weight:800;line-height:1.1;letter-spacing:-1px;max-width:560px;text-shadow:0 2px 20px rgba(0,0,0,.3)}
.hero-cap p{font-size:16px;margin:14px 0 22px;max-width:460px;color:#fbeef0}
.section{margin:38px 0}
.sec-head{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:18px}
.sec-head h2{font-size:24px;font-weight:800;letter-spacing:-.5px}
.sec-head .link{color:var(--red-dark);font-weight:700;font-size:13.5px}
.sec-head .bar{width:52px;height:4px;background:var(--grad-gold);border-radius:4px;margin-top:8px}

/* feature badges */
.feats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:26px 0}
.feat-c{background:#fff;border:1px solid var(--line);border-radius:14px;padding:16px;display:flex;gap:12px;align-items:center;box-shadow:var(--e1)}
.feat-c .fi{width:44px;height:44px;border-radius:12px;background:var(--gold-soft);display:grid;place-items:center;font-size:22px;flex-shrink:0}
.feat-c b{font-size:13.5px}.feat-c div>span{font-size:12px;color:var(--muted)}

/* product grid */
.pgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.pcard{background:#fff;border:1px solid var(--line);border-radius:14px;overflow:hidden;transition:.18s;display:flex;flex-direction:column}
.pcard:hover{transform:translateY(-4px);box-shadow:var(--e2);border-color:#f0d9c4}
.pcard .img{position:relative;aspect-ratio:1;background:var(--gold-soft);overflow:hidden}
.pcard .img img{width:100%;height:100%;object-fit:cover;transition:.3s}
.pcard:hover .img img{transform:scale(1.06)}
.pcard .tag{position:absolute;top:10px;left:10px;background:var(--grad-brand);color:#fff;font-size:11px;font-weight:700;padding:3px 9px;border-radius:20px}
.pcard .body{padding:13px;display:flex;flex-direction:column;flex:1}
.pcard .cat{font-size:11px;color:var(--muted);font-weight:600}
.pcard .name{font-weight:700;font-size:13.5px;margin:4px 0;line-height:1.35;flex:1}
.pcard .name:hover{color:var(--red)}
.pcard .shop{font-size:11.5px;color:var(--muted);margin-bottom:8px}
.pcard .prow{display:flex;align-items:center;justify-content:space-between;margin-top:auto}
.pcard .price{font-size:17px;font-weight:800;color:var(--red-dark)}
.pcard .price small{font-size:11px;color:var(--muted);font-weight:500}
.pcard .add{width:36px;height:36px;border-radius:10px;background:var(--grad-brand);color:#fff;border:none;cursor:pointer;font-size:17px;display:grid;place-items:center;transition:.15s}
.pcard .add:hover{transform:scale(1.1)}
.pcard .sold{font-size:11px;color:var(--muted);padding:0 13px 11px}

/* stalls */
.stall-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.stall-c{background:#fff;border:1px solid var(--line);border-radius:14px;padding:18px;text-align:center;transition:.18s;box-shadow:var(--e1)}
.stall-c:hover{transform:translateY(-4px);box-shadow:var(--e2)}
.stall-av{width:64px;height:64px;border-radius:16px;background:var(--grad-gold);display:grid;place-items:center;font-size:28px;margin:0 auto 12px;font-weight:800;color:#3a2c08}
.stall-c b{font-size:15px}.stall-c .cat{font-size:12px;color:var(--muted);margin:3px 0 10px}

/* buttons */
.btn{display:inline-flex;align-items:center;gap:7px;padding:11px 20px;border-radius:12px;font-weight:700;font-size:14px;cursor:pointer;border:none;font-family:inherit;transition:.16s}
.btn-primary{background:var(--grad-brand);color:#fff;box-shadow:0 8px 18px -8px rgba(226,55,68,.6)}
.btn-primary:hover{transform:translateY(-2px)}
.btn-gold{background:var(--grad-gold);color:#3a2c08}
.btn-ghost{background:#fff;border:1.5px solid var(--line);color:var(--ink)}
.btn-block{width:100%;justify-content:center}
.card{background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:var(--e1)}
.pad{padding:22px}
.badge{display:inline-flex;padding:3px 10px;border-radius:20px;font-size:12px;font-weight:700}
.b-green{background:#E7F6EC;color:var(--green)}.b-gold{background:var(--gold-soft);color:var(--gold)}.b-gray{background:#eef0f4;color:var(--ink-soft)}

/* detail */
.pd{display:grid;grid-template-columns:1fr 1fr;gap:34px;margin:26px 0}
.pd-img{border-radius:18px;overflow:hidden;background:var(--gold-soft);aspect-ratio:1;box-shadow:var(--e2)}
.pd-img img{width:100%;height:100%;object-fit:cover}
.pd h1{font-size:28px;font-weight:800;letter-spacing:-.5px;line-height:1.2}
.pd .price{font-size:32px;font-weight:800;color:var(--red-dark);margin:14px 0}
.pd .price small{font-size:15px;color:var(--muted);font-weight:500}
.spec{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:18px 0}
.spec div{background:var(--bg);border-radius:10px;padding:10px 13px}
.spec .k{font-size:11.5px;color:var(--muted)}.spec .v{font-weight:700;font-size:13.5px}
.qty{display:inline-flex;align-items:center;border:1.5px solid var(--line);border-radius:12px;overflow:hidden}
.qty button{width:40px;height:44px;border:none;background:#fff;font-size:18px;cursor:pointer}
.qty input{width:52px;text-align:center;border:none;font-size:16px;font-weight:700;font-family:inherit}

/* cart / checkout */
.cart-row{display:flex;align-items:center;gap:14px;padding:14px 0;border-bottom:1px solid var(--line)}
.cart-row img{width:70px;height:70px;border-radius:12px;object-fit:cover;background:var(--gold-soft)}
.crumb{font-size:12.5px;color:var(--muted);margin:18px 0}.crumb a:hover{color:var(--red)}
.field{margin-bottom:14px}
.field label{display:block;font-weight:700;font-size:13px;margin-bottom:6px}
.inp{width:100%;padding:11px 14px;border:1.5px solid var(--line);border-radius:11px;font-size:14px;font-family:inherit}
.inp:focus{outline:none;border-color:var(--red)}
.empty{text-align:center;padding:60px 20px;color:var(--muted)}.empty .big{font-size:52px;margin-bottom:12px}

/* toast */
.toast{position:fixed;bottom:26px;left:50%;transform:translateX(-50%) translateY(120px);background:var(--ink);color:#fff;padding:13px 22px;border-radius:30px;font-weight:600;font-size:13.5px;box-shadow:var(--e2);z-index:90;transition:.3s;opacity:0}
.toast.show{transform:translateX(-50%) translateY(0);opacity:1}

.shop-footer{background:linear-gradient(160deg,#241a2e,#3a1218);color:#e7dde3;margin-top:50px;padding:44px 0 20px}
.foot-grid{display:grid;grid-template-columns:1.6fr 1fr 1fr 1fr;gap:30px;padding-bottom:26px;border-bottom:1px solid rgba(255,255,255,.1)}
.shop-footer h4{color:#fff;font-size:14px;margin-bottom:13px}
.shop-footer a{display:block;color:#c9b8c2;margin-bottom:8px;font-size:13px}
.shop-footer a:hover{color:var(--amber)}
.foot-bottom{text-align:center;padding-top:20px;color:#9d8b96}

@media(max-width:960px){.pgrid,.stall-grid{grid-template-columns:repeat(2,1fr)}.feats{grid-template-columns:repeat(2,1fr)}.pd{grid-template-columns:1fr}.foot-grid{grid-template-columns:1fr 1fr}.hero-cap h1{font-size:26px}}
@media(max-width:640px){.hide-m{display:none}.s-nav a span:not(.cart-badge){display:none}.pgrid{grid-template-columns:repeat(2,1fr)}.s-search{order:3;max-width:none;flex-basis:100%;margin-top:10px}.shop-header .wrap{flex-wrap:wrap}}
