/*
Theme Name: Outright Workout Library
Theme URI: https://outrightworkoutlibrary.com/
Description: Lightweight GeneratePress child theme for the Outright Workout Library storefront.
Author: Outright Fitness
Author URI: https://outrightfitness.com/
Template: generatepress
Version: 1.2.83
Requires at least: 6.5
Requires PHP: 7.4
Text Domain: outright-workout-library
*/

:root {
	--owl-coal: #121316;
	--owl-gunmetal: #23262b;
	--owl-red: #d71920;
	--owl-red-dark: #ac1015;
	--owl-bone: #f0eee9;
	--owl-steel: #6e7178;
	--owl-line: #d9dadd;
	--owl-white: #fff;
	--owl-green: #398e3f;
	--owl-body: "Inter", -apple-system, BlinkMacSystemFont, sans-serif;
	--owl-heading: "Oswald", "Arial Narrow", sans-serif;
	--owl-display: "Bebas Neue", "Arial Narrow", sans-serif;
	--owl-mono: "JetBrains Mono", ui-monospace, monospace;
	--owl-archivo: "Archivo", -apple-system, BlinkMacSystemFont, sans-serif;
	--owl-barlow: "Barlow", -apple-system, BlinkMacSystemFont, sans-serif;
	--owl-content: 1180px;
	--owl-narrow: 780px;
	--owl-shadow: 0 16px 42px rgb(18 19 22 / 12%);
}

html { scroll-behavior: smooth; }
body {
	background: var(--owl-white);
	color: var(--owl-coal);
	font-family: var(--owl-body);
	font-size: 1.0625rem;
	line-height: 1.6;
	overflow-x: clip;
}
body.owl-lock { overflow: hidden; }
*, *::before, *::after { box-sizing: border-box; }
img { height: auto; max-width: 100%; }
a { color: var(--owl-red); text-decoration-thickness: 1px; text-underline-offset: 3px; }
a:hover { color: var(--owl-red-dark); }
h1, h2, h3, h4, h5, h6 {
	color: var(--owl-coal);
	font-family: var(--owl-heading);
	font-weight: 500;
	letter-spacing: .02em;
	line-height: 1.15;
	text-transform: uppercase;
}
h1 { font-size: clamp(2.6rem, 6vw, 5.5rem); }
h2 { font-size: clamp(2.1rem, 4vw, 3.7rem); }
h3 { font-size: clamp(1.35rem, 2vw, 2rem); }
button, input, select, textarea { font: inherit; }
:focus-visible { outline: 3px solid var(--owl-red); outline-offset: 3px; }

.grid-container { max-width: var(--owl-content); }
.site-content { padding: 0; }
.content-area { width: 100%; }
.site-main { margin: 0; }
.site-main > article > .inside-article { padding: 0; }
.entry-content:not(:first-child) { margin-top: 0; }
.entry-content > * { margin-block-start: 0; }

