/* 
Theme Name: Hello Elementor Child
Theme URI: https://github.com/elementor/hello-theme-child/
Description: Hello Elementor Child is a child theme of Hello Elementor, created by Elementor team
Author: Elementor Team
Author URI: https://elementor.com/
Template: hello-elementor
Version: 2.0.12
Text Domain: hello-elementor-child
License: GNU General Public License v3 or later.
License URI: https://www.gnu.org/licenses/gpl-3.0.html
Tags: flexible-header, custom-colors, custom-menu, custom-logo, editor-style, featured-images, rtl-language-support, threaded-comments, translation-ready
*/

/*
子主题 style.css 维护约定
生效时间：2026-03-23
适用范围：themes/hello-theme-child/style.css 全文件

1. 凡是新增 CSS 代码块，必须先写详细中文注释，至少包含：
   - 作用域：页面、section、组件名，或对应手动 class。
   - 责任归属：widget 自身 / 父容器自身 / 跨元素关系。
   - 添加原因：为什么 Elementor 原生不能稳定表达，或为什么需要沉淀到主题 CSS。
   - 添加时间：使用 YYYY-MM-DD。

2. 凡是新增 @font-face、字体文件、或新的 font-family 引用，必须先确认测试网站
   没有通过其他方式重复加载同一字体，例如 Elementor Custom Fonts、
   Elementor Global Fonts、主题代码或插件代码；并把核查结论和核查时间写进注释。

3. 未满足以上两条的新增内容，不得直接追加到本文件。
*/

/*
整理说明：
2026-03-23 已按“全站共享 / 页面 / 组件”重新整理存量样式，并为主要样式段补齐中文注释。
后续新增样式必须沿用当前分段方式，不得回退到无注释堆叠写法。
*/

/*
作用域：全站共享字体注册，仅保留主题层仍需要自行提供的字重。
责任归属：widget 自身。
添加原因：2026-03-23 清理 style.css 时核查测试网站字体来源，确认 `Apotek Extra Condensed Bold`、`Acumin Pro Regular`、`Acumin Pro Bold` 已由 Elementor Custom Fonts 在多个页面重复输出；为避免主题 CSS 再次注册同名字体，本文件移除了这 3 条重复 `@font-face`，仅保留未发现重复来源的 `Apotek Extra Condensed Light`。
添加时间：2026-03-23（存量样式清理）。
字体核查：2026-03-23 检查 `https://bldr.wper8.com/`、`/who-we-are/`、`/location-finder/`、`/privacy-policy/`、`/terms-of-use/` 页面输出，确认 Elementor Custom Fonts 正在加载 `Apotek Extra Condensed Bold`、`Acumin Pro Regular`、`Acumin Pro Bold`；未发现 `Apotek Extra Condensed Light` 的重复输出证据。
*/
@font-face {
  font-family: "Apotek Extra Condensed Light";
  src:
    url("assets/fonts/Apotek-Extra-Condensed-Light.woff2") format("woff2"),
    url("assets/fonts/Apotek-Extra-Condensed-Light.woff") format("woff");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

/*
作用域：全站可复用的宽屏副标题 heading，绑定 `.page-subtitle-wide`。
责任归属：widget 自身。
添加原因：该段为存量复用样式，负责在超宽桌面端统一放大 section 副标题，避免每个页面分别覆盖同一组字号参数。
添加时间：2026-03-23（存量样式清理）。
*/
@media (min-width: 1440px) {
  .page-subtitle-wide.elementor-widget-heading .elementor-heading-title {
    font-size: 44px !important;
    line-height: 44px !important;
    letter-spacing: 0.05em !important;
  }
}

/*
作用域：Who We Are 页面地图 CTA 区块，绑定 `.jdw-map-cta*`。
责任归属：父容器自身 + widget 自身。
添加原因：该段为存量兼容样式，负责图片自适应和桌面端内容留白，保证 CTA 区块在现有页面结构下维持既有几何结果。
添加时间：2026-03-23（存量样式清理）。
*/
.jdw-map-cta__media img {
  display: block;
  width: 100%;
  height: auto;
}

@media (min-width: 1200px) {
  .jdw-map-cta {
    margin-bottom: 80px !important;
  }

  .jdw-map-cta__copy {
    --padding-left: 80px !important;
    --padding-right: 80px !important;
  }
}

/*
作用域：Who We Are 页面 SPICE 文本 section，绑定 `.jdw-spice-section__inner`。
责任归属：widget 自身。
添加原因：该段为存量兼容样式，负责跨断点的正文字号切换，避免当前页面复刻结果因文本密度变化而走样。
添加时间：2026-03-23（存量样式清理）。
*/
.jdw-spice-section__inner {
  font-size: 18px;
}

@media (max-width: 1024px) {
  .jdw-spice-section__inner {
    font-size: 16px;
  }
}

/*
作用域：Who We Are 页面价值观卡片区，绑定 `.jdw-feature-cards` / `.jdw-feature-card*`。
责任归属：父容器自身 + 跨元素关系。
添加原因：该段为存量兼容样式，负责等高拉伸、卡片角标、SVG 图标裁切与响应式列间距，这些关系型样式集中在主题 CSS 中更稳定。
添加时间：2026-03-23（存量样式清理）。
*/
.jdw-feature-cards > .elementor-container {
  align-items: stretch;
}

.jdw-feature-cards > .elementor-container > .jdw-feature-card {
  display: flex;
  align-self: stretch;
}

.jdw-feature-card > .elementor-widget-wrap {
  position: relative;
  display: flex;
  flex: 1 1 auto;
  flex-direction: column;
  flex-wrap: nowrap;
  justify-content: flex-start;
  height: 100%;
  overflow: visible;
}

.jdw-feature-card > .elementor-widget-wrap::after {
  content: "";
  position: absolute;
  right: 0;
  bottom: 0;
  width: 80px;
  height: 80px;
  background: #002058;
  clip-path: polygon(100% 0%, 0% 100%, 100% 100%);
  pointer-events: none;
  z-index: 0;
}

.jdw-feature-card > .elementor-widget-wrap > .elementor-element {
  position: relative;
  z-index: 1;
}

.jdw-feature-card__icon,
.jdw-feature-card__icon .elementor-widget-container,
.jdw-feature-card__icon svg {
  overflow: visible;
}

.jdw-feature-card__icon .elementor-widget-container {
  display: flex;
  align-items: center;
  height: 75px;
  padding-bottom: 6px;
}

.jdw-feature-card__icon svg {
  display: block;
  width: auto;
  height: 75px;
}

.jdw-feature-card__icon--vision svg {
  height: 52px;
}

@media (max-width: 767px) {
  .jdw-feature-cards > .elementor-container > .jdw-feature-card {
    width: 100%;
    max-width: 700px;
    margin: 0 auto 40px;
  }

  .jdw-feature-cards > .elementor-container > .jdw-feature-card:last-child {
    margin-bottom: 0;
  }
}

@media (min-width: 768px) and (max-width: 1024px) {
  .jdw-feature-cards > .elementor-container {
    margin-left: -10px;
    margin-right: -10px;
  }

  .jdw-feature-cards > .elementor-container > .jdw-feature-card {
    padding-left: 10px;
    padding-right: 10px;
  }
}

@media (min-width: 1025px) {
  .jdw-feature-cards > .elementor-container {
    margin-left: -20px;
    margin-right: -20px;
  }

.jdw-feature-cards > .elementor-container > .jdw-feature-card {
    padding-left: 20px;
    padding-right: 20px;
  }
}

/*
作用域：`Catalogs & Literature` 自定义归档模板，绑定 `.jdw-catalogs-literature-page` 及其内部稳定类。
责任归属：父容器自身 + widget 自身 + 跨元素关系。
添加原因：该页面明确要求使用子主题自定义文章归档模板而非 Elementor。目标站的 hero 高度、灰底 intro/filter band、2/4/5 列资源网格、分页、卡片 hover 与 `category/brand/page` 过滤都依赖模板结构之间的关系表达，无法通过单个 widget 或单个容器自身样式稳定复用，只能沉淀到主题 CSS。
添加时间：2026-04-07。
*/
.jdw-catalogs-literature-page {
  color: #002058;
}

.jdw-catalogs-literature-page,
.jdw-catalogs-literature-page *,
.jdw-catalogs-literature-page *::before,
.jdw-catalogs-literature-page *::after {
  box-sizing: border-box;
}

.jdw-catalogs-literature-page__hero-image {
  width: 100%;
  height: 250px;
  background-position: center center;
  background-repeat: no-repeat;
  background-size: cover;
}

.jdw-catalogs-literature-page__intro,
.jdw-catalogs-literature-page__filters {
  background: #d8d8d8;
}

.jdw-catalogs-literature-page__intro .twoColumnContent {
  margin-top: 0;
  margin-bottom: 40px;
  padding-top: 40px;
}

.jdw-catalogs-literature-page__intro .content:last-child {
  padding-left: 20px;
  padding-right: 20px;
}

.jdw-catalogs-literature-page .twoColumnContent .page-subtitle {
  margin-bottom: 20px;
  text-align: left;
  font-family: "Apotek Extra Condensed Bold", Helvetica, Arial, sans-serif;
  font-size: 32px;
  line-height: 32px;
  letter-spacing: 0.05em;
  color: #002058;
}

.jdw-catalogs-literature-page .twoColumnContent .page-subtitle h1 {
  margin: 0;
  font-size: inherit;
  line-height: inherit;
  font-weight: normal;
}

.jdw-catalogs-literature-page .twoColumnContent .content {
  padding-left: 20px;
  padding-right: 20px;
  font-family: "Acumin Pro Regular", Helvetica, Arial, sans-serif;
  font-size: 16px;
  line-height: 24px;
  color: #002058;
}

.jdw-catalogs-literature-page .sub-heading {
  margin: 20px 0 0;
  padding-bottom: 20px;
  font-family: "Acumin Pro Bold", Helvetica, Arial, sans-serif;
  font-size: 22px;
  line-height: 33px;
  color: #002058;
}

.jdw-catalogs-literature-page .literature-search-form .fields > div {
  padding: 0 20px 30px;
}

.jdw-catalogs-literature-page .literature-search-form .fields label {
  display: block;
  margin-bottom: 6px;
  font-family: "Acumin Pro Bold", Helvetica, Arial, sans-serif;
  font-size: 12px;
  line-height: 1.2;
  color: #002058;
}

.jdw-catalogs-literature-page .literature-search-form .fields select {
  width: 100%;
  height: 36px;
  padding: 0 40px 0 10px;
  border: 1px solid #002058;
  border-radius: 0;
  outline: 0;
  appearance: none;
  -webkit-appearance: none;
  background: #ffffff url("assets/images/icon-arrow.png") no-repeat center right;
  background-size: 40px;
  font-family: "Acumin Pro Regular", Helvetica, Arial, sans-serif;
  font-size: 16px;
  color: #002058;
}

.jdw-catalogs-literature-page .literature-page-status {
  display: flex;
  justify-content: space-between;
  gap: 20px;
  max-width: 1800px;
  margin: 0 auto;
  padding: 30px 30px 20px;
  font-family: "Acumin Pro Bold", Helvetica, Arial, sans-serif;
  font-size: 16px;
  line-height: 1.2;
}

.jdw-catalogs-literature-page .literature-items {
  display: flex;
  flex-wrap: wrap;
  max-width: 1845px;
  margin: 0 auto;
  padding: 10px;
}

.jdw-catalogs-literature-page .literature-items > .literature {
  flex: 1 1 50%;
  min-width: 50%;
  max-width: 50%;
  padding: 0 10px 60px;
}

.jdw-catalogs-literature-page .literature-items > .literature > .bannerWithDescription {
  width: 100%;
  max-width: 220px;
  margin: 0 auto;
}

.jdw-catalogs-literature-page .bannerWithDescription .image {
  border: 1px solid #0a0a0a;
}

.jdw-catalogs-literature-page .bannerWithDescription .responsive-banner {
  overflow: hidden;
}

.jdw-catalogs-literature-page .bannerWithDescription .responsive-banner > span {
  display: block;
  width: 100%;
  padding-top: 130%;
  background-position: center center;
  background-repeat: no-repeat;
  background-size: cover;
  transition: transform 0.2s ease-in-out;
}

.jdw-catalogs-literature-page .bannerWithDescription .image a:hover .responsive-banner {
  box-shadow: 0 5px 15px 0 rgba(0, 0, 0, 0.5);
}

.jdw-catalogs-literature-page .bannerWithDescription .image a:hover .responsive-banner > span {
  transform: scale(1.05);
}

.jdw-catalogs-literature-page .bannerWithDescription .category {
  padding: 20px 0 5px;
  font-family: "Acumin Pro Bold", Helvetica, Arial, sans-serif;
  font-size: 13px;
  line-height: 1.1;
  color: #002058;
}

.jdw-catalogs-literature-page .bannerWithDescription .headline {
  padding-top: 0;
  padding-bottom: 0;
  font-family: "Acumin Pro Bold", Helvetica, Arial, sans-serif;
  font-size: 18px;
  line-height: 1.25;
  word-break: break-word;
}

.jdw-catalogs-literature-page .bannerWithDescription .headline a,
.jdw-catalogs-literature-page .bannerWithDescription .headline span {
  color: #002058;
  text-decoration: none;
}

.jdw-catalogs-literature-page .literature-pagination {
  margin: 0 auto 60px;
  text-align: center;
}

.jdw-catalogs-literature-page .literature-pagination > div {
  display: flex;
}

.jdw-catalogs-literature-page .literature-pagination > div > div {
  flex: 1 1 auto;
}

.jdw-catalogs-literature-page .literature-pagination a,
.jdw-catalogs-literature-page .literature-pagination span {
  display: block;
  height: 30px;
  line-height: 34px;
}

.jdw-catalogs-literature-page .literature-pagination a {
  color: #003087;
}

.jdw-catalogs-literature-page .literature-pagination .selected,
.jdw-catalogs-literature-page .literature-pagination .current {
  font-family: "Acumin Pro Bold", Helvetica, Arial, sans-serif;
}

.jdw-catalogs-literature-page .literature-pagination .disabled {
  color: #a7a8a9;
  cursor: not-allowed;
}

.jdw-catalogs-literature-page__empty {
  max-width: 900px;
  margin: 0 auto;
  padding: 40px 20px 80px;
  text-align: center;
}

.jdw-catalogs-literature-page__empty h2 {
  margin: 0 0 12px;
  font-family: "Acumin Pro Bold", Helvetica, Arial, sans-serif;
  font-size: 28px;
  line-height: 1.1;
  color: #002058;
}

.jdw-catalogs-literature-page__empty p {
  margin: 0;
  font-family: "Acumin Pro Regular", Helvetica, Arial, sans-serif;
  font-size: 16px;
  line-height: 24px;
  color: #002058;
}

@media (min-width: 768px) {
  .jdw-catalogs-literature-page__hero-image {
    height: 400px;
  }

  .jdw-catalogs-literature-page .twoColumnContent {
    display: flex;
  }

  .jdw-catalogs-literature-page .twoColumnContent .headline {
    flex: 1 1 40%;
    min-width: 40%;
    max-width: 40%;
    padding-left: 40px;
    padding-right: 5%;
  }

  .jdw-catalogs-literature-page .twoColumnContent .page-subtitle {
    max-width: 390px;
    margin-bottom: 0;
  }

  .jdw-catalogs-literature-page .twoColumnContent .content {
    padding-left: 0;
    flex: 1 1 auto;
    padding-right: 20px;
  }

  .jdw-catalogs-literature-page__intro .content:last-child,
  .jdw-catalogs-literature-page .literature-search-form {
    padding-left: 40px;
    padding-right: 40px;
  }

  .jdw-catalogs-literature-page .literature-search-form .fields {
    display: flex;
    flex-wrap: wrap;
    margin-left: -20px;
  }

  .jdw-catalogs-literature-page .literature-search-form .fields > div {
    flex: 1 1 50%;
    min-width: 50%;
  }

  .jdw-catalogs-literature-page .literature-items > .literature {
    flex: 1 1 25%;
    min-width: 25%;
    max-width: 25%;
  }

  .jdw-catalogs-literature-page .literature-pagination > div {
    display: inline-flex;
  }

  .jdw-catalogs-literature-page .literature-pagination a,
  .jdw-catalogs-literature-page .literature-pagination span {
    padding: 0 30px;
  }
}

@media (min-width: 992px) {
  .jdw-catalogs-literature-page .twoColumnContent .page-subtitle {
    font-size: 40px;
    line-height: 40px;
  }

  .jdw-catalogs-literature-page .twoColumnContent .headline {
    padding-left: 6.5%;
  }

  .jdw-catalogs-literature-page .twoColumnContent .content {
    padding-right: 10%;
    font-size: 18px;
    line-height: 27px;
  }

  .jdw-catalogs-literature-page .sub-heading,
  .jdw-catalogs-literature-page .literature-search-form,
  .jdw-catalogs-literature-page__intro .content:last-child {
    padding-left: 6.5%;
    padding-right: 6.5%;
  }
}

@media (min-width: 1200px) {
  .jdw-catalogs-literature-page .literature-items > .literature {
    flex: 1 1 20%;
    min-width: 20%;
    max-width: 20%;
  }

  .jdw-catalogs-literature-page .bannerWithDescription .headline {
    font-size: 20px;
  }

  .jdw-catalogs-literature-page .bannerWithDescription .category {
    font-size: 15px;
  }
}

@media (min-width: 1440px) {
  .jdw-catalogs-literature-page .twoColumnContent .page-subtitle {
    font-size: 44px;
    line-height: 44px;
  }

  .jdw-catalogs-literature-page .literature-search-form .fields > div {
    min-width: 0;
    max-width: 650px;
  }

  .jdw-catalogs-literature-page .literature-page-status {
    padding-left: 65px;
    padding-right: 65px;
  }
}

/*
作用域：首页统计区块，绑定 `.jdw-home-stats*`。
责任归属：父容器自身 + widget 自身 + 跨元素关系。
添加原因：该段为存量兼容样式，负责统计区的横向分栏、分隔线、字号体系与断点间距，避免清理过程中影响现有首页版式。
添加时间：2026-03-23（存量样式清理）。
*/
.jdw-home-stats {
  margin-top: 30px;
  margin-right: 20px;
  margin-left: 20px;
  padding: 0 20px;
  width: auto;
}

.jdw-home-stats__heading .elementor-heading-title {
  margin: 0;
  padding: 20px 0;
  color: #002058;
  font-family: "Apotek Extra Condensed Bold", Helvetica, Arial, sans-serif;
  font-size: 31px;
  line-height: 35px;
  letter-spacing: 0.05em;
  font-weight: 400;
}

.jdw-home-stats__body {
  color: #002058;
  font-family: "Acumin Pro Regular", Helvetica, Arial, sans-serif;
  font-size: 18px;
  line-height: 27px;
}

.jdw-home-stats__body p {
  margin: 0 0 13.5px !important;
  color: #002058;
  font-family: "Acumin Pro Regular", Helvetica, Arial, sans-serif;
  font-size: 18px !important;
  line-height: 27px !important;
}

.jdw-home-stats__list {
  margin: 20px 0;
}

.jdw-home-stats__item.e-con.e-flex {
  flex: 1 0 auto;
  width: auto;
  max-width: none;
  min-width: 0;
  position: relative;
  text-align: center;
}

.jdw-home-stats__item::after {
  border-left: 1px solid #002058;
  content: "";
  position: absolute;
  right: 0;
  top: 0;
  height: 100%;
}

.jdw-home-stats__item:last-child::after {
  border-left: 0;
}

.jdw-home-stats__number .elementor-heading-title,
.jdw-home-stats__label .elementor-heading-title {
  margin: 0;
  color: #002058;
  font-family: "Apotek Extra Condensed Light", Helvetica, Arial, sans-serif;
  font-weight: 400;
  letter-spacing: 0.05em;
}

.jdw-home-stats__number .elementor-heading-title {
  font-size: 40px;
  line-height: 60px;
}

.jdw-home-stats__label .elementor-heading-title {
  display: block;
  font-size: 18px;
  line-height: 27px;
}

@media (min-width: 992px) {
  .jdw-home-stats {
    margin-top: 50px;
    padding: 0 50px 0 100px;
  }

  .jdw-home-stats__copy {
    padding-right: 50px;
  }

  .jdw-home-stats__list {
    --align-items: center;
  }

  .jdw-home-stats__number .elementor-heading-title {
    font-size: 70px;
    line-height: 105px;
  }

  .jdw-home-stats__label .elementor-heading-title {
    font-size: 20px;
    line-height: 30px;
  }
}

@media (min-width: 1200px) {
  .jdw-home-stats {
    padding: 0 80px 0 170px;
  }
}

@media (max-width: 767px) {
  .jdw-home-stats__body,
  .jdw-home-stats__body p {
    font-size: 16px !important;
    line-height: 24px !important;
  }

  .jdw-home-stats__body p {
    margin-bottom: 0 !important;
  }

  .jdw-home-stats__list {
    margin-bottom: 0;
    padding-bottom: 12.5px;
  }
}

/*
作用域：首页通栏图文 section 与 ReadyFrame 轮播，绑定 `.jdw-home-band*` / `.jdw-home-readyframe*` / `.jdw-home-viewall`。
责任归属：父容器自身 + 跨元素关系。
添加原因：该段为存量兼容样式，负责图文 band 的媒体拉伸、暗浅主题切换、视频播放按钮和轮播控件统一外观。
添加时间：2026-03-23（存量样式清理）。
*/
.jdw-home-band {
  margin-bottom: 40px;
}

.jdw-home-band.e-con {
  --flex-wrap: wrap;
}

.jdw-home-band > .jdw-home-band__media,
.jdw-home-band > .jdw-home-band__copy {
  width: 100%;
  max-width: 100%;
  min-width: 0;
}

.jdw-home-band__media.e-con,
.jdw-home-band__copy.e-con {
  --padding-top: 0 !important;
  --padding-right: 0 !important;
  --padding-bottom: 0 !important;
  --padding-left: 0 !important;
}

.jdw-home-band__copy {
  padding: 40px 20px;
}

.jdw-home-band--dark .jdw-home-band__copy {
  background-color: #002058;
  color: #ffffff;
}

.jdw-home-band__title .elementor-heading-title {
  margin: 0;
  font-family: "Apotek Extra Condensed Bold", Helvetica, Arial, sans-serif;
  font-size: 32px;
  line-height: 32px;
  letter-spacing: 1.6px;
  font-weight: 400;
}

.jdw-home-band__body .elementor-text-editor,
.jdw-home-band__body .elementor-text-editor p {
  margin: 0;
  font-family: "Acumin Pro Regular", Helvetica, Arial, sans-serif;
  font-size: 16px;
  line-height: 24px;
}

.jdw-home-band__body .elementor-text-editor p + p {
  margin-top: 1em;
}

.jdw-home-band--dark .jdw-home-band__title .elementor-heading-title,
.jdw-home-band--dark .jdw-home-band__body .elementor-text-editor,
.jdw-home-band--dark .jdw-home-band__body .elementor-text-editor p {
  color: #ffffff;
}

.jdw-home-band--light .jdw-home-band__title .elementor-heading-title,
.jdw-home-band--light .jdw-home-band__body .elementor-text-editor,
.jdw-home-band--light .jdw-home-band__body .elementor-text-editor p {
  color: #002058;
}

.jdw-home-band__button .elementor-button {
  min-width: 0;
  white-space: normal;
}

.jdw-home-band__video-widget,
.jdw-home-band__video-widget > .elementor-widget-container,
.jdw-home-band__video-widget .elementor-wrapper,
.jdw-home-band__video-widget .elementor-custom-embed-image-overlay {
  height: 100%;
}

.jdw-home-band__video-widget .elementor-wrapper {
  position: relative;
  overflow: hidden;
}

.jdw-home-band__video-widget .elementor-custom-embed-image-overlay {
  position: relative;
  display: block;
}

.jdw-home-band__video-widget .elementor-custom-embed-image-overlay img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.jdw-home-band__video-widget .elementor-custom-embed-play {
  position: absolute;
  top: 50%;
  left: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 80px;
  height: 80px;
  border-radius: 50%;
  background: #ffffff;
  box-shadow: 0 5px 15px rgba(0, 0, 0, 0.25);
  transform: translate(-50%, -50%) scale(1);
  transition: transform 0.3s ease;
}

.jdw-home-band__video-widget .elementor-custom-embed-play i,
.jdw-home-band__video-widget .elementor-custom-embed-play svg {
  color: #002058;
  fill: #002058;
}

.jdw-home-band__video-widget .elementor-custom-embed-play i {
  font-size: 26px;
  line-height: 1;
}

.jdw-home-band__video-widget .elementor-custom-embed-play svg {
  width: 26px;
  height: 26px;
  flex: 0 0 26px;
}

.jdw-home-band__video-widget:hover .elementor-custom-embed-play {
  transform: translate(-50%, -50%) scale(1.175);
}

.jdw-home-band--readyframe > .jdw-home-band__media {
  min-height: 320px;
}

.jdw-home-readyframe__carousel,
.jdw-home-readyframe__carousel > .elementor-widget-container,
.jdw-home-readyframe__carousel .elementor-image-carousel-wrapper,
.jdw-home-readyframe__carousel .swiper,
.jdw-home-readyframe__carousel .swiper-wrapper,
.jdw-home-readyframe__carousel .swiper-slide,
.jdw-home-readyframe__carousel figure {
  height: 100%;
}

.jdw-home-readyframe__carousel .swiper-slide {
  display: flex;
  align-items: stretch;
}

.jdw-home-readyframe__carousel .swiper-slide-image {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.jdw-home-readyframe__carousel .content-carousel-component,
.jdw-home-readyframe__carousel .slides,
.jdw-home-readyframe__carousel .slick-list,
.jdw-home-readyframe__carousel .slick-track,
.jdw-home-readyframe__carousel .slick-slide,
.jdw-home-readyframe__carousel .slick-slide > div,
.jdw-home-readyframe__carousel .slide,
.jdw-home-readyframe__carousel .bannerContentBox,
.jdw-home-readyframe__carousel .image,
.jdw-home-readyframe__carousel .item,
.jdw-home-readyframe__carousel .responsive-banner {
  height: 100%;
}

.jdw-home-readyframe__carousel .slick-track {
  align-items: stretch;
}

.jdw-home-readyframe__carousel .jdw-content-slides-carousel__image {
  display: block;
  width: 100%;
  height: 100%;
  min-height: 100%;
  padding-top: 0;
  background-position: center center;
  background-size: cover;
}

.jdw-home-readyframe__carousel .elementor-swiper-button {
  width: 50px;
  height: 50px;
  background: #c8102e;
  color: #ffffff;
}

.jdw-home-readyframe__carousel .elementor-swiper-button:hover,
.jdw-home-readyframe__carousel .elementor-swiper-button:focus {
  background: #820014;
  color: #ffffff;
}

.jdw-home-readyframe__carousel .elementor-swiper-button svg {
  fill: currentColor;
}

.jdw-home-readyframe__carousel .slick-prev,
.jdw-home-readyframe__carousel .slick-next {
  background: #c8102e;
}

.jdw-home-readyframe__carousel .slick-prev:hover,
.jdw-home-readyframe__carousel .slick-next:hover,
.jdw-home-readyframe__carousel .slick-prev:focus,
.jdw-home-readyframe__carousel .slick-next:focus {
  background: #820014;
}

.jdw-home-readyframe__carousel .swiper-pagination {
  bottom: -40px !important;
}

.jdw-home-readyframe__carousel .slick-dots {
  bottom: -40px;
}

.jdw-home-readyframe__carousel .swiper-pagination-bullet {
  width: 70px;
  height: 4px;
  border-radius: 0;
  background: #a7a8a9;
  opacity: 1;
}

.jdw-home-readyframe__carousel .swiper-pagination-bullet-active {
  background: #002058;
}

.jdw-home-readyframe__carousel .slick-dots li.slick-active::before {
  background: #002058;
}

.jdw-home-viewall {
  margin-top: -20px;
  margin-bottom: 10px;
}

.jdw-home-viewall .elementor-widget-container {
  text-align: center;
}

/*
作用域：首页 Greener future 计数横幅，绑定 `.jdw-home-greener*`。
责任归属：父容器自身 + widget 自身。
添加原因：该段为存量兼容样式，负责大数字横幅、叠层文案与说明文字的排版节奏，保持首页该 section 的既有视觉层次。
添加时间：2026-03-23（存量样式清理）。
*/
.jdw-home-greener {
  margin-top: 54px;
  margin-bottom: 40px;
}

.jdw-home-greener__heading .elementor-heading-title {
  margin: 0;
  padding: 0;
  color: #002058;
  font-family: "Apotek Extra Condensed Bold", Helvetica, Arial, sans-serif;
  font-size: 44px;
  line-height: 44px;
  letter-spacing: 1.6px;
  font-weight: 400;
  text-align: center;
}

.jdw-home-greener__hero {
  margin-top: 30px;
  color: #ffffff;
  text-align: center;
  text-shadow: 2px 2px 3px #000000;
}

.jdw-home-greener__hero .elementor-background-overlay {
  background: transparent;
}

.jdw-home-greener__inner {
  position: relative;
  z-index: 1;
  padding: 30px 20px;
}

.jdw-home-greener__eyebrow .elementor-text-editor,
.jdw-home-greener__eyebrow .elementor-text-editor p {
  margin: 0 auto;
  max-width: 1200px;
  color: #ffffff;
  font-family: "Acumin Pro Regular", Helvetica, Arial, sans-serif;
  font-size: 28px;
  line-height: 1.2;
}

.jdw-home-greener__count .jdw-home-trees-saved-count {
  display: block;
  color: #ffffff;
  font-family: "Apotek Extra Condensed Bold", Helvetica, Arial, sans-serif;
  font-size: 50px;
  line-height: 1;
  letter-spacing: 0.05em;
  font-weight: 400;
}

.jdw-home-greener__caption .elementor-heading-title {
  margin: 0;
  color: #ffffff;
  font-family: "Apotek Extra Condensed Bold", Helvetica, Arial, sans-serif;
  font-size: 35px;
  line-height: 1.2;
  letter-spacing: 0.05em;
  font-weight: 400;
}

.jdw-home-greener__disclaimer,
.jdw-home-greener__disclaimer p {
  margin: 0;
  color: #002058;
  font-family: "Acumin Pro Regular", Helvetica, Arial, sans-serif;
  font-size: 14px;
  line-height: 1.5;
}

.jdw-home-greener__disclaimer .elementor-text-editor p + p {
  margin-top: 1em;
}

.jdw-home-greener__disclaimer a {
  color: #003087;
}

/*
作用域：首页 Transform 卡片区，绑定 `.jdw-home-transform*` / `.jdw-home-transform-card*`。
责任归属：父容器自身 + widget 自身 + 跨元素关系。
添加原因：该段为存量兼容样式，负责卡片 hover 放大、图片裁切、标题与链接排版，避免清理时破坏该区块的交互反馈。
添加时间：2026-03-23（存量样式清理）。
*/
.jdw-home-transform {
  margin-bottom: 20px;
  padding-bottom: 40px;
  background: #f0f0f0;
}

.jdw-home-transform__heading .elementor-heading-title {
  margin: 0;
  padding: 30px 20px 0;
  color: #002058;
  font-family: "Apotek Extra Condensed Bold", Helvetica, Arial, sans-serif;
  font-size: 32px;
  line-height: 32px;
  letter-spacing: 1.6px;
  font-weight: 400;
  text-align: center;
}

.jdw-home-transform-card {
  height: 100%;
  background: #ffffff;
}

.jdw-home-transform-card__media {
  position: relative;
  overflow: hidden;
  line-height: 0;
  padding-top: 56.25%;
}

.jdw-home-transform-card__media a {
  display: block;
  width: 100%;
  height: 100%;
  position: absolute;
  inset: 0;
}

.jdw-home-transform-card__media img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition:
    transform 0.2s ease-in-out,
    box-shadow 0.2s ease-in-out;
}

.jdw-home-transform-card__media a:hover img,
.jdw-home-transform-card__media a:focus img {
  transform: scale(1.05);
  box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
}

.jdw-home-transform-card__title .elementor-heading-title,
.jdw-home-transform-card__title .elementor-heading-title a {
  margin: 0;
  color: #002058;
  font-family: "Acumin Pro Bold", Helvetica, Arial, sans-serif;
  font-size: 22px;
  line-height: 1.25;
  font-weight: 400;
  text-decoration: none;
}

.jdw-home-transform-card__body,
.jdw-home-transform-card__body p {
  margin: 0;
  color: #002058;
  font-family: "Acumin Pro Regular", Helvetica, Arial, sans-serif;
  font-size: 18px;
  line-height: 27px;
}

.jdw-home-transform-card__body p + p {
  margin-top: 1em;
}

.jdw-home-transform-card__link .elementor-heading-title,
.jdw-home-transform-card__link .elementor-heading-title a {
  margin: 0;
  color: #003087;
  font-family: "Acumin Pro Regular", Helvetica, Arial, sans-serif;
  font-size: 18px;
  line-height: 27px;
  font-weight: 400;
  text-decoration: underline;
}

.jdw-home-transform-card__link .elementor-heading-title a:hover,
.jdw-home-transform-card__link .elementor-heading-title a:focus {
  text-decoration: none;
}

/*
作用域：首页 Newsletter 区块，绑定 `.jdw-home-newsletter*`。
责任归属：父容器自身 + widget 自身。
添加原因：该段为存量兼容样式，负责嵌入表单外层留白、标题层级与免责声明链接样式，保持首页订阅区与参考站一致。
添加时间：2026-03-23（存量样式清理）。
*/
.jdw-home-newsletter {
  margin-top: 40px;
  margin-bottom: 40px;
  padding: 0 20px;
}

.jdw-home-newsletter__heading .elementor-heading-title {
  margin: 0 0 20px;
  color: #002058;
  font-family: "Acumin Pro Bold", Helvetica, Arial, sans-serif;
  font-size: 24px;
  line-height: 1.2;
  font-weight: 400;
}

.jdw-home-newsletter__embed iframe {
  display: block;
  width: 100%;
  height: 250px;
}

.jdw-home-newsletter__disclaimer {
  margin-top: 12px;
  color: #002058;
  font-family: "Acumin Pro Regular", Helvetica, Arial, sans-serif;
  font-size: 12px;
  line-height: 1.5;
}

.jdw-home-newsletter__disclaimer a {
  color: #003087;
}

@media (min-width: 400px) {
  .jdw-home-newsletter__embed iframe {
    height: 230px;
  }
}

@media (min-width: 768px) {
  .jdw-home-band.e-con {
    --flex-wrap: nowrap;
  }

  .jdw-home-band + .jdw-home-band {
    margin-top: 60px;
  }

  .jdw-home-band > .jdw-home-band__media {
    width: 60%;
    max-width: 60%;
  }

  .jdw-home-band > .jdw-home-band__copy {
    width: 40%;
    max-width: 40%;
  }

  .jdw-home-band--desktop-reverse > .jdw-home-band__media {
    order: 1;
  }

  .jdw-home-band--desktop-reverse > .jdw-home-band__copy {
    order: 0;
  }

  .jdw-home-band__copy {
    justify-content: center;
    padding: 40px;
  }

  .jdw-home-band__title .elementor-heading-title {
    font-size: 40px;
    line-height: 40px;
    letter-spacing: 2px;
  }

  .jdw-home-band__body .elementor-text-editor,
  .jdw-home-band__body .elementor-text-editor p {
    font-size: 18px;
    line-height: 27px;
  }

  .jdw-home-band--readyframe > .jdw-home-band__media {
    min-height: 400px;
  }

  .jdw-home-band--readyframe,
  .jdw-home-band--readyframe > .jdw-home-band__media,
  .jdw-home-band--readyframe > .jdw-home-band__copy,
  .jdw-home-band--readyframe .jdw-home-readyframe__carousel,
  .jdw-home-band--readyframe
    .jdw-home-readyframe__carousel
    > .elementor-widget-container,
  .jdw-home-band--readyframe
    .jdw-home-readyframe__carousel
    .content-carousel-component,
  .jdw-home-band--readyframe .jdw-home-readyframe__carousel .slides,
  .jdw-home-band--readyframe .jdw-home-readyframe__carousel .slick-list,
  .jdw-home-band--readyframe .jdw-home-readyframe__carousel .slick-track,
  .jdw-home-band--readyframe .jdw-home-readyframe__carousel .slick-slide,
  .jdw-home-band--readyframe .jdw-home-readyframe__carousel .slick-slide > div,
  .jdw-home-band--readyframe .jdw-home-readyframe__carousel .slide,
  .jdw-home-band--readyframe .jdw-home-readyframe__carousel .bannerContentBox,
  .jdw-home-band--readyframe .jdw-home-readyframe__carousel .image,
  .jdw-home-band--readyframe .jdw-home-readyframe__carousel .item,
  .jdw-home-band--readyframe .jdw-home-readyframe__carousel .responsive-banner,
  .jdw-home-band--readyframe
    .jdw-home-readyframe__carousel
    .jdw-content-slides-carousel__image,
  .jdw-home-band--readyframe
    .jdw-home-readyframe__carousel
    .elementor-image-carousel-wrapper,
  .jdw-home-band--readyframe .jdw-home-readyframe__carousel .swiper,
  .jdw-home-band--readyframe .jdw-home-readyframe__carousel .swiper-wrapper,
  .jdw-home-band--readyframe .jdw-home-readyframe__carousel .swiper-slide,
  .jdw-home-band--readyframe .jdw-home-readyframe__carousel figure {
    height: 400px;
    min-height: 400px;
  }

  .jdw-home-greener__count .jdw-home-trees-saved-count {
    font-size: 100px;
  }

  .jdw-home-greener__eyebrow .elementor-text-editor,
  .jdw-home-greener__eyebrow .elementor-text-editor p {
    font-size: 35px;
  }

  .jdw-home-greener__caption .elementor-heading-title {
    font-size: 40px;
  }

  .jdw-home-transform__heading .elementor-heading-title {
    font-size: 40px;
    line-height: 40px;
    letter-spacing: 2px;
  }

  .jdw-home-newsletter {
    margin-top: 80px;
    padding: 0 30px;
  }
}

@media (min-width: 828px) {
  .jdw-home-newsletter__embed iframe {
    height: 135px;
  }
}

@media (min-width: 768px) {
  .jdw-home-greener {
    margin-top: 74px;
  }
}

@media (max-width: 767px) {
  .jdw-home-band--readyframe > .jdw-home-band__media {
    min-height: 240px;
  }

  .jdw-home-transform-card__body,
  .jdw-home-transform-card__body p,
  .jdw-home-transform-card__link .elementor-heading-title,
  .jdw-home-transform-card__link .elementor-heading-title a {
    font-size: 16px;
    line-height: 24px;
  }
}

@media (min-width: 992px) {
  .jdw-home-newsletter {
    padding: 0;
  }
}

@media (min-width: 1024px) {
  .jdw-home-greener {
    margin-top: 77px;
  }

  .jdw-home-greener__heading .elementor-heading-title {
    font-size: 60px;
    line-height: 60px;
    letter-spacing: 2px;
  }
}

@media (min-width: 1200px) {
  .jdw-home-band {
    margin-bottom: 80px;
  }

  .jdw-home-band__copy {
    padding-left: 80px;
    padding-right: 80px;
  }
}

/*
作用域：Location Finder 页面完整交互区，绑定 `.jdw-location-finder-page`。
责任归属：父容器自身 + widget 自身 + 跨元素关系。
添加原因：该段为存量兼容样式，集中维护搜索表单、结果列表、地图切换、分页、徽章与内联图标；该页面关系型样式较多，继续留在主题 CSS 中最稳妥。
添加时间：2026-03-23（存量样式清理）。
*/
.jdw-location-finder-page {
  color: #002058;
  background: #fff;
}

.jdw-location-finder-page .hidden {
  display: none !important;
}

.jdw-location-finder-page .location-finder-component {
  padding: 60px 0 80px;
  color: #002058;
  font-family: "Acumin Pro Regular", Helvetica, Arial, sans-serif;
}

.jdw-location-finder-page .location-finder-component h1 {
  margin: 0;
  color: #002058;
  font-family: "Apotek Extra Condensed Bold", Helvetica, Arial, sans-serif;
  font-size: 58px;
  line-height: 0.92;
  letter-spacing: 0.02em;
  font-weight: 700;
  text-transform: uppercase;
}

.jdw-location-finder-page .location-finder-component .headline {
  padding: 20px 0 10px;
  color: #002058;
  font-family: "Acumin Pro Bold", Helvetica, Arial, sans-serif;
  font-size: 24px;
  font-weight: 700;
}

.jdw-location-finder-page .location-finder-component .location-search,
.jdw-location-finder-page .location-finder-component .search-results {
  padding-left: 20px;
  padding-right: 20px;
}

.jdw-location-finder-page .location-finder-component a {
  color: #003087;
}

.jdw-location-finder-page .location-finder-component .location-form {
  font-size: 16px;
}

.jdw-location-finder-page
  .location-finder-component
  .location-form
  .fields
  > div:first-child {
  position: relative;
  margin-bottom: 30px;
}

.jdw-location-finder-page .location-finder-component .location-form .title {
  padding-bottom: 5px;
  color: #002058;
  font-family: "Acumin Pro Bold", Helvetica, Arial, sans-serif;
  font-size: 16px;
  font-weight: 700;
}

.jdw-location-finder-page .location-finder-component .title-button {
  width: 100%;
  border: 0;
  background: transparent;
  text-align: left;
  cursor: pointer;
  padding-left: 0;
  padding-right: 0;
}

.jdw-location-finder-page .location-finder-component .icon-plus {
  position: relative;
  display: inline-block;
  width: 12px;
  height: 12px;
  margin-left: 6px;
  vertical-align: middle;
}

.jdw-location-finder-page .location-finder-component .icon-plus::before,
.jdw-location-finder-page .location-finder-component .icon-plus::after {
  content: "";
  position: absolute;
  left: 0;
  top: 5px;
  width: 12px;
  height: 2px;
  background: currentColor;
  transition:
    transform 0.2s ease,
    opacity 0.2s ease;
}

.jdw-location-finder-page .location-finder-component .icon-plus::after {
  transform: rotate(90deg);
}

.jdw-location-finder-page
  .location-finder-component
  .js-collapse-toggle.active
  .icon-plus::after,
.jdw-location-finder-page
  .location-finder-component
  .js-result-facility-toggle.active
  .icon-plus::after {
  opacity: 0;
}

.jdw-location-finder-page .location-finder-component input[type="search"] {
  width: 100%;
  border: 0;
  border-bottom: 1px solid #002058;
  border-radius: 0;
  padding: 0 36px 0 0;
  background: transparent;
  box-shadow: none;
  color: #002058;
  font-family: "Acumin Pro Regular", Helvetica, Arial, sans-serif;
  font-size: 16px;
}

.jdw-location-finder-page
  .location-finder-component
  input[type="search"]::placeholder {
  color: #808fab;
}

.jdw-location-finder-page .location-finder-component .search-icon {
  position: absolute;
  right: 3px;
  top: 24px;
  width: 24px;
  height: 24px;
  pointer-events: none;
}

.jdw-location-finder-page .location-finder-component .search-icon::before {
  content: "";
  display: block;
  width: 24px;
  height: 24px;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Ccircle cx='10.5' cy='10.5' r='6.5' fill='none' stroke='%23002058' stroke-width='1.8'/%3E%3Cpath d='M15.8 15.8 21 21' stroke='%23002058' stroke-width='1.8' stroke-linecap='round'/%3E%3C/svg%3E")
    center/24px 24px no-repeat;
}

.jdw-location-finder-page .location-finder-component .filters {
  display: flex;
  flex-wrap: wrap;
  padding-top: 10px;
}

.jdw-location-finder-page .location-finder-component .filters > div {
  flex: 1 1 50%;
  padding-right: 15px;
  padding-bottom: 5px;
}

.jdw-location-finder-page .location-finder-component .location-form label {
  display: inline;
  margin: 0;
  color: #002058;
  font-family: "Acumin Pro Regular", Helvetica, Arial, sans-serif;
  font-size: inherit;
  line-height: 1.2;
  vertical-align: middle;
  text-transform: none;
}

.jdw-location-finder-page
  .location-finder-component
  .location-form
  input[type="checkbox"] {
  margin-top: 2px;
  margin-bottom: 10px;
  margin-right: 6px;
}

.jdw-location-finder-page .location-finder-component .location-form .tools-cta {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  padding-top: 10px;
}

.jdw-location-finder-page
  .location-finder-component
  .location-form
  .tools-cta
  a {
  color: #003087;
  font-size: 14px;
  text-decoration: underline;
}

.jdw-location-finder-page .location-finder-component .location-form .submit {
  padding: 20px 0 0;
}

.jdw-location-finder-page .location-finder-component .btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 160px;
  padding: 13px 24px;
  border: 1px solid #c8102e;
  background: #c8102e;
  color: #fff;
  font-family: "Acumin Pro Bold", Helvetica, Arial, sans-serif;
  font-size: 18px;
  font-weight: 700;
  line-height: 1;
  text-decoration: none;
  cursor: pointer;
  transition:
    background-color 0.2s ease,
    border-color 0.2s ease;
}

