/* OV Woo — catalog components: accessories list, fits link, stock badge, archive robot filter.
   Theme-neutral defaults; override --ov-woo-accent / --ov-woo-border per theme.
   Toast notifications live in the OV dashboard toast system (ov-dashboard assets/css/ov-toast.css). */
/* ============================================
   Accessories list (single product page)
   ============================================ */
.product-accessories { margin-top: 28px; width: 100%; flex: 0 0 100%; order: 2; }
/* Theme-independent: some themes (dobot/i-comfort) have no #product-cart wrapper and their own flex containers. */
#product-cart form:has(.product-accessories), .variations_button:has(.product-accessories) { flex-wrap: wrap; }
.product-accessories ~ .single_add_to_cart_button { order: 3; }
.accessories-title { margin: 0 0 14px; font-size: 18px; font-weight: 600; color: inherit; }
.bundle-checkbox.accessory-row { display: flex; align-items: center; padding: 12px 0; border-bottom: 1px solid var(--ov-woo-border, rgba(127,127,127,.15)); margin-bottom: 0; cursor: pointer; }
.bundle-checkbox.accessory-row .accessory-checkbox { width: 18px; height: 18px; margin: 0; flex-shrink: 0; accent-color: var(--ov-woo-accent, #03589e); cursor: pointer; }
.acc-label { display: flex; align-items: center; gap: 14px; flex: 1; min-width: 0; cursor: pointer; }
.acc-thumb { flex-shrink: 0; width: 56px; height: 56px; display: flex; align-items: center; justify-content: center; background: rgba(127,127,127,.08); border-radius: 8px; overflow: hidden; }
.acc-thumb img { width: 100%; height: 100%; object-fit: contain; }
.acc-info { display: flex; flex-direction: column; gap: 4px; flex: 1; min-width: 0; }
.acc-name a { color: inherit; text-decoration: none; font-size: 14px; font-weight: 500; }
.acc-name a:hover { color: var(--ov-woo-accent, #03589e); }
.acc-price { font-size: 13px; opacity: .7; }
.acc-price small { font-size: 11px; opacity: .8; }
.acc-amount[data-state="select"] + small { display: none; }
.accessory-row--included { cursor: default; }
.acc-included-badge { flex-shrink: 0; display: inline-flex; align-items: center; gap: 6px; padding: 5px 12px; background: rgba(22,163,74,.1); border: 1px solid rgba(22,163,74,.3); border-radius: 999px; color: #16a34a; font-size: 12px; font-weight: 600; }
.quantity.acc-qty { flex: 0 0 auto; display: inline-flex; align-items: stretch; margin: 0; border: 1px solid var(--ov-woo-border, rgba(127,127,127,.25)); border-radius: 8px; overflow: hidden; background: transparent; }
.acc-qty .qty-btn { width: 28px; height: 28px; padding: 0; border: none; border-radius: 0; background: transparent; color: inherit; font-size: 15px; line-height: 1; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: background .15s ease, color .15s ease; }
.acc-qty .qty-btn:hover:not(:disabled) { background: var(--ov-woo-accent, #03589e); color: #fff; }
.acc-qty .qty-btn:disabled { opacity: .35; cursor: not-allowed; }
.acc-qty .qty-btn.qty-minus { border-right: 1px solid var(--ov-woo-border, rgba(127,127,127,.25)); }
.acc-qty .qty-btn.qty-plus { border-left: 1px solid var(--ov-woo-border, rgba(127,127,127,.25)); }
/* Scoped to .acc-qty (specificity 0,3,0) so theme-level input[type=number] rules cannot break the stepper. */
.quantity.acc-qty .accessory-qty { width: 36px; height: 28px; min-width: 36px; padding: 0 4px; text-align: center; border: 0; background: transparent; color: inherit; font-size: 13px; font-weight: 600; border-radius: 0; box-shadow: none; -moz-appearance: textfield; appearance: textfield; }
.accessory-qty::-webkit-outer-spin-button, .accessory-qty::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.accessory-qty:disabled { opacity: .4; }
.bundle-total { display: flex; align-items: center; gap: 8px; margin-top: 16px; margin-bottom: 15px; padding: 14px 16px; background: rgba(3,88,158,.08); border: 1px solid rgba(3,88,158,.2); border-radius: 10px; font-size: 15px; font-weight: 600; }
.bundle-total { background: color-mix(in srgb, var(--ov-woo-accent, #03589e) 8%, transparent); border-color: color-mix(in srgb, var(--ov-woo-accent, #03589e) 20%, transparent); }
.bundle-total.is-hidden { display: none; }
.bundle-total .total-label { opacity: .7; font-weight: 500; }
.bundle-total .total-amount { color: var(--ov-woo-accent, #03589e); font-size: 18px; }
.bundle-total small { font-size: 11px; opacity: .6; font-weight: 400; }
.accessory-row[data-vars] { flex-wrap: wrap; }
.accessory-row[data-vars] .acc-qty { order: 2; }
.accessory-row-vars { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; flex-basis: 100%; order: 3; margin-top: 10px; padding-left: 102px; }
.accessory-var-attr { max-width: 170px; padding: 7px 8px; border: 1px solid var(--ov-woo-border, rgba(127,127,127,.25)); border-radius: 6px; background: transparent; color: inherit; font-size: 13px; cursor: pointer; }
.accessory-var-attr option { color: #1a2332; background: #fff; }
/* ============================================
   Quantity stepper (single product page, main qty fields)
   ============================================ */
:is(#product-cart, form.cart) .quantity:not(.acc-qty) { display: inline-flex; align-items: stretch; width: auto; margin: 0; border: 1px solid var(--ov-woo-border, rgba(127,127,127,.25)); border-radius: 8px; overflow: hidden; background: transparent; }
:is(#product-cart, form.cart) .quantity:not(.acc-qty) label.screen-reader-text { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
:is(#product-cart, form.cart) .quantity:not(.acc-qty) .qty-btn { width: 44px; height: 44px; border: none; background: transparent; color: inherit; font-size: 20px; font-weight: 600; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: background .15s ease, color .15s ease; line-height: 1; padding: 0; border-radius: 0 !important; }
:is(#product-cart, form.cart) .quantity:not(.acc-qty) .qty-btn:hover { background: var(--ov-woo-accent, #03589e); color: #fff; }
:is(#product-cart, form.cart) .quantity:not(.acc-qty) .qty-btn.qty-minus { border-right: 1px solid var(--ov-woo-border, rgba(127,127,127,.25)); }
:is(#product-cart, form.cart) .quantity:not(.acc-qty) .qty-btn.qty-plus { border-left: 1px solid var(--ov-woo-border, rgba(127,127,127,.25)); }
:is(#product-cart, form.cart) .quantity:not(.acc-qty) input.input-text { width: 54px; text-align: center; padding: 0 4px; border: none; background: transparent; color: inherit; font-size: 15px; font-weight: 600; height: 44px; -moz-appearance: textfield; appearance: textfield; }
:is(#product-cart, form.cart) .quantity:not(.acc-qty) input.input-text::-webkit-outer-spin-button, :is(#product-cart, form.cart) .quantity:not(.acc-qty) input.input-text::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
:is(#product-cart, form.cart) .variations_button .quantity { width: fit-content; }
/* ============================================
   Fits link (accessory product pages)
   ============================================ */
.ov-woo-product-fits { margin: 0 0 12px; font-size: 13px; opacity: .75; }
.ov-woo-product-fits a { color: inherit; font-weight: 500; text-decoration: none; border-bottom: 1px solid currentColor; }
.ov-woo-product-fits a:hover { color: var(--ov-woo-accent, #03589e); border-color: var(--ov-woo-accent, #03589e); opacity: 1; }
/* ============================================
   Stock badge (single product summary)
   ============================================ */
.ov-woo-stock-badge { display: flex; flex-direction: column; gap: 6px; margin-bottom: 24px; padding: 14px 16px; background: rgba(127,127,127,.06); border: 1px solid var(--ov-woo-border, rgba(127,127,127,.15)); border-radius: 10px; font-size: 13px; }
.ov-woo-stock { display: flex; align-items: center; gap: 6px; font-weight: 600; }
.ov-woo-stock svg { flex-shrink: 0; width: 14px; height: 14px; }
.ov-woo-stock--in { color: #16a34a; }
.ov-woo-stock--backorder { color: #d97706; }
.ov-woo-shipping-info { display: flex; align-items: center; gap: 6px; font-size: 12px; opacity: .65; }
.ov-woo-shipping-info svg { flex-shrink: 0; width: 14px; height: 14px; }
.ov-woo-shipping-class { display: flex; align-items: center; gap: 6px; font-size: 12px; font-weight: 500; color: var(--ov-woo-accent, #03589e); }
.ov-woo-shipping-class svg { flex-shrink: 0; width: 14px; height: 14px; }
/* ============================================
   Robot filter (archive toolbar)
   ============================================ */
.ov-woo-robot-filter { position: relative; display: inline-block; }
.ov-woo-robot-filter__toggle { display: flex; align-items: center; gap: 6px; padding: 8px 12px; font-size: 13px; background: transparent; border: 1px solid var(--ov-woo-border, rgba(127,127,127,.25)); border-radius: 8px; color: inherit; cursor: pointer; }
.ov-woo-robot-filter__toggle:hover { border-color: var(--ov-woo-accent, #03589e); }
.ov-woo-robot-filter__label { opacity: .6; }
.ov-woo-robot-filter__menu { position: absolute; top: calc(100% + 4px); left: 0; z-index: 20; min-width: 220px; max-height: 320px; overflow-y: auto; margin: 0; padding: 6px; list-style: none; background: #fff; border: 1px solid rgba(127,127,127,.25); border-radius: 8px; box-shadow: 0 8px 24px rgba(0,0,0,.12); display: none; }
.ov-woo-robot-filter.is-open .ov-woo-robot-filter__menu { display: block; }
.ov-woo-robot-filter__item { display: flex; align-items: center; justify-content: space-between; gap: 8px; width: 100%; padding: 7px 10px; font-size: 13px; background: none; border: none; color: inherit; text-align: left; border-radius: 6px; cursor: pointer; }
.ov-woo-robot-filter__item:hover:not(.is-disabled) { background: rgba(127,127,127,.08); }
.ov-woo-robot-filter__item.is-active { color: var(--ov-woo-accent, #03589e); font-weight: 600; }
.ov-woo-robot-filter__item.is-disabled { opacity: .4; cursor: not-allowed; }
.ov-woo-robot-filter__count { font-size: 12px; opacity: .55; }
