:root {
    --ink: #142941;
    --muted: #4b6076;
    --accent: #235c87;
    --border: #d6e0eb;
    --panel: #eef3f8;
    --white: #fff;
    --steel: #eaf0f5;
    --rule: #c5d4df;
    --control-border: #7a8fa3;
    --radius: 6px;
    --control-height: 44px;
    --space-2: 8px;
    --space-3: 12px;
    --space-4: 16px;
    --space-6: 24px;
    --blueprint-grid: linear-gradient(#c5d4df66 1px, transparent 1px),
                      linear-gradient(90deg, #c5d4df66 1px, transparent 1px);
}
[hidden] { display: none !important; }
body, .site-header { background: var(--white); color: var(--ink); }
.site-header { border-color: var(--border); height: 76px; }
.site-header nav { font-size: 14px; }
.site-header nav a[aria-current] { border-color: var(--accent); color: var(--accent); }
.header-cta, .outline { border: 1px solid var(--border); background: var(--white); color: var(--ink); }
.button, .header-cta { border-radius: 6px; gap: 12px; }
.button { padding: 10px 15px; min-height: 42px; }
.dark, .filters a[aria-current], .filters a:hover { background: var(--ink); }
.dark:hover { background: var(--accent); }
.text-link { border-color: var(--accent); color: var(--accent); }
.section { padding-block: clamp(36px, 5vw, 74px); }
.eyebrow, .hero h1 > span, .visual-tag b { color: var(--accent); }
.hero, .hero-visual { min-height: 545px; }
.hero-copy { padding-top: clamp(36px, 5vw, 78px); }
.hero h1 { font-size: clamp(48px, 6vw, 98px); margin: 20px 0; font-weight: 650; }
.hero-copy > p, .detail-copy, .intro, .form-top p, .prose p { color: var(--muted); }
.hero-visual { background: var(--panel); }
.visual-grid { background-image: linear-gradient(var(--border) 1px, transparent 1px), linear-gradient(90deg, var(--border) 1px, transparent 1px); }
.motion-toggle { background: var(--white); border-color: var(--border); }
.hero-foot { margin-top: 30px; }
.status-dot { background: var(--accent); }
.category-strip { padding-block: 17px; border-color: var(--border); }
.category-strip i, .fine, .local-note, .footer-bottom { color: var(--muted); }
.assembly-story p, .spec-points article > span { color: var(--muted); }
.spec-points article, .site-footer, .footer-bottom { border-color: var(--border); }
.catalogue-section, .knowledge { background: var(--panel); }
.category-card, .category-card:hover { background: var(--white); }
.category-card, .product-card, .catalogue-item, .detail-art, .tech-panel { border: 1px solid var(--border); border-radius: 8px; overflow: hidden; }
.category-card > span { border-color: var(--border); }
.category-card > .product-art { height: clamp(106px, 14vw, 195px); }
.section-heading { margin-bottom: 25px; }
.section-heading h2, .knowledge h2 { font-size: clamp(30px, 4vw, 56px); }
.page-title { font-size: clamp(37px, 5vw, 64px); margin: 12px 0; font-weight: 650; }
.intro { margin-bottom: 22px; }
.filters { margin-bottom: 17px; }
.filters a { border-color: var(--border); }
.breadcrumbs { margin-bottom: 16px; }
.product-grid { gap: 16px; }
.product-card, .catalogue-item { background: var(--white); }
.catalogue-item { display: flex; flex-direction: column; align-items: flex-start; }
.catalogue-item .product-card { border: 0; border-radius: 0; width: 100%; flex: 1; }
.catalogue-item > button { margin: 0 14px 10px; }
.rfq-feedback { display: block; font-size: 12px; color: var(--muted); }
.catalogue-item .rfq-feedback:not(:empty) { margin: 0 14px 10px; }
.card-art { height: clamp(115px, 19vw, 280px); padding: 12px; }
.card-art, .product-card:hover .card-art, .card-art:has(.fs-non-standard-cutout),
.product-card:hover .card-art:has(.fs-non-standard-cutout), .detail-art:has(.fs-non-standard-cutout) { background: #f7f9fc; }
.card-info { padding: 14px; }
.card-info h3 { margin: 5px 0 8px; }
.card-info > span:last-child { color: var(--muted); }
.image-pending { background: var(--panel); color: var(--muted); min-height: 0; }
.image-pending > span { color: #72879f; }
.product-detail { gap: clamp(18px, 4vw, 70px); align-items: start; grid-template-columns: repeat(2,minmax(0,1fr)); }
.product-detail h1 { margin: 10px 0; font-weight: 650; }
.product-reference { color: var(--muted); font-size: 13px; margin-bottom: 16px; }
.detail-art { position: relative; height: auto; padding: 0; background: #f7f9fc; aspect-ratio: 4/3; }
.detail-art figure { display: flex; flex-direction: column; height: 100%; margin: 0; }
.detail-art figcaption { background: var(--white); font-size: 12px; padding: 7px 12px; color: var(--muted); }
.gallery-zoom { flex: 1; display: block; overflow: hidden; cursor: zoom-in; min-height: 0; }
.gallery-thumbs, .detail-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
.detail-actions .rfq-feedback { flex-basis: 100%; }
.gallery-thumbs button { background: var(--white); border: 1px solid var(--border); padding: 5px; max-width: 95px; font-size: 12px; }
.gallery-thumbs button[aria-pressed=true] { border-color: var(--accent); }
.gallery-thumbs img { width: 80px; height: 55px; object-fit: contain; }
.gallery-dialog { border: 1px solid var(--border); border-radius: 8px; max-width: 92vw; }
.gallery-dialog::backdrop { background: #142941bb; }
.gallery-dialog form { text-align: right; }
.gallery-dialog img { max-height: 77vh; object-fit: contain; }
.technical { display: grid; gap: 14px; margin: 26px 0; grid-template-columns: repeat(2,minmax(0,1fr)); }
.tech-panel { padding: 16px; min-width: 0; }
.tech-panel h2 { font-size: clamp(22px, 3vw, 32px); margin-bottom: 10px; }
.tech-panel p, .tech-fields, .tech-panel small, .tech-panel table { font-size: 13px; color: var(--muted); }
.tech-fields { margin: 0; }
.tech-fields div { display: grid; grid-template-columns: 1fr 1fr; border-top: 1px solid var(--border); gap: 10px; padding: 6px 0; }
.tech-fields dd { margin: 0; }
.standard-entry { border-top: 1px solid var(--border); padding: 8px 0; overflow-wrap: anywhere; }
.standard-entry small { display: block; }
.tag { display: inline-block; padding: 1px 6px; border-radius: 4px; background: var(--panel); font-size: 11px; margin: 0 3px; }
.dimension-scroll { overflow-x: auto; }
.dimension-scroll table { border-collapse: collapse; white-space: nowrap; }
.dimension-scroll th, .dimension-scroll td { padding: 6px 9px; border: 1px solid var(--border); text-align: left; }
.catalogue-tools { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 9px; align-items: end; padding: 12px; border-radius: 8px; background: var(--panel); }
.catalogue-tools label { font-size: 12px; font-weight: 600; }
.catalogue-tools input, .catalogue-tools select, .rfq-line select { width: 100%; display: block; min-height: 40px; border: 1px solid var(--border); border-radius: 5px; padding: 6px; font: inherit; background: var(--white); color: var(--ink); }
.catalogue-tools select:disabled { color: var(--muted); opacity: 1; }
.result-count { font-size: 13px; color: var(--muted); margin: 9px 0; }
.catalogue-empty { padding: 18px; background: var(--panel); border-radius: 8px; }
.knowledge-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 18px; margin-top: 18px; }
.knowledge-grid article { background: var(--white); border: 1px solid var(--border); border-radius: 8px; padding: 16px; }
.knowledge-grid p { font-size: 14px; color: var(--muted); margin: 7px 0; }
.service-band { background: var(--ink); color: var(--white); }
.service-band .eyebrow, .steps p, .steps article > span { color: #c6ddf1; }
.steps { margin-top: 22px; }
.steps article { border-color: #5e7895; }
.steps h3 { margin: 12px 0 7px; }
.rfq-list { padding: 14px; border: 1px solid var(--border); border-radius: 8px; background: var(--panel); font-size: 13px; min-width: 0; }
.rfq-items { margin-top: 8px; }
.rfq-line { display: grid; grid-template-columns: minmax(0,2fr) minmax(0,1fr) auto; gap: 8px; align-items: center; padding: 8px 0; border-top: 1px solid var(--border); }
.rfq-line button { border: 1px solid var(--border); background: var(--white); border-radius: 5px; padding: 6px; color: var(--ink); }
@media (max-width: 900px) {
    .hero-visual { min-height: 0; height: clamp(260px, 49vw, 445px); }
    .site-header { height: auto; }
}
@media (max-width: 650px) {
    .hero { min-height: 0; }
    .hero h1 { font-size: clamp(38px, 12vw, 68px); }
    .hero-copy { padding-top: 26px; }
    .hero-foot { margin-top: 19px; }
    .product-detail, .technical, .knowledge-grid { grid-template-columns: minmax(0,1fr); }
    .catalogue-tools { grid-template-columns: minmax(0,1fr) auto; }
    .catalogue-item > button { margin-left: 8px; font-size: 11px; }
    .rfq-line { grid-template-columns: minmax(0,1fr) auto; }
    .rfq-line > div { grid-column: 1/-1; }
}
@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
    .button, .category-card { transition: none; }
}

/* Sourcing pages and enquiry form */
.hero h1 { font-size: clamp(42px, 5.2vw, 84px); max-width: 12ch; }
.hero h1 > span { display: inline; }
.hero-copy > p { max-width: 430px; font-size: 16px; }
.hero-actions { flex-wrap: wrap; gap: 12px 20px; }
.hero-actions .text-link { font-size: 13px; }
.hero-visual { background: radial-gradient(ellipse at 55% 42%, #fff 0%, #f1f5f9 52%, #e0e8f0 100%); }
.catalogue-page { padding-top: clamp(16px, 3vw, 44px); }
.catalogue-page .intro { margin-bottom: 12px; }
.catalogue-page .filters { margin-bottom: 10px; }
.catalogue-tools .text-link { align-self: center; }
.product-page { padding-top: clamp(16px, 3vw, 44px); }
.detail-summary .detail-copy { margin-top: 12px; }
.detail-summary .detail-actions { margin-top: 0; }
.about-steps { color: var(--ink); }
.about-steps article { border-color: var(--border); }
.about-steps p { color: var(--muted); }
.contact-page .rfq-form { grid-template-columns: minmax(0,1fr); gap: 16px; max-width: 920px; }
.contact-page .form-top p { max-width: 550px; margin-top: 4px; }
.rfq-technical { min-width: 0; border: 1px solid var(--border); border-radius: 6px; padding: 12px; }
.rfq-technical summary { cursor: pointer; font-size: 13px; font-weight: 600; }
.rfq-technical-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 12px; margin-top: 12px; }
.form-fields select { display: block; width: 100%; min-height: 38px; background: white; color: var(--ink); border: 1px solid var(--border); border-radius: 4px; }
.rfq-drawing-note { color: var(--muted); font-size: 12px; }
@media(max-width:650px) {
 .hero h1 { font-size: clamp(36px,10.5vw,58px); }
 .hero-copy > p { font-size: 14px; }
 .hero-foot,.visual-tag { display: none; }
 .catalogue-page .breadcrumbs { margin-bottom: 8px; }
 .catalogue-page .intro { font-size: 14px; }
 .catalogue-page .filters { flex-wrap: nowrap; overflow-x: auto; padding: 3px 3px 8px; }
 .catalogue-page .filters a { flex: none; }
 .catalogue-tools { padding: 8px; }
 .product-detail .detail-summary { order: -1; }
 .product-detail h1 { font-size: clamp(34px,10vw,49px); }
 .contact-page .intro { font-size: 14px; }
}

/* A captured frame shares the canvas bounds, so switching does not change its scale. */
.hero-visual .hero-fallback.assembly-snapshot { inset: 0; width: 100%; height: 100%; }
.hero-visual .hero-fallback { inset: 0; width: 100%; height: 100%; }
@media (max-width: 600px) {
 .hero-visual .hero-fallback:not(.assembly-snapshot) { transform: scale(1.16); }
}

/* Page containers and spacing */
:root { --layout-gutter: max(5vw, 20px, calc((100% - 1440px) / 2)); }
main > .section { padding-inline: var(--layout-gutter); }
.hero { width: 100%; max-width: 1500px; margin-inline: auto; grid-template-columns: minmax(0, 48fr) minmax(0, 52fr); }
.hero-copy { padding-left: clamp(20px, 5vw, 68px); }
.catalogue-section, .supply-section, .service-band { padding-block: clamp(32px, 4vw, 60px); }

.catalogue-section { background: #f5f8fb; }
.category-grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 16px; }
.category-grid .category-card { grid-column: span 3; min-width: 0; }
.category-grid .category-card > img { width: 100%; }
.category-grid .category-card > .product-art {
    height: clamp(116px, 10.5vw, 158px);
    padding: 12px 16px;
}
.category-grid .category-card > span { padding: 12px 16px; gap: 8px; }
.category-grid .category-card b { font-size: .9375rem; font-weight: 650; }
.category-grid .category-card i { color: var(--accent); }
.category-grid .category-card:hover, .category-grid .category-card:focus-visible { border-color: var(--accent); }
@media (min-width: 901px) {
    .category-grid:has(> .category-card:nth-child(7):last-child) > .category-card:nth-child(n+5) { grid-column: span 4; }
}
.supply-section { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 3fr); gap: clamp(24px, 5vw, 72px); align-items: start; }
.supply-intro h2, .home-enquiry h2 { font-size: clamp(30px, 4vw, 50px); margin: 10px 0; }
.supply-section p, .home-enquiry p { color: var(--muted); }
.supply-paths { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.supply-paths article { padding: 16px; background: var(--panel); border: 1px solid var(--border); border-radius: 8px; }
.supply-paths p { margin: 7px 0; font-size: 14px; }
.supply-paths .supply-note { grid-column: 1 / -1; margin: 0; font-size: 13px; }
.home-enquiry { display: flex; justify-content: space-between; align-items: center; gap: 18px; padding-block: clamp(24px, 4vw, 50px); }
.home-enquiry h2 { margin-top: 0; }
.home-enquiry .button { flex-shrink: 0; }

.catalogue-item .product-card { display: block; }
.card-art { width: 100%; height: clamp(108px, 17vw, 235px); aspect-ratio: auto; }
.card-art img { object-fit: contain; }
.card-info h3 { min-height: 0; margin-bottom: 0; }
.catalogue-item .card-info h3 { min-height: 2.4em; }
.catalogue-item > .button { margin-top: 0; }
.product-gallery { max-width: 600px; }
.product-gallery .detail-art { max-height: 440px; }
.technical { align-items: start; margin: clamp(22px, 3vw, 36px) 0 0; }
.technical-specs { display: grid; min-width: 0; gap: 12px; }
.standard-history { margin-top: 10px; border-top: 1px solid var(--border); }
.standard-history summary { cursor: pointer; padding: 8px 0; font-size: 13px; font-weight: 600; }
.related-products { margin-top: clamp(24px, 3vw, 46px); padding-top: 0; border-top: 0; }
.related-products .product-grid { grid-template-columns: repeat(auto-fit, minmax(min(100%, 230px), 1fr)); }
.related-products .section-heading { margin-bottom: 14px; }

.about-grid { grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr); align-items: center; gap: clamp(20px, 4vw, 54px); }
.about-grid .prose > :first-child { margin-top: 0; }
.about-art { height: clamp(220px, 23vw, 350px); padding: 18px; border-radius: 8px; background: var(--panel); }
.about .callout { padding-top: clamp(20px, 3vw, 42px); }
.contact-page { width: min(100%, 1024px); margin-inline: auto; }
main > .contact-page.section { padding-inline: clamp(18px, 4vw, 48px); }
.contact-page .intro { max-width: 70ch; }
.contact-page .rfq-form { max-width: none; }

@media (min-width: 1550px) {
 .catalogue-page .product-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
@media (max-width: 900px) {
 .hero { grid-template-columns: minmax(0, 1fr); }
 .category-grid .category-card { grid-column: span 4; }
 .category-grid .category-card:last-child:nth-child(3n+1) { grid-column: 1 / -1; }
}
@media (max-width: 650px) {
 .category-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
 .category-grid .category-card, .category-grid .category-card:last-child:nth-child(3n+1) { grid-column: span 1; }
 .category-grid .category-card:last-child:nth-child(odd) { grid-column: 1 / -1; display: grid; grid-template-columns: 1fr 1fr; }
 .category-grid .category-card > .product-art { height: 108px; padding: 8px; }
 .category-grid .category-card > span { padding: 10px; }
 .category-grid .category-card:last-child:nth-child(odd) > span { border-top: 0; border-left: 1px solid var(--border); }
 .supply-section, .supply-paths, .about-grid { grid-template-columns: minmax(0, 1fr); }
 .home-enquiry { align-items: flex-start; flex-direction: column; }
 .catalogue-page .filters { flex-wrap: wrap; overflow-x: visible; padding: 0; }
 .catalogue-page .filters a { padding: 6px 10px; }
 .catalogue-page .catalogue-item:last-child:nth-child(odd) { grid-column: 1 / -1; }
 .catalogue-page .catalogue-item:last-child:nth-child(odd) .product-card { display: grid; grid-template-columns: 1fr 1fr; align-items: center; }
 .related-products .product-grid { grid-template-columns: repeat(auto-fit, minmax(min(100%, 130px), 1fr)); }
 .about-art { height: clamp(170px, 53vw, 245px); padding: 12px; }
}

.service-band .steps, .about-steps { grid-template-columns: repeat(auto-fit, minmax(min(100%, 175px), 1fr)); gap: clamp(16px, 2vw, 32px); }
.about-art { height: auto; margin: 0; }
.about-art .product-art { height: clamp(150px, 20vw, 290px); }
.about-art figcaption { margin-top: 8px; font-size: 13px; color: var(--muted); text-align: center; }

/* Reading sizes shared by the public pages. */
body { font-size: 17px; line-height: 1.65; }
.hero-copy > p, .intro, .catalogue-page .intro, .contact-page .intro,
.detail-copy, .prose p, .supply-paths p, .form-top p, .contact-details p {
    font-size: 1.0625rem;
    line-height: 1.65;
}
.form-top p { max-width: 60ch; }
.site-header nav, .header-cta, .button, .filters a, .text-link,
.hero-actions .text-link, .section-heading .text-link, .category-card > span,
.catalogue-item > button { font-size: .9375rem; }
.button { gap: 12px; }
.catalogue-item > .button { max-width: calc(100% - 28px); white-space: normal; }
.steps p, .spec-points p, .knowledge-grid p, .supply-paths .supply-note,
.tech-panel p, .tech-fields, .tech-panel table, .standard-history summary,
.spec-table > p, .spec-table dl > div, .form-fields label, .form-fields textarea,
.rfq-technical summary, .rfq-list, .catalogue-tools label, .form-status {
    font-size: .9375rem;
    line-height: 1.55;
}
.form-fields input, .form-fields select, .form-fields textarea,
.catalogue-tools input, .catalogue-tools select, .rfq-line select { font-size: 1rem; }
.consent { font-size: .875rem !important; }
.eyebrow, .hero-copy .eyebrow, .card-info .eyebrow, .card-info > span:last-child,
.product-reference, .breadcrumbs, .breadcrumb, .rfq-feedback, .result-count,
.detail-art figcaption, .about-art figcaption, .tech-panel small, .gallery-thumbs button,
.rfq-drawing-note, .local-note, .footer-bottom, .image-pending small, .motion-controls .motion-toggle {
    font-size: .875rem;
}
.visual-tag, .visual-tag b, .visual-caption, .scene-status, .hero-foot,
.tag, .detail-art > small, .illustration-frame > small, .brand small { font-size: .75rem; }
.footer-top > a:last-child { font-size: .9375rem; }
@media (max-width: 650px) {
    .site-header { column-gap: 10px; }
    .site-header nav { gap: 8px 14px; flex-wrap: wrap; }
    .brand small { font-size: .6875rem; letter-spacing: .07em; }
    .header-cta { font-size: .875rem; }
    .hero-foot { flex-wrap: wrap; gap: 8px 16px; }
    .section-heading .text-link { white-space: normal; }
}

/* Product detail: a drawing-board surface for the part and its reference data. */
.product-page .product-detail {
  gap: clamp(24px, 4vw, 64px);
  grid-template-columns: minmax(0, 1.08fr) minmax(0, 1fr);
}
.product-detail .product-gallery { max-width: none; min-width: 0; }
.product-detail .detail-art,
.product-detail .detail-art:has(.fs-non-standard-cutout) {
  background-color: var(--steel);
  background-image: var(--blueprint-grid);
  background-size: 24px 24px;
  border: 1px solid var(--rule);
  border-radius: 4px;
  max-height: 490px;
}
.product-detail .detail-art figcaption {
  background: var(--white);
  border-top: 1px solid var(--rule);
  padding: 10px 14px;
}
.product-detail .gallery-thumbs button {
  border-radius: 4px;
  border-color: var(--rule);
}
.product-detail .gallery-thumbs button[aria-pressed=true] {
  border-color: var(--accent);
  box-shadow: inset 0 -3px var(--accent);
}
.product-detail .detail-summary { min-width: 0; }
.product-detail .detail-summary > .eyebrow {
  color: var(--accent);
  letter-spacing: normal;
  text-transform: none;
}
.product-detail .detail-summary h1 {
  color: var(--ink);
  font-size: clamp(2rem, 3.5vw, 3.5rem);
  line-height: 1.08;
  margin: .32em 0 .38em;
  overflow-wrap: anywhere;
}
.product-detail .product-reference {
  border-block: 1px solid var(--rule);
  padding-block: 10px;
  line-height: 1.6;
  margin: 0 0 16px;
}
.product-detail .detail-actions .button { min-height: 44px; }
.product-detail .detail-actions .button.dark { background: var(--ink); }
.product-detail .detail-copy { max-width: 65ch; }
.product-detail :is(a, button, select):focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 3px;
}
.product-page .product-detail ~ .technical {
  border-top: 2px solid var(--ink);
  padding-top: clamp(18px, 3vw, 32px);
}
@media (max-width: 760px) {
  .product-page .product-detail { grid-template-columns: minmax(0, 1fr); }
  .product-detail .detail-summary { order: initial; }
  .product-detail .detail-art { max-height: 350px; }
}

/* Shared catalogue design system */
.button, .header-cta, .filters a {
  min-height: var(--control-height);
  border-radius: var(--radius);
}
.button.dark, .detail-actions .button.dark { background: var(--ink); }
.button.dark:hover, .detail-actions .button.dark:hover { background: var(--accent); }
.button.outline, .header-cta { border-color: var(--control-border); }
.site-header :focus-visible, main :focus-visible, .site-footer :focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 2px;
}
:is(.product-card, .category-card):focus-visible { outline-offset: -3px; }
.hero-visual { background: var(--steel); }
.visual-grid { background-image: var(--blueprint-grid); background-size: 24px 24px; }
.hero-copy > p, .catalogue-page .intro, .contact-page .intro { max-width: 65ch; }
.category-card, .product-card, .catalogue-item, .tech-panel,
.catalogue-tools, .contact-page .rfq-form, .contact-page .rfq-list {
  border-radius: var(--radius);
}
.category-card > .product-art, .catalogue-item .card-art,
.catalogue-item .product-card:hover .card-art, .related-products .card-art {
  background: var(--steel);
}
.catalogue-tools, .contact-page .rfq-list {
  background: var(--panel);
  border: 1px solid var(--rule);
  padding: var(--space-4);
}
.product-grid { gap: var(--space-4); }
.detail-actions, .gallery-thumbs { gap: var(--space-2); }
.detail-art { border-radius: var(--radius); }
.tech-fields, .dimension-scroll { font-variant-numeric: tabular-nums; }
.contact-page .rfq-form {
  border: 1px solid var(--rule);
  background: var(--white);
  padding: clamp(var(--space-4), 3vw, 32px);
  gap: var(--space-6);
}
.contact-page .form-top { border-bottom: 1px solid var(--rule); padding-bottom: var(--space-4); }
.catalogue-tools :is(input, select), .rfq-line select,
.form-fields :is(input:not([type=checkbox]):not([type=radio]), select, textarea) {
  min-height: var(--control-height);
  border-color: var(--control-border);
  border-radius: var(--radius);
}
@media (max-width: 650px) {
  .catalogue-page .filters { flex-wrap: wrap; overflow-x: visible; gap: var(--space-2); }
  .contact-page .rfq-form { padding-inline: var(--space-3); }
}
@media (prefers-reduced-motion: reduce) {
  .button, .header-cta, .product-card, .category-card, .filters a { transition: none; }
}

/* Homepage: give the assembly and category photographs more of the viewport. */
#hero {
  min-height: 0;
  grid-template-columns: minmax(0, 44fr) minmax(0, 56fr);
}
#hero .hero-copy { padding-block: clamp(24px, 3.2vw, 52px); }
#hero h1 {
  font-size: clamp(36px, 4.6vw, 72px);
  margin-block: 12px;
}
#hero .hero-actions { margin-top: 16px; gap: 8px 12px; }
#hero .hero-foot { margin-top: 16px; }
#hero .hero-visual { min-height: clamp(360px, 35vw, 510px); }
#hero + .catalogue-section { padding-block: clamp(22px, 3vw, 44px); }
.catalogue-section .section-heading { margin-bottom: 16px; }
.catalogue-section .category-grid .category-card > .product-art {
  display: block;
  background: var(--white);
  height: clamp(114px, 12vw, 164px);
  padding: 12px 16px;
  object-fit: contain;
}
.catalogue-section .category-card > .category-card-copy {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 18px;
  align-content: start;
  align-items: start;
  column-gap: 8px;
  row-gap: 3px;
  flex: 1;
  margin-top: 0;
  padding: 10px 14px 12px;
}
.category-card-copy small { grid-column: 1; color: var(--muted); font-size: .875rem; line-height: 1.45; }
.category-card-arrow { grid-column: 2; grid-row: 1; color: var(--accent); width: 18px; height: 18px; }
.catalogue-section .section-heading h2 { margin-top: 0; }
.category-enquiry {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: baseline;
  gap: 8px 20px;
  margin-top: 18px;
  padding-top: 12px;
  border-top: 1px solid var(--border);
}
.category-enquiry p { color: var(--muted); }
.supply-section { display: block; }
.supply-section .supply-intro h2 { margin-top: 0; line-height: 1.12; }
.supply-section .supply-paths { margin-top: 24px; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(18px, 3vw, 42px); }
.supply-section .supply-paths article { padding: 16px 0 0; border: 0; border-top: 2px solid var(--border); border-radius: 0; background: transparent; }
.supply-section h3 { margin: 0; font-size: clamp(19px, 1.65vw, 25px); }
.supply-section h3 a:hover { text-decoration: underline; }
.supply-section .supply-paths p { margin: .6em 0 .8em; max-width: 42ch; }
@media (max-width: 760px) {
  .supply-section .supply-paths { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 650px) {
  .catalogue-section .category-grid .category-card > .product-art { height: 108px; padding: 8px; }
  .catalogue-section .category-card > .category-card-copy { padding: 8px 9px; }
}
@media (max-width: 900px) {
  #hero { grid-template-columns: minmax(0, 1fr); }
  #hero .hero-copy { padding: 16px clamp(16px, 4vw, 32px); }
  #hero .hero-foot { display: none; }
  #hero .hero-visual { min-height: 0; height: clamp(224px, 42vw, 360px); }
}
@media (max-width: 650px) {
  #hero h1 { max-width: none; font-size: clamp(30px, 6vw, 38px); }
  #hero .hero-copy > p { margin-block: 0; }
  #hero .hero-actions { margin-top: 12px; }
}
/* Contact templates and consistent enquiry selection. */
.contact-details { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:24px; margin:32px 0; }
.contact-details dt { font-weight:600; }
.contact-details dd { margin:8px 0 0; min-height:32px; overflow-wrap:anywhere; }
.contact-blank { display:block; min-height:32px; border-bottom:1px solid var(--border,#b4c6d5); }
.rfq-line label { display:block; font-size:.875rem; margin-top:8px; }
.rfq-line input { width:100%; min-width:0; }
.rfq-line > * { min-width:0; }
.request-summary { padding:12px; background:var(--panel,#eef4f8); font-weight:600; overflow-wrap:anywhere; }
.reference-notes { margin-block:16px; }
.reference-notes summary,.external-reference summary { cursor:pointer; padding-block:12px; font-weight:600; }
.fs-yjt-views { display:flex; flex-direction:column; }

.external-reference { margin-top:24px; }
.fs-dim-controls button[hidden] { display:none; }
#drawing-help { font-size:.875rem; line-height:1.6; color:var(--muted,#445e73); }
@media(max-width:600px){.contact-details{grid-template-columns:1fr}.rfq-line{grid-template-columns:minmax(0,1fr)}.rfq-form input[type=file]{width:100%;font-size:1rem}}

/* Keep captions outside the product image's aspect ratio. */
.product-detail .detail-art { aspect-ratio: auto; max-height: none; }
.product-detail .detail-art figure { height: auto; }
.product-detail .gallery-zoom { flex: none; aspect-ratio: 4 / 3; }
.gallery-dialog form button, .rfq-line button { min-height: 44px; min-width: 44px; }
.fs-dim-controls :is(input:not([type=checkbox]),select) { min-height: 44px; font-size: 1rem; }
@media(max-width:600px) {
  .rfq-technical-grid { grid-template-columns: minmax(0,1fr); }
  .rfq-technical-grid > label { min-width: 0; }
  .fs-dim-controls { display: grid; grid-template-columns: minmax(0,1fr); }
  .fs-dim-controls :is(input:not([type=checkbox]),select) { width: 100%; max-width: 100%; }
}

/* Keep the wordmark responsive in the shared header and footer. */
.site-header { height: auto; min-height: 92px; }
.site-header .brand--wordmark {
    flex: 0 1 224px;
    min-width: 0;
    max-width: 224px;
}
.site-header .brand-wordmark {
    display: block;
    width: 100%;
    height: auto;
}
@media (max-width: 900px) {
    .site-header { padding-block: 6px 10px; row-gap: 0; min-height: 100px; }
    .site-header .brand--wordmark { flex-basis: 216px; max-width: 216px; }
}
@media (max-width: 375px) {
    .site-header { padding-inline: 10px; column-gap: 8px; }
    .site-header .header-cta {
        max-inline-size: 76px;
        min-height: 44px;
        padding: 6px 8px;
        align-items: center;
        justify-content: center;
        font-size: .75rem;
        line-height: 1.2;
        text-align: center;
        white-space: normal;
    }
}

.quote-cta {
    background: var(--ink, #10243b);
    color: #fff;
}
.quote-cta:hover, .quote-cta:focus-visible { background: #215781; color: #fff; }
.site-header .rfq-nav { font-size: .875rem; }
.quote-email { margin-block: 12px 24px; font-size: .875rem; color: #49566a; }
.quote-email a { color: inherit; text-decoration: underline; overflow-wrap: anywhere; }
.catalogue-page .breadcrumbs a { color: #49566a; }
.catalogue-categories { margin-block: 12px 16px; }
.catalogue-categories summary { cursor: pointer; font-weight: 600; }
.catalogue-category-nav { margin-top: 12px; }
.catalogue-category-all { display: inline-block; padding: 7px 12px; border: 1px solid var(--border); border-radius: 4px; }
.catalogue-category-groups, .catalogue-category-children { list-style: none; padding: 0; margin: 0; }
.catalogue-category-groups { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 245px), 1fr)); gap: 12px; margin-top: 12px; }
.catalogue-category-group { align-self: start; border: 1px solid var(--border); border-radius: 5px; overflow: hidden; }
.catalogue-category-group a { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; padding: 8px 12px; }
.catalogue-category-group > a { font-weight: 700; background: var(--steel); }
.catalogue-category-children a { font-size: .9rem; border-top: 1px solid var(--border); }
.catalogue-category-count { font-size: .8em; font-weight: 500; font-variant-numeric: tabular-nums; }
.catalogue-category-nav a:hover, .catalogue-category-nav a[aria-current="page"] { background: var(--ink); color: white; }
.catalogue-category-nav a:focus-visible { outline: 2px solid currentColor; outline-offset: -3px; }
.catalogue-pagination { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 24px; }
.catalogue-pagination a { padding: 9px 14px; border: 1px solid #8f9aaa; border-radius: 6px; }
.catalogue-pagination [aria-current="page"] { background: #10243b; color: #fff; }


.site-footer .footer-wordmark { display: block; width: 136px; max-width: 100%; height: auto; }

/* OEM service introduction beneath the homepage hero. */
.oem-section {
 display: grid;
 grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr);
 gap: clamp(28px, 5vw, 72px);
 align-items: start;
 background: var(--steel, #eef3f7);
 border-block: 1px solid var(--border, #dce4e9);
}
.oem-section > * { min-width: 0; }
.oem-intro h2 { margin: 12px 0 16px; font-size: clamp(27px, 3.2vw, 44px); line-height: 1.15; letter-spacing: -.025em; }
.oem-intro > p { max-width: 60ch; color: var(--muted); line-height: 1.7; }
.oem-intro .button { margin-top: 22px; max-width: 100%; }
.oem-intro .oem-upload-note { margin-top: 10px; font-size: .875rem; }
.oem-requirements h3 { margin: 0 0 18px; font-size: 20px; }
.oem-requirements dl { margin: 0; }
.oem-requirements dl > div { padding: 14px 0; border-top: 1px solid var(--border, #dce4e9); }
.oem-requirements dt { font-weight: 650; }
.oem-requirements dd { margin: 5px 0 0; color: var(--muted); line-height: 1.6; }
.oem-review-note { margin-top: 16px; color: var(--muted); font-size: .875rem; line-height: 1.6; }
#oem-custom { scroll-margin-top: 130px; }
@media (max-width: 760px) {
 .oem-section { grid-template-columns: minmax(0, 1fr); gap: 28px; }
}

/* A single keyword field, with actions below on narrow screens. */
.catalogue-tools label { min-width: 0; }
.catalogue-search-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; }
@media (max-width: 640px) {
 .catalogue-tools { grid-template-columns: minmax(0, 1fr); }
}

/* Secondary list actions and conditional form sections. */
.detail-actions .rfq-add { background: transparent; color: var(--ink); border: 0; border-bottom: 1px solid var(--border); border-radius: 0; padding: 8px 0; font: inherit; font-size: .9375rem; }
.form-fields label[hidden], .request-summary[hidden], .rfq-nav[hidden], .scene-status[hidden] { display: none !important; }
.rfq-form .form-fields { min-width: 0; }


/* Two compact, user-initiated contact shortcuts. */
.fs-floating-contacts {
    position: fixed;
    z-index: 40;
    inset-inline-end: max(14px, env(safe-area-inset-right));
    top: 50%;
    transform: translateY(-50%);
    display: grid;
    gap: 8px;
    padding: 6px;
    border: 1px solid #d7e1eb;
    border-radius: 15px;
    background: #fff;
    box-shadow: 0 4px 20px rgb(16 36 59 / 12%);
}
.fs-contact-link {
    position: relative;
    display: grid;
    place-items: center;
    width: 46px;
    height: 46px;
    border-radius: 10px;
    color: #fff;
    text-decoration: none;
}
.fs-contact-whatsapp { background: #12806d; }
.fs-contact-email { background: #142c44; }
.fs-contact-whatsapp:hover { background: #0c6656; }
.fs-contact-email:hover { background: #215781; }
.fs-contact-link:focus-visible { outline: 3px solid #3275ad; outline-offset: 3px; }
.fs-contact-link svg { width: 25px; height: 25px; }
.fs-contact-label {
    position: absolute;
    inset-inline-end: calc(100% + 14px);
    top: 50%;
    transform: translateY(-50%);
    padding: 7px 11px;
    border-radius: 5px;
    background: #142c44;
    color: #fff;
    font-size: 13px;
    line-height: 1.4;
    white-space: nowrap;
    visibility: hidden;
    pointer-events: none;
}
.fs-contact-link:hover .fs-contact-label,
.fs-contact-link:focus-visible .fs-contact-label { visibility: visible; }
@media (max-width: 900px), (max-height: 500px) {
    /* Normal document flow keeps contact links clear of products and forms,
       including landscape screens and the reduced space above a keyboard. */
    .fs-floating-contacts {
        position: static;
        inset: auto;
        transform: none;
        display: flex;
        justify-content: flex-end;
        flex-wrap: wrap;
        gap: 8px;
        padding: 8px var(--layout-gutter);
        margin: 0;
        width: 100%;
        border: 0;
        border-bottom: 1px solid var(--border);
        border-radius: 0;
        box-shadow: none;
    }
    .fs-contact-link {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        gap: 8px;
        width: auto;
        min-width: 44px;
        min-height: 44px;
        height: auto;
        padding: 8px 12px;
        border-radius: 6px;
    }
    .fs-contact-link svg { width: 23px; height: 23px; flex-shrink: 0; }
    .fs-contact-label {
        position: static;
        inset: auto;
        transform: none;
        visibility: visible;
        padding: 0;
        border-radius: 0;
        background: transparent;
    }
}
@media print { .fs-floating-contacts { display: none; } }


/* Touch layouts: give secondary actions the same usable target as primary actions. */
@media (max-width: 1024px), (pointer: coarse) {
    .detail-actions .rfq-add { min-height: 44px; }
    .catalogue-categories > summary,
    .rfq-technical > summary {
        min-height: 44px;
        padding-block: 10px;
    }
    .breadcrumbs a,
    .breadcrumb a,
    .footer-bottom > a,
    .catalogue-search-actions .text-link,
    .section-heading > .text-link {
        display: inline-flex;
        align-items: center;
        min-height: 44px;
        min-width: 44px;
        padding-block: 8px;
    }
    .rfq-form .consent {
        min-height: 44px;
        align-items: flex-start;
        gap: 10px;
        cursor: pointer;
    }
    .rfq-form .consent input[type=checkbox] {
        width: 24px;
        height: 24px;
        min-width: 24px;
        flex: 0 0 24px;
        margin: 2px 0 0;
    }
}


/* Keep fixed desktop contacts in their own lane, outside the page content. */
@media (min-width: 901px) and (min-height: 501px) {
    .wp-site-blocks:has(.fs-floating-contacts) { padding-inline-end: 88px; }
    .fs-contact-link { position: static; }
    .fs-contact-label {
        inset-inline-end: 0;
        top: auto;
        bottom: calc(100% + 10px);
        transform: none;
        padding: 6px;
    }
}
@media print {
    .wp-site-blocks:has(.fs-floating-contacts) { padding-inline-end: 0; }
}