.jdw-location-finder-page .location-finder-component .btn:hover,
.jdw-location-finder-page .location-finder-component .btn:focus {
  background: #9b0d24;
  border-color: #9b0d24;
  color: #fff;
}

.jdw-location-finder-page .location-finder-component .clearCta {
  float: right;
  cursor: pointer;
  color: #003087;
  font-size: 14px;
  text-decoration: underline;
}

.jdw-location-finder-page .location-finder-component .status-bar {
  position: relative;
  padding: 20px 0 40px;
  color: #002058;
  font-family: "Apotek Extra Condensed Light", Helvetica, Arial, sans-serif;
  font-size: 24px;
  line-height: 1.1;
  letter-spacing: 0.02em;
}

.jdw-location-finder-page .location-finder-component .status-bar i,
.jdw-location-finder-page .location-finder-component .status-bar b {
  font-style: italic;
  font-weight: 700;
}

.jdw-location-finder-page .location-finder-component .loadingResults {
  position: relative;
  height: 80px;
  margin-top: 20px;
}

.jdw-location-finder-page .location-finder-component .loadingResults::before {
  content: "";
  position: absolute;
  left: 50%;
  top: 16px;
  width: 42px;
  height: 42px;
  margin-left: -21px;
  border: 3px solid rgba(0, 32, 88, 0.2);
  border-top-color: #002058;
  border-radius: 50%;
  animation: jdw-location-finder-spin 0.8s linear infinite;
}

@keyframes jdw-location-finder-spin {
  to {
    transform: rotate(360deg);
  }
}

.jdw-location-finder-page
  .location-finder-component
  .search-results
  .map-view
  > div {
  width: 100%;
  min-height: 500px;
  background: #e8edf7;
}

.jdw-location-finder-page .location-finder-component .item {
  padding-left: 40px;
  color: #002058;
  font-size: 16px;
}

.jdw-location-finder-page .location-finder-component .item .title {
  position: relative;
  display: block;
  color: inherit;
  text-decoration: none;
}

.jdw-location-finder-page .location-finder-component .item .title .name {
  padding-top: 4px;
  font-family: "Acumin Pro Bold", Helvetica, Arial, sans-serif;
  font-size: 24px;
  line-height: 1;
  font-weight: 700;
}

.jdw-location-finder-page .location-finder-component .item .title .info {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  padding-top: 5px;
  font-family: "Acumin Pro Bold", Helvetica, Arial, sans-serif;
  font-size: 16px;
  font-weight: 700;
}

.jdw-location-finder-page .location-finder-component .item .title .index {
  position: absolute;
  left: -40px;
  top: 0;
  width: 26px;
  height: 26px;
  border-radius: 50%;
  background: #c8102e;
  color: #fff;
  font-family: "Acumin Pro Bold", Helvetica, Arial, sans-serif;
  font-size: 16px;
  line-height: 26px;
  text-align: center;
}

.jdw-location-finder-page .location-finder-component .preferred-location {
  padding-top: 5px;
}

.jdw-location-finder-page
  .location-finder-component
  .preferred-location
  > button {
  display: none;
  border: 0;
  background: transparent;
  padding: 0;
  color: #003087;
  font-size: 15px;
  text-decoration: underline;
  cursor: pointer;
}

.jdw-location-finder-page
  .location-finder-component
  .preferred-location.active
  .setPreferredStore,
