.shop-page { min-height: calc(100svh - var(--header-height)); padding-block: clamp(32px, 5vw, 72px) clamp(76px, 9vw, 120px); }
.shop-nav-links { display: flex; align-items: center; gap: clamp(12px, 3vw, 26px); }
.shop-cart-link { display: inline-flex; align-items: center; gap: 10px; min-height: 42px; padding: 7px 14px; border: 1px solid var(--line); border-radius: 999px; color: var(--wine); font-size: .86rem; font-weight: 700; text-decoration: none; }
.shop-cart-link:hover { background: var(--blush); }
.shop-cart-count { display: inline-grid; min-width: 24px; height: 24px; place-items: center; padding-inline: 5px; border-radius: 50%; color: var(--white); background: var(--wine); font-size: .7rem; }
.shop-toast { position: fixed; z-index: 40; right: 20px; bottom: 20px; max-width: min(370px, calc(100vw - 40px)); margin: 0; padding: 14px 18px; border-radius: 13px; color: var(--white); background: var(--wine); box-shadow: 0 12px 40px rgba(49,0,15,.2); font-size: .86rem; line-height: 1.5; }
.shop-toast[hidden] { display: none; }
.shop-intro { position: relative; display: flex; justify-content: space-between; gap: 24px; padding: 14px 0 clamp(40px, 6vw, 72px); }
.shop-intro > div { position: relative; z-index: 1; }
.shop-intro h1, .shop-cart-heading h1, .shop-result h1 { max-width: 15ch; margin-bottom: 20px; font-size: clamp(3.05rem, 6vw, 5.3rem); font-weight: 500; line-height: .98; }
.shop-intro h1 em, .shop-cart-heading h1 em, .shop-result h1 em { font-family: "Playfair Display", serif; font-weight: 500; }
.shop-intro p:last-child, .shop-cart-heading > p:last-child { max-width: 57ch; margin-bottom: 0; color: var(--muted); line-height: 1.7; }
.shop-intro > img { align-self: flex-start; width: clamp(105px, 17vw, 190px); opacity: .12; }
.shop-section-head { display: flex; justify-content: space-between; gap: 16px; margin-bottom: 24px; padding-top: 18px; border-top: 1px solid var(--line); color: var(--wine-soft); font-size: .7rem; font-weight: 700; letter-spacing: .13em; }
.shop-section-head span:last-child { color: var(--muted); letter-spacing: 0; }
.shop-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; }
.shop-card { display: flex; flex-direction: column; min-width: 0; overflow: hidden; border: 1px solid var(--line); border-radius: var(--radius); background: var(--white); }
.shop-card-media { height: clamp(225px, 25vw, 300px); min-height: 0; display: flex; align-items: center; justify-content: center; overflow: hidden; padding: 20px; background: var(--blush); }
.shop-card-media img { width: 100%; height: 100%; min-height: 0; object-fit: contain; transition: transform .25s ease; }
.shop-card-media:hover img { transform: scale(1.035); }
.shop-card-media .shop-placeholder { width: 80px; height: auto; opacity: .28; }
.shop-card-body { display: flex; flex: 1; flex-direction: column; padding: clamp(22px, 2.7vw, 30px); }
.shop-card-body .section-label { margin-bottom: 11px; }
.shop-card h2 { margin-bottom: 10px; font-size: clamp(1.65rem, 2.6vw, 2.2rem); line-height: 1.12; }
.shop-card h2 a { text-decoration: none; }
.shop-card h2 a:hover { color: var(--wine); }
.shop-card-description { display: -webkit-box; min-height: 2.8em; margin-bottom: 22px; overflow: hidden; color: var(--muted); font-size: .87rem; line-height: 1.55; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.shop-card-footer { display: flex; align-items: end; justify-content: space-between; gap: 12px; margin-top: auto; padding-top: 19px; border-top: 1px solid var(--line); }
.shop-card-footer div { display: grid; gap: 4px; }
.shop-card-footer strong { color: var(--wine); font-size: 1.15rem; }
.shop-card-footer span { color: var(--muted); font-size: .76rem; }
.shop-card-footer .btn { min-height: 42px; padding: 10px 15px; cursor: pointer; }
.shop-page .btn:disabled { opacity: .44; cursor: not-allowed; transform: none; }
.shop-empty { max-width: 690px; padding: clamp(30px, 5vw, 55px); border: 1px solid var(--line); border-radius: var(--radius); background: var(--white); }
.shop-empty h2 { color: var(--wine); font-size: clamp(1.8rem, 3.5vw, 2.8rem); }
.shop-empty p { margin-bottom: 0; color: var(--muted); line-height: 1.6; }
.shop-notice { margin-top: 24px; padding: 15px 18px; border: 1px solid var(--line); border-radius: 12px; color: var(--wine); background: var(--blush); line-height: 1.5; }
.shop-back { margin-bottom: 30px; }
.shop-detail { display: grid; grid-template-columns: minmax(0, 1fr) minmax(300px, .85fr); align-items: center; gap: clamp(30px, 6vw, 88px); }
.shop-detail-media { display: flex; align-items: center; justify-content: center; height: min(54vw, 570px); min-height: 350px; overflow: hidden; padding: clamp(18px, 3vw, 38px); border: 1px solid var(--line); border-radius: var(--radius); background: var(--blush); }
.shop-detail-media img { width: 100%; height: 100%; min-height: 0; object-fit: contain; }
.shop-detail-media .shop-placeholder { width: 95px; height: auto; opacity: .28; }
.shop-detail-copy h1 { margin-bottom: 24px; font-size: clamp(2.8rem, 4.6vw, 4.8rem); font-weight: 500; line-height: 1.02; }
.shop-detail-description { max-width: 58ch; color: var(--muted); line-height: 1.75; white-space: pre-line; }
.shop-detail-price { margin: 29px 0 5px; color: var(--wine); font-size: clamp(1.75rem, 3vw, 2.45rem); font-weight: 700; }
.shop-detail-stock { margin-bottom: 25px; color: var(--muted); font-size: .86rem; }
.shop-detail-copy .btn { cursor: pointer; }
.shop-fulfillment { max-width: 45ch; margin: 18px 0 0; color: var(--muted); font-size: .83rem; line-height: 1.6; }
.shop-cart-heading { margin-bottom: clamp(30px, 5vw, 52px); }
.shop-checkout-grid { display: grid; grid-template-columns: minmax(0, 1.18fr) minmax(330px, .82fr); gap: 24px; align-items: start; }
.shop-cart-card, .shop-summary { padding: clamp(22px, 3vw, 34px); border: 1px solid var(--line); border-radius: var(--radius); background: var(--white); }
.shop-cart-card .text-link { margin-top: 20px; }
.shop-cart-row { display: grid; grid-template-columns: 94px minmax(0, 1fr) auto; gap: 18px; align-items: start; padding: 18px 0; border-bottom: 1px solid var(--line); }
.shop-cart-row:first-child { padding-top: 0; }
.shop-cart-row-image { width: 94px; height: 94px; display: grid; place-items: center; padding: 7px; border-radius: 13px; background: var(--blush); }
.shop-cart-row-image img { width: 100%; height: 100%; object-fit: contain; }
.shop-cart-row-name { margin: 2px 0 6px; font-size: 1.1rem; font-weight: 700; }
.shop-cart-row-name a { text-decoration: none; }
.shop-cart-row-meta { margin: 0 0 12px; color: var(--muted); font-size: .81rem; }
.shop-cart-row-price { color: var(--wine); font-weight: 700; white-space: nowrap; }
.shop-quantity { display: inline-flex; align-items: center; gap: 11px; padding: 3px; border: 1px solid var(--line); border-radius: 999px; }
.shop-quantity button, .shop-remove, .shop-text-button { border: 0; color: var(--wine); background: none; cursor: pointer; }
.shop-quantity button { width: 28px; height: 28px; border-radius: 50%; font-size: 1.2rem; }
.shop-quantity button:hover { background: var(--blush); }
.shop-remove { display: block; margin-top: 10px; padding: 0; font-size: .78rem; text-decoration: underline; }
.shop-summary h2 { margin-bottom: 21px; font-size: 1.9rem; }
.shop-quote-line, .shop-summary-total { display: flex; justify-content: space-between; gap: 15px; padding-block: 8px; font-size: .86rem; }
.shop-quote-line span:last-child { white-space: nowrap; }
.shop-summary-total { align-items: end; margin-top: 15px; padding-top: 19px; border-top: 1px solid var(--line); font-size: 1.04rem; }
.shop-summary-total strong { color: var(--wine); font-size: 1.5rem; }
.shop-summary > p { margin: 13px 0 24px; color: var(--muted); font-size: .8rem; line-height: 1.55; }
.shop-summary form { display: grid; gap: 16px; }
.shop-summary h3 { margin: 15px 0 -10px; font-size: 1.3rem; }
.shop-summary form > p { margin-bottom: 0; color: var(--muted); font-size: .83rem; }
.shop-summary label { display: grid; gap: 7px; font-size: .84rem; font-weight: 700; }
.shop-summary input:not([type="checkbox"]), .shop-summary select { width: 100%; min-height: 48px; padding: 10px 13px; border: 1px solid var(--line); border-radius: 10px; color: var(--ink); background: var(--white); font: inherit; }
.shop-summary input:focus, .shop-summary select:focus { outline: 2px solid var(--wine-soft); outline-offset: 1px; }
.shop-phone-row { display: grid; grid-template-columns: 90px minmax(0, 1fr); gap: 12px; }
.shop-contact-phone-row { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
.shop-check { display: flex !important; align-items: start; gap: 10px !important; color: var(--muted); font-size: .78rem !important; font-weight: 400 !important; line-height: 1.5; }
.shop-check input { flex: 0 0 auto; margin-top: 3px; accent-color: var(--wine); }
.shop-full-button { width: 100%; border: 0; cursor: pointer; }
.shop-hidden { display: none !important; }
.shop-text-button { min-height: 37px; padding: 5px; text-decoration: underline; }
.shop-message { min-height: 1.5em; margin: 18px 0 0 !important; color: var(--wine) !important; font-size: .86rem !important; }
.shop-result { max-width: 750px; padding-top: clamp(30px, 6vw, 90px); }
.shop-result > p:not(.section-label) { max-width: 55ch; margin-bottom: 30px; color: var(--muted); font-size: 1.05rem; line-height: 1.7; }
.shop-result-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 19px; }
@media (max-width: 900px) {
  .shop-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .shop-checkout-grid { grid-template-columns: 1fr; }
  .shop-summary { max-width: 680px; width: 100%; }
}
@media (max-width: 660px) {
  .shop-contact-phone-row { grid-template-columns: 1fr; }
  .shop-page { padding-top: 30px; }
  .shop-nav-links { gap: 10px; }
  .shop-nav-links .text-link { display: none; }
  .shop-intro { padding-bottom: 38px; }
  .shop-intro > img { position: absolute; right: 0; top: 0; width: 105px; }
  .shop-intro h1 { max-width: 11ch; }
  .shop-grid { grid-template-columns: 1fr; gap: 15px; }
  .shop-card-media { height: 270px; }
  .shop-card-body { padding: 24px; }
  .shop-card-description { min-height: 0; }
  .shop-detail { grid-template-columns: 1fr; gap: 27px; }
  .shop-detail-media { height: 340px; min-height: 0; }
  .shop-detail-copy h1 { margin-bottom: 16px; }
  .shop-detail-copy .btn { width: 100%; }
  .shop-cart-row { grid-template-columns: 74px minmax(0, 1fr); gap: 12px; }
  .shop-cart-row-image { width: 74px; height: 74px; }
  .shop-cart-row-price { grid-column: 2; }
  .shop-cart-card, .shop-summary { padding: 21px; }
}
@media (prefers-reduced-motion: reduce) { .shop-card-media img, .shop-cart-link { transition: none; } }
