/* =====================================================================
   TTSPORT / Ella 6.7.6 Custom CSS
   File: assets/custom.css
   Purpose: site-level UI polish + RTE/blog/product-description UI kit
   Scope: Ella-safe selectors; no Liquid dependency; no class renaming
   Updated: 2026-05-08
   ===================================================================== */

/* =====================================================================
   1. Design tokens
   ===================================================================== */
:root {
  --tt-red: #ff170c;
  --tt-red-dark: #d91408;
  --tt-red-deep: #9f1008;
  --tt-red-soft: rgba(255, 23, 12, 0.06);
  --tt-red-line: rgba(255, 23, 12, 0.32);
  --tt-red-glow: rgba(255, 23, 12, 0.18);
  --tt-ink: var(--color-text, #111827);
  --tt-ink-2: #1f2937;
  --tt-text: var(--color-text2, #4b5563);
  --tt-muted: #6b7280;
  --tt-muted-2: #9ca3af;
  --tt-white: var(--bg-white, #ffffff);
  --tt-bg: var(--bg-global, #f9fafb);
  --tt-bg-soft: #f3f4f6;
  --tt-bg-card: #ffffff;
  --tt-bg-dark: #0b0b0c;
  --tt-bg-dark-2: #111827;
  --tt-border: var(--border-color, #e5e7eb);
  --tt-border-strong: #d1d5db;
  --tt-radius-xs: 4px;
  --tt-radius-sm: 6px;
  --tt-radius-btn: 6px;       /* Brand tone: sharp CNC-cut button corners (4-6px) */
  --tt-radius: 10px;
  --tt-radius-lg: 14px;
  --tt-space-2xs: clamp(4px, 0.6vw, 6px);
  --tt-space-xs: clamp(6px, 0.9vw, 8px);
  --tt-space-sm: clamp(10px, 1.2vw, 12px);
  --tt-space-md: clamp(16px, 1.8vw, 20px);
  --tt-space-lg: clamp(22px, 2.6vw, 32px);
  --tt-space-xl: clamp(32px, 4vw, 48px);
  --tt-space-2xl: clamp(44px, 5vw, 64px);
  --tt-content-max: 1040px;
  --tt-readable-max: 860px;
  --tt-media-max: 760px;
  --tt-table-min: 760px;
  --tt-font-normal: var(--font-weight-normal, 400);
  --tt-font-medium: var(--font-weight-medium, 500);
  --tt-font-semibold: var(--font-weight-semibold, 600);
  --tt-font-bold: var(--font-weight-bold, 700);
  --tt-speed-fast: 160ms;
  --tt-speed: var(--duration-short, 240ms);
  --tt-speed-slow: 360ms;
  --tt-ease: cubic-bezier(0.16, 1, 0.3, 1);     /* Brand tone: crisp easeOutExpo on all micro-interactions */
  --tt-ease-out: cubic-bezier(0.16, 1, 0.3, 1);
  --tt-shadow-xs: 0 1px 2px rgba(17, 24, 39, 0.05);
  --tt-shadow-sm: 0 3px 10px rgba(17, 24, 39, 0.07);
  --tt-shadow-md: 0 12px 30px rgba(17, 24, 39, 0.10);
  --tt-shadow-red: 0 10px 26px rgba(255, 23, 12, 0.22);
}

/* =====================================================================
   2. Site-wide Ella-safe refinements
   ===================================================================== */
html {
  scroll-behavior: smooth;
}

body {
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

img, svg, video, canvas, iframe {
  max-width: 100%;
}

button, a, input, select, textarea, summary {
  -webkit-tap-highlight-color: rgba(255, 23, 12, 0.16);
}

body .button,
body button.button,
body a.button,
body .shopify-payment-button__button,
body .product-form__submit,
body .quickview-button,
body .cart-count-bubble,
body .card-action .button {
  border-radius: var(--tt-radius-btn) !important;
}

body .button,
body button.button,
body a.button,
body .shopify-payment-button__button,
body .product-form__submit,
body .quickview-button {
  transition:
    transform var(--tt-speed-fast) var(--tt-ease),
    box-shadow var(--tt-speed-fast) var(--tt-ease),
    background-color var(--tt-speed-fast) var(--tt-ease),
    border-color var(--tt-speed-fast) var(--tt-ease),
    color var(--tt-speed-fast) var(--tt-ease);
}

@media (hover: hover) {
  body .button:hover,
  body button.button:hover,
  body a.button:hover,
  body .shopify-payment-button__button:hover,
  body .product-form__submit:hover,
  body .quickview-button:hover {
    transform: translateY(-1px);
  }
}

body input[type="text"],
body input[type="email"],
body input[type="tel"],
body input[type="search"],
body input[type="password"],
body input[type="number"],
body select,
body textarea,
body .form-input,
body .field__input {
  border-radius: var(--tt-radius-sm);
  transition:
    border-color var(--tt-speed-fast) var(--tt-ease),
    box-shadow var(--tt-speed-fast) var(--tt-ease),
    background-color var(--tt-speed-fast) var(--tt-ease);
}

body input:focus-visible,
body select:focus-visible,
body textarea:focus-visible,
body .form-input:focus-visible,
body .field__input:focus-visible,
body a:focus-visible,
body button:focus-visible,
body summary:focus-visible {
  outline: 2px solid var(--tt-red);
  outline-offset: 3px;
}

body input:focus,
body select:focus,
body textarea:focus,
body .form-input:focus,
body .field__input:focus {
  border-color: var(--tt-red) !important;
  box-shadow: 0 0 0 3px var(--tt-red-glow) !important;
}

/* Product cards: visual lift without changing Ella markup */
body .product-item .card,
body .product-item .card-product,
body .product-card,
body .card-product__wrapper {
  border-radius: var(--tt-radius-lg);
}

body .product-item .card {
  transition:
    transform var(--tt-speed) var(--tt-ease-out),
    box-shadow var(--tt-speed) var(--tt-ease-out),
    border-color var(--tt-speed) var(--tt-ease-out);
}

@media (hover: hover) and (min-width: 990px) {
  body .product-item:hover .card {
    transform: translateY(-3px);
  }

  body .product-item:hover .card, body .product-item:hover .card-product {
    box-shadow: var(--tt-shadow-md);
  }

  body .product-item:hover .card-title {
    color: var(--tt-red) !important;
  }
}

body .product-item .card-media,
body .product-item .media,
body .product-item .card-product__wrapper {
  overflow: hidden;
}

body .product-item .card-media img, body .product-item .media img {
  transition: transform var(--tt-speed-slow) var(--tt-ease-out);
}

@media (hover: hover) and (min-width: 990px) {
  body .product-item:hover .card-media img, body .product-item:hover .media img {
    transform: scale(1.035);
  }
}

body .card-title,
body .productView-title,
body .page-header,
body .main-page-title {
  text-wrap: balance;
}

body .price, body .card-price, body .productView-price {
  color: var(--tt-ink);
  font-weight: var(--tt-font-bold);
}

body .badge, body .product-label, body .sale-badge, body .sold-out-badge {
  border-radius: 999px !important;
  font-weight: var(--tt-font-bold);
  letter-spacing: 0.02em;
}

body .breadcrumb, body .breadcrumbs, body .pagination, body .halo-pagination {
  color: var(--tt-muted);
}

body .breadcrumb a,
body .breadcrumbs a,
body .pagination a,
body .halo-pagination a {
  transition: color var(--tt-speed-fast) var(--tt-ease), background-color var(--tt-speed-fast) var(--tt-ease);
}

body .breadcrumb a:hover,
body .breadcrumbs a:hover,
body .pagination a:hover,
body .halo-pagination a:hover {
  color: var(--tt-red) !important;
}

/* =====================================================================
   3. RTE / product-description / article scope
   ===================================================================== */
body :is(
  .tt-product-description,
  .productView-desc.halo-text-format,
  .productView-tab .tabs-contents.halo-text-format,
  .productView-tab .tabs-contents.halo-text-format .toggle-content,
  .halo-article-content .article-content.halo-text-format,
  .article-template .article-content.halo-text-format,
  .article-template .halo-text-format,
  .article-template .rte,
  .main-page-title + .rte,
  .page-content .rte,
  .page-width .rte,
  .about-content.halo-text-format,
  .halo-content.halo-text-format
) {
  & {
    color: var(--tt-text);
    text-align: left;
    overflow-wrap: break-word;
  }
  & * {
    box-sizing: border-box;
  }
  & > :first-child {
    margin-top: 0;
  }
  & > :last-child {
    margin-bottom: 0;
  }
  & :is(p, li, dd, figcaption) {
    color: var(--tt-text);
    /* 与 Shopify 模板正文完全内联：字号=type_body_font_size(18px)、行高、字距都用主题变量，
       不再让正文继承到文章模板某处的 14px */
    font-family: var(--font-body-family);
    font-size: var(--font-body-size);
    font-weight: var(--font-body-weight);
    line-height: var(--body-line-height);
    letter-spacing: var(--body-letter-spacing);
  }
  & p {
    margin: 0 0 var(--tt-space-md);
  }
  & :is(strong, b) {
    color: var(--tt-ink);
    font-weight: var(--tt-font-bold);
  }
  & :is(h1, h2, h3, h4, h5, h6) {
    /* 标题字体族/字重与模板标题设定内联（type_heading_*）；字号按语义层级在下面各自设定 */
    color: var(--tt-ink);
    font-family: var(--font-heading-family);
    font-weight: var(--font-heading-weight, var(--tt-font-bold));
    line-height: 1.22;
    letter-spacing: var(--heading-letter-spacing, -0.02em);
    text-wrap: balance;
    scroll-margin-top: 120px;
  }
  /* 文章正文语义层级字号：以主题标题字号(--font-heading-size, 20px)为基准按比例放大，
     H2 最大、逐级递减，H4-H6 收敛到接近正文，层级清晰且与模板风格一致 */
  & h2 { font-size: calc(var(--font-heading-size) * 1.6); }
  & h3 { font-size: calc(var(--font-heading-size) * 1.28); }
  & h4 { font-size: calc(var(--font-heading-size) * 1.1); }
  & :is(h5, h6) { font-size: var(--font-heading-size); }
  & h2 {
    margin: var(--tt-space-2xl) 0 var(--tt-space-md);
    padding-bottom: 12px;
    border-bottom: 1px solid var(--tt-border);
    position: relative;
  }
  & h2::after {
    content: "";
    position: absolute;
    left: 0;
    bottom: -1px;
    width: clamp(64px, 8vw, 96px);
    height: 3px;
    background: linear-gradient(90deg, var(--tt-red), var(--tt-red-dark));
    border-radius: 999px;
  }
  & h3 {
    margin: var(--tt-space-xl) 0 var(--tt-space-sm);
  }
  & :is(h4, h5, h6) {
    margin: var(--tt-space-lg) 0 var(--tt-space-xs);
  }
  & hr {
    border: 0;
    border-top: 1px solid var(--tt-border);
    margin: var(--tt-space-xl) 0;
  }
  & a:not(.button):not(.tt-cta-button):not(.tt-secondary-button):not(.image):not(.card-title):not(.tab-title):not(.toggleLink) {
    color: var(--tt-red);
    font-weight: var(--tt-font-semibold);
    text-decoration: underline;
    text-decoration-color: var(--tt-red-line);
    text-decoration-thickness: 1.5px;
    text-underline-offset: 3px;
    transition:
    color var(--tt-speed-fast) var(--tt-ease),
    background-color var(--tt-speed-fast) var(--tt-ease),
    text-decoration-color var(--tt-speed-fast) var(--tt-ease);
  }
  & a:not(.button):not(.tt-cta-button):not(.tt-secondary-button):not(.image):not(.card-title):not(.tab-title):not(.toggleLink):hover {
    color: var(--tt-red-dark);
    background: var(--tt-red-soft);
    text-decoration-color: currentColor;
  }
}

/* =====================================================================
   4. Lists
   ===================================================================== */
body :is(
  .tt-product-description,
  .productView-desc.halo-text-format,
  .productView-tab .tabs-contents.halo-text-format,
  .productView-tab .tabs-contents.halo-text-format .toggle-content,
  .halo-article-content .article-content.halo-text-format,
  .article-template .article-content.halo-text-format,
  .article-template .halo-text-format,
  .article-template .rte,
  .main-page-title + .rte,
  .page-content .rte,
  .page-width .rte,
  .about-content.halo-text-format,
  .halo-content.halo-text-format
) {
  & ul:not(.slick-dots):not(.tabs):not(.list-unstyled):not(.tag-list):not(.tt-check-list):not(.tt-chip-list) {
    margin: var(--tt-space-md) 0;
    padding: 0;
    list-style: none;
  }
  & ul:not(.slick-dots):not(.tabs):not(.list-unstyled):not(.tag-list):not(.tt-check-list):not(.tt-chip-list) > li {
    position: relative;
    margin: 0 0 10px;
    padding-left: 22px;
  }
  & ul:not(.slick-dots):not(.tabs):not(.list-unstyled):not(.tag-list):not(.tt-check-list):not(.tt-chip-list) > li::before {
    content: "";
    position: absolute;
    top: 0.72em;
    left: 2px;
    width: 7px;
    height: 7px;
    background: var(--tt-red);
    border-radius: 999px;
    box-shadow: 0 0 0 4px var(--tt-red-soft);
  }
  & ol:not(.list-unstyled) {
    margin: var(--tt-space-md) 0;
    padding: 0;
    list-style: none;
    counter-reset: tt-step;
  }
  & ol:not(.list-unstyled) > li {
    position: relative;
    counter-increment: tt-step;
    margin: 0 0 12px;
    padding-left: 40px;
  }
  & ol:not(.list-unstyled) > li::before {
    content: counter(tt-step);
    position: absolute;
    top: 0.12em;
    left: 0;
    width: 26px;
    height: 26px;
    color: #fff;
    background: var(--tt-ink);
    border-radius: var(--tt-radius-xs);
    font-size: 12px;
    font-weight: var(--tt-font-bold);
    line-height: 26px;
    text-align: center;
  }
}
.faq-kits {
  margin: var(--tt-space-md) 0;
  padding: 0;
  list-style: none;
}

.faq-kits > li {
  position: relative;
  margin: 0 0 10px;
  padding-left: 22px;
}

.faq-kits > li::before {
  content: "";
  position: absolute;
  top: 0.72em;
  left: 2px;
  width: 7px;
  height: 7px;
  background: var(--tt-red);
  border-radius: 999px;
  box-shadow: 0 0 0 4px var(--tt-red-soft);
}

.tt-check-list {
  display: grid;
  gap: 10px;
  margin: var(--tt-space-md) 0;
  padding: 0;
  list-style: none;
}

.tt-check-list > li {
  position: relative;
  padding: 12px 14px 12px 42px;
  color: var(--tt-ink-2);
  background: var(--tt-white);
  border: 1px solid var(--tt-border);
  border-radius: var(--tt-radius-sm);
}

.tt-check-list > li::before {
  content: "";
  position: absolute;
  left: 14px;
  top: 50%;
  width: 14px;
  height: 8px;
  border-left: 2px solid var(--tt-red);
  border-bottom: 2px solid var(--tt-red);
  transform: translateY(-65%) rotate(-45deg);
}

/* =====================================================================
   5. Cards, callouts, badges, content blocks
   ===================================================================== */
.tt-block,
.tt-card,
.tt-note,
.tt-callout,
.tt-warning,
.tt-definition,
.tt-snippet,
.tt-spec-card,
.tt-stat-card {
  position: relative;
  margin: 0 0 var(--tt-space-lg);
  padding: clamp(16px, 2.8vw, 26px);
  background: var(--tt-bg-card);
  border: 1px solid var(--tt-border);
  border-radius: var(--tt-radius-lg);
  box-shadow: var(--tt-shadow-xs);
}

.tt-block, .tt-card, .tt-spec-card, .tt-stat-card {
  overflow: hidden;
  transition:
    transform var(--tt-speed) var(--tt-ease-out),
    box-shadow var(--tt-speed) var(--tt-ease-out),
    border-color var(--tt-speed) var(--tt-ease-out);
}

.tt-block::before,
.tt-card::before,
.tt-spec-card::before,
.tt-stat-card::before {
  content: "";
  position: absolute;
  inset: 0 auto 0 0;
  width: 4px;
  background: transparent;
  transition: background-color var(--tt-speed-fast) var(--tt-ease);
}

@media (hover: hover) and (min-width: 990px) {
  .tt-block:hover, .tt-card:hover, .tt-spec-card:hover, .tt-stat-card:hover {
    transform: translateY(-3px);
    border-color: var(--tt-red-line);
    box-shadow: var(--tt-shadow-md);
  }

  .tt-block:hover::before,
  .tt-card:hover::before,
  .tt-spec-card:hover::before,
  .tt-stat-card:hover::before {
    background: var(--tt-red);
  }
}

.tt-block > :first-child,
.tt-card > :first-child,
.tt-note > :first-child,
.tt-callout > :first-child,
.tt-warning > :first-child,
.tt-definition > :first-child,
.tt-snippet > :first-child,
.tt-spec-card > :first-child,
.tt-stat-card > :first-child {
  margin-top: 0;
}

.tt-block > :last-child,
.tt-card > :last-child,
.tt-note > :last-child,
.tt-callout > :last-child,
.tt-warning > :last-child,
.tt-definition > :last-child,
.tt-snippet > :last-child,
.tt-spec-card > :last-child,
.tt-stat-card > :last-child {
  margin-bottom: 0;
}

.tt-title, .tt-section-title {
  position: relative;
  margin: 0 0 var(--tt-space-md);
  padding-bottom: 12px;
  color: var(--tt-ink);
  border-bottom: 1px solid var(--tt-border);
  font-weight: var(--tt-font-bold);
  line-height: 1.25;
  letter-spacing: -0.02em;
}

.tt-title::after, .tt-section-title::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: -1px;
  width: 72px;
  height: 2px;
  background: var(--tt-red);
  border-radius: 999px;
}

.tt-kicker, .tt-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin: 0 0 var(--tt-space-sm);
  color: var(--tt-red);
  font-size: 0.82em;
  font-weight: var(--tt-font-bold);
  letter-spacing: 0.08em;
  line-height: 1.2;
  text-transform: uppercase;
}

.tt-lead {
  color: var(--tt-ink-2) !important;
  /* 用户要求导语字号与正文 P 一致：直接用主题正文字号变量，不再放大 */
  font-size: var(--font-body-size) !important;
  line-height: var(--body-line-height) !important;
  letter-spacing: var(--body-letter-spacing);
}

body :is(
  .tt-product-description,
  .productView-desc.halo-text-format,
  .productView-tab .tabs-contents.halo-text-format,
  .productView-tab .tabs-contents.halo-text-format .toggle-content,
  .halo-article-content .article-content.halo-text-format,
  .article-template .article-content.halo-text-format,
  .article-template .halo-text-format,
  .article-template .rte,
  .main-page-title + .rte,
  .page-content .rte,
  .page-width .rte,
  .about-content.halo-text-format,
  .halo-content.halo-text-format
) {
  & blockquote {
    color: var(--tt-ink-2);
    background: var(--tt-bg);
    border: 1px solid var(--tt-border);
    border-left: 4px solid var(--tt-red);
    border-radius: var(--tt-radius);
    font-style: normal;
  }
  & blockquote {
    margin: var(--tt-space-lg) 0;
    padding: clamp(16px, 2.4vw, 22px);
  }
}
.tt-callout, .tt-note, .tt-warning, .tt-definition, .tt-snippet {
  color: var(--tt-ink-2);
  background: var(--tt-bg);
  border: 1px solid var(--tt-border);
  border-left: 4px solid var(--tt-red);
  border-radius: var(--tt-radius);
  font-style: normal;
}

.tt-note {
  background: var(--tt-bg-soft);
  border-left-color: var(--tt-ink);
}

.tt-warning {
  color: var(--tt-ink);
  background: #fff5f5;
  border-color: #fee2e2;
  border-left-color: var(--tt-red);
}

.tt-definition, .tt-snippet {
  background:
    linear-gradient(135deg, rgba(255, 23, 12, 0.05), rgba(17, 24, 39, 0.025)),
    var(--tt-white);
}

.tt-chip-list {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: var(--tt-space-md) 0;
  padding: 0;
  list-style: none;
}

.tt-chip, .tt-badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-height: 30px;
  padding: 6px 10px;
  color: var(--tt-ink);
  background: var(--tt-bg-soft);
  border: 1px solid var(--tt-border);
  border-radius: 999px;
  font-size: 0.88em;
  font-weight: var(--tt-font-semibold);
  line-height: 1;
}

.tt-badge--red, .tt-chip--red {
  color: var(--tt-red-dark);
  background: var(--tt-red-soft);
  border-color: var(--tt-red-line);
}

.tt-grid, .tt-card-grid, .tt-spec-grid, .tt-stat-grid {
  display: grid;
  gap: var(--tt-space-md);
  margin: var(--tt-space-lg) 0;
}

.tt-grid, .tt-card-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.tt-spec-grid, .tt-stat-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.tt-stat-card .tt-stat, .tt-stat-card strong:first-child {
  display: block;
  color: var(--tt-red);
  font-size: clamp(26px, 20px + 1.2vw, 34px); /* rem 被 62.5% 根字号缩小，统一用 px */
  font-weight: var(--tt-font-bold);
  line-height: 1.05;
}

/* =====================================================================
   6. Tables: scrollable + sticky header + sticky first column
   ===================================================================== */
.tt-table-scroll-wrapper, .veh-table-wrapper {
  width: 100%;
  max-width: 100%;
  margin: var(--tt-space-lg) 0;
  overflow-x: auto;
  overflow-y: hidden;
  -webkit-overflow-scrolling: touch;
  background: var(--tt-white);
  border: 1px solid var(--tt-border-strong);
  border-radius: var(--tt-radius);
  box-shadow: inset -18px 0 18px -22px rgba(17, 24, 39, 0.35);
}

body :is(
  .tt-product-description,
  .productView-desc.halo-text-format,
  .productView-tab .tabs-contents.halo-text-format,
  .productView-tab .tabs-contents.halo-text-format .toggle-content,
  .halo-article-content .article-content.halo-text-format,
  .article-template .article-content.halo-text-format,
  .article-template .halo-text-format,
  .article-template .rte,
  .main-page-title + .rte,
  .page-content .rte,
  .page-width .rte,
  .about-content.halo-text-format,
  .halo-content.halo-text-format
) {
  & table::-webkit-scrollbar {
    height: 8px;
  }
  & table::-webkit-scrollbar-track {
    background: var(--tt-bg-soft);
  }
  & table::-webkit-scrollbar-thumb {
    background: var(--tt-border-strong);
    border-radius: 999px;
  }
  & table {
    width: 100%;
    min-width: min(var(--tt-table-min), 100vw - 32px);
    margin: var(--tt-space-lg) 0;
    border-collapse: separate;
    border-spacing: 0;
    color: var(--tt-text);
    text-align: left;
  }
  & > table {
    display: block;
    max-width: 100%;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    background: var(--tt-white);
    border: 1px solid var(--tt-border-strong);
    border-radius: var(--tt-radius);
  }
}
.tt-table-scroll-wrapper::-webkit-scrollbar,
.veh-table-wrapper::-webkit-scrollbar {
  height: 8px;
}

.tt-table-scroll-wrapper::-webkit-scrollbar-track,
.veh-table-wrapper::-webkit-scrollbar-track {
  background: var(--tt-bg-soft);
}

.tt-table-scroll-wrapper::-webkit-scrollbar-thumb,
.veh-table-wrapper::-webkit-scrollbar-thumb {
  background: var(--tt-border-strong);
  border-radius: 999px;
}


/* 规格表自动列宽：首列(项目名)贴内容宽不换行，第二列占满剩余宽度自然换行 */
.spec-table th:first-child,
.spec-table td:first-child {
  width: 1%;
  white-space: nowrap;
}
.spec-table th:last-child,
.spec-table td:last-child {
  overflow-wrap: break-word;
}

.spec-table,
.veh-table,
.tt-table-scroll-wrapper > table,
.veh-table-wrapper > table {
  width: 100%;
  min-width: min(var(--tt-table-min), 100vw - 32px);
  margin: var(--tt-space-lg) 0;
  border-collapse: separate;
  border-spacing: 0;
  color: var(--tt-text);
  text-align: left;
}

.tt-table-scroll-wrapper > table, .veh-table-wrapper > table {
  margin: 0;
  min-width: var(--tt-table-min);
}

body :is(
  .tt-product-description,
  .productView-desc.halo-text-format,
  .productView-tab .tabs-contents.halo-text-format,
  .productView-tab .tabs-contents.halo-text-format .toggle-content,
  .halo-article-content .article-content.halo-text-format,
  .article-template .article-content.halo-text-format,
  .article-template .halo-text-format,
  .article-template .rte,
  .main-page-title + .rte,
  .page-content .rte,
  .page-width .rte,
  .about-content.halo-text-format,
  .halo-content.halo-text-format
) {
  & table :is(th, td) {
    padding: 14px 16px;
    border: 0;
    border-right: 1px solid var(--tt-border);
    border-bottom: 1px solid var(--tt-border);
    line-height: 1.48;
    vertical-align: top;
  }
  & table th {
    position: sticky;
    top: 0;
    z-index: 3;
    color: var(--tt-ink);
    background: var(--tt-bg-soft);
    font-weight: var(--tt-font-bold);
    box-shadow: 0 1px 0 var(--tt-border-strong);
  }
  & table :is(th, td):first-child {
    position: sticky;
    left: 0;
    z-index: 2;
    min-width: 150px;
    color: var(--tt-ink-2);
    background: var(--tt-white);
    font-weight: var(--tt-font-semibold);
    box-shadow: 1px 0 0 var(--tt-border-strong);
  }
  & table th:first-child {
    z-index: 4;
    background: var(--tt-bg-soft);
  }
  & table tbody tr:nth-child(even) td {
    background: var(--tt-bg);
  }
  & table tbody tr:nth-child(even) td:first-child {
    background: var(--tt-bg);
  }
}
.spec-table :is(th, td),
.veh-table :is(th, td),
.tt-table-scroll-wrapper > table :is(th, td),
.veh-table-wrapper > table :is(th, td) {
  padding: 14px 16px;
  border: 0;
  border-right: 1px solid var(--tt-border);
  border-bottom: 1px solid var(--tt-border);
  line-height: 1.48;
  vertical-align: top;
}

.spec-table th,
.veh-table th,
.tt-table-scroll-wrapper > table th,
.veh-table-wrapper > table th {
  position: sticky;
  top: 0;
  z-index: 3;
  color: var(--tt-ink);
  background: var(--tt-bg-soft);
  font-weight: var(--tt-font-bold);
  box-shadow: 0 1px 0 var(--tt-border-strong);
}

.spec-table :is(th, td):first-child,
.veh-table :is(th, td):first-child,
.tt-table-scroll-wrapper > table :is(th, td):first-child,
.veh-table-wrapper > table :is(th, td):first-child {
  position: sticky;
  left: 0;
  z-index: 2;
  min-width: 150px;
  color: var(--tt-ink-2);
  background: var(--tt-white);
  font-weight: var(--tt-font-semibold);
  box-shadow: 1px 0 0 var(--tt-border-strong);
}

.spec-table th:first-child,
.veh-table th:first-child,
.tt-table-scroll-wrapper > table th:first-child,
.veh-table-wrapper > table th:first-child {
  z-index: 4;
  background: var(--tt-bg-soft);
}

.spec-table tbody tr:nth-child(even) td,
.veh-table tbody tr:nth-child(even) td,
.tt-table-scroll-wrapper > table tbody tr:nth-child(even) td,
.veh-table-wrapper > table tbody tr:nth-child(even) td {
  background: var(--tt-bg);
}

.spec-table tbody tr:nth-child(even) td:first-child,
.veh-table tbody tr:nth-child(even) td:first-child,
.tt-table-scroll-wrapper > table tbody tr:nth-child(even) td:first-child,
.veh-table-wrapper > table tbody tr:nth-child(even) td:first-child {
  background: var(--tt-bg);
}

@media (hover: hover) {
  body :is(
  .tt-product-description,
  .productView-desc.halo-text-format,
  .productView-tab .tabs-contents.halo-text-format,
  .productView-tab .tabs-contents.halo-text-format .toggle-content,
  .halo-article-content .article-content.halo-text-format,
  .article-template .article-content.halo-text-format,
  .article-template .halo-text-format,
  .article-template .rte,
  .main-page-title + .rte,
  .page-content .rte,
  .page-width .rte,
  .about-content.halo-text-format,
  .halo-content.halo-text-format
) {
    & table tbody tr:hover td {
      background: var(--tt-red-soft);
    }
  }
  .spec-table tbody tr:hover td,
  .veh-table tbody tr:hover td,
  .tt-table-scroll-wrapper > table tbody tr:hover td,
  .veh-table-wrapper > table tbody tr:hover td {
    background: var(--tt-red-soft);
  }
}

.spec-table th.section-header,
.veh-table th.section-header,
body table th.section-header {
  color: #fff;
  background: var(--tt-ink);
  border-color: var(--tt-ink);
  border-left: 4px solid var(--tt-red);
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

.spec-table td.spec-label,
.veh-table td.spec-label,
body table td.spec-label,
body table .tb-title {
  min-width: 150px;
  color: var(--tt-ink-2);
  background: var(--tt-bg-soft);
  font-weight: var(--tt-font-semibold);
}

/* =====================================================================
   7. Media: blog images, split image/text layouts, video embeds
   ===================================================================== */
body :is(
  .tt-product-description,
  .productView-desc.halo-text-format,
  .productView-tab .tabs-contents.halo-text-format,
  .productView-tab .tabs-contents.halo-text-format .toggle-content,
  .halo-article-content .article-content.halo-text-format,
  .article-template .article-content.halo-text-format,
  .article-template .halo-text-format,
  .article-template .rte,
  .main-page-title + .rte,
  .page-content .rte,
  .page-width .rte,
  .about-content.halo-text-format,
  .halo-content.halo-text-format
) {
  & img:not(.card-media img):not(.product-media img) {
    display: block;
    max-width: 100%;
    height: auto;
    border-radius: var(--tt-radius);
  }
  & figure {
    max-width: min(100%, var(--tt-media-max));
    margin: var(--tt-space-lg) auto;
  }
  & figure img {
    width: 100%;
    margin: 0 auto;
    object-fit: cover;
  }
  & figcaption {
    margin-top: 10px;
    color: var(--tt-muted);
    font-size: 0.9em;
    line-height: 1.55;
    text-align: center;
  }
  & :is(video, iframe, model-viewer) {
    width: 100%;
    max-width: 100%;
    border: 0;
    border-radius: var(--tt-radius);
  }
  & iframe[src*="youtube"], & iframe[src*="vimeo"] {
    aspect-ratio: 16 / 9;
    height: auto;
  }
}

.tt-media-row, .tt-image-text, .tt-media-text, .tt-split, .tt-feature-row {
  display: grid;
  grid-template-columns: minmax(280px, 0.92fr) minmax(0, 1.08fr);
  align-items: center;
  gap: clamp(18px, 4vw, 48px);
  margin: var(--tt-space-xl) 0;
}

.tt-media-row--reverse,
.tt-image-text--reverse,
.tt-media-text--reverse,
.tt-split--reverse,
.tt-feature-row--reverse {
  grid-template-columns: minmax(0, 1.08fr) minmax(280px, 0.92fr);
}

.tt-media-row--reverse > :first-child,
.tt-image-text--reverse > :first-child,
.tt-media-text--reverse > :first-child,
.tt-split--reverse > :first-child,
.tt-feature-row--reverse > :first-child {
  order: 2;
}

.tt-media-row :is(figure, img),
.tt-image-text :is(figure, img),
.tt-media-text :is(figure, img),
.tt-split :is(figure, img),
.tt-feature-row :is(figure, img) {
  width: 100%;
  max-width: 100%;
  margin: 0;
}

.tt-media-row .tt-media,
.tt-image-text .tt-media,
.tt-media-text .tt-media,
.tt-split .tt-media,
.tt-feature-row .tt-media {
  overflow: hidden;
  border-radius: var(--tt-radius-lg);
}

.tt-media-row .tt-media img,
.tt-image-text .tt-media img,
.tt-media-text .tt-media img,
.tt-split .tt-media img,
.tt-feature-row .tt-media img {
  aspect-ratio: 4 / 3;
  object-fit: cover;
}

.tt-media-row .tt-copy > :first-child,
.tt-image-text .tt-copy > :first-child,
.tt-media-text .tt-copy > :first-child,
.tt-split .tt-copy > :first-child,
.tt-feature-row .tt-copy > :first-child {
  margin-top: 0;
}

.tt-media-row .tt-copy > :last-child,
.tt-image-text .tt-copy > :last-child,
.tt-media-text .tt-copy > :last-child,
.tt-split .tt-copy > :last-child,
.tt-feature-row .tt-copy > :last-child {
  margin-bottom: 0;
}

.tt-full, .tt-wide, .tt-no-float {
  float: none !important;
  clear: both !important;
}

.tt-full, .tt-wide {
  width: 100% !important;
  max-width: 100% !important;
}

.tt-narrow {
  max-width: var(--tt-readable-max) !important;
  margin-left: auto !important;
  margin-right: auto !important;
}

/* Article image gallery: two columns on desktop, one on mobile.
   Images render at native aspect ratio — FULL, never cropped.
   (Relies on width/height attrs from the export pipeline for zero CLS.) */
.tt-article-wrapper .tt-gallery {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  align-items: start;            /* uneven heights stay top-aligned; no stretch/crop */
  gap: var(--tt-space-lg);
  margin: var(--tt-space-lg) 0 var(--tt-space-xl);
}

.tt-article-wrapper .tt-gallery img {
  width: 100%;                   /* fill the column width... */
  height: auto;                  /* ...but keep the original ratio — uncropped */
  margin: 0;
}

@media (max-width: 768px) {
  .tt-article-wrapper .tt-gallery {
    grid-template-columns: 1fr;
    gap: var(--tt-space-md);
  }
}

/* Automatic blog fallback: image-only paragraphs/figures become readable side media on desktop. */
@supports selector(:has(*)) {
  @media (min-width: 990px) {
    body .article-template .article-content.halo-text-format > :is(figure, p:has(> img:only-child)):not(.tt-full):not(.tt-wide):not(.tt-no-float):not(.tt-media-row):not(.tt-image-text):not(.tt-media-text):not(.tt-split) {
      float: right;
      clear: right;
      width: min(44%, 520px);
      max-width: 520px;
      margin: 0.35rem 0 var(--tt-space-lg) clamp(18px, 3vw, 36px);
    }

    body .article-template .article-content.halo-text-format > :is(figure, p:has(> img:only-child)):nth-of-type(2n):not(.tt-full):not(.tt-wide):not(.tt-no-float):not(.tt-media-row):not(.tt-image-text):not(.tt-media-text):not(.tt-split) {
      float: left;
      clear: left;
      margin: 0.35rem clamp(18px, 3vw, 36px) var(--tt-space-lg) 0;
    }

    body .article-template .article-content.halo-text-format > :is(h2, h3, h4, table, blockquote, .tt-block, .tt-card, .tt-callout, .tt-note, .tt-warning, .tt-table-scroll-wrapper, .veh-table-wrapper, .faq-list, .tt-cta-row, .tt-media-row, .tt-image-text, .tt-media-text, .tt-split, .fitment-grid, .veh-controls, .veh-note) {
      clear: both;
    }

    body .article-template .article-content.halo-text-format::after {
      content: "";
      display: block;
      clear: both;
    }
  }
}

/* Manual float utilities for legacy blog HTML */
@media (min-width: 990px) {
  figure.tt-left, img.tt-left {
    float: left;
    width: min(44%, 520px);
    margin: 0.35rem clamp(18px, 3vw, 36px) var(--tt-space-lg) 0 !important;
  }

  figure.tt-right, img.tt-right {
    float: right;
    width: min(44%, 520px);
    margin: 0.35rem 0 var(--tt-space-lg) clamp(18px, 3vw, 36px) !important;
  }
}

@supports selector(:has(*)) {
  @media (min-width: 990px) {
    p.tt-left:has(> img:only-child) {
      float: left;
      width: min(44%, 520px);
      margin: 0.35rem clamp(18px, 3vw, 36px) var(--tt-space-lg) 0 !important;
    }

    p.tt-right:has(> img:only-child) {
      float: right;
      width: min(44%, 520px);
      margin: 0.35rem 0 var(--tt-space-lg) clamp(18px, 3vw, 36px) !important;
    }
  }
}

/* =====================================================================
   8. Fitment cards / vehicle controls / FAQ
   ===================================================================== */
.fitment-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--tt-space-md);
  margin: var(--tt-space-lg) 0;
}

.fitment-item {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
  padding: clamp(18px, 2.4vw, 26px) clamp(14px, 2vw, 22px);
  text-align: center;
  background: var(--tt-white);
  border: 1px solid var(--tt-border);
  border-radius: var(--tt-radius-lg);
  box-shadow: var(--tt-shadow-xs);
  overflow: hidden;
  transition:
    transform var(--tt-speed) var(--tt-ease-out),
    box-shadow var(--tt-speed) var(--tt-ease-out),
    border-color var(--tt-speed) var(--tt-ease-out);
}

.fitment-item::before {
  content: "";
  position: absolute;
  inset: 0 0 auto;
  height: 3px;
  background: linear-gradient(90deg, var(--tt-red), var(--tt-red-dark));
}

@media (hover: hover) and (min-width: 990px) {
  .fitment-item:hover {
    transform: translateY(-4px);
    border-color: var(--tt-red-line);
    box-shadow: var(--tt-shadow-md);
  }
}

.fitment-item img {
  width: min(100%, 138px);
  aspect-ratio: 1 / 1;
  object-fit: contain;
  margin: 0 auto;
  transition: transform var(--tt-speed) var(--tt-ease-out);
}

@media (hover: hover) and (min-width: 990px) {
  .fitment-item:hover img {
    transform: scale(1.045);
  }
}

.fitment-item .step-title {
  display: block;
  margin: 0 0 4px;
  color: var(--tt-red);
  font-size: 0.84em;
  font-weight: var(--tt-font-bold);
  letter-spacing: 0.06em;
  line-height: 1.2;
  text-transform: uppercase;
}

.fitment-item p {
  margin: 0;
  color: var(--tt-ink-2);
  line-height: 1.52;
}

.veh-controls {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px;
  margin: var(--tt-space-lg) 0 var(--tt-space-md);
  padding: 16px;
  background: var(--tt-bg);
  border: 1px solid var(--tt-border);
  border-radius: var(--tt-radius-lg);
}

.veh-controls input, .veh-controls select {
  flex: 1 1 220px;
  min-height: 46px;
  padding: 12px 14px;
  color: var(--tt-ink);
  background: var(--tt-white);
  border: 1px solid var(--tt-border-strong);
  border-radius: var(--tt-radius-sm);
  font: inherit;
}

.veh-note {
  margin: var(--tt-space-md) 0;
  padding: 14px 18px;
  color: var(--tt-ink-2);
  background: #fff5f5;
  border: 1px solid #fee2e2;
  border-left: 4px solid var(--tt-red);
  border-radius: var(--tt-radius);
}

.veh-details-group {
  margin-top: var(--tt-space-md);
  border-top: 1px solid var(--tt-border);
}

.veh-details-group details {
  border-bottom: 1px solid var(--tt-border);
}

.veh-details-group summary, .faq-list summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  list-style: none;
  cursor: pointer;
}

.veh-details-group summary::-webkit-details-marker,
.faq-list summary::-webkit-details-marker {
  display: none;
}

.veh-details-group summary {
  padding: 16px 8px;
  color: var(--tt-ink);
  font-weight: var(--tt-font-semibold);
}

.veh-details-group summary::after, .faq-list summary::after {
  content: "";
  flex: 0 0 auto;
  width: 16px;
  height: 16px;
  background:
    linear-gradient(currentColor, currentColor) center / 2px 100% no-repeat,
    linear-gradient(currentColor, currentColor) center / 100% 2px no-repeat;
  transition: transform var(--tt-speed) var(--tt-ease), background var(--tt-speed) var(--tt-ease);
}

.veh-details-group details[open] summary, .faq-list details[open] summary {
  color: var(--tt-red);
}

.veh-details-group details[open] summary::after,
.faq-list details[open] summary::after {
  transform: rotate(180deg);
  background: linear-gradient(currentColor, currentColor) center / 100% 2px no-repeat;
}

.brand-hidden {
  display: none;
}

.tt-brand-toggle {
  padding: 0;
  color: var(--tt-red);
  background: none;
  border: 0;
  font: inherit;
  font-weight: var(--tt-font-bold);
  text-decoration: underline;
  text-underline-offset: 3px;
  cursor: pointer;
}

.faq-list {
  display: grid;
  gap: 12px;
  margin: var(--tt-space-lg) 0;
}

.faq-list details {
  overflow: hidden;
  background: var(--tt-white);
  border: 1px solid var(--tt-border);
  border-left: 4px solid var(--tt-ink);
  border-radius: var(--tt-radius);
  box-shadow: var(--tt-shadow-xs);
  transition: border-color var(--tt-speed-fast) var(--tt-ease), box-shadow var(--tt-speed-fast) var(--tt-ease);
}

@media (hover: hover) {
  .faq-list details:hover {
    border-left-color: var(--tt-red);
    box-shadow: var(--tt-shadow-sm);
  }
}

.faq-list details[open] {
  border-left-color: var(--tt-red);
}

.faq-list summary {
  padding: 18px 20px;
  color: var(--tt-ink);
  background: var(--tt-white);
  font-weight: var(--tt-font-bold);
}

.faq-list summary::after {
  width: 24px;
  height: 24px;
  border-radius: 999px;
  background-color: var(--tt-bg-soft);
  background-image:
    linear-gradient(var(--tt-ink), var(--tt-ink)),
    linear-gradient(var(--tt-ink), var(--tt-ink));
  background-position: center;
  background-size: 2px 12px, 12px 2px;
  background-repeat: no-repeat;
}

.faq-list details[open] summary {
  border-bottom: 1px solid var(--tt-border);
}

.faq-list details[open] summary::after {
  background-color: var(--tt-red-soft);
  background-image: linear-gradient(var(--tt-red), var(--tt-red));
  background-size: 12px 2px;
}

.faq-list .faq-a {
  padding: 20px;
  color: var(--tt-text);
  background: var(--tt-bg);
  line-height: 1.7;
}

.faq-list .faq-a > :first-child {
  margin-top: 0;
}

.faq-list .faq-a > :last-child {
  margin-bottom: 0;
}

/* =====================================================================
   9. CTA systems
   ===================================================================== */
.tt-cta-row, .tt-cta-group {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px;
  margin: var(--tt-space-lg) 0;
}

.tt-cta-button, .tt-secondary-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 48px;
  padding: 12px 28px;
  border-radius: var(--tt-radius-btn);
  font-weight: var(--tt-font-bold);
  letter-spacing: 0.015em;
  line-height: 1.2;
  text-align: center;
  text-decoration: none !important;
  cursor: pointer;
  transition:
    transform var(--tt-speed-fast) var(--tt-ease),
    box-shadow var(--tt-speed-fast) var(--tt-ease),
    background-color var(--tt-speed-fast) var(--tt-ease),
    border-color var(--tt-speed-fast) var(--tt-ease),
    color var(--tt-speed-fast) var(--tt-ease);
}