.jdw-location-finder-page
  .location-finder-component
  .preferred-location.set
  .isPreferredStore {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.jdw-location-finder-page .location-finder-component .details > div:empty {
  display: none;
}

.jdw-location-finder-page .location-finder-component .heading {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding-top: 20px;
  padding-bottom: 5px;
  color: #002058;
  font-family: "Acumin Pro Bold", Helvetica, Arial, sans-serif;
  font-size: 16px;
  font-weight: 700;
}

.jdw-location-finder-page .location-finder-component .address-cta,
.jdw-location-finder-page .location-finder-component .phone a {
  color: #002058;
  text-decoration: none;
}

.jdw-location-finder-page .location-finder-component .directions {
  display: inline-block;
  padding-top: 5px;
  color: #003087;
  text-decoration: underline;
}

.jdw-location-finder-page .location-finder-component .badges .heading,
.jdw-location-finder-page .location-finder-component .facility .heading {
  padding-top: 0;
}

.jdw-location-finder-page .location-finder-component .green-badge,
.jdw-location-finder-page .location-finder-component .red-badge {
  display: inline-flex;
  margin-bottom: 8px;
  padding: 8px 10px;
  font-family: "Acumin Pro Bold", Helvetica, Arial, sans-serif;
  font-size: 13px;
  font-weight: 700;
  line-height: 1.2;
}

.jdw-location-finder-page .location-finder-component .green-badge {
  background: #d4f1dd;
  color: #0e5a2b;
}

.jdw-location-finder-page .location-finder-component .red-badge {
  background: #f7d6dd;
  color: #8c1732;
}

.jdw-location-finder-page .location-finder-component .facility ul {
  list-style: none;
  margin: 0;
  padding: 0;
}

.jdw-location-finder-page .location-finder-component .facility li {
  margin-bottom: 4px;
}

.jdw-location-finder-page .location-finder-component .facility li:last-child {
  margin-bottom: 0;
}

.jdw-location-finder-page .location-finder-component .facility .heading {
  border: 0;
  background: transparent;
  padding-left: 0;
  padding-right: 0;
  cursor: pointer;
}

.jdw-location-finder-page .location-finder-component .cta {
  padding: 30px 0 40px;
  margin-bottom: 40px;
  border-bottom: 1px solid #002058;
}

.jdw-location-finder-page .location-finder-component .pagination-container {
  text-align: center;
}

.jdw-location-finder-page .location-finder-component .pagingStatus {
  margin-bottom: 12px;
  font-family: "Acumin Pro Regular", Helvetica, Arial, sans-serif;
  font-size: 15px;
}

.jdw-location-finder-page .location-finder-component .pagination {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 6px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.jdw-location-finder-page
  .location-finder-component
  .pagination
  .page-item
  span,
.jdw-location-finder-page .location-finder-component .pagination .page-item a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 36px;
  padding: 6px 10px;
  color: #003087;
  text-decoration: none;
}

.jdw-location-finder-page
  .location-finder-component
  .pagination
  .page-item.disabled
  span {
  color: #767676;
}

.jdw-location-finder-page
  .location-finder-component
  .pagination
  .page-cta.disabled
  span {
  color: #333;
}

.jdw-location-finder-page .location-finder-component .show-map {
  padding-top: 20px;
  font-size: 16px;
}

.jdw-location-finder-page .location-finder-component .show-map > button {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  border: 0;
  background: transparent;
  padding: 0 20px 0 0;
  color: #003087;
  font-size: 16px;
  text-decoration: underline;
  cursor: pointer;
}

.jdw-location-finder-page
  .location-finder-component
  .show-map
  > button::before {
  content: "";
  display: block;
  width: 22px;
  height: 22px;
  background-position: center;
  background-repeat: no-repeat;
  background-size: 22px 22px;
}

.jdw-location-finder-page
  .location-finder-component
  .show-map
  > .map-view::before {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' viewBox='0 0 22 22'%3E%3Cpath fill='none' stroke='%23003087' stroke-width='1.6' d='M2.5 4.5 7.8 2.8l6.4 1.8 5.3-1.8v14.7l-5.3 1.7-6.4-1.8-5.3 1.8z'/%3E%3Cpath fill='none' stroke='%23003087' stroke-width='1.6' d='M7.8 2.8v14.7M14.2 4.6v14.6'/%3E%3C/svg%3E");
}

.jdw-location-finder-page
  .location-finder-component
  .show-map
  > .list-view::before {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' viewBox='0 0 22 22'%3E%3Cg fill='none' stroke='%23003087' stroke-width='1.6' stroke-linecap='round'%3E%3Cpath d='M4 6.5h14M4 11h14M4 15.5h14'/%3E%3C/g%3E%3C/svg%3E");
}

.jdw-location-finder-page
  .location-finder-component.map-view
  .show-map
  > .map-view {
  display: none;
}

.jdw-location-finder-page
  .location-finder-component:not(.map-view)
  .show-map
  > .list-view {
  display: none;
}

.jdw-location-finder-page .location-finder-component .noresults {
  padding-top: 40px;
  font-family: "Apotek Extra Condensed Light", Helvetica, Arial, sans-serif;
  font-size: 24px;
  line-height: 1.1;
}

.jdw-location-finder-page
  .location-finder-component
  .noresults.filters
  .no-filters,
.jdw-location-finder-page
  .location-finder-component
  .noresults:not(.filters)
  .with-filters {
  display: none;
}

.jdw-location-finder-page
  .location-finder-component
  .resultsStatus.single
  .multi,
.jdw-location-finder-page
  .location-finder-component
  .resultsStatus:not(.single)
  .single {
  display: none;
}

.jdw-location-finder-page .jdw-location-finder__inline-icon {
  display: inline-block;
  width: 16px;
  height: 16px;
  flex: 0 0 16px;
  background-position: center;
  background-repeat: no-repeat;
  background-size: 16px 16px;
}

.jdw-location-finder-page .jdw-location-finder__inline-icon--pin {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath fill='%23002058' d='M8 1.2a4.8 4.8 0 0 0-4.8 4.8c0 3.5 4.8 8.8 4.8 8.8s4.8-5.3 4.8-8.8A4.8 4.8 0 0 0 8 1.2Zm0 6.6A1.8 1.8 0 1 1 8 4.2a1.8 1.8 0 0 1 0 3.6Z'/%3E%3C/svg%3E");
}

.jdw-location-finder-page .jdw-location-finder__inline-icon--phone {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath fill='%23002058' d='M4.1 1.7c.4-.4 1-.5 1.5-.2l1.9 1.2c.5.3.7 1 .4 1.6L7.2 5.7a10.6 10.6 0 0 0 3.1 3.1l1.4-.7c.6-.3 1.3-.1 1.6.4l1.2 1.9c.3.5.2 1.1-.2 1.5l-1.2 1.2c-.7.7-1.7 1-2.6.7A14.5 14.5 0 0 1 2.2 5.5c-.3-.9 0-1.9.7-2.6l1.2-1.2Z'/%3E%3C/svg%3E");
}

.jdw-location-finder-page .jdw-location-finder__inline-icon--clock {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath fill='%23002058' d='M8 1.3A6.7 6.7 0 1 0 8 14.7 6.7 6.7 0 0 0 8 1.3Zm.8 3.2v3.1l2.4 1.5-.8 1.2L7.6 8.5V4.5h1.2Z'/%3E%3C/svg%3E");
}

.jdw-location-finder-page .jdw-location-finder__inline-icon--star,
.jdw-location-finder-page .jdw-location-finder__inline-icon--star-filled {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath fill='%23c8102e' d='m8 1.1 2 4.1 4.5.7-3.2 3.2.7 4.5L8 11.5l-4 2.1.7-4.5L1.5 5.9 6 5.2 8 1.1Z'/%3E%3C/svg%3E");
}

.jdw-location-finder-page .jdw-location-finder__infobox {
  color: #002058;
  font-family: "Acumin Pro Regular", Helvetica, Arial, sans-serif;
  font-size: 16px;
}

.jdw-location-finder-page .jdw-location-finder__infobox p {
  margin: 0 0 12px;
}

.jdw-location-finder-page .jdw-location-finder--no-map .show-map,
.jdw-location-finder-page
  .jdw-location-finder--no-map
  .search-results
  .map-view {
  display: none !important;
}

.jdw-location-finder-page
  .jdw-location-finder--no-map
  .search-results
  .list-view {
  flex: 1 1 100%;
  max-width: none;
  padding-right: 0;
}

@media (max-width: 576px) {
  .jdw-location-finder-page .location-finder-component .facility .heading {
    cursor: pointer;
  }

  .jdw-location-finder-page
    .location-finder-component
    .facility
    .heading
    + div {
    display: none;
  }

  .jdw-location-finder-page
    .location-finder-component
    .facility
    .heading.active
    + div {
    display: block;
  }
}

@media (min-width: 576px) {
  .jdw-location-finder-page .location-finder-component .details {
    display: flex;
  }

  .jdw-location-finder-page .location-finder-component .details > div {
    flex: 1 1 auto;
  }

  .jdw-location-finder-page
    .location-finder-component
    .details
    > div:first-child {
    display: flex;
    flex-wrap: wrap;
  }

  .jdw-location-finder-page
    .location-finder-component
    .details
    > div:first-child
    > div {
    flex: 1 1 50%;
    min-width: 130px;
    padding-right: 10px;
  }

  .jdw-location-finder-page
    .location-finder-component
    .details
    > div:last-child {
    flex: 1 1 50%;
    max-width: 50%;
    min-width: 50%;
    padding-left: 20px;
  }
}

@media (min-width: 768px) {
  .jdw-location-finder-page .location-finder-component .location-search,
  .jdw-location-finder-page .location-finder-component .search-results {
    padding-left: 30px;
    padding-right: 30px;
  }
}

@media (max-width: 991px) {
  .jdw-location-finder-page
    .location-finder-component:not(.map-view)
    .search-results
    .map-view {
    display: none;
  }

  .jdw-location-finder-page
    .location-finder-component.map-view
    .search-results
    .list-view {
    display: none;
  }

  .jdw-location-finder-page
    .location-finder-component
    .location-form
    .js-collapse-toggle {
    padding-bottom: 0;
  }

  .jdw-location-finder-page
    .location-finder-component
    .location-form
    .js-collapse-toggle
    + .filters {
    display: none;
  }

  .jdw-location-finder-page
    .location-finder-component
    .location-form
    .js-collapse-toggle.active
    + .filters {
    display: flex;
  }
}

@media (min-width: 992px) {
  .jdw-location-finder-page .location-finder-component .headline {
    padding: 50px 0 10px;
    font-size: 30px;
  }

  .jdw-location-finder-page .location-finder-component .search-icon {
    right: 63px;
  }

  .jdw-location-finder-page .location-finder-component .status-bar {
    font-size: 30px;
  }

  .jdw-location-finder-page .location-finder-component .location-form .fields {
    display: flex;
  }

  .jdw-location-finder-page
    .location-finder-component
    .location-form
    .fields
    > div {
    flex: 1 1 50%;
    min-width: 50%;
  }

  .jdw-location-finder-page
    .location-finder-component
    .location-form
    .fields
    > div:first-child {
    padding-right: 60px;
    margin-bottom: 0;
  }

  .jdw-location-finder-page .location-finder-component .location-form .submit {
    padding-top: 30px;
    text-align: right;
  }

  .jdw-location-finder-page
    .location-finder-component
    .location-form
    .submit
    .btn,
  .jdw-location-finder-page .location-finder-component .item .cta .btn {
    min-width: 205px;
    font-size: 20px;
  }

  .jdw-location-finder-page .location-finder-component .search-results {
    display: flex;
    padding-right: 0;
  }

  .jdw-location-finder-page
    .location-finder-component
    .search-results
    .list-view {
    flex: 1 1 580px;
    max-width: 580px;
    padding-right: 20px;
  }

  .jdw-location-finder-page
    .location-finder-component
    .search-results
    .map-view {
    flex: 1 1 auto;
  }

  .jdw-location-finder-page
    .location-finder-component
    .search-results
    .resultsItems {
    height: 700px;
    overflow-y: auto;
  }

  .jdw-location-finder-page .location-finder-component .show-map {
    display: none;
  }

  .jdw-location-finder-page .location-finder-component .pagination {
    margin-top: 30px;
  }

  .jdw-location-finder-page .location-finder-component .item {
    padding-right: 20px;
  }
}

@media (min-width: 1200px) {
  .jdw-location-finder-page .location-finder-component {
    padding-top: 80px;
  }
}

@media (min-width: 1440px) {
  .jdw-location-finder-page .location-finder-component .location-search {
    padding-left: 60px;
    padding-right: 120px;
  }

  .jdw-location-finder-page
    .location-finder-component
    .location-form
    .filters
    > div {
    flex: 1 1 33%;
  }
}

/*
作用域：站点头部与全局 alert 槽位，绑定 `.jdw-site-header*` / `.jdw-global-alerts-slot`。
责任归属：父容器自身 + 跨元素关系。
添加原因：该段为存量兼容样式，负责 sticky header、工具区、导航区和图标遮罩变量；由于涉及头部整体布局与交互，统一留在主题 CSS 维护。
添加时间：2026-03-23（存量样式清理）。
*/
.jdw-global-alerts-slot {
  display: block;
}

.jdw-site-header {
  --jdw-header-blue: #002058;
  --jdw-header-red: #c8102e;
  --jdw-header-red-dark: #820014;
  --jdw-header-white: #ffffff;
  background: var(--jdw-header-blue);
  color: var(--jdw-header-white);
  min-height: 80px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  position: sticky;
  top: 0;
  z-index: 1100;
  font-size: 18px;
  line-height: 27px;
  box-sizing: border-box;
}

.jdw-site-header *,
.jdw-site-header *::before,
.jdw-site-header *::after {
  box-sizing: border-box;
}

.jdw-site-header a {
  color: inherit;
  text-decoration: none;
}

.jdw-site-header a:hover {
  text-decoration: none;
}

.jdw-site-header__logo-container {
  flex: 0 0 auto;
  max-width: 50%;
  padding-right: 10px;
  position: relative;
}

.jdw-site-header .site-logo {
  padding-left: 20px;
  min-width: 150px;
  display: inline-block;
}

.jdw-site-header__logo {
  display: inline;
  width: auto;
  max-width: 100%;
  max-height: 100%;
  vertical-align: middle;
}

.jdw-site-header__nav {
  flex: 1 1 auto;
  min-width: 0;
}

.jdw-site-header__nav .main-navigation {
  font-size: 16px;
  line-height: 24px;
}

.jdw-site-header__nav .main-navigation > div:not(.mobile-tools) {
  position: static;
}

.jdw-site-header__tools {
  text-align: right;
  justify-content: flex-end;
  padding-right: 20px;
  flex: 1 1 auto;
  max-width: 240px;
  min-width: 0;
}

.jdw-site-header__tools-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.jdw-site-header__tool-link {
  color: var(--jdw-header-white);
  line-height: 1;
  flex: 1 1 auto;
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.jdw-site-header__tool-link--icon {
  font-family: "bldr-icons";
  -webkit-font-smoothing: antialiased;
  font-size: 24px;
  width: 40px;
  height: 40px;
}

.jdw-site-header__tool-link--button {
  font-size: 24px;
}

.jdw-site-header__tool-icon {
  --jdw-site-header-tool-icon: none;
  display: block;
  width: 24px;
  height: 24px;
  flex: 0 0 auto;
  background-color: currentColor;
  -webkit-mask-image: var(--jdw-site-header-tool-icon);
  mask-image: var(--jdw-site-header-tool-icon);
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-size: contain;
  mask-size: contain;
  -webkit-mask-position: center;
  mask-position: center;
}

.jdw-site-header__tool-icon--portal {
  width: 28px;
  height: 28px;
}

.jdw-site-header__tool-link.account-icon {
  font-size: 28px;
}

.jdw-site-header__mobile-menu {
  display: none;
}

.jdw-site-header__nav .mobile-tools {
  display: none;
}

.jdw-site-header__preferred-store {
  display: none;
}

.jdw-site-header__nav .backBtn {
  display: none;
}

/*
作用域：站点头部移动端汉堡按钮，绑定 `.mobile-menu-toggle`。
责任归属：widget 自身 + 跨元素关系。
添加原因：该段为存量兼容样式，负责按钮三条线动画与 offcanvas 状态切换，属于 header 内部的交互关系样式。
添加时间：2026-03-23（存量样式清理）。
*/
.mobile-menu-toggle {
  position: relative;
  width: 27px;
  height: 30px;
  z-index: 101;
  overflow: hidden;
  user-select: none;
  cursor: pointer;
  padding: 0;
  border: 0 !important;
  background: transparent !important;
  background-color: transparent !important;
  background-image: none !important;
  box-shadow: none !important;
  appearance: none;
  -webkit-appearance: none;
  font-family: "Acumin Pro Regular", Helvetica, Arial, sans-serif !important;
  font-size: 16px !important;
  line-height: 24px !important;
}

.mobile-menu-toggle:hover,
.mobile-menu-toggle:focus,
.mobile-menu-toggle:active,
.mobile-menu-toggle:focus-visible,
body.offcanvas .mobile-menu-toggle,
body.offcanvas .mobile-menu-toggle:hover,
body.offcanvas .mobile-menu-toggle:focus,
body.offcanvas .mobile-menu-toggle:active,
body.offcanvas .mobile-menu-toggle:focus-visible {
  border: 0 !important;
  background: transparent !important;
  background-color: transparent !important;
  background-image: none !important;
  box-shadow: none !important;
  outline: 0;
}

.mobile-menu-toggle span {
  display: block;
  width: 35px;
  height: 1px;
  margin: 6px 0 8px;
  position: relative;
  background-color: var(--jdw-header-white);
  border-radius: 3px;
  z-index: 1;
  transform-origin: 4px 0;
  transition:
    all 0.4s ease,
    transform 0.6s cubic-bezier(0.77, 0.2, 0.05, 1);
}

.mobile-menu-toggle span:first-child {
  transform-origin: 0 0;
}

.mobile-menu-toggle span:nth-last-child(2) {
  transform-origin: 0 100%;
}

body.offcanvas .mobile-menu-toggle span {
  opacity: 1;
  background-color: var(--jdw-header-blue);
  transform: rotate(45deg) translate(-3px, -4px);
}

body.offcanvas .mobile-menu-toggle span:nth-child(2) {
  opacity: 0;
  transform: rotate(0deg) scale(0.2, 0.2);
}

body.offcanvas .mobile-menu-toggle span:last-child {
  transform: rotate(-45deg) translate(0, -2px);
}

@media (min-width: 768px) {
  .jdw-site-header {
    min-height: 90px;
  }

  .jdw-site-header .site-logo {
    padding-left: 30px;
  }

  .jdw-site-header__tools {
    padding-right: 30px;
  }

  .jdw-site-header__tool-link::after {
    content: "";
    position: absolute;
    bottom: -5px;
    right: 20%;
    width: 0;
    height: 2px;
    max-width: 60%;
    background-color: var(--jdw-header-red);
    transition: width 0.3s cubic-bezier(0.25, 1, 0.5, 1);
  }

  .jdw-site-header__tool-link:hover::after,
  .jdw-site-header__tool-link:focus-visible::after {
    left: 20%;
    right: auto;
    width: 60%;
  }
}

@media (min-width: 992px) {
  .jdw-site-header .site-logo {
    min-width: 200px;
  }
}

@media (max-width: 1199px) {
  body.offcanvas {
    overflow: hidden;
  }

  .jdw-site-header {
    font-size: 16px;
    line-height: 24px;
  }

  .jdw-site-header__logo-container,
  main,
  footer {
    transition: transform 0.3s ease-in;
  }

  .jdw-site-header__nav {
    font-size: 16px;
    line-height: 24px;
    transition: transform 0.3s ease-in;
    min-width: 100%;
    height: calc(100vh + 100px);
    min-height: 100vh;
    position: fixed;
    inset: 0 0 0 auto;
    background: var(--jdw-header-white);
    color: var(--jdw-header-blue);
    z-index: 90;
    padding-top: 100px;
    transform: translateX(100%);
    overflow: hidden;
    visibility: hidden;
    pointer-events: none;
  }

  .jdw-site-header__nav.is-active {
    visibility: visible;
    pointer-events: auto;
  }

  body.offcanvas .jdw-site-header__nav {
    transform: translateX(0);
  }

  .jdw-site-header__nav a {
    color: var(--jdw-header-blue);
    border-color: var(--jdw-header-blue);
  }

  .jdw-site-header__nav .backBtn {
    display: block;
    width: 40px;
    height: 40px;
    position: absolute;
    top: 65px;
    left: 110%;
    z-index: 10;
    transition: left 0.3s ease-in;
  }

  .jdw-site-header__nav .backBtn span {
    border: solid var(--jdw-header-blue);
    border-width: 0 1px 1px 0;
    display: inline-block;
    padding: 6px;
    transform: rotate(135deg);
    margin-left: 6px;
  }

  .jdw-site-header__nav .nav-panel {
    position: absolute;
    left: 100%;
    top: 100px;
    width: 100%;
    height: 100vh;
    overflow-y: auto;
    background: var(--jdw-header-white);
    font-size: 16px;
    padding-left: 40px;
    padding-bottom: 160px;
    transition: left 0.3s ease-in;
    z-index: 9;
  }

  .jdw-site-header__nav .nav-panel a {
    display: block;
    padding-bottom: 20px;
  }

  .jdw-site-header__nav .overview {
    color: var(--jdw-header-blue);
    font-size: 20px;
    padding-top: 20px;
    padding-bottom: 30px;
  }

  .jdw-site-header__nav .overview a {
    display: inline-block;
    padding: 0;
    border-bottom: 2px solid var(--jdw-header-red);
  }

  .jdw-site-header__nav .main-navigation {
    overflow-x: hidden;
    overflow-y: auto;
    height: 100vh;
    padding-top: 20px;
    padding-bottom: 120px;
  }

  .jdw-site-header__nav .main-navigation > div:not(.mobile-tools) {
    padding-bottom: 30px;
  }

  .jdw-site-header__nav
    .main-navigation
    > div:not(.mobile-tools)
    > a:first-child {
    display: block;
    padding-left: 40px;
    font-size: 20px;
    line-height: 30px;
    transform: translateX(0);
    transition: transform 0.3s ease-in;
  }

  .jdw-site-header__nav
    .main-navigation
    > div.js-hasChildNav
    > a:first-child::after {
    content: "";
    border: solid var(--jdw-header-blue);
    border-width: 0 1px 1px 0;
    display: inline-block;
    padding: 6px;
    position: absolute;
    right: 52px;
    margin-top: 5px;
    transform: rotate(-45deg);
  }

  .jdw-site-header__nav
    .main-navigation
    > div:not(.mobile-tools).active-nav
    .nav-panel {
    left: 0;
  }

  .jdw-site-header__nav
    .main-navigation
    > div:not(.mobile-tools).active-nav
    .backBtn {
    left: 40px;
  }

  .jdw-site-header__nav .main-navigation.open-nav > div > a:first-child,
  .jdw-site-header__nav .main-navigation.open-nav .mobile-tools {
    transform: translateX(-100%);
  }

  .jdw-site-header__nav .mobile-tools {
    display: block;
    border-top: 1px solid var(--jdw-header-blue);
    padding-top: 40px;
    margin: 10px 40px;
    transform: translateX(0);
    transition: transform 0.3s ease-in;
  }

  .jdw-site-header__nav .mobile-tools > div {
    padding-bottom: 20px;
  }

  .jdw-site-header__mobile-tool {
    display: block;
    font-size: 16px;
    line-height: 24px;
    color: var(--jdw-header-blue);
  }

  .jdw-site-header__mobile-tool .jdw-site-header__tool-icon {
    display: inline-block;
    width: 20px;
    height: 20px;
    margin-right: 10px;
    color: currentColor;
    vertical-align: text-bottom;
  }

  .jdw-site-header__mobile-tool.request-quote-btn {
    background: var(--jdw-header-red);
    color: var(--jdw-header-white);
    padding: 10px 20px;
    display: inline-block;
  }

  .jdw-site-header__quote-label {
    display: none;
  }

  .jdw-site-header__tool-link--button {
    width: 40px;
    height: 40px;
    order: -1;
  }

  .jdw-site-header__tool-link--button::after {
    display: none;
  }

  .jdw-site-header__mobile-menu {
    flex: 1 1 auto;
    display: flex;
    align-items: center;
    justify-content: flex-end;
    position: relative;
    z-index: 101;
  }
}

@media (max-width: 575px) {
  body.offcanvas .jdw-site-header__logo-container,
  body.offcanvas main,
  body.offcanvas footer {
    transform: translateX(-100%);
  }
}

@media (min-width: 576px) and (max-width: 1199px) {
  .jdw-site-header__nav {
    width: 380px;
    min-width: 380px;
    transform: translateX(380px);
  }

  body.offcanvas .jdw-site-header__logo-container,
  body.offcanvas main,
  body.offcanvas footer {
    transform: translateX(-380px);
  }
}

@media (min-width: 1200px) {
  .jdw-site-header {
    min-height: 100px;
  }

  .jdw-site-header__logo-container {
    flex: 0 0 20%;
    max-width: 380px;
  }

  .jdw-site-header__nav {
    flex: 1 1 auto;
    max-width: 860px;
  }

  .jdw-site-header__nav .mobile-tools {
    display: none;
  }

  .jdw-site-header__nav .main-navigation {
    display: flex;
    font-size: 16px;
    line-height: 24px;
    max-width: 860px;
    margin: 0 auto;
  }

  .jdw-site-header__nav .main-navigation > div:not(.mobile-tools) {
    flex: 1 1 auto;
    text-align: center;
    height: 100px;
    display: flex;
    align-items: center;
  }

  .jdw-site-header__nav
    .main-navigation
    > div:not(.mobile-tools)
    > a:first-child {
    transition: border 0.5s ease-in;
    color: var(--jdw-header-white);
    line-height: 2em;
    display: inline-block;
    position: relative;
    margin: 0 auto;
  }

  .jdw-site-header__nav
    .main-navigation
    > div:not(.mobile-tools)
    > a:first-child::before {
    content: "";
    position: absolute;
    bottom: -5px;
    right: 0;
    width: 0;
    height: 2px;
    background-color: var(--jdw-header-red);
    transition: width 0.3s cubic-bezier(0.25, 1, 0.5, 1);
  }

  .jdw-site-header__nav .main-navigation > div:not(.mobile-tools) .inner {
    width: min(860px, calc(100vw - 120px));
    text-align: left;
    padding: 40px 0;
    margin: 0;
  }

  .jdw-site-header__nav
    .main-navigation
    > div:not(.mobile-tools)
    .inner
    .inner-links {
    display: flex;
  }

  .jdw-site-header__nav
    .main-navigation
    > div:not(.mobile-tools)
    .inner
    .inner-links
    > .column {
    flex: 1 1 auto;
    max-width: 33.33%;
    padding-right: 10px;
  }

  .jdw-site-header__nav
    .main-navigation
    > div:not(.mobile-tools)
    .inner
    .inner-links
    > .column
    > div {
    padding-bottom: 5px;
  }

  .jdw-site-header__nav
    .main-navigation
    > div:not(.mobile-tools)
    .inner
    .inner-links
    > .column
    > div:last-child {
    padding-bottom: 0;
  }

  .jdw-site-header__nav
    .main-navigation
    > div:not(.mobile-tools)
    .inner
    .overview {
    font-family: "Acumin Pro Bold", Helvetica, Arial, sans-serif;
    font-weight: 400;
    padding-bottom: 10px;
  }

  .jdw-site-header__nav
    .main-navigation
    > div:not(.mobile-tools)
    .inner
    a:hover {
    text-decoration: underline;
  }

  .jdw-site-header__nav
    .main-navigation
    > div:not(.mobile-tools):hover
    > a:first-child::before,
  .jdw-site-header__nav
    .main-navigation
    > div:not(.mobile-tools):focus-within
    > a:first-child::before {
    left: 0;
    right: auto;
    width: 100%;
  }

  .jdw-site-header__nav .nav-panel {
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    overflow: hidden;
    background: var(--jdw-header-white);
    text-align: left;
    box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2);
    max-height: 0;
    opacity: 0;
    pointer-events: none;
    transition:
      opacity 0.4s ease-out,
      max-height 0.4s ease-out;
  }

  .jdw-site-header__nav .nav-panel > div {
    display: inline-block;
    width: 100%;
  }

  .jdw-site-header__nav .nav-panel > div a {
    color: var(--jdw-header-blue);
    display: inline-block;
    padding: 5px 0;
  }

  .jdw-site-header__nav .js-hasChildNav:hover > .nav-panel,
  .jdw-site-header__nav .js-hasChildNav:focus-within > .nav-panel {
    max-height: 400px;
    opacity: 1;
    pointer-events: auto;
    z-index: 1000;
  }

  .jdw-site-header__tools {
    max-width: 300px;
  }

  .jdw-site-header__tool-link--button {
    transition:
      background-color 0.3s linear,
      border-color 0.3s linear;
    background: var(--jdw-header-red);
    color: var(--jdw-header-white);
    padding: 8px 15px;
    font-size: 16px;
    line-height: 16px;
    vertical-align: bottom;
    margin-left: 20px;
    flex: 0 0 auto;
    display: block;
  }

  .jdw-site-header__tool-link--button .jdw-site-header__tool-icon {
    width: 23px;
    height: 23px;
    display: inline-block;
    margin-right: 0;
    vertical-align: middle;
  }

  .jdw-site-header__quote-label {
    vertical-align: bottom;
  }

  .jdw-site-header__tool-link--button:hover {
    color: var(--jdw-header-white);
    background: var(--jdw-header-red-dark);
  }

  .jdw-site-header__tool-link--button:hover::after,
  .jdw-site-header__tool-link--button:focus-visible::after {
    width: 0;
  }
}

@media (min-width: 1440px) {
  .jdw-site-header__logo-container {
    flex: 0 0 18%;
  }

  .jdw-site-header .site-logo {
    padding-left: 60px;
    min-width: 230px;
  }

  .jdw-site-header__tools {
    padding-right: 60px;
    max-width: 380px;
  }
}

@media (min-width: 1920px) {
  .jdw-site-header__nav {
    max-width: 1000px;
  }
}

/*
作用域：产品页共享视觉令牌、富文本、按钮和基础排版，服务于 `twoColumnContent`、`contentGrid`、`buttonBand` 等 section。
责任归属：widget 自身 + 父容器自身。
添加原因：该段为从旧产品页样式迁移来的存量基础层，集中维护产品页通用颜色、字号、链接和按钮规则，减少各 section 重复声明。
添加时间：2026-03-23（存量样式清理，原样式来源为 `assets/css/products-pages.css`）。
*/
:root {
  --jdw-product-blue: #002058;
  --jdw-product-blue-link: #003087;
  --jdw-product-red: #c8102e;
  --jdw-product-red-hover: #820014;
  --jdw-product-gray: #d8d8d8;
  --jdw-product-card-gray: #f0f0f0;
  --jdw-product-muted: #d0d0ce;
}

.jdw-product-richtext,
.jdw-product-richtext p,
.jdw-product-richtext li,
.jdw-product-richtext .elementor-text-editor,
.jdw-product-richtext .elementor-text-editor p,
.jdw-product-richtext .elementor-text-editor li,
.jdw-product-cta__content .elementor-text-editor,
.jdw-product-cta__content .elementor-text-editor p,
.jdw-product-cta__content .elementor-text-editor li {
  color: var(--jdw-product-blue);
  font-family: "Acumin Pro Regular", Helvetica, Arial, sans-serif;
  font-size: 16px;
  line-height: 1.5;
}

@media (min-width: 992px) {
  .jdw-product-richtext,
  .jdw-product-richtext p,
  .jdw-product-richtext li,
  .jdw-product-richtext .elementor-text-editor,
  .jdw-product-richtext .elementor-text-editor p,
  .jdw-product-richtext .elementor-text-editor li,
  .jdw-product-cta__content .elementor-text-editor,
  .jdw-product-cta__content .elementor-text-editor p,
  .jdw-product-cta__content .elementor-text-editor li {
    font-size: 18px;
  }
}

.jdw-product-richtext > p:first-child,
.jdw-product-richtext > ul:first-child,
.jdw-product-richtext > ol:first-child,
.jdw-product-richtext .elementor-text-editor p:first-child,
.jdw-product-richtext .elementor-text-editor ul:first-child,
.jdw-product-richtext .elementor-text-editor ol:first-child,
.jdw-product-cta__content .elementor-text-editor p:first-child,
.jdw-product-cta__content .elementor-text-editor ul:first-child,
.jdw-product-cta__content .elementor-text-editor ol:first-child {
  margin-top: 0;
}

.jdw-product-richtext > p,
.jdw-product-richtext .elementor-text-editor p,
.jdw-banner-copy > p,
.jdw-banner-copy .elementor-text-editor p {
  margin-top: 0;
  margin-bottom: 13.5px;
}

.jdw-product-richtext > p:last-child,
.jdw-product-richtext > ul:last-child,
.jdw-product-richtext > ol:last-child,
.jdw-product-richtext .elementor-text-editor p:last-child,
.jdw-product-richtext .elementor-text-editor ul:last-child,
.jdw-product-richtext .elementor-text-editor ol:last-child,
.jdw-product-cta__content .elementor-text-editor p:last-child,
.jdw-product-cta__content .elementor-text-editor ul:last-child,
.jdw-product-cta__content .elementor-text-editor ol:last-child {
  margin-bottom: 0;
}

/*
作用域：`Custom Millwork` 页面 `section2` 右列富文本末段，绑定 `.jdw-product-richtext--keep-last-margin`。
责任归属：widget 自身。
添加原因：来源页 `section2` 正文的最后一个 `<p>` 在各断点都保留 `13.5px` 底外边距，但共享 `.jdw-product-richtext > p:last-child` 归零规则会把末段底距清掉，导致右列文案高度和 `section2 -> section3` 的可见节奏偏短；这里按页面级例外只恢复这条富文本的末段底外边距。`section4 -> section5` 的间距已改回 Elementor 原生 widget 响应式 margin，不再依赖这个 class。
添加时间：2026-03-27。
*/
.jdw-product-richtext--keep-last-margin > p:last-child,
.jdw-product-richtext--keep-last-margin .elementor-text-editor p:last-child {
  margin-bottom: 13.5px;
}

.jdw-product-richtext a:not(.btn):not(.elementor-button-link),
.jdw-product-richtext
  .elementor-text-editor
  a:not(.btn):not(.elementor-button-link),
.jdw-product-cta__content
  .elementor-text-editor
  a:not(.btn):not(.elementor-button-link) {
  color: var(--jdw-product-blue-link);
  text-decoration: underline;
}

.jdw-product-richtext a:not(.btn):not(.elementor-button-link):hover,
.jdw-product-richtext a:not(.btn):not(.elementor-button-link):focus,
.jdw-product-richtext
  .elementor-text-editor
  a:not(.btn):not(.elementor-button-link):hover,
.jdw-product-richtext
  .elementor-text-editor
  a:not(.btn):not(.elementor-button-link):focus,
.jdw-product-cta__content
  .elementor-text-editor
  a:not(.btn):not(.elementor-button-link):hover,
.jdw-product-cta__content
  .elementor-text-editor
  a:not(.btn):not(.elementor-button-link):focus {
  text-decoration: none;
}

.jdw-banner-copy,
.jdw-banner-copy p,
.jdw-banner-copy li,
.jdw-banner-copy .elementor-text-editor,
.jdw-banner-copy .elementor-text-editor p,
.jdw-banner-copy .elementor-text-editor li {
  color: var(--jdw-product-blue);
  font-family: "Acumin Pro Regular", Helvetica, Arial, sans-serif;
  font-size: 16px;
  line-height: 24px;
}

/*
作用域：通用 `bannerContentBox` 正文富文本内的强调标签，绑定 `.jdw-banner-copy strong`、`.jdw-banner-copy b` 及其 `.elementor-text-editor` 变体。
责任归属：`widget 自身`。
添加原因：来源页 banner 正文里的强调词使用 `Acumin Pro Bold` 字族，但 Elementor `Text Editor` 前台默认只把 `<strong>/<b>` 提升为 `font-weight: 700`，仍沿用 `Acumin Pro Regular`。这会改变强调词宽度，进而让临界长度的段落在 mobile 少换一行。`Digital Solutions` 第三条 banner 已实测暴露该问题：来源页首段为 `96px` 高、测试站为 `72px`。这里用 banner 富文本级别的稳定 class 恢复来源页真实字族与字重，不扩散到其他组件。
添加时间：2026-03-29
*/
.jdw-banner-copy strong,
.jdw-banner-copy b,
.jdw-banner-copy .elementor-text-editor strong,
.jdw-banner-copy .elementor-text-editor b {
  font-family: "Acumin Pro Bold", Helvetica, Arial, sans-serif;
  font-weight: 400;
}

.jdw-banner-copy a,
.jdw-banner-copy .elementor-text-editor a {
  color: var(--jdw-product-blue-link);
  text-decoration: underline;
}

.jdw-banner-copy a:hover,
.jdw-banner-copy a:focus,
.jdw-banner-copy .elementor-text-editor a:hover,
.jdw-banner-copy .elementor-text-editor a:focus {
  text-decoration: none;
}

@media (min-width: 1440px) {
  .jdw-banner-copy,
  .jdw-banner-copy p,
  .jdw-banner-copy li,
  .jdw-banner-copy .elementor-text-editor,
  .jdw-banner-copy .elementor-text-editor p,
  .jdw-banner-copy .elementor-text-editor li {
    font-size: 18px;
    line-height: 27px;
  }
}

.jdw-banner-copy > p:first-child,
.jdw-banner-copy > ul:first-child,
.jdw-banner-copy > ol:first-child,
.jdw-banner-copy .elementor-text-editor p:first-child,
.jdw-banner-copy .elementor-text-editor ul:first-child,
.jdw-banner-copy .elementor-text-editor ol:first-child {
  margin-top: 0;
}

/*
作用域：含列表富文本的 `bannerContentBox` 正文 widget，绑定 `.jdw-banner-copy--list-spaced`。
责任归属：`widget 自身`。
添加原因：来源页这类 banner 正文里的列表使用 `ul margin-bottom: 13.5px` 与 `li padding-bottom: 10px` 形成更高的文本节奏；Elementor `Text Editor` 在前台会退回浏览器默认 `ul 16/16` 外边距且 `li` 不带底内边距，导致 `Installed Services` 灰底 banner 在 `390 / 820 / 1560` 都被压短。这里用 widget 级稳定 class 恢复来源页列表行盒，不影响无列表的 banner。
添加时间：2026-03-29
*/
.jdw-banner-copy--list-spaced > ul,
.jdw-banner-copy--list-spaced > ol,
.jdw-banner-copy--list-spaced .elementor-text-editor > ul,
.jdw-banner-copy--list-spaced .elementor-text-editor > ol {
  margin-top: 0;
  margin-bottom: 13.5px;
}

.jdw-banner-copy--list-spaced li,
.jdw-banner-copy--list-spaced .elementor-text-editor li {
  padding-bottom: 10px;
}

.content-grid.colored-background.jdw-product-grid {
  margin-bottom: 20px;
}

.content-grid.colored-background
  .jdw-product-grid__heading
  .elementor-heading-title {
  margin-bottom: 0;
}

.jdw-product-richtext .btn.btn-default,
.jdw-product-cta__content .btn.btn-default,
.jdw-product-button .elementor-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 46px;
  padding: 12px 30px;
  border: 3px solid var(--jdw-product-red);
  border-radius: 0;
  background: var(--jdw-product-red);
  color: #ffffff;
  font-family: "Acumin Pro Regular", Helvetica, Arial, sans-serif;
  font-size: 16px;
  line-height: 1;
  text-decoration: none;
  transition:
    background-color 0.2s ease,
    border-color 0.2s ease;
}

.jdw-product-richtext .btn.btn-default:hover,
.jdw-product-richtext .btn.btn-default:focus,
.jdw-product-cta__content .btn.btn-default:hover,
.jdw-product-cta__content .btn.btn-default:focus,
.jdw-product-button .elementor-button:hover,
.jdw-product-button .elementor-button:focus {
  background: var(--jdw-product-red-hover);
  border-color: var(--jdw-product-red-hover);
  color: #ffffff;
}

.jdw-product-note,
.jdw-product-note p {
  font-size: 16px !important;
}

/*
作用域：`twoColumnContent` 内的高亮导语段落，绑定 `.twoColumnContent .jdw-product-richtext p.highlight`。
责任归属：widget 自身。
添加原因：`Delivery & Pickup` section2 的首段高亮文案沿用了来源 HTML 的 `p.highlight`，但测试站被 `.jdw-product-richtext p` 的普通正文规则覆盖，导致字号从目标站的 `24 / 30px` 退回到 `16 / 18px`。这里单独恢复来源页的高亮字号、行高和字族，避免继续影响普通正文。
添加时间：2026-03-25。
*/
.twoColumnContent .jdw-product-richtext p.highlight,
.twoColumnContent .jdw-product-richtext .elementor-text-editor p.highlight {
  font-family: "Acumin Pro Bold", Helvetica, Arial, sans-serif;
  font-weight: 400;
  font-size: 24px;
  line-height: 1.2;
}

@media (min-width: 992px) {
  .twoColumnContent .jdw-product-richtext p.highlight,
  .twoColumnContent .jdw-product-richtext .elementor-text-editor p.highlight {
    font-size: 30px;
  }
}

/*
作用域：`twoColumnContent` 左侧标题 widget，绑定 `.twoColumnContent > .headline > .jdw-product-section-title` 与其 `.elementor-heading-title`。
责任归属：widget 自身。
添加原因：`Delivery & Pickup` section2 的左侧标题在 `768-991` 被服务页导入脚本写成了 `40 / 40 / 2px` 且额外带 `40px` 左内边距，导致标题比目标站多偏移一层；在 `<=767` 又叠加了 widget 自身的 `20px` 底外边距和标题元素的 `20px` 底外边距，使标题与正文之间的可见 gap 从目标站的 `20px` 变成 `40px`。这里按真实断点恢复平板标题排版，并去掉移动端重复的 widget 底外边距。
添加时间：2026-03-25。
*/
@media (max-width: 767px) {
  .twoColumnContent > .headline > .jdw-product-section-title {
    margin-bottom: 0 !important;
  }
}

