/* Feastables storefront */
.shop-hero { padding: clamp(48px,7vw,90px) 0; }
.shop-hero-inner { display:grid; grid-template-columns: 1.2fr .8fr; gap: var(--s7); align-items:center; }
.shop-hero-art { display:flex; justify-content:center; }
.shop-hero-art img { width:min(340px,80%); filter: drop-shadow(0 30px 50px rgba(0,0,0,.5)); animation: float 5s ease-in-out infinite; }
@keyframes float { 0%,100%{transform:translateY(0) rotate(-3deg)} 50%{transform:translateY(-14px) rotate(3deg)} }
@media (max-width:800px){ .shop-hero-inner{ grid-template-columns:1fr; } .shop-hero-art{ order:-1; } }

.shop-controls { display:flex; justify-content:space-between; gap: var(--s5); margin-bottom: var(--s6); flex-wrap:wrap; align-items:center; }
.shop-cats { display:flex; gap:10px; flex-wrap:wrap; }
.shop-tools { display:flex; gap:10px; }
.shop-search { width: 200px; }
.shop-sort { width: auto; }
.field.shop-search, .field.shop-sort { padding:11px 14px; font-size:.95rem; background:#fff; color:var(--on-light); border-color: rgba(0,0,0,.16); }

.catalog { gap: var(--s5); }
.prod { background:#fff; border:1px solid rgba(0,0,0,.09); border-radius: var(--radius-lg); overflow:hidden; display:flex; flex-direction:column; transition: transform .16s var(--ease), box-shadow .16s; }
.prod:hover { transform: translateY(-5px); box-shadow: 0 20px 40px rgba(0,0,0,.12); }
.prod-img { position:relative; aspect-ratio:1; background: color-mix(in srgb, var(--pc) 12%, #fff); border:none; cursor:pointer; padding: var(--s5); display:flex; align-items:center; justify-content:center; }
.prod-img img { width:100%; height:100%; object-fit:contain; filter: drop-shadow(0 14px 22px rgba(0,0,0,.16)); transition: transform .25s var(--ease); }
.prod-img:hover img { transform: scale(1.06) rotate(-2deg); }
.prod-flag { position:absolute; top:12px; left:12px; background: var(--gold); color: var(--gold-ink); font-family:var(--mono); font-size:.62rem; letter-spacing:.08em; text-transform:uppercase; padding:4px 9px; border-radius:999px; }
.prod-body { padding: var(--s5); display:flex; flex-direction:column; flex:1; color: var(--on-light); }
.prod-meta { display:flex; justify-content:space-between; align-items:baseline; gap:10px; }
.prod-meta h3 { font-family:var(--display); font-size:1.1rem; }
.prod-price { font-family:var(--mono); color: var(--gold-deep); font-weight:500; }
.prod-blurb { font-size:.88rem; margin:8px 0 var(--s5); flex:1; }

/* PDP modal */
.modal { position:fixed; inset:0; z-index:110; display:flex; align-items:center; justify-content:center; padding: var(--s5); }
.modal-scrim { position:absolute; inset:0; background: rgba(8,8,10,.82); backdrop-filter: blur(6px); }
.modal-card { position:relative; z-index:2; background: var(--ink-2); border:1px solid var(--line-2); border-radius: var(--radius-lg); width:min(860px,100%); max-height: 90vh; overflow:auto; }
.modal-x { position:absolute; top:14px; right:14px; z-index:3; background: rgba(0,0,0,.4); border:1px solid var(--line-2); color:#fff; width:38px; height:38px; border-radius:10px; cursor:pointer; }
.pdp-grid { display:grid; grid-template-columns:1fr 1fr; }
.pdp-img { aspect-ratio:1; background: color-mix(in srgb, var(--pc) 16%, var(--ink)); display:flex; align-items:center; justify-content:center; padding: var(--s7); }
.pdp-img img { width:100%; height:100%; object-fit:contain; filter: drop-shadow(0 20px 30px rgba(0,0,0,.4)); }
.pdp-info { padding: var(--s7); }
.pdp-info h2 { font-family:var(--display); font-size:1.9rem; margin:12px 0; }
.pdp-price { font-family:var(--mono); font-size:1.5rem; color: var(--gold); margin-bottom: var(--s4); }
.pdp-variants { margin: var(--s5) 0; }
.pdp-variants label, .pdp-qty label { font-family:var(--mono); font-size:.72rem; letter-spacing:.1em; text-transform:uppercase; color: var(--on-dark-mut); display:block; margin-bottom:10px; }
.var-btns { display:flex; gap:8px; flex-wrap:wrap; }
.var-btn { min-width:48px; padding:10px 14px; border:1.5px solid var(--line-2); background:transparent; color: var(--on-dark); border-radius:10px; cursor:pointer; font-weight:600; transition: all .15s; }
.var-btn:hover { border-color: var(--gold); }
.var-btn.on { background: var(--gold); color: var(--gold-ink); border-color: var(--gold); }
.var-warn { color: var(--cherry); font-size:.84rem; margin-top:8px; }
.pdp-qty { margin: var(--s5) 0; }
.qty { display:inline-flex; align-items:center; border:1.5px solid var(--line-2); border-radius:10px; overflow:hidden; }
.qty button { background: var(--surface); border:none; color: var(--on-dark); width:40px; height:40px; font-size:1.2rem; cursor:pointer; }
.qty button:hover { background: var(--surface-2); }
.qty span { min-width:44px; text-align:center; font-family:var(--mono); }
.qty.small button { width:28px; height:28px; font-size:1rem; }
.qty.small span { min-width:30px; font-size:.9rem; }
.pdp-details { margin-top: var(--s5); border-top:1px solid var(--line); padding-top: var(--s4); }
.pdp-details summary { cursor:pointer; font-weight:600; }
.pdp-details ul { color: var(--on-dark-mut); margin:12px 0 0; padding-left:20px; }
@media (max-width:640px){ .pdp-grid{ grid-template-columns:1fr; } .pdp-img{ aspect-ratio:16/10; } }

/* cart */
.cart-fab { position:fixed; bottom:22px; right:22px; z-index:60; background: var(--gold); color: var(--gold-ink); border:none; border-radius:999px; padding:14px 20px; font-size:1.1rem; font-weight:700; cursor:pointer; box-shadow:0 12px 30px rgba(0,0,0,.4); display:flex; align-items:center; gap:8px; }
.cart-fab:hover { transform: translateY(-2px); }
.cart-badge { background: var(--ink); color: var(--gold); border-radius:999px; min-width:24px; height:24px; display:inline-flex; align-items:center; justify-content:center; font-family:var(--mono); font-size:.82rem; padding:0 6px; }
.drawer { position:fixed; inset:0; z-index:120; }
.drawer-scrim { position:absolute; inset:0; background: rgba(8,8,10,.6); opacity:0; transition: opacity .3s; }
.drawer.open .drawer-scrim { opacity:1; }
.drawer-panel { position:absolute; right:0; top:0; height:100%; width:min(420px,100%); background: var(--ink-2); border-left:1px solid var(--line-2); display:flex; flex-direction:column; transform: translateX(100%); transition: transform .3s var(--ease); }
.drawer.open .drawer-panel { transform: none; }
.drawer-head { display:flex; justify-content:space-between; align-items:center; padding: var(--s5) var(--s6); border-bottom:1px solid var(--line); }
.drawer-head h2 { font-family:var(--display); font-size:1.4rem; }
.drawer-x { background:transparent; border:none; color: var(--on-dark-mut); font-size:1.1rem; cursor:pointer; }
.drawer-body { flex:1; overflow:auto; padding: var(--s5) var(--s6); }
.drawer-foot { padding: var(--s5) var(--s6); border-top:1px solid var(--line); }
.cart-empty { text-align:center; padding: var(--s8) 0; color: var(--on-dark-mut); }
.cart-empty .btn { margin-top: var(--s5); }
.cart-line { display:grid; grid-template-columns: 60px 1fr auto auto; gap: 12px; align-items:center; padding: var(--s4) 0; border-bottom:1px solid var(--line); }
.cart-line img { border-radius:8px; background: var(--surface); object-fit:contain; padding:4px; }
.cart-line-info { display:flex; flex-direction:column; }
.cart-line-info b { font-size:.95rem; }
.cart-line-info .mut { font-size:.78rem; }
.cart-line-price { font-family:var(--mono); color: var(--gold); font-size:.85rem; }
.cart-rm { background:transparent; border:none; color: var(--on-dark-dim); cursor:pointer; font-size:.9rem; }
.cart-rm:hover { color: var(--cherry); }
.cart-sub { display:flex; justify-content:space-between; margin-bottom: var(--s4); font-size:1.1rem; }
.cart-sub b { font-family:var(--display); }
.co-form { display:grid; gap: var(--s4); }
.co-form h3 { font-family:var(--display); font-size:1.3rem; }
.co-form label { display:grid; gap:6px; font-size:.82rem; color: var(--on-dark-mut); }
.co-summary { display:flex; justify-content:space-between; padding: var(--s4) 0; border-top:1px solid var(--line); font-size:1.05rem; }
.co-done { text-align:center; padding: var(--s6) 0; }
.co-check { width:60px; height:60px; margin:0 auto var(--s4); border-radius:50%; background: var(--lime); color:#fff; display:flex; align-items:center; justify-content:center; font-size:1.8rem; }
.co-done h3 { font-family:var(--display); font-size:1.5rem; }
.co-order { font-family:var(--mono); background: var(--surface); border:1px solid var(--line); border-radius:8px; padding:10px; margin: var(--s4) 0; color: var(--gold); }
@media (max-width:480px){ .shop-search{ width:100%; } .shop-tools{ width:100%; } }