.tt-cta-button {
  color: #fff !important;
  background: linear-gradient(180deg, var(--tt-red), var(--tt-red-dark));
  border: 1px solid var(--tt-red);
  box-shadow: var(--tt-shadow-red);
}

.tt-secondary-button {
  color: var(--tt-ink) !important;
  background: var(--tt-white);
  border: 1px solid var(--tt-border-strong);
  box-shadow: var(--tt-shadow-xs);
}

@media (hover: hover) {
  .tt-cta-button:hover, .tt-secondary-button:hover {
    transform: translateY(-2px);
  }

  .tt-cta-button:hover {
    background: linear-gradient(180deg, var(--tt-red-dark), var(--tt-red-deep));
    border-color: var(--tt-red-dark);
    box-shadow: 0 14px 32px rgba(255, 23, 12, 0.28);
  }

  .tt-secondary-button:hover {
    color: var(--tt-red) !important;
    border-color: var(--tt-red-line);
    box-shadow: var(--tt-shadow-sm);
  }
}

.tt-cta-panel {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: var(--tt-space-md);
  margin: var(--tt-space-xl) 0;
  padding: clamp(18px, 3vw, 30px);
  color: #fff;
  background:
    radial-gradient(circle at top left, rgba(255, 23, 12, 0.38), transparent 34%),
    linear-gradient(135deg, var(--tt-bg-dark), var(--tt-bg-dark-2));
  border-radius: var(--tt-radius-lg);
}