@media (min-width: 768px) and (max-width: 991px) {
  .twoColumnContent > .headline > .jdw-product-section-title {
    padding-left: 0 !important;
  }

  .twoColumnContent > .headline > .jdw-product-section-title .elementor-heading-title {
    font-size: 32px !important;
    line-height: 32px !important;
    letter-spacing: 1.6px !important;
  }
}

/*
作用域：`twoColumnContent` 内由富文本直接输出的主 CTA 按钮，绑定 `.twoColumnContent .jdw-product-richtext .btn.btn-default`。
责任归属：widget 自身。
添加原因：`Delivery & Pickup` section2 的 CTA 沿用了来源 HTML 的富文本内联按钮，共享 `.jdw-product-richtext .btn.btn-default` 规则把桌面字号与按钮高度压成了 `16px / 46px`，与目标站 detail intro 的 `18px / 50px` 不一致。这里仅恢复 `twoColumnContent` 内联按钮的字号、行高和上下内边距，不影响其他产品页 CTA。
添加时间：2026-03-25。
*/
.twoColumnContent .jdw-product-richtext .btn.btn-default,
.twoColumnContent .jdw-product-richtext .elementor-text-editor .btn.btn-default {
  min-height: 48px;
  padding: 14px 30px 12px;
  font-size: 16px;
  line-height: 16px;
}

@media (min-width: 992px) {
  .twoColumnContent .jdw-product-richtext .btn.btn-default,
  .twoColumnContent .jdw-product-richtext .elementor-text-editor .btn.btn-default {
    min-height: 50px;
    font-size: 18px;
    line-height: 18px;
  }
}

/*
作用域：产品页双栏导语 section，覆盖 `.jdw-product-two-col*` 与 `twoColumnContent`。
责任归属：父容器自身 + 跨元素关系。
添加原因：该段为存量兼容样式，负责 headline/content 在不同断点下的宽度分配与内边距；CTA 行与正文之间的垂直节奏由正文 widget 自身的下边距承担，不再叠加 actions 容器上边距。
添加时间：2026-03-23（存量样式清理）。
*/
.jdw-product-two-col {
  margin-top: 20px;
  margin-bottom: 40px;
}

.jdw-product-two-col--first {
  margin-top: 40px;
}

.jdw-product-two-col__headline,
.jdw-product-two-col__content {
  padding-left: 20px;
  padding-right: 20px;
}

@media (min-width: 768px) {
  .jdw-product-two-col__headline {
    padding-left: 40px;
    padding-right: 5%;
  }

  .jdw-product-two-col__content {
    padding-right: 20px;
  }
}

@media (min-width: 992px) {
  .jdw-product-two-col__headline {
    padding-left: 6.5%;
  }

  .jdw-product-two-col__content {
    padding-right: 10%;
  }
}

@media (max-width: 767px) {
  .twoColumnContent > .headline,
  .twoColumnContent > .content {
    width: 100%;
    padding-right: 0;
    padding-left: 0;
  }

  .twoColumnContent > .content > .actions .jdw-product-button .elementor-button,
  .buttonBand .elementor-button {
    font-size: 16px !important;
    line-height: 16px !important;
  }

  .twoColumnContent > .content > .actions .jdw-product-inline-link,
  .twoColumnContent > .content > .actions .jdw-product-inline-link a {
    font-size: 16px;
    line-height: 24px;
  }
}

@media (min-width: 768px) and (max-width: 991px) {
  .twoColumnContent > .headline {
    width: 40%;
    padding-right: 5%;
    padding-left: 40px;
  }

  .twoColumnContent > .content {
    width: 60%;
    padding-right: 20px;
    padding-left: 0;
  }

  .twoColumnContent > .content > .actions .jdw-product-button .elementor-button,
  .buttonBand .elementor-button {
    font-size: 16px !important;
    line-height: 16px !important;
  }

  .twoColumnContent > .content > .actions .jdw-product-inline-link,
  .twoColumnContent > .content > .actions .jdw-product-inline-link a {
    font-size: 16px;
    line-height: 24px;
  }
}

/*
作用域：`Build Science™ 201` 页首双栏 intro，绑定 `.twoColumnContent--build-science-intro`。
责任归属：widget 自身。
添加原因：2026-03-30 复测发现来源页该 intro 在 `768-991px` 的正文仍是 `16 / 24`，
而 `>=992px` 会回到 `18 / 27`。这组断点无法仅靠当前页面 importer 的 `tablet / desktop`
控件稳定覆盖，因此用页面级稳定 class 在主题样式里补一层非重叠 media query。
添加时间：2026-03-30。
*/
@media (min-width: 768px) and (max-width: 991px) {
  .twoColumnContent--build-science-intro .twoColumnContent__copy,
  .twoColumnContent--build-science-intro .twoColumnContent__copy p {
    font-size: 16px !important;
    line-height: 24px !important;
  }
}

@media (min-width: 992px) and (max-width: 1439px) {
  .twoColumnContent > .headline {
    width: 40%;
    padding-right: 5%;
    padding-left: 6.5%;
  }

  .twoColumnContent > .content {
    width: 60%;
    padding-right: 10%;
    padding-left: 0;
  }

}

/*
作用域：产品页 section 标题与品牌 logo 组件，绑定 `.jdw-product-section-title` / `.jdw-product-logo`。
责任归属：widget 自身。
添加原因：该段为存量兼容样式，负责标题装饰条、字号升级以及 logo 容器尺寸，保证产品页各 section 标题体系一致。
添加时间：2026-03-23（存量样式清理）。
*/
.jdw-product-section-title .elementor-heading-title {
  position: relative;
  max-width: 390px;
  margin: 0;
  color: var(--jdw-product-blue);
  font-family: "Apotek Extra Condensed Bold", Helvetica, Arial, sans-serif;
  font-size: 32px;
  font-weight: 400;
  line-height: 1;
  letter-spacing: 0.05em;
  text-align: left;
}

@media (max-width: 767px) {
  .jdw-product-section-title .elementor-heading-title {
    margin-bottom: 20px;
  }
}

@media (min-width: 992px) {
  .jdw-product-section-title .elementor-heading-title {
    font-size: 40px;
  }

  .jdw-product-section-title .elementor-heading-title::before {
    content: "";
    position: absolute;
    top: 0;
    left: -45px;
    width: 23px;
    height: 95%;
    background: url("../images/heading-decor.png") repeat-y;
  }
}

@media (min-width: 1440px) {
  .jdw-product-section-title .elementor-heading-title {
    font-size: 44px;
  }
}

.jdw-product-logo .elementor-widget-container {
  max-width: 350px;
}

.jdw-product-logo img {
  display: block;
  width: 100%;
  height: auto;
}

/*
作用域：Services 详情页高亮图文 section，绑定 `.contentHighlightComponent` / `.contentHighlightComponent__inner` / `.contentHighlightComponent__image` / `.jdw-content-highlight__richtext`。
责任归属：父容器自身 + 跨元素关系。
添加原因：该 section 需要在 `<=991` 保持图片在上、文案在下并使用 `20 / 30px` 横向安全边距，在 `>=992` 切换为左图右文且图列 `30% + max-width: 420px`；同时标题对齐、列内 padding、深色底富文本反白都依赖多层容器和富文本内部标签。实测 Elementor 容器的响应式 `flex-direction / width / padding / heading align` 在该结构上会被桌面值覆盖，不能稳定表达来源页断点行为，因此改由主题 `style.css` 用非重叠 media query 兜底。
添加时间：2026-03-25。
*/
.contentHighlightComponent > .contentHighlightComponent__inner {
  display: flex;
  flex-direction: column;
  padding-left: 20px;
  padding-right: 20px;
}

.contentHighlightComponent > .contentHighlightComponent__inner > .contentHighlightComponent__image,
.contentHighlightComponent > .contentHighlightComponent__inner > .contentHighlightComponent__content {
  width: 100% !important;
}

.contentHighlightComponent > .contentHighlightComponent__inner > .contentHighlightComponent__image {
  width: 100%;
  max-width: none;
  margin-bottom: 40px;
  aspect-ratio: 16 / 9;
  overflow: hidden;
}

.contentHighlightComponent
  > .contentHighlightComponent__inner
  > .contentHighlightComponent__content
  > .contentHighlightComponent__headline {
  padding: 0 !important;
}

.contentHighlightComponent
  > .contentHighlightComponent__inner
  > .contentHighlightComponent__content
  > .contentHighlightComponent__headline
  .elementor-heading-title {
  text-align: center;
  margin: 0 0 40px;
  padding: 0;
  font-size: 32px !important;
  line-height: 32px !important;
  letter-spacing: 1.6px !important;
}

.contentHighlightComponent
  > .contentHighlightComponent__inner
  > .contentHighlightComponent__content
  > .contentHighlightComponent__columns
  > .contentHighlightComponent__column {
  width: 100%;
  padding: 0;
}

@media (min-width: 768px) {
  .contentHighlightComponent > .contentHighlightComponent__inner {
    padding-left: 30px;
    padding-right: 30px;
  }

  .contentHighlightComponent > .contentHighlightComponent__inner > .contentHighlightComponent__image {
    margin-bottom: 60px;
  }

  .contentHighlightComponent
    > .contentHighlightComponent__inner
    > .contentHighlightComponent__content
    > .contentHighlightComponent__columns {
    display: flex;
    flex-wrap: wrap;
  }

  .contentHighlightComponent
    > .contentHighlightComponent__inner
    > .contentHighlightComponent__content
    > .contentHighlightComponent__columns
    > .contentHighlightComponent__column {
    padding: 0 20px;
  }
}

@media (min-width: 992px) {
  .contentHighlightComponent > .contentHighlightComponent__inner {
    flex-direction: row;
    padding-left: 6.5%;
    padding-right: 6.5%;
  }

  .contentHighlightComponent > .contentHighlightComponent__inner > .contentHighlightComponent__image {
    flex: 0 0 30%;
    width: 30% !important;
    margin-bottom: 0;
    aspect-ratio: 1 / 1;
    max-width: 420px;
  }

  .contentHighlightComponent > .contentHighlightComponent__inner > .contentHighlightComponent__content {
    flex: 1 1 auto;
    width: auto !important;
  }

  .has-image.contentHighlightComponent
    > .contentHighlightComponent__inner
    > .contentHighlightComponent__content
    > .contentHighlightComponent__headline {
    padding-left: 40px !important;
  }

  .has-image.contentHighlightComponent
    > .contentHighlightComponent__inner
    > .contentHighlightComponent__content
    > .contentHighlightComponent__headline
    .elementor-heading-title {
    text-align: left;
    font-size: 40px !important;
    line-height: 40px !important;
    letter-spacing: 2px !important;
  }

  .contentHighlightComponent
    > .contentHighlightComponent__inner
    > .contentHighlightComponent__content
    > .contentHighlightComponent__columns
    > .contentHighlightComponent__column {
    padding: 0 40px;
  }
}

@media (min-width: 1200px) {
  .has-image.contentHighlightComponent
    > .contentHighlightComponent__inner
    > .contentHighlightComponent__content
    > .contentHighlightComponent__headline {
    padding-left: 80px !important;
  }

  .has-image.contentHighlightComponent
    > .contentHighlightComponent__inner
    > .contentHighlightComponent__content
    > .contentHighlightComponent__headline
    .elementor-heading-title {
    font-size: 40px !important;
    line-height: 40px !important;
    letter-spacing: 2px !important;
  }

  .contentHighlightComponent
    > .contentHighlightComponent__inner
    > .contentHighlightComponent__content
    > .contentHighlightComponent__columns
    > .contentHighlightComponent__column {
    padding: 0 80px;
  }
}

/*
作用域：Services 详情页高亮图文 `content-aligned-left` 变体，绑定 `.contentHighlightComponent.content-aligned-left` 及其
`.contentHighlightComponent__inner / __content / __column`。
责任归属：跨元素关系。
添加原因：2026-03-26 复刻 `Millwork Capabilities` section6 时，来源页在 `768-991` 就已经把正文列内边距切成 `0 80px 0 0`，
到 `>=992` 再进一步把图文顺序翻成“左文右图”。若继续沿用共享模板，`820px` 档会多出 `20px` 左内边距，桌面档图片也会停在左侧。
这里仅补 `content-aligned-left` 变体的右侧收口与桌面顺序，不影响普通左图右文版本。
添加时间：2026-03-26。
*/
@media (min-width: 768px) {
  .has-image.contentHighlightComponent.content-aligned-left
    > .contentHighlightComponent__inner
    > .contentHighlightComponent__content
    > .contentHighlightComponent__headline {
    padding: 0 80px 0 0 !important;
  }

  .contentHighlightComponent.content-aligned-left
    > .contentHighlightComponent__inner
    > .contentHighlightComponent__content
    > .contentHighlightComponent__columns
    > .contentHighlightComponent__column {
    padding: 0 80px 0 0;
  }
}

@media (min-width: 992px) {
  .contentHighlightComponent.content-aligned-left > .contentHighlightComponent__inner {
    flex-direction: row-reverse;
  }
}

/*
作用域：Services 详情页高亮图文 `two-columns` 变体，绑定 `.contentHighlightComponent.two-columns` 下的正文列容器。
责任归属：跨元素关系。
添加原因：2026-03-28 复刻 `Truss & EWP Design` 页时，来源页在 `768-991`、`992-1199`、`>=1200` 三档都要求正文列保持 `50 / 50` 横排；共享单列模板默认把 `.contentHighlightComponent__column` 固定为 `width: 100%`，即使 Elementor 页面数据写成 `50%` 也会被主题共享规则覆盖。进一步量测发现 `992-1199` 档的来源页仍保留 `image: flex 1 1 30% + content:block` 的布局语义，若继续沿用 Elementor 默认的固定 `0 0 30%` 图片列与 flex content，会把两列正文压窄并让 CTA 提前换行。这里仅为 `two-columns` 变体补非重叠 media query，不影响既有单列高亮图文 section。
添加时间：2026-03-28。
*/
@media (min-width: 768px) {
  .contentHighlightComponent.two-columns
    > .contentHighlightComponent__inner
    > .contentHighlightComponent__content
    > .contentHighlightComponent__columns
    > .contentHighlightComponent__column {
    width: 50% !important;
  }
}

@media (min-width: 992px) and (max-width: 1199px) {
  .contentHighlightComponent.two-columns
    > .contentHighlightComponent__inner
    > .contentHighlightComponent__image {
    flex: 1 1 30% !important;
    width: auto !important;
  }

  .contentHighlightComponent.two-columns
    > .contentHighlightComponent__inner
    > .contentHighlightComponent__content {
    display: block !important;
    width: auto !important;
  }

  .contentHighlightComponent.two-columns
    > .contentHighlightComponent__inner
    > .contentHighlightComponent__content
    > .contentHighlightComponent__columns
    > .contentHighlightComponent__column {
    flex: 1 1 50% !important;
    max-width: 50% !important;
  }
}

/*
作用域：Services 详情页高亮图文 `two-columns` 变体的列内标题与富文本 CTA，绑定 `.contentHighlightComponent.two-columns .contentHighlightComponent__column-heading .elementor-heading-title` 与 `.jdw-content-highlight__richtext a.btn.btn-default`。
责任归属：widget 自身 + 跨元素关系。
添加原因：2026-03-28 复刻 `Truss & EWP Design` 页时，量测发现 Elementor Heading widget 在当前站点会把 `768-991` 档误落到桌面 `30 / 30 / 1.5px`，而来源页该区间仍是 `22 / 22 / 1.1px`；同时富文本内 CTA 默认按钮样式只有 `12px` 顶内边距并允许换行，导致 `390 / 820 / 1024` 档按钮高度偏短、`1024` 档甚至两行换行，把整段 section 高度撑大。这里仅对 `two-columns` 变体补非重叠断点标题值与按钮几何，不影响单列高亮图文 section。
添加时间：2026-03-28。
*/
@media (max-width: 991px) {
  .contentHighlightComponent.two-columns
    .contentHighlightComponent__column-heading
    .elementor-heading-title {
    font-size: 22px !important;
    line-height: 22px !important;
    letter-spacing: 1.1px !important;
  }
}

.contentHighlightComponent.two-columns .jdw-content-highlight__richtext a.btn.btn-default,
.contentHighlightComponent.two-columns
  .jdw-content-highlight__richtext
  .elementor-text-editor
  a.btn.btn-default {
  display: inline-block !important;
  padding: 14px 30px 12px !important;
  text-align: center !important;
  white-space: nowrap;
}

@media (min-width: 1200px) {
  .contentHighlightComponent.two-columns .jdw-content-highlight__richtext a.btn.btn-default,
  .contentHighlightComponent.two-columns
    .jdw-content-highlight__richtext
    .elementor-text-editor
    a.btn.btn-default {
    font-size: 18px !important;
    line-height: 18px !important;
  }
}

/*
作用域：`Millwork Capabilities` 页的 `contentHighlightComponent` 变体，绑定 `.contentHighlightComponent--millwork`。
责任归属：父容器自身。
添加原因：2026-03-26 复刻 `Millwork Capabilities` section5 时，来源页的大屏图列没有继承通用模板的
`max-width: 420px` 收口，而是继续按 `30%` 随内层宽度增长；在 `1800px` 视口下来源页图片宽高约为
`469.8px`，测试站若沿用共享 `420px` 上限会把左图压小。这里仅为该页面变体取消桌面图列上限，
保留现有 `30%`、`1:1` 和其余断点逻辑，避免影响已验收的其他 Services 详情页。
添加时间：2026-03-26。
*/
@media (min-width: 992px) {
  .contentHighlightComponent--millwork
    > .contentHighlightComponent__inner
    > .contentHighlightComponent__image {
    max-width: none;
  }
}

.jdw-content-highlight--dark .jdw-content-highlight__richtext,
.jdw-content-highlight--dark .jdw-content-highlight__richtext p,
.jdw-content-highlight--dark .jdw-content-highlight__richtext li,
.jdw-content-highlight--dark .jdw-content-highlight__richtext .elementor-text-editor,
.jdw-content-highlight--dark .jdw-content-highlight__richtext .elementor-text-editor p,
.jdw-content-highlight--dark .jdw-content-highlight__richtext .elementor-text-editor li {
  color: #ffffff;
}

.jdw-content-highlight--dark
  .jdw-content-highlight__richtext
  a:not(.btn):not(.elementor-button-link),
.jdw-content-highlight--dark
  .jdw-content-highlight__richtext
  .elementor-text-editor
  a:not(.btn):not(.elementor-button-link) {
  color: #ffffff;
}

/*
作用域：`Millwork Capabilities` 页高亮图文 section 富文本内的小标题，绑定 `.contentHighlightComponent--millwork .jdw-content-highlight__richtext h3`。
责任归属：widget 自身。
添加原因：2026-03-26 复刻 `Millwork Capabilities` section5 时，来源页正文列内部使用富文本内联 `h3 + p` 组合作为子标题，
其可见结果需要维持 `31 / 31 / letter-spacing: 1.5px / margin: 0`，且颜色继承当前深浅主题。测试站前台若不接管，会退回
Elementor/浏览器默认 `32px` 标题样式并带 `32px` 上下外边距，直接把右列与整段 section 高度撑大。这里仅恢复该 section
富文本内 `h3` 的真实排版，不影响页面其他 Heading widget。2026-03-26 根据用户明确要求，把字距固定为 `1.5px`，不再沿用
参考页的 `normal`。
添加时间：2026-03-26。
*/
.contentHighlightComponent--millwork .jdw-content-highlight__richtext > h3,
.contentHighlightComponent--millwork .jdw-content-highlight__richtext .elementor-text-editor > h3 {
  margin-top: 0;
  margin-bottom: 0;
  color: inherit;
  font-family: "Apotek Extra Condensed Bold", Helvetica, Arial, sans-serif;
  font-size: 31px;
  font-weight: 500;
  line-height: 31px;
  letter-spacing: 1.5px;
}

/*
作用域：Services 详情页高亮图文的无图正文变体，绑定 `.contentHighlightComponent--no-image`。
责任归属：父容器自身 + 跨元素关系。
添加原因：2026-03-28 复测 `Pro Remodel` `section7` 时，来源页无图版不会继承有图版的列内 `20 / 40 / 80px`
左右收口，桌面 `>=1200px` 也会把标题切回 `40 / 40 / 2px`。共享 `contentHighlightComponent` 规则默认按有图版收正文列，
导致当前页正文宽度被压窄，`1560px` 档整段高度也比来源页偏短。这里把无图版单独收回“headline 与正文同宽”的几何结果。
添加时间：2026-03-28。
*/
@media (min-width: 768px) {
  .contentHighlightComponent--no-image
    > .contentHighlightComponent__inner
    > .contentHighlightComponent__content
    > .contentHighlightComponent__columns
    > .contentHighlightComponent__column {
    padding: 0;
  }
}

@media (min-width: 1200px) {
  .contentHighlightComponent--no-image
    > .contentHighlightComponent__inner
    > .contentHighlightComponent__content
    > .contentHighlightComponent__headline
    .elementor-heading-title {
    font-size: 40px !important;
    line-height: 40px !important;
    letter-spacing: 2px !important;
  }
}

/*
作用域：Services 详情页高亮图文 section 的富文本正文，绑定 `.contentHighlightComponent .jdw-content-highlight__richtext`。
责任归属：widget 自身。
添加原因：`Delivery & Pickup` section3 的正文与列表在目标站 `992-1199` 仍保持 `16 / 24`，到 `>=1200` 才切到 `18 / 27`；共享 `.jdw-product-richtext` 规则却从 `>=992` 就提前升字，导致右侧文案列总高度被撑大，左图等高一起失真。这里单独按该 section 的真实断点恢复正文与列表排版。
添加时间：2026-03-25。
*/
.contentHighlightComponent .jdw-content-highlight__richtext,
.contentHighlightComponent .jdw-content-highlight__richtext p,
.contentHighlightComponent .jdw-content-highlight__richtext li,
.contentHighlightComponent .jdw-content-highlight__richtext .elementor-text-editor,
.contentHighlightComponent .jdw-content-highlight__richtext .elementor-text-editor p,
.contentHighlightComponent .jdw-content-highlight__richtext .elementor-text-editor li {
  font-size: 16px;
  line-height: 24px;
}

@media (min-width: 1200px) {
  .contentHighlightComponent .jdw-content-highlight__richtext,
  .contentHighlightComponent .jdw-content-highlight__richtext p,
  .contentHighlightComponent .jdw-content-highlight__richtext li,
  .contentHighlightComponent .jdw-content-highlight__richtext .elementor-text-editor,
  .contentHighlightComponent .jdw-content-highlight__richtext .elementor-text-editor p,
  .contentHighlightComponent .jdw-content-highlight__richtext .elementor-text-editor li {
    font-size: 18px;
    line-height: 27px;
  }
}

/*
作用域：Services 详情页高亮图文 section 的末尾 note 段落，绑定 `.contentHighlightComponent .jdw-content-highlight__richtext > p:last-child`。
责任归属：widget 自身。
添加原因：目标站该 section 的最后一段 note 在所有断点都保留 `13.5px` 底外边距，但共享 `.jdw-product-richtext > p:last-child` 规则会把它清成 `0`，从而缩短右侧文案列并直接影响左图等高结果。这里单独恢复该 section 的末段节奏。
添加时间：2026-03-25。
*/
.contentHighlightComponent .jdw-content-highlight__richtext > p:last-child,
.contentHighlightComponent .jdw-content-highlight__richtext .elementor-text-editor > p:last-child {
  margin-bottom: 13.5px;
}

/*
作用域：Services 详情页高亮图文 section 内的富文本无序列表，绑定 `.contentHighlightComponent .jdw-content-highlight__richtext ul` 与其 `li`。
责任归属：widget 自身。
添加原因：`Delivery & Pickup` section3 的列表没有命中目标站的容器缩进和列表项节奏，前台退回浏览器默认 `margin: 1em 0`、`padding-left: 40px`，同时 `li` 丢失了目标站统一的 `padding-bottom: 10px`。这里仅恢复该 section 富文本列表的容器几何和列表项底部留白，不影响其他页面富文本。
添加时间：2026-03-25。
*/
.contentHighlightComponent .jdw-content-highlight__richtext > ul,
.contentHighlightComponent .jdw-content-highlight__richtext .elementor-text-editor > ul {
  margin-top: 0;
  margin-bottom: 13.5px;
  padding-left: 25px;
}

.contentHighlightComponent .jdw-content-highlight__richtext > ul > li,
.contentHighlightComponent .jdw-content-highlight__richtext .elementor-text-editor > ul > li {
  padding-bottom: 10px;
}

/*
作用域：产品页 banner / content box section，覆盖 `.bannerContentBox` / `.jdw-product-banner*`。
责任归属：父容器自身 + widget 自身 + 跨元素关系。
添加原因：该段为存量兼容样式，负责图片纵横比、深色文案反白、`>=768` 时的 source flex 语义、相邻 banner 间距、左右顺序切换和桌面端 box 内边距；Elementor 原生宽度控件无法稳定表达目标站 `image 60% + box auto flex` 的组合。2026-03-25 补充修正：`768-1199` 仅同步图片列外层高度，不再把真实 `<img>` 拉伸到 `100%`，以匹配来源页平板档的可见图片高度；`>=1200` 的 `.image.image-only` 额外声明 `16 / 9` 最小纵横比，避免最后一个 banner 在初始等高计算时被文案盒高度锁短，并补回来源页原有的连续 banner 间距规则。2026-03-27 补充修正：Elementor `Text Editor` 在当前 banner 里直接输出 `<p>`，没有 `.elementor-text-editor` 包裹，原先深色变体只覆盖到 `.elementor-text-editor p`，导致正文段落仍继承通用蓝字；本次把深色变体的白字覆盖扩展到 `.jdw-banner-copy` 根节点及其直属文本标签。
添加时间：2026-03-23（存量样式清理），2026-03-25（平板档图片高度修正、桌面档图片列最小比例修正、连续 banner 间距修正），2026-03-27（深色 banner 直属段落白字修正）。
*/
.bannerContentBox .image {
  line-height: 0;
  overflow: hidden;
}

.bannerContentBox .image > .elementor-widget-image,
.bannerContentBox .image .elementor-widget-container,
.bannerContentBox .image .elementor-image {
  display: block;
  width: 100%;
}

.bannerContentBox .image img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 16 / 9;
  object-fit: cover;
}

.bannerContentBox .headline .elementor-heading-title {
  margin: 0;
}

.jdw-banner-box--dark .headline .elementor-heading-title,
.jdw-banner-box--dark .jdw-banner-copy,
.jdw-banner-box--dark .jdw-banner-copy p,
.jdw-banner-box--dark .jdw-banner-copy li,
.jdw-banner-box--dark .jdw-banner-copy a,
.jdw-banner-box--dark .jdw-banner-copy .elementor-text-editor,
.jdw-banner-box--dark .jdw-banner-copy .elementor-text-editor p,
.jdw-banner-box--dark .jdw-banner-copy .elementor-text-editor li,
.jdw-banner-box--dark .jdw-banner-copy .elementor-text-editor a {
  color: #ffffff;
}

@media (min-width: 768px) {
  .bannerContentBox {
    flex-wrap: nowrap;
    margin-top: 0;
    margin-bottom: 40px;
  }

  .bannerContentBox + .bannerContentBox {
    margin-top: 60px;
  }

  .bannerContentBox > .image {
    flex: 1 1 60% !important;
    width: auto !important;
    min-width: 60% !important;
    max-width: 60% !important;
  }

  .bannerContentBox > .image.image-only {
    position: relative;
    max-width: 1200px;
  }

  .bannerContentBox > .box {
    display: flex;
    align-items: center;
    align-self: center;
    flex: 1 1 auto !important;
    width: auto !important;
    max-width: none !important;
  }

  .bannerContentBox .image,
  .bannerContentBox .image > .elementor-widget-image,
  .bannerContentBox .image .elementor-widget-container,
  .bannerContentBox .image .elementor-image {
    height: 100%;
  }
}

@media (min-width: 1200px) {
  .bannerContentBox {
    margin-bottom: 80px;
  }

  .bannerContentBox > .image.image-only {
    aspect-ratio: 16 / 9;
  }

  .bannerContentBox > .box {
    align-self: center;
    height: auto;
  }

  /*.bannerContentBox > .image.image-only img {
    height: 100%;
    aspect-ratio: auto;
  }*/
}

/*
作用域：`Custom Millwork` 页面 `FROM COAST TO COAST` banner，绑定 `.bannerContentBox--custom-millwork-coast`。
责任归属：父容器自身 + widget 自身 + 跨元素关系。
添加原因：来源页这条 `bannerContentBox` 在 `<=767` 与 `768-1199` 都依赖“`.box` 按内容最小宽度溢出、媒体列保持 `60%`、外层可见区域负责裁切”的布局机制；测试站当前由 Elementor container 输出的 `.inner` 是 flex wrapper，按钮会按 shrink-to-fit 换行、右列最小宽度被压缩，且通用 `.bannerContentBox > .image { max-width: 60%; }` 会把左图锁成剩余流式宽度。另一个断点差异是来源页在 `992-1199` 把副标题提升到 `24 / 28.8`，按钮仍保持 `48px` 高。以上都依赖容器最小内容宽度、nowrap 和非项目默认 `992px` 断点，Elementor 原生控件无法只对这一条 band 稳定表达，因此在主题 CSS 局部覆盖。
添加时间：2026-03-27，2026-03-28。
*/
.bannerContentBox--custom-millwork-coast > .box {
  min-width: auto !important;
  width: auto !important;
  max-width: none !important;
}

.bannerContentBox--custom-millwork-coast > .box > .inner {
  display: block !important;
  min-width: auto !important;
  max-width: none !important;
}

.bannerContentBox--custom-millwork-coast .jdw-product-button .elementor-button {
  display: inline-block !important;
  white-space: nowrap !important;
  min-height: 0 !important;
}

@media (max-width: 767px) {
  .bannerContentBox--custom-millwork-coast > .box {
    flex: 1 1 100% !important;
    padding-bottom: 0 !important;
  }
}

