/*
Theme Name: NZM Laboratories
Theme URI: https://nzmlab.com/
Author: NZM Laboratories
Description: WooCommerce storefront theme for NZM Laboratories — research-grade peptides, EU-synthesised, Janoshik-verified. Converted faithfully from the original Astro design to a full WooCommerce theme (shop, product, cart, checkout, research blog).
Version: 1.0.1
Requires at least: 6.5
Tested up to: 7.0
Requires PHP: 8.0
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: nzm
Tags: e-commerce, woocommerce, custom-menu, featured-images, blog
WC requires at least: 8.0
WC tested up to: 10.9
*/

/*
 * The full visual system lives in assets/css/ (layout.css, home.css, product.css,
 * shop.css, cart.css, checkout.css, science.css, points.css, finalcta.css) and is
 * enqueued from functions.php. This file carries the theme header plus small
 * WordPress-environment overrides that the vendored design CSS can't know about.
 */

/* --------------------------------------------------------------------------
 * Admin-bar offset for the homepage's absolute nav.
 *
 * On the homepage the nav is `position:absolute; top:36px` (transparent bar
 * floating over the hero, sitting just under the 36px utility bar). When the
 * WordPress admin bar is visible it adds `html{margin-top:32px}`, which pushes
 * the in-flow utility bar down but NOT the absolute nav — so the nav overlaps
 * the utility bar. Push the absolute nav down by the admin-bar height to match.
 * (Selectors use two body classes on the same <body>: .admin-bar + .home.)
 * ----------------------------------------------------------------------- */
body.admin-bar.home .nav {
	top: calc( 36px + 32px );
}

@media screen and ( max-width: 782px ) {
	body.admin-bar.home .nav {
		top: calc( 36px + 46px );
	}
}

/* --------------------------------------------------------------------------
 * Mobile drawer under the admin bar.
 *
 * The mobile menu (.mnav) is `position:fixed; top:0`, so the WordPress admin bar
 * (fixed, z-index 99999) covers its top (logo + close button) for logged-in
 * users. Offset the drawer by the admin-bar height: 32px normally, 46px on the
 * ≤782px screens where WP makes the admin bar taller.
 * ----------------------------------------------------------------------- */
body.admin-bar .mnav {
	top: 32px;
}

@media screen and ( max-width: 782px ) {
	body.admin-bar .mnav {
		top: 46px;
	}
}

/* --------------------------------------------------------------------------
 * Mobile hero height under the admin bar.
 *
 * The mobile hero is `min-height:100svh` with its content bottom-aligned. When
 * the WordPress admin bar is visible it pushes the page down by its height
 * (html{margin-top:46px}), so the full-height hero — and its bottom "Shop now"
 * button — extends that far below the fold. Trim the hero by the admin-bar
 * height for logged-in users only; logged-out visitors keep the full 100svh.
 * ----------------------------------------------------------------------- */
@media screen and ( max-width: 640px ) {
	body.admin-bar .hero,
	body.admin-bar .hero__inner {
		min-height: calc( 100svh - 46px );
	}
}

/* --------------------------------------------------------------------------
 * Tier Pricing Table — restyle the plugin's quantity "blocks" (buttons) on the
 * product buy box to match the original design's .qty-preset chips: quantity on
 * top (bold), price + discount below, active tier filled ink. Scoped to .info
 * so it only affects the PDP buy box. !important beats the plugin's main.css.
 * ----------------------------------------------------------------------- */