.tt-cta-panel :is(h2, h3, h4, p, li, strong, b, a:not([class])) {
  /* strong/b 必须在列：正文区高特异性规则给 strong 上近黑色(--tt-ink)，不覆盖则深底黑字不可读 */
  color: inherit !important;
}

.tt-cta-panel p {
  opacity: 0.92; /* 0.82 在深色渐变底上偏灰 */
}

/* =====================================================================
   10. Product page content polish
   ===================================================================== */
body .productView-desc.halo-text-format,
body .productView-tab .tabs-contents.halo-text-format {
  max-width: 100%;
}

body .productView-tab .tabs-contents.halo-text-format .toggle-title .toggleLink {
  transition: color var(--tt-speed-fast) var(--tt-ease), background-color var(--tt-speed-fast) var(--tt-ease);
}

body .productView-tab .tabs-contents.halo-text-format .toggle-title .toggleLink:hover,
body .productView-tab .tabs-contents.halo-text-format .toggle-title .toggleLink.is-open {
  color: var(--tt-red) !important;
}

body .productView-tab .tabs-contents.halo-text-format .toggle-content {
  color: var(--tt-text);
}

body .productView-tab .tabs-contents.halo-text-format .tab-content {
  scroll-margin-top: 120px;
}

/* =====================================================================
   11. Responsive rules
   ===================================================================== */