@media (min-width: 768px) and (max-width: 1199px) {
  .bannerContentBox--custom-millwork-coast > .image {
    max-width: 1200px !important;
  }

  .bannerContentBox--custom-millwork-coast > .image img {
    height: 100%;
    aspect-ratio: auto;
  }
}

@media (min-width: 992px) and (max-width: 1199px) {
  .bannerContentBox--custom-millwork-coast .jdw-banner-subheadline .elementor-heading-title {
    font-size: 24px !important;
    line-height: 28.8px !important;
  }
}

/*
作用域：`Build Science™ 201` 页面 `Build Science™ 101` CTA banner，绑定 `.bannerContentBox--build-science-201-cta`。
责任归属：父容器自身 + 跨元素关系。
添加原因：2026-03-30 复测确认来源页这条 CTA band 在 `<=767` 与 `768-991` 的几何都不落在通用
`bannerContentBox` 变体里：mobile 端 `.box` 需要去掉底部 padding 才能把 root 高度压回 `619.375`，
而 `768-991` 还要求左侧文案盒固定为 `405.890625px`、右侧图片列高度固定为 `472px`。这组值同时依赖
box 宽度、图片列高度与两列并排关系；另外 `992-1199` 的 CTA Button 还会被 Elementor 的桌面最小高度
规则抬到 `50px`，而来源页此档仍是 `48px`。这些差异都无法只对当前页这一条 banner 用 Elementor 原生
控件稳定表达，因此用
页面级稳定 class 在主题样式里做最小范围覆盖。
添加时间：2026-03-30。
*/
@media (max-width: 767px) {
  .bannerContentBox--build-science-201-cta > .box {
    padding-bottom: 0 !important;
  }
}

@media (min-width: 768px) and (max-width: 991px) {
  .bannerContentBox--build-science-201-cta > .box {
    width: 405.890625px !important;
    flex: 0 0 405.890625px !important;
    max-width: 405.890625px !important;
  }

  .bannerContentBox--build-science-201-cta > .image {
    height: 472px !important;
    min-height: 472px !important;
  }
}

@media (min-width: 992px) and (max-width: 1199px) {
  .bannerContentBox--build-science-201-cta .jdw-product-button .elementor-button {
    min-height: 48px !important;
  }
}

/*
作用域：`Resources` 页面第二张 banner，绑定 `.bannerContentBox--resources-secondary`。
责任归属：跨元素关系。
添加原因：来源页 `Resources` 在 `768-1199` 虽然连续出现两条 `.bannerContentBox`，但中间视觉 gap 仍保持前一个 band 自带的 `40px` 底间距；全站通用规则 `.bannerContentBox + .bannerContentBox { margin-top: 60px; }` 会把第二张 banner 额外顶开。这个差异依赖相邻兄弟关系，Elementor 原生 margin 控件无法只对该页第二张 banner 稳定豁免，因此在主题 CSS 局部覆盖。
添加时间：2026-03-26。
*/
@media (min-width: 768px) and (max-width: 1199px) {
  .bannerContentBox + .bannerContentBox.bannerContentBox--resources-secondary {
    margin-top: 0;
  }
}

/*
作用域：`Millwork Capabilities` section3 的媒体-only banner 变体，绑定 `.bannerContentBox--media-only`。
责任归属：父容器自身 + widget 自身 + 跨元素关系。
添加原因：该 section 沿用来源页 `.bannerContentBox` 外层语义，但内部只有单个视频封面，没有 `.box` 文案列；现有通用 banner 规则会在 `>=768` 把媒体列固定为 `60%`，与来源页 `<=1199` 满宽、`>=1200` 居中且 `max-width: 1200px` 的几何不一致。另一个问题是该站前台没有稳定带出 `Video` widget 的 overlay 裁切样式，导致封面 `<img>` 按原始 `3:2` 比例撑高；因此这里需要同时补回该变体的 `16:9` 高度公式、封面裁切和播放图标尺寸。
添加时间：2026-03-25。
*/
@media (min-width: 768px) {
  .bannerContentBox--media-only {
    justify-content: center;
  }

  .bannerContentBox--media-only > .image,
  .bannerContentBox--media-only > .image.image-only {
    flex: 0 1 100% !important;
    width: 100% !important;
    min-width: 0 !important;
    max-width: 1200px !important;
    margin-right: auto;
    margin-left: auto;
  }
}

.bannerContentBox--media-only > .image {
  display: block;
}

.bannerContentBox--media-only > .image,
.bannerContentBox--media-only .bannerContentBox__video,
.bannerContentBox--media-only .bannerContentBox__video .elementor-wrapper,
.bannerContentBox--media-only .bannerContentBox__video .elementor-custom-embed-image-overlay,
.bannerContentBox--media-only .bannerContentBox__video .elementor-custom-embed-image-overlay img {
  width: 100%;
  height: calc(min(100vw, 1200px) * 9 / 16);
  min-height: 0;
  max-height: calc(min(100vw, 1200px) * 9 / 16);
}

.bannerContentBox--media-only .bannerContentBox__video > .elementor-widget-container {
  overflow: hidden;
  transform: translateZ(0);
}

.bannerContentBox--media-only .bannerContentBox__video .elementor-custom-embed-image-overlay img {
  display: block;
  object-fit: cover;
  object-position: center center;
}

.bannerContentBox--media-only .bannerContentBox__video .elementor-custom-embed-play {
  width: 80px;
  height: 80px;
  background-color: transparent;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 80 80'%3E%3Ccircle cx='40' cy='40' r='40' fill='%23ffffff'/%3E%3Cpolygon points='31,24 56,40 31,56' fill='%23002058'/%3E%3C/svg%3E");
  background-position: center center;
  background-repeat: no-repeat;
  background-size: 100% 100%;
  border-radius: 0;
  box-shadow: none;
  transform: translate(-50%, -50%) scale(1);
  transition: transform 0.3s ease;
}

.bannerContentBox--media-only .bannerContentBox__video .elementor-custom-embed-play svg {
  display: none;
}

.bannerContentBox--media-only .bannerContentBox__video:hover .elementor-custom-embed-play {
  transform: translate(-50%, -50%) scale(1.175);
}

/*
作用域：`Custom Builder Services` 第三个视频 banner 变体，以及后续同构的 `.bannerContentBox--video`，绑定 `.bannerContentBox--video .bannerContentBox__video*` 与 `.bannerContentBox__video-cta`。
责任归属：父容器自身 + widget 自身 + 跨元素关系。
添加原因：该变体的右侧媒体需要用原生 `Video` widget 承担 Vimeo lightbox 和封面图，但来源页同时要求左侧 `Watch Video` 按钮也打开同一 lightbox；Elementor 原生 `Button` 没有对应的视频 lightbox 控件，因此这里用稳定 class 补齐封面铺满、播放图标样式和 CTA 触发目标的配套视觉约束，点击联动由 `assets/js/main.js` 负责。
添加时间：2026-03-28。
*/
.bannerContentBox--video .bannerContentBox__video > .elementor-widget-container {
  overflow: hidden;
}

.bannerContentBox--video .bannerContentBox__video .elementor-custom-embed-image-overlay {
  overflow: hidden;
}

.bannerContentBox--video .bannerContentBox__video .elementor-custom-embed-image-overlay img {
  display: block;
  width: 100%;
  height: auto;
  object-fit: cover;
  object-position: center center;
}

.bannerContentBox--video .bannerContentBox__video .elementor-custom-embed-play {
  width: 80px;
  height: 80px;
  background-color: transparent;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 80 80'%3E%3Ccircle cx='40' cy='40' r='40' fill='%23ffffff'/%3E%3Cpolygon points='31,24 56,40 31,56' fill='%23002058'/%3E%3C/svg%3E");
  background-position: center center;
  background-repeat: no-repeat;
  background-size: 100% 100%;
  border-radius: 0;
  box-shadow: none;
  transform: translate(-50%, -50%) scale(1);
  transition: transform 0.3s ease;
}

.bannerContentBox--video .bannerContentBox__video .elementor-custom-embed-play svg {
  display: none;
}

.bannerContentBox--video .bannerContentBox__video:hover .elementor-custom-embed-play {
  transform: translate(-50%, -50%) scale(1.175);
}

.bannerContentBox__video-cta .elementor-button {
  cursor: pointer;
}

@media (min-width: 768px) {
  .bannerContentBox--video .bannerContentBox__video,
  .bannerContentBox--video .bannerContentBox__video .elementor-wrapper,
  .bannerContentBox--video .bannerContentBox__video .elementor-custom-embed-image-overlay,
  .bannerContentBox--video .bannerContentBox__video .elementor-custom-embed-image-overlay img {
    width: 100%;
    height: 100%;
  }
}

/*
作用域：`Pro Remodel` 首屏 `twoColumnContent` 引言，绑定 `.twoColumnContent--pro-remodel-intro` 下的 `.jdw-product-richtext` 与内联标题。
责任归属：widget 自身。
添加原因：共享 `twoColumnContent` 会复用产品详情页的 `.jdw-product-richtext` 蓝字规则，而来源页 `Pro Remodel` 首屏右列的 eyebrow、正文和 note 都是纯黑文案；这类颜色差异属于单个富文本 widget 自身视觉，不需要改共享模板，只对该页面变体局部收回黑字。
添加时间：2026-03-28。
*/
.twoColumnContent--pro-remodel-intro .jdw-product-richtext,
.twoColumnContent--pro-remodel-intro .jdw-product-richtext p,
.twoColumnContent--pro-remodel-intro .jdw-product-richtext .text-secondary-bold-lg {
  color: #000000;
}

.twoColumnContent--pro-remodel-intro .jdw-product-richtext > div > p,
.twoColumnContent--pro-remodel-intro .jdw-product-richtext .elementor-text-editor > div > p {
  margin-top: 0;
  margin-bottom: 13.5px;
}

.twoColumnContent--pro-remodel-intro .jdw-product-richtext > div > p.text-secondary-bold-lg,
.twoColumnContent--pro-remodel-intro
  .jdw-product-richtext
  .elementor-text-editor
  > div
  > p.text-secondary-bold-lg {
  font-family: "Apotek Extra Condensed Bold", Helvetica, Arial, sans-serif;
  font-size: 32px;
  font-weight: 400;
  line-height: 32px;
  letter-spacing: 1.6px;
}

.twoColumnContent--pro-remodel-intro .jdw-product-logo img {
  width: 350px;
  max-width: 100%;
  height: auto;
}

/*
作用域：`Pro Remodel` 首屏 `twoColumnContent` 变体，绑定 `.twoColumnContent--pro-remodel-intro`。
责任归属：父容器自身 + widget 自身。
添加原因：2026-03-28 复测发现来源页在 `<=767px` 会给 logo 下方保留 `40px` 可见间距，而 `768-991px` 右列正文仍保持
`16 / 24`，不会提前升到桌面 `18 / 27`。共享 `twoColumnContent` 结构在当前站点会把手机端 logo 与正文直接贴合，并让
`820px` 档正文提前升字，导致 intro section 的整体几何偏离来源页。这里仅对当前页面变体恢复这两项节奏。
添加时间：2026-03-28。
*/
@media (max-width: 767px) {
  .twoColumnContent--pro-remodel-intro > .headline {
    margin-bottom: 40px;
  }
}

@media (min-width: 768px) and (max-width: 991px) {
  .twoColumnContent--pro-remodel-intro .jdw-product-richtext,
  .twoColumnContent--pro-remodel-intro .jdw-product-richtext p,
  .twoColumnContent--pro-remodel-intro .jdw-product-richtext li,
  .twoColumnContent--pro-remodel-intro .jdw-product-richtext .elementor-text-editor,
  .twoColumnContent--pro-remodel-intro .jdw-product-richtext .elementor-text-editor p,
  .twoColumnContent--pro-remodel-intro .jdw-product-richtext .elementor-text-editor li {
    font-size: 16px;
    line-height: 24px;
  }
}

@media (min-width: 992px) {
  .twoColumnContent--pro-remodel-intro .jdw-product-richtext > div > p.text-secondary-bold-lg,
  .twoColumnContent--pro-remodel-intro
    .jdw-product-richtext
    .elementor-text-editor
    > div
    > p.text-secondary-bold-lg {
    font-size: 40px;
    line-height: 40px;
    letter-spacing: 2px;
  }
}

/*
作用域：`Advanced Manufacturing` 页灰底 `twoColumnContent` 引导区，绑定 `.twoColumnContent--advanced-manufacturing-components` 下的正文富文本。
责任归属：widget 自身。
添加原因：2026-03-29 复测发现来源页这条 `MANUFACTURED COMPONENTS` 引导区在 `768-991px` 仍保持
`16 / 24` 正文，而当前站点的 Elementor 响应式输出会把它顶回服务详情页通用的 `18 / 27`，导致 `820px`
档 intro 高度比来源页多出 `9px`。这不是共享 `twoColumnContent` 的通用规则，只对当前页面变体局部收回来源页
真实 typography。
添加时间：2026-03-29。
*/
@media (min-width: 768px) and (max-width: 991px) {
  .twoColumnContent--advanced-manufacturing-components .jdw-product-richtext,
  .twoColumnContent--advanced-manufacturing-components .jdw-product-richtext p,
  .twoColumnContent--advanced-manufacturing-components .jdw-product-richtext li,
  .twoColumnContent--advanced-manufacturing-components .jdw-product-richtext .elementor-text-editor,
  .twoColumnContent--advanced-manufacturing-components .jdw-product-richtext .elementor-text-editor p,
  .twoColumnContent--advanced-manufacturing-components .jdw-product-richtext .elementor-text-editor li {
    font-size: 16px !important;
    line-height: 24px !important;
  }
}

/*
作用域：`Pro Remodel` 页两条 `content-boxes-component` 卡片带，绑定 `.contentBoxesComponent` / `.contentBoxesComponent__item` / `.contentBoxesComponent__card`。
责任归属：父容器自身 + widget 自身 + 跨元素关系。
添加原因：来源页卡片需要 `clip-path` 切角、`<=991` 单列 `max-width: 700px` 居中、`>=1440` 横向 gutter 从 `10px` 提到 `20px`；这些要么依赖 `clip-path`，要么依赖项目默认 Elementor 断点之外的 `1440px` 媒体查询，无法只靠页面数据稳定表达。本次把背景、基础 padding 和列宽保留在 Elementor 页面数据里，只在主题 CSS 补足切角和精确 gutter。2026-03-28 补充修正：来源页标题真实断点是 `<=991 = 32 / 32 / 1.6`、`>=992 = 40 / 40 / 2`，正文真实断点是 `<=1439 = 16 / 24`、`>=1440 = 18 / 27`，且段落默认 `margin-top = 0 / margin-bottom = 13.5px`；Elementor 额外断点会让 `820 / 1024` 误落到桌面字级，`Text Editor` 也会恢复浏览器默认 `18px` 段前后距，因此这里追加非重叠媒体查询兜底这些 typography 语义。
添加时间：2026-03-28。
*/
.contentBoxesComponent__item > .contentBoxesComponent__card {
  height: 100%;
  clip-path: polygon(
    0 0,
    0 0,
    100% 0,
    100% 100%,
    100% calc(100% - 80px),
    calc(100% - 80px) 100%,
    100% 100%,
    0 100%
  );
}

.contentBoxesComponent__icon {
  flex: 0 0 auto;
  width: 100px;
  max-width: 100px;
  align-self: flex-start;
}

.contentBoxesComponent__icon .elementor-widget-container {
  width: 100%;
  max-width: 100px;
}

.contentBoxesComponent__icon img {
  display: block;
  width: 100%;
  height: auto;
  object-fit: contain;
}

.contentBoxesComponent__title .elementor-heading-title {
  margin: 0;
  color: #000000;
}

.contentBoxesComponent__body,
.contentBoxesComponent__body > p,
.contentBoxesComponent__body .elementor-text-editor,
.contentBoxesComponent__body .elementor-text-editor p,
.contentBoxesComponent__body .elementor-widget-container > p {
  color: #000000;
}

.contentBoxesComponent__body > p,
.contentBoxesComponent__body .elementor-text-editor p,
.contentBoxesComponent__body .elementor-widget-container > p {
  margin-top: 0;
  margin-bottom: 13.5px;
}

.contentBoxesComponent__body > p:last-child,
.contentBoxesComponent__body .elementor-text-editor > p:last-child,
.contentBoxesComponent__body .elementor-widget-container > p:last-child {
  margin-bottom: 0;
}

@media (max-width: 991px) {
  .contentBoxesComponent__title .elementor-heading-title {
    font-size: 32px !important;
    line-height: 32px !important;
    letter-spacing: 1.6px !important;
  }

  .contentBoxesComponent__body,
  .contentBoxesComponent__body > p,
  .contentBoxesComponent__body .elementor-text-editor,
  .contentBoxesComponent__body .elementor-text-editor p,
  .contentBoxesComponent__body .elementor-widget-container > p {
    font-size: 16px !important;
    line-height: 24px !important;
  }

  .contentBoxesComponent__item {
    max-width: 700px;
    margin-right: auto;
    margin-left: auto;
  }

  .contentBoxesComponent__item + .contentBoxesComponent__item {
    margin-top: 40px;
  }
}

@media (min-width: 992px) {
  .contentBoxesComponent__body,
  .contentBoxesComponent__body > p,
  .contentBoxesComponent__body .elementor-text-editor,
  .contentBoxesComponent__body .elementor-text-editor p,
  .contentBoxesComponent__body .elementor-widget-container > p {
    font-size: 16px !important;
    line-height: 24px !important;
  }

  .contentBoxesComponent__item {
    padding-right: 10px;
    padding-left: 10px;
  }
}

@media (min-width: 1440px) {
  .contentBoxesComponent {
    padding-right: 40px !important;
    padding-left: 40px !important;
  }

  .contentBoxesComponent__body,
  .contentBoxesComponent__body > p,
  .contentBoxesComponent__body .elementor-text-editor,
  .contentBoxesComponent__body .elementor-text-editor p,
  .contentBoxesComponent__body .elementor-widget-container > p {
    font-size: 18px !important;
    line-height: 27px !important;
  }

  .contentBoxesComponent__item {
    padding-right: 20px;
    padding-left: 20px;
  }
}

/*
作用域：`Pro Remodel` 页 `videoCarouselComponent` 轮播，绑定 `.videoCarouselComponent` 与其下 `.content-carousel-component` / `.jdw-content-slides-carousel__image-wrapper`。
责任归属：widget 自身 + 跨元素关系。
添加原因：当前站点复用自定义 `Content Slides Carousel` widget 承接来源页的 `video-carousel-component`，但来源页要求这段轮播使用 `40 / 60 / 80px` 的 section 级底间距、flush slide 排布，以及 `白圆底 + 深色三角` 播放图标。以上都依赖 widget 内部 DOM、伪元素和 `1440px` 非默认断点，无法通过 Elementor 页面数据单独稳定表达，因此只对这个页面变体补局部 CSS。2026-03-28 补充修正：`<=991` 时该 widget 还会被全站通用 `.bannerContentBox > .image { 60% !important; }` 规则和 `.slides { padding-left: 30px; }` 压回非来源页几何，导致平板档图片列只剩 `60%` 且 active slide 少 `30px` 可见宽度；这里追加高优先级局部覆盖，把 `Pro Remodel` 轮播恢复为来源页的满宽图先于文案的堆叠布局。
添加时间：2026-03-28。
*/
.videoCarouselComponent {
  margin-bottom: 40px;
}

.videoCarouselComponent .content-carousel-component {
  margin-bottom: 0;
}

.videoCarouselComponent .content-carousel-component .slides,
.videoCarouselComponent .content-carousel-component .slide,
.videoCarouselComponent .content-carousel-component .slick-slide {
  padding-left: 0 !important;
}

@media (max-width: 991px) {
  .videoCarouselComponent .content-carousel-component .bannerContentBox > .image,
  .videoCarouselComponent .content-carousel-component .bannerContentBox.content-aligned-right > .image,
  .videoCarouselComponent .content-carousel-component .bannerContentBox.content-aligned-left > .image {
    flex: 0 0 100% !important;
    width: 100% !important;
    min-width: 100% !important;
    max-width: 100% !important;
    margin: 0 !important;
  }

  .videoCarouselComponent .content-carousel-component .bannerContentBox > .box,
  .videoCarouselComponent .content-carousel-component .bannerContentBox.content-aligned-right > .box,
  .videoCarouselComponent .content-carousel-component .bannerContentBox.content-aligned-left > .box {
    flex: 0 0 100% !important;
    width: 100% !important;
    min-width: 100% !important;
    max-width: none !important;
  }
}

.videoCarouselComponent
  .content-carousel-component
  .jdw-content-slides-carousel__image-wrapper.has-play-icon::before {
  width: 80px;
  height: 80px;
  background: #ffffff;
  box-shadow: none;
  transform: translate(-50%, -50%) scale(1);
}

.videoCarouselComponent
  .content-carousel-component
  .jdw-content-slides-carousel__image-wrapper.has-play-icon::after {
  border-top-width: 16px;
  border-bottom-width: 16px;
  border-left-width: 24px;
  border-left-color: #000000;
}

.videoCarouselComponent
  .content-carousel-component
  .jdw-content-slides-carousel__media-link:hover
  .jdw-content-slides-carousel__image-wrapper.has-play-icon::before,
.videoCarouselComponent
  .content-carousel-component
  .jdw-content-slides-carousel__media-link:focus
  .jdw-content-slides-carousel__image-wrapper.has-play-icon::before {
  background: #ffffff;
  transform: translate(-50%, -50%) scale(1.175);
}

.videoCarouselComponent
  .content-carousel-component
  .jdw-content-slides-carousel__media-link:hover
  .jdw-content-slides-carousel__image-wrapper.has-play-icon::after,
.videoCarouselComponent
  .content-carousel-component
  .jdw-content-slides-carousel__media-link:focus
  .jdw-content-slides-carousel__image-wrapper.has-play-icon::after {
  transform: translate(-35%, -50%) scale(1.175);
}

@media (min-width: 992px) {
  .videoCarouselComponent {
    margin-bottom: 60px;
  }
}

@media (min-width: 1440px) {
  .videoCarouselComponent {
    margin-bottom: 80px;
  }
}

.jdw-product-banner {
  margin-bottom: 40px;
}

@media (min-width: 768px) {
  .jdw-product-banner + .jdw-product-banner {
    margin-top: 60px;
  }
}

@media (min-width: 1200px) {
  .jdw-product-banner {
    margin-bottom: 80px;
  }
}

.jdw-product-banner__media .elementor-widget-container {
  height: 100%;
  overflow: hidden;
}

.jdw-product-banner__media {
  order: 0;
}

.jdw-product-banner__box {
  order: 1;
}

.jdw-product-banner__media img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 16 / 9;
  object-fit: cover;
  transition: transform 0.2s ease-in-out;
}

.jdw-product-banner__box--dark,
.jdw-product-banner__box--dark .elementor-heading-title,
.jdw-product-banner__box--dark .elementor-text-editor,
.jdw-product-banner__box--dark .elementor-text-editor p,
.jdw-product-banner__box--dark .elementor-text-editor li,
.jdw-product-banner__box--dark
  .elementor-text-editor
  a:not(.btn):not(.elementor-button-link) {
  color: #ffffff;
}

@media (min-width: 768px) {
  .jdw-product-banner__box {
    order: 0;
  }

  .jdw-product-banner__media {
    order: 1;
  }

  .jdw-product-banner--image-left .jdw-product-banner__media {
    order: 0;
  }

  .jdw-product-banner--image-left .jdw-product-banner__box {
    order: 1;
  }
}

@media (min-width: 1200px) {
  .jdw-product-banner__box {
    padding-left: 80px;
    padding-right: 80px;
  }
}

.jdw-product-banner__body .elementor-text-editor,
.jdw-product-banner__body .elementor-text-editor p,
.jdw-product-banner__body .elementor-text-editor li {
  color: inherit;
}

/*
作用域：产品页内容网格、文章卡片与轮播，绑定 `.jdw-product-grid*` / `.jdw-product-card*` / `.jdw-product-logo__media`。
责任归属：父容器自身 + widget 自身 + 跨元素关系。
添加原因：该段为存量兼容样式，负责 grid/card 的 hover、carousel 轨道、视频封面播放态和文章列表链接样式，是产品页最核心的关系型布局层。
添加时间：2026-03-23（存量样式清理）。
*/
.jdw-product-grid {
  margin-bottom: 20px;
}

@media (min-width: 992px) {
  .jdw-product-grid {
    margin-bottom: 60px;
  }
}

.jdw-product-grid__heading .elementor-heading-title {
  margin: 0;
  margin-bottom: 40px;
  padding: 0 20px;
  color: var(--jdw-product-blue);
  font-family: "Apotek Extra Condensed Bold", Helvetica, Arial, sans-serif;
  font-size: 32px;
  font-weight: 400;
  line-height: 1;
  letter-spacing: 0.05em;
  text-align: center;
}

@media (min-width: 992px) {
  .jdw-product-grid__heading .elementor-heading-title {
    font-size: 40px;
  }
}

.jdw-product-grid__items {
  padding: 0;
}

.jdw-product-grid--colored .jdw-product-grid__items {
  padding: 0 30px;
}

@media (min-width: 1440px) {
  .jdw-product-grid--colored .jdw-product-grid__items {
    padding: 0 80px;
  }
}

.jdw-product-grid--carousel .jdw-product-grid__items {
  display: block;
  height: 0;
  padding: 0;
  opacity: 0;
  transition: opacity 0.75s ease;
}

.jdw-product-grid--carousel .jdw-product-grid__items.slick-slider {
  position: relative;
  display: block;
  box-sizing: border-box;
  user-select: none;
  touch-action: pan-y;
  -webkit-tap-highlight-color: transparent;
}

.jdw-product-grid--carousel .jdw-product-grid__items.slick-initialized {
  height: auto;
  opacity: 1;
}

.elementor-editor-active .jdw-product-grid--carousel .jdw-product-grid__items,
.elementor-editor-active .jdw-brands-carousel .components {
  height: auto;
  opacity: 1;
  transition: none;
}

.jdw-product-grid--carousel .jdw-product-grid__items .slick-list {
  position: relative;
  display: block;
  overflow: hidden;
  margin: 0 30px;
  padding: 0;
}

.jdw-product-grid--carousel .jdw-product-grid__items .slick-list:focus {
  outline: none;
}

.jdw-product-grid--carousel .jdw-product-grid__items .slick-track {
  position: relative;
  top: 0;
  left: 0;
  display: flex;
  margin-left: auto;
  margin-right: auto;
}

.jdw-product-grid--carousel .jdw-product-grid__items .slick-track::before,
.jdw-product-grid--carousel .jdw-product-grid__items .slick-track::after {
  display: table;
  content: "";
}

.jdw-product-grid--carousel .jdw-product-grid__items .slick-track::after {
  clear: both;
}

.jdw-product-grid--carousel
  .jdw-product-grid__items.slick-loading
  .slick-track {
  visibility: hidden;
}

.jdw-product-grid--carousel .jdw-product-grid__items .slick-slide {
  display: none;
  float: left;
  height: auto;
  min-height: 1px;
}

.jdw-product-grid--carousel
  .jdw-product-grid__items.slick-initialized
  .slick-slide {
  display: block;
}

.jdw-product-grid--carousel .jdw-product-grid__items .slick-prev,
.jdw-product-grid--carousel .jdw-product-grid__items .slick-next {
  position: absolute;
  top: 50%;
  z-index: 9;
  display: block !important;
  width: 50px;
  height: 37px;
  padding: 0;
  border: 0;
  outline: none;
  background: transparent;
  color: #75787b;
  font-size: 35px;
  line-height: 35px;
  text-shadow: 1px 1px 6px rgba(0, 0, 0, 0.5);
  cursor: pointer;
  transform: translateY(-50%);
}

.jdw-product-grid--carousel .jdw-product-grid__items .slick-prev {
  left: 10px;
}

.jdw-product-grid--carousel .jdw-product-grid__items .slick-next {
  right: 10px;
}

.jdw-product-grid--carousel .jdw-product-grid__items .slick-prev:hover,
.jdw-product-grid--carousel .jdw-product-grid__items .slick-next:hover,
.jdw-product-grid--carousel .jdw-product-grid__items .slick-prev:focus,
.jdw-product-grid--carousel .jdw-product-grid__items .slick-next:focus {
  background: transparent;
  color: #ffffff;
}

.jdw-product-grid--carousel .jdw-product-grid__items .slick-prev.slick-disabled,
.jdw-product-grid--carousel
  .jdw-product-grid__items
  .slick-next.slick-disabled {
  opacity: 0;
}

.jdw-product-grid--carousel .jdw-product-grid__items .slick-prev span,
.jdw-product-grid--carousel .jdw-product-grid__items .slick-next span {
  display: block;
  margin: 0 auto;
  line-height: 1;
}

.jdw-product-grid__item {
  padding: 0 10px 40px;
}

.content-grid.colored-background .jdw-product-grid__item {
  padding: 0 10px;
}

.jdw-product-grid.jdw-product-grid--articles .jdw-product-grid__items {
  padding: 0;
}

.jdw-product-grid.jdw-product-grid--articles .jdw-product-grid__item {
  padding: 0 20px 0;
}

@media (min-width: 768px) {
  .jdw-product-grid:not(.jdw-product-grid--colored):not(
      .jdw-product-grid--brands
    )
    .jdw-product-grid__item {
    padding-left: 20px;
    padding-right: 20px;
  }
}

.jdw-product-grid__item--card,
.jdw-product-grid__item--logo {
  height: 100%;
}

.jdw-product-grid__item--card:hover,
.jdw-product-grid__item--logo:hover {
  box-shadow: none;
}

.jdw-product-card__media,
.jdw-product-logo__media .elementor-widget-container,
.jdw-product-logo__media a {
  display: block;
  width: 100%;
  line-height: 0;
  overflow: hidden;
  transition: box-shadow 0.2s ease-in-out;
}

.jdw-product-card__media-surface,
.jdw-product-logo__media img {
  display: block;
  width: 100%;
  transition: transform 0.2s ease-in-out;
}

.jdw-product-card__media-surface {
  aspect-ratio: 16 / 9;
}

.jdw-product-grid__item--card:hover .jdw-product-card__media,
.jdw-product-grid__item--logo:hover
  .jdw-product-logo__media
  .elementor-widget-container,
.jdw-product-grid__item--logo:hover .jdw-product-logo__media a {
  box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
}

