/* shop + product + cart, on top of course.css */
.cart-btn{position:relative;background:none;border:1.5px solid var(--purple);color:var(--purple);border-radius:999px;padding:8px 16px;font:inherit;font-weight:600;font-size:.92rem;cursor:pointer;display:inline-flex;gap:8px;align-items:center}
.cart-btn:hover{background:var(--purple);color:#fff}
.cart-count{min-width:22px;height:22px;border-radius:999px;background:var(--gold);color:var(--plum);font-size:.78rem;display:inline-grid;place-items:center;padding:0 6px}
.cart-count:empty{display:none}

.shop-hero{background:radial-gradient(120% 120% at 50% 110%,#4d2a78 0%,var(--purple) 45%,var(--plum) 100%);color:#fff;text-align:center;padding:72px 0 64px}
.shop-hero h1{font-size:clamp(2.2rem,6vw,3.6rem);color:#fbf3e3}
.shop-hero p{opacity:.88;max-width:620px;margin:.8rem auto 0}

.toolbar{display:flex;flex-wrap:wrap;gap:12px;justify-content:space-between;align-items:center;margin-bottom:26px}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{border:1.5px solid var(--line);background:#fff;border-radius:999px;padding:8px 16px;font:inherit;font-size:.9rem;font-weight:600;color:var(--purple);cursor:pointer}
.chip[aria-pressed="true"]{background:var(--purple);border-color:var(--purple);color:#fff}
.sort{padding:9px 12px;border:1px solid var(--line);border-radius:10px;font:inherit;font-size:.9rem;background:#fff;width:auto}
.count{color:var(--muted);font-size:.9rem}

.grid-p{display:grid;grid-template-columns:repeat(4,1fr);gap:22px;transition:opacity .2s}
.grid-p.dim{opacity:.55}
.tile{background:#fff;border:1px solid var(--line);border-radius:18px;overflow:hidden;display:flex;flex-direction:column}
.tile a.img{display:block;aspect-ratio:1/1;background:var(--lilac);position:relative;overflow:hidden}
.tile a.img img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .3s}
.tile a.img.book img{object-fit:contain;padding:14px}
.tile:hover a.img img{transform:scale(1.03)}
.tile .noimg{position:absolute;inset:0;display:grid;place-items:center;color:var(--violet);font-family:Fraunces,serif;font-size:1.1rem;padding:20px;text-align:center}
.ribbons{position:absolute;left:12px;top:12px;display:flex;gap:6px;flex-wrap:wrap}
.ribbon{background:var(--gold);color:var(--plum);font-size:.72rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;padding:4px 10px;border-radius:999px}
.tile .body{padding:16px 18px 18px;display:flex;flex-direction:column;gap:6px;flex:1}
.tile h3{font-size:1.02rem;line-height:1.3}
.tile h3 a{text-decoration:none}
.price{font-weight:700;color:var(--ink)}
.price s{color:var(--muted);font-weight:500;margin-left:6px}
.tile .act{margin-top:auto;padding-top:10px}
.tile .act .btn,.tile .act a.btn{padding:10px 18px;font-size:.9rem;width:100%;text-align:center}
.btn-ghost-p{background:transparent;border:1.5px solid var(--purple);color:var(--purple)}
.btn-ghost-p:hover{background:var(--purple);color:#fff}
.state{padding:40px;text-align:center;color:var(--muted);border:1px dashed var(--line);border-radius:18px}
.more{display:block;margin:28px auto 0}

/* product page */
.pdp{display:grid;grid-template-columns:1fr 1fr;gap:48px;align-items:start}
.gallery-main{background:var(--lilac);border-radius:20px;overflow:hidden;aspect-ratio:1/1;display:grid;place-items:center}
.gallery-main img{width:100%;height:100%;object-fit:contain}
.thumbs{display:flex;gap:10px;margin-top:12px;flex-wrap:wrap}
.thumbs button{width:72px;height:72px;border-radius:12px;border:2px solid var(--line);padding:0;overflow:hidden;cursor:pointer;background:var(--lilac)}
.thumbs button[aria-pressed="true"]{border-color:var(--gold)}
.thumbs img{width:100%;height:100%;object-fit:cover}
.crumbs{font-size:.85rem;color:var(--muted);margin-bottom:10px}
.crumbs a{text-decoration:none}
.pdp h1{font-size:clamp(1.8rem,4vw,2.5rem);color:var(--purple);margin-bottom:.6rem}
.pdp .price{font-size:1.4rem;margin-bottom:1rem}
.opt{border:0;margin:16px 0}
.opt legend{font-weight:600;font-size:.9rem;margin-bottom:8px}
.opt .chip:disabled{opacity:.4;cursor:not-allowed;text-decoration:line-through}
.qty{display:inline-flex;align-items:center;border:1px solid var(--line);border-radius:999px;overflow:hidden;background:#fff}
.qty button{background:none;border:0;width:42px;height:42px;font-size:1.2rem;cursor:pointer;color:var(--purple)}
.qty span{min-width:34px;text-align:center;font-weight:600}
.buy{display:flex;gap:12px;align-items:center;margin:20px 0 8px;flex-wrap:wrap}
.buy .btn{flex:1;min-width:200px}
.blocked{color:var(--muted);font-size:.9rem}
.pdesc{margin-top:22px}
.pdesc p{margin-bottom:.8rem}
.info{border-top:1px solid var(--line);margin-top:18px}
.info details{border-bottom:1px solid var(--line);padding:14px 0}
.info summary{font-weight:600;cursor:pointer;color:var(--purple)}
.info details div{margin-top:10px;color:var(--muted)}
.notify{margin-top:16px;padding:18px;border-radius:16px;background:var(--lilac)}
.notify form{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap}
.notify input{flex:1;min-width:180px}
.notify .btn{padding:12px 20px}

/* cart drawer */
.cart-backdrop{position:fixed;inset:0;background:rgba(20,8,34,.5);z-index:100;display:flex;justify-content:flex-end}
.cart-backdrop[hidden]{display:none}
.cart-panel{width:min(420px,100%);height:100%;background:var(--cream);display:flex;flex-direction:column;box-shadow:-20px 0 40px rgba(0,0,0,.2)}
.cart-head{display:flex;justify-content:space-between;align-items:center;padding:20px 22px;border-bottom:1px solid var(--line)}
.cart-head h2{font-size:1.4rem;margin:0}
.x{background:none;border:0;font-size:1.6rem;cursor:pointer;color:var(--purple);line-height:1}
.cart-lines{flex:1;overflow:auto;padding:10px 22px}
.line{display:grid;grid-template-columns:64px 1fr auto;gap:12px;padding:14px 0;border-bottom:1px solid var(--line);align-items:start}
.line img{width:64px;height:64px;object-fit:cover;border-radius:10px;background:var(--lilac)}
.line b{font-size:.95rem;display:block;line-height:1.3}
.line small{color:var(--muted);display:block}
.line .qty button{width:32px;height:32px;font-size:1rem}
.line .rm{background:none;border:0;color:var(--muted);text-decoration:underline;cursor:pointer;font-size:.82rem;margin-top:6px;padding:0}
.cart-foot{padding:18px 22px;border-top:1px solid var(--line);background:#fff}
.row{display:flex;justify-content:space-between;margin:4px 0;font-size:.95rem}
.row.total{font-weight:700;font-size:1.1rem;margin-top:8px}
.cart-foot .fine{text-align:left;margin:6px 0 12px}
.cart-err{color:#a3262a;font-size:.9rem;padding:0 22px}
body.lock{overflow:hidden}

@media (max-width:1000px){.grid-p{grid-template-columns:repeat(3,1fr)}}
@media (max-width:760px){.grid-p{grid-template-columns:1fr 1fr;gap:14px}.pdp{grid-template-columns:1fr}.toolbar{flex-direction:column;align-items:flex-start}}
@media (max-width:420px){.grid-p{grid-template-columns:1fr}}