@media (max-width: 1180px) {
  :root {
    --tt-table-min: 700px;
  }

  .tt-spec-grid, .tt-stat-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 989px) {
  .tt-media-row,
  .tt-image-text,
  .tt-media-text,
  .tt-split,
  .tt-feature-row,
  .tt-media-row--reverse,
  .tt-image-text--reverse,
  .tt-media-text--reverse,
  .tt-split--reverse,
  .tt-feature-row--reverse,
  .tt-cta-panel {
    grid-template-columns: 1fr;
  }

  .tt-media-row--reverse > :first-child,
  .tt-image-text--reverse > :first-child,
  .tt-media-text--reverse > :first-child,
  .tt-split--reverse > :first-child,
  .tt-feature-row--reverse > :first-child {
    order: 0;
  }

  .fitment-grid {
    grid-template-columns: 1fr;
  }

  .fitment-item {
    flex-direction: row;
    align-items: center;
    text-align: left;
  }

  .fitment-item img {
    width: 84px;
    min-width: 84px;
  }
}

@media (max-width: 768px) {
  :root {
    --tt-table-min: 640px;
  }

  body :is(
  .tt-product-description,
  .productView-desc.halo-text-format,
  .productView-tab .tabs-contents.halo-text-format,
  .productView-tab .tabs-contents.halo-text-format .toggle-content,
  .halo-article-content .article-content.halo-text-format,
  .article-template .article-content.halo-text-format,
  .article-template .halo-text-format,
  .article-template .rte,
  .main-page-title + .rte,
  .page-content .rte,
  .page-width .rte,
  .about-content.halo-text-format,
  .halo-content.halo-text-format
) {
    & h2 {
      margin-top: var(--tt-space-xl);
      margin-bottom: var(--tt-space-sm);
      padding-bottom: 10px;
    }
  }

  .tt-block,
  .tt-card,
  .tt-note,
  .tt-callout,
  .tt-warning,
  .tt-definition,
  .tt-snippet,
  .tt-spec-card,
  .tt-stat-card {
    padding: 16px;
    border-radius: var(--tt-radius);
  }

  .tt-grid, .tt-card-grid, .tt-spec-grid, .tt-stat-grid {
    grid-template-columns: 1fr;
  }

  body :is(
  .tt-product-description,
  .productView-desc.halo-text-format,
  .productView-tab .tabs-contents.halo-text-format,
  .productView-tab .tabs-contents.halo-text-format .toggle-content,
  .halo-article-content .article-content.halo-text-format,
  .article-template .article-content.halo-text-format,
  .article-template .halo-text-format,
  .article-template .rte,
  .main-page-title + .rte,
  .page-content .rte,
  .page-width .rte,
  .about-content.halo-text-format,
  .halo-content.halo-text-format
) {
    & > table {
      width: calc(100% + 30px);
      max-width: calc(100% + 30px);
      margin-left: -15px;
      margin-right: -15px;
      border-left: 0;
      border-right: 0;
      border-radius: 0;
    }
    & table :is(th, td) {
      padding: 12px 10px;
    }
    & table :is(th, td):first-child {
      min-width: 132px;
    }
  }
  .tt-table-scroll-wrapper, .veh-table-wrapper {
    width: calc(100% + 30px);
    max-width: calc(100% + 30px);
    margin-left: -15px;
    margin-right: -15px;
    border-left: 0;
    border-right: 0;
    border-radius: 0;
  }

  .spec-table :is(th, td),
  .veh-table :is(th, td),
  .tt-table-scroll-wrapper > table :is(th, td),
  .veh-table-wrapper > table :is(th, td) {
    padding: 12px 10px;
  }

  .spec-table :is(th, td):first-child,
  .veh-table :is(th, td):first-child,
  .tt-table-scroll-wrapper > table :is(th, td):first-child,
  .veh-table-wrapper > table :is(th, td):first-child {
    min-width: 132px;
  }

  .veh-controls {
    display: grid;
    padding: 12px;
  }

  .veh-controls input, .veh-controls select {
    width: 100%;
  }

  .faq-list summary {
    padding: 16px;
  }

  .faq-list .faq-a {
    padding: 16px;
  }

  .tt-cta-row, .tt-cta-group {
    display: grid;
  }

  .tt-cta-button, .tt-secondary-button {
    width: 100%;
  }
}

