/* ============================================================
   OliverDeck — COMPONENT · PRODUCT CARD
   The canonical commerce card: 3-slide gallery, badges, favourite,
   colour swatches (variant switcher), length pills, dual-unit price
   (₽/м² + ₽/пог.м), stock indicator, add-to-cart + calc.
   Variants: default / compact / specs.
   ============================================================ */

.od-product, .od-product-v2 {
  background: var(--od-color-surface);
  border-radius: var(--r-lg);
  border: 1px solid var(--od-color-border);
  overflow: hidden;
  box-shadow: var(--shadow-xs);
  display: flex; flex-direction: column;
  transition: transform .2s, box-shadow .2s, border-color .2s;
  font-family: var(--od-font-body);
}
.od-product:hover, .od-product-v2:hover { transform: translateY(-2px); box-shadow: var(--shadow-md); border-color: var(--od-color-border-strong); }

/* gallery / carousel */
.pc-gal { position: relative; aspect-ratio: 4/3; overflow: hidden; background: var(--wood-200); cursor: pointer; }
.pc-slides { display: flex; width: 300%; height: 100%; transition: transform .35s var(--ease-out); }
.pc-slide { flex: 0 0 33.3333%; display: flex; align-items: center; justify-content: center; color: #fff; position: relative; background-size: cover; background-position: center; }
.pc-slide .pc-ico { font-size: 72px; opacity: .30; color: #fff; font-variation-settings: 'wght' 200; }
.pc-slide .pc-tag { position: absolute; bottom: 12px; right: 12px; background: rgba(24,16,9,.55); color: #fff; font-size: 10px; letter-spacing: .06em; text-transform: uppercase; font-weight: 700; padding: 4px 8px; border-radius: 6px; }

.pc-badges { position: absolute; top: 10px; left: 10px; display: flex; gap: 6px; z-index: 2; }
.pc-badge { font-size: 10.5px; padding: 4px 9px 4px 10px; border-radius: 2px 8px 8px 2px; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; display: inline-flex; align-items: center; gap: 4px; }
.pc-badge .material-symbols-outlined { font-size: 12px; font-variation-settings: 'wght' 700,'FILL' 1; }

.pc-fav { position: absolute; top: 10px; right: 10px; width: 34px; height: 34px; border-radius: 999px; border: none; background: rgba(255,255,255,.92); cursor: pointer; display: flex; align-items: center; justify-content: center; box-shadow: var(--shadow-xs); z-index: 2; transition: transform .15s, background .15s; }
.pc-fav:hover { background: #fff; transform: scale(1.06); }
.pc-fav .material-symbols-outlined { font-size: 17px; color: var(--od-color-text-muted); font-variation-settings: 'wght' 400, 'FILL' 0; }
.pc-fav.is-fav .material-symbols-outlined { color: var(--danger); font-variation-settings: 'wght' 400, 'FILL' 1; }

.pc-nav { position: absolute; top: 50%; transform: translateY(-50%); width: 32px; height: 32px; border-radius: 999px; background: rgba(255,255,255,.92); border: none; display: flex; align-items: center; justify-content: center; cursor: pointer; box-shadow: var(--shadow-sm); opacity: 0; transition: opacity .18s; z-index: 2; }
.pc-gal:hover .pc-nav { opacity: 1; }
.pc-nav.prev { left: 10px; } .pc-nav.next { right: 10px; }
.pc-nav .material-symbols-outlined { font-size: 18px; color: var(--wood-900); }

.pc-dots { position: absolute; bottom: 10px; left: 50%; transform: translateX(-50%); display: flex; gap: 4px; padding: 4px 8px; background: rgba(24,16,9,.55); border-radius: 999px; z-index: 2; }
.pc-dots span { width: 5px; height: 5px; border-radius: 999px; background: rgba(255,255,255,.5); transition: width .2s, background .2s; cursor: pointer; }
.pc-dots span.a { background: var(--olive-400); width: 16px; }

/* body */
.pc-body { padding: 14px 16px 16px; display: flex; flex-direction: column; gap: 10px; flex: 1; }
.pc-cat { font-size: 10.5px; text-transform: uppercase; letter-spacing: .08em; color: var(--olive-600); font-weight: 700; display: flex; justify-content: space-between; align-items: center; }
.pc-cat .pc-sku { color: var(--od-color-text-faint); font-weight: 500; letter-spacing: .02em; text-transform: none; font-size: 11px; }
.pc-title { font-family: var(--od-font-body); font-size: 15px; line-height: 1.3; font-weight: 700; margin: 0; color: var(--od-color-text-primary); cursor: pointer; }
.pc-title:hover { color: var(--olive-700); }

.pc-vrow { display: flex; align-items: center; gap: 8px; }
.pc-vlabel { font-size: 11px; color: var(--od-color-text-muted); font-weight: 600; }
.pc-vlabel b { color: var(--od-color-text-primary); font-weight: 700; }
.pc-vars { display: flex; gap: 5px; margin-left: auto; }
.pc-vs { width: 20px; height: 20px; border-radius: 6px; border: 1px solid rgba(0,0,0,.1); cursor: pointer; position: relative; transition: transform .15s; padding: 0; }
.pc-vs:hover { transform: scale(1.12); }
.pc-vs.active { outline: 2px solid var(--wood-900); outline-offset: 2px; }

.pc-mods { display: flex; gap: 4px; }
.pc-mod { font-size: 11px; padding: 5px 9px; border-radius: 6px; border: 1px solid var(--od-color-border-strong); color: var(--od-color-text-secondary); cursor: pointer; background: transparent; font-weight: 600; font-family: inherit; transition: border-color .15s, background .15s; }
.pc-mod:hover { border-color: var(--olive-400); }
.pc-mod.active { background: var(--wood-900); color: var(--neutral-50); border-color: var(--wood-900); }

/* dual-unit price block */
.pc-price-dual { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; padding: 10px 0; background: none; }
.pc-price-dual .pp { display: flex; flex-direction: column; gap: 2px; }
.pc-price-dual .pp.sec { border-left: 1px dashed var(--od-color-border-strong); padding-left: 10px; }
.pc-price-dual .pp .lbl { font-size: 10px; text-transform: uppercase; letter-spacing: .06em; color: var(--od-color-text-muted); font-weight: 700; }
.pc-price-dual .pp.main .lbl { color: var(--olive-700); }
.pc-price-dual .pp .val { font-family: var(--od-font-display); font-size: 18px; font-weight: 600; color: var(--od-color-text-primary); letter-spacing: -0.01em; line-height: 1.05; }
.pc-price-dual .pp.main .val { font-size: 20px; }
.pc-price-dual .pp .unit { font-size: 10.5px; color: var(--od-color-text-muted); margin-top: 2px; }
.pc-price-dual .pp .unit s { color: var(--od-color-text-faint); }

.pc-stock { font-size: 11px; color: var(--success); font-weight: 600; display: flex; align-items: center; gap: 4px; flex-wrap: wrap; }
.pc-stock .material-symbols-outlined { font-size: 13px; font-variation-settings: 'wght' 500,'FILL' 1; }
.pc-stock .pc-piece { color: var(--od-color-text-muted); font-weight: 500; margin-left: 4px; }
.pc-stock[data-stock="low"] { color: var(--warning); }
.pc-stock[data-stock="order"] { color: var(--od-color-text-muted); }

.pc-cta-row { display: flex; gap: 6px; margin-top: 2px; }
.pc-btn { flex: 1; padding: 11px; min-height: 44px; background: var(--wood-900); color: var(--neutral-50); border: none; border-radius: 10px; font-family: var(--od-font-body); font-weight: 600; font-size: 14px; cursor: pointer; display: flex; align-items: center; justify-content: center; gap: 6px; transition: background .15s, transform .15s; }
.pc-btn:hover { background: var(--wood-800); transform: translateY(-1px); }
.pc-btn .material-symbols-outlined { font-size: 16px; }
.pc-btn-calc { flex: none; width: 44px; background: var(--olive-50); color: var(--olive-700); border: 1px solid var(--olive-200); border-radius: 10px; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: background .15s; }
.pc-btn-calc:hover { background: var(--olive-100); }
.pc-btn-calc .material-symbols-outlined { font-size: 18px; }

/* compact variant */
.od-product-v2.prod-compact .pc-body { padding: 12px; gap: 8px; }
.od-product-v2.prod-compact .pc-title { font-size: 14px; }
.od-product-v2.prod-compact .pc-price-dual { padding: 8px 0; }
.od-product-v2.prod-compact .pc-price-dual .pp.main .val { font-size: 16px; }
.od-product-v2.prod-compact .pc-price-dual .pp .val { font-size: 14px; }

/* specs variant */
.od-product-v2.prod-specs .spec-list { display: grid; grid-template-columns: auto 1fr; gap: 4px 10px; font-size: 11.5px; }
.od-product-v2.prod-specs .spec-list .k { color: var(--od-color-text-muted); }
.od-product-v2.prod-specs .spec-list .v { color: var(--od-color-text-primary); font-weight: 600; text-align: right; }

/* ---------- STANDALONE PRICE BLOCK ---------- */
.od-price { display: inline-flex; align-items: baseline; gap: 8px; }
.od-price .p { font-family: var(--od-font-display); font-size: 22px; font-weight: 600; color: var(--od-color-text-primary); letter-spacing: -0.01em; }
.od-price .u { font-size: 12px; color: var(--od-color-text-muted); }
.od-price .old { font-size: 14px; color: var(--od-color-text-faint); text-decoration: line-through; }
.od-price[data-size="lg"] .p { font-size: 40px; letter-spacing: -0.02em; }

/* ---------- STOCK INDICATOR (standalone) ---------- */
.od-stock { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; font-weight: 600; color: var(--od-color-success); }
.od-stock .material-symbols-outlined { font-size: 16px; font-variation-settings: 'wght' 500, 'FILL' 1; }
.od-stock[data-level="low"] { color: var(--warning); }
.od-stock[data-level="order"] { color: var(--od-color-text-muted); }
.od-stock[data-level="out"] { color: var(--danger); }
