/* shop: product grid, size picker, cart slide-over. Flat surfaces, 2px borders, no blur, no gradients. */
.shop-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:22px}
.shop-grid .pcard-media{aspect-ratio:1/1}
.shop-grid .pcard-img{opacity:1}
.pcard-body .price{font-family:var(--font-mono);font-weight:500;font-size:14px;line-height:20px;letter-spacing:.04em;color:var(--text);margin:0 0 14px}
.sizes{border:0;margin:0 0 16px;padding:0;min-width:0}
.sizes legend{padding:0;margin-bottom:8px;color:var(--text-muted)}
.sizes .opts{display:flex;flex-wrap:wrap;gap:8px}
.sz{position:relative;display:inline-block}
.sz span{display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;padding:0 14px;font-family:var(--font-mono);font-size:12px;letter-spacing:.04em;text-transform:uppercase;border:2px solid var(--border);border-radius:9999px;cursor:pointer;transition:background-color 150ms linear,color 150ms linear,border-color 150ms linear}
.sz:hover input:not(:checked)+span{border-color:var(--signal-text);color:var(--signal-text)}
.sz input:checked+span{background:var(--signal);border-color:var(--signal);color:var(--on-signal)}
.sz input:focus-visible+span{outline:3px solid var(--focus);outline-offset:2px}
.sz-one{margin:0 0 16px;color:var(--text-muted)}
.pcard-body .btn{width:100%;justify-content:center}
.card-status{min-height:20px;margin-top:10px;color:var(--signal-text)}
.shop-msg{margin-top:16px;min-height:20px;color:var(--signal-text)}
.shop-msg .btn{margin-left:12px}
.shop-note{margin-top:20px}
.shop-note a,.flinks a{color:var(--accent-text)}
.flinks{display:flex;flex-wrap:wrap;gap:8px 20px}

.cart-open b,.cart-open #cart-count{font-variant-numeric:tabular-nums}

/* cart slide-over: native <dialog> gives focus trap, Esc and focus restore */
dialog.cart{position:fixed;inset:0 0 0 auto;margin:0;padding:0;width:min(460px,100vw);max-width:100vw;height:100dvh;max-height:none;border:0;border-left:2px solid var(--border);background:var(--ground-raised);color:var(--text);overflow:auto}
dialog.cart::backdrop{background:rgba(20,10,20,.78)}
.cart-in{padding:24px var(--gut) 32px;display:grid;gap:20px;align-content:start}
.cart-head{display:flex;align-items:center;justify-content:space-between;gap:16px}
.cart-head h2{font-size:32px;line-height:1;color:var(--signal)}
.cart-empty-h{font-size:20px;line-height:28px;font-weight:600;margin-bottom:6px}
#cart-empty .btn{margin-top:20px}
.cart-lines{display:grid}
.cart-line{display:grid;grid-template-columns:64px minmax(0,1fr) auto;gap:4px 16px;align-items:center;padding:16px 0;border-top:2px solid var(--border)}
.cart-line:last-child{border-bottom:2px solid var(--border)}
.cart-line img{width:64px;height:64px;border:2px solid var(--border);display:block}
.cart-line .nm{font-weight:600}
.cart-line .meta{color:var(--text-muted);font-size:14px;line-height:20px}
.cart-line .lp{font-family:var(--font-mono);font-weight:500;font-size:13px;text-align:right}
.cart-ctl{grid-column:2 / -1;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.qbtn{font:inherit;font-family:var(--font-mono);width:44px;height:44px;padding:0;border:2px solid var(--border);border-radius:var(--radius-md,14px);background:transparent;color:var(--text);cursor:pointer;transition:border-color 150ms linear,color 150ms linear}
.qbtn:hover{border-color:var(--signal-text);color:var(--signal-text)}
.qn{min-width:32px;text-align:center;font-family:var(--font-mono);font-variant-numeric:tabular-nums}
.linkbtn{font:inherit;font-size:14px;color:var(--accent-text);background:none;border:0;padding:12px 8px;min-height:44px;cursor:pointer;text-decoration:underline}
.cart-total{display:flex;justify-content:space-between;align-items:baseline;gap:16px}
.cart-total b{font-family:var(--font-display);font-weight:900;font-stretch:125%;font-size:24px}
.cart-terms{display:grid;grid-template-columns:24px minmax(0,1fr);gap:12px;align-items:start;font-size:14px;line-height:20px;color:var(--text-muted)}
.cart-terms input{width:24px;height:24px;margin:0;accent-color:var(--signal)}
.cart-terms a{color:var(--accent-text)}
.status.err{color:var(--accent-text)}

/* static pages (thanks, legal) */
.doc{max-width:72ch}
.doc h1{font-size:min(9vw,56px);line-height:.96;color:var(--signal);margin-bottom:24px}
.doc h2{font-size:22px;line-height:28px;font-weight:600;margin:32px 0 8px}
.doc p,.doc li{color:var(--text);margin-bottom:12px}
.doc ul{list-style:disc;padding-left:22px}
.doc a{color:var(--accent-text)}
.doc .todo{background:var(--pop);color:var(--on-pop);padding:0 4px}

@media (max-width:480px){
  dialog.cart{width:100vw;border-left:0}
  .cart-line{grid-template-columns:56px minmax(0,1fr) auto}
  .cart-line img{width:56px;height:56px}
}
@media (prefers-reduced-motion:reduce){*{transition-duration:.01ms!important}}