.jdw-product-grid__item--card:hover .jdw-product-card__media-surface,
.jdw-product-grid__item--logo:hover .jdw-product-logo__media img {
  transform: scale(1.05);
}

/*
作用域：`Delivery & Pickup` 页 `section5` 的 `contentGrid` 静态信息卡片变体（`jdw-product-grid--static-cards`）。
责任归属：父容器自身 + 跨元素关系。
添加原因：共享 `.jdw-product-grid` 基线节奏在 `<=991` 默认给所有 grid band 写了 `20px` 底外边距，但目标站该静态卡片变体实际是 `10px`；同时它没有链接驱动的 hover 反馈，不应继承通用文章卡片的图片放大、阴影和过渡。这里仅对该变体覆盖 section 节奏和 hover 视觉，不影响其它 `contentGrid` 变体。
添加时间：2026-03-25
*/
.jdw-product-grid--static-cards {
  margin-bottom: 10px;
}

@media (min-width: 992px) {
  .jdw-product-grid--static-cards {
    margin-bottom: 60px;
  }
}

.jdw-product-grid--static-cards .jdw-product-card__media,
.jdw-product-grid--static-cards .jdw-product-card__media-surface,
.jdw-product-grid--static-cards .jdw-product-grid__item--card {
  transition: none;
}

.jdw-product-grid--static-cards .jdw-product-grid__item--card:hover .jdw-product-card__media {
  box-shadow: none;
}

.jdw-product-grid--static-cards
  .jdw-product-grid__item--card:hover
  .jdw-product-card__media-surface {
  transform: none;
}

/*
作用域：`Millwork Capabilities` 页 `section10` 的 `contentGrid` 页面变体，
绑定 `.jdw-product-grid--millwork-catalog`。
责任归属：父容器自身 + widget 自身。
添加原因：2026-03-26 复刻 `services/millwork.html` 的产品目录卡片带时，实测来源页在
`<=991px` 区间的 band 底部节奏为 `10px`，而共享 `.jdw-product-grid` 基线是 `20px`；
同时这组静态卡片即使没有底部链接，正文区仍保留 `40px` 底部收口，决定了每张卡片的
最终高度。两者都属于当前页面该 section 的稳定几何结果，通用文章卡片变体不应被一起抬高，
因此追加页面级 class 单独覆盖。
添加时间：2026-03-26。
*/
.jdw-product-grid--millwork-catalog {
  margin-bottom: 10px;
}

.jdw-product-grid--millwork-catalog .jdw-product-card__body {
  padding-bottom: 40px !important;
}

@media (min-width: 992px) {
  .jdw-product-grid--millwork-catalog {
    margin-bottom: 60px;
  }
}

/*
作用域：`Advanced Manufacturing` 页 `section8` 的灰底 `contentGrid` 目录卡片变体，
绑定 `.jdw-product-grid--advanced-manufacturing-catalog`。
责任归属：父容器自身 + widget 自身 + 跨元素关系。
添加原因：2026-03-29 复测发现来源页这组四列卡片在所有断点都稳定保留三项几何：
单卡 `<=767` 为 `padding: 0 0 40px`、`>=768` 为 `padding: 0 10px 40px`，媒体无额外左右内缩且保持
`16:9`，正文列表 `padding-left: 20px / margin-bottom: 13.5px`，且每个 `li` 还保留 `10px` 底留白。
共享 `.jdw-product-grid--articles` 会把 item 写成 `0 20px 0`，移动端再额外给媒体写 `padding: 0 20px`，
同时列表项底部留白被清掉，导致首张卡片在 `390 / 820 / 1560` 三档都比来源页偏窄、偏矮。这里仅对
当前页面变体恢复来源页真实目录卡片节奏。
添加时间：2026-03-29。
*/
.jdw-product-grid.jdw-product-grid--articles.jdw-product-grid--advanced-manufacturing-catalog
  .jdw-product-grid__item {
  padding: 0 0 40px !important;
}

.jdw-product-grid.jdw-product-grid--articles.jdw-product-grid--advanced-manufacturing-catalog
  .jdw-product-card__media {
  aspect-ratio: 16 / 9;
}

.jdw-product-grid.jdw-product-grid--articles.jdw-product-grid--advanced-manufacturing-catalog
  .jdw-product-card__media-surface {
  height: 100%;
}

.jdw-product-grid.jdw-product-grid--articles.jdw-product-grid--advanced-manufacturing-catalog
  .jdw-product-card__body
  ul,
.jdw-product-grid.jdw-product-grid--articles.jdw-product-grid--advanced-manufacturing-catalog
  .jdw-product-card__body
  ol {
  padding-left: 20px;
  margin-bottom: 13.5px;
}

.jdw-product-grid.jdw-product-grid--articles.jdw-product-grid--advanced-manufacturing-catalog
  .jdw-product-card__body
  li {
  padding-bottom: 10px;
}

@media (max-width: 767px) {
  .jdw-product-grid.jdw-product-grid--articles.jdw-product-grid--advanced-manufacturing-catalog
    .jdw-product-card__media {
    padding: 0 !important;
  }

  .jdw-product-grid.jdw-product-grid--articles.jdw-product-grid--advanced-manufacturing-catalog
    .jdw-product-card__media,
  .jdw-product-grid.jdw-product-grid--articles.jdw-product-grid--advanced-manufacturing-catalog
    .jdw-product-card__title,
  .jdw-product-grid.jdw-product-grid--articles.jdw-product-grid--advanced-manufacturing-catalog
    .jdw-product-card__body {
    width: calc(100% - 40px);
    margin-left: 20px;
    margin-right: 20px;
  }
}

@media (min-width: 768px) {
  .jdw-product-grid.jdw-product-grid--articles.jdw-product-grid--advanced-manufacturing-catalog
    .jdw-product-grid__items {
    display: grid !important;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    padding: 0 20px;
  }

  .jdw-product-grid.jdw-product-grid--articles.jdw-product-grid--advanced-manufacturing-catalog
    .jdw-product-grid__item {
    width: auto !important;
    max-width: none !important;
    padding: 0 10px 40px !important;
  }
}

/*
作用域：`contentGrid` 的视频卡片变体，适用 `Matt Risinger` 详情页的 `ON THE JOBSITE WITH MATT`
与 `MORE FROM MATT` section，以及后续复用同一 `.jdw-product-grid__item--video` 结构的页面。
责任归属：`widget 自身`。
添加原因：视频卡片媒体面需要同时承担播放图标覆盖层和可点击 lightbox 热区提示；本次新增
`.jdw-product-card__media--lightbox` 游标反馈，避免前台只剩标题可点击、媒体区看起来像静态图。
添加时间：2026-03-29
*/
.jdw-product-grid__item--video .jdw-product-card__media {
  position: relative;
}

.jdw-product-grid__item--video .jdw-product-card__media--lightbox {
  cursor: pointer;
}

.jdw-product-grid__item--video .jdw-product-card__media::before {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  z-index: 2;
  width: 72px;
  height: 72px;
  border-radius: 50%;
  background: rgba(0, 32, 88, 0.72);
  transform: translate(-50%, -50%);
}

.jdw-product-grid__item--video .jdw-product-card__media::after {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  z-index: 3;
  width: 0;
  height: 0;
  border-top: 14px solid transparent;
  border-bottom: 14px solid transparent;
  border-left: 20px solid #ffffff;
  transform: translate(-30%, -50%);
}

/*
作用域：`contentGrid` 的视频卡片变体，适用 `Matt Risinger` 详情页的 `ON THE JOBSITE WITH MATT`
与 `MATERIALS AND INSTALLATION` section，绑定 `.jdw-product-grid--video-cards .jdw-product-grid__items`。
责任归属：`父容器自身`。
添加原因：源站视频卡片在 `>=768px` 时由 `.components` 自身承担左右各 `20px` 的 gutter，
当前 Elementor 容器默认铺满，导致首列卡片贴边、卡片宽度偏大；这里用稳定 root class 恢复容器级
横向收口，不污染其他文章卡片或品牌轮播 grid。
添加时间：2026-03-29
*/
@media (min-width: 768px) {
  .jdw-product-grid--video-cards .jdw-product-grid__items {
    padding-left: 20px;
    padding-right: 20px;
  }
}

/*
作用域：`contentGrid` 的视频卡片变体，绑定 `.jdw-product-grid--video-cards`。
责任归属：父容器自身 + widget 自身。
添加原因：2026-03-30 复测 `Build Science™ 201` 时确认来源页视频 grid 在 `<=991px`
只有 `10px` 尾部节奏，而共享 `.jdw-product-grid` 默认保留 `20px`；同时正文在
`992-1439px` 仍保持 `16 / 24`，到 `>=1440px` 才切换为 `18 / 27`。这组规则无法仅靠
Elementor 原生响应式控件稳定表达，因此在主题样式中用非重叠 media query 兜底。
添加时间：2026-03-30。
*/
@media (max-width: 991px) {
  .jdw-product-grid--video-cards {
    margin-bottom: 10px;
  }
}

@media (min-width: 992px) and (max-width: 1439px) {
  .jdw-product-grid--video-cards .jdw-product-card__body,
  .jdw-product-grid--video-cards .jdw-product-card__body p {
    font-size: 16px;
    line-height: 24px;
  }
}

/*
作用域：`Build Science™ 201` 页面四组视频卡片 grid，绑定 `.jdw-product-grid--build-science-201-videos`。
责任归属：父容器自身 + widget 自身。
添加原因：2026-03-30 复测确认当前页四组 `video-cards` 与已验收的 `Matt Risinger` 变体存在两组
页面级几何差异：其一，来源页卡片尾部留白完全由正文 widget 自身的 `padding-bottom: 40px` 承担，
而共享 `.jdw-product-grid__item` 额外再叠一层 `40px` 底 padding，会把整卡和整组 grid 一起抬高；
其二，来源页标题盒保留 `padding-bottom: 20px`，而当前 Elementor title widget 默认只剩 `10px`；
另外在 `768-991px`，来源页 `.components` 没有额外的 root `20px + 20px` 内缩，继续沿用共享规则会把
卡片压窄并抬高正文换行。以上都属于当前页视频卡片变体的稳定几何，不适合回写到其他已验收页面，因此
只用页面级稳定 class 做最小范围覆盖。
添加时间：2026-03-30。
*/
.jdw-product-grid--build-science-201-videos .jdw-product-grid__item {
  padding-bottom: 0 !important;
}

.jdw-product-grid--build-science-201-videos .jdw-product-card__title {
  padding-bottom: 20px !important;
}

@media (min-width: 768px) and (max-width: 991px) {
  .jdw-product-grid--build-science-201-videos .jdw-product-grid__items {
    padding-left: 0 !important;
    padding-right: 0 !important;
  }
}

/*
作用域：`Forever Home with Steve Baczek` 页面 `MORE FOREVER HOME EPISODES` 视频卡片网格，
绑定 `.jdw-product-grid--forever-home-episodes .jdw-product-grid__items`。
责任归属：父容器自身。
添加原因：2026-03-30 复测发现来源页这组 `three-per-row` 视频卡片在 `>=768px` 时没有额外的
grid root 左右内缩；共享 `.jdw-product-grid--video-cards` 为 `Matt Risinger` 详情页补的 `20px + 20px`
容器级 padding 会把 `Forever Home` 卡片整体压窄，进而抬高标题与正文换行，导致 `820px` 档整组
section 高度偏大。这里仅对当前页面变体撤销该 root padding，不影响其他已验收的视频卡片页。
添加时间：2026-03-30。
*/
@media (min-width: 768px) {
  .jdw-product-grid--forever-home-episodes .jdw-product-grid__items {
    padding-left: 0 !important;
    padding-right: 0 !important;
  }
}

/*
作用域：`Forever Home with Steve Baczek` 页面 `BUILD SCIENCE™ 101 and 201` 双列文章卡片网格，
绑定 `.jdw-product-grid--forever-home-build-science .jdw-product-grid__item`。
责任归属：父容器自身 + 跨元素关系。
添加原因：2026-03-30 复测发现来源页每张 `two-per-row` 卡片在媒体、标题、正文和底部链接之外，
还额外保留 `40px` 的卡片尾部留白；共享 `.jdw-product-grid--articles` 把 article item 的底部 padding
覆盖成 `0`，导致当前页这组卡片在 `390 / 820 / 1560` 三档都偏矮。这里仅对该页面变体恢复 item
尾部 `40px` 留白，不改动其他 article grid 的既有节奏。
添加时间：2026-03-30。
*/
.jdw-product-grid--forever-home-build-science .jdw-product-grid__item {
  padding-bottom: 40px !important;
}

.jdw-product-logo__media img {
  aspect-ratio: 3 / 2;
  object-fit: contain;
}

.jdw-product-card__title .elementor-heading-title,
.jdw-product-card__title .elementor-heading-title a {
  margin: 0;
  text-decoration: none;
}

.jdw-product-card__title .elementor-heading-title a:hover,
.jdw-product-card__title .elementor-heading-title a:focus {
  text-decoration: none;
}

.jdw-product-card__body,
.jdw-product-card__link {
  padding: 0;
}

.jdw-product-card__link,
.jdw-product-card__link .elementor-widget-container,
.jdw-product-card__link .elementor-text-editor {
  display: inline;
  width: auto;
}

.jdw-product-card__link .elementor-text-editor p {
  margin: 0;
}

.jdw-product-card__link p {
  margin: 0;
}

.jdw-product-card__link .elementor-text-editor,
.jdw-product-card__link .elementor-text-editor p,
.jdw-product-card__link .elementor-text-editor a {
  font-size: 16px;
}

.jdw-product-grid--articles .jdw-product-card__body,
.jdw-product-grid--articles .jdw-product-card__body p,
.jdw-product-grid--articles .jdw-product-card__link,
.jdw-product-grid--articles .jdw-product-card__link p,
.jdw-product-grid--articles .jdw-product-card__link a {
  font-size: 16px;
  line-height: 24px;
}

.jdw-product-grid--articles .jdw-product-card__link,
.jdw-product-grid--articles .jdw-product-card__link .elementor-widget-container,
.jdw-product-grid--articles .jdw-product-card__link .elementor-text-editor {
  display: block;
  width: 100%;
}

.jdw-product-grid--articles .jdw-product-card__link .elementor-text-editor a {
  color: var(--jdw-product-blue-link);
  text-decoration: underline;
}

.jdw-product-grid--articles .jdw-product-card__link a {
  color: var(--jdw-product-blue-link);
  text-decoration: underline;
}

.jdw-product-grid--articles
  .jdw-product-card__link
  .elementor-text-editor
  a:hover,
.jdw-product-grid--articles
  .jdw-product-card__link
  .elementor-text-editor
  a:focus,
.jdw-product-grid--articles .jdw-product-card__link a:hover,
.jdw-product-grid--articles .jdw-product-card__link a:focus {
  text-decoration: none;
}

@media (max-width: 767px) {
  .jdw-product-grid__item {
    padding-left: 0;
    padding-right: 0;
  }

  /*
  作用域：移动端灰底 `contentGrid` 共享基线，当前仅限灰底轮播型 grid，
  不覆盖 `Design Ultra Team` 页底 `FOLLOW US ON INSTAGRAM` 这类灰底文章卡片 grid。
  责任归属：父容器自身 + 跨元素关系。
  添加原因：2026-04-07 复刻 `Design Ultra Team` 时，发现旧规则把所有
  `.jdw-product-grid--colored .jdw-product-grid__items` 都隐藏，导致移动端
  Instagram 三张卡片整组消失。来源页该 section 在 `<=767px` 仍展示静态文章卡片，
  因此这里只保留对灰底轮播变体的隐藏，不再误伤灰底 article grid。
  添加时间：2026-04-07。
  */
  .jdw-product-grid--colored.jdw-product-grid--carousel .jdw-product-grid__items {
    display: none;
  }

  .jdw-product-grid:not(.jdw-product-grid--brands) .jdw-product-card__media {
    padding: 0 20px;
  }

  .jdw-product-grid:not(.jdw-product-grid--brands)
    .jdw-product-card__media-surface {
    aspect-ratio: 310 / 174;
  }
}

/*
作用域：`Custom Builder Services` 页第八个 `contentGrid` 服务卡片变体，绑定
`.jdw-product-grid--custom-builder-services`。
责任归属：父容器自身 + 跨元素关系。
添加原因：共享 `.jdw-product-grid--articles` 在 `<=767px` 会把文章卡片媒体区压成
`310x174` 并额外加左右 `20px` 内缩，但该页来源移动端首张卡片实测是整列 `350x196.875`
的 `16:9` 图像，不存在额外媒体内缩。这里仅对该页变体恢复移动端全宽 `16:9` 媒体盒，
避免影响其他已验收的文章卡片 grid。
添加时间：2026-03-28。
*/
@media (max-width: 767px) {
  .jdw-product-grid--custom-builder-services .jdw-product-card__media {
    padding: 0;
  }

  .jdw-product-grid--custom-builder-services .jdw-product-card__media-surface {
    aspect-ratio: 16 / 9;
  }
}

/*
作用域：`Design Ultra Team` 页底 `FOLLOW US ON INSTAGRAM` 灰底文章卡片 grid，
绑定 `.jdw-product-grid--colored.jdw-product-grid--articles:has(.jdw-product-card__title a[href*="instagram.com/p/"])`。
责任归属：父容器自身 + 跨元素关系。
添加原因：2026-04-07 复刻 `https://www.bldr.com/resources/design-ultra-team` 时，
实测来源页该 section 在 `<=767px` 的首张媒体盒为 `350x196.875`，不存在共享文章卡片
基线里的 `padding: 0 20px` 二次内缩；如果继续沿用通用规则，测试站会落成 `310x174`，
导致三张 Instagram 卡片整体偏窄、偏矮。当前远程 Elementor 导入链路被内网 SSH 阻断，
暂时无法给页面数据补稳定 class，因此这里用“Instagram 外链文章卡片”这一唯一结构信号
局部回收移动端媒体内缩，不影响灰底产品分类轮播或其他普通文章卡片 grid。
添加时间：2026-04-07。
*/
@media (max-width: 767px) {
  .jdw-product-grid--colored.jdw-product-grid--articles:has(
      .jdw-product-card__title a[href*="instagram.com/p/"]
    )
    .jdw-product-card__media {
    padding: 0;
  }
}

/*
作用域：`Pro Remodel` 页无标题产品导航 `contentGrid` 变体，绑定 `.jdw-product-grid--pro-remodel-nav`。
责任归属：父容器自身 + widget 自身 + 跨元素关系。
添加原因：2026-03-28 复测 `Pro Remodel` `section8` 时，来源页卡片标题仍保留 `p { margin: 0 0 13.5px; }`，同时
移动端媒体区没有共享文章卡片那套 `padding: 0 20px + aspect-ratio: 310 / 174` 的额外内缩；`768-991px` 与 `>=992px`
两档的卡片横向 gutter 也比共享 `.jdw-product-grid--articles` 更窄。若继续复用通用文章卡片规则，会让媒体区在
`390 / 820 / 1560` 三档都偏窄、偏矮，并把标题块高度撑错。这里仅对当前页面导航网格恢复来源页几何，不影响其他 grid。
添加时间：2026-03-28。
*/
.jdw-product-grid--pro-remodel-nav {
  margin-bottom: 10px;
}

.jdw-product-grid.jdw-product-grid--articles.jdw-product-grid--pro-remodel-nav
  .jdw-product-card__title
  p {
  margin-top: 0;
  margin-bottom: 13.5px;
}

@media (max-width: 767px) {
  .jdw-product-grid.jdw-product-grid--articles.jdw-product-grid--pro-remodel-nav
    .jdw-product-card__media {
    padding: 0 !important;
  }

  .jdw-product-grid.jdw-product-grid--articles.jdw-product-grid--pro-remodel-nav
    .jdw-product-card__media-surface {
    aspect-ratio: 16 / 9 !important;
  }

  .jdw-product-grid.jdw-product-grid--articles.jdw-product-grid--pro-remodel-nav
    .jdw-product-grid__item {
    padding-bottom: 0 !important;
    min-height: 320.375px;
  }
}

@media (min-width: 768px) and (max-width: 991px) {
  .jdw-product-grid.jdw-product-grid--articles.jdw-product-grid--pro-remodel-nav
    .jdw-product-grid__item {
    padding-left: 15px !important;
    padding-right: 15px !important;
    padding-bottom: 0 !important;
    min-height: 281.9375px;
  }
}

@media (min-width: 992px) and (max-width: 1199px) {
  .jdw-product-grid--pro-remodel-nav {
    margin-bottom: 60px;
  }

  .jdw-product-grid.jdw-product-grid--articles.jdw-product-grid--pro-remodel-nav
    .jdw-product-grid__item {
    padding-left: 10px !important;
    padding-right: 10px !important;
    padding-bottom: 0 !important;
    min-height: 280.625px;
  }
}

@media (min-width: 1200px) {
  .jdw-product-grid--pro-remodel-nav {
    margin-bottom: 60px;
  }

  .jdw-product-grid.jdw-product-grid--articles.jdw-product-grid--pro-remodel-nav
    .jdw-product-grid__item {
    padding-left: 10px !important;
    padding-right: 10px !important;
    padding-bottom: 40px !important;
  }
}

@media (min-width: 768px) {
  .jdw-product-grid--carousel .jdw-product-grid__items .slick-prev {
    left: 15px;
  }

  .jdw-product-grid--carousel .jdw-product-grid__items .slick-next {
    right: 15px;
  }
}

@media (min-width: 1440px) {
  .jdw-product-grid.jdw-product-grid--articles .jdw-product-grid__items {
    padding: 0 20px;
  }

  .jdw-product-grid--carousel .jdw-product-grid__items {
    padding: 0 50px;
  }

  .jdw-product-grid--carousel .jdw-product-grid__items .slick-prev {
    left: 35px;
  }

  .jdw-product-grid--carousel .jdw-product-grid__items .slick-next {
    right: 35px;
  }

  .jdw-product-grid--articles .jdw-product-card__body,
  .jdw-product-grid--articles .jdw-product-card__body p,
  .jdw-product-grid--articles .jdw-product-card__link,
  .jdw-product-grid--articles .jdw-product-card__link p,
  .jdw-product-grid--articles .jdw-product-card__link a {
    font-size: 18px;
    line-height: 27px;
  }
}

@media (min-width: 992px) and (max-width: 1439px) {
  .jdw-product-grid.jdw-product-grid--articles .jdw-product-grid__items {
    padding: 0 20px;
  }
}

/*
作用域：产品页 tilesGrid section，绑定 `.tiles-grid`。
责任归属：父容器自身 + 跨元素关系。
添加原因：该段为存量兼容样式，负责浮动网格、卡片 hover 阴影、图片裁切和标题点击区域，维持 tiles 组件的既有交互与排版。
添加时间：2026-03-23（存量样式清理）。
*/
.tiles-grid .tiles-container {
  position: relative;
  display: block;
  margin-bottom: 20px;
}

.tiles-grid .tiles-container::after {
  content: "";
  display: block;
  clear: both;
}

.tiles-grid .tiles-container .tile {
  display: block;
  float: left;
  width: 100%;
}

.tiles-grid .tile-component {
  position: relative;
  display: block;
  margin-bottom: 20px;
  background: #ffffff;
  cursor: pointer;
  overflow: hidden;
  transition: box-shadow 0.2s ease-in-out;
}

.tiles-grid .tile-component:hover {
  box-shadow: 0 5px 15px 0 rgba(0, 0, 0, 0.5);
}

.tiles-grid .tile-component .image,
.tiles-grid .tile-component .image > .elementor-widget-container,
.tiles-grid .tile-component .image .elementor-image,
.tiles-grid .tile-component .image a {
  display: block;
  width: 100%;
}

.tiles-grid .tile-component .image {
  line-height: 0;
}

.tiles-grid .tile-component .image > .elementor-widget-container {
  overflow: hidden;
}

.tiles-grid .tile-component .image img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 16 / 9;
  object-fit: cover;
  transition: transform 0.2s ease-in-out;
}

.tiles-grid .tile-component:hover .image img {
  transform: scale(1.05);
}

.tiles-grid .tile-component .headline {
  background: #ffffff;
}

.tiles-grid .tile-component .headline .elementor-heading-title {
  margin: 0;
  padding: 0;
}

.tiles-grid .tile-component .headline a {
  display: block;
  width: 100%;
  padding: 20px;
  color: var(--jdw-product-blue);
  text-decoration: none;
}

.tiles-grid .tile-component .headline a:hover,
.tiles-grid .tile-component .headline a:focus {
  color: #00040c;
  text-decoration: none;
}

@media only screen and (max-width: 660px) {
  .tiles-grid .tiles-container {
    min-height: 260px;
  }
}

@media only screen and (min-width: 600px) and (max-width: 900px) {
  .tiles-grid .tiles-container {
    min-height: 435px;
  }
}

@media only screen and (min-width: 901px) and (max-width: 1200px) {
  .tiles-grid .tiles-container {
    min-height: 570px;
  }
}

@media only screen and (min-width: 1201px) {
  .tiles-grid .tiles-container {
    min-height: 824px;
  }
}

@media (min-width: 460px) {
  .tiles-grid .tiles-container .tile {
    width: 50%;
    padding: 10px;
  }

  .tiles-grid .tile-component {
    margin-bottom: 0;
    aspect-ratio: 1 / 1;
  }

  .tiles-grid .tile-component .image,
  .tiles-grid .tile-component .headline {
    position: absolute;
    left: 0;
    right: 0;
  }

  .tiles-grid .tile-component .image {
    top: 0;
    bottom: 78px;
  }

  .tiles-grid .tile-component .image > .elementor-widget-container,
  .tiles-grid .tile-component .image .elementor-image,
  .tiles-grid .tile-component .image a {
    height: 100%;
  }

  .tiles-grid .tile-component .image img {
    height: 100%;
    aspect-ratio: auto;
  }

  .tiles-grid .tile-component .headline {
    bottom: 0;
    height: 78px;
  }

  .tiles-grid .tile-component .headline > .elementor-widget-container,
  .tiles-grid .tile-component .headline .elementor-heading-title {
    height: 100%;
  }

  .tiles-grid .tile-component .headline a {
    height: 65px;
    padding: 15px;
    overflow: hidden;
  }
}

@media (min-width: 992px) {
  .tiles-grid .tiles-container .tile {
    width: 25%;
  }

  .tiles-grid .tiles-container .tile.large-box {
    width: 50%;
  }
}

@media (min-width: 1440px) {
  .tiles-grid .tile-component .headline .elementor-heading-title,
  .tiles-grid .tile-component .headline a {
    font-size: 24px;
    line-height: 28.8px;
  }

  .tiles-grid .tile-component .image {
    bottom: 95px;
  }

  .tiles-grid .tile-component .headline {
    height: 95px;
  }

  .tiles-grid .tile-component .headline a {
    height: 78px;
    padding: 20px;
  }
}

/*
作用域：产品页品牌轮播，绑定 `.jdw-product-grid--brands` / `.jdw-product-brand-carousel`。
责任归属：父容器自身 + 跨元素关系。
添加原因：该段为存量兼容样式，负责品牌 logo 轮播高度、导航箭头与不同断点的左右留白，保证品牌展示区的滑动体验稳定。
添加时间：2026-03-23（存量样式清理）。
*/
.jdw-product-grid--brands {
  margin-bottom: 10px;
}

@media (min-width: 992px) {
  .jdw-product-grid--brands {
    margin-bottom: 60px;
  }
}

.jdw-product-brand-carousel > .elementor-widget-container,
.jdw-product-brand-carousel .elementor-image-carousel-wrapper,
.jdw-product-brand-carousel .swiper,
.jdw-product-brand-carousel .swiper-wrapper,
.jdw-product-brand-carousel .swiper-slide,
.jdw-product-brand-carousel .swiper-slide-inner {
  height: 100%;
}

.jdw-product-brand-carousel .swiper-slide {
  display: flex;
  align-items: stretch;
}

.jdw-product-brand-carousel .swiper-slide-inner {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 251px;
  padding: 20px 40px;
}

@media (min-width: 1440px) {
  .jdw-product-brand-carousel {
    padding: 0 50px;
  }

  .jdw-product-brand-carousel .swiper-slide-inner {
    height: 263px;
  }
}

.jdw-product-brand-carousel .swiper-slide-image {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
}

@media (max-width: 767px) {
  .jdw-product-brand-carousel .swiper-slide-inner {
    height: 163px;
    padding: 0 20px;
  }
}

.jdw-product-brand-carousel.elementor-widget .swiper .elementor-swiper-button,
.jdw-product-brand-carousel.elementor-widget
  .swiper
  ~ .elementor-swiper-button {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 50px;
  height: 37px;
  font-size: 35px;
  color: #75787b;
  background: transparent;
  text-shadow: 1px 1px 6px rgba(0, 0, 0, 0.5);
}

.jdw-product-brand-carousel.elementor-widget
  .swiper
  .elementor-swiper-button:hover,
.jdw-product-brand-carousel.elementor-widget
  .swiper
  .elementor-swiper-button:focus,
.jdw-product-brand-carousel.elementor-widget
  .swiper
  ~ .elementor-swiper-button:hover,
.jdw-product-brand-carousel.elementor-widget
  .swiper
  ~ .elementor-swiper-button:focus {
  color: #ffffff;
  background: transparent;
}

.jdw-product-brand-carousel.elementor-widget
  .swiper
  .elementor-swiper-button
  svg,
.jdw-product-brand-carousel.elementor-widget
  .swiper
  ~ .elementor-swiper-button
  svg {
  width: 1em;
  height: 1em;
}

.jdw-product-brand-carousel.elementor-widget .swiper .elementor-swiper-button i,
.jdw-product-brand-carousel.elementor-widget
  .swiper
  ~ .elementor-swiper-button
  i {
  display: block;
  line-height: 1;
  text-shadow: inherit;
}

@media (min-width: 768px) {
  .jdw-product-brand-carousel.elementor-widget
    .swiper
    .elementor-swiper-button-prev,
  .jdw-product-brand-carousel.elementor-widget
    .swiper
    ~ .elementor-swiper-button-prev {
    left: 15px;
  }

  .jdw-product-brand-carousel.elementor-widget
    .swiper
    .elementor-swiper-button-next,
  .jdw-product-brand-carousel.elementor-widget
    .swiper
    ~ .elementor-swiper-button-next {
    right: 15px;
  }
}

