.shop-hero { background: var(--soft); border-bottom: 1px solid var(--line); }
.shop-hero-inner { padding: clamp(4.5rem, 9vw, 7rem) 0 clamp(3.5rem, 7vw, 5.5rem); }
.shop-hero h1 { max-width: 13ch; font-size: clamp(2.35rem, 6vw, 4.4rem); }
.shop-lede { max-width: 42rem; color: var(--muted); font-size: 1.08rem; margin: 0; }
.shop-home-link { margin-top: 1.35rem; }
.shop-notice { margin-bottom: 1.5rem; }
.shop-tools { display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(220px, .8fr); gap: 1rem; padding: 1.25rem; border: 1px solid var(--line); background: var(--white); }
.shop-tools label { display: block; margin-bottom: .35rem; color: var(--muted); font-size: .84rem; }
.shop-tools input, .shop-tools select { min-height: 46px; }
.shop-result-bar { display: flex; justify-content: space-between; align-items: center; gap: 1rem; margin: 1.75rem 0 1rem; }
.shop-status { margin: 0; color: var(--muted); font-size: .9rem; }
.shop-back-link { color: var(--brand-deep); font-size: .9rem; font-weight: 700; }
.shop-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; }
.shop-card { display: block; overflow: hidden; border: 1px solid var(--line); border-radius: 4px; background: var(--white); color: var(--ink); transition: transform .2s ease, border-color .2s ease; }
.shop-card:hover { border-color: var(--brand-deep); color: var(--ink); text-decoration: none; transform: translateY(-3px); }
.shop-card:focus-visible { border-color: var(--brand-deep); text-decoration: none; }
.shop-card-art { aspect-ratio: 1.45; overflow: hidden; margin: 0; background: var(--soft); }
.shop-card-art img { width: 100%; height: 100%; object-fit: cover; transition: transform .3s ease; }
.shop-card:hover .shop-card-art img { transform: scale(1.035); }
.shop-card-body { padding: 1.05rem 1.1rem 1.2rem; }
.shop-card-label { color: var(--brand-deep); font-size: .76rem; font-weight: 700; letter-spacing: .06em; }
.shop-card h2 { margin: .35rem 0 .25rem; font-size: 1.1rem; }
.shop-card p { margin: 0; color: var(--muted); font-size: .88rem; }
.shop-card-link { display: inline-block; margin-top: .85rem; color: var(--brand-deep); font-size: .88rem; font-weight: 700; }
.shop-empty { padding: 2rem 0; color: var(--muted); }

@media (max-width: 820px) {
  .shop-grid { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 620px) {
  .shop-tools { grid-template-columns: 1fr; }
  .shop-result-bar { display: block; }
  .shop-back-link { display: inline-block; margin-top: .5rem; }
  .shop-grid { grid-template-columns: 1fr; }
}
