/* Co Pacific: finishing layer shared by Elementor pages, catalogs and forms. */
:root {
	--cp-off-white: #f8fafc;
	--cp-light: #f0f4f8;
	--cp-muted: #526174;
	--cp-gray-2: #68778a;
	--cp-radius-md: 16px;
	--cp-radius-lg: 24px;
	--cp-shadow-soft: 0 4px 20px rgb(6 26 58 / 5%);
	--cp-shadow: 0 16px 40px rgb(6 26 58 / 10%);
	--cp-section-y: clamp(56px, 7vw, 96px);

	/* One button system: pill shape, one height per breakpoint */
	--cp-btn-h: 52px;
	--cp-btn-px: 28px;
	--cp-btn-fs: .95rem;
	/* One hero heading treatment (sentence case, 700, tight tracking); Home is one step larger */
	--cp-hero-h1: clamp(2.25rem, 1.5rem + 2.6vw, 3.5rem);
	--cp-hero-h1-home: clamp(2.5rem, 1.6rem + 3.4vw, 4.25rem);
}
@media (max-width: 767px) {
	:root { --cp-btn-h: 48px; --cp-btn-px: 22px; }
}

/* Navigation and comfortable, consistent tap targets. */
.cp-theme .cp-header { background-color: rgb(255 255 255 / 96%); }
.cp-theme .cp-header__inner { gap: clamp(12px, 1.5vw, 20px); }
.cp-theme .cp-nav__list a { padding-inline: 12px; font-weight: 600; }
.cp-theme .cp-menu-toggle { border-radius: 10px; }
.cp-theme .cp-topbar { font-size: .78rem; }
.cp-theme .cp-footer__menu a { min-height: 44px; }