@media (min-width: 1440px) {
  .jdw-product-brand-carousel.elementor-widget
    .swiper
    .elementor-swiper-button-prev,
  .jdw-product-brand-carousel.elementor-widget
    .swiper
    ~ .elementor-swiper-button-prev {
    left: 35px;
  }

  .jdw-product-brand-carousel.elementor-widget
    .swiper
    .elementor-swiper-button-next,
  .jdw-product-brand-carousel.elementor-widget
    .swiper
    ~ .elementor-swiper-button-next {
    right: 35px;
  }
}

@media (min-width: 768px) {
  .jdw-product-grid__item {
    padding-right: 10px;
    padding-left: 10px;
  }
}

@media (min-width: 992px) {
  .jdw-product-cta__content .btn.btn-default,
  .jdw-product-button .elementor-button {
    min-height: 50px;
    padding-top: 14px;
  }
}

/*
作用域：`Services` 页尾 `buttonBand` 变体，绑定 `.buttonBand--services`。
责任归属：跨元素关系。
添加原因：2026-03-25 复刻 `services.html` 时，实测来源页在 `<=991px` 区间内，
`RELATED ARTICLES` 与独立按钮 band 之间的可见 gap 为 `10px`，而共享 `buttonBand`
默认节奏为 `20px`。该断点以真实来源 CSS 的 `991px` 为准，无法稳定用 Elementor
通用响应式断点表达且不影响 `1024px` 档，因此在主题样式中为服务页变体单独回收 `10px`。
添加时间：2026-03-25。
*/
@media (max-width: 991px) {
  .buttonBand.buttonBand--services {
    margin-top: -10px;
  }
}

/*
作用域：`buttonBand` section，绑定 `.buttonBand .elementor-button`。
责任归属：widget 自身。
添加原因：2026-03-25 复刻 `Cabinets & Countertops` 页尾 CTA band 时，实测来源页在 `992-1199`
仍保持 `48px` 按钮高度；共享按钮层的 `min-height: 50px` 会把测试站 `1024px` 按钮抬高 `2px`。
此处只把 `buttonBand` 在该区间回退到基础 `46px` 最小高度，避免影响其他产品页 CTA。
添加时间：2026-03-25。
*/
@media (min-width: 992px) and (max-width: 1199px) {
  .buttonBand .elementor-button {
    min-height: 46px;
  }
}

/*
作用域：`contentBlock` section 的 statement 变体，绑定 `.contentBlock--statement`。
责任归属：父容器自身。
添加原因：2026-03-26 复刻 `Millwork Capabilities` section4 时，来源页该纯文案 band 在
`<=767 / 768-991 / 992-1199 / >=1200` 四档左右内边距分别为 `20 / 40 / 20 / 80px`。
这组值跨过 Elementor 额外断点且不呈单调递进，原生响应式 padding 会出现
`tablet_extra` 覆盖 `tablet` 的风险，无法稳定复现；因此保留原生容器与 Heading widget
结构，仅把父容器的左右内边距回收到主题样式，并使用非重叠 media query 兜底。
添加时间：2026-03-26。
*/
.contentBlock--statement {
  padding-left: 20px;
  padding-right: 20px;
}

@media (min-width: 768px) and (max-width: 991px) {
  .contentBlock--statement {
    padding-left: 40px;
    padding-right: 40px;
  }
}

@media (min-width: 1200px) {
  .contentBlock--statement {
    padding-left: 80px;
    padding-right: 80px;
  }
}

/*
作用域：`contentBlock` section 的 centered-intro 变体，绑定
`.contentBlock--centered-intro`、`.contentBlock__centeredCopy`。
责任归属：父容器自身 + widget 自身。
添加原因：2026-03-26 复刻 `Millwork Capabilities` section9 时，来源页该 band 由
一条 `text-secondary-bold-lg` 前导标题和两段居中文案组成。父容器左右内边距沿用
`20 / 40 / 20 / 80px` 的非单调分档，仍不适合直接写入 Elementor 重叠断点；
正文则要求 `<=1439` 保持 `16 / 24`，到 `>=1440` 再提升到 `18 / 27`，并统一段落
`margin-bottom: 13.5px` 与链接下划线样式，因此保留原生 Heading/Text Editor 结构，
把这些断点和富文本关系样式回收到主题 CSS。
添加时间：2026-03-26。
*/
.contentBlock--centered-intro {
  padding-left: 20px;
  padding-right: 20px;
}

.contentBlock__centeredCopy,
.contentBlock__centeredCopy .elementor-widget-container,
.contentBlock__centeredCopy .elementor-text-editor {
  margin: 0;
}

.contentBlock__centeredCopy,
.contentBlock__centeredCopy .elementor-text-editor,
.contentBlock__centeredCopy p,
.contentBlock__centeredCopy .elementor-text-editor p {
  color: #002058;
  font-family: "Acumin Pro Regular", Helvetica, Arial, sans-serif;
  font-size: 16px;
  line-height: 24px;
  text-align: center;
}

.contentBlock__centeredCopy p,
.contentBlock__centeredCopy .elementor-text-editor p {
  margin-top: 0;
  margin-bottom: 13.5px;
}

.contentBlock__centeredCopy a,
.contentBlock__centeredCopy .elementor-text-editor a {
  color: var(--jdw-product-blue-link);
  text-decoration: underline;
}

.contentBlock__centeredCopy a:hover,
.contentBlock__centeredCopy a:focus,
.contentBlock__centeredCopy .elementor-text-editor a:hover,
.contentBlock__centeredCopy .elementor-text-editor a:focus {
  text-decoration: none;
}

@media (min-width: 768px) and (max-width: 991px) {
  .contentBlock--centered-intro {
    padding-left: 40px;
    padding-right: 40px;
  }
}

@media (min-width: 1200px) {
  .contentBlock--centered-intro {
    padding-left: 80px;
    padding-right: 80px;
  }
}

@media (min-width: 1440px) {
  .contentBlock__centeredCopy,
  .contentBlock__centeredCopy .elementor-text-editor,
  .contentBlock__centeredCopy p,
  .contentBlock__centeredCopy .elementor-text-editor p {
    font-size: 18px;
    line-height: 27px;
  }
}

/*
作用域：`contentBlock` section 的 left-intro 变体，绑定 `.contentBlock--left-intro`、
`.contentBlock__leftIntroTitle .elementor-heading-title` 与 `.contentBlock__leftIntroCopy`。
责任归属：父容器自身 + widget 自身。
添加原因：2026-03-29 复刻 `myBLDR` 页面首个正文 band 时，来源页该 section 的左右内边距
在 `<=767 / 768-991 / 992-1199 / >=1200` 四档分别为 `20 / 40 / 20 / 80px`，
属于非单调分档；同时 hero 底部到该 band 顶部固定保留 `20px` 可见间距，标题 `h1`
在各断点都不额外加字距，否则 `390px` 档会从来源页的两行被撑成三行；正文在
`<=1439` 保持 `16 / 24`，到 `>=1440` 才升到 `18 / 27`，段落统一保留 `13.5px`
底外边距与链接下划线。由于远端 Elementor CSS 缓存目录当前存在权限告警，前台仍可能
继续引用旧的页面生成 CSS，因此把这两个稳定前台结果所需的覆写一并收口到主题 CSS。
添加时间：2026-03-29。
*/
.contentBlock--left-intro {
  margin-top: 20px;
  padding-left: 20px;
  padding-right: 20px;
}

.contentBlock__leftIntroTitle .elementor-heading-title {
  font-weight: 500 !important;
  letter-spacing: normal !important;
}

.contentBlock__leftIntroCopy,
.contentBlock__leftIntroCopy .elementor-widget-container,
.contentBlock__leftIntroCopy .elementor-text-editor {
  margin: 0;
}

.contentBlock__leftIntroCopy,
.contentBlock__leftIntroCopy .elementor-text-editor,
.contentBlock__leftIntroCopy p,
.contentBlock__leftIntroCopy .elementor-text-editor p {
  color: #002058;
  font-family: "Acumin Pro Regular", Helvetica, Arial, sans-serif;
  font-size: 16px;
  line-height: 24px;
  text-align: left;
}

.contentBlock__leftIntroCopy p,
.contentBlock__leftIntroCopy .elementor-text-editor p {
  margin-top: 0;
  margin-bottom: 13.5px;
}

.contentBlock__leftIntroCopy a,
.contentBlock__leftIntroCopy .elementor-text-editor a {
  color: var(--jdw-product-blue-link);
  text-decoration: underline;
}

.contentBlock__leftIntroCopy a:hover,
.contentBlock__leftIntroCopy a:focus,
.contentBlock__leftIntroCopy .elementor-text-editor a:hover,
.contentBlock__leftIntroCopy .elementor-text-editor a:focus {
  text-decoration: none;
}

@media (min-width: 768px) and (max-width: 991px) {
  .contentBlock--left-intro {
    padding-left: 40px;
    padding-right: 40px;
  }
}

@media (min-width: 1200px) {
  .contentBlock--left-intro {
    padding-left: 80px;
    padding-right: 80px;
  }
}

@media (min-width: 1440px) {
  .contentBlock__leftIntroCopy,
  .contentBlock__leftIntroCopy .elementor-text-editor,
  .contentBlock__leftIntroCopy p,
  .contentBlock__leftIntroCopy .elementor-text-editor p {
    font-size: 18px;
    line-height: 27px;
  }
}

/*
作用域：`contentBlock` section 的 centered CTA 按钮变体，绑定
`.contentBlock--cta-centered .contentBlock__ctaButton .elementor-button`。
责任归属：widget 自身。
添加原因：2026-03-29 复刻 `myBLDR` 页尾 CTA 时，来源页按钮在 `992-1439`
保持 `48px` 高度，只有到 `>=1440` 才升到 `50px`。共享 `.jdw-product-button`
在 `>=992` 会直接把所有按钮抬到 `50px`，导致 `1024px` 档按钮偏高 `2px`，
因此只对该 CTA 变体做最小范围修正。
添加时间：2026-03-29。
*/
@media (min-width: 992px) and (max-width: 1439px) {
  .contentBlock--cta-centered .contentBlock__ctaButton .elementor-button {
    min-height: 48px;
  }
}

@media (min-width: 1440px) {
  .contentBlock--cta-centered .contentBlock__ctaButton .elementor-button {
    min-height: 50px;
  }
}

/*
作用域：产品页 CTA 文案区与视频组件，绑定 `.jdw-product-cta__content` / `.jdw-product-video*`。
责任归属：widget 自身 + 父容器自身。
添加原因：该段为存量兼容样式，负责 CTA 文案对齐、视频封面裁切和播放按钮态，统一产品页底部行动区的交互表现。
添加时间：2026-03-23（存量样式清理）。
*/
.jdw-product-cta__content .elementor-widget-container,
.jdw-product-cta__content .elementor-text-editor,
.jdw-product-cta__content .elementor-text-editor p {
  margin: 0;
  text-align: center;
}

.jdw-product-video {
  margin-bottom: 40px;
  padding: 0 20px;
}

@media (min-width: 768px) {
  .jdw-product-video {
    padding: 0;
  }
}

@media (min-width: 992px) {
  .jdw-product-video {
    margin-bottom: 60px;
  }
}

.jdw-product-video__widget > .elementor-widget-container {
  max-width: 1200px;
  margin: 0 auto;
  overflow: hidden;
}

.jdw-product-video__widget .elementor-custom-embed-image-overlay {
  overflow: hidden;
}

.jdw-product-video__widget .elementor-custom-embed-image-overlay img {
  display: block;
  width: 100%;
  height: auto;
}

.jdw-product-video__widget .elementor-custom-embed-play {
  width: 80px;
  height: 80px;
  border-radius: 50%;
  background: rgba(0, 32, 88, 0.72);
  transition:
    transform 0.2s ease,
    background-color 0.2s ease;
}

.jdw-product-video__widget .elementor-custom-embed-play i,
.jdw-product-video__widget .elementor-custom-embed-play svg {
  font-size: 38px;
}

.jdw-product-video__widget:hover .elementor-custom-embed-play {
  background: rgba(200, 16, 46, 0.88);
  transform: translate(-50%, -50%) scale(1.08);
}

/*
作用域：`Advanced Manufacturing` 页独立 `videoPlayerComponent` section，绑定 `.jdw-product-video` 与
`.jdw-product-video__widget > .elementor-wrapper / .elementor-custom-embed-play`。
责任归属：父容器自身 + widget 自身。
添加原因：2026-03-28 复刻 `Advanced Manufacturing` 时，实测来源页独立视频 band 在 `390 / 820 / >=1200`
三档需要分别保持 `350 / 820 / 1200px` 可见封面宽度，对应下方 `60 / 80 / 100px` 的 section gap；同时播放态是
白圆蓝三角。当前存量 `.jdw-product-video` 规则仍假定 Elementor 会输出 `.elementor-widget-container`，
但前台实际只有 `.elementor-wrapper`，导致宽屏 `max-width: 1200` 完全失效，封面被错误拉满到整屏。这里仅按
`videoPlayerComponent` 的真实 DOM 做局部修正，不依赖 Elementor 自动生成的临时类。
添加时间：2026-03-28。
*/
.jdw-product-video {
  margin-bottom: 60px;
}

@media (min-width: 768px) and (max-width: 991px) {
  .jdw-product-video {
    margin-bottom: 80px;
  }
}

@media (min-width: 992px) {
  .jdw-product-video {
    margin-bottom: 100px;
  }
}

.jdw-product-video__widget > .elementor-wrapper {
  max-width: 1200px;
  margin: 0 auto;
  overflow: hidden;
}

.jdw-product-video__widget .elementor-custom-embed-play {
  display: flex;
  align-items: center;
  justify-content: center;
  background: #ffffff;
}

.jdw-product-video__widget .elementor-custom-embed-play svg {
  width: 28px;
  height: 28px;
  fill: #002058;
  color: #002058;
}

.jdw-product-video__widget:hover .elementor-custom-embed-play {
  background: #ffffff;
}

/*
作用域：ReadyFrame 专题页计数器与 showcase 轮播，绑定 `.jdw-readyframe-counter*` / `.jdw-readyframe-showcase`。
责任归属：父容器自身 + widget 自身 + 跨元素关系。
添加原因：该段为存量兼容样式，负责大数字英雄区、免责声明留白和 content carousel 深色变体，保持 ReadyFrame 专题页的专题化视觉。
添加时间：2026-03-23（存量样式清理）。
*/
.jdw-readyframe-counter {
  margin-bottom: 40px;
}

.jdw-readyframe-counter__heading .elementor-heading-title {
  margin: 0;
  color: var(--jdw-product-blue);
  font-family: "Apotek Extra Condensed Bold", Helvetica, Arial, sans-serif;
  font-size: 32px;
  font-weight: 400;
  line-height: 1;
  letter-spacing: 0.05em;
  text-align: center;
}

@media (min-width: 992px) {
  .jdw-readyframe-counter__heading .elementor-heading-title {
    font-size: 40px;
  }
}

.jdw-readyframe-counter__hero {
  margin-top: 30px;
  min-height: 400px;
  text-align: center;
  text-shadow: 2px 2px 3px #000000;
}

.jdw-readyframe-counter__inner {
  min-height: inherit;
  color: #ffffff;
}

.jdw-readyframe-counter__number .elementor-heading-title {
  color: #ffffff;
  font-family: "Apotek Extra Condensed Bold", Helvetica, Arial, sans-serif;
  font-size: 50px;
  font-weight: 400;
  line-height: 1;
  letter-spacing: 0.08em;
}

.jdw-readyframe-counter__disclaimer {
  padding: 20px;
}

.jdw-readyframe-counter__disclaimer .elementor-widget-container,
.jdw-readyframe-counter__disclaimer .elementor-text-editor,
.jdw-readyframe-counter__disclaimer .elementor-text-editor p,
.jdw-readyframe-counter__disclaimer .elementor-text-editor a {
  font-size: 14px;
}

@media (min-width: 576px) {
  .jdw-readyframe-counter__number .elementor-heading-title {
    font-size: 70px;
  }
}

@media (min-width: 768px) {
  .jdw-readyframe-counter__number .elementor-heading-title {
    font-size: 100px;
  }

  .jdw-readyframe-counter__disclaimer {
    padding-left: 6.5%;
    padding-right: 6.5%;
  }
}

.jdw-readyframe-showcase .content-carousel-component {
  margin-bottom: 40px;
}

.jdw-readyframe-showcase .content-carousel-component .box {
  background: var(--jdw-product-blue);
  color: #ffffff;
}

.jdw-readyframe-showcase .content-carousel-component .box .headline,
.jdw-readyframe-showcase .content-carousel-component .box .headline h2,
.jdw-readyframe-showcase .content-carousel-component .box .content,
.jdw-readyframe-showcase .content-carousel-component .box .content p,
.jdw-readyframe-showcase .content-carousel-component .box .content li {
  color: #ffffff;
}

.jdw-readyframe-showcase .content-carousel-component .box .content .btn {
  margin-top: 20px;
}

.jdw-readyframe-showcase .content-carousel-component .slides {
  padding-left: 0;
}

@media (min-width: 1440px) {
  .jdw-readyframe-showcase .content-carousel-component {
    margin-bottom: 80px;
  }
}

/*
作用域：`videoCarouselStrip` section 的页面级标题，绑定 `.video-carousel-strip .headline .elementor-heading-title`。
责任归属：`widget 自身`，但由主题 CSS 做断点兜底。
添加原因：来源页标题在 `<992` 为 `32/32`、`>=992` 为 `40/40`；Elementor 额外断点下页面级 Heading 的原生响应式值会发生 `768-991` 被更大区间覆盖，导致 `820` 档错误落到 `40px`。按 section 规范改用非重叠 media query 稳定表达。
添加时间：2026-03-26
*/
.video-carousel-strip .headline .elementor-heading-title {
  font-size: 32px !important;
  line-height: 32px !important;
}

@media (min-width: 992px) {
  .video-carousel-strip .headline .elementor-heading-title {
    font-size: 40px !important;
    line-height: 40px !important;
  }
}

/*
作用域：`Installed Services` 页面新落地的 `iconCollection` section，绑定 `.iconCollection__item > .iconCollection__media`。
责任归属：`父容器自身`。
添加原因：该 section 的图标列责任属于布局项本身，来源页要求 `<768` 固定 `40px`、`>=768` 固定 `50px`。当前 Elementor 容器宽度控件虽然把 `--width` 写入页面 CSS，但前台实际 flex basis 仍被压缩到约 `40.36px / 44.30px`，导致正文列变宽、换行减少、整段 section 高度偏低。这里用稳定 class 做最小范围兜底，只恢复媒体列固定宽度，不干预标题、正文等可由 Elementor 原生稳定表达的属性。
添加时间：2026-03-29
*/
.iconCollection__item > .iconCollection__media {
  flex: 0 0 40px !important;
  width: 40px !important;
  min-width: 40px !important;
  max-width: 40px !important;
}

@media (min-width: 768px) {
  .iconCollection__item > .iconCollection__media {
    flex-basis: 50px !important;
    width: 50px !important;
    min-width: 50px !important;
    max-width: 50px !important;
  }
}

/*
作用域：`Digital Solutions` 页面 `formCenteredSection` section2，绑定 `.formCenteredSection`、`.formCenteredSection__copy`、`.formCenteredSection__card`。
责任归属：`父容器自身 + widget 自身`。
添加原因：来源页该 section 的外层 padding 真实断点是 `<=600`，当前 Elementor 响应式控件只能稳定覆盖到 `<=767`；同时正文需要 `max-width: 600px`，卡片需要双层阴影，均无法只靠当前原生控件精确表达。这里用最小范围的主题 CSS 兜底，不把样式扩散到其他页面。
添加时间：2026-03-27
*/
.formCenteredSection__copy.elementor-widget {
  width: 100% !important;
  max-width: 600px !important;
  margin-left: auto;
  margin-right: auto;
  align-self: center;
}

.formCenteredSection__copy > p {
  margin: 0 !important;
}

.formCenteredSection__card.e-con {
  box-shadow: 0 12px 30px rgba(0, 0, 0, 0.08), 0 3px 8px rgba(0, 0, 0, 0.05);
}

@media (max-width: 600px) {
  .formCenteredSection.e-con {
    padding: 30px 16px 30px 16px;
  }
}

/*
作用域：`Digital Solutions` 页面 `bldrBoothWrap` section3，绑定 `.bldrBoothWrap`。
责任归属：`父容器自身`。
添加原因：来源页这段 band 的真实几何依赖 `width: calc(100% - 40px)`、`max-width: 1600px`，并在 `1200 / 900 / 600` 三个非项目默认断点切换左右内边距。当前 Elementor 原生容器无法只靠页面数据稳定表达这组总宽度公式和非默认断点，因此在主题 CSS 里按稳定 class 做最小范围兜底。
添加时间：2026-03-29
*/
.bldrBoothWrap.e-con {
  width: calc(100% - 40px) !important;
  max-width: 1600px !important;
  margin-left: auto !important;
  margin-right: auto !important;
  padding: 0 200px 20px !important;
  text-align: center;
}

/*
作用域：`Digital Solutions` 页面 `bldrBoothWrap` section3 的 Pro `Animated Headline` 标题，绑定 `.bldrBoothWrap__title .elementor-headline`。
责任归属：`widget 自身`。
添加原因：2026-03-29 将该标题收回到 Elementor Pro `Animated Headline` 后，内部真实可见元素变成 `<h2 class="elementor-headline">`。浏览器默认 `h2` 上下 margin 会把 widget 可见高度从来源页 `40px` 撑到约 `106.375px`，导致整段 section 高度由 `161px` 被拉到 `227.375px`。Elementor 外层 widget margin 只能控制组件盒，不能清理内部 `h2` 的浏览器默认 margin，因此这里按稳定 class 把内部 headline margin 归零，恢复来源页几何。
添加时间：2026-03-29
*/
.bldrBoothWrap__title .elementor-headline {
  margin: 0;
}

@media (max-width: 1200px) {
  .bldrBoothWrap.e-con {
    padding: 0 120px 20px !important;
  }
}

@media (max-width: 900px) {
  .bldrBoothWrap.e-con {
    padding: 0 60px 20px !important;
  }
}

@media (max-width: 600px) {
  .bldrBoothWrap.e-con {
    padding: 0 24px 20px !important;
  }
}

/*
作用域：`Digital Solutions` 页面 `hubPillRow` section4 与四条 `bannerContentBox--digitalSolutions` 内跳锚点，绑定 `.hubPillRow__items`、`.hubPillRow__pill`、`.hubPillRow__label a`、`.bannerContentBox--digitalSolutions .jump-anchor`。
责任归属：`父容器自身 + widget 自身 + 跨元素关系`。
添加原因：来源页 pills 这一行除了 hover 状态外，还依赖 row 自身按内容 shrink-wrap、pill item 取消 `100%` 宽度，以及 `900 / 600` 两个非项目默认断点下的锚点 offset。Elementor container 的默认 `e-con-full` 会把每个 pill 拉成整行，单靠页面数据无法把这组三者同时稳定还原，因此在主题 CSS 下做最小范围兜底。
添加时间：2026-03-29
*/
.hubPillRow.e-con {
  flex-direction: row !important;
  flex-wrap: wrap !important;
  justify-content: center !important;
  padding-left: 20px !important;
  padding-right: 20px !important;
}

.hubPillRow__items.e-con {
  width: 100% !important;
  max-width: none !important;
  align-self: center;
}

.hubPillRow__pill.e-con {
  width: auto !important;
  flex: 0 0 auto !important;
}

.hubPillRow__pill.e-con {
  transition: background 0.2s ease;
}

.hubPillRow__pill.e-con:hover {
  background-color: rgba(20, 192, 255, 0.35) !important;
}

.hubPillRow__label .elementor-heading-title {
  white-space: nowrap;
  text-transform: uppercase;
}

.hubPillRow__label a {
  text-decoration: none !important;
}

.hubPillRow__label a:hover,
.hubPillRow__label a:focus {
  text-decoration: underline !important;
}

.bannerContentBox--digitalSolutions .jump-anchor {
  position: relative;
  top: -220px;
  display: block;
  height: 0;
}

@media (max-width: 900px) {
  .bannerContentBox--digitalSolutions .jump-anchor {
    top: -180px;
  }
}

@media (max-width: 600px) {
  .bannerContentBox--digitalSolutions .jump-anchor {
    top: -140px;
  }
}

@media (min-width: 768px) and (max-width: 991px) {
  .hubPillRow.e-con {
    padding-left: 50px !important;
    padding-right: 50px !important;
  }
}

@media (min-width: 992px) and (max-width: 1199px) {
  .hubPillRow.e-con {
    padding-left: calc(6.5% + 40px) !important;
    padding-right: calc(6.5% + 40px) !important;
  }
}

@media (min-width: 1200px) {
  .hubPillRow.e-con {
    padding-left: calc(6.5% + 80px) !important;
    padding-right: calc(6.5% + 80px) !important;
  }
}

/*
作用域：`Digital Solutions` 页面 `section5-8` 的四条 `bannerContentBox--digitalSolutions` 列表正文与 mobile box 底部节奏，绑定 `.bannerContentBox--digitalSolutions .jdw-banner-copy ul`、`.bannerContentBox--digitalSolutions > .box`。
责任归属：`widget 自身 + 父容器自身`。
添加原因：来源页这四条 banner 的列表缩进是 `25px`，而当前通用 `jdw-banner-copy--list-spaced` 沿用更宽的默认缩进，导致第 `2-4` 条 banner 在 `390 / 820 / 1024` 下提前换行、box 高度被拉高。另一个 mobile 差异是来源页 plain HTML 的最后一个 `ul` 会发生 margin collapse，`.box` 可见底 padding 实际只剩 `13.5px`；测试站的 Elementor flex 容器不会折叠这段 margin，所以 `390px` 下每条 banner 还会额外高出约 `40px`。这里把该页变体的列表缩进和 mobile 底部节奏一并收回到来源值，不动其他 banner 页面。
添加时间：2026-03-29
*/
.bannerContentBox--digitalSolutions .jdw-banner-copy ul {
  padding-left: 25px;
}

.bannerContentBox--digitalSolutions .headline .elementor-heading-title {
  letter-spacing: 1.5px !important;
}

@media (max-width: 767px) {
  .bannerContentBox--digitalSolutions > .box {
    padding-bottom: 13.5px !important;
  }

  .bannerContentBox--digitalSolutions .jdw-banner-copy > ul:last-child {
    margin-bottom: 0 !important;
  }
}

/*
作用域：`Digital Solutions` 页面 `betterBuildingContent` section9，绑定 `.betterBuildingContent__grid`、`.betterBuildingContent__item`。
责任归属：`父容器自身 + 跨元素关系`。
添加原因：来源页底部能力区使用真实 CSS grid，在 `>990` 为四列、`<=990` 为两列；同时 grid 自带 `20px` 上下留白，`<=990` 的 item 还比当前原生输出更高。测试站若继续沿用 Elementor flex 容器配合 `25% / 50%` 宽度，会把 item 宽度和 column gap 累加，导致 `1024 / 1560` 提前换行，而纯粹改成 grid 后又会让 `390 / 820` 两档的 section 高度偏低。这里把 grid root 收回为真实 grid，并补齐来源页的上下留白与 `<=990` item 高度；标题、文案、图标尺寸仍交给 Elementor 原生控件。
添加时间：2026-03-29
*/
.betterBuildingContent__grid.e-con {
  display: grid !important;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 24px !important;
  width: 100% !important;
  max-width: 1100px !important;
  padding-top: 20px !important;
  padding-bottom: 20px !important;
}

.betterBuildingContent__item.e-con {
  width: auto !important;
  min-width: 0 !important;
}

@media (max-width: 990px) {
  .betterBuildingContent__grid.e-con {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 20px !important;
    justify-items: center;
  }

  .betterBuildingContent__item.e-con {
    min-height: 190px;
  }
}

@media (max-width: 768px) {
  .betterBuildingContent__grid.e-con {
    gap: 18px !important;
  }

  .betterBuildingContent__item.e-con {
    min-height: 179px;
  }
}

/*
作用域：`Multi-Family Services` 页 `manufacturingOperations` 统计 band，绑定 `.manufacturingOperations`、`.manufacturingOperations__intro`、`.manufacturingOperations__stats` 与三项 `.manufacturingOperations__item--*`。
责任归属：`父容器自身 + 跨元素关系`。
添加原因：来源页该 band 同时依赖 `max-width: 825px` 文案收口，以及 `<=767 / 768-991 / 992-1199 / >=1200` 四档非单调横向收口和三项统计格的宽度/分隔线切换。当前 Elementor 额外断点的原生响应式值会让 `768-991` 被更大区间覆盖，前台无法稳定得到来源页的 `20 / 40 / 20 / 80` 左右内边距与 `50% + 50% + 50%` -> `33.333% * 3` 布局，因此改用稳定 class + 非重叠 media query 兜底。
添加时间：2026-03-28
*/
.manufacturingOperations.e-con {
  padding: 0 20px !important;
}

.manufacturingOperations__intro.elementor-widget {
  width: 100% !important;
  max-width: 825px !important;
  margin: 0 auto 40px !important;
  align-self: center;
}

.manufacturingOperations__intro .elementor-heading-title {
  font-size: 30px !important;
  line-height: 30px !important;
}

.manufacturingOperations__stats.e-con {
  display: flex;
  flex-direction: row;
  flex-wrap: nowrap;
  align-items: stretch;
  justify-content: space-around;
  padding: 20px 0 !important;
}

.manufacturingOperations__item.e-con {
  width: 33.333% !important;
  max-width: 33.333% !important;
  flex: 0 0 33.333% !important;
  padding: 30px 20px !important;
  border: 0 solid #002058 !important;
}

.manufacturingOperations__item--2.e-con,
.manufacturingOperations__item--3.e-con {
  border-left-width: 1px !important;
}

.manufacturingOperations__value .elementor-heading-title {
  font-size: 60px !important;
  line-height: 60px !important;
  letter-spacing: 0.05em !important;
}

.manufacturingOperations__label .elementor-heading-title {
  font-size: 24px !important;
  line-height: 1.2em !important;
  letter-spacing: 0.05em !important;
}

