/* =========================================================================
   OBD DYNAMICS — woocommerce.css
   Styles WooCommerce output without changing its behaviour.
   ========================================================================= */

/* ---- Archive hero ------------------------------------------------------- */
.obd-archive-hero {
	background:
		radial-gradient(700px 260px at 85% -20%, color-mix(in srgb, var(--obd-accent) 16%, transparent), transparent 70%),
		var(--obd-bg-2);
	border-bottom: 1px solid var(--obd-line);
	padding: 44px 0 38px;
}
.obd-archive-hero__title { font-size: clamp(1.8rem, 4vw, 2.6rem); margin: 8px 0 6px; }
.obd-archive-hero__desc { color: var(--obd-muted); max-width: 700px; }
.obd-breadcrumb { font-size: .82rem; color: var(--obd-muted-2); }
.obd-breadcrumb a { color: var(--obd-muted); }

/* ---- Archive layout ----------------------------------------------------- */
.obd-archive { display: grid; gap: 36px; padding: 40px 24px 56px; }
.obd-archive.has-sidebar { grid-template-columns: 280px 1fr; }
.obd-archive.no-sidebar { grid-template-columns: 1fr; }
.obd-archive__sidebar { }
.obd-widget { background: var(--obd-bg-3); border: 1px solid var(--obd-line); border-radius: var(--obd-radius); padding: 18px 18px 22px; margin-bottom: 20px; }
.obd-widget .widget-title { font-size: 1rem; margin-bottom: 14px; }
.obd-widget ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 9px; }
.obd-widget a { color: var(--obd-muted); font-size: .9rem; }
.obd-widget a:hover { color: var(--obd-accent); }

.obd-archive__toolbar {
	display: flex; align-items: center; justify-content: space-between; gap: 16px;
	margin-bottom: 24px; flex-wrap: wrap;
}
.woocommerce-result-count { color: var(--obd-muted); margin: 0; font-size: .9rem; }
.woocommerce-ordering select, .obd-archive__toolbar select {
	background: var(--obd-bg-3); color: var(--obd-text);
	border: 1px solid var(--obd-line-2); border-radius: 10px; padding: 10px 14px;
	font-family: var(--obd-ff-body); font-size: .9rem;
}

/* ---- Product grid / cards ---------------------------------------------- */
ul.products, .obd-products-block ul.products {
	display: grid !important;
	grid-template-columns: repeat(4, 1fr);
	gap: var(--obd-gap);
	list-style: none; margin: 0; padding: 0;
}
ul.products::before, ul.products::after { display: none !important; } /* kill float clears */
ul.products li.product { width: auto !important; margin: 0 !important; float: none !important; }