/* Match Elementor specificity so the design is consistent with saved widgets. */
.cp-theme .elementor .elementor-widget-heading h2.elementor-heading-title {
	font-weight: 700;
	line-height: 1.15;
	letter-spacing: -.035em;
}
.cp-theme .elementor .elementor-widget-heading h3.elementor-heading-title { font-weight: 650; line-height: 1.25; }
.cp-theme .elementor .cp-eyebrow .elementor-heading-title { font-weight: 600; letter-spacing: .12em; }
.cp-theme :is(.cp-hero, .cp-page-hero, .cp-cat-hero) {
	background-image:
		radial-gradient(ellipse 60% 80% at 92% 0%, rgb(37 92 150 / 70%), transparent 62%),
		radial-gradient(ellipse 45% 60% at 100% 100%, rgb(227 27 35 / 16%), transparent 70%),
		linear-gradient(120deg, #061a3a, #0e2b4f);
}
/* Hero depth: blue + red glows, navy wash, and a fine blueprint grid underneath the wash
   (the wash is denser on the left, so the grid fades in towards the visual side). */
.cp-theme .elementor .e-con:is(.cp-hero, .cp-page-hero)::before {
	background-image:
		radial-gradient(ellipse 55% 75% at 90% 4%, rgb(37 92 150 / 50%), transparent 64%),
		radial-gradient(ellipse 38% 55% at 100% 100%, rgb(227 27 35 / 18%), transparent 70%),
		linear-gradient(105deg, rgb(6 26 58 / 92%) 0%, rgb(6 26 58 / 80%) 45%, rgb(6 26 58 / 52%) 100%),
		linear-gradient(rgb(255 255 255 / 11%) 1px, transparent 1px),
		linear-gradient(90deg, rgb(255 255 255 / 11%) 1px, transparent 1px);
	background-size: auto, auto, auto, 32px 32px, 32px 32px;
	opacity: 1;
}
.cp-theme .e-con.cp-hero {
	--min-height: 600px;
	--padding-top: clamp(48px, 6vw, 88px);
	--padding-bottom: clamp(64px, 6vw, 88px);
}
.cp-theme .e-con.cp-page-hero {
	--padding-top: clamp(48px, 6vw, 88px);
	--padding-bottom: clamp(48px, 6vw, 88px);
}
/* Hero H1s: one treatment for Home, inner pages, brand/search heroes (cp-cat-hero__title in catalog.css) */
.cp-theme .elementor :is(.cp-hero, .cp-page-hero) h1.elementor-heading-title {
	font-size: var(--cp-hero-h1);
	font-weight: 700;
	line-height: 1.06;
	letter-spacing: -.035em;
	text-transform: none;
	text-wrap: balance;
}
.cp-theme .elementor .cp-hero h1.elementor-heading-title {
	font-size: var(--cp-hero-h1-home);
	max-width: 15ch;
}
.cp-theme .cp-hero-emphasis { color: #a5cced; }
.cp-theme :is(.cp-hero, .cp-page-hero) .cp-lead p { max-width: 55ch; font-size: 1.08rem; line-height: 1.75; }
.cp-theme .cp-hero-collage { border-radius: 24px; }
.cp-theme .cp-hero-collage img { object-fit: contain; }
.cp-theme .elementor .cp-hero-feature img { max-height: 240px; width: auto; }
.cp-theme .cp-hero .elementor-widget-icon-list .elementor-icon-list-text { font-size: .8rem; font-weight: 600; letter-spacing: .04em; }

/* Buttons: one pill shape site-wide — theme/plugin .cp-btn, Elementor buttons, CF7 submit. */
.cp-theme .elementor-widget-button .elementor-button { border-radius: 999px; }
.cp-theme .elementor-widget.cp-btn .elementor-button,
.cp-theme .cp-btn:not(.elementor-element),
.cp-theme .cp-form input[type=submit] {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: .55em;
	min-height: var(--cp-btn-h);
	padding: 0 var(--cp-btn-px);
	border-radius: 999px;
	font-size: var(--cp-btn-fs);
	font-weight: 700;
	line-height: 1.2;
	letter-spacing: .01em;
	box-shadow: none;
	transition: background-color .2s ease, color .2s ease, border-color .2s ease, box-shadow .25s ease, transform .2s var(--cp-ease);
}
.cp-theme .elementor-widget.cp-btn .elementor-button .elementor-button-content-wrapper { gap: .55em; }
.cp-theme .cp-btn .cp-icon,
.cp-theme .elementor-widget.cp-btn .elementor-button-icon svg { width: 1.1em; height: 1.1em; }
.cp-theme .cp-btn--primary { --cp-btn-bg: var(--cp-red); --cp-btn-bd: var(--cp-red); --cp-btn-shadow: none; --cp-btn-shadow-hover: 0 10px 24px rgb(227 27 35 / 26%); }
.cp-theme .cp-btn--navy { --cp-btn-shadow: none; --cp-btn-shadow-hover: 0 10px 24px rgb(6 26 58 / 22%); }
.cp-theme .cp-btn--ghost { --cp-btn-bd: color-mix(in srgb, var(--cp-heading) 55%, transparent); --cp-btn-shadow-hover: none; }
.cp-theme .elementor-widget.cp-btn--primary .elementor-button:hover { box-shadow: 0 10px 24px rgb(227 27 35 / 26%); }
.cp-theme .elementor-widget.cp-btn--navy .elementor-button:hover { box-shadow: 0 10px 24px rgb(6 26 58 / 22%); }
.cp-theme :is(.elementor-widget.cp-btn .elementor-button, .cp-btn:not(.elementor-element), .cp-form input[type=submit]):active {
	transform: translateY(0) scale(.98);
	box-shadow: none;
}
/* Header CTA is the compact size of the same button */
.cp-theme .cp-header .cp-btn.cp-header__cta { min-height: 46px; padding-inline: 22px; font-size: .92rem; }
.cp-theme .cp-card:not(.cp-card--navy),
.cp-theme .cp-icon-card,
.cp-theme .cp-brand-card,
.cp-theme .cp-pcard { box-shadow: var(--cp-shadow-soft); border-color: #e1e8ef; }
.cp-theme .cp-card:not(.cp-card--navy):not(:has(a)):hover,
.cp-theme .cp-icon-card:not(:has(a)):hover { transform: none; box-shadow: var(--cp-shadow-soft); }
/* Cards with a stretched link: the card shows the focus ring (one focus target) */
.cp-theme :is(.cp-pcard, .cp-brand-card):has(.cp-stretched:focus-visible) { outline: 3px solid var(--cp-blue); outline-offset: 3px; }
.cp-theme :is(.cp-pcard, .cp-brand-card) .cp-stretched:focus-visible { outline: none; }
.cp-theme .cp-pcard__media { background: var(--cp-media-bg, #f5f7fa); border-bottom: 1px solid rgb(6 26 58 / 6%); }
.cp-theme .cp-pcard__title { font-weight: 700; line-height: 1.3; }
.cp-theme .cp-pcard__cta,
.cp-theme .cp-brand-card__cta { font-size: .875rem; color: var(--cp-red-dark); }
.cp-theme .cp-brand-card__logo { border-bottom: 1px solid #edf1f5; }

/* Search and recovery are next to the results they affect. */
.cp-theme .cp-search input[type=search] { border-width: 1px; border-radius: 12px; box-shadow: none; min-height: 56px; }
.cp-filter-reset {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 44px;
	padding: 8px 18px;
	border: 1px solid var(--cp-gray, #d9dee7);
	border-radius: 999px;
	background: white;
	color: var(--cp-navy, #061a3a);
	font-size: .875rem;
	font-weight: 600;
	cursor: pointer;
}
.cp-filter-reset[hidden] { display: none; }
.cp-theme .cp-chip:not(.elementor-element) { border-radius: 999px; font-size: .875rem; transition: background-color .2s ease, color .2s ease, border-color .2s ease, transform .2s var(--cp-ease); }
.cp-theme .cp-chip:not(.elementor-element):active { transform: scale(.97); }
.cp-theme .cp-chip[aria-pressed=true] { background: var(--cp-navy); border-color: var(--cp-navy); color: white; }
.cp-theme .cp-empty { border: 1px dashed #b7c6d6; border-radius: 16px; background: #f8fafc; }
.cp-theme .cp-count { border-radius: 999px; }

/* Inputs retain native affordances such as the select arrow. */
.cp-theme .cp-form :is(input[type=text], input[type=email], input[type=tel], select, textarea) {
	background-color: #fafbfd;
	border-color: #ccd6e2;
	border-radius: 10px;
}
.cp-theme .cp-form :is(input, select, textarea):focus { background-color: white; }
.cp-theme .cp-form input[type=submit] { background: var(--cp-red); border-color: var(--cp-red); }
.cp-theme .cp-form input[type=submit]:is(:hover, :focus-visible) { background: var(--cp-red-dark); border-color: var(--cp-red-dark); box-shadow: 0 10px 24px rgb(227 27 35 / 26%); }
.cp-theme .cp-tabs__panel { box-shadow: var(--cp-shadow-soft); }
.cp-theme .cp-form input[type=file]::file-selector-button { border-radius: 8px; }

@media (max-width: 1024px) {
	.cp-theme .elementor .cp-hero-feature img { max-height: 210px; }
	.cp-theme .elementor .cp-hero-supporting img { max-height: 150px; width: auto; }
}
@media (max-width: 767px) {
	.cp-theme .cp-header .cp-btn.cp-header__cta { padding-inline: 16px; font-size: .85rem; }
	.cp-theme .cp-header .cp-logo__img { height: 48px; }
	.cp-theme .elementor .cp-hero h1.elementor-heading-title { max-width: 15ch; font-size: clamp(2.4rem, 9.4vw, 3.5rem); }
	.cp-theme .e-con.cp-hero { --min-height: 0px; --padding-bottom: 48px; }
	.cp-theme .cp-actions .elementor-widget-button { width: 100%; max-width: none; }
	.cp-theme .cp-actions .elementor-button { width: 100%; }
	.cp-theme .cp-toolbar { align-items: center; gap: 12px; }
	.cp-theme .cp-search { flex-basis: 100%; max-width: none; }
	.cp-theme .cp-chips { gap: 8px; }
	.cp-theme .cp-chip:not(.elementor-element) { padding-inline: 12px; font-size: .8rem; }
	.cp-theme .cp-tabs__list { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; }
	.cp-theme .cp-tabs__tab { padding: 12px 8px; text-align: center; border-radius: 10px; }
	.cp-theme .cp-tabs__tab-title { font-size: .85rem; overflow-wrap: anywhere; }
	.cp-theme .cp-mobile-bar { background: white; border-color: #dce4ed; --cp-focus: var(--cp-navy); }
	.cp-theme .cp-mobile-bar__item { color: var(--cp-navy); letter-spacing: 0; }
	.cp-theme .cp-mobile-bar__item + .cp-mobile-bar__item { border-left-color: #e1e8ef; }
	.cp-theme .cp-mobile-bar__item--primary { color: white; }
	.cp-theme .cp-mobile-bar__item:is(:hover, :focus) { color: white; }
	.cp-theme .cp-mobile-bar__item:focus-visible { outline-color: var(--cp-navy); }
	.cp-theme:has(.cp-form :is(input, select, textarea):focus) .cp-mobile-bar { display: none; }
}
@media (prefers-reduced-motion: reduce) {
	.cp-theme *, .cp-theme *::before, .cp-theme *::after { scroll-behavior: auto; transition-duration: 0s; }
}

/* Parts: shorter introduction, prominent search, and a compact directory. */
.cp-theme .elementor .e-con.cp-parts-hero { --padding-top: 44px; --padding-bottom: 44px; }
.cp-theme .elementor .cp-parts-intro { --width: 100%; max-width: 900px; }
.cp-theme .elementor .cp-parts-hero h1.elementor-heading-title { max-width: 20ch; font-size: clamp(2.3rem,4vw,3.5rem); }
.cp-theme .elementor .cp-parts-hero .cp-lead p { max-width: 65ch; }
.cp-theme .elementor .cp-parts-directory { --padding-top: 48px; --padding-bottom: 56px; }
.cp-theme .elementor .cp-parts-directory .cp-section-head { --align-items: flex-start; --width: 100%; width: 100%; align-self: stretch; text-align: left; margin-inline: 0; }
.cp-theme .elementor .cp-parts-directory .cp-section-head .elementor-widget-heading,
.cp-theme .elementor .cp-parts-directory .cp-section-head .elementor-widget-text-editor { text-align: left; }
.cp-theme .cp-parts-directory .cp-toolbar { padding: 20px; border: 1px solid #dce5ee; border-radius: 16px; background: #f5f8fb; }
.cp-theme .cp-parts-directory .cp-search { max-width: none; }
.cp-theme .cp-parts-directory .cp-search__label { letter-spacing: .04em; font-size: .8rem; }
.cp-theme .cp-parts-directory .cp-brand-grid { grid-template-columns: repeat(auto-fill,minmax(min(100%,265px),1fr)); gap: 16px; }
.cp-theme .cp-parts-directory .cp-brand-card { gap: 0; border-radius: 14px; }
.cp-theme .cp-parts-directory .cp-brand-card__logo { height: 96px; min-height: 96px; padding: 20px; }
.cp-theme .cp-parts-directory .cp-brand-card__logo img { max-height: 52px; }
.cp-theme .cp-parts-directory .cp-brand-card__body { padding: 18px 20px 12px; }
.cp-theme .cp-parts-directory .cp-brand-card__name { font-size: 1.1rem; }
.cp-theme .cp-parts-directory .cp-brand-card__line { font-size: .7rem; letter-spacing: .04em; }
.cp-theme .cp-parts-directory .cp-brand-card__desc { font-size: .875rem; line-height: 1.55; }
.cp-theme .cp-parts-directory .cp-brand-card__foot { padding: 14px 20px; background: #f8fafc; border-top: 1px solid #e6edf3; }
.cp-theme .cp-parts-request { scroll-margin-top: 90px; }
.cp-theme .cp-parts-request .cp-form-card { box-shadow: 0 8px 28px rgb(6 26 58 / 6%); }
@media(max-width:767px){
 .cp-theme .elementor .e-con.cp-parts-hero { --padding-top:32px; --padding-bottom:32px; }
 .cp-theme .elementor .cp-parts-directory { --padding-top:32px; }
 .cp-theme .cp-parts-directory .cp-toolbar { padding:14px; }
 .cp-theme .cp-parts-directory .cp-brand-card { display:grid; grid-template-columns:92px minmax(0,1fr); }
 .cp-theme .cp-parts-directory .cp-brand-card__logo { height:100%; min-height:100px; padding:12px; border-bottom:0; }
 .cp-theme .cp-parts-directory .cp-brand-card__body { padding:16px 14px; }
 .cp-theme .cp-parts-directory .cp-brand-card__foot { grid-column:1 / -1; }
 .cp-theme .cp-parts-directory .cp-brand-card[hidden] { display:none; }
}
.cp-theme .cp-parts-directory .cp-brand-card { padding: 0; overflow: hidden; }

/* Product browsing and accessible image inspection. */
.cp-theme .cp-prod-top { background: #f0f4f8; border-bottom: 1px solid #e1e8ef; }
.cp-theme .cp-prod-summary__title { font-weight: 700; letter-spacing: -.04em; line-height: 1.12; }
.cp-theme .cp-prod-meta { gap: 12px; }
.cp-theme .cp-gallery__stage { border: 1px solid #e1e8ef; border-radius: 20px; background: #f8fafc; }
.cp-theme .cp-gallery__zoom { position: absolute; right: 16px; bottom: 16px; z-index: 3; min-height: 44px; padding: 10px 16px; border: 1px solid #ccd6e2; border-radius: 999px; background: white; color: var(--cp-navy); font-size: .85rem; font-weight: 600; box-shadow: 0 3px 10px rgb(6 26 58 / 8%); cursor: zoom-in; }
.cp-theme .cp-gallery__zoom:hover { color: white; background: var(--cp-navy); }
.cp-image-dialog { width: min(920px, calc(100vw - 32px)); max-height: calc(100dvh - 32px); padding: 60px 20px 20px; border: 0; border-radius: 20px; background: white; box-shadow: 0 24px 80px rgb(0 0 0 / 30%); }
.cp-image-dialog::backdrop { background: rgb(4 18 41 / 78%); }
.cp-image-dialog img { display: block; width: 100%; height: auto; max-height: calc(100dvh - 120px); object-fit: contain; }
.cp-image-dialog__close { position: absolute; right: 12px; top: 10px; min-height: 44px; padding: 10px 16px; background: #f0f4f8; border: 1px solid #ccd6e2; border-radius: 999px; font-size: .85rem; }
.cp-theme .cp-spec-table th { width: 42%; font-weight: 600; }
.cp-theme .cp-spec-table :is(th, td) { padding: 14px 16px; line-height: 1.55; overflow-wrap: anywhere; }
.cp-theme .cp-prod-nav__link { border-radius: 12px; }
.cp-theme .cp-marquee.is-paused .cp-marquee__track { animation-play-state: paused; }
.cp-marquee-toggle { margin-top: 12px; min-height: 44px; padding: 8px 16px; border: 1px solid #ccd6e2; border-radius: 999px; background: white; font-size: .8rem; font-weight: 500; }
.cp-marquee-toggle[hidden] { display: none; }
@media(min-width:901px){ .cp-theme .cp-gallery { position: sticky; top: calc(var(--cp-header-h-condensed) + 24px); align-self: start; } }
@media(max-width:767px){
 .cp-theme .cp-prod-main { padding-block: 28px 40px; }
 .cp-theme .cp-prod-main__grid { gap: 28px; }
 .cp-theme .cp-prod-summary__title { font-size: clamp(1.8rem,7vw,2.4rem); }
 .cp-theme .cp-prod-summary .cp-actions { flex-direction: column; align-items: stretch; }
 .cp-theme .cp-prod-summary .cp-actions .cp-btn { width: 100%; }
 .cp-theme .cp-gallery__stage { aspect-ratio: 4 / 3; }
 .cp-theme .cp-prod-meta { grid-template-columns: repeat(2,minmax(0,1fr)); }
 .cp-theme .cp-prod-nav__link { min-width: 0; overflow-wrap: anywhere; }
 .cp-theme .cp-cat-hero { padding-block: 32px 40px; }
 .cp-theme .cp-cat-hero__card { padding: 16px; }
 .cp-theme .cp-cat-hero__logo { aspect-ratio: auto; min-height: 100px; }
}
.cp-theme .cp-prod-meta { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.cp-theme .cp-category-link .elementor-button { width: 100%; font-size: .85rem; padding: 12px; }
.cp-theme .cp-category-link { margin-top: auto; }
.cp-theme .cp-tabs__list { gap: 10px; }
.cp-theme .cp-tabs__panel-head h3 { margin-bottom: 8px; font-weight: 650; }
.cp-theme .cp-tabs__panel-head p { color: var(--cp-muted); margin-bottom: 24px; }

/* Browser-verified phone refinements: search visibility, readable tabs, photo contrast. */
.cp-theme .cp-tabs__tab, .cp-theme .cp-tabs__tab-title { white-space: normal; min-width: 0; }
.cp-theme .cp-tabs__tab-title { line-height: 1.35; }
.cp-theme .elementor .e-con.cp-page-hero::before {
 background-image: linear-gradient(105deg, rgb(6 26 58 / 92%), rgb(6 26 58 / 68%));
 opacity: 1;
}
@media(max-width:767px){
 .cp-theme .elementor .e-con.cp-page-hero::before { background-image: linear-gradient(105deg, rgb(6 26 58 / 88%), rgb(6 26 58 / 80%)); }
 .cp-theme .elementor .e-con.cp-parts-hero { --padding-top: 24px; --padding-bottom: 24px; }
 .cp-theme .cp-tabs__tab { min-height: 76px; padding: 10px 6px; }
 .cp-theme .cp-tabs__tab-title { font-weight: 650; font-size: .8rem; }
 .cp-theme .cp-tabs__tab-num { font-size: .65rem; margin: 0; }
 .cp-theme .elementor .cp-parts-hero .cp-actions { --flex-direction: row; --flex-wrap: nowrap; --gap: 10px; flex-direction: row; flex-wrap: nowrap; gap: 10px; }
 .cp-theme .elementor .cp-parts-hero .cp-actions .elementor-widget-button { width: calc(50% - 5px); max-width: none; }
 .cp-theme .elementor .cp-parts-hero .cp-actions .elementor-button { padding-inline: 10px; font-size: .85rem; }
 .cp-theme .elementor .cp-parts-shortcuts { --flex-wrap: nowrap; --gap: 8px; flex-wrap: nowrap; gap: 8px; overflow-x: auto; padding-bottom: 6px; max-width: 100%; scrollbar-width: none; }
 .cp-theme .elementor .cp-parts-shortcuts::-webkit-scrollbar { display: none; }
 .cp-theme .elementor .cp-parts-shortcuts > .elementor-element { flex-shrink: 0; }
 .cp-theme .elementor .cp-parts-shortcuts .elementor-button { min-height: 44px; padding: 10px 12px; font-size: .8rem; }
 .cp-theme .elementor .cp-parts-hero h1.elementor-heading-title { font-size: 2.15rem; }
 .cp-theme .elementor .cp-parts-directory > .e-con-inner { gap: 16px; }
 .cp-theme .elementor .cp-parts-directory .cp-section-head { --gap: 10px; gap: 10px; margin-bottom: 0; }
 .cp-theme .elementor .cp-parts-directory .cp-section-head .cp-lead { display: none; }
 .cp-theme .elementor .cp-parts-directory .cp-section-head .cp-lead { font-size: 1rem; }
 .cp-theme .elementor .cp-parts-hero .cp-lead p { font-size: 1rem; line-height: 1.65; }
}

/* ==========================================================================
   Design pass: hero stats, micro-interactions, anchors, back-to-top, footer
   ========================================================================== */

/* Hero: compact factual stats row ([cp_stats]) under the actions */
.cp-theme .elementor-widget.cp-hero-stats {
	max-width: 600px;
	margin-top: 10px;
	padding-top: 22px;
	border-top: 1px solid rgb(255 255 255 / 14%);
}
.cp-theme .cp-hero-stats .cp-stats__item { border-left-color: rgb(255 255 255 / 16%); }
.cp-theme .cp-hero-stats .cp-stats__label { color: rgb(255 255 255 / 72%); }

/* Section rhythm: section heads always sit the same distance above their content */
.cp-theme .e-con.cp-section > .e-con-inner > .cp-section-head,
.cp-theme .e-con-full.cp-section > .cp-section-head { margin-bottom: clamp(8px, 1.5vw, 16px); }

/* Cards with a link inside lift; their photo zooms subtly (clipped to the image box). */
.cp-theme .cp-card:has(a) .elementor-widget-image { overflow: hidden; border-radius: 16px; }
.cp-theme .cp-card:has(a) .elementor-widget-image img { transition: transform .45s var(--cp-ease); }
@media (hover: hover) and (prefers-reduced-motion: no-preference) {
	.cp-theme .cp-card:has(a):hover .elementor-widget-image img { transform: scale(1.035); }
}
.cp-theme .cp-text-link .elementor-button-icon { transition: transform .2s var(--cp-ease); }
.cp-theme .cp-text-link .elementor-button:hover .elementor-button-icon { transform: translateX(3px); }

/* Navigation: underline grows from the left on hover, full width for the current section */
.cp-theme .cp-nav__list > li > a::after { right: 12px; left: 12px; bottom: 5px; height: 2px; }
.cp-theme .cp-nav__list > li > a:hover::after { transform: scaleX(1); opacity: .45; }
.cp-theme .cp-nav__list > :is(.current-menu-item, .current_page_item, .current-menu-ancestor, .current_page_parent, .current_page_ancestor) > a::after { opacity: 1; }
.cp-theme .cp-nav__list a:hover { background-color: transparent; }
.cp-theme .cp-nav__list > li > a::after { transition: transform .3s var(--cp-ease), opacity .2s ease; }
@media (max-width: 1024px) {
	.cp-theme .cp-nav__list > li > a::after { top: 14px; right: auto; bottom: 14px; left: 6px; width: 4px; height: auto; }
	.cp-theme .cp-nav__list > li > a:hover::after { transform: scaleY(.5); }
	.cp-theme .cp-nav__list a:hover { background-color: var(--cp-light); }
}

/* Sticky header: soft shadow as soon as the page scrolls */
.cp-theme .cp-header.is-condensed { box-shadow: 0 1px 0 rgb(6 26 58 / 6%), 0 10px 30px rgb(6 26 58 / 10%); }

/* Interactive surfaces: consistent hover/press feedback */
.cp-theme :is(.cp-header-search, .cp-menu-toggle, .cp-drawer__close, .cp-filter-reset, .cp-gallery__zoom, .cp-marquee-toggle) {
	transition: background-color .2s ease, color .2s ease, border-color .2s ease, transform .2s var(--cp-ease);
}
.cp-theme :is(.cp-header-search, .cp-menu-toggle, .cp-drawer__close, .cp-filter-reset, .cp-gallery__zoom, .cp-marquee-toggle, .cp-to-top):active { transform: scale(.95); }
.cp-theme .cp-filter-reset:hover { border-color: var(--cp-navy); }

/* Anchored sections never hide under the sticky header (html scroll-padding covers the header,
   this adds breathing room), and revealed blocks that are the anchor target are never mid-animation. */
.cp-theme :is(main, .cp-catalog) [id] { scroll-margin-top: 12px; }
@media (max-width: 767px) {
	/* Keyboard focus never lands behind the sticky mobile action bar */
	html { scroll-padding-bottom: calc(76px + env(safe-area-inset-bottom, 0px)); }
}
.cp-js .cp-reveal:is(:target, :has(:target)) { opacity: 1; transform: none; }

/* Back to top */
.cp-to-top {
	--cp-focus: var(--cp-red-dark);
	position: fixed;
	right: max(16px, env(safe-area-inset-right, 0px));
	bottom: 24px;
	z-index: 1040;
	display: grid;
	place-items: center;
	width: 48px;
	height: 48px;
	padding: 0;
	border: 1px solid rgb(6 26 58 / 12%);
	border-radius: 999px;
	background: #fff;
	box-shadow: 0 10px 26px rgb(6 26 58 / 18%);
	color: var(--cp-navy);
	cursor: pointer;
	opacity: 0;
	transform: translateY(12px);
	transition: opacity .25s ease, transform .25s var(--cp-ease), background-color .2s ease, color .2s ease, visibility 0s linear .25s;
	visibility: hidden;
}
.cp-to-top.is-visible { opacity: 1; transform: none; visibility: visible; transition: opacity .25s ease, transform .25s var(--cp-ease), background-color .2s ease, color .2s ease, visibility 0s; }
.cp-to-top:is(:hover, :focus-visible) { border-color: var(--cp-navy); background: var(--cp-navy); color: #fff; }
.cp-to-top .cp-icon { width: 20px; height: 20px; transform: rotate(-90deg); }
@media (max-width: 767px) {
	.cp-to-top { right: 12px; bottom: calc(62px + 12px + env(safe-area-inset-bottom, 0px)); width: 44px; height: 44px; }
}
html.cp-drawer-active .cp-to-top { visibility: hidden; }
.elementor-editor-active .cp-to-top { display: none; }

/* Footer: clear CTA button, link hover states, spacing */
.cp-theme .cp-footer__grid { row-gap: clamp(32px, 4vw, 48px); }
.cp-theme .cp-footer__menu a,
.cp-theme .cp-footer__contact a { transition: color .2s ease, transform .2s var(--cp-ease); }
.cp-theme .cp-footer__menu a:hover { text-decoration: none; transform: translateX(3px); }
.cp-theme .cp-footer__contact a:hover { text-decoration-color: rgb(255 255 255 / 45%); }
.cp-theme .cp-footer__cta.cp-btn { margin-top: 6px; padding-bottom: 0; }
.cp-theme .cp-footer__subtitle { margin: 26px 0 0; color: rgb(255 255 255 / 60%); font-size: .75rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; }
.cp-theme .cp-footer__cta .cp-icon { width: 18px; height: 18px; }
.cp-theme .cp-footer__brands { display: flex; flex-wrap: wrap; gap: 8px; margin: 10px 0 0; padding: 0; list-style: none; }
.cp-theme .cp-footer__brands a {
	display: inline-flex;
	align-items: center;
	min-height: 36px;
	padding: 6px 14px;
	border: 1px solid rgb(255 255 255 / 16%);
	border-radius: 999px;
	color: rgb(255 255 255 / 84%);
	font-size: .85rem;
	font-weight: 600;
	text-decoration: none;
	transition: border-color .2s ease, background-color .2s ease, color .2s ease;
}
.cp-theme .cp-footer__brands a:hover { border-color: rgb(255 255 255 / 55%); background: rgb(255 255 255 / 6%); color: #fff; }

@media (prefers-reduced-motion: reduce) {
	.cp-to-top, .cp-to-top.is-visible { transform: none; transition: none; }
	.cp-theme .cp-footer__menu a:hover { transform: none; }
	.cp-theme :is(.elementor-widget.cp-btn .elementor-button, .cp-btn:not(.elementor-element), .cp-form input[type=submit]):active { transform: none; }
}

/* Header CTA stays out of the phone header (the mobile action bar carries "Request") */
@media (max-width: 767px) {
	.cp-theme .cp-header .cp-btn.cp-header__cta { display: none; }
}
/* Photo media boxes that blend with the photo need less inset: the photo carries its own margin */
.cp-theme .cp-pcard__media[style*="--cp-media-bg"] { --_pad: 10px; }
/* Category badge keeps an edge on dark (black-background) photos */
.cp-theme :is(.cp-pcard__media, .cp-gallery__stage) .cp-badge { box-shadow: 0 0 0 1px rgb(255 255 255 / 16%), 0 4px 12px rgb(0 0 0 / 18%); }
/* Carousel pause control sits centred under the centred marquee */
.cp-theme .cp-marquee-toggle { display: block; margin-inline: auto; }

/* ==========================================================================
   Design pass 2: org chart, request tabs & form states, video, product
   summary bar, mobile density and tap targets (see reports/design-review-2.md)
   ========================================================================== */

/* Headings never leave a single orphan word; paragraphs avoid short last lines. */
.cp-theme :is(h1, h2, h3).elementor-heading-title,
.cp-theme :is(.cp-catalog, .cp-hub) :is(h1, h2),
.cp-theme .cp-prod-summary__title { text-wrap: balance; }
.cp-theme :is(.elementor-widget-text-editor, .cp-lead) p { text-wrap: pretty; }

/* ---------- About: org chart ---------- */
/* Connectors stay 2px wide at every breakpoint (were stretching to full-width bars on phones). */
.cp-theme .cp-org-chart .e-con.cp-org-line {
	--width: 2px;
	width: 2px !important;
	max-width: 2px;
	flex: 0 0 auto;
	align-self: center;
	background: linear-gradient(rgb(227 27 35 / 75%), rgb(227 27 35 / 45%)) !important;
}
.cp-theme .cp-org-chart .e-con.cp-org-hline { background: rgb(227 27 35 / 55%) !important; }

/* People card: avatar + role + name on top, the mailto pill across the bottom. */
.cp-theme .cp-org-chart .e-con.cp-team-card:not(.cp-org-tech-list) {
	--display: grid;
	display: grid;
	grid-template-columns: auto minmax(0, 1fr);
	grid-template-areas: "avatar role" "avatar name" "email email";
	align-items: center;
	column-gap: 16px;
	row-gap: 4px;
	text-align: left;
}
.cp-theme .cp-org-chart .cp-team-card > .cp-team-role { grid-area: role; justify-self: start; align-self: end; }
.cp-theme .cp-org-chart .cp-team-card > .cp-team-name:not(.cp-team-name--sm) { display: contents; }
.cp-theme .cp-org-chart .cp-team-card > .cp-team-name:not(.cp-team-name--sm) > .elementor-heading-title { grid-area: name; align-self: start; text-align: left; }
.cp-theme .cp-org-chart .cp-team-card > .cp-team-name:not(.cp-team-name--sm) > .cp-avatar { grid-area: avatar; }
.cp-theme .cp-org-chart .cp-team-card > .cp-org-email { grid-area: email; margin-top: 12px; }
.cp-theme .cp-org-chart .cp-team-role .elementor-heading-title { font-size: 11px; letter-spacing: .09em; }

/* Management row: additional team members report directly to the General Manager. */
.cp-theme .cp-org-chart .cp-org-management-grid {
	display: grid !important;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 40px;
	width: min(100%, 1160px) !important;
	position: relative;
}
.cp-theme .cp-org-chart .cp-org-management-grid > .cp-team-card {
	width: 100% !important;
}
.cp-theme .cp-org-chart .e-con.cp-team-card.cp-org-contacts:not(.cp-org-tech-list) {
	grid-template-columns: 56px minmax(0, 1fr);
	grid-template-areas: "avatar role" "avatar name" "email email" "phone phone";
}
.cp-theme .cp-org-chart .cp-team-card.cp-org-contacts > .cp-org-phone {
	grid-area: phone;
	margin-top: 4px;
}
.cp-theme .cp-org-chart .cp-team-card.cp-org-contacts > .cp-org-email,
.cp-theme .cp-org-chart .cp-team-card.cp-org-contacts > .cp-org-phone {
	min-width: 0;
	width: 100%;
	grid-column: 1 / -1;
}
@media (min-width: 1101px) {
	.cp-theme .cp-org-chart .cp-org-management-grid {
		padding-top: 20px !important;
		background-image: linear-gradient(rgb(227 27 35 / 55%), rgb(227 27 35 / 55%)),
			linear-gradient(rgb(227 27 35 / 55%), rgb(227 27 35 / 55%)),
			linear-gradient(rgb(227 27 35 / 55%), rgb(227 27 35 / 55%)),
			linear-gradient(rgb(227 27 35 / 55%), rgb(227 27 35 / 55%));
		background-size: 69% 1px, 1px 20px, 1px 20px, 1px 20px;
		background-position: center top, 15.5% top, center top, 84.5% top;
		background-repeat: no-repeat;
	}
}
@media (max-width: 1100px) {
	.cp-theme .cp-org-chart .cp-org-management-grid {
		grid-template-columns: 1fr;
		width: min(100%, 620px) !important;
	}
	.cp-theme .cp-org-chart .cp-org-management-grid > .cp-org-secondary:not(.cp-org-contacts) { order: -1; }
}

.cp-avatar {
	display: inline-grid;
	place-items: center;
	flex: none;
	width: 56px;
	height: 56px;
	border-radius: 50%;
	background: linear-gradient(135deg, var(--cp-navy), var(--cp-blue));
	color: #fff;
	font-size: 1.05rem;
	font-weight: 800;
	letter-spacing: .03em;
	line-height: 1;
	box-shadow: 0 0 0 3px #fff, 0 0 0 4px #dce4ed;
}
.cp-avatar .cp-icon { width: 24px; height: 24px; fill: currentColor; }
.cp-theme .cp-org-primary .cp-avatar { width: 64px; height: 64px; background: #fff; color: var(--cp-navy); font-size: 1.2rem; box-shadow: 0 0 0 3px rgb(255 255 255 / 18%), 0 0 0 5px rgb(227 27 35 / 70%); }
.cp-theme .cp-org-secondary { border-top: 4px solid var(--cp-blue) !important; }
.cp-theme .cp-org-general-mail .cp-avatar { background: var(--cp-red); }

/* Head tech → technicians: compact roster rows with small avatars. */
.cp-theme .cp-org-chart .cp-org-tech-list > .cp-team-role { --align-self: flex-start; align-self: flex-start !important; margin-inline: 0 auto; }
.cp-theme .cp-org-chart .cp-team-name--sm { display: flex; align-items: center; gap: 12px; }
.cp-theme .cp-team-name--sm .cp-avatar { width: 36px; height: 36px; font-size: .78rem; box-shadow: none; background: #e6edf5; color: var(--cp-navy); }

/* Shared mailbox: set apart from the reporting lines by a dashed divider. */
.cp-theme .cp-org-chart > .e-con:has(+ .cp-org-general-mail) {
	--min-height: 0px;
	width: min(100%, 760px);
	min-height: 0;
	margin-block: 40px 28px;
	border-top: 1px dashed #b7c6d6;
}
@media (min-width: 768px) {
	.cp-theme .cp-org-chart .e-con.cp-team-card.cp-org-general-mail:not(.cp-org-tech-list) {
		--width: min(100%, 760px);
		width: min(100%, 760px) !important;
		grid-template-columns: auto minmax(0, 1fr) auto;
		grid-template-areas: "avatar role email" "avatar name email";
	}
	.cp-theme .cp-org-chart .cp-team-card.cp-org-general-mail > .cp-org-email { margin-top: 0; min-width: 300px; }
}
@media (max-width: 767px) {
	.cp-theme .cp-org-chart .e-con.cp-org-line { --min-height: 24px; min-height: 24px; }
	.cp-theme .cp-org-chart .e-con.cp-team-card { --padding-top: 20px; --padding-bottom: 20px; --padding-left: 18px; --padding-right: 18px; }
	.cp-theme .cp-org-chart > .e-con:has(+ .cp-org-general-mail) { margin-block: 28px 20px; }
	.cp-theme .cp-org-chart .cp-org-management-grid { grid-template-columns: 1fr; gap: 20px; }
	.cp-avatar { width: 48px; height: 48px; font-size: .95rem; }
	.cp-theme .cp-org-primary .cp-avatar { width: 54px; height: 54px; font-size: 1.05rem; }
}

/* Building photo: storefront crop that keeps the entrance in view. */
.cp-theme .cp-about-photo img { aspect-ratio: 4 / 3; width: 100%; height: auto; object-fit: cover; object-position: 50% 72%; }

/* ---------- Contact ---------- */
/* Four fact cards share the navy card's height evenly (no hole between rows). */
@media (min-width: 1025px) {
	.cp-theme .e-con.cp-contact-facts { grid-template-rows: repeat(2, minmax(0, 1fr)); align-content: stretch; }
}
.cp-theme .e-con.cp-contact-facts { --gap: 20px; --row-gap: 20px; --column-gap: 20px; gap: 20px; }
.cp-theme .cp-contact-facts > .e-con { height: 100%; }

/* Map: framed, with a neutral placeholder while the embed loads (or if it is blocked). */
.cp-theme .e-con.cp-map {
	position: relative;
	overflow: hidden;
	border: 1px solid #dce4ed;
	border-radius: 20px;
	background:
		url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23e31b23'%3E%3Cpath d='M12 2a7 7 0 0 1 7 7c0 5.25-7 13-7 13S5 14.25 5 9a7 7 0 0 1 7-7zm0 4.5A2.5 2.5 0 1 0 12 11.5 2.5 2.5 0 0 0 12 6.5z'/%3E%3C/svg%3E") center / 44px no-repeat,
		repeating-linear-gradient(0deg, transparent 0 39px, rgb(6 26 58 / 6%) 39px 40px),
		repeating-linear-gradient(90deg, transparent 0 39px, rgb(6 26 58 / 6%) 39px 40px),
		#eef3f8;
}
.cp-theme .cp-map iframe { position: relative; display: block; }
@media (max-width: 767px) {
	.cp-theme .e-con.cp-map { --min-height: 300px; min-height: 300px; }
	.cp-theme .cp-map iframe { height: 300px !important; min-height: 300px; }
}

/* Request tabs: unmistakable active state with an indicator bar; step numbers stay legible on navy. */
.cp-theme .cp-tabs .cp-tabs__tab { position: relative; overflow: hidden; border-color: #dce4ed; background: #fff; }
.cp-theme .cp-tabs .cp-tabs__tab[aria-selected="true"] { background: var(--cp-navy); border-color: var(--cp-navy); box-shadow: 0 12px 28px rgb(6 26 58 / 18%); }
.cp-theme .cp-tabs .cp-tabs__tab[aria-selected="true"]::after {
	content: "";
	position: absolute;
	inset: auto 0 0;
	height: 4px;
	background: var(--cp-red);
}
.cp-theme .cp-tabs__tab[aria-selected="true"] .cp-tabs__tab-num { color: #ff9ea2; }
.cp-theme .cp-tabs .cp-tabs__tab:not([aria-selected="true"]) .cp-tabs__tab-num { color: var(--cp-red-dark); }
@media (min-width: 768px) {
	.cp-theme .cp-tabs__tab { padding: 16px 18px; }
	.cp-theme .cp-tabs__tab-num { font-size: .72rem; }
}
/* Phones: one segmented control on a light track. */
@media (max-width: 767px) {
	.cp-theme .cp-tabs__list { gap: 4px; padding: 4px; border-radius: 14px; background: #e6edf5; }
	.cp-theme .cp-tabs .cp-tabs__tab { min-height: 60px; padding: 8px 4px; border: 0; border-radius: 10px; background: transparent; box-shadow: none; display: grid; place-content: center; gap: 2px; }
	.cp-theme .cp-tabs .cp-tabs__tab:is(:hover, :focus):not([aria-selected="true"]) { background: rgb(255 255 255 / 55%); }
	.cp-theme .cp-tabs .cp-tabs__tab[aria-selected="true"] { box-shadow: 0 4px 12px rgb(6 26 58 / 22%); }
	.cp-theme .cp-tabs .cp-tabs__tab[aria-selected="true"]::after { inset: auto 18% 0; height: 3px; border-radius: 3px 3px 0 0; }
	.cp-theme .cp-tabs__tab-title { font-size: .78rem; line-height: 1.2; }
}

/* Form fields: clear invalid state, prefilled context, designed CF7 response messages. */
.cp-theme .cp-form .wpcf7-not-valid { border-color: var(--cp-red) !important; background-color: #fff6f6 !important; }
.cp-theme .cp-form .wpcf7-not-valid:focus { box-shadow: 0 0 0 4px rgb(227 27 35 / 16%); }
.cp-theme .cp-form .wpcf7-not-valid-tip { display: flex; align-items: center; gap: 6px; margin-top: 6px; font-size: .82rem; font-weight: 600; color: #a50e14; }
.cp-theme .cp-form .wpcf7-not-valid-tip::before {
	content: "!";
	display: inline-grid;
	place-items: center;
	flex: none;
	width: 16px;
	height: 16px;
	border-radius: 50%;
	background: var(--cp-red);
	color: #fff;
	font-size: .7rem;
	font-weight: 800;
}
.cp-theme .cp-form .cp-is-prefilled { border-color: #9db8d9 !important; background-color: #eef5ff !important; font-weight: 600; }

.cp-theme .cp-form:is(.sent, .invalid, .unaccepted, .payment-required, .failed, .aborted, .spam) .wpcf7-response-output {
	position: relative;
	margin: 20px 0 0 !important;
	padding: 16px 18px 16px 56px !important;
	border: 1px solid !important;
	border-radius: 14px;
	font-size: .95rem;
	font-weight: 600;
	line-height: 1.5;
}
.cp-theme .cp-form:is(.sent, .invalid, .unaccepted, .payment-required, .failed, .aborted, .spam) .wpcf7-response-output::before {
	content: "!";
	position: absolute;
	left: 16px;
	top: 14px;
	display: grid;
	place-items: center;
	width: 26px;
	height: 26px;
	border-radius: 50%;
	color: #fff;
	font-size: .9rem;
	font-weight: 800;
}
.cp-theme .cp-form.sent .wpcf7-response-output { border-color: #a7dbbb !important; background: #ebf8f0; color: #0e4f2a; }
.cp-theme .cp-form.sent .wpcf7-response-output::before { content: "\2713"; background: #1a7f45; }
.cp-theme .cp-form:is(.invalid, .unaccepted, .payment-required) .wpcf7-response-output { border-color: #f0cf8f !important; background: #fff8e8; color: #5e3900; }
.cp-theme .cp-form:is(.invalid, .unaccepted, .payment-required) .wpcf7-response-output::before { background: #a85f00; }
.cp-theme .cp-form:is(.failed, .aborted, .spam) .wpcf7-response-output { border-color: #f3b4b6 !important; background: #fdeeee; color: #7d0d12; }
.cp-theme .cp-form:is(.failed, .aborted, .spam) .wpcf7-response-output::before { background: var(--cp-red-dark); }
.cp-theme .cp-form.submitting input[type=submit] { opacity: .75; cursor: progress; }

/* ---------- Service: portrait clips ---------- */
.cp-theme .cp-video-portrait .elementor-custom-embed-image-overlay::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(to top, rgb(6 26 58 / 45%), transparent 40%);
	pointer-events: none;
}
.cp-theme .cp-video-portrait .elementor-custom-embed-play {
	z-index: 1;
	display: grid;
	place-items: center;
	width: 72px;
	height: 72px;
	border-radius: 50%;
	background: #fff;
	box-shadow: 0 12px 30px rgb(0 0 0 / 32%), 0 0 0 8px rgb(255 255 255 / 28%);
	opacity: 1;
	transition: transform .25s var(--cp-ease), box-shadow .25s ease;
}
.cp-theme .cp-video-portrait .elementor-custom-embed-play svg { display: none; }
.cp-theme .cp-video-portrait .elementor-custom-embed-play::before {
	content: "";
	margin-left: 6px;
	border-left: 22px solid var(--cp-red);
	border-block: 14px solid transparent;
}
.cp-theme .cp-video-portrait .elementor-custom-embed-image-overlay:hover .elementor-custom-embed-play { transform: translate(-50%, -50%) scale(1.07); box-shadow: 0 14px 34px rgb(0 0 0 / 36%), 0 0 0 12px rgb(255 255 255 / 30%); }
.cp-theme .cp-video-portrait .elementor-custom-embed-play:focus-visible { outline: 3px solid #fff; outline-offset: 4px; }
.cp-theme .cp-video-card .elementor-custom-embed-play { width: 60px; height: 60px; }
.cp-theme .cp-video-card .elementor-custom-embed-play::before { border-left-width: 18px; border-block-width: 11px; margin-left: 5px; }
.cp-theme .cp-video-featured > .e-con:last-child { justify-content: center; }

/* Phones: the four clips become a swipeable rail (next clip peeks in) instead of ~2,400px of stacking. */
@media (max-width: 767px) {
	.cp-theme .e-con.cp-video-rail {
		--display: flex;
		display: flex !important;
		gap: 14px;
		overflow-x: auto;
		overscroll-behavior-x: contain;
		scroll-snap-type: x mandatory;
		padding-bottom: 12px;
		scrollbar-width: thin;
	}
	.cp-theme .cp-video-rail > .cp-video-card { flex: 0 0 74%; min-width: 0; scroll-snap-align: start; }
}

/* ---------- Product page ---------- */
.cp-theme .cp-prod-meta { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.cp-theme .cp-prod-meta:has(> div:nth-child(4)) { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.cp-theme .cp-prod-meta > div { padding: 12px 14px; }
@media (max-width: 767px) {
	.cp-theme .cp-prod-meta { grid-template-columns: minmax(0, 1fr); gap: 0; border: 1px solid #e1e8ef; border-radius: 12px; overflow: hidden; }
	.cp-theme .cp-prod-meta > div { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; border: 0; border-radius: 0; }
	.cp-theme .cp-prod-meta > div + div { border-top: 1px solid #e1e8ef; }
	.cp-theme .cp-prod-meta dd { margin: 0; text-align: right; }
}
.cp-theme .cp-gallery__thumb { width: 84px; height: 84px; border: 1px solid #dce4ed; border-radius: 12px; transition: box-shadow .2s ease, border-color .2s ease; }
.cp-theme .cp-gallery__thumb[aria-pressed="true"] { border-color: transparent; box-shadow: 0 0 0 2px #fff, 0 0 0 4px var(--cp-red); }
.cp-theme .cp-gallery__thumb:not([aria-pressed="true"]) img { opacity: .75; }
.cp-theme .cp-gallery__thumb:hover img { opacity: 1; }
.cp-theme .cp-prod-summary__call a { display: inline-flex; align-items: center; min-height: 44px; }
.cp-theme .cp-product-page .cp-section-head--row { width: 100%; max-width: none; }

/* Sticky "Request parts for this model" bar (desktop/tablet; phones use the action bar). */
.cp-prod-sticky {
	position: fixed;
	top: calc(var(--wp-admin--admin-bar--height, 0px) + var(--cp-header-h-condensed));
	left: 0;
	right: 0;
	z-index: 990;
	border-bottom: 1px solid #e1e8ef;
	background: #fff;
	box-shadow: 0 10px 24px rgb(6 26 58 / 8%);
	opacity: 0;
	transform: translateY(-110%);
	transition: transform .3s var(--cp-ease), opacity .2s ease, visibility 0s linear .3s;
	visibility: hidden;
}
.cp-prod-sticky.is-visible { opacity: 1; transform: none; visibility: visible; transition: transform .3s var(--cp-ease), opacity .2s ease, visibility 0s; }
.cp-prod-sticky__inner { display: flex; align-items: center; gap: 16px; min-height: 72px; padding-block: 10px; }
.cp-prod-sticky__thumb { display: grid; place-items: center; flex: none; width: 52px; height: 52px; padding: 4px; border: 1px solid #e1e8ef; border-radius: 10px; background: var(--cp-media-bg, #fff); }
.cp-prod-sticky__thumb img { width: 100%; height: 100%; object-fit: contain; }
.cp-prod-sticky__text { display: grid; min-width: 0; margin-right: auto; }
.cp-prod-sticky__text small { color: var(--cp-red-dark); font-size: .72rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }
.cp-prod-sticky__text strong { overflow: hidden; color: var(--cp-navy); font-size: 1rem; font-weight: 700; text-overflow: ellipsis; white-space: nowrap; }
.cp-prod-sticky__call { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; color: var(--cp-navy); font-weight: 700; text-decoration: none; white-space: nowrap; }
.cp-prod-sticky__call .cp-icon { width: 18px; height: 18px; color: var(--cp-red); }
.cp-prod-sticky .cp-prod-sticky__cta { flex: none; }
@media (max-width: 1024px) { .cp-prod-sticky__call { display: none; } }
@media (max-width: 767px) { .cp-prod-sticky { display: none; } }

/* Related products: swipeable rail on phones. */
@media (max-width: 767px) {
	.cp-theme .cp-product-page .cp-product-grid {
		display: flex;
		gap: 14px;
		overflow-x: auto;
		overscroll-behavior-x: contain;
		scroll-snap-type: x mandatory;
		padding-bottom: 12px;
		scrollbar-width: thin;
	}
	.cp-theme .cp-product-page .cp-product-grid > * { flex: 0 0 80%; min-width: 0; scroll-snap-align: start; }
}

/* ---------- Phones: tap targets ---------- */
@media (max-width: 767px) {
	.cp-theme .cp-footer__brands a { min-height: 44px; padding-inline: 16px; }
	.cp-theme .cp-breadcrumbs a { display: inline-flex; align-items: center; min-height: 44px; }
	.cp-theme .cp-breadcrumbs ol { margin-bottom: .6rem; }
}

@media (prefers-reduced-motion: reduce) {
	.cp-prod-sticky, .cp-prod-sticky.is-visible { transform: none; transition: none; }
	.cp-theme .cp-video-portrait .elementor-custom-embed-play { transition: none; }
	.cp-theme .cp-video-portrait .elementor-custom-embed-image-overlay:hover .elementor-custom-embed-play { transform: translate(-50%, -50%); }
}

/* ==========================================================================
   Design pass 3: Parts quick panel, header search + suggestions, recently viewed,
   request list, lightbox, section transitions, footer "Talk to us", card tokens,
   empty states, print (see reports/design-review-3.md)
   ========================================================================== */

/* ---------- Tokens: one card language ---------- */
:root {
	--cp-card-radius: 20px;
	--cp-card-radius-sm: 14px;
	--cp-card-border: #e3e9f0;
	--cp-card-shadow: 0 1px 2px rgb(6 26 58 / 4%), 0 6px 20px rgb(6 26 58 / 5%);
	--cp-card-shadow-hover: 0 2px 6px rgb(6 26 58 / 6%), 0 18px 40px rgb(6 26 58 / 12%);
	--cp-popover-shadow: 0 24px 60px rgb(6 26 58 / 18%), 0 2px 6px rgb(6 26 58 / 6%);
	--cp-angle: clamp(16px, 2.8vw, 40px);
}
.cp-theme :is(.cp-pcard, .cp-brand-card, .cp-find-link, .cp-contact-card) {
	border-color: var(--cp-card-border);
	border-radius: var(--cp-card-radius);
	box-shadow: var(--cp-card-shadow);
}
.cp-theme :is(.cp-pcard, .cp-brand-card, .cp-find-link):is(:hover, :has(.cp-stretched:focus-visible), :focus-visible) { box-shadow: var(--cp-card-shadow-hover); }
.cp-theme .cp-card-surface { border-color: var(--cp-card-border); border-radius: var(--cp-card-radius); box-shadow: var(--cp-card-shadow); }
.cp-theme .cp-brand-card__logo { border-radius: var(--cp-card-radius-sm); }

/* ---------- Section transitions ----------
   Dark bands that follow a light section rise on a shallow angle (the clipped corner shows the section
   above, so nothing is cut but padding); heroes keep the red accent line on their bottom edge. */
.cp-theme .elementor > .e-con.e-parent:is(.cp-section--navy:not(.cp-hero, .cp-page-hero), .cp-cta-band):not(:first-child),
.cp-theme .cp-cat-cta {
	position: relative;
	margin-top: calc(-1 * var(--cp-angle));
	clip-path: polygon(0 var(--cp-angle), 100% 0, 100% 100%, 0 100%);
}
.cp-theme .elementor > .e-con.e-parent.cp-cta-band:not(:first-child) { --padding-top: calc(clamp(56px, 7vw, 88px) + var(--cp-angle) * .5); }
.cp-theme .cp-cat-cta { padding-top: calc(clamp(40px, 6vw, 72px) + var(--cp-angle) * .5); }
/* Two light sections in a row get a hairline instead of merging */
.cp-theme .elementor > .e-con.e-parent.cp-section--light + .e-con.e-parent.cp-section--light,
.cp-theme .elementor > .e-con.e-parent.cp-section--white + .e-con.e-parent.cp-section--white { border-top: 1px solid rgb(6 26 58 / 6%); }

/* ---------- Header: "Parts" quick panel ---------- */
.cp-nav__sub-toggle { display: none; }
.cp-js .cp-nav__sub-toggle {
	display: inline-grid;
	place-items: center;
	flex: none;
	padding: 0;
	border: 0;
	background: transparent;
	color: var(--cp-navy);
	cursor: pointer;
}
.cp-nav__sub-toggle .cp-icon { transition: transform .25s var(--cp-ease); }
.cp-nav__sub-toggle[aria-expanded="true"] .cp-icon { transform: rotate(180deg); }
.cp-mega[hidden] { display: none !important; }
.cp-mega__eyebrow { margin: 0 0 6px; color: var(--cp-red-dark); font-size: .72rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; }
.cp-mega__title { margin: 0 0 16px; color: var(--cp-navy); font-size: 1.2rem; font-weight: 700; line-height: 1.25; letter-spacing: -.01em; text-wrap: balance; }
.cp-mega__label { margin: 0 0 12px; color: var(--cp-muted); font-size: .75rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; }
.cp-mega__search { position: relative; display: flex; margin: 0 0 16px; }
.cp-mega__search input {
	width: 100%;
	min-height: 48px;
	padding: 0 52px 0 16px;
	border: 1px solid #cdd6e1;
	border-radius: 999px;
	background: #fff;
	color: var(--cp-text);
	font: inherit;
	font-size: .95rem;
}
.cp-mega__search input:focus { outline: none; border-color: var(--cp-blue); box-shadow: 0 0 0 4px rgb(18 62 115 / 15%); }
.cp-mega__go {
	position: absolute;
	top: 4px;
	right: 4px;
	display: grid;
	place-items: center;
	width: 40px;
	height: 40px;
	padding: 0;
	border: 0;
	border-radius: 999px;
	background: var(--cp-red-dark);
	color: #fff;
	cursor: pointer;
}
.cp-mega__go:hover { background: var(--cp-navy); }
.cp-theme .cp-nav .cp-mega__all,
.cp-mega__all {
	display: inline-flex;
	padding: 0;
	border-radius: 8px;
	font-size: .95rem;
	align-items: center;
	gap: 8px;
	min-height: 44px;
	color: var(--cp-red-dark);
	font-weight: 700;
	text-decoration: none;
}
.cp-mega__all .cp-icon { transition: transform .2s var(--cp-ease); }
.cp-mega__all:hover { color: var(--cp-navy); }
.cp-mega__all:hover .cp-icon { transform: translateX(3px); }

/* Brand tiles (Parts panel, 404 / empty search) */
.cp-brand-tiles {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 150px), 1fr));
	gap: 12px;
	margin: 0;
	padding: 0;
	list-style: none;
}
.cp-brand-tiles li { margin: 0; }
.cp-theme .cp-nav .cp-brand-tile,
.cp-brand-tile {
	display: flex;
	min-height: 0;
	font-size: 1rem;
	font-weight: 400;
	letter-spacing: 0;
	flex-direction: column;
	align-items: center;
	gap: 4px;
	height: 100%;
	padding: 12px 10px;
	border: 1px solid var(--cp-card-border);
	border-radius: var(--cp-card-radius-sm);
	background: #fff;
	color: var(--cp-navy);
	text-align: center;
	text-decoration: none;
	transition: border-color .2s ease, box-shadow .2s ease, transform .2s var(--cp-ease);
}
.cp-theme .cp-nav .cp-brand-tile:hover,
.cp-brand-tile:hover,
.cp-brand-tile:focus-visible { background: #fff; border-color: rgb(227 27 35 / 40%); box-shadow: var(--cp-card-shadow-hover); color: var(--cp-navy); transform: translateY(-2px); }
.cp-brand-tile__logo { display: grid; place-items: center; width: 100%; height: 46px; margin-bottom: 4px; }
.cp-brand-tile__logo img { width: auto; height: auto; max-width: 82%; max-height: 40px; object-fit: contain; }
.cp-brand-tile__logo .cp-brand-logo--text { font-size: 1rem; }
.cp-brand-tile__name { font-size: .88rem; font-weight: 700; line-height: 1.25; }
.cp-brand-tile__count { color: var(--cp-muted); font-size: .76rem; }
.cp-find-group > .cp-section-head { margin-bottom: 1.25rem; }
.cp-brand-tiles--find { grid-template-columns: repeat(auto-fill, minmax(min(100%, 170px), 1fr)); gap: 14px; }
.cp-brand-tiles--find .cp-brand-tile { padding: 18px 12px 14px; box-shadow: var(--cp-card-shadow); }
.cp-brand-tiles--find .cp-brand-tile__logo { height: 56px; }
.cp-brand-tiles--find .cp-brand-tile__logo img { max-height: 48px; }

@media (min-width: 1025px) {
	.cp-theme .cp-nav__list > li.cp-has-mega { position: static; display: flex; align-items: center; }
	.cp-theme .cp-nav__list > li.cp-has-mega > a { padding-right: 6px; }
	.cp-js .cp-nav__sub-toggle { width: 26px; height: 40px; margin-left: -2px; border-radius: 8px; }
	.cp-nav__sub-toggle:hover { color: var(--cp-red-dark); }
	.cp-nav__sub-toggle .cp-icon { width: 15px; height: 15px; }
	.cp-mega {
		position: absolute;
		top: 100%;
		left: 50%;
		z-index: 6;
		width: min(1080px, calc(100vw - 32px));
		padding-top: 8px;
		opacity: 0;
		transform: translate(-50%, 8px);
		transition: opacity .18s ease, transform .22s var(--cp-ease);
	}
	/* Hover bridge between the menu item and the panel */
	.cp-mega::before { content: ''; position: absolute; top: -26px; right: 0; left: 0; height: 34px; }
	.cp-mega.is-visible { opacity: 1; transform: translate(-50%, 0); }
	.cp-mega__inner {
		display: grid;
		grid-template-columns: minmax(240px, 300px) minmax(0, 1fr);
		gap: 32px;
		padding: 28px;
		border: 1px solid var(--cp-card-border);
		border-radius: var(--cp-card-radius);
		background: #fff;
		box-shadow: var(--cp-popover-shadow);
	}
	.cp-mega__aside { padding-right: 28px; border-right: 1px solid #e8edf3; }
	.cp-brand-tiles--mega { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; }
	.cp-theme .cp-nav .cp-brand-tiles--mega .cp-brand-tile { padding: 10px 8px; }
	.cp-brand-tiles--mega .cp-brand-tile__logo { height: 40px; }
	.cp-brand-tiles--mega .cp-brand-tile__logo img { max-height: 34px; }
}

/* Drawer: Parts expands into a brand list */
@media (max-width: 1024px) {
	.cp-theme .cp-nav__list > li.cp-has-mega { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; column-gap: 6px; }
	.cp-js .cp-nav__sub-toggle { width: 48px; height: 48px; border: 1px solid var(--cp-gray); border-radius: 14px; background: #fff; }
	.cp-nav__sub-toggle[aria-expanded="true"] { border-color: var(--cp-navy); background: var(--cp-light); }
	.cp-mega { grid-column: 1 / -1; padding: 6px 0 12px 12px; }
	.cp-mega__inner { display: flex; flex-direction: column-reverse; gap: 4px; }
	.cp-mega__eyebrow, .cp-mega__title, .cp-mega__search, .cp-mega__label { display: none; }
	.cp-theme .cp-nav .cp-mega__all { padding-left: 10px; }
	.cp-brand-tiles--mega { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 2px 8px; }
	.cp-theme .cp-nav .cp-brand-tiles--mega .cp-brand-tile { flex-direction: row; align-items: center; justify-content: space-between; min-height: 44px; padding: 6px 10px; border: 0; border-radius: 10px; background: transparent; text-align: left; }
	.cp-theme .cp-nav .cp-brand-tiles--mega .cp-brand-tile:hover { background: var(--cp-light); box-shadow: none; transform: none; }
	.cp-brand-tiles--mega .cp-brand-tile__logo,
	.cp-brand-tiles--mega .cp-brand-tile__count { display: none; }
	.cp-brand-tiles--mega .cp-brand-tile__name { font-size: .95rem; font-weight: 600; }
}

/* ---------- Header search panel ---------- */
.cp-search-panel[hidden] { display: none !important; }
.cp-search-panel {
	--cp-focus: var(--cp-red-dark);
	position: absolute;
	top: 100%;
	right: 0;
	left: 0;
	z-index: 5;
	border-top: 1px solid rgb(6 26 58 / 6%);
	background: #fff;
	box-shadow: 0 22px 44px rgb(6 26 58 / 14%);
	opacity: 0;
	transform: translateY(-6px);
	transition: opacity .18s ease, transform .22s var(--cp-ease);
}
.cp-search-panel.is-open { opacity: 1; transform: none; }
.cp-search-panel__inner { padding-block: 18px 16px; }
.cp-search-panel__form { position: relative; display: flex; align-items: center; gap: 10px; max-width: 880px; margin: 0 auto; }
.cp-search-panel__field { position: relative; flex: 1 1 auto; min-width: 0; }
.cp-search-panel__field .cp-icon { position: absolute; top: 50%; left: 18px; width: 20px; height: 20px; color: var(--cp-gray-2); transform: translateY(-50%); pointer-events: none; }
.cp-search-panel__field input {
	width: 100%;
	min-height: 54px;
	padding: 0 18px 0 50px;
	border: 1px solid #cdd6e1;
	border-radius: 999px;
	background: #fff;
	color: var(--cp-text);
	font: inherit;
	font-size: 1.05rem;
}
.cp-search-panel__field input:focus { outline: none; border-color: var(--cp-blue); box-shadow: 0 0 0 4px rgb(18 62 115 / 15%); }
.cp-theme .cp-search-panel .cp-search-panel__submit { flex: none; min-height: 54px; }
.cp-search-panel__close {
	display: grid;
	flex: none;
	place-items: center;
	width: 48px;
	height: 48px;
	padding: 0;
	border: 1px solid var(--cp-gray);
	border-radius: 999px;
	background: #fff;
	color: var(--cp-navy);
	cursor: pointer;
}
.cp-search-panel__close:hover { border-color: var(--cp-navy); background: var(--cp-light); }
.cp-search-panel__hint { display: flex; flex-wrap: wrap; align-items: center; gap: 2px 14px; max-width: 880px; margin: 10px auto 0; padding-left: 18px; color: var(--cp-muted); font-size: .85rem; }
.cp-search-panel__hint a { display: inline-flex; align-items: center; min-height: 32px; color: var(--cp-navy); font-weight: 600; text-decoration: underline; text-decoration-color: rgb(6 26 58 / 25%); text-underline-offset: 3px; }
.cp-search-panel__hint a:hover { color: var(--cp-red-dark); text-decoration-color: currentColor; }
.cp-header-search[aria-expanded="true"] { border-color: var(--cp-navy); background: var(--cp-light); color: var(--cp-navy); }
/* While the search or drawer is open the header drops backdrop-filter, so fixed overlays use the viewport. */
html.cp-search-active .cp-header { z-index: 1100; background-color: #fff; -webkit-backdrop-filter: none; backdrop-filter: none; }

@media (max-width: 767px) {
	.cp-search-panel {
		position: fixed;
		inset: 0;
		z-index: 1200;
		overflow-y: auto;
		overscroll-behavior: contain;
		border: 0;
		box-shadow: none;
	}
	.admin-bar .cp-search-panel { top: var(--wp-admin--admin-bar--height, 0px); }
	.cp-search-panel__inner { padding: 14px 16px calc(24px + env(safe-area-inset-bottom, 0px)); }
	.cp-search-panel__form { flex-wrap: wrap; gap: 10px; }
	.cp-search-panel__field { flex: 1 1 calc(100% - 58px); order: 1; }
	.cp-search-panel__close { order: 2; }
	.cp-search-panel__form > .cp-suggest { position: static; order: 3; flex: 1 1 100%; max-height: none; box-shadow: none; }
	.cp-theme .cp-search-panel .cp-search-panel__submit { order: 4; flex: 1 1 100%; }
	.cp-search-panel__hint { padding-left: 4px; margin-top: 14px; }
	.cp-search-panel__hint a { min-height: 44px; }
}

/* ---------- Search suggestions (combobox listbox) ---------- */
.cp-suggest-host { position: relative; }
.cp-suggest {
	position: absolute;
	top: calc(100% + 6px);
	right: 0;
	left: 0;
	z-index: 40;
	max-height: min(440px, 62vh);
	margin: 0;
	padding: 6px;
	overflow-y: auto;
	border: 1px solid #d5dee8;
	border-radius: 16px;
	background: #fff;
	box-shadow: var(--cp-popover-shadow);
	list-style: none;
	text-align: left;
}
.cp-suggest[hidden] { display: none; }
.cp-mega__search .cp-suggest { right: auto; width: max(100%, 380px); }
.cp-suggest__option {
	display: flex;
	align-items: center;
	gap: 12px;
	min-height: 52px;
	margin: 0;
	padding: 6px 10px;
	border-radius: 10px;
	color: var(--cp-text);
	cursor: pointer;
}
.cp-suggest__option[aria-selected="true"] { background: var(--cp-light); box-shadow: inset 3px 0 0 var(--cp-red); }
.cp-suggest__media {
	display: grid;
	flex: none;
	place-items: center;
	width: 44px;
	height: 44px;
	overflow: hidden;
	border: 1px solid #e3e9f0;
	border-radius: 10px;
	background: var(--cp-media-bg, #fff);
	color: var(--cp-gray-2);
}
.cp-suggest__media img { width: 100%; height: 100%; object-fit: contain; }
.cp-suggest__option--brand .cp-suggest__media { padding: 4px; background: #fff; }
.cp-suggest__media .cp-icon { width: 20px; height: 20px; }
.cp-suggest__text { display: grid; flex: 1 1 auto; min-width: 0; }
.cp-suggest__title { overflow: hidden; color: var(--cp-navy); font-size: .95rem; font-weight: 700; line-height: 1.3; text-overflow: ellipsis; white-space: nowrap; }
.cp-suggest__title mark { padding: 0 1px; border-radius: 3px; background: rgb(227 27 35 / 13%); color: inherit; }
.cp-suggest__meta { overflow: hidden; color: var(--cp-muted); font-size: .8rem; text-overflow: ellipsis; white-space: nowrap; }
.cp-suggest__type { flex: none; padding: 2px 8px; border: 1px solid #d9e1ea; border-radius: 999px; color: var(--cp-muted); font-size: .68rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.cp-suggest__all { margin-top: 4px; border-top: 1px solid #e8edf3; border-radius: 0 0 10px 10px; color: var(--cp-red-dark); font-size: .9rem; font-weight: 700; }
.cp-suggest__all .cp-icon { flex: none; width: 18px; height: 18px; margin-inline: 13px; }
.cp-suggest-busy::after {
	content: '';
	position: absolute;
	top: 50%;
	right: 18px;
	width: 16px;
	height: 16px;
	margin-top: -8px;
	border: 2px solid rgb(6 26 58 / 15%);
	border-top-color: var(--cp-red);
	border-radius: 50%;
	animation: cp-spin .7s linear infinite;
	pointer-events: none;
}
.cp-mega__search.cp-suggest-busy::after { right: 54px; }
.cp-search-panel__field input::-webkit-search-cancel-button { -webkit-appearance: none; appearance: none; }
@keyframes cp-spin { to { transform: rotate(360deg); } }

@media (max-width: 480px) {
	.cp-suggest__type { display: none; }
	.cp-suggest__title { display: -webkit-box; white-space: normal; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
}

/* ---------- Recently viewed ---------- */
.cp-recent[hidden] { display: none !important; }
.cp-recent__head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 14px; }
.cp-theme .cp-recent__title { display: flex; align-items: center; gap: 10px; margin: 0; color: var(--cp-navy); font-size: 1.2rem; font-weight: 700; line-height: 1.3; letter-spacing: -.01em; }
.cp-recent__title .cp-icon { color: var(--cp-red); }
.cp-recent__clear {
	min-height: 44px;
	padding: 0 16px;
	border: 1px solid #d5dee8;
	border-radius: 999px;
	background: #fff;
	color: var(--cp-navy);
	font-size: .85rem;
	font-weight: 600;
	cursor: pointer;
}
.cp-recent__clear:hover { border-color: var(--cp-navy); background: var(--cp-light); color: var(--cp-navy); }
.cp-recent__list { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 230px), 1fr)); gap: 12px; margin: 0; padding: 0; list-style: none; }
.cp-recent__list li { margin: 0; min-width: 0; }
.cp-recent__item {
	display: flex;
	align-items: center;
	gap: 12px;
	height: 100%;
	min-height: 76px;
	padding: 10px 12px 10px 10px;
	border: 1px solid var(--cp-card-border);
	border-radius: var(--cp-card-radius-sm);
	background: #fff;
	box-shadow: var(--cp-card-shadow);
	color: var(--cp-text);
	text-decoration: none;
	transition: border-color .2s ease, box-shadow .2s ease, transform .2s var(--cp-ease);
}
.cp-recent__item:hover,
.cp-recent__item:focus-visible { border-color: rgb(227 27 35 / 35%); box-shadow: var(--cp-card-shadow-hover); color: var(--cp-text); transform: translateY(-2px); }
.cp-recent__media { display: grid; flex: none; place-items: center; width: 56px; height: 56px; overflow: hidden; border-radius: 10px; background: var(--cp-media-bg, #f5f7fa); color: var(--cp-gray-2); }
.cp-recent__media img { width: 100%; height: 100%; object-fit: contain; }
.cp-recent__text { display: grid; gap: 2px; min-width: 0; }
.cp-recent__text small { overflow: hidden; color: var(--cp-red-dark); font-size: .7rem; font-weight: 700; letter-spacing: .08em; text-overflow: ellipsis; text-transform: uppercase; white-space: nowrap; }
.cp-recent__text strong { display: -webkit-box; overflow: hidden; color: var(--cp-navy); font-size: .92rem; font-weight: 700; line-height: 1.3; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.cp-theme .cp-product-page .cp-recent { padding-top: 0; }
.cp-recent--compact { margin: 0 0 1.75rem; padding: 16px; border: 1px solid #dce5ee; border-radius: 16px; background: #f5f8fb; }
.cp-recent--compact .cp-recent__title { font-size: 1rem; }
.cp-hub.is-filtering .cp-recent { display: none !important; }
@media (max-width: 767px) {
	.cp-recent__list { display: flex; gap: 10px; overflow-x: auto; overscroll-behavior-x: contain; scroll-snap-type: x mandatory; padding-bottom: 8px; scrollbar-width: thin; }
	.cp-recent__list li { flex: 0 0 78%; scroll-snap-align: start; }
}

/* ---------- Request list ---------- */
.cp-add-request[hidden] { display: none !important; }
.cp-theme button.cp-btn.cp-add-request { gap: 8px; border: 2px solid var(--cp-gray); background: #fff; box-shadow: none; color: var(--cp-navy); }
.cp-theme button.cp-btn.cp-add-request:is(:hover, :focus-visible) { border-color: var(--cp-navy); background: var(--cp-navy); color: #fff; }
.cp-theme button.cp-btn.cp-add-request.is-added { border-color: #1a7f45; background: #eef8f2; color: #14663a; }
.cp-theme button.cp-btn.cp-add-request.is-added:is(:hover, :focus-visible) { border-color: #14663a; background: #14663a; color: #fff; }
.cp-request-pill {
	--cp-focus: var(--cp-red-dark);
	position: fixed;
	bottom: 24px;
	left: max(16px, env(safe-area-inset-left, 0px));
	z-index: 1045;
	display: inline-flex;
	align-items: center;
	gap: 10px;
	min-height: 52px;
	padding: 0 8px 0 18px;
	border-radius: 999px;
	background: var(--cp-navy);
	box-shadow: 0 14px 34px rgb(6 26 58 / 30%);
	color: #fff;
	font-size: .92rem;
	font-weight: 700;
	text-decoration: none;
	animation: cp-pill-in .35s var(--cp-ease);
}
.cp-request-pill[hidden] { display: none; }
.cp-request-pill:hover,
.cp-request-pill:focus-visible { background: var(--cp-blue); color: #fff; }
.cp-request-pill .cp-icon { width: 20px; height: 20px; }
.cp-request-pill__count { display: grid; place-items: center; min-width: 36px; height: 36px; padding: 0 8px; border-radius: 999px; background: var(--cp-red-dark); color: #fff; font-weight: 800; font-variant-numeric: tabular-nums; }
@keyframes cp-pill-in { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: none; } }
html:is(.cp-drawer-active, .cp-search-active) .cp-request-pill { visibility: hidden; }
html.cp-has-request-pill .cp-footer { padding-bottom: 96px; }
@media (max-width: 767px) {
	.cp-request-pill { bottom: calc(62px + 12px + env(safe-area-inset-bottom, 0px)); left: 12px; min-height: 46px; padding-left: 14px; font-size: .88rem; }
	.cp-request-pill__count { min-width: 32px; height: 32px; }
}
.cp-request-note {
	display: flex;
	align-items: center;
	gap: 12px;
	margin: 0 0 18px;
	padding: 12px 14px;
	border: 1px solid #b9dcc7;
	border-radius: 14px;
	background: #eef8f2;
	color: #14532d;
	font-size: .92rem;
}
.cp-request-note .cp-icon { flex: none; color: #1a7f45; }
.cp-request-note p { flex: 1 1 auto; margin: 0; }
.cp-request-note__clear { flex: none; min-height: 40px; padding: 0 14px; border: 1px solid #8cc3a2; border-radius: 999px; background: #fff; color: #14532d; font-size: .85rem; font-weight: 700; cursor: pointer; }
.cp-request-note__clear:hover { border-color: #14532d; }

/* ---------- Lightbox (product gallery + Service photos) ---------- */
.cp-lightbox {
	--cp-focus: #fff;
	width: min(1120px, calc(100vw - 24px));
	max-width: none;
	max-height: calc(100dvh - 24px);
	padding: 0;
	overflow: hidden;
	border: 0;
	border-radius: 20px;
	background: #0a1730;
	color: #fff;
}
.cp-lightbox::backdrop { background: rgb(4 18 41 / 86%); }
.cp-lightbox__bar { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 10px 6px 20px; }
.cp-lightbox__count { margin: 0; color: rgb(255 255 255 / 82%); font-size: .88rem; font-weight: 600; font-variant-numeric: tabular-nums; }
.cp-lightbox__close,
.cp-lightbox__nav {
	display: grid;
	place-items: center;
	width: 48px;
	height: 48px;
	padding: 0;
	border: 1px solid rgb(255 255 255 / 24%);
	border-radius: 999px;
	background: rgb(255 255 255 / 10%);
	color: #fff;
	cursor: pointer;
	transition: background-color .2s ease, color .2s ease;
}
.cp-lightbox__close:hover,
.cp-lightbox__nav:hover { background: #fff; color: var(--cp-navy); }
.cp-lightbox__nav[hidden] { display: none; }
.cp-lightbox__nav { position: absolute; top: 50%; margin-top: -24px; }
.cp-lightbox__nav--prev { left: 14px; }
.cp-lightbox__nav--next { right: 14px; }
.cp-lightbox__figure { display: grid; justify-items: center; gap: 12px; margin: 0; padding: 0 76px 20px; }
.cp-lightbox__img { display: block; width: auto; max-width: 100%; height: auto; max-height: calc(100dvh - 24px - 130px); border-radius: 12px; background: #fff; object-fit: contain; }
.cp-lightbox__caption { color: rgb(255 255 255 / 88%); font-size: .95rem; text-align: center; text-wrap: balance; }
.cp-lightbox__caption[hidden] { display: none; }
@media (max-width: 767px) {
	.cp-lightbox__figure { padding: 0 12px 76px; }
	.cp-lightbox__img { max-height: calc(100dvh - 24px - 170px); }
	.cp-lightbox__nav { top: auto; bottom: 14px; margin-top: 0; }
}
/* Service photos: an "enlarge" control over each photo */
.cp-zoomable { position: relative; }
.cp-zoom-btn { position: absolute; inset: 0; z-index: 2; width: 100%; height: 100%; padding: 0; border: 0; border-radius: inherit; background: transparent; cursor: zoom-in; }
.cp-zoom-btn .cp-icon {
	position: absolute;
	right: 12px;
	bottom: 12px;
	width: 42px;
	height: 42px;
	padding: 11px;
	border-radius: 999px;
	background: rgb(255 255 255 / 94%);
	box-shadow: 0 6px 18px rgb(6 26 58 / 22%);
	color: var(--cp-navy);
	opacity: 0;
	transform: scale(.9);
	transition: opacity .2s ease, transform .2s var(--cp-ease);
}
.cp-zoom-btn:is(:hover, :focus-visible) .cp-icon { opacity: 1; transform: none; }
.cp-zoom-btn:focus-visible { outline: 3px solid var(--cp-red-dark); outline-offset: -3px; }
@media (hover: none) { .cp-zoom-btn .cp-icon { opacity: 1; transform: none; } }

/* ---------- Media boxes: skeleton while the photo loads (never a black box) ---------- */
.cp-pcard__media { transition: background-color .35s ease; }
.cp-js .cp-theme .cp-pcard__media:not(.is-loaded),
.cp-js .cp-pcard__media:not(.is-loaded) {
	background: linear-gradient(100deg, rgb(255 255 255 / 0%) 30%, rgb(255 255 255 / 70%) 50%, rgb(255 255 255 / 0%) 70%) 0 0 / 220% 100% no-repeat, #edf1f5;
	animation: cp-shimmer 1.3s linear infinite;
}
@keyframes cp-shimmer { from { background-position: 130% 0, 0 0; } to { background-position: -30% 0, 0 0; } }

/* ---------- Empty states ---------- */
.cp-theme .cp-empty { padding: clamp(28px, 4vw, 44px) 20px; border: 1px dashed #b7c6d6; border-radius: var(--cp-card-radius); background: linear-gradient(180deg, #fff, #f5f8fb); }
.cp-empty__icon { display: inline-grid; place-items: center; width: 56px; height: 56px; margin-bottom: 8px; border-radius: 999px; background: rgb(227 27 35 / 8%); color: var(--cp-red-dark); }
.cp-empty__icon .cp-icon { width: 26px; height: 26px; }
.cp-empty--find { margin-bottom: clamp(2rem, 4vw, 3rem); text-align: center; }
.cp-empty--find .cp-find-note { max-width: 62ch; margin: 0 auto 1.1rem; }
.cp-empty--find p:last-child { margin: 0; }

/* ---------- Service: featured clip checklist on navy (white check on a solid red disc) ---------- */
.cp-theme :is(.cp-section--navy, .cp-card--navy) .cp-checklist .elementor-icon-list-item .elementor-icon-list-icon { background: var(--cp-red); box-shadow: 0 0 0 3px rgb(255 255 255 / 10%); }
.cp-theme :is(.cp-section--navy, .cp-card--navy) .cp-checklist .elementor-icon-list-item .elementor-icon-list-icon svg { fill: #fff !important; }
.cp-theme :is(.cp-section--navy, .cp-card--navy) .cp-checklist .elementor-icon-list-item .elementor-icon-list-icon i { color: #fff !important; }

/* ---------- About: value icons ---------- */
.cp-theme .cp-value-icon .elementor-icon { box-shadow: 0 0 0 6px rgb(227 27 35 / 18%), 0 10px 24px rgb(0 0 0 / 22%); }
.cp-theme .cp-value-icon { margin-bottom: 4px; }

/* ---------- Footer: "Talk to us" strip ---------- */
.cp-footer__talk {
	position: relative;
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 18px 32px;
	margin-bottom: clamp(40px, 5vw, 56px);
	padding: clamp(20px, 3vw, 28px) clamp(20px, 3vw, 32px);
	overflow: hidden;
	border: 1px solid rgb(255 255 255 / 12%);
	border-radius: var(--cp-card-radius);
	background:
		radial-gradient(ellipse 50% 120% at 100% 0%, rgb(227 27 35 / 16%), transparent 70%),
		linear-gradient(120deg, rgb(255 255 255 / 8%), rgb(255 255 255 / 2%));
}
.cp-footer__talk::before { content: ''; position: absolute; top: 0; bottom: 0; left: 0; width: 4px; background: var(--cp-red); }
.cp-footer .cp-footer__talk-eyebrow { margin: 0 0 6px; color: var(--cp-red-light); font-size: .75rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; }
.cp-footer .cp-footer__talk-title { max-width: 40ch; margin: 0; color: #fff; font-size: clamp(1.1rem, 1.6vw, 1.35rem); font-weight: 700; line-height: 1.3; text-wrap: balance; }
.cp-footer__talk-actions { display: flex; flex-wrap: wrap; gap: 10px; }
.cp-theme .cp-footer__talk-actions .cp-btn { display: inline-flex; align-items: center; gap: 8px; }
.cp-theme .cp-footer__talk-actions .cp-btn .cp-icon { width: 18px; height: 18px; }
.cp-theme .cp-footer__talk-actions .cp-btn--ghost { border-color: rgb(255 255 255 / 45%); background: transparent; color: #fff; }
.cp-theme .cp-footer__talk-actions .cp-btn--ghost:hover { border-color: #fff; background: #fff; color: var(--cp-navy); }
@media (max-width: 600px) {
	.cp-footer__talk-actions { width: 100%; }
	.cp-theme .cp-footer__talk-actions .cp-btn { flex: 1 1 100%; justify-content: center; }
}

/* ---------- Motion preferences ---------- */
@media (prefers-reduced-motion: reduce) {
	.cp-mega, .cp-mega.is-visible, .cp-search-panel, .cp-search-panel.is-open { transform: none; transition: none; }
	.cp-mega.is-visible { transform: translate(-50%, 0); }
	.cp-brand-tile, .cp-recent__item, .cp-zoom-btn .cp-icon, .cp-nav__sub-toggle .cp-icon { transition: none; }
	.cp-brand-tile:hover, .cp-recent__item:hover { transform: none; }
	.cp-request-pill { animation: none; }
	.cp-js .cp-pcard__media:not(.is-loaded), .cp-js .cp-theme .cp-pcard__media:not(.is-loaded) { animation: none; }
	.cp-suggest-busy::after { animation-duration: 2s; }
}

/* ---------- Print: product pages print as a clean spec sheet ---------- */
.cp-print-head { display: none; }
@media print {
	@page { margin: 14mm 12mm; }
	html, body.cp-theme { padding: 0 !important; background: #fff !important; color: #000 !important; }
	.cp-topbar, .cp-header, .cp-footer, .cp-mobile-bar, .cp-to-top, .cp-request-pill, .cp-prod-sticky, .cp-prod-nav,
	.cp-gallery__thumbs, .cp-gallery__zoom, .cp-actions, .cp-prod-summary__call, .cp-prod-summary__brand, .cp-cat-cta,
	.cp-recent, .cp-lightbox, .cp-search-panel, #wpadminbar, .cp-skip-link, .skip-link,
	.cp-product-page section:has(#cp-related-title) { display: none !important; }
	.cp-reveal { opacity: 1 !important; transform: none !important; }
	.cp-print-head { display: flex !important; flex-wrap: wrap; justify-content: space-between; gap: 4pt 16pt; margin: 0 0 12pt; padding-bottom: 6pt; border-bottom: 2pt solid #000; font-size: 9pt; }
	.cp-product-page .cp-prod-top { padding: 0; border: 0; background: none; }
	.cp-product-page .cp-prod-top { display: none !important; }
	.cp-product-page a:not(.cp-spec-download)::after { content: none !important; }
	.cp-product-page .cp-cat-section { padding: 0 0 12pt !important; background: none !important; }
	.cp-product-page .cp-wrap { max-width: none; padding: 0; }
	.cp-product-page .cp-prod-main__grid { display: grid; grid-template-columns: 34% 1fr; gap: 14pt; align-items: start; }
	.cp-product-page .cp-gallery { position: static; }
	.cp-product-page .cp-gallery__stage { aspect-ratio: auto; border: 1pt solid #ccc; border-radius: 6pt; background: #fff !important; box-shadow: none; }
	.cp-product-page .cp-gallery__slide { position: static; padding: 6pt; background: #fff !important; }
	.cp-product-page .cp-gallery__slide[hidden] { display: none; }
	.cp-product-page .cp-gallery__slide img { height: auto; max-height: 60mm; }
	.cp-product-page .cp-badge { display: none; }
	.cp-product-page .cp-prod-summary__title { font-size: 18pt !important; margin-bottom: 8pt !important; }
	.cp-product-page .cp-prod-meta { display: flex !important; flex-wrap: wrap; gap: 4pt; border: 0 !important; }
	.cp-product-page .cp-prod-meta > div { display: block !important; padding: 3pt 6pt; border: 1pt solid #bbb !important; border-radius: 3pt; background: none; }
	.cp-product-page .cp-prod-details__grid { display: block; }
	.cp-product-page .cp-prod-details__specs { margin-top: 12pt; padding: 0; border: 0; box-shadow: none; break-inside: avoid; }
	.cp-product-page .cp-spec-table th, .cp-product-page .cp-spec-table td { padding: 3pt 6pt; border: 1pt solid #bbb; font-size: 9.5pt; }
	.cp-product-page .cp-spec-table th { width: 38%; background: #f2f2f2 !important; }
	.cp-product-page .cp-spec-download::after { content: ' — ' attr(href); font-size: 8pt; word-break: break-all; }
	.cp-product-page .cp-tag-list li { padding: 1pt 5pt; border: 1pt solid #bbb; }
	.cp-product-page .cp-note { border: 1pt solid #bbb; border-left-width: 3pt; }
	.cp-product-page :is(h1, h2, h3) { color: #000 !important; break-after: avoid; }
	.cp-product-page a { color: #000 !important; text-decoration: none; }
	.cp-product-page .cp-check-list .cp-icon { background: none; color: #000; }
}