@media (min-width: 768px) and (max-width: 991px) {
  .manufacturingOperations.e-con {
    padding: 0 40px !important;
  }
}

@media (max-width: 991px) {
  .manufacturingOperations__intro .elementor-heading-title {
    font-size: 24px !important;
    line-height: 24px !important;
  }

  .manufacturingOperations__stats.e-con {
    flex-wrap: wrap;
  }

  .manufacturingOperations__item.e-con {
    width: 50% !important;
    max-width: 50% !important;
    flex: 0 0 50% !important;
    border: 0 solid #002058 !important;
  }

  .manufacturingOperations__item--1.e-con {
    border-bottom-width: 1px !important;
  }

  .manufacturingOperations__item--2.e-con {
    border-left-width: 1px !important;
  }

  .manufacturingOperations__value .elementor-heading-title {
    font-size: 34px !important;
    line-height: 34px !important;
  }

  .manufacturingOperations__label .elementor-heading-title {
    font-size: 22px !important;
  }
}

@media (min-width: 1200px) {
  .manufacturingOperations.e-con {
    padding: 0 80px !important;
  }
}

/*
作用域：`Multi-Family Services` 页 `contentCarouselComponent` 引言轮播，绑定 `.contentCarouselComponentSection`、`.contentCarouselComponent__headline` 与 `.contentCarouselComponent__widget .content-carousel-component`。
责任归属：`父容器自身 + 跨元素关系`。
添加原因：来源页该轮播复用通用 `.bannerContentBox` 断点，`<=767` 是图片在上、文案在下且正文盒左右 `20px` 内边距并隐藏 dots，`768-991` 已经恢复 `60 / 40` 左右并排且重新显示 dots 分页；当前共享 `Content Slides Carousel` widget 的通用 CSS 会在 `<=991` 统一改成纵向堆叠、把文案盒左右内边距放大到 `40px`，并持续隐藏 dots，导致几何和可见反馈都偏离来源页。这里用页面级稳定 class 做最小范围兜底，避免影响 `videoCarouselComponent` 等其他 carousel 变体。
添加时间：2026-03-28
*/
.contentCarouselComponent__headline .elementor-heading-title {
  font-size: 32px !important;
  line-height: 32px !important;
  letter-spacing: 0.05em !important;
}

@media (min-width: 992px) {
  .contentCarouselComponent__headline .elementor-heading-title {
    font-size: 40px !important;
    line-height: 40px !important;
  }
}

@media (max-width: 767px) {
  .contentCarouselComponent__widget .content-carousel-component .bannerContentBox {
    flex-direction: row;
    flex-wrap: wrap;
  }

  .contentCarouselComponent__widget .content-carousel-component .bannerContentBox > .image,
  .contentCarouselComponent__widget .content-carousel-component .bannerContentBox.content-aligned-left > .image,
  .contentCarouselComponent__widget .content-carousel-component .bannerContentBox.content-aligned-right > .image {
    order: 0;
    flex: 0 0 100%;
    min-width: 100%;
    max-width: none;
    overflow: hidden;
  }

  .contentCarouselComponent__widget .content-carousel-component .bannerContentBox > .box,
  .contentCarouselComponent__widget .content-carousel-component .bannerContentBox.content-aligned-left > .box,
  .contentCarouselComponent__widget .content-carousel-component .bannerContentBox.content-aligned-right > .box {
    order: 1;
    flex: 1 1 100%;
    min-width: 100%;
    max-width: none;
    padding: 40px 20px !important;
  }
}

@media (min-width: 768px) and (max-width: 991px) {
  .contentCarouselComponent__widget .content-carousel-component .slick-dots {
    display: block !important;
  }

  .contentCarouselComponent__widget .content-carousel-component .bannerContentBox {
    flex-direction: row;
    flex-wrap: nowrap;
  }

  .contentCarouselComponent__widget .content-carousel-component .bannerContentBox > .image,
  .contentCarouselComponent__widget .content-carousel-component .bannerContentBox.content-aligned-left > .image,
  .contentCarouselComponent__widget .content-carousel-component .bannerContentBox.content-aligned-right > .image {
    order: 1;
    flex: 1 1 60%;
    min-width: 60%;
    max-width: 60%;
  }

  .contentCarouselComponent__widget .content-carousel-component .bannerContentBox > .box,
  .contentCarouselComponent__widget .content-carousel-component .bannerContentBox.content-aligned-left > .box,
  .contentCarouselComponent__widget .content-carousel-component .bannerContentBox.content-aligned-right > .box {
    order: 0;
    display: flex;
    align-self: center;
    align-items: center;
    flex: 1 1 auto;
    min-width: 0;
    max-width: none;
    padding: 40px !important;
  }
}

/*
作用域：`Design Ultra Team` 页 `contentCarouselComponent` 项目轮播，绑定
`.contentCarouselComponentSection--design-ultra-team` 与
`.contentCarouselComponent__widget--design-ultra-team .content-carousel-component`。
责任归属：`父容器自身 + 跨元素关系`。
添加原因：来源页这条项目轮播实际继承通用 `.bannerContentBox` 规则，`>=768` 即切换为
`box 40% / image 60%` 左文右图，文案盒垂直居中且高度按内容收口，dots 在 `768-991`
继续显示，箭头也在该断点开始垂直居中。共享 `Content Slides Carousel` widget 默认要到
`>=992` 才切双列，并在桌面把 `.box` 拉伸到整张 slide 高度、在 `<=991` 隐藏 dots，
导致该页项目卡片高度、标题字号和交互位置都偏离来源页；同时 widget 在 `<=991` 会把
图列内部的 `.item / .responsive-banner / image wrapper` 高度链重置成 `auto`，让项目图
无法像来源页那样撑满当前 slide 高度。这里用页面级稳定 class 做最小范围覆盖，不影响
其他 `contentCarouselComponent` 变体。
添加时间：2026-03-30
*/
.contentCarouselComponent__widget--design-ultra-team
  .content-carousel-component
  .bannerContentBox {
  height: 100%;
}

@media (max-width: 991px) {
  .contentCarouselComponent__widget--design-ultra-team
    .content-carousel-component
    .bannerContentBox
    > .image
    .item,
  .contentCarouselComponent__widget--design-ultra-team
    .content-carousel-component
    .responsive-banner,
  .contentCarouselComponent__widget--design-ultra-team
    .content-carousel-component
    .jdw-content-slides-carousel__image-wrapper,
  .contentCarouselComponent__widget--design-ultra-team
    .content-carousel-component
    .jdw-content-slides-carousel__media-link,
  .contentCarouselComponent__widget--design-ultra-team
    .content-carousel-component
    .jdw-content-slides-carousel__image-wrapper
    > .jdw-content-slides-carousel__image,
  .contentCarouselComponent__widget--design-ultra-team
    .content-carousel-component
    .jdw-content-slides-carousel__media-link
    > .jdw-content-slides-carousel__image-wrapper
    > .jdw-content-slides-carousel__image {
    height: 100%;
    min-height: inherit;
  }
}

@media (min-width: 768px) {
  .contentCarouselComponent__widget--design-ultra-team
    .content-carousel-component
    .slick-prev,
  .contentCarouselComponent__widget--design-ultra-team
    .content-carousel-component
    .slick-next {
    top: 50%;
    margin-top: 0;
  }

  .contentCarouselComponent__widget--design-ultra-team
    .content-carousel-component
    .bannerContentBox
    > .box,
  .contentCarouselComponent__widget--design-ultra-team
    .content-carousel-component
    .bannerContentBox.content-aligned-left
    > .box,
  .contentCarouselComponent__widget--design-ultra-team
    .content-carousel-component
    .bannerContentBox.content-aligned-right
    > .box {
    display: flex;
    align-self: center;
    align-items: center;
    flex: 1 1 auto;
    min-width: 0;
    max-width: none;
  }
}

@media (min-width: 768px) and (max-width: 991px) {
  .contentCarouselComponent__widget--design-ultra-team
    .content-carousel-component
    .slick-dots {
    display: block !important;
  }

  .contentCarouselComponent__widget--design-ultra-team
    .content-carousel-component
    .bannerContentBox {
    align-items: stretch;
    flex-direction: row;
    flex-wrap: nowrap;
    margin-top: 0;
    margin-bottom: 0;
    overflow: visible;
  }

  .contentCarouselComponent__widget--design-ultra-team
    .content-carousel-component
    .bannerContentBox
    > .image,
  .contentCarouselComponent__widget--design-ultra-team
    .content-carousel-component
    .bannerContentBox.content-aligned-left
    > .image,
  .contentCarouselComponent__widget--design-ultra-team
    .content-carousel-component
    .bannerContentBox.content-aligned-right
    > .image {
    order: 1;
    display: flex;
    flex: 0 0 60%;
    min-height: 100%;
    min-width: 60%;
    max-width: 60%;
    overflow: visible;
  }

  .contentCarouselComponent__widget--design-ultra-team
    .content-carousel-component
    .bannerContentBox
    > .image
    .item,
  .contentCarouselComponent__widget--design-ultra-team
    .content-carousel-component
    .bannerContentBox
    > .image
    .responsive-banner,
  .contentCarouselComponent__widget--design-ultra-team
    .content-carousel-component
    .bannerContentBox
    > .image
    .jdw-content-slides-carousel__image-wrapper {
    display: flex;
    flex: 1 1 auto;
  }

  .contentCarouselComponent__widget--design-ultra-team
    .content-carousel-component
    .bannerContentBox
    > .box,
  .contentCarouselComponent__widget--design-ultra-team
    .content-carousel-component
    .bannerContentBox.content-aligned-left
    > .box,
  .contentCarouselComponent__widget--design-ultra-team
    .content-carousel-component
    .bannerContentBox.content-aligned-right
    > .box {
    order: 0;
    padding: 40px !important;
  }

  .contentCarouselComponent__widget--design-ultra-team
    .content-carousel-component
    .bannerContentBox
    .box
    .headline {
    font-size: 40px;
  }
}

/*
作用域：`Matt Risinger` 详情页首段人物导语，绑定 `.contentBlock--expert-bio-intro`
与 `.contentBlock__expertBioCopy`。
责任归属：`widget 自身`。
添加原因：该人物导语 band 复用通用 `.content` 结构，但同一个 Text Editor 内同时包含
`text-secondary-bold-lg` 角色行与两段正文；来源页正文在 `<=1199` 保持 `16 / 24`，
仅在 `>=1200` 提升到 `18 / 27`，且三段都保留 `13.5px` 段落节奏。共享
`jdw-product-richtext` 会在 `>=992` 过早升到 `18px`，因此这里用稳定 class 恢复
该页真实排版，不影响其他 `.contentBlock` 变体。
添加时间：2026-03-29
*/
.contentBlock__expertBioCopy,
.contentBlock__expertBioCopy .elementor-widget-container,
.contentBlock__expertBioCopy .elementor-text-editor {
  margin: 0;
}

.contentBlock__expertBioCopy,
.contentBlock__expertBioCopy .elementor-text-editor,
.contentBlock__expertBioCopy p,
.contentBlock__expertBioCopy .elementor-text-editor p {
  color: #002058;
  font-family: "Acumin Pro Regular", Helvetica, Arial, sans-serif;
  font-size: 16px;
  line-height: 24px;
}

.contentBlock__expertBioCopy p,
.contentBlock__expertBioCopy .elementor-text-editor p {
  margin-top: 0;
  margin-bottom: 13.5px;
}

@media (min-width: 1200px) {
  .contentBlock__expertBioCopy,
  .contentBlock__expertBioCopy .elementor-text-editor,
  .contentBlock__expertBioCopy p,
  .contentBlock__expertBioCopy .elementor-text-editor p {
    font-size: 18px;
    line-height: 27px;
  }
}

/*
作用域：`Matt Risinger` 页 `contentCarouselComponent` 视频/Panel 轮播，绑定
`.contentCarouselComponentSection--experts-webinars`、`.contentCarouselComponent__expertCopy`
与 `.jdw-content-slides-carousel__video-cta`。
责任归属：`widget 自身 + 跨元素关系`。
添加原因：该页 slide 正文需要在共享 `Content Slides Carousel` widget 内额外承接一颗
`Watch Video` CTA，并让按钮点击联动同 slide 的视频 lightbox。共享 widget 只覆盖
标题、正文和媒体，不覆盖 box 内按钮的字号、间距与 hover，也不会处理正文 CTA 到
媒体触发器的关系，因此在本页稳定 class 下补齐来源页 `16 / 24` 正文与按钮视觉。
添加时间：2026-03-29
*/
.contentCarouselComponentSection--experts-webinars .contentCarouselComponent__expertCopy,
.contentCarouselComponentSection--experts-webinars
  .contentCarouselComponent__expertCopy
  p {
  color: #002058;
  font-family: "Acumin Pro Regular", Helvetica, Arial, sans-serif;
  font-size: 16px;
  line-height: 24px;
}

.contentCarouselComponentSection--experts-webinars
  .contentCarouselComponent__expertCopy
  > p {
  margin-top: 0;
  margin-bottom: 13.5px;
}

.contentCarouselComponentSection--experts-webinars
  .contentCarouselComponent__expertButton {
  margin-bottom: 0;
}

.contentCarouselComponentSection--experts-webinars
  .jdw-content-slides-carousel__video-cta {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 48px;
  margin-top: 20px;
  padding: 14px 30px 12px;
  border: 3px solid var(--jdw-product-red);
  border-radius: 0;
  background: var(--jdw-product-red);
  color: #ffffff;
  font-family: "Acumin Pro Regular", Helvetica, Arial, sans-serif;
  font-size: 16px;
  line-height: 16px;
  text-decoration: none;
  transition:
    background-color 0.2s ease,
    border-color 0.2s ease;
}

.contentCarouselComponentSection--experts-webinars
  .jdw-content-slides-carousel__video-cta:hover,
.contentCarouselComponentSection--experts-webinars
  .jdw-content-slides-carousel__video-cta:focus {
  background: var(--jdw-product-red-hover);
  border-color: var(--jdw-product-red-hover);
  color: #ffffff;
}

@media (min-width: 1200px) {
  .contentCarouselComponentSection--experts-webinars .contentCarouselComponent__expertCopy,
  .contentCarouselComponentSection--experts-webinars
    .contentCarouselComponent__expertCopy
    p {
    font-size: 18px;
    line-height: 27px;
  }

  .contentCarouselComponentSection--experts-webinars
    .jdw-content-slides-carousel__video-cta {
    min-height: 50px;
    font-size: 18px;
    line-height: 18px;
  }
}

/*
作用域：`getConnectedForm` section，适用 `The Risinger Build: Austin` 与 `Altitude Adjustment`
页尾白底 JotForm 表单带，绑定 `.getConnectedForm`。
责任归属：`父容器自身`。
添加原因：该 section 的 root padding 理论上可由 Elementor 原生响应式控件表达，但当前测试站
启用了 `tablet / tablet_extra / laptop` 额外断点后，Elementor 为同一容器生成的是重叠的
`max-width: 1199` 与 `max-width: 991` 规则，而且不同页面生成顺序不稳定。结果是同一套
页面数据在 `Altitude Adjustment` 的 `820px` 会被错误解析成 `20px` 左右 padding，而
`The Risinger Build: Austin` 却是正确的 `40px`。这里用非重叠 media query 直接覆盖
root 自定义属性，稳定四档 `20 / 40 / 20 / 80` 横向安全边距，避免继续依赖不稳定的
原生 CSS 输出顺序。
添加时间：2026-03-29
*/
@media (max-width: 767px) {
  .elementor .elementor-element.getConnectedForm {
    --padding-top: 20px;
    --padding-bottom: 20px;
    --padding-left: 20px;
    --padding-right: 20px;
  }
}

@media (min-width: 768px) and (max-width: 991px) {
  .elementor .elementor-element.getConnectedForm {
    --padding-top: 40px;
    --padding-bottom: 40px;
    --padding-left: 40px;
    --padding-right: 40px;
  }
}

@media (min-width: 992px) and (max-width: 1439px) {
  .elementor .elementor-element.getConnectedForm {
    --padding-top: 40px;
    --padding-bottom: 40px;
    --padding-left: 20px;
    --padding-right: 20px;
  }
}

@media (min-width: 1440px) {
  .elementor .elementor-element.getConnectedForm {
    --padding-top: 40px;
    --padding-bottom: 40px;
    --padding-left: 80px;
    --padding-right: 80px;
  }
}

/*
作用域：`Request a Quote` 页面唯一可见表单 band，绑定 `.requestQuoteForm` 与其内部
`.requestQuoteForm__*`、`.requestQuoteForm__widget .wpcf7*`。
责任归属：`widget 自身 + 父容器自身 + 跨元素关系`。
添加原因：该页标题和外层收口可以用 Elementor 原生容器/Heading/Text Editor 表达，但
表单内部同时依赖双列/单列切换、自定义上传按钮、radio/checkbox 外观、条件显示的 billing
字段组，以及 CF7 默认输出结构和目标站视觉之间的大量跨元素关系。以上职责无法稳定仅靠
Elementor 原生控件表达，因此保持页面级结构原生，把表单壳体和交互细节收敛到 CF7 模板 +
本段局部主题 CSS。
添加时间：2026-03-30
*/
.requestQuoteForm__copy .elementor-text-editor p {
  margin: 0;
}

.requestQuoteForm__title.elementor-widget {
  margin-bottom: 20px !important;
}

.requestQuoteForm__copy.elementor-widget {
  margin-bottom: 13.5px !important;
}

.requestQuoteForm__inner.e-con {
  padding: 0;
}

.requestQuoteForm__widget.elementor-widget,
.requestQuoteForm__widget .elementor-widget-container,
.requestQuoteForm__widget .jdw-contact-form-7__wrap,
.requestQuoteForm__widget .wpcf7,
.requestQuoteForm__widget .wpcf7 form,
.requestQuoteForm__widget .requestQuoteForm__form {
  width: 100%;
}

.requestQuoteForm__widget .wpcf7 {
  color: #002058;
}

.requestQuoteForm__widget .wpcf7 form {
  margin: 0;
}

.requestQuoteForm__widget .wpcf7 form br {
  display: none;
}

.requestQuoteForm__widget .wpcf7 .wpcf7-form-control-wrap {
  display: block;
  width: 100%;
}

.requestQuoteForm__widget .requestQuoteForm__form {
  font-family: "Acumin Pro Regular", Helvetica, Arial, sans-serif;
}

.requestQuoteForm__widget .requestQuoteForm__progress {
  display: flex;
  justify-content: space-between;
  gap: 2%;
  margin-bottom: 20px;
}

.requestQuoteForm__widget .requestQuoteForm__progressStep {
  flex: 1 1 50%;
  max-width: 49%;
  height: 4px;
  background: #a7a8a9;
}

.requestQuoteForm__widget .requestQuoteForm__progressStep--active {
  background: #c8102e;
}

.requestQuoteForm__widget .requestQuoteForm__legendRow {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  justify-content: space-between;
  gap: 10px 20px;
  margin-bottom: 10px;
}

.requestQuoteForm__widget .requestQuoteForm__subHeading {
  color: #002058;
  font-family: "Acumin Pro Bold", Helvetica, Arial, sans-serif;
  font-size: 22px;
  line-height: 33px;
}

.requestQuoteForm__widget .requestQuoteForm__requiredLegend {
  color: #c8102e;
  font-family: "Acumin Pro Bold", Helvetica, Arial, sans-serif;
  font-size: 14px;
  line-height: 1.2;
}

.requestQuoteForm__widget .requestQuoteForm__groupTitle {
  width: 100%;
  margin: 10px 0 20px;
  color: #002058;
  font-family: "Acumin Pro Bold", Helvetica, Arial, sans-serif;
  font-size: 18px;
  line-height: 1.2;
}

.requestQuoteForm__widget .requestQuoteForm__grid {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  row-gap: 20px;
}

.requestQuoteForm__widget .requestQuoteForm__field {
  width: 100%;
}

.requestQuoteForm__widget .requestQuoteForm__field--full {
  width: 100%;
}

.requestQuoteForm__widget .requestQuoteForm__label,
.requestQuoteForm__widget .requestQuoteForm__field label {
  display: block;
  margin: 0 0 6px;
  color: #002058;
  font-family: "Acumin Pro Bold", Helvetica, Arial, sans-serif;
  font-size: 14px;
  line-height: 1.2;
}

.requestQuoteForm__widget .requestQuoteForm__required {
  margin-right: 2px;
  color: #c8102e;
}

.requestQuoteForm__widget .requestQuoteForm__control,
.requestQuoteForm__widget .requestQuoteForm__textarea,
.requestQuoteForm__widget .wpcf7 input[type="text"],
.requestQuoteForm__widget .wpcf7 input[type="email"],
.requestQuoteForm__widget .wpcf7 input[type="tel"],
.requestQuoteForm__widget .wpcf7 select,
.requestQuoteForm__widget .wpcf7 textarea {
  width: 100%;
  color: #002058;
  font-family: "Acumin Pro Regular", Helvetica, Arial, sans-serif;
  font-size: 16px;
  border-radius: 0;
  box-shadow: none;
}

.requestQuoteForm__widget .requestQuoteForm__control,
.requestQuoteForm__widget .wpcf7 input[type="text"],
.requestQuoteForm__widget .wpcf7 input[type="email"],
.requestQuoteForm__widget .wpcf7 input[type="tel"] {
  padding: 6px 0 8px;
  border: 0;
  border-bottom: 1px solid #002058;
  background: transparent;
}

.requestQuoteForm__widget .wpcf7 input::placeholder,
.requestQuoteForm__widget .wpcf7 textarea::placeholder {
  color: #7a8190;
  opacity: 1;
}

.requestQuoteForm__widget .wpcf7 select {
  padding: 10px 40px 10px 10px;
  border: 1px solid #002058;
  outline: none;
  appearance: none;
  background: transparent url("assets/images/icon-arrow.png") no-repeat center right;
  background-size: 40px;
}

.requestQuoteForm__widget .requestQuoteForm__textareaWrap {
  border: 1px solid #002058;
  padding-bottom: 20px;
}

.requestQuoteForm__widget .requestQuoteForm__textarea,
.requestQuoteForm__widget .wpcf7 textarea {
  height: 124px;
  min-height: 124px;
  padding: 10px;
  border: 0;
  outline: 0;
  resize: vertical;
  background: transparent;
}

.requestQuoteForm__widget .requestQuoteForm__helpText {
  display: block;
  margin-top: 6px;
  color: #c8102e;
  font-size: 12px;
  line-height: 1.2;
}

.requestQuoteForm__widget .requestQuoteForm__billingFields[hidden] {
  display: none !important;
}

.requestQuoteForm__widget .requestQuoteForm__radioControl {
  display: flex;
  flex-wrap: wrap;
  gap: 16px 24px;
}

.requestQuoteForm__widget .requestQuoteForm__radioControl .wpcf7-list-item {
  margin: 0;
}

.requestQuoteForm__widget .requestQuoteForm__radioControl .wpcf7-list-item-label {
  display: inline-flex;
  align-items: center;
  color: #002058;
  font-family: "Acumin Pro Regular", Helvetica, Arial, sans-serif;
  font-size: 14px;
}

.requestQuoteForm__widget .requestQuoteForm__radioControl input[type="radio"] {
  width: 14px;
  height: 14px;
  margin: 0 8px 0 0;
  appearance: none;
  border: 1px solid #002058;
  border-radius: 50%;
  background: #ffffff;
}

.requestQuoteForm__widget .requestQuoteForm__radioControl input[type="radio"]:checked {
  border-color: #c8102e;
  box-shadow: inset 0 0 0 3px #ffffff;
  background: #c8102e;
}

.requestQuoteForm__widget .requestQuoteForm__uploadRow {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.requestQuoteForm__widget .requestQuoteForm__uploadControl {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px 20px;
}

.requestQuoteForm__widget .requestQuoteForm__fileInput {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  opacity: 0;
  pointer-events: none;
}

.requestQuoteForm__widget .requestQuoteForm__fileLabel {
  display: inline-flex;
  align-items: center;
  min-height: 50px;
  padding: 15px 60px 15px 20px;
  border: 1px solid #002058;
  color: #002058;
  font-family: "Acumin Pro Regular", Helvetica, Arial, sans-serif;
  font-size: 16px;
  text-decoration: none;
  cursor: pointer;
  background: transparent url("assets/images/icon-arrow.png") no-repeat calc(100% - 12px)
    center;
  background-size: 28px;
}

.requestQuoteForm__widget .requestQuoteForm__uploadControl.has-files .requestQuoteForm__fileLabel {
  max-width: 100%;
}

.requestQuoteForm__widget .requestQuoteForm__fileLabelText {
  display: inline-block;
  max-width: 260px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.requestQuoteForm__widget .requestQuoteForm__fileReset {
  padding: 0;
  border: 0;
  background: transparent;
  color: #003087;
  font-family: "Acumin Pro Regular", Helvetica, Arial, sans-serif;
  font-size: 14px;
  text-decoration: none;
  cursor: pointer;
}

.requestQuoteForm__widget .requestQuoteForm__fileReset:hover,
.requestQuoteForm__widget .requestQuoteForm__fileReset:focus {
  text-decoration: underline;
}

.requestQuoteForm__widget .requestQuoteForm__uploadHelp p {
  margin: 0 0 6px;
  color: #002058;
  font-size: 14px;
  line-height: 1.4;
}

.requestQuoteForm__widget .requestQuoteForm__uploadHelp span {
  font-family: "Acumin Pro Bold", Helvetica, Arial, sans-serif;
}

.requestQuoteForm__widget .requestQuoteForm__acceptance .wpcf7-list-item {
  margin: 0;
}

.requestQuoteForm__widget .requestQuoteForm__acceptance .wpcf7-list-item-label {
  color: #002058;
  font-family: "Acumin Pro Regular", Helvetica, Arial, sans-serif;
  font-size: 14px;
  line-height: 1.4;
}

.requestQuoteForm__widget .requestQuoteForm__acceptance input[type="checkbox"] {
  position: relative;
  top: 2px;
  width: 16px;
  height: 16px;
  margin: 0 10px 0 0;
  appearance: none;
  border: 1px solid #002058;
  background: #ffffff;
}

.requestQuoteForm__widget .requestQuoteForm__acceptance input[type="checkbox"]:checked {
  border-color: #c8102e;
  background: linear-gradient(#c8102e, #c8102e);
  background-repeat: no-repeat;
  background-position: center;
  background-size: 10px 10px;
}

.requestQuoteForm__widget .requestQuoteForm__captchaHelp {
  margin-top: 20px;
  color: #75787b;
  font-size: 12px;
  line-height: 1.3;
}

.requestQuoteForm__widget .requestQuoteForm__submitRow {
  display: flex;
  justify-content: flex-end;
  margin-top: 20px;
  margin-bottom: 40px;
}

.requestQuoteForm__widget .requestQuoteForm__submitRow .wpcf7-spinner {
  display: none;
}

.requestQuoteForm__widget .requestQuoteForm__submit {
  min-width: 210px;
  min-height: 50px;
  padding: 14px 30px 12px;
  border: 3px solid #c8102e;
  background: #c8102e;
  color: #ffffff;
  font-family: "Acumin Pro Regular", Helvetica, Arial, sans-serif;
  font-size: 16px;
  line-height: 1;
  transition:
    background-color 0.2s ease,
    border-color 0.2s ease;
}

.requestQuoteForm__widget .requestQuoteForm__submit:hover,
.requestQuoteForm__widget .requestQuoteForm__submit:focus {
  border-color: #640816;
  background: #640816;
}

.requestQuoteForm__widget .wpcf7-not-valid-tip {
  margin-top: 6px;
  color: #c8102e;
  font-size: 12px;
  line-height: 1.2;
}

.requestQuoteForm__widget .wpcf7 form .wpcf7-response-output {
  margin: 0 0 20px;
  padding: 12px 16px;
  color: #002058;
  font-size: 14px;
  line-height: 1.4;
}

@media (min-width: 601px) {
  .requestQuoteForm__inner.e-con {
    padding-left: 30px !important;
    padding-right: 30px !important;
  }

  .requestQuoteForm__widget .requestQuoteForm__field {
    width: 49%;
  }

  .requestQuoteForm__widget .requestQuoteForm__field--full {
    width: 100%;
    flex: 0 0 100%;
  }

  .requestQuoteForm__widget .requestQuoteForm__uploadRow {
    flex-direction: row;
    align-items: flex-start;
    justify-content: space-between;
  }

  .requestQuoteForm__widget .requestQuoteForm__uploadControl {
    flex: 0 0 44%;
    max-width: 44%;
  }

  .requestQuoteForm__widget .requestQuoteForm__uploadHelp {
    flex: 0 0 48%;
    max-width: 48%;
  }
}

@media (min-width: 768px) {
  .requestQuoteForm__widget .requestQuoteForm__requiredLegend {
    font-size: 12px;
  }

  .requestQuoteForm__widget .requestQuoteForm__label,
  .requestQuoteForm__widget .requestQuoteForm__field label {
    font-size: 12px;
  }

  .requestQuoteForm__widget .wpcf7 select {
    padding: 5px 40px 1px 10px;
  }
}

@media (max-width: 600px) {
  .requestQuoteForm__inner.e-con {
    padding-left: 20px !important;
    padding-right: 20px !important;
  }
}

@media (min-width: 992px) {
  .requestQuoteForm__inner.e-con {
    padding-left: 0 !important;
    padding-right: 0 !important;
  }
}

.elementor-icon-list-text {
  position: relative;
  padding-left: 0 !important;
  padding-inline-start: 0 !important;
}

@media (min-width: 768px) {
  .footer-container .site-links .elementor-icon-list-text:before {
    content: '';
    position: absolute;
    bottom: -5px;
    right: 0;
    width: 0;
    height: 2px;
    background-color: #ffffff;
    -webkit-transition: width 0.3s cubic-bezier(0.25, 1, 0.5, 1);
    -moz-transition: width 0.3s cubic-bezier(0.25, 1, 0.5, 1);
    -ms-transition: width 0.3s cubic-bezier(0.25, 1, 0.5, 1);
    -o-transition: width 0.3s cubic-bezier(0.25, 1, 0.5, 1);
    transition: width 0.3s cubic-bezier(0.25, 1, 0.5, 1);
  }
}

.footer-container .site-links a:hover .elementor-icon-list-text:before {
    left: 0;
    right: auto;
    width: 100%;
}