/* Single merged top bar (rotating promo + member/support), then the header. */
.owl-topbar { background: #000; color: #fff; }
.owl-topbar__inner { align-items: center; display: flex; gap: clamp(18px, 3vw, 42px); justify-content: space-between; margin-inline: auto; min-height: 42px; padding: 6px 34px; width: min(100%, 1420px); }
.owl-topbar--single .owl-topbar__inner { justify-content: center; }
/* Block, not flex. A flex container makes each run of text its own anonymous
   item and DISCARDS the whitespace between items, so the word spaces either
   side of the code chip vanished and the red box sat hard against "CODE" and
   "AT". Normal inline flow keeps them. */
.owl-topbar__promo { display: block; font-family: var(--owl-archivo); font-size: .8rem; font-weight: 500; letter-spacing: .04em; line-height: 1.6; min-width: 0; text-transform: uppercase; }
.owl-topbar--single .owl-topbar__promo { text-align: center; }
.owl-promo-banner__message { margin: 0; }
.owl-promo-banner__message[hidden] { display: none; }
.owl-topbar__promo a { color: #fff; text-decoration: underline; }
/* The coupon code has to be scannable at a glance in a 42px bar. */
/* Right padding is 2px lighter than the left to absorb the trailing sliver
   letter-spacing adds after the final glyph; without it the box reads as
   left-heavy. nowrap so a code never breaks across two lines. */
.owl-topbar__code { background: var(--owl-red); display: inline-block; font-family: var(--owl-mono); font-weight: 600; letter-spacing: .12em; margin-inline: 4px; padding: 2px 6px 2px 8px; white-space: nowrap; }
.owl-topbar__utility { align-items: center; display: flex; flex: 0 0 auto; gap: clamp(18px, 2.4vw, 40px); }
.owl-topbar__utility a, .owl-topbar__service { align-items: center; color: #fff; display: inline-flex; font-family: var(--owl-archivo); font-size: .78rem; font-weight: 500; gap: 8px; letter-spacing: .04em; text-decoration: none; text-transform: uppercase; white-space: nowrap; }
.owl-topbar__utility a:hover { color: #fff; text-decoration: underline; }
.owl-topbar svg, .owl-header-actions svg, .owl-nav-toggle svg { fill: none; height: 17px; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.8; width: 17px; }
.top-bar, #top-bar, .generate-top-bar, .site-header, .main-navigation, .secondary-navigation, #secondary-navigation { display: none !important; }
.owl-site-header { background: #fff; border-bottom: 1px solid #ececef; box-shadow: 0 4px 16px rgb(18 19 22 / 6%); position: relative; z-index: 100; }
.owl-site-header__inner { align-items: center; display: flex; gap: clamp(24px, 3vw, 48px); margin-inline: auto; min-height: 92px; padding: 12px 34px; width: min(100%, 1420px); }
.owl-site-header__logo { flex: 0 0 auto; }
.site-logo .header-image, .custom-logo, .owl-fallback-logo img { display: block; height: auto; width: 215px; }
.owl-primary-navigation { margin-left: auto; }
.owl-primary-menu { align-items: center; display: flex; gap: 4px; list-style: none; margin: 0; padding: 0; }
.owl-primary-menu li { margin: 0; position: relative; }
.owl-primary-menu a {
	color: var(--owl-gunmetal);
	display: block;
	font-size: 14px;
	font-weight: 600;
	letter-spacing: .01em;
	padding: 18px 12px;
	text-decoration: none;
	white-space: nowrap;
}
.owl-primary-menu li[class*="current-menu-"] > a, .owl-primary-menu li:hover > a { color: var(--owl-red); }
.owl-primary-menu li[class*="current-menu-"] > a::after {
	background: var(--owl-red);
	bottom: 9px;
	content: "";
	height: 2px;
	left: 12px;
	position: absolute;
	right: 12px;
}
.owl-primary-menu .sub-menu { background: #fff; border: 1px solid #eee; box-shadow: var(--owl-shadow); display: none; left: 0; list-style: none; margin: 0; min-width: 220px; padding: 8px 0; position: absolute; top: 100%; z-index: 20; }
.owl-primary-menu li:hover > .sub-menu, .owl-primary-menu li:focus-within > .sub-menu { display: block; }
.owl-primary-menu .sub-menu a { display: block; padding: 11px 18px; white-space: normal; }
.owl-header-actions { align-items: center; display: flex; flex: 0 0 auto; gap: 10px; }
.owl-header-account, .owl-header-cart { align-items: center; color: var(--owl-coal); display: inline-flex; font-family: var(--owl-archivo); font-size: 13px; font-weight: 600; gap: 7px; letter-spacing: .02em; min-height: 48px; text-decoration: none; text-transform: uppercase; white-space: nowrap; }
.owl-header-account:hover { color: var(--owl-red); }
.owl-cart-trigger { background: transparent; border: 0; color: inherit; cursor: pointer; min-height: 48px; padding: 0 8px; position: relative; }
.owl-cart-icon { display: inline-flex; position: relative; }
.owl-cart-count {
	align-items: center;
	background: var(--owl-red);
	border: 2px solid #fff;
	border-radius: 99px;
	color: #fff;
	display: flex;
	font-family: var(--owl-mono);
	font-size: 10px;
	font-weight: 600;
	height: 19px;
	justify-content: center;
	line-height: 1;
	min-width: 19px;
	padding: 0 3px;
	position: absolute;
	right: -9px;
	top: -8px;
}
/* An empty cart shows no badge. Anchored to the icon so it never overlaps the label. */
.owl-cart-count[hidden] { display: none !important; }
.owl-floating-cart .owl-cart-count { border-color: var(--owl-coal); }
.owl-floating-cart:hover .owl-cart-count { border-color: var(--owl-coal); }
.owl-nav-toggle { align-items: center; background: transparent; border: 0; color: var(--owl-coal); display: none; gap: 7px; margin-left: auto; min-height: 48px; padding: 8px; }
.owl-nav-toggle:hover { background: transparent; border-color: transparent; color: var(--owl-red); transform: none; }

/* Ensure older page-level sidebar selections cannot constrain rebuilt pages. */
body.page .site-content, body.woocommerce-page .site-content { max-width: none; width: 100%; }
body.page #primary, body.woocommerce-page #primary { float: none; width: 100%; }
body.page #right-sidebar, body.page #left-sidebar, body.woocommerce-page #right-sidebar, body.woocommerce-page #left-sidebar { display: none !important; }

/* Reusable layout */
.owl-shell { margin-inline: auto; max-width: var(--owl-content); padding-inline: 28px; width: 100%; }
.owl-narrow { margin-inline: auto; max-width: var(--owl-narrow); }

/* WordPress constrained groups otherwise re-cap every nested pattern group at
   theme.json's 720px prose width. Keep shells and structural grids at the
   1180px desktop width while preserving deliberately narrow copy wrappers. */
.entry-content .owl-shell { max-width: var(--owl-content) !important; width: 100%; }
.entry-content .owl-shell.owl-narrow { max-width: var(--owl-narrow) !important; }
/* GeneratePress pins .alignwide to margin-left:0 on full-width pages, which
   left-aligns our capped shells (value grid, split, hero copy). Re-center them. */
.full-width-content .entry-content .owl-shell { margin-inline: auto !important; }
.entry-content .owl-hero__content { max-width: 850px !important; }
.entry-content .owl-page-hero .owl-shell { max-width: 940px !important; }
.owl-shell > :where(.owl-split, .owl-offer-grid, .owl-resource-grid, .owl-value-grid, .owl-process, .owl-comparison-grid, .owl-format-strip__grid, .owl-inline-cta, .owl-filter-frame, .owl-product-showcase) {
	max-width: none !important;
	width: 100%;
}
/* Explicit section backgrounds so the white -> soft -> white rhythm never
   depends on the body colour resolving a particular way. */
.owl-section { background: var(--owl-white); padding-block: clamp(64px, 8vw, 112px); }
.owl-section--tight { padding-block: clamp(42px, 6vw, 72px); }
.owl-section--soft { background: var(--owl-bone); }
.owl-section--coal { background: var(--owl-coal); color: #fff; }
.owl-section--coal h1, .owl-section--coal h2, .owl-section--coal h3 { color: #fff; }
/* Eyebrows: signal red only on light flat backgrounds; bone on dark or
   photographic backgrounds where small red caps lose legibility. Archivo
   (not condensed Oswald) with open tracking so the caps stay readable. */
/* Eyebrows use the darker red on light surfaces: signal red on bone is only
   4.47:1, which fails AA for text this small. Dark red is 6.38:1. */
.owl-kicker { color: var(--owl-red-dark); font-family: var(--owl-archivo); font-size: 13px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; }
.owl-section--coal .owl-kicker, .owl-hero .owl-kicker, .owl-page-hero .owl-kicker { color: var(--owl-bone); }
.owl-rule { background: var(--owl-red); height: 3px; margin: 26px 0; width: 90px; }
.owl-lead { font-size: clamp(1.05rem, 1.6vw, 1.28rem); line-height: 1.7; }
.owl-actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 28px; }
.wp-element-button,
.button,
button.button,
input[type="submit"],
.owl-button {
	background: var(--owl-red);
	border: 2px solid var(--owl-red);
	border-radius: 0;
	box-shadow: none;
	/* Archivo 700, not Oswald 600: Oswald ships only 400/500, so weight 600 was
	   being synthesised (faux bold), which smears the glyphs. Archivo has a real
	   700 file and is a wider face, so button labels stay crisp and legible. */
	color: #fff;
	font-family: var(--owl-archivo);
	font-size: .9375rem;
	font-weight: 700;
	letter-spacing: .07em;
	line-height: 1;
	min-height: 50px;
	padding: 15px 24px;
	text-decoration: none;
	text-transform: uppercase;
	transition: background .18s ease, border-color .18s ease, color .18s ease, transform .18s ease;
}
.wp-element-button:hover, .button:hover, button.button:hover, input[type="submit"]:hover, .owl-button:hover { background: var(--owl-coal); border-color: var(--owl-coal); color: var(--owl-bone); transform: translateY(-1px); }
.owl-button--dark { background: var(--owl-coal); border-color: var(--owl-coal); }
.owl-button--outline { background: transparent; border-color: currentColor; color: var(--owl-coal); }
.owl-section--coal .owl-button--outline { color: #fff; }

/* Core block buttons.
   GeneratePress targets `a.wp-block-button__link:not(.has-background)` — two
   classes AND an element (0,2,1) — and prints after this stylesheet, so a
   two-class rule loses the cascade. These selectors use element + three
   classes (0,3,1) to win outright. Longhand background-color/border-color are
   used deliberately so they compete with GP's longhands directly.
   Modifier classes sit on the .wp-block-button WRAPPER (the pattern helper
   puts them there), so variants are addressed through the wrapper. */
.wp-block-button > a.wp-block-button__link.wp-element-button {
	align-items: center;
	background-color: var(--owl-red);
	border: 2px solid var(--owl-red);
	border-radius: 0;
	color: #fff;
	display: inline-flex;
	font-family: var(--owl-archivo);
	font-size: .9375rem;
	font-weight: 700;
	justify-content: center;
	letter-spacing: .07em;
	line-height: 1;
	min-height: 50px;
	padding: 15px 24px;
	text-decoration: none;
	text-transform: uppercase;
}
.wp-block-button > a.wp-block-button__link.wp-element-button:hover {
	background-color: var(--owl-coal);
	border-color: var(--owl-coal);
	color: #fff;
}
.wp-block-button.owl-button--dark > a.wp-block-button__link.wp-element-button { background-color: var(--owl-coal); border-color: var(--owl-coal); color: #fff; }
.wp-block-button.owl-button--dark > a.wp-block-button__link.wp-element-button:hover { background-color: var(--owl-red); border-color: var(--owl-red); color: #fff; }
/* Outline defaults to the dark-background treatment (heroes, coal CTA bands). */
.wp-block-button.owl-button--outline > a.wp-block-button__link.wp-element-button { background-color: transparent; border-color: var(--owl-bone); color: var(--owl-bone); }
.wp-block-button.owl-button--outline > a.wp-block-button__link.wp-element-button:hover { background-color: var(--owl-bone); border-color: var(--owl-bone); color: var(--owl-coal); }
.owl-section:not(.owl-section--coal) .wp-block-button.owl-button--outline > a.wp-block-button__link.wp-element-button { border-color: var(--owl-coal); color: var(--owl-coal); }
.owl-section:not(.owl-section--coal) .wp-block-button.owl-button--outline > a.wp-block-button__link.wp-element-button:hover { background-color: var(--owl-coal); border-color: var(--owl-coal); color: #fff; }
.owl-cards { display: grid; gap: 22px; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.owl-card { background: #fff; border: 1px solid var(--owl-line); border-top: 5px solid var(--owl-coal); padding: 30px; }
.owl-card--red { border-top-color: var(--owl-red); }
.owl-stat-grid { display: grid; gap: 1px; grid-template-columns: repeat(4, 1fr); background: #34373d; }
.owl-stat { background: var(--owl-coal); color: #fff; padding: 34px 24px; }
.owl-stat b { color: #fff; display: block; font-family: var(--owl-mono); font-size: 3.6rem; font-weight: 600; line-height: 1; }
.owl-stat span { color: #c8c9cd; font-family: var(--owl-heading); font-size: 11px; font-weight: 500; letter-spacing: .08em; text-transform: uppercase; }
.owl-hero { background: var(--owl-coal); color: #fff; min-height: min(700px, 75vh); overflow: hidden; position: relative; }
/* Flat 75% scrim, not a directional gradient: the subject can sit anywhere in
   the frame and white text still clears WCAG AAA (10.3:1) even over a pure
   white image. Keeps hero art selection simple and crop-safe on every size. */
.owl-hero::after { background: rgb(18 19 22 / 75%); content: ""; inset: 0; pointer-events: none; position: absolute; z-index: 0; }
.owl-hero .wp-block-cover__inner-container { position: relative; width: 100%; z-index: 1; }
.owl-hero .wp-block-cover__image-background { object-position: center 45%; }
.owl-hero__media { height: 100%; inset: 0; object-fit: cover; position: absolute; width: 100%; }
.owl-hero__content { align-items: flex-start; display: flex; flex-direction: column; justify-content: center; max-width: 850px; min-height: inherit; padding-block: 90px; position: relative; z-index: 1; }
.owl-hero h1, .owl-page-hero h1 { font-family: var(--owl-display); font-weight: 400; letter-spacing: .02em; text-transform: uppercase; }
.owl-hero h1 { color: #fff; margin: 14px 0 18px; }

/* Conversion page patterns */
.owl-section--soft { background: var(--owl-bone); }
.owl-page-hero { min-height: auto; padding-block: clamp(72px, 9vw, 120px); }
.owl-page-hero .owl-shell { max-width: 940px; }
.owl-page-hero h1 { color: #fff; font-size: clamp(2.7rem, 6vw, 5.25rem); margin: 14px 0 22px; }
.owl-page-hero .owl-lead { color: #e4e5e7; max-width: 830px; }
.owl-heading--center { margin-inline: auto; max-width: 880px; text-align: center; }
.owl-actions--center { justify-content: center; }
.owl-format-strip { background: #000; color: #fff; padding-block: 28px; }
.owl-format-strip__title { color: #fff; font-family: var(--owl-archivo); font-size: 12px; font-weight: 600; letter-spacing: .08em; margin: 0 0 20px; text-align: center; text-transform: uppercase; }
.owl-format-strip__grid { display: grid; gap: 1px; grid-template-columns: repeat(4, 1fr); }
/* WordPress injects margin-block-start (block gap) on every constrained-group
   child AFTER the first. Inside a grid that drops columns 2-4 (PDF/PRINT/CUSTOM)
   below column 1 (APP). Zeroing it on the grid children realigns all four tops
   and keeps the dividers level. The same reset covers the other card grids,
   which carried the same latent misalignment in their first row. */
.owl-format-strip__grid > *,
.owl-cards > *, .owl-offer-grid > *, .owl-resource-grid > *, .owl-value-grid > *,
.owl-process > *, .owl-comparison-grid > *, .owl-stat-grid > * { margin-block-start: 0; margin-top: 0; }
.owl-format-strip__item { border-left: 1px solid #383a3f; padding: 4px 24px; }
.owl-format-strip__item:last-child { border-right: 1px solid #383a3f; }
.owl-format-strip__item > :first-child { margin-top: 0; }
.owl-format-strip__item h3 { color: #fff; font-size: 21px; margin: 0 0 5px; text-transform: uppercase; }
.owl-format-strip__item p { color: #bfc1c5; font-size: 13px; line-height: 1.5; margin: 0; }
.owl-split { align-items: center; display: grid; gap: clamp(34px, 6vw, 78px); grid-template-columns: repeat(2, minmax(0, 1fr)); margin-top: 38px; }
.owl-split__content > :first-child, .owl-proof-panel > :first-child { margin-top: 0; }
.owl-proof-panel { background: #fff; border: 1px solid var(--owl-line); border-top: 6px solid var(--owl-red); box-shadow: var(--owl-shadow); padding: clamp(28px, 4vw, 46px); }
.owl-proof-panel--dark { background: var(--owl-coal); border-color: var(--owl-coal); color: #fff; }
.owl-proof-panel--dark h3 { color: #fff; }
/* Card eyebrows: same treatment as .owl-kicker — Archivo (not condensed
   Oswald), larger, open tracking, and the darker red for contrast. */
.owl-card-label { color: var(--owl-red-dark); font-family: var(--owl-archivo); font-size: 12px; font-weight: 700; letter-spacing: .12em; line-height: 1.3; text-transform: uppercase; }
.owl-section--coal .owl-card-label, .owl-proof-panel--dark .owl-card-label, .owl-stat-card .owl-card-label { color: var(--owl-bone); }
.owl-proof-line { border-top: 1px solid var(--owl-line); font-weight: 700; margin-top: 26px; padding-top: 22px; }
.owl-check-list { list-style: none; margin: 24px 0 0; padding: 0; }
.owl-check-list li { margin: 0 0 12px; padding-left: 26px; position: relative; }
.owl-check-list li::before { color: var(--owl-red); content: "✓"; font-weight: 800; left: 0; position: absolute; }
.owl-offer-grid, .owl-resource-grid, .owl-value-grid, .owl-process { display: grid; gap: 22px; grid-template-columns: repeat(3, minmax(0, 1fr)); margin-top: 42px; }
.owl-comparison-grid { display: grid; gap: 24px; grid-template-columns: repeat(2, minmax(0, 1fr)); margin-top: 42px; }
.owl-offer-card { background: #fff; border: 1px solid var(--owl-line); border-top: 6px solid var(--owl-coal); display: flex; flex-direction: column; padding: 32px; }
.owl-offer-card--featured { border-top-color: var(--owl-red); box-shadow: var(--owl-shadow); }
.owl-offer-card h3 { font-size: clamp(1.55rem, 2.5vw, 2.25rem); margin: 6px 0 16px; }
.owl-offer-card .owl-check-list { margin-bottom: 8px; }
.owl-offer-card .owl-actions { margin-top: auto; padding-top: 20px; }
.owl-offer-card .owl-actions .wp-block-button, .owl-offer-card .owl-actions a { width: 100%; }
.owl-offer-card .owl-actions a { text-align: center; }

/* An Image block placed at the top of a card bleeds to the card edges and is
   cropped to a common ratio, so cards with photos stay the same shape. Insert
   an Image block as the first item inside the card in the editor. */
.owl-offer-card > figure:first-child,
.owl-offer-card > .wp-block-image:first-child { margin: -32px -32px 22px; }
.owl-card > figure:first-child,
.owl-card > .wp-block-image:first-child { margin: -30px -30px 20px; }
.owl-value-card > figure:first-child,
.owl-value-card > .wp-block-image:first-child { margin: -30px -30px 20px; }
.owl-offer-card figure:first-child img,
.owl-card figure:first-child img,
.owl-value-card figure:first-child img {
	aspect-ratio: 4 / 3;
	display: block;
	object-fit: cover;
	width: 100%;
}
/* Focus links dropped on a normal page via [owl_chart_focus_links]. */
.owl-focus-links-block { margin-top: 26px; text-align: center; }
.owl-section--tight > .owl-shell > .owl-focus-links-block { margin-top: 0; }
/* Shop landing hero: shorter than the homepage hero so the grid stays near the fold. */
.owl-hero--charts { min-height: min(460px, 58vh); }
.owl-hero--charts .owl-hero__content { padding-block: clamp(56px, 7vw, 78px); }
.owl-archive-backlink { margin: 14px 0 0; }
.owl-archive-backlink a { color: var(--owl-red); font-family: var(--owl-heading); font-size: 13px; letter-spacing: .04em; text-transform: uppercase; }
.owl-value-card, .owl-stat-card { background: #fff; border: 1px solid var(--owl-line); padding: 30px; }
.owl-value-card { border-bottom: 4px solid var(--owl-red); }
.owl-stat-card { background: #1e2024; border-color: #393c42; color: #d7d8da; text-align: center; }
.owl-stat-card h3 { color: #fff; font-size: clamp(1.8rem, 3vw, 2.7rem); }
/* Two-up variant, for when a grid has two cards rather than three or four. */
.owl-value-grid--two { grid-template-columns: repeat(2, minmax(0, 1fr)); }
/* Four-up: without this a fourth card is orphaned on a row of its own. */
.owl-value-grid--four { gap: 18px; grid-template-columns: repeat(4, minmax(0, 1fr)); }
.owl-value-grid--four .owl-value-card { padding: 26px 22px; }
/* A single clarifying line under a section — quieter than a lead, louder than body. */
.owl-note-line { border-left: 4px solid var(--owl-red); color: #33363c; font-size: 15px; margin-top: 30px; padding-left: 16px; }

/* Testimonial cards. Inherit .owl-value-card, so only the type changes here. */
.owl-testimonial { display: flex; flex-direction: column; justify-content: space-between; }
.owl-testimonial__quote { font-family: var(--owl-heading); font-size: clamp(1.15rem, 2vw, 1.4rem); font-weight: 400; line-height: 1.4; margin: 0; }
.owl-testimonial__cite { color: var(--owl-steel); font-size: 13px; letter-spacing: .06em; margin: 18px 0 0; text-transform: uppercase; }
.owl-section--coal .owl-testimonial { background: #1e2024; border-color: #393c42; color: #e7e8ea; }
.owl-section--coal .owl-testimonial__cite { color: #a7abb2; }

/* Trustindex review widget: give it air and keep it centred in the shell. */
.owl-reviews .owl-shell > * + * { margin-top: 34px; }
.owl-reviews .ti-widget { margin-inline: auto; }

/* FAQ — core details blocks, no JS. */
.owl-faq__item { background: #fff; border: 1px solid var(--owl-line); border-left: 4px solid var(--owl-red); margin-top: 12px; padding: 20px 24px; }
.owl-faq__item summary { cursor: pointer; font-family: var(--owl-heading); font-size: 1.1rem; font-weight: 500; letter-spacing: .01em; list-style: none; padding-right: 30px; position: relative; }
.owl-faq__item summary::-webkit-details-marker { display: none; }
.owl-faq__item summary::after { content: "+"; color: var(--owl-red); font-family: var(--owl-mono); font-size: 1.4rem; line-height: 1; position: absolute; right: 0; top: 50%; transform: translateY(-50%); }
.owl-faq__item[open] summary::after { content: "\2212"; }
.owl-faq__item summary:focus-visible { outline: 2px solid var(--owl-red); outline-offset: 4px; }
.owl-faq__item p { color: #33363c; margin: 14px 0 0; }
.owl-process--four { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.owl-step { border-top: 4px solid var(--owl-coal); padding: 28px 20px 4px 0; }
.owl-step__number { color: var(--owl-red); font-family: var(--owl-mono); font-size: 3.2rem; font-weight: 600; line-height: 1; margin: 0 0 15px; }
.owl-step h3 { margin: 0 0 12px; }
.owl-inline-cta { align-items: center; background: var(--owl-bone); border-left: 6px solid var(--owl-red); display: grid; gap: 36px; grid-template-columns: minmax(0, 1.55fr) minmax(240px, .7fr); padding: clamp(30px, 5vw, 58px); }
.owl-inline-cta__aside { border-left: 1px solid #c8c6c0; padding-left: 34px; }
.owl-inline-cta__stat { color: var(--owl-red); font-family: var(--owl-heading); font-size: 25px; line-height: 1.2; }
.owl-filter-frame { background: #fff; border: 1px solid var(--owl-line); margin-top: 34px; min-height: 220px; padding: 24px; }
.owl-library-filter { scroll-margin-top: 110px; }
/* Any anchored section must clear the sticky header when jumped to. */
.owl-section[id], .owl-product-showcase[id], #shop-workout-charts, #workout-library-filter { scroll-margin-top: 110px; }
.owl-product-showcase .woocommerce { margin-top: 34px; }
.owl-form-frame { background: #fff; border: 1px solid var(--owl-line); border-top: 5px solid var(--owl-red); margin-top: 32px; padding: clamp(24px, 5vw, 44px); }
/* Offer panel injected above the request form on the remote training page. */
.owl-injected-offer { margin: 34px auto 0; }
.owl-injected-offer .owl-offer-panel { margin-block: 0; }
.owl-editor-note { background: #fff7d6; border-left: 4px solid #d49b00; color: #5d4900; margin: 0; padding: 18px; }
/* "Who builds this" links. Quiet by default — this is a trust cue placed next
   to an ask, not a competing call to action. */
.owl-about-link { color: var(--owl-steel); font-size: 15px; line-height: 1.6; margin: 18px 0 0; }
.owl-about-link a { color: var(--owl-coal); text-decoration: underline; text-underline-offset: 3px; }
.owl-about-link a:hover, .owl-about-link a:focus { color: var(--owl-red); }
.owl-injected-offer .owl-about-link { margin-top: 14px; }
/* Product summary variant sits under the cart button, so it needs its own room. */
.owl-about-link--product { border-top: 1px solid var(--owl-line); margin-top: 22px; padding-top: 16px; }
.owl-note { background: #fff; border-left: 6px solid var(--owl-red); padding-block: 34px; padding-inline: clamp(24px, 5vw, 54px); }
.owl-quote { border: 0; margin: 0; padding: 0; text-align: center; }
.owl-quote p { font-family: var(--owl-heading); font-size: clamp(2rem, 4vw, 3.6rem); line-height: 1.15; }
.owl-quote cite { color: var(--owl-red); font-family: var(--owl-heading); font-size: 12px; font-style: normal; font-weight: 500; letter-spacing: .08em; text-transform: uppercase; }
.owl-cta-band { text-align: center; }
.owl-cta-band .owl-actions { justify-content: center; }
.owl-cta-band .owl-kicker { margin-bottom: 14px; }
.owl-cta-band .owl-lead { color: #d8dadd; }
.owl-resource-grid .owl-card { display: flex; flex-direction: column; }
.owl-resource-grid .owl-card .owl-actions { margin-top: auto; padding-top: 12px; }

/* Workout Library chatbot embed */
.owl-chatbot .owl-lead { color: #d8dadd; }
.owl-chatbot__frame { background: #0e0f12; border: 1px solid #2a2d33; border-top: 4px solid var(--owl-red); margin: 30px auto 0; max-width: 760px; }
.owl-chatbot__frame iframe { display: block; width: 100%; height: 520px; border: 0; }
@media (max-width: 768px) { .owl-chatbot__frame iframe { height: 460px; } }

/* WooCommerce archives */
.woocommerce .woocommerce-breadcrumb { color: var(--owl-steel); font-size: 13px; margin: 28px auto; max-width: var(--owl-content); padding-inline: 28px; }
.woocommerce-products-header { margin: 0 auto; max-width: var(--owl-content); padding: 70px 28px 34px; text-align: center; }
.woocommerce-products-header h1 { font-size: clamp(2.4rem, 5vw, 4.6rem); }
.owl-chart-intro { padding: 72px 0 46px; text-align: center; }
.owl-chart-intro h1 { font-size: clamp(2.4rem, 5vw, 4.6rem); }
.owl-chart-intro .owl-actions { justify-content: center; }
.owl-chart-intro__label { font-family: var(--owl-archivo); font-size: 12px; font-weight: 600; letter-spacing: .08em; margin: 34px 0 12px; text-transform: uppercase; }
.owl-focus-links { display: flex; flex-wrap: wrap; gap: 9px; justify-content: center; }
.owl-focus-links a { border: 2px solid var(--owl-coal); border-radius: 99px; color: var(--owl-coal); font-family: var(--owl-heading); font-size: 13px; line-height: 1; padding: 9px 16px; text-decoration: none; text-transform: uppercase; }
.owl-focus-links a:hover, .owl-focus-links a.is-red { background: var(--owl-red); border-color: var(--owl-red); color: #fff; }
/* Selected focus reads as a filled chip so the grid state is obvious. */
.owl-focus-links a.is-active { background: var(--owl-coal); border-color: var(--owl-coal); color: #fff; }
.owl-focus-links a.is-active:hover { background: var(--owl-red); border-color: var(--owl-red); }
/* Pills sitting directly above the product grid, in place of the sort select. */
.owl-focus-links-block--loop { margin: 0 0 26px; text-align: left; }
.owl-focus-links-block--loop .owl-focus-links { justify-content: flex-start; }
.woocommerce .owl-focus-links-block--loop { clear: both; float: none; width: 100%; }
.woocommerce .woocommerce-result-count, .woocommerce .woocommerce-ordering { margin: 0 0 28px; }
.woocommerce .woocommerce-ordering select { background: #fff; border: 1px solid var(--owl-line); border-radius: 0; min-height: 48px; padding: 8px 36px 8px 13px; }
.woocommerce ul.products { display: grid; gap: 26px; grid-template-columns: repeat(3, minmax(0, 1fr)); margin: 0; }
.woocommerce ul.products::before, .woocommerce ul.products::after { display: none; }
.woocommerce ul.products li.product {
	background: #fff;
	border: 1px solid var(--owl-line);
	border-bottom: 4px solid var(--owl-red);
	border-top: 5px solid var(--owl-coal);
	display: flex;
	float: none !important;
	flex-direction: column;
	margin: 0 !important;
	padding: 18px 18px 24px;
	position: relative;
	text-align: center;
	width: auto !important;
}
.woocommerce ul.products li.product:hover { box-shadow: var(--owl-shadow); transform: translateY(-2px); }
.woocommerce ul.products li.product a img { aspect-ratio: 1 / 1; object-fit: contain; }
/* Product names are written long for Amazon SEO, so loop titles are clamped to
   three lines. Cards keep a common height and one runaway name can no longer
   stretch a whole row. The full name is still on the product page. */
.woocommerce ul.products li.product .woocommerce-loop-product__title {
	color: var(--owl-coal);
	display: -webkit-box;
	font-family: var(--owl-heading);
	font-size: 20px;
	font-weight: 500;
	-webkit-line-clamp: 3;
	line-clamp: 3;
	line-height: 1.25;
	min-height: 3.75em;
	overflow: hidden;
	padding: 17px 2px 8px;
	-webkit-box-orient: vertical;
}
.woocommerce ul.products li.product .price { color: var(--owl-red); font-family: var(--owl-mono); font-size: 17px; font-weight: 600; margin-top: auto; }
/* Loop add-to-cart: WooCommerce's own `.woocommerce a.button` outranks the
   generic button rule, so the brand treatment is restated at loop specificity.
   This covers every product loop — archives, the homepage featured row and the
   library filter — so cards are identical wherever they appear. */
.woocommerce ul.products li.product .button,
.woocommerce ul.products li.product a.button {
	align-items: center;
	align-self: center;
	background: var(--owl-red);
	border: 2px solid var(--owl-red);
	border-radius: 0;
	color: #fff;
	display: inline-flex;
	font-family: var(--owl-archivo);
	font-size: 14px;
	font-weight: 700;
	justify-content: center;
	letter-spacing: .06em;
	line-height: 1;
	margin-top: 16px;
	min-height: 44px;
	padding: 0 20px;
	text-align: center;
	text-transform: uppercase;
}
.woocommerce ul.products li.product .button:hover,
.woocommerce ul.products li.product a.button:hover { background: var(--owl-coal); border-color: var(--owl-coal); color: #fff; }

/* Format chips, conditional star ratings and the membership badge are printed
   by the core plugin on EVERY product loop, but that plugin's stylesheet only
   loads on pages containing the filter shortcode. Their presentation therefore
   lives here, in the always-loaded theme stylesheet. */
.owl-format-chips { display: flex; flex-wrap: wrap; gap: 6px; justify-content: center; margin: 5px 0 2px; }
.owl-chip { background: #fff; border: 1px solid var(--owl-line); color: var(--owl-steel); font-family: var(--owl-body); font-size: 10.5px; font-weight: 600; letter-spacing: .03em; line-height: 1; padding: 5px 8px; text-transform: uppercase; }
.owl-rating { align-items: center; display: flex; font-size: 13px; gap: 7px; justify-content: center; margin: 4px 0 0; }
.owl-rating .star-rating { color: #f5a623; margin: 0; }
.owl-rating-count { color: var(--owl-steel); font-family: var(--owl-body); font-weight: 600; }
.owl-member-badge { background: var(--owl-coal); color: #fff; display: inline-block; font-family: var(--owl-body); font-size: 12px; font-weight: 600; letter-spacing: .01em; line-height: 1.3; padding: 6px 10px; }
/* Also neutralises WooCommerce's round olive sale-flash styling when Memberships
   reuses it for the member badge. */
.woocommerce ul.products li.product .owl-member-badge,
.woocommerce ul.products li.product .onsale.wc-memberships-member-discount {
	background: var(--owl-coal);
	border-radius: 0;
	color: #fff;
	font-family: var(--owl-body);
	font-size: 12px;
	font-weight: 600;
	height: auto;
	left: 10px;
	letter-spacing: .01em;
	line-height: 1.3;
	margin: 0;
	max-width: calc(100% - 20px);
	min-height: 0;
	min-width: 0;
	padding: 6px 10px;
	position: absolute;
	right: auto;
	text-align: left;
	text-transform: none;
	top: 10px;
	width: auto;
	z-index: 3;
}

/* ---------------------------------------------------------------------------
   Swipe row: showcase product rows (homepage featured) scroll horizontally
   instead of stacking. Cards keep the vertical layout here — a media object
   would be too cramped at carousel width. JS adds the wrapper and dots; this
   degrades to a normal scrollable row with no JS.
   The library filter grid is deliberately excluded — a filtered browse of the
   whole catalogue belongs in a grid with pagination.
   --------------------------------------------------------------------------- */
.owl-swipe { position: relative; }
.owl-swipe .woocommerce { margin: 0; }
.owl-swipe ul.products {
	display: flex !important;
	gap: 20px;
	grid-template-columns: none !important;
	margin: 0 !important;
	overflow-x: auto;
	overscroll-behavior-x: contain;
	padding: 4px 0 8px;
	scroll-snap-type: x mandatory;
	scrollbar-width: none;
	-ms-overflow-style: none;
}
.owl-swipe ul.products::-webkit-scrollbar { display: none; }
.owl-swipe ul.products li.product {
	/* 4 across on desktop, with the 4th partly cut to signal more content. */
	/* The base loop rule sets width:auto !important, so match that weight. */
	flex: 0 0 auto;
	min-width: 0;
	scroll-snap-align: start;
	width: calc((100% - 3 * 20px) / 3.6) !important;
}
.owl-swipe ul.products:focus-visible { outline: 3px solid var(--owl-red); outline-offset: 4px; }
.owl-swipe__nav { align-items: center; display: flex; gap: 14px; justify-content: center; margin-top: 18px; }
.owl-swipe__dots { display: flex; gap: 8px; }
.owl-swipe__dot { background: var(--owl-line); border: 0; border-radius: 0; cursor: pointer; height: 4px; min-height: 0; padding: 0; transition: background .18s ease, width .18s ease; width: 22px; }
.owl-swipe__dot.is-active { background: var(--owl-red); width: 34px; }
.owl-swipe__arrow { align-items: center; background: #fff; border: 1px solid var(--owl-line); color: var(--owl-coal); cursor: pointer; display: inline-flex; height: 38px; justify-content: center; min-height: 0; padding: 0; width: 38px; }
.owl-swipe__arrow:hover:not(:disabled) { background: var(--owl-coal); border-color: var(--owl-coal); color: #fff; }
.owl-swipe__arrow:disabled { cursor: default; opacity: .35; }
.owl-swipe__arrow svg { fill: none; height: 16px; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2.2; width: 16px; }
.owl-section--coal .owl-swipe__dot { background: #3a3d43; }
.owl-section--coal .owl-swipe__arrow { background: transparent; border-color: #3a3d43; color: #fff; }

@media (max-width: 1024px) {
	.owl-swipe ul.products li.product { width: calc((100% - 2 * 20px) / 2.4) !important; }
}
@media (max-width: 768px) {
	/* ~1.5 cards visible so the second is clearly cut off — the strongest
	   affordance that the row scrolls. */
	.owl-swipe ul.products { gap: 14px; }
	.owl-swipe ul.products li.product { width: 66% !important; }
	.owl-swipe__arrow { display: none; }
	/* Inside a carousel the card stays vertical, overriding the media object. */
	.owl-swipe ul.products li.product { display: flex !important; flex-direction: column; padding: 12px 12px 16px !important; text-align: center !important; }
	.owl-swipe ul.products li.product a.woocommerce-LoopProduct-link,
	.owl-swipe ul.products li.product a.woocommerce-loop-product__link { display: block !important; }
	.owl-swipe ul.products li.product img { grid-column: auto; grid-row: auto; width: 100% !important; }
	.owl-swipe ul.products li.product .woocommerce-loop-product__title { -webkit-line-clamp: 2; line-clamp: 2; font-size: 14px !important; min-height: 2.6em; padding: 12px 2px 4px !important; text-align: center !important; }
	.owl-swipe ul.products li.product .owl-rating,
	.owl-swipe ul.products li.product .owl-format-chips { justify-content: center; }
	.owl-swipe ul.products li.product .price { text-align: center !important; }
	.owl-swipe ul.products li.product .button,
	.owl-swipe ul.products li.product a.button { align-self: center; margin: 12px auto 0 !important; }
	.owl-swipe ul.products li.product .owl-free-shipping,
	.owl-swipe ul.products li.product .owl-product-flag { justify-self: center; }
}

/* Phone: product cards become media objects — image left, details right — so
   long workout titles get real width. Matches the library filter exactly. */
@media (max-width: 768px) {
	.woocommerce ul.products li.product { display: block; padding: 14px 12px 16px; text-align: left; }
	.woocommerce ul.products li.product a.woocommerce-LoopProduct-link,
	.woocommerce ul.products li.product a.woocommerce-loop-product__link { align-content: start; align-items: start; column-gap: 14px; display: grid; grid-template-columns: 118px minmax(0, 1fr); }
	.woocommerce ul.products li.product img { aspect-ratio: 1 / 1; grid-column: 1; grid-row: 1 / span 8; margin: 0; object-fit: contain; width: 118px; }
	.woocommerce ul.products li.product .woocommerce-loop-product__title { font-size: 15px; grid-column: 2; line-height: 1.3; min-height: 0; padding: 0 0 2px; text-align: left; }
	.woocommerce ul.products li.product .owl-rating { grid-column: 2; justify-content: flex-start; margin: 2px 0; }
	.woocommerce ul.products li.product .owl-format-chips { grid-column: 2; justify-content: flex-start; margin: 3px 0 0; }
	.woocommerce ul.products li.product .price { font-size: 15px; grid-column: 2; margin: 2px 0 0; text-align: left; }
	.woocommerce ul.products li.product .owl-free-shipping,
	.woocommerce ul.products li.product .owl-product-flag { grid-column: 2; justify-self: start; left: auto; margin: 4px 0 0; position: static; transform: none; }
	.woocommerce ul.products li.product .button,
	.woocommerce ul.products li.product a.button { align-self: start; font-size: 12px; margin: 10px 0 0 132px; min-height: 40px; padding: 0 16px; }
	.woocommerce ul.products li.product .owl-member-badge,
	.woocommerce ul.products li.product .onsale.wc-memberships-member-discount { font-size: 10px; left: 6px; max-width: 110px; padding: 4px 7px; top: 6px; }
}
.owl-product-flag, .owl-free-shipping { border-radius: 999px; display: inline-block; font-family: var(--owl-archivo); font-size: 10px; font-weight: 600; letter-spacing: .03em; line-height: 1; padding: 8px 12px; text-transform: uppercase; }
.owl-product-flag { background: var(--owl-coal); color: #fff; left: 50%; position: absolute; top: 7px; transform: translateX(-50%); z-index: 2; }
.owl-free-shipping { background: var(--owl-green); color: #fff; margin-top: 8px; }
.woocommerce nav.woocommerce-pagination { margin: 42px 0; }
.woocommerce nav.woocommerce-pagination ul { border: 0; }
.woocommerce nav.woocommerce-pagination ul li { border: 0; margin: 3px; }
.woocommerce nav.woocommerce-pagination ul li a, .woocommerce nav.woocommerce-pagination ul li span { background: #fff; border: 1px solid var(--owl-line); color: var(--owl-coal); min-width: 42px; padding: 12px; }
.woocommerce nav.woocommerce-pagination ul li span.current { background: var(--owl-red); border-color: var(--owl-red); color: #fff; }

/* Product page */
/* Top spacing lives on the main wrapper, not on div.product, so that
   position:absolute children (the membership badge) resolve to the top of the
   gallery rather than to a padding edge above it. */
.single-product .site-main { padding: 50px 28px 80px; }
.single-product div.product { margin: 0 auto; max-width: 1120px; padding-top: 0; position: relative; }
.owl-product-back { background: var(--owl-coal); color: #fff; display: block; font-family: var(--owl-archivo); font-size: 15px; font-weight: 700; letter-spacing: .06em; margin: 0 0 26px; padding: 14px 20px; text-align: center; text-decoration: none; text-transform: uppercase; width: 100%; }
.owl-product-back:hover { background: var(--owl-red); color: #fff; }
.woocommerce div.product div.images, .woocommerce div.product div.summary { margin-bottom: 60px; }
.woocommerce div.product div.images img { background: #fff; object-fit: contain; }
/* Guarantee the gallery image starts flush with the top of the product block so
   the absolutely positioned membership badge lands on the image. */
.woocommerce div.product div.images figure,
.woocommerce div.product div.images .woocommerce-product-gallery__wrapper { margin-block: 0; }
.woocommerce div.product div.images .woocommerce-product-gallery { position: relative; }
.woocommerce div.product .product_title { font-size: clamp(2.25rem, 4.5vw, 4.25rem); margin: 0 0 14px; }
.woocommerce div.product p.price, .woocommerce div.product span.price { color: var(--owl-red); font-family: var(--owl-mono); font-size: 20px; }
.woocommerce-product-details__short-description { font-size: 18px; }
/* The add-to-cart form is a BLOCK, not a flex row. With Gravity Forms product
   add-ons the recipient fieldset, the GF wrapper and the trust rows are all
   children of form.cart — as flex items each was squeezed to a sliver, which is
   why body copy wrapped one letter per line. Only quantity + button share a line. */
.woocommerce div.product form.cart { display: block; margin-top: 30px; }
.woocommerce div.product form.cart::after { clear: both; content: ""; display: table; }
.woocommerce div.product form.cart > .gform_wrapper,
.woocommerce div.product form.cart .gform_variation_wrapper,
.woocommerce div.product form.cart .gform_body,
.woocommerce div.product form.cart .owl-recipient-fields { display: block; float: none; max-width: 100%; width: 100%; }
.woocommerce div.product form.cart .quantity { display: inline-block; float: none; margin: 0 12px 0 0; vertical-align: middle; }
.woocommerce div.product form.cart .quantity .qty { border: 1px solid var(--owl-line); border-radius: 0; height: 52px; width: 74px; }

/* Brand treatment for the single add-to-cart button. WooCommerce's own
   `button.button.alt` rule (its purple default) outranks the generic button
   rule, so this is restated at product-form specificity. Also covers the
   Gravity Forms submit button used as add-to-cart on app products. */
.woocommerce div.product form.cart button.button,
.woocommerce div.product form.cart input.button,
.woocommerce div.product form.cart a.button,
.woocommerce div.product form.cart .gform_button,
.woocommerce div.product .single_add_to_cart_button {
	align-items: center;
	background-color: var(--owl-red);
	border: 2px solid var(--owl-red);
	border-radius: 0;
	color: #fff;
	display: inline-flex;
	float: none;
	font-family: var(--owl-archivo);
	font-size: 1rem;
	font-weight: 700;
	justify-content: center;
	letter-spacing: .07em;
	line-height: 1;
	margin-top: 10px;
	min-height: 54px;
	min-width: 200px;
	padding: 0 28px;
	text-align: center;
	text-transform: uppercase;
	vertical-align: middle;
	width: auto;
}
.woocommerce div.product form.cart button.button:hover,
.woocommerce div.product form.cart .gform_button:hover,
.woocommerce div.product .single_add_to_cart_button:hover { background-color: var(--owl-coal); border-color: var(--owl-coal); color: #fff; }

/* Membership badge on the single product page — the same coal pill as the
   library cards, replacing WooCommerce's round olive sale flash. Placed in
   normal flow above the product rather than floating over the gallery. */
.woocommerce div.product span.onsale,
.woocommerce div.product .owl-member-badge {
	background: var(--owl-coal);
	border-radius: 0;
	color: #fff;
	display: inline-block;
	font-family: var(--owl-body);
	font-size: 13px;
	font-weight: 600;
	height: auto;
	left: auto;
	letter-spacing: .01em;
	line-height: 1.3;
	left: 12px;
	margin: 0;
	max-width: calc(50% - 24px);
	min-height: 0;
	min-width: 0;
	padding: 7px 12px;
	position: absolute;
	right: auto;
	text-align: left;
	text-transform: none;
	top: 12px;
	width: auto;
	z-index: 3;
}
@media (max-width: 768px) {
	.woocommerce div.product span.onsale,
	.woocommerce div.product .owl-member-badge { max-width: calc(100% - 24px); }
}

/* Gravity Forms inside the add-to-cart form (WooCommerce Gravity Forms Product
   Add-Ons). Styled to match the plugin's own recipient panel so a form built in
   the Gravity Forms UI looks native on the product page — fields stay editable
   in Forms -> Forms without touching code. GF's own field grid is left alone so
   multi-column layouts keep working.
   GF 2.7+ drives control shape through CSS custom properties, so those are set
   here as well as the concrete properties — the variables alone are ignored by
   older GF versions, and the properties alone are overridden by newer ones. */
.woocommerce div.product form.cart .gform_wrapper {
	--gf-ctrl-border-radius: 0;
	--gf-ctrl-btn-border-radius: 0;
	--gf-ctrl-border-color: #d9dadd;
	--gf-ctrl-bg-color: #fff;
	--gf-ctrl-accent-color: var(--owl-red);
	--gf-field-gap-y: 16px;
	--gf-label-color-primary: var(--owl-coal);
	background: #f8f8f8;
	border-left: 4px solid var(--owl-red);
	margin: 24px 0;
	padding: 22px;
}
/* Headings: the form title, section headers, or a heading inside an HTML field. */
.woocommerce div.product form.cart .gform_wrapper .gform_title,
.woocommerce div.product form.cart .gform_wrapper .gsection_title,
.woocommerce div.product form.cart .gform_wrapper h2,
.woocommerce div.product form.cart .gform_wrapper h3,
.woocommerce div.product form.cart .gform_wrapper h4 {
	color: var(--owl-coal);
	font-family: var(--owl-heading);
	font-size: 20px;
	font-weight: 500;
	letter-spacing: .02em;
	line-height: 1.15;
	margin: 0 0 8px;
	text-transform: uppercase;
}
.woocommerce div.product form.cart .gform_wrapper .gform_description,
.woocommerce div.product form.cart .gform_wrapper .gsection_description,
.woocommerce div.product form.cart .gform_wrapper .gform_heading p { display: block; font-size: 15px; margin: 0 0 16px; }
.woocommerce div.product form.cart .gform_wrapper .gfield_label { color: var(--owl-coal); font-family: var(--owl-body); font-size: 15px; font-weight: 600; margin-bottom: 6px; }
.woocommerce div.product form.cart .gform_wrapper .gfield_required { color: var(--owl-red); }
.woocommerce div.product form.cart .gform_wrapper .gfield_description { color: var(--owl-steel); font-size: 14px; padding-top: 4px; }

/* Radio / checkbox rows sit inline. Without an explicit flex basis and nowrap
   the choice label collapses to min-content and breaks mid-word ("Ye / s"). */
.woocommerce div.product form.cart .gform_wrapper .gfield_radio,
.woocommerce div.product form.cart .gform_wrapper .gfield_checkbox { display: flex !important; flex-wrap: wrap; gap: 10px 26px; }
.woocommerce div.product form.cart .gform_wrapper .gchoice {
	align-items: center;
	display: flex !important;
	flex: 0 0 auto !important;
	gap: 8px;
	max-width: none !important;
	width: auto !important;
}
.woocommerce div.product form.cart .gform_wrapper .gchoice label {
	font-weight: 600;
	margin: 0 !important;
	max-width: none !important;
	white-space: nowrap;
	width: auto !important;
}
.woocommerce div.product form.cart .gform_wrapper input[type="radio"],
.woocommerce div.product form.cart .gform_wrapper input[type="checkbox"] { accent-color: var(--owl-red); flex: 0 0 auto; height: 18px; margin: 0; width: 18px; }

/* Square controls to match the rest of the site. */
.woocommerce div.product form.cart .gform_wrapper input[type="text"],
.woocommerce div.product form.cart .gform_wrapper input[type="email"],
.woocommerce div.product form.cart .gform_wrapper input[type="tel"],
.woocommerce div.product form.cart .gform_wrapper input[type="number"],
.woocommerce div.product form.cart .gform_wrapper input[type="url"],
.woocommerce div.product form.cart .gform_wrapper select,
.woocommerce div.product form.cart .gform_wrapper textarea {
	background: #fff;
	border: 1px solid var(--owl-line) !important;
	border-radius: 0 !important;
	box-shadow: none;
	font-family: var(--owl-body);
	font-size: 16px;
	min-height: 46px;
	padding: 10px 12px;
	width: 100%;
}
.woocommerce div.product form.cart .gform_wrapper input:focus,
.woocommerce div.product form.cart .gform_wrapper select:focus,
.woocommerce div.product form.cart .gform_wrapper textarea:focus { border-color: var(--owl-coal) !important; outline: 2px solid var(--owl-red); outline-offset: 1px; }
.woocommerce div.product form.cart .gform_wrapper .gfield { margin-bottom: 0; }
.woocommerce div.product form.cart .gform_wrapper .validation_message { color: var(--owl-red); font-size: 14px; }

/* Collapse the dead space inside the panel: Gravity Forms still renders a
   footer (its own submit is replaced by the cart button here), a validation
   container, and honeypot/hidden fields — all of which reserve height. */
.woocommerce div.product form.cart .gform_wrapper .gform_footer,
.woocommerce div.product form.cart .gform_wrapper .gform_page_footer,
.woocommerce div.product form.cart .gform_wrapper .gform_validation_container,
.woocommerce div.product form.cart .gform_wrapper .gfield--type-honeypot,
.woocommerce div.product form.cart .gform_wrapper .gform_hidden,
.woocommerce div.product form.cart .gform_wrapper .gfield_visibility_hidden { display: none !important; }
.woocommerce div.product form.cart .gform_wrapper { padding: 18px 20px; }
.woocommerce div.product form.cart .gform_wrapper .gform_body,
.woocommerce div.product form.cart .gform_wrapper .gform_fields,
.woocommerce div.product form.cart .gform_wrapper .gform_heading { margin-bottom: 0; }
.woocommerce div.product form.cart .gform_wrapper > *:last-child,
.woocommerce div.product form.cart .gform_wrapper .gform_fields > .gfield:last-child { margin-bottom: 0 !important; padding-bottom: 0 !important; }
/* A field hidden by conditional logic must not leave an empty grid row. */
.woocommerce div.product form.cart .gform_wrapper .gfield[style*="display:none"],
.woocommerce div.product form.cart .gform_wrapper .gfield[style*="display: none"] { display: none !important; }

/* ---------------------------------------------------------------------------
   Standalone Gravity Forms on ordinary pages (.owl-form-frame).

   The product-page rules above are scoped to `form.cart` on purpose: there the
   form is an add-to-cart add-on, its own footer is suppressed and WooCommerce's
   button submits it. On a page the form stands alone, so this block repeats the
   control styling but KEEPS the footer and brands the submit button.
   --------------------------------------------------------------------------- */
.owl-form-frame .gform_wrapper { margin: 0; }
.owl-form-frame .gform_wrapper.gravity-theme,
.owl-form-frame .gform_wrapper {
	--gf-ctrl-border-radius: 0;
	--gf-ctrl-btn-border-radius: 0;
	--gf-ctrl-border-color: #d9dadd;
	--gf-ctrl-bg-color: #fff;
	--gf-ctrl-accent-color: var(--owl-red);
	--gf-field-gap-y: 20px;
	--gf-label-color-primary: var(--owl-coal);
}
.owl-form-frame .gform_wrapper .gform_title,
.owl-form-frame .gform_wrapper .gsection_title,
.owl-form-frame .gform_wrapper h2,
.owl-form-frame .gform_wrapper h3,
.owl-form-frame .gform_wrapper h4 {
	color: var(--owl-coal);
	font-family: var(--owl-heading);
	font-size: 22px;
	font-weight: 500;
	letter-spacing: .02em;
	line-height: 1.15;
	margin: 0 0 10px;
	text-transform: uppercase;
}
.owl-form-frame .gform_wrapper .gform_description,
.owl-form-frame .gform_wrapper .gsection_description,
.owl-form-frame .gform_wrapper .gform_heading p { display: block; font-size: 16px; margin: 0 0 20px; }
.owl-form-frame .gform_wrapper .gfield_label { color: var(--owl-coal); font-family: var(--owl-body); font-size: 15px; font-weight: 600; margin-bottom: 6px; }
.owl-form-frame .gform_wrapper .gfield_required { color: var(--owl-red); }
.owl-form-frame .gform_wrapper .gfield_description { color: var(--owl-steel); font-size: 14px; padding-top: 4px; }

.owl-form-frame .gform_wrapper .gfield_radio,
.owl-form-frame .gform_wrapper .gfield_checkbox { display: flex !important; flex-wrap: wrap; gap: 10px 26px; }
.owl-form-frame .gform_wrapper .gchoice {
	align-items: center;
	display: flex !important;
	flex: 0 0 auto !important;
	gap: 8px;
	max-width: none !important;
	width: auto !important;
}
.owl-form-frame .gform_wrapper .gchoice label { font-weight: 600; margin: 0 !important; max-width: none !important; white-space: nowrap; width: auto !important; }
.owl-form-frame .gform_wrapper input[type="radio"],
.owl-form-frame .gform_wrapper input[type="checkbox"] { accent-color: var(--owl-red); flex: 0 0 auto; height: 18px; margin: 0; width: 18px; }

.owl-form-frame .gform_wrapper input[type="text"],
.owl-form-frame .gform_wrapper input[type="email"],
.owl-form-frame .gform_wrapper input[type="tel"],
.owl-form-frame .gform_wrapper input[type="number"],
.owl-form-frame .gform_wrapper input[type="url"],
.owl-form-frame .gform_wrapper input[type="date"],
.owl-form-frame .gform_wrapper select,
.owl-form-frame .gform_wrapper textarea {
	background: #fff;
	border: 1px solid var(--owl-line) !important;
	border-radius: 0 !important;
	box-shadow: none;
	font-family: var(--owl-body);
	font-size: 16px;
	min-height: 48px;
	padding: 11px 13px;
	width: 100%;
}
.owl-form-frame .gform_wrapper textarea { min-height: 130px; }
.owl-form-frame .gform_wrapper input:focus,
.owl-form-frame .gform_wrapper select:focus,
.owl-form-frame .gform_wrapper textarea:focus { border-color: var(--owl-coal) !important; outline: 2px solid var(--owl-red); outline-offset: 1px; }
.owl-form-frame .gform_wrapper .validation_message { color: var(--owl-red); font-size: 14px; }
.owl-form-frame .gform_wrapper .gform_validation_container,
.owl-form-frame .gform_wrapper .gfield--type-honeypot,
.owl-form-frame .gform_wrapper .gform_hidden { display: none !important; }
.owl-form-frame .gform_wrapper .gfield[style*="display:none"],
.owl-form-frame .gform_wrapper .gfield[style*="display: none"] { display: none !important; }

/* The submit button IS the call to action here — brand it like every other. */
.owl-form-frame .gform_wrapper .gform_footer { margin: 26px 0 0; padding: 0; }
.owl-form-frame .gform_wrapper .gform_button,
.owl-form-frame .gform_wrapper input[type="submit"],
.owl-form-frame .gform_wrapper .gform_next_button,
.owl-form-frame .gform_wrapper .gform_previous_button {
	background-color: var(--owl-red);
	border: 2px solid var(--owl-red);
	border-radius: 0;
	color: #fff;
	cursor: pointer;
	font-family: var(--owl-archivo);
	font-size: 1rem;
	font-weight: 700;
	letter-spacing: .07em;
	line-height: 1;
	min-height: 54px;
	min-width: 220px;
	padding: 0 30px;
	text-transform: uppercase;
	width: auto;
}
.owl-form-frame .gform_wrapper .gform_button:hover,
.owl-form-frame .gform_wrapper input[type="submit"]:hover { background-color: var(--owl-coal); border-color: var(--owl-coal); color: #fff; }
.owl-form-frame .gform_wrapper .gform_previous_button { background-color: transparent; border-color: var(--owl-coal); color: var(--owl-coal); }
.owl-form-frame .gform_confirmation_message { font-size: 18px; }

@media (max-width: 768px) {
	.owl-form-frame .gform_wrapper .gform_button,
	.owl-form-frame .gform_wrapper input[type="submit"] { width: 100%; }
}

/* Product meta: chips that return to the filtered library instead of a flat
   SKU + category dump. */
.owl-product-meta { border-top: 1px solid var(--owl-line); margin: 26px 0 0; padding-top: 20px; }
.owl-product-meta__label { color: var(--owl-steel); display: block; font-family: var(--owl-archivo); font-size: 12px; font-weight: 700; letter-spacing: .12em; margin-bottom: 12px; text-transform: uppercase; }
.owl-product-meta__chips { display: flex; flex-wrap: wrap; gap: 8px; }
.owl-meta-chip { background: #fff; border: 1px solid var(--owl-line); color: var(--owl-coal); font-family: var(--owl-body); font-size: 13px; font-weight: 600; line-height: 1; padding: 9px 12px; text-decoration: none; }
.owl-meta-chip:hover { background: var(--owl-coal); border-color: var(--owl-coal); color: #fff; }
.woocommerce .woocommerce-breadcrumb { font-family: var(--owl-body); }

/* A legacy trust row (.ofwl-trust-badges) is still printed by an older snippet
   or plugin, but the stylesheet that formatted it no longer loads — so it
   renders as oversized unstyled icons and duplicates the theme's own trust
   row. Hidden here; remove the source when the legacy snippets are retired. */
.ofwl-trust-badges { display: none !important; }

/* WooCommerce Memberships' discount notice renders as a stock woocommerce-info
   box (blue rule + info icon). Bring it into the brand system. Its wording is
   a setting: WooCommerce > Settings > Memberships > "Product discount message". */
.woocommerce div.product .wc-memberships-member-discount-message,
.woocommerce div.product .wc-memberships-restriction-message,
.woocommerce div.product .woocommerce-info.wc-memberships-member-discount-message {
	background: var(--owl-bone);
	border: 0;
	border-left: 4px solid var(--owl-red);
	border-radius: 0;
	color: var(--owl-coal);
	font-family: var(--owl-body);
	font-size: 15px;
	line-height: 1.55;
	margin: 22px 0;
	padding: 16px 18px;
}
.woocommerce div.product .wc-memberships-member-discount-message::before,
.woocommerce div.product .wc-memberships-restriction-message::before { content: none; display: none; }
.woocommerce div.product .wc-memberships-member-discount-message a { color: var(--owl-red-dark); font-weight: 600; }
.woocommerce div.product .woocommerce-tabs ul.tabs { padding: 0; }
.woocommerce div.product .woocommerce-tabs ul.tabs li { border-radius: 0; }
.owl-product-trust { border-block: 1px solid var(--owl-line); display: grid; gap: 8px; grid-template-columns: repeat(4, 1fr); margin: 24px 0; padding: 22px 0; }
.owl-product-trust > span { align-items: center; display: flex; flex-direction: column; font-family: var(--owl-archivo); font-size: 11px; font-weight: 600; gap: 9px; letter-spacing: .06em; line-height: 1.35; text-align: center; text-transform: uppercase; }
.owl-product-trust svg { fill: none; height: 30px; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.7; width: 30px; }
.owl-recipient-fields { background: #f8f8f8; border-left: 4px solid var(--owl-red); margin: 24px 0; padding: 20px; }
.owl-recipient-fields fieldset { border: 0; margin: 0; padding: 0; }
.owl-recipient-fields legend { font-family: var(--owl-heading); font-size: 19px; font-weight: 500; }
.owl-recipient-fields .owl-radio-row { display: flex; gap: 24px; margin: 12px 0 18px; }
.owl-recipient-fields label { display: block; font-weight: 600; margin-bottom: 5px; }
.owl-recipient-fields input[type="text"], .owl-recipient-fields input[type="email"], .owl-recipient-fields input[type="tel"] { background: #fff; border: 1px solid var(--owl-line); border-radius: 0; min-height: 46px; padding: 10px 12px; width: 100%; }
.owl-recipient-fields__details { display: grid; gap: 12px; grid-template-columns: 1fr 1fr; }

/* Checkout */
.owl-checkout .owl-topbar, .owl-checkout .owl-site-header, .owl-checkout .site-header, .owl-checkout .main-navigation, .owl-checkout .owl-footer, .owl-checkout .site-footer, .owl-checkout .owl-floating-cart { display: none; }
.owl-checkout { background: #f3f6f7; }
.owl-checkout .site-content { max-width: 1180px; padding: 48px 24px 90px; }
.owl-checkout-logo { margin: 0 0 28px; text-align: left; }
.owl-checkout-logo img { width: 275px; }
.woocommerce form.checkout { display: grid; gap: 34px; grid-template-columns: minmax(0, 1.25fr) minmax(340px, .8fr); }
.woocommerce form.checkout #customer_details { grid-column: 1; }
.woocommerce form.checkout #order_review_heading, .woocommerce form.checkout #order_review { grid-column: 2; }
.woocommerce form.checkout #order_review_heading { align-self: end; margin: 0; }
.woocommerce form.checkout #order_review { background: #fff; border: 1px solid #e4e7e9; padding: 26px; }
.woocommerce form .form-row input.input-text, .woocommerce form .form-row textarea, .woocommerce form .form-row select { background: #fff; border: 1px solid #cfd3d6; border-radius: 0; min-height: 49px; padding: 12px; }
.woocommerce-checkout #payment { background: #f7f7f7; border-radius: 0; }
.woocommerce-checkout #payment div.payment_box { background: #fff; }
.woocommerce-checkout #payment #place_order { background: #000; border-color: #000; font-size: 22px; min-height: 68px; width: 100%; }
.owl-checkout-assurance { background: #fff; border: 1px solid #e4e7e9; grid-column: 2; margin-top: 28px; padding: 28px; }
.owl-checkout-assurance h2 { font-size: 26px; margin: 0 0 22px; }
.owl-checkout-assurance__item { display: grid; gap: 14px; grid-template-columns: 32px 1fr; margin: 0 0 22px; }
.owl-checkout-assurance__item svg { fill: none; height: 30px; stroke: var(--owl-green); stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.8; width: 30px; }
.owl-checkout-assurance__item h3 { font-family: var(--owl-body); font-size: 15px; font-weight: 700; letter-spacing: 0; margin: 0 0 2px; }
.owl-checkout-assurance__item p { font-size: 14px; line-height: 1.55; margin: 0; }
.owl-checkout--digital .woocommerce-shipping-fields, .owl-checkout--digital .shipping_address { display: none !important; }

/* Footer */
.footer-widgets, .footer-widgets-container { display: none !important; }
.owl-footer { background: var(--owl-coal); color: #c6c8cc; padding: 64px 28px 52px; }
.owl-footer__inner { display: grid; gap: 50px; grid-template-columns: 1.5fr 1fr 1fr 1.2fr; margin: auto; max-width: var(--owl-content); }
.owl-footer .custom-logo { filter: brightness(0) invert(1); width: 220px; }
.owl-footer .owl-footer-logo { display: block; filter: none; height: auto; width: 220px; }
.owl-footer .owl-footer-logo-link { display: block; width: fit-content; }
.owl-footer p { max-width: 370px; }
.owl-footer h2 { color: #fff; font-family: var(--owl-heading); font-size: 12px; font-weight: 500; letter-spacing: .08em; margin-bottom: 18px; text-transform: uppercase; }
.owl-footer ul { list-style: none; margin: 0; padding: 0; }
.owl-footer li { margin-bottom: 8px; }
.owl-footer a { color: #c6c8cc; display: block; font-size: 14px; text-decoration: none; }
.owl-footer a:hover { color: #fff; }
.owl-footer__support > a { margin-bottom: 8px; }
.owl-socials { display: flex; gap: 12px; margin-top: 20px; }
.owl-socials a { align-items: center; border: 1px solid #4b4e54; display: flex; height: 36px; justify-content: center; width: 36px; }
.owl-socials svg { fill: none; height: 18px; stroke: currentColor; stroke-width: 1.7; width: 18px; }
.owl-socials .fill { fill: currentColor; stroke: none; }
.site-info { background: #08090a; color: #9da0a6; font-size: 12px; }

/* Account */
.woocommerce-account .site-main { margin: 0 auto; max-width: var(--owl-content); padding: 64px 28px 90px; }
.woocommerce-account .woocommerce-MyAccount-navigation ul { list-style: none; margin: 0; }
.woocommerce-account .woocommerce-MyAccount-navigation a { border-bottom: 1px solid var(--owl-line); color: var(--owl-coal); display: block; padding: 13px 10px; text-decoration: none; }
.woocommerce-account .woocommerce-MyAccount-navigation .is-active a { border-left: 4px solid var(--owl-red); font-weight: 700; }

/* Gravity Forms can remain during the staged migration without dictating the design. */
.gform_wrapper.gravity-theme input[type="text"], .gform_wrapper.gravity-theme input[type="email"], .gform_wrapper.gravity-theme input[type="tel"], .gform_wrapper.gravity-theme input[type="password"], .gform_wrapper.gravity-theme select, .gform_wrapper.gravity-theme textarea { background: #fff; border: 1px solid var(--owl-line); border-radius: 0; min-height: 49px; padding: 11px 12px; }
/* Field labels are read, not displayed. Oswald is a condensed display face and
   gets tiring at label size and label density — a form is a column of them.
   This rule and the .owl-form-frame one have identical specificity, so
   whichever came later won; they now agree instead of fighting. */
.gform_wrapper.gravity-theme .gfield_label { font-family: var(--owl-body); font-size: 15px; font-weight: 600; }
.gform_wrapper.gravity-theme .gform_button { background: var(--owl-red); border: 2px solid var(--owl-red); border-radius: 0; color: #fff; font-family: var(--owl-archivo); font-weight: 700; min-height: 50px; padding: 14px 26px; text-transform: uppercase; }

/* Login modal and cart drawer */
.owl-modal[hidden] { display: none; }
.owl-modal { inset: 0; position: fixed; z-index: 100000; }
.owl-modal__backdrop, .owl-cart-drawer__backdrop { background: rgb(0 0 0 / 70%); border: 0; inset: 0; padding: 0; position: absolute; }
.owl-modal__panel { background: #fff; box-shadow: var(--owl-shadow); left: 50%; max-height: calc(100vh - 48px); max-width: 520px; overflow: auto; padding: 44px; position: absolute; top: 50%; transform: translate(-50%, -50%); width: calc(100% - 36px); }
.owl-modal__panel h2 { border-bottom: 1px solid var(--owl-line); margin: 0 0 16px; padding-bottom: 18px; text-align: center; }
.owl-modal__panel > p { text-align: center; }
.owl-modal__close { background: transparent; border: 0; color: var(--owl-coal); cursor: pointer; padding: 9px; position: absolute; right: 6px; top: 6px; }
.owl-modal__close svg, .owl-cart-drawer header svg { fill: none; height: 20px; stroke: currentColor; stroke-width: 2; width: 20px; }
.owl-modal .login-username label, .owl-modal .login-password label { display: block; font-weight: 700; }
.owl-modal input[type="text"], .owl-modal input[type="password"] { border: 1px solid var(--owl-line); min-height: 46px; width: 100%; }
.owl-modal input[type="submit"] { background: #000; border-color: #000; width: 100%; }
.owl-floating-cart { align-items: center; background: #fff; border: 0; border-radius: 50%; bottom: 28px; box-shadow: 0 5px 18px rgb(0 0 0 / 22%); color: var(--owl-coal); display: flex; height: 68px; justify-content: center; min-height: 0; padding: 0; position: fixed; right: 28px; width: 68px; z-index: 9000; }
.owl-floating-cart:hover { background: var(--owl-coal); color: #fff; }
.owl-floating-cart svg { height: 28px; margin: 0; width: 28px; }
/* Floating button is a mobile affordance only; the header cart owns desktop.
   The drawer itself stays available — the header cart opens the same drawer. */
@media (min-width: 1025px) { .owl-floating-cart { display: none; } }
.owl-cart-drawer { inset: 0; pointer-events: none; position: fixed; z-index: 99999; }
.owl-cart-drawer[aria-hidden="false"] { pointer-events: auto; }
.owl-cart-drawer__backdrop { opacity: 0; transition: opacity .25s ease; }
.owl-cart-drawer[aria-hidden="false"] .owl-cart-drawer__backdrop { opacity: 1; }
.owl-cart-drawer__panel { background: #fff; bottom: 0; box-shadow: -16px 0 40px rgb(0 0 0 / 20%); max-width: 430px; overflow: auto; padding: 0; position: absolute; right: 0; top: 0; transform: translateX(105%); transition: transform .25s ease; width: 92%; }
.owl-cart-drawer[aria-hidden="false"] .owl-cart-drawer__panel { transform: translateX(0); }
.owl-cart-drawer header { align-items: center; border-bottom: 1px solid var(--owl-line); display: flex; justify-content: space-between; padding: 20px 24px; }
.owl-cart-drawer header h2 { font-size: 24px; margin: 0; }
.owl-cart-drawer header button { background: transparent; border: 0; color: var(--owl-coal); cursor: pointer; padding: 6px; }
.owl-cart-drawer__content { padding: 24px; }
.owl-cart-drawer .woocommerce-mini-cart { list-style: none; margin: 0; }
.owl-cart-drawer .woocommerce-mini-cart-item { border-bottom: 1px solid var(--owl-line); min-height: 88px; padding: 0 0 18px 72px; position: relative; }
.owl-cart-drawer .woocommerce-mini-cart-item img { left: 0; position: absolute; top: 0; width: 58px; }
.owl-cart-drawer .woocommerce-mini-cart__buttons { display: grid; gap: 10px; }
.owl-cart-drawer .woocommerce-mini-cart__buttons a { margin: 0; text-align: center; }

/* Landing template (filename kept as template-clickbank.php so existing page
assignments survive). These body-class rules predate the .owl-landing ones
   below and are kept because they also cover the floating cart. */
.page-template-template-clickbank .owl-topbar,
.page-template-template-clickbank .owl-site-header,
.page-template-template-clickbank .site-header,
.page-template-template-clickbank .main-navigation,
.page-template-template-clickbank .owl-footer,
.page-template-template-clickbank .site-footer,
.page-template-template-clickbank .owl-floating-cart { display: none; }
.page-template-template-clickbank .site-content { max-width: none; padding: 0; }
.owl-cb-shell { margin: auto; max-width: 980px; padding: 56px 28px 90px; }
.owl-cb-shell h1 { text-align: center; }
.owl-resource-box { border: 1px solid var(--owl-line); border-left: 5px solid var(--owl-red); margin: 24px 0; padding: 24px; }
.owl-copy-box { background: #f5f5f5; border: 1px solid var(--owl-line); font-family: var(--owl-body); font-size: 13px; padding: 20px; white-space: pre-wrap; }

@media (max-width: 1024px) {
	.owl-site-header__inner { flex-wrap: wrap; min-height: 78px; padding-inline: 22px; }
	.owl-nav-toggle { display: inline-flex; }
	.owl-primary-navigation { display: none; flex-basis: 100%; margin: 0; order: 4; width: 100%; }
	.owl-site-header.is-open .owl-primary-navigation { display: block; }
	.owl-primary-menu { align-items: stretch; border-top: 1px solid var(--owl-line); display: block; padding-block: 10px; }
	.owl-primary-menu a { display: block; padding: 12px 4px; }
	.owl-primary-menu li[class*="current-menu-"] > a::after { display: none; }
	.owl-primary-menu .sub-menu { border: 0; box-shadow: none; display: block; margin-left: 18px; min-width: 0; padding: 0; position: static; }
	.owl-header-actions { margin-left: 0; }
	.owl-cards, .owl-offer-grid, .owl-resource-grid, .owl-value-grid, .owl-process, .owl-process--four, .woocommerce ul.products { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.owl-footer__inner { grid-template-columns: 1.3fr 1fr 1fr; }
	.owl-footer__support { grid-column: 1 / -1; }
	.woocommerce form.checkout { display: block; }
	.woocommerce form.checkout #order_review_heading { margin-top: 40px; }
	.owl-checkout-assurance { margin-top: 32px; }
	.owl-format-strip__grid { grid-template-columns: repeat(2, 1fr); row-gap: 24px; }
	.owl-format-strip__item:nth-child(3) { border-left: 1px solid #383a3f; }
}

@media (max-width: 768px) {
	body { font-size: 16px; }
	.owl-topbar__inner { gap: 16px; justify-content: center; min-height: 40px; padding-inline: 15px; }
	/* The promo used to be hidden here to keep the bar one short row. That also
	   hid the first-order offer from the majority of traffic, which is the one
	   message on this bar that converts. The offer now takes the row and the
	   utility links stand down: Member Access duplicates the header's account
	   icon, and the phone number lives in the footer and on /contact/. To go
	   back, swap the two display values below. */
	.owl-topbar__promo { display: block; font-size: .72rem; line-height: 1.5; text-align: center; }
	.owl-topbar__utility { display: none; }
	.owl-topbar__utility a, .owl-topbar__service { font-size: .72rem; }
	.owl-topbar__service { display: none; }
	.owl-site-header__inner { flex-wrap: nowrap; gap: 8px; min-height: 70px; padding: 9px 14px; }
	.site-logo .header-image, .custom-logo, .owl-fallback-logo img { width: 148px; }
	.owl-nav-toggle span, .owl-header-account span, .owl-header-cart__label { display: none; }
	.owl-nav-toggle { margin-left: auto; }
	.owl-header-actions { gap: 0; }
	.owl-header-account, .owl-header-cart { justify-content: center; min-height: 44px; min-width: 39px; padding: 5px; }
	.owl-site-header.is-open .owl-primary-navigation { background: #fff; display: block; left: 0; padding: 0 18px 12px; position: absolute; right: 0; top: 100%; }
	.owl-shell { padding-inline: 20px; }
	.owl-section { padding-block: 58px; }
	/* On phones the white filter frame + shell padding stack up and squeeze the
	   2-up product columns. Drop the frame chrome and tighten the shell so the
	   cards get the width back. */
	.owl-library-filter .owl-shell { padding-inline: 10px; }
	.owl-filter-frame { background: transparent; border: 0; margin-top: 20px; padding: 0; }
	/* Phones: shorter hero, centred crop and centred text so a landscape image
	   reads as a banner instead of a cropped-in wall of pixels. */
	.owl-hero { min-height: min(430px, 62vh); }
	.owl-hero--charts { min-height: min(340px, 46vh); }
	.owl-hero .wp-block-cover__image-background { object-position: center center; }
	.owl-hero__content { align-items: center; padding-block: 52px; text-align: center; }
	.owl-hero__content .owl-actions { justify-content: center; }
	.owl-cards, .owl-offer-grid, .owl-resource-grid, .owl-value-grid, .owl-process, .owl-process--four, .owl-comparison-grid, .woocommerce ul.products { grid-template-columns: 1fr; }
	.owl-split, .owl-inline-cta { grid-template-columns: 1fr; }
	.owl-inline-cta__aside { border-left: 0; border-top: 1px solid #c8c6c0; padding-left: 0; padding-top: 26px; }
	.owl-page-hero { padding-block: 62px; }
	.owl-page-hero h1 { font-size: clamp(2.5rem, 13vw, 4.2rem); }
	.owl-format-strip__grid { grid-template-columns: 1fr 1fr; }
	.owl-format-strip__item { padding-inline: 15px; }
	.owl-stat-grid { grid-template-columns: repeat(2, 1fr); }
	.woocommerce-products-header { padding-top: 48px; }
	.single-product .site-main { padding: 24px 18px 60px; }
	.single-product div.product { padding-top: 0; }
	.owl-product-back { margin: 0 0 20px; width: 100%; }
	.woocommerce div.product div.images, .woocommerce div.product div.summary { float: none; width: 100%; }
	.woocommerce div.product form.cart button.button,
	.woocommerce div.product form.cart .gform_button,
	.woocommerce div.product .single_add_to_cart_button { min-width: 0; width: 100%; }
	.owl-product-trust { gap: 4px; }
	.owl-product-trust > span { font-size: 10px; letter-spacing: .04em; }
	.owl-product-trust svg { height: 26px; width: 26px; }
	.owl-recipient-fields__details { grid-template-columns: 1fr; }
	.owl-checkout .site-content { padding: 28px 16px 70px; }
	.owl-checkout-logo { text-align: center; }
	.owl-checkout-logo img { width: 230px; }
	.woocommerce form.checkout #order_review { padding: 18px; }
	.owl-footer { padding-inline: 22px; }
	.owl-footer__inner { grid-template-columns: 1fr 1fr; }
	.owl-footer__brand, .owl-footer__support { grid-column: 1 / -1; }
	.owl-modal__panel { padding: 36px 24px 28px; }
	.owl-floating-cart { bottom: 18px; height: 58px; right: 18px; width: 58px; }
}

@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
	*, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; scroll-behavior: auto !important; transition-duration: .01ms !important; }
}

/* ---------------------------------------------------------------------------
   Single posts: exercise demos and articles.

   The converted posts keep the section classes the old builder used
   (.title-block, .exercise-video, .coaching-cues, .common-mistakes,
   .comment-form) so each block can be spaced without touching content again.
   --------------------------------------------------------------------------- */
.single-post .site-main { padding-block: clamp(34px, 5vw, 60px); }
.single-post .entry-content { font-size: 1.125rem; line-height: 1.75; margin-inline: auto; max-width: 880px; }
.single-post .entry-header { margin-inline: auto; max-width: 880px; margin-bottom: clamp(26px, 4vw, 38px); }
.single-post .entry-title { font-family: var(--owl-display); font-size: clamp(2.1rem, 5.4vw, 3.4rem); font-weight: 400; letter-spacing: .02em; line-height: 1.02; margin: 0 0 14px; text-transform: uppercase; }
.single-post .entry-meta { color: var(--owl-steel); font-family: var(--owl-body); font-size: 14px; margin-top: 10px; }
.single-post .entry-content > *:first-child { margin-top: 0; }
.single-post .title-block { margin-top: 0 !important; }
/* A demo page is reference material — a byline and a date only date it. */
.owl-demo-post .entry-meta { display: none; }

/* Every converted section is a top-level div; this is the spacing rhythm. */
.single-post .entry-content > div { margin-block: 0; }
.single-post .entry-content > div + div { margin-top: clamp(34px, 5vw, 52px); }
.single-post .entry-content > p + div,
.single-post .entry-content > div + p { margin-top: clamp(28px, 4vw, 40px); }

.single-post .entry-content h2 {
	font-family: var(--owl-display);
	font-size: clamp(1.5rem, 3.4vw, 2.1rem);
	font-weight: 400;
	letter-spacing: .02em;
	line-height: 1.1;
	margin: 0 0 16px;
	text-transform: uppercase;
}
.single-post .entry-content h3 { font-family: var(--owl-heading); font-size: 1.15rem; font-weight: 500; margin: 26px 0 10px; text-transform: uppercase; }
.single-post .entry-content p { margin: 0 0 20px; }
.single-post .entry-content > div > *:last-child { margin-bottom: 0; }

.single-post .entry-content ul { margin: 0; padding-left: 22px; }
.single-post .entry-content li { margin-bottom: 10px; padding-left: 4px; }
.single-post .entry-content li::marker { color: var(--owl-red); }
.single-post .entry-content li:last-child { margin-bottom: 0; }

/* The purpose line sits under the title and reads as a standfirst. */
.single-post .title-block { font-size: 1.15rem; }
.single-post .title-block strong { font-family: var(--owl-archivo); letter-spacing: .04em; text-transform: uppercase; }

/* Video: full width of the measure, correct ratio, no letterboxing. */
.single-post .exercise-video { margin-top: clamp(26px, 4vw, 38px) !important; }
.single-post .exercise-video iframe,
.single-post .entry-content iframe[src*="youtube"],
.single-post .entry-content iframe[src*="vimeo"] { aspect-ratio: 16 / 9; border: 0; display: block; height: auto; width: 100%; }
.single-post .exercise-video .wp-embed-aspect-16by9,
.single-post .exercise-video .wp-block-embed__wrapper { width: 100%; }

/* The two coaching sections read as distinct blocks, not one wall of text. */
.single-post .coaching-cues,
.single-post .common-mistakes { border-top: 1px solid var(--owl-line); padding-top: clamp(26px, 4vw, 36px); }
.single-post .common-mistakes li::marker { color: var(--owl-coal); }

/* Scaling section: same rhythm as the other two, with the two directions
   visually separated so nobody follows the wrong list. */
.single-post .exercise-scaling { border-top: 1px solid var(--owl-line); padding-top: clamp(26px, 4vw, 36px); }
.single-post .exercise-scaling h3 { color: var(--owl-red); margin-top: 22px; }
.single-post .exercise-scaling h3:first-of-type { margin-top: 18px; }

/* The question form gets the same panel treatment as every other form. */
.single-post .comment-form {
	background: var(--owl-bone);
	border-top: 5px solid var(--owl-red);
	padding: clamp(24px, 4vw, 38px);
}
.single-post .comment-form h2 { margin-bottom: 18px; }
.single-post .comment-form .gform_wrapper .gfield_label { font-size: 14px; }
.single-post .comment-form .gform_wrapper input[type="text"],
.single-post .comment-form .gform_wrapper input[type="email"],
.single-post .comment-form .gform_wrapper input[type="tel"],
.single-post .comment-form .gform_wrapper select,
.single-post .comment-form .gform_wrapper textarea {
	background: #fff;
	border: 1px solid var(--owl-line) !important;
	border-radius: 0 !important;
	font-family: var(--owl-body);
	font-size: 16px;
	min-height: 46px;
	padding: 10px 12px;
	width: 100%;
}
.single-post .comment-form .gform_wrapper textarea { min-height: 120px; }
.single-post .comment-form .gform_wrapper input:focus,
.single-post .comment-form .gform_wrapper textarea:focus { border-color: var(--owl-coal) !important; outline: 2px solid var(--owl-red); outline-offset: 1px; }
.single-post .comment-form .gform_wrapper .gform_footer { margin: 22px 0 0; padding: 0; }
.single-post .comment-form .gform_wrapper .gform_button,
.single-post .comment-form .gform_wrapper input[type="submit"] {
	background-color: var(--owl-red);
	border: 2px solid var(--owl-red);
	border-radius: 0;
	color: #fff;
	cursor: pointer;
	font-family: var(--owl-archivo);
	font-size: 1rem;
	font-weight: 700;
	letter-spacing: .07em;
	min-height: 54px;
	min-width: 200px;
	padding: 0 28px;
	text-transform: uppercase;
}
.single-post .comment-form .gform_wrapper .gform_button:hover,
.single-post .comment-form .gform_wrapper input[type="submit"]:hover { background-color: var(--owl-coal); border-color: var(--owl-coal); }

.single-post details { border: 1px solid var(--owl-line); margin: 16px 0; padding: 14px 18px; }
.single-post details summary { cursor: pointer; font-family: var(--owl-heading); font-weight: 500; text-transform: uppercase; }
.single-post details[open] summary { margin-bottom: 12px; }

@media (max-width: 768px) {
	.single-post .entry-content > div + div { margin-top: 32px; }
	.single-post .comment-form .gform_wrapper .gform_button,
	.single-post .comment-form .gform_wrapper input[type="submit"] { width: 100%; }
}

/* Related articles — only rendered under posts in the Article category. */
.owl-related { border-top: 1px solid var(--owl-line); margin-top: clamp(48px, 6vw, 72px); padding-top: clamp(30px, 4vw, 42px); }
.owl-related__heading { font-family: var(--owl-display); font-size: clamp(1.4rem, 3vw, 1.9rem); font-weight: 400; letter-spacing: .02em; margin: 0 0 24px; text-transform: uppercase; }
.owl-related__grid { display: grid; gap: 22px; grid-template-columns: repeat(3, minmax(0, 1fr)); }

.owl-related__card {
	background: #fff;
	border: 1px solid var(--owl-line);
	color: var(--owl-coal);
	display: flex;
	flex-direction: column;
	text-decoration: none;
	transition: border-color .18s ease, transform .18s ease;
}
.owl-related__card:hover { border-color: var(--owl-red); transform: translateY(-2px); }
.owl-related__card:focus-visible { outline: 3px solid var(--owl-red); outline-offset: 2px; }

.owl-related__media { display: block; overflow: hidden; }
.owl-related__image { aspect-ratio: 16 / 10; display: block; height: auto; object-fit: cover; width: 100%; }

.owl-related__body { display: flex; flex: 1 1 auto; flex-direction: column; gap: 8px; padding: 18px 20px 20px; }
.owl-related__title { font-family: var(--owl-heading); font-size: 1.05rem; font-weight: 500; line-height: 1.25; }
.owl-related__excerpt { color: var(--owl-steel); flex: 1 1 auto; font-size: .95rem; line-height: 1.5; }
.owl-related__more {
	color: var(--owl-red);
	font-family: var(--owl-archivo);
	font-size: 12px;
	font-weight: 700;
	letter-spacing: .1em;
	margin-top: 4px;
	text-transform: uppercase;
}
.owl-related__card:hover .owl-related__more { color: var(--owl-coal); }

@media (max-width: 1024px) {
	.owl-related__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 768px) {
	.owl-related__grid { grid-template-columns: 1fr; }
	.owl-related__card { flex-direction: row; }
	.owl-related__media { flex: 0 0 120px; }
	.owl-related__image { aspect-ratio: 1 / 1; height: 100%; }
	.owl-related__body { padding: 14px 16px; }
	.owl-related__excerpt { display: none; }
}

/* Blog / resources grid with category pills. */
/* The grid sets its own width rather than inheriting whatever wrapper it was
   pasted into. Centred-breakout so a narrow parent (owl-narrow, a GeneratePress
   container, a stray group) cannot squeeze it — the pills and cards need room
   or the layout reads as broken. */
.owl-blog {
	left: 50%;
	margin-inline: 0;
	max-width: none;
	position: relative;
	transform: translateX(-50%);
	width: min(1240px, calc(100vw - 40px));
}
.entry-content .owl-blog { max-width: none !important; }
/* WordPress's constrained-layout rule caps the *wrapper* the shortcode lands
   in, not the grid itself, so widening .owl-blog alone cannot escape it. The
   width above is viewport-derived rather than a percentage, and the 50% /
   translateX pair re-centres it on the page — so the grid is independent of
   whatever wrapper it is nested in. */
.entry-content .is-layout-constrained > .owl-blog,
.entry-content .owl-shell > .owl-blog,
.entry-content p:has(.owl-blog) { max-width: none !important; }
.owl-blog__heading { font-family: var(--owl-display); font-size: clamp(1.6rem, 3.4vw, 2.3rem); font-weight: 400; letter-spacing: .02em; margin: 0 0 22px; text-align: center; text-transform: uppercase; }
.owl-blog-filter { display: flex; flex-wrap: wrap; gap: 9px; justify-content: center; margin-bottom: 14px; }
.owl-blog-filter__pill {
	background: #fff;
	border: 2px solid var(--owl-coal);
	border-radius: 99px;
	color: var(--owl-coal);
	cursor: pointer;
	font-family: var(--owl-heading);
	font-size: 13px;
	line-height: 1;
	padding: 10px 18px;
	text-transform: uppercase;
}
.owl-blog-filter__pill:hover { background: var(--owl-red); border-color: var(--owl-red); color: #fff; }
.owl-blog-filter__pill.is-active { background: var(--owl-coal); border-color: var(--owl-coal); color: #fff; }
.owl-blog-filter__pill:focus-visible { outline: 3px solid var(--owl-red); outline-offset: 2px; }

.owl-blog__count { color: var(--owl-steel); font-size: 13px; margin: 0 0 26px; text-align: center; }
.owl-blog__empty { color: var(--owl-steel); padding: 40px 0; text-align: center; }

.owl-blog__grid { display: grid; gap: 24px; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.owl-blog-card[hidden] { display: none; }
.owl-blog-card { background: #fff; border: 1px solid var(--owl-line); display: flex; transition: border-color .18s ease, transform .18s ease; }
.owl-blog-card:hover { border-color: var(--owl-red); transform: translateY(-2px); }
.owl-blog-card__link { color: var(--owl-coal); display: flex; flex-direction: column; text-decoration: none; width: 100%; }
.owl-blog-card__link:focus-visible { outline: 3px solid var(--owl-red); outline-offset: 2px; }
.owl-blog-card__media { display: block; overflow: hidden; }
.owl-blog-card__image { aspect-ratio: 16 / 10; display: block; height: auto; object-fit: cover; width: 100%; }
.owl-blog-card__body { display: flex; flex: 1 1 auto; flex-direction: column; gap: 9px; padding: 20px 22px 22px; }
.owl-blog-card__eyebrow { color: var(--owl-steel); font-family: var(--owl-archivo); font-size: 11px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; }
.owl-blog-card__title { font-family: var(--owl-heading); font-size: 1.15rem; font-weight: 500; line-height: 1.22; }
.owl-blog-card__excerpt { color: var(--owl-steel); flex: 1 1 auto; font-size: .95rem; line-height: 1.55; }
.owl-blog-card__more { color: var(--owl-red); font-family: var(--owl-archivo); font-size: 12px; font-weight: 700; letter-spacing: .1em; margin-top: 4px; text-transform: uppercase; }
.owl-blog-card:hover .owl-blog-card__more { color: var(--owl-coal); }

@media (max-width: 1024px) {
	.owl-blog__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 768px) {
	.owl-blog__grid { grid-template-columns: 1fr; gap: 18px; }
	.owl-blog-filter { gap: 7px; }
	.owl-blog-filter__pill { font-size: 12px; padding: 9px 14px; }
}

/* Single posts run full-width now, so the measure lives on the text itself
   and media is free to sit wider than the copy. */
.single-post .entry-content > figure,
.single-post .entry-content > .wp-block-image,
.single-post .exercise-video { margin-inline: auto; max-width: 1040px; }
.single-post .owl-related { margin-inline: auto; max-width: 1100px; }

/* Five-step process rows (affiliate how-it-works). */
.owl-process--five, .owl-section .owl-process:has(> :nth-child(5)) { grid-template-columns: repeat(5, minmax(0, 1fr)); }
@media (max-width: 1100px) { .owl-section .owl-process:has(> :nth-child(5)) { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 768px) { .owl-section .owl-process:has(> :nth-child(5)) { grid-template-columns: 1fr; } }

/* Landing pages: shorter hero than the homepage, legal small print. */
.owl-hero--program { min-height: min(560px, 68vh); }
.owl-legal { color: var(--owl-steel); font-size: 13px; line-height: 1.6; margin: 0 0 12px; }
.owl-section--coal .owl-stat-grid { margin-top: 34px; }
.owl-stat-grid { display: grid; gap: 20px; grid-template-columns: repeat(4, minmax(0, 1fr)); }
@media (max-width: 900px) { .owl-stat-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* ---------------------------------------------------------------------------
   Landing Page template — no navigation.

   The PHP unhooks the header, nav and footer. These rules are the belt to that
   pair of braces: a plugin (or a GeneratePress option) can still print a menu,
   and on a sales page one stray link back into the shop undoes the point.
   --------------------------------------------------------------------------- */
.owl-landing .owl-top-bar,
.page-template-template-clickbank .owl-top-bar,
.owl-landing .owl-site-header,
.page-template-template-clickbank .owl-site-header,
.owl-landing .site-header,
.page-template-template-clickbank .site-header,
.owl-landing .main-navigation,
.page-template-template-clickbank .main-navigation,
.owl-landing #mobile-header,
.page-template-template-clickbank #mobile-header,
.owl-landing .owl-primary-navigation,
.page-template-template-clickbank .owl-primary-navigation,
.owl-landing .owl-footer,
.page-template-template-clickbank .owl-footer,
.owl-landing .site-footer,
.page-template-template-clickbank .site-footer,
.owl-landing .generate-back-to-top,
.page-template-template-clickbank .generate-back-to-top { display: none !important; }

/* GeneratePress lays .site-content out with flexbox so content and sidebar sit
   side by side. On this template the logo bar, main and footer are all direct
   children of it — as flex items they lined up in a row, which is why the logo
   landed left of the hero and the footer right of it. Force normal block flow
   and drop the container's width cap so the sections stack full width. */
.owl-landing #page,
.page-template-template-clickbank #page,
.owl-landing .site-content,
.page-template-template-clickbank .site-content,
.owl-landing .content-area,
.page-template-template-clickbank .content-area,
.owl-landing .site-main,
.page-template-template-clickbank .site-main {
	display: block !important;
	float: none !important;
	margin: 0 !important;
	max-width: none !important;
	padding: 0 !important;
	width: 100% !important;
}
.owl-landing .site-content > *,
.page-template-template-clickbank .site-content > * { flex: none; }

.owl-landing__bar { background: #fff; border-bottom: 1px solid var(--owl-line); padding: 16px 20px; text-align: center; }
.owl-landing__logo { display: inline-block; line-height: 0; }
.owl-landing__logo img { height: auto; max-width: 190px; width: auto; }

.owl-landing__main { padding: 0; }
.owl-landing__page { margin: 0; }

.owl-landing__footer { background: var(--owl-coal); color: #c8c9cd; padding: 40px 0 46px; text-align: center; }
.owl-landing__links { display: flex; flex-wrap: wrap; gap: 8px 26px; justify-content: center; margin-bottom: 16px; }
.owl-landing__links a { color: #fff; font-family: var(--owl-body); font-size: 14px; text-decoration: none; }
.owl-landing__links a:hover { color: var(--owl-red); text-decoration: underline; }
.owl-landing__copyright { color: #9a9da3; font-size: 13px; margin: 0; }

/* Swipe-copy blocks (affiliate assets page). */
.owl-copyblock { background: #fff; border: 1px solid var(--owl-line); border-left: 4px solid var(--owl-red); margin: 18px 0 26px; }
.owl-copyblock__head { align-items: center; background: var(--owl-bone); border-bottom: 1px solid var(--owl-line); display: flex; gap: 14px; justify-content: space-between; padding: 10px 16px; }
.owl-copyblock__label { color: var(--owl-steel); font-family: var(--owl-archivo); font-size: 11px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; }
.owl-copyblock__button {
	background: var(--owl-coal);
	border: 2px solid var(--owl-coal);
	color: #fff;
	cursor: pointer;
	font-family: var(--owl-archivo);
	font-size: 11px;
	font-weight: 700;
	letter-spacing: .1em;
	padding: 8px 14px;
	text-transform: uppercase;
	white-space: nowrap;
}
.owl-copyblock__button:hover { background: var(--owl-red); border-color: var(--owl-red); }
.owl-copyblock__button.is-done { background: var(--owl-green, #1f7a3d); border-color: var(--owl-green, #1f7a3d); }
.owl-copyblock__button:focus-visible { outline: 3px solid var(--owl-red); outline-offset: 2px; }
.owl-copyblock__text { font-size: 1rem; line-height: 1.65; padding: 18px 20px; }
.owl-copyblock__text p:first-child { margin-top: 0; }
.owl-copyblock__text p:last-child, .owl-copyblock__text ul:last-child { margin-bottom: 0; }
.owl-copyblock__text ul { margin: 0; padding-left: 20px; }
.owl-copyblock__text li { margin-bottom: 8px; }
.single-post .owl-copyblock__text ul, .page .owl-copyblock__text ul { margin: 0; }

/* ---------------------------------------------------------------------------
   Legal / agreement pages
   Long prose that people scan for one clause, so: a narrow measure, generous
   heading space, and a summary block that is visibly not part of the terms.
   --------------------------------------------------------------------------- */

.owl-legal p,
.owl-legal li {
	font-size: 1rem;
	line-height: 1.7;
}

.owl-legal h2 {
	font-size: 1.15rem;
	letter-spacing: .01em;
	margin-top: 2.4em;
	text-transform: uppercase;
}

.owl-legal h2 + p,
.owl-legal h2 + ul {
	margin-top: .8em;
}

.owl-legal ul {
	padding-left: 1.1em;
}

.owl-legal li {
	margin-bottom: .5em;
}

.owl-legal__meta {
	border-bottom: 1px solid #dedcd7;
	color: #6e7178;
	font-size: .88rem;
	padding-bottom: 14px;
}

.owl-legal__summary {
	background: #f6f5f2;
	border-left: 4px solid #d71920;
	margin: 26px 0 8px;
	padding: 18px 20px;
}

.owl-legal__summary h3 {
	font-size: .82rem;
	letter-spacing: .08em;
	margin: 0 0 10px;
	text-transform: uppercase;
}

.owl-legal__summary p {
	margin: 0;
}

/* Legal blocks that must stay in the all-caps convention (warranty
   disclaimer, limitation of liability) without the source being shouted. */
.owl-legal__caps {
	text-transform: uppercase;
}

/* Accordion per legal document on /legal/. */
.owl-legal__doc {
	border-top: 1px solid #dedcd7;
	padding: 0;
}

.owl-legal__doc summary {
	cursor: pointer;
	font-family: inherit;
	font-size: 1.05rem;
	font-weight: 700;
	letter-spacing: .02em;
	list-style: none;
	padding: 20px 34px 20px 0;
	position: relative;
	text-transform: uppercase;
}

.owl-legal__doc summary::-webkit-details-marker {
	display: none;
}

.owl-legal__doc summary::after {
	content: "+";
	color: #d71920;
	font-size: 1.5rem;
	line-height: 1;
	position: absolute;
	right: 4px;
	top: 50%;
	transform: translateY(-50%);
}

.owl-legal__doc[open] summary::after {
	content: "\2212";
}

.owl-legal__doc > *:not(summary) {
	max-width: 100%;
}

.owl-legal__doc > *:last-child {
	padding-bottom: 26px;
}

.owl-legal__list {
	padding-left: 1.1em;
}

.owl-legal__list li {
	margin-bottom: .5em;
}

/* Pointer to a policy that lives on its own page, below the accordions. */
.owl-legal__aside {
	border-top: 1px solid #dedcd7;
	color: #4a4d53;
	font-size: .92rem;
	margin-top: 26px;
	padding-top: 18px;
}

/* Thank-you page. Every message ships in the page and one is revealed from
   ?src=. The hiding is scoped to .owl-thanks-js, a class the plugin adds to
   <html> on the front end only — so inside the block editor all of the
   messages stay visible and editable, which is the whole point of keeping
   them as page content. Without JavaScript nothing is hidden either: the
   visitor sees every message, which is untidy but never blank. */
.owl-thanks-js .owl-thanks__variant {
	display: none;
}

.owl-thanks-js .owl-thanks__variant.is-shown {
	display: block;
}

.owl-thanks__steps {
	counter-reset: owl-step;
}