@media (max-width: 480px) {
  .fitment-item {
    padding: 14px;
    gap: 14px;
  }

  .fitment-item img {
    width: 68px;
    min-width: 68px;
  }

  .tt-chip-list {
    gap: 6px;
  }

  .tt-chip, .tt-badge {
    font-size: 0.84em;
  }
}

/* =====================================================================
   12. Motion accessibility
   ===================================================================== */
@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }

  body *, body *::before, body *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    scroll-behavior: auto !important;
    transition-duration: 0.01ms !important;
  }
}
/* =====================================================================
   TTSPORT — On-page Table of Contents (.tt-toc)
   Added to support the required blog "table of contents" section. Boxed
   link list, two columns on desktop, one on mobile. Uses the tt-* token
   system. No JS. Pair with a <ul> of in-page anchor links whose
   href="#id" point to each main <h2 id="...">. Carries its own margin
   since it is not part of the top-level spacing-reset block list.
   ===================================================================== */
.tt-article-wrapper .tt-toc{
  margin: var(--tt-space-lg) 0;
  padding: var(--tt-space-md) var(--tt-space-lg);
  border: 1px solid var(--tt-border);
  border-left: 3px solid var(--tt-red);
  border-radius: var(--tt-radius);
  background: var(--tt-bg-soft);
}
.tt-article-wrapper .tt-toc > strong,
.tt-article-wrapper .tt-toc > p:first-child{
  display:block;
  margin:0 0 var(--tt-space-sm);
  font-weight:700;
  color:var(--tt-ink);
}
.tt-article-wrapper .tt-toc ul,
.tt-article-wrapper .tt-toc ol{
  margin:0; padding:0; list-style:none;
  display:grid; gap:var(--tt-space-xs) var(--tt-space-lg);
  grid-template-columns:1fr;
}
.tt-article-wrapper .tt-toc li{ margin:0; }
.tt-article-wrapper .tt-toc a{ display:inline-block; line-height:1.4; }
@media (min-width:760px){
  .tt-article-wrapper .tt-toc ul,
  .tt-article-wrapper .tt-toc ol{ grid-template-columns:1fr 1fr; }
}