.obd-card {
	position: relative; display: flex; flex-direction: column;
	background: var(--obd-bg-3); border: 1px solid var(--obd-line);
	border-radius: var(--obd-radius); overflow: hidden;
	transition: transform .18s ease, border-color .18s ease, box-shadow .18s ease;
	height: 100%;
}
.obd-card:hover { transform: translateY(-4px); border-color: color-mix(in srgb, var(--obd-accent) 45%, var(--obd-line)); box-shadow: var(--obd-shadow-sm); }
.obd-card__link { display: flex; flex-direction: column; flex: 1; }
.obd-card__media { position: relative; aspect-ratio: 1/1; background: #fff; display: grid; place-items: center; overflow: hidden; }
.obd-card__media img { width: 100%; height: 100%; object-fit: contain; padding: 14px; mix-blend-mode: normal; }
.obd-card__body { padding: 16px 16px 8px; display: flex; flex-direction: column; gap: 6px; flex: 1; }
.obd-card__meta { font-family: var(--obd-ff-display); font-size: .68rem; letter-spacing: .12em; text-transform: uppercase; color: var(--obd-accent); }
.obd-card__title { font-size: .95rem; font-weight: 600; line-height: 1.35; color: var(--obd-text); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; min-height: 2.6em; }
.obd-card__price { margin-top: auto; font-family: var(--obd-ff-display); font-size: 1.15rem; font-weight: 700; color: var(--obd-text); }
.obd-card__price del { color: var(--obd-muted-2); font-weight: 400; font-size: .85rem; margin-right: 6px; }
.obd-card__price ins { text-decoration: none; color: var(--obd-accent); }
.obd-card__action { padding: 0 16px 16px; }
.obd-card__action .button, .obd-card__action a.button {
	display: block; text-align: center; width: 100%;
	background: var(--obd-bg); border: 1px solid var(--obd-line-2); color: var(--obd-text);
	border-radius: 999px; padding: 11px 16px; font-family: var(--obd-ff-display); font-weight: 600; font-size: .88rem;
	transition: .15s;
}
.obd-card__action .button:hover, .obd-card__action .added { background: var(--obd-accent); color: #00131c; border-color: transparent; }
.obd-card__action .loading { opacity: .6; }

/* Badges */
.obd-badge {
	position: absolute; z-index: 3; top: 10px; left: 10px;
	font-family: var(--obd-ff-display); font-weight: 700; font-size: .68rem; letter-spacing: .06em;
	padding: 5px 10px; border-radius: 999px; text-transform: uppercase;
}
.obd-badge--sale { background: var(--obd-sale); color: #fff; }
.obd-badge--oos { left: auto; right: 10px; background: #2b3340; color: var(--obd-muted); }

/* Woo's own sale flash inside related/native loops */
.woocommerce span.onsale {
	background: var(--obd-sale); color: #fff; border-radius: 999px;
	min-height: auto; min-width: auto; padding: 5px 10px; font-weight: 700; font-size: .7rem;
}

/* ---- Single product ----------------------------------------------------- */
.obd-single-top { padding: 22px 0 0; }
.obd-single-wrap { padding: 24px 24px 56px; }

.single-product div.product { display: grid; grid-template-columns: 1.05fr 1fr; gap: 48px; }
.single-product .woocommerce-product-gallery { margin: 0; }
.single-product .woocommerce-product-gallery__wrapper { border: 1px solid var(--obd-line); border-radius: var(--obd-radius); overflow: hidden; background: #fff; }
.single-product .woocommerce-product-gallery img { border-radius: 0; }
.single-product .flex-control-thumbs { display: flex; gap: 10px; margin-top: 12px; padding: 0; list-style: none; }
.single-product .flex-control-thumbs li { width: 72px; }
.single-product .flex-control-thumbs img { border: 1px solid var(--obd-line); border-radius: 8px; background: #fff; cursor: pointer; }

.single-product .product_title { font-size: clamp(1.6rem, 3.5vw, 2.4rem); margin-bottom: 14px; }
.single-product .price { font-family: var(--obd-ff-display); font-size: 1.8rem; font-weight: 700; color: var(--obd-text); margin-bottom: 18px; }
.single-product .price del { color: var(--obd-muted-2); font-size: 1.1rem; font-weight: 400; margin-right: 10px; }
.single-product .price ins { text-decoration: none; color: var(--obd-accent); }

.single-product .stock.in-stock { color: var(--obd-ok); font-weight: 600; }
.single-product .stock.out-of-stock { color: var(--obd-sale); font-weight: 600; }

.single-product .woocommerce-product-details__short-description { color: var(--obd-muted); margin-bottom: 22px; }

/* Quantity + add to cart */
.single-product form.cart { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; margin-bottom: 24px; }
.single-product .quantity input.qty {
	width: 76px; padding: 12px; text-align: center; border-radius: 10px;
	background: var(--obd-bg); border: 1px solid var(--obd-line-2); color: var(--obd-text); font-weight: 600;
}
.single-product form.cart .button, .single-product .single_add_to_cart_button {
	background: linear-gradient(135deg, var(--obd-accent), var(--obd-accent-2)) !important;
	color: #00131c !important; border: 0 !important; border-radius: 999px !important;
	padding: 14px 30px !important; font-family: var(--obd-ff-display); font-weight: 700 !important; font-size: 1rem !important;
	transition: box-shadow .15s ease, transform .15s ease;
}
.single-product .single_add_to_cart_button:hover { box-shadow: var(--obd-glow); transform: translateY(-2px); }

.single-product .product_meta { color: var(--obd-muted-2); font-size: .85rem; border-top: 1px solid var(--obd-line); padding-top: 16px; }
.single-product .product_meta a { color: var(--obd-muted); }

/* Tabs */
.woocommerce-tabs { grid-column: 1 / -1; margin-top: 48px; }
.woocommerce-tabs ul.tabs { display: flex; gap: 6px; list-style: none; padding: 0; margin: 0 0 24px; border-bottom: 1px solid var(--obd-line); flex-wrap: wrap; }
.woocommerce-tabs ul.tabs li { background: none; border: 0; }
.woocommerce-tabs ul.tabs li a {
	display: block; padding: 12px 18px; color: var(--obd-muted);
	font-family: var(--obd-ff-display); font-weight: 600; border-bottom: 2px solid transparent;
}
.woocommerce-tabs ul.tabs li.active a { color: var(--obd-text); border-bottom-color: var(--obd-accent); }
.woocommerce-tabs .panel { color: var(--obd-text); }
.woocommerce-tabs .panel h2 { font-size: 1.3rem; }

/* Related products */
.related.products, .upsells.products { grid-column: 1 / -1; margin-top: 48px; }
.related.products > h2, .upsells.products > h2 { font-size: 1.5rem; margin-bottom: 24px; }

/* ---- Cart / Checkout / Account (visual only) --------------------------- */
.obd-woo-generic, .obd-woo-wrap { padding-top: 8px; padding-bottom: 56px; }
.woocommerce-cart .obd-shell, .woocommerce-checkout .obd-shell, .woocommerce-account .obd-shell { }

.woocommerce table.shop_table {
	background: var(--obd-bg-3); border: 1px solid var(--obd-line); border-radius: var(--obd-radius);
	border-collapse: separate; overflow: hidden; color: var(--obd-text);
}
.woocommerce table.shop_table th { background: var(--obd-bg-2); color: var(--obd-text); font-family: var(--obd-ff-display); }
.woocommerce table.shop_table td, .woocommerce table.shop_table th { border-top: 1px solid var(--obd-line); padding: 14px 16px; }

.woocommerce .cart-collaterals .cart_totals,
.woocommerce-checkout #order_review,
.woocommerce-checkout .woocommerce-checkout-review-order {
	background: var(--obd-bg-3); border: 1px solid var(--obd-line); border-radius: var(--obd-radius); padding: 8px 18px;
}

.woocommerce form .form-row input.input-text,
.woocommerce form .form-row textarea,
.woocommerce .select2-container .select2-selection,
.woocommerce-checkout input[type="text"],
.woocommerce-checkout input[type="email"],
.woocommerce-checkout input[type="tel"],
.woocommerce-account input[type="text"],
.woocommerce-account input[type="password"],
.woocommerce-account input[type="email"] {
	background: var(--obd-bg) !important; color: var(--obd-text) !important;
	border: 1px solid var(--obd-line-2) !important; border-radius: 10px !important; padding: 12px 14px !important;
}
.woocommerce form .form-row label, .woocommerce-checkout label, .woocommerce-account label { color: var(--obd-muted); }

.woocommerce .button, .woocommerce a.button, .woocommerce button.button,
.woocommerce input.button, .woocommerce #respond input#submit {
	background: var(--obd-bg-3); color: var(--obd-text);
	border: 1px solid var(--obd-line-2); border-radius: 999px; padding: 12px 22px;
	font-family: var(--obd-ff-display); font-weight: 600;
}
.woocommerce .button.alt, .woocommerce a.button.alt, .woocommerce button.button.alt,
.woocommerce #place_order, .woocommerce .checkout-button {
	background: linear-gradient(135deg, var(--obd-accent), var(--obd-accent-2)) !important;
	color: #00131c !important; border: 0 !important; font-weight: 700 !important;
}
.woocommerce .button.alt:hover, .woocommerce #place_order:hover { box-shadow: var(--obd-glow); }

/* Notices */
.woocommerce-message, .woocommerce-info, .woocommerce-error {
	background: var(--obd-bg-3); border-top: 3px solid var(--obd-accent);
	color: var(--obd-text); border-radius: 10px;
}
.woocommerce-error { border-top-color: var(--obd-sale); }

/* Coupons / totals text legibility */
.woocommerce .cart_totals h2, .woocommerce #order_review_heading { font-family: var(--obd-ff-display); }

/* Empty / no products */
.obd-empty { color: var(--obd-muted); }
.woocommerce-no-products-found, .woocommerce-info { padding: 18px; }

/* =========================================================================
   v5.1.0 — SINGLE PRODUCT HARD FIXES
   Overrides WooCommerce + Jetpack Photon (i0.wp.com ?fit=) oversized images,
   size-shifting gallery, blank slides past image 2, and giant related cards.
   Scoped to .single-product so nothing else is affected.
   ========================================================================= */

/* Two-column layout, predictable widths, no horizontal overflow */
.single-product div.product {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
	gap: 40px;
	align-items: start;
	max-width: 100%;
	overflow: hidden;
}
.single-product div.product > * { min-width: 0; } /* let grid children shrink */

/* --- Gallery: the core fix --- */
.single-product .woocommerce-product-gallery {
	width: 100% !important;
	max-width: 100%;
	margin: 0 !important;
	float: none !important;
	position: relative;
}
.single-product .woocommerce-product-gallery__wrapper {
	margin: 0 !important;
	border: 1px solid var(--obd-line);
	border-radius: var(--obd-radius);
	overflow: hidden;
	background: #fff;
}
/* IMPORTANT: do NOT force display/height on the gallery slides themselves —
   that breaks WooCommerce FlexSlider's inline width/positioning and makes the
   active image vanish until you hover (a forced repaint). Instead we leave the
   slider structure alone and only cap the IMAGE so it can't blow up the page. */
.single-product .woocommerce-product-gallery__wrapper,
.single-product .woocommerce-product-gallery .flex-viewport {
	background: #fff;
}
/* Cap the image height and letterbox it; never crop, never overflow */
.single-product .woocommerce-product-gallery__image img,
.single-product .woocommerce-product-gallery img.wp-post-image,
.single-product .woocommerce-product-gallery a img {
	max-height: 460px !important;
	width: 100% !important;
	height: auto !important;
	object-fit: contain !important;
	margin: 0 auto !important;
	display: block;
	background: #fff;
}
/* Keep the viewport from collapsing/overflowing without touching slide widths */
.single-product .flex-viewport { max-height: 480px; }
.single-product .woocommerce-product-gallery .flex-control-nav.flex-control-thumbs {
	display: flex; flex-wrap: wrap; gap: 8px; margin: 12px 0 0; padding: 0; list-style: none;
}
.single-product .flex-control-thumbs li {
	width: 64px !important; height: 64px !important; margin: 0 !important; float: none !important;
}
.single-product .flex-control-thumbs img {
	width: 64px !important; height: 64px !important; object-fit: cover !important;
	border: 1px solid var(--obd-line); border-radius: 6px; background: #fff; cursor: pointer; opacity: .7;
}
.single-product .flex-control-thumbs img.flex-active,
.single-product .flex-control-thumbs img:hover { opacity: 1; border-color: var(--obd-accent); }
/* Zoom trigger icon stays put */
.single-product .woocommerce-product-gallery__trigger { top: 12px; right: 12px; z-index: 5; }

/* --- Summary / add-to-cart always sane --- */
.single-product div.summary.entry-summary { width: 100% !important; max-width: 100%; margin: 0 !important; float: none !important; }
.single-product .product_title { font-size: clamp(1.5rem, 3vw, 2.2rem); line-height: 1.15; }
.single-product form.cart { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; margin: 18px 0 22px; }
.single-product form.cart .button.alt,
.single-product .single_add_to_cart_button {
	background: linear-gradient(135deg, var(--obd-accent), var(--obd-accent-2)) !important;
	color: #00131c !important; border: 0 !important; border-radius: 999px !important;
	padding: 14px 30px !important; font-weight: 700 !important; white-space: nowrap;
}
/* Variable-product variations table tidy */
.single-product .variations { width: 100%; margin-bottom: 16px; }
.single-product .variations td, .single-product .variations th { padding: 6px 0; }
.single-product .variations select { width: 100%; padding: 12px 14px; background: var(--obd-bg); color: var(--obd-text); border: 1px solid var(--obd-line-2); border-radius: 10px; }

/* --- Tabs below, full width --- */
.single-product .woocommerce-tabs { grid-column: 1 / -1; margin-top: 40px; clear: both; }

/* --- RELATED / UPSELLS: uniform card sizing (kills the giant images) --- */
.single-product .related.products,
.single-product .upsells.products { grid-column: 1 / -1; margin-top: 48px; clear: both; }
.related.products ul.products,
.upsells.products ul.products {
	display: grid !important;
	grid-template-columns: repeat(4, 1fr);
	gap: var(--obd-gap);
}
.related.products ul.products li.product,
.upsells.products ul.products li.product { width: auto !important; margin: 0 !important; float: none !important; }
/* Fixed image box for every related card image regardless of source size */
.related.products li.product a img,
.upsells.products li.product a img,
.related.products li.product img,
.upsells.products li.product img {
	width: 100% !important;
	height: 240px !important;
	object-fit: cover !important;
	object-position: center;
	background: #fff;
	border-radius: var(--obd-radius-sm);
	margin: 0 0 12px !important;
	display: block;
}

/* --- Global safety: stop any WooCommerce/Jetpack image forcing page width --- */
.single-product img { max-width: 100%; height: auto; }
.woocommerce div.product div.images img { width: auto; }

@media (max-width: 860px) {
	.single-product div.product { grid-template-columns: 1fr; gap: 24px; }
	.single-product .woocommerce-product-gallery__image img { max-height: 340px !important; }
	.single-product .flex-viewport { max-height: 360px; }
	.related.products ul.products, .upsells.products ul.products { grid-template-columns: repeat(2, 1fr); }
	.related.products li.product a img, .upsells.products li.product a img { height: 180px !important; }
}

/* Product video / oembed (e.g. "Fast android 7.0 os") must not overflow */
.single-product .summary video,
.single-product .summary iframe,
.single-product .woocommerce-product-details__short-description video,
.single-product .wp-video,
.single-product .mejs-container,
.single-product video.wp-video-shortcode {
	max-width: 100% !important;
	width: 100% !important;
	height: auto !important;
}