.info .tiered-pricing-wrapper,
.info .tiered-pricing-dynamic-price-wrapper {
	border: 0 !important;
	padding: 0 !important;
	margin: 14px 0 0 !important;
	background: none !important;
	box-shadow: none !important;
}
.info .tiered-pricing-blocks {
	display: flex !important;
	flex-wrap: wrap;
	gap: 8px !important;
	border: 0 !important;
	padding: 12px 0 0 !important;
	background: none !important;
}
.info .tiered-pricing-blocks .tiered-pricing-block {
	position: relative;
	display: inline-flex !important;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 3px;
	min-width: 88px;
	margin: 0 !important;
	padding: 9px 16px !important;
	background: var( --white, #fff ) !important;
	border: 1px solid var( --line, #d4d4d4 ) !important;
	border-radius: 5px !important;
	cursor: pointer;
	text-align: center;
	font-family: "JetBrains Mono", monospace !important;
	color: var( --ink, #0a0a0a ) !important;
	transition: border-color .2s ease, color .2s ease, background-color .2s ease;
}
/* "Most popular" badge on the first discount tier (qty 3), like the source. */
.info .tiered-pricing-blocks .tiered-pricing-block[data-tiered-quantity="3"] {
	border-color: var( --ink, #0a0a0a ) !important;
}
.info .tiered-pricing-blocks .tiered-pricing-block[data-tiered-quantity="3"]::after {
	content: "Most popular";
	position: absolute;
	top: -9px;
	left: 50%;
	transform: translateX( -50% );
	white-space: nowrap;
	background: var( --ink, #0a0a0a );
	color: var( --white, #fff );
	font-size: 8px;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: .12em;
	padding: 2px 8px;
	border-radius: 999px;
	line-height: 1.4;
}
.info .tiered-pricing-blocks .tiered-pricing-block[data-tiered-quantity="3"].tiered-pricing--active::after {
	background: var( --white, #fff );
	color: var( --ink, #0a0a0a );
}
.info .tiered-pricing-blocks .tiered-pricing-block:hover {
	border-color: var( --ink, #0a0a0a ) !important;
}
.info .tiered-pricing-blocks .tiered-pricing-block.tiered-pricing--active {
	background: var( --ink, #0a0a0a ) !important;
	border-color: var( --ink, #0a0a0a ) !important;
	color: var( --white, #fff ) !important;
}
.info .tiered-pricing-block__quantity {
	order: -1;
	font-size: 12px !important;
	font-weight: 600 !important;
	text-transform: uppercase;
	letter-spacing: .06em;
	line-height: 1.1 !important;
	color: inherit !important;
}
.info .tiered-pricing-block__price {
	display: flex !important;
	align-items: baseline;
	gap: 4px;
	margin: 0 !important;
	font-size: 10px !important;
	letter-spacing: .04em;
	line-height: 1.1 !important;
	color: var( --ink-soft, #1c1c1c ) !important;
}
.info .tiered-pricing-block.tiered-pricing--active .tiered-pricing-block__price,
.info .tiered-pricing-block.tiered-pricing--active .tiered-pricing-block__price-discount {
	color: rgba( 255, 255, 255, .7 ) !important;
}
.info .tiered-pricing-block__price .woocommerce-Price-amount {
	font-size: 11px !important;
	font-weight: 600;
	color: inherit !important;
}
.info .tiered-pricing-block__price-discount {
	font-size: 10px !important;
	color: inherit !important;
}


/* --------------------------------------------------------------------------
 * Request-a-compound (bench-req) section — homepage + shop.
 * The source shipped these rules as an inline <style> in the page <head> (not in
 * any bundled CSS file), so they were missing from the theme. Restored here.
 * ----------------------------------------------------------------------- */
.bench-req{padding:96px 0;background:var(--bg-soft, #f7f5f0)}.bench-req__grid{display:grid;grid-template-columns:5fr 7fr;gap:64px;align-items:start;background:var(--white, #ffffff);border:1px solid var(--ink, #1a1a1a);border-radius:10px;padding:56px}.bench-req__icon{display:block;color:var(--ink, #1a1a1a);margin-bottom:20px}.bench-req__intro .sec__eyebrow{margin-bottom:18px}.bench-req__intro .sec__title{margin-bottom:24px}.bench-req__lede{font-size:17px;line-height:1.55;color:var(--ink, #1a1a1a);margin:0 0 16px}.bench-req__cred{font-size:14px;line-height:1.55;color:var(--ink-soft, #5a5a5a);margin:0 0 24px}.bench-req__form{display:flex;flex-direction:column;gap:16px;background:var(--white, #ffffff);border:1px solid var(--border, #e5e1d8);padding:32px}.bench-req__row{display:grid;grid-template-columns:1fr 1fr;gap:16px}.bench-req__field{display:flex;flex-direction:column;gap:6px}.bench-req__label{font-family:var(--font-mono, monospace);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft, #5a5a5a)}.bench-req__field input,.bench-req__field textarea{font-family:inherit;font-size:15px;line-height:1.4;color:var(--ink, #1a1a1a);padding:10px 12px;background:var(--bg-soft, #f7f5f0);border:1px solid var(--border, #e5e1d8);border-radius:0;outline:none;transition:border-color .15s ease}.bench-req__field input:focus,.bench-req__field textarea:focus{border-color:var(--ink, #1a1a1a)}.bench-req__field textarea{resize:vertical;min-height:88px}.bench-req__check{display:flex;align-items:center;gap:10px;font-size:14px;line-height:1.4;color:var(--ink, #1a1a1a);cursor:pointer;user-select:none;margin-top:4px}.bench-req__check input{width:16px;height:16px;accent-color:var(--ink, #1a1a1a)}.bench-req__submit{align-self:flex-start;margin-top:8px}.bench-req__disclaimer{font-size:12px;line-height:1.5;color:var(--ink-soft, #5a5a5a);margin:8px 0 0;padding-top:16px;border-top:1px solid var(--border, #e5e1d8)}.bench-req__thanks{font-size:14px;line-height:1.5;color:var(--accent, #0a0a0a);margin:4px 0 0}@media(max-width:880px){.bench-req{padding:64px 0}.bench-req__grid{grid-template-columns:1fr;gap:40px}.bench-req__form{padding:24px}.bench-req__row{grid-template-columns:1fr}}

/* --------------------------------------------------------------------------
 * Request-a-compound (bench-req) submit button — cross-page consistency.
 *
 * The homepage is a static page, so it enqueues product.css (nzm-article),
 * whose global `.btn{padding:16px 24px}` restyles the submit button. The shop
 * archive doesn't load product.css, so the same `.btn` fell back to layout.css's
 * `14px 32px` and the form's button looked different there. Pin the bench-req
 * submit to the homepage's padding so the form renders identically everywhere.
 * (Specificity .bench-req .bench-req__submit = 0,2,0 beats a bare .btn.)
 * ----------------------------------------------------------------------- */
.bench-req .bench-req__submit { padding: 16px 24px; }

/* --------------------------------------------------------------------------
 * bench-req heading type — cross-page consistency.
 *
 * The .sec__eyebrow / .sec__title *type* (JetBrains-Mono eyebrow with a bullet,
 * 48px bold uppercase title) is defined in home.css, which is enqueued ONLY on
 * the front page. On the shop archive (and any non-home template) the bench-req
 * heading fell back to layout.css's Tailwind reset (h2{font-weight:inherit} →
 * 400, no uppercase), so it rendered thin and un-capitalised. Mirror home.css's
 * declarations here (style.css loads everywhere), scoped to the bench-req intro,
 * so the section title matches the homepage on every page. font-size/
 * letter-spacing/line-height remain governed identically by layout.css.
 * ----------------------------------------------------------------------- */
.bench-req__intro .sec__eyebrow {
	font-family: "JetBrains Mono", monospace;
	font-size: 11px;
	text-transform: uppercase;
	letter-spacing: .16em;
	color: var(--ink-soft);
	margin-bottom: 18px;
	display: flex;
	align-items: center;
	gap: 8px;
}
.bench-req__intro .sec__eyebrow::before { content: "•"; font-size: 14px; }
.bench-req__intro .sec__title {
	font-size: 48px;
	font-weight: 700;
	letter-spacing: -.02em;
	line-height: 1.05;
	text-transform: uppercase;
}

/* ------------------------------------------------------------------ *
 * Inline content links — distinguish links from body text.
 * These prose areas rendered links in the same colour as body text
 * (the reset sets a{color:inherit}); the theme already used the accent
 * on :hover, so this just adds the resting colour + a subtle underline.
 * UI links (nav, footer, buttons, cards, breadcrumbs) keep their own
 * colours via higher-specificity rules and are unaffected.
 * ------------------------------------------------------------------ */
.legal__body a,
.art__content a,
.faq__a a,
.pdp-section__body a,
.pdp-acc__desc a,
.rpanel__body a,
.rsection__intro a,
.review__body a {
	color: var(--accent);
	text-decoration: underline;
	text-underline-offset: 2px;
	text-decoration-thickness: 1px;
	transition: color .2s ease;
}
.legal__body a:hover,
.art__content a:hover,
.faq__a a:hover,
.pdp-section__body a:hover,
.pdp-acc__desc a:hover,
.rpanel__body a:hover,
.rsection__intro a:hover,
.review__body a:hover {
	color: var(--accent-hover);
}
