/*
Theme Name: Oxygen Absorber by Tianhua
Theme URI: https://showcase.tianhua-pack.com
Author: Tianhua Project
Description: Classic WordPress theme with code-owned framework pages and database-managed posts, products, media, navigation, metadata, and inquiry forms.
Version: 2.7.30
Requires at least: 7.0
Tested up to: 7.0
Requires PHP: 8.4
License: Proprietary
Text Domain: medshield-showcase
*/

/* ============================================================
   Design tokens
   ============================================================ */
:root {
  --ms-primary: #1e40af;
  --ms-primary-light: #3b82f6;
  --ms-primary-dark: #1e3a8a;
  --ms-primary-extra-light: #eff6ff;
  --ms-accent: #2563eb;
  --ms-text: #0f172a;
  --ms-text-light: #475569;
  --ms-muted: #64748b;
  --ms-text-muted: var(--ms-muted);
  --ms-line: #e2e8f0;
  --ms-soft: #f8fafc;
  --ms-bg: #f1f5f9;
  --ms-white: #ffffff;
  --ms-black: #0f172a;
  --ms-success: #10b981;
  --ms-gold: #f59e0b;
  --ms-btn-gradient: linear-gradient(135deg, #1e40af 0%, #3b82f6 100%);
  --ms-btn-gradient-hover: linear-gradient(135deg, #1e3a8a 0%, #2563eb 100%);
  --ms-shadow-sm: 0 1px 2px rgba(15, 23, 42, 0.04);
  --ms-shadow: 0 1px 3px rgba(15, 23, 42, 0.08), 0 1px 2px rgba(15, 23, 42, 0.04);
  --ms-shadow-md: 0 4px 6px rgba(15, 23, 42, 0.06), 0 2px 4px rgba(15, 23, 42, 0.04);
  --ms-shadow-lg: 0 10px 15px rgba(15, 23, 42, 0.08), 0 4px 6px rgba(15, 23, 42, 0.04);
  --ms-radius: 8px;
  --ms-radius-lg: 12px;
  --ms-transition: 0.2s ease;
  --ms-header-h: 64px;
  --ms-toc-offset: 132px;
}

/* ============================================================
   Reset / base
   ============================================================ */
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
/* overflow-x: clip (not hidden) so body is not a scroll container and
   position: sticky descendants (About TOC) keep working; hidden = fallback */
html, body { max-width: 100%; overflow-x: hidden; overflow-x: clip; }
body {
  margin: 0;
  background: var(--ms-white);
  color: var(--ms-text);
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Inter', 'Helvetica Neue', Arial, sans-serif;
  font-size: 16px;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}
img { max-width: 100%; height: auto; display: block; }
a { color: inherit; text-decoration: none; }

.screen-reader-text {
  position: absolute !important;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.ms-container {
  width: 100%;
  max-width: 1320px;
  margin: 0 auto;
  padding: 0 24px;
}

/* Grid children may never force their track wider than the container. */
main, header, footer { max-width: 100%; }
.ms-hero-grid > *, .ms-two-col > *,
.ms-grid-2 > *, .ms-grid-3 > *, .ms-grid-4 > *, .ms-grid-5 > * { min-width: 0; }

/* ============================================================
   Header
   ============================================================ */
.ms-header {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 9999;
  background: rgba(255, 255, 255, 0.98);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  border-bottom: 1px solid var(--ms-line);
  box-shadow: var(--ms-shadow-sm);
}

/* 确保 body 有足够的顶部内边距，防止内容被固定 header 遮挡 */
body {
  padding-top: 88px;
}

body.admin-bar {
  padding-top: 120px;
}

/* WordPress admin-bar header offsets are defined once after the responsive
   blocks: 32px by default, 46px through 782px, and 0 through 600px. */

.ms-header-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  min-height: 88px;
  max-width: none;
  padding: 0 24px;
  gap: 16px;
  transition: min-height var(--ms-transition);
}

.ms-brand {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
  min-width: 0;
  text-decoration: none;
  color: var(--ms-text);
}
.ms-brand-logo-img { height: 56px;
  width: auto;
  object-fit: contain;
  border-radius: 4px;
  transition: height var(--ms-transition);
}
.ms-brand-text {
  font-size: 16px;
  font-weight: 700;
  color: var(--ms-text);
  letter-spacing: -0.01em;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 260px;
  transition: font-size var(--ms-transition);
}
.custom-logo { height: 60px !important; width: auto !important; }

/* The Tianhua logo already carries the wordmark; show the English brand
   line only when the row is wide enough for the full inline nav, so on
   narrower desktops and mobile the logo alone represents the brand. This
   keeps the mobile hamburger on-screen and the desktop nav from colliding. */
@media (max-width: 1439px) {
  .ms-brand-text { display: none; }
}

.ms-menu-toggle {
  display: none;
  min-width: 44px;
  min-height: 44px;
  background: none;
  border: none;
  padding: 8px;
  cursor: pointer;
  color: var(--ms-text);
  border-radius: var(--ms-radius);
  transition: background var(--ms-transition);
}
.ms-menu-toggle:hover { background: var(--ms-soft); }
.ms-menu-bars,
.ms-menu-bars::before,
.ms-menu-bars::after {
  display: block;
  width: 24px;
  height: 2px;
  background: currentColor;
  border-radius: 1px;
}
.ms-menu-bars { position: relative; }
.ms-menu-bars::before,
.ms-menu-bars::after { content: ''; position: absolute; left: 0; }
.ms-menu-bars::before { top: -7px; }
.ms-menu-bars::after { top: 7px; }

.ms-nav {
  display: flex;
  align-items: center;
  gap: 10px;
  flex: 1 1 auto;
  min-width: 0;
  justify-content: flex-end;
}
.ms-nav-main {
  display: flex;
  align-items: center;
  flex: 0 1 auto;
  min-width: 0;
  overflow: visible;
}

.ms-menu-list {
  display: flex;
  align-items: center;
  gap: 4px;
  list-style: none;
  margin: 0;
  padding: 0;
  overflow: visible;
}
.ms-menu-list li { position: relative; list-style: none; margin: 0; }
.ms-menu-list a {
  display: block;
  padding: 10px 10px;
  font-size: 15px;
  font-weight: 500;
  color: var(--ms-text-light);
  text-decoration: none;
  border-radius: var(--ms-radius);
  transition: all var(--ms-transition);
  white-space: nowrap;
}
.ms-menu-list a:hover,
.ms-menu-list a:focus-visible {
  color: var(--ms-primary);
  background: var(--ms-primary-extra-light);
}
.ms-menu-list .current-menu-item > a,
.ms-menu-list .current_page_item > a {
  color: var(--ms-primary);
  font-weight: 600;
}
.ms-submenu-toggle { display: none; }

@media (min-width: 1181px) {
  .ms-menu-list .menu-item-has-children > a {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
  }
  .ms-menu-list .menu-item-has-children > a::after {
    content: '';
    display: block;
    flex: 0 0 auto;
    width: 6px;
    height: 6px;
    margin: -3px 1px 0 2px;
    border-right: 1.5px solid currentColor;
    border-bottom: 1.5px solid currentColor;
    transform: rotate(45deg);
  }
  .ms-menu-list .sub-menu .menu-item-has-children > a::after {
    margin-top: 0;
    transform: rotate(-45deg);
  }
  .ms-menu-list .sub-menu {
    position: absolute;
    top: 100%;
    left: 0;
    z-index: 10001;
    display: grid;
    gap: 2px;
    min-width: 176px;
    margin: 0;
    padding: 10px;
    list-style: none;
    background: rgba(255, 255, 255, 0.98);
    border: 1px solid var(--ms-line);
    border-radius: 12px;
    box-shadow: 0 18px 40px rgba(15, 23, 42, 0.15);
    opacity: 0;
    pointer-events: none;
    transform: translateY(-6px);
    transition: opacity var(--ms-transition), transform var(--ms-transition);
  }
  .ms-menu-list li:hover > .sub-menu,
  .ms-menu-list li.is-hover-open > .sub-menu,
  .ms-menu-list li:focus-within > .sub-menu {
    opacity: 1;
    pointer-events: auto;
    transform: translateY(0);
  }
  .ms-menu-list .sub-menu .sub-menu {
    top: -1px;
    left: calc(100% - 1px);
    border-top-left-radius: 6px;
  }
  /* Keep every level opening to the right while fitting the third-level R&D menu. */
  .ms-menu-list .sub-menu .sub-menu .sub-menu {
    min-width: 144px;
  }
  /* Resources owns a stable layout class, so extra editor-added top-level
     items cannot accidentally make its nested fly-outs spill off-screen. */
  .ms-menu-list > .ms-resources-menu > .sub-menu {
    left: auto;
    right: 0;
  }
  .ms-menu-list > .ms-resources-menu .sub-menu .sub-menu {
    left: auto;
    right: calc(100% - 1px);
  }
  .ms-menu-list .sub-menu a {
    padding: 10px 12px;
    font-size: 14px;
    line-height: 1.35;
  }
  .ms-menu-list .sub-menu .menu-item-has-children > a {
    font-weight: 650;
  }
  .ms-menu-list > .ms-products-menu > .sub-menu {
    min-width: 326px;
  }
  .ms-menu-list .ms-products-menu .sub-menu .sub-menu {
    min-width: 286px;
  }
  .ms-menu-list .ms-products-menu .sub-menu a {
    line-height: 1.35;
    white-space: normal;
  }
  .ms-menu-list .ms-products-menu .sub-menu .sub-menu a {
    white-space: nowrap;
  }
}

.ms-nav-actions {
  display: flex;
  align-items: center;
  gap: 12px;
  flex: 0 1 auto;
  min-width: 0;
}
.ms-search-form {
  position: relative;
  display: flex;
  align-items: center;
  flex: 0 1 auto;
  min-width: 0;
}
.ms-search-icon {
  position: absolute;
  left: 12px;
  color: var(--ms-muted);
  pointer-events: none;
  z-index: 1;
}
.ms-search-input {
  padding: 10px 14px 10px 36px;
  font-size: 15px;
  border: 1px solid var(--ms-line);
  border-radius: var(--ms-radius);
  background: var(--ms-soft);
  color: var(--ms-text);
  width: 150px;
  min-width: 96px;
  transition: border-color var(--ms-transition), background var(--ms-transition), box-shadow var(--ms-transition);
  outline: none;
}
.ms-search-input::placeholder { color: var(--ms-muted); }
.ms-search-input:focus {
  background: var(--ms-white);
  border-color: var(--ms-primary);
  box-shadow: 0 0 0 3px rgba(30, 64, 175, 0.1);
}

.ms-nav-link {
  font-size: 13px;
  font-weight: 500;
  color: var(--ms-text-light);
  text-decoration: none;
  padding: 8px 10px;
  border-radius: var(--ms-radius);
  transition: color var(--ms-transition);
  white-space: nowrap;
}
.ms-nav-link:hover { color: var(--ms-primary); }
.ms-nav-sample {
  color: var(--ms-text);
  font-weight: 600;
  border: 1px solid var(--ms-line);
  padding: 8px 12px;
}
.ms-nav-sample:hover { border-color: var(--ms-primary); color: var(--ms-primary); }
.ms-nav-cta {
  display: inline-flex;
  align-items: center;
  padding: 9px 14px;
  font-size: 13px;
  font-weight: 600;
  color: var(--ms-white);
  background: var(--ms-primary);
  border-radius: var(--ms-radius);
  text-decoration: none;
  transition: all var(--ms-transition);
  white-space: nowrap;
}
.ms-nav-cta:hover {
  background: var(--ms-primary-dark);
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(30, 64, 175, 0.25);
}

/* Condensed sticky header after scrolling �?desktop only. site.js toggles
   .is-condensed; below 1181px the class has no effect. */
@media (min-width: 1181px) {
  .ms-menu-list a,
  .ms-search-input,
  .ms-nav-sample,
  .ms-nav-cta { transition: all var(--ms-transition); }
  .ms-header.is-condensed { box-shadow: 0 4px 16px rgba(15, 23, 42, 0.08); }
  .ms-header.is-condensed .ms-header-inner { min-height: 52px; }
  .ms-header.is-condensed .ms-brand-logo-img { height: 52px; }
  .ms-header.is-condensed .ms-brand-text { font-size: 15px; }
  .ms-header.is-condensed .ms-menu-list a { padding: 6px 8px; }
  .ms-header.is-condensed .ms-search-input { padding: 6px 10px 6px 32px; }
  .ms-header.is-condensed .ms-nav-sample { padding: 5px 12px; }
  .ms-header.is-condensed .ms-nav-cta { padding: 6px 14px; }
  .ms-header.is-condensed + main .ms-products-filter { top: 53px; }
  body.admin-bar .ms-header.is-condensed + main .ms-products-filter { top: 85px; }
}

/* The plain "Contacts" link duplicates the Contact menu item; the desktop
   row has no room for it, so it only appears in the collapsed panel. */
.ms-nav-link:not(.ms-nav-sample) { display: none; }

/* ============================================================
   Buttons
   ============================================================ */
.ms-btn,
.wp-block-button__link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  padding: 12px 22px;
  font-size: 14px;
  font-weight: 700;
  color: #ffffff !important;
  background: var(--ms-btn-gradient);
  border: none;
  border-radius: var(--ms-radius);
  text-decoration: none;
  cursor: pointer;
  transition: all var(--ms-transition);
  white-space: nowrap;
  letter-spacing: 0.01em;
  line-height: 1.3;
  box-shadow: 0 4px 14px rgba(30, 64, 175, 0.25);
}
.ms-btn:hover,
.wp-block-button__link:hover {
  background: var(--ms-btn-gradient-hover);
  transform: translateY(-1px);
  box-shadow: 0 6px 20px rgba(30, 64, 175, 0.35);
}
.ms-btn:active { transform: translateY(0); }

.ms-btn-outline {
  background: var(--ms-white);
  color: var(--ms-primary) !important;
  border: 2px solid var(--ms-primary);
  box-shadow: none;
}
.ms-btn-outline:hover {
  background: var(--ms-primary-extra-light);
  color: var(--ms-primary) !important;
  box-shadow: 0 2px 8px rgba(30, 64, 175, 0.12);
}
.ms-btn-light {
  background: var(--ms-white);
  color: var(--ms-primary) !important;
  border: 1px solid var(--ms-white);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
}
.ms-btn-light:hover {
  background: var(--ms-soft);
  color: var(--ms-primary-dark) !important;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}
.ms-btn-outline--light {
  background: transparent;
  color: #ffffff !important;
  border: 2px solid rgba(255, 255, 255, 0.5);
  box-shadow: none;
}
.ms-btn-outline--light:hover {
  background: rgba(255, 255, 255, 0.12);
  border-color: #ffffff;
  color: #ffffff !important;
  box-shadow: none;
}

.ms-btn-dark-outline {
  background: transparent;
  color: #ffffff !important;
  border: 2px solid rgba(255, 255, 255, 0.6);
  box-shadow: none;
}
.ms-btn-dark-outline:hover { background: rgba(255, 255, 255, 0.1); border-color: #ffffff; }

.ms-actions {
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
  margin-top: 30px;
}
.ms-center { justify-content: center; text-align: center; }

/* ============================================================
   Hero
   ============================================================ */
.ms-hero {
  border-bottom: 1px solid var(--ms-line);
  background: var(--ms-white);
  position: relative;
  overflow: hidden;
}
.ms-hero::before {
  content: '';
  position: absolute;
  top: -50%;
  right: -20%;
  width: 600px;
  height: 600px;
  background: radial-gradient(circle, rgba(30, 64, 175, 0.04) 0%, transparent 70%);
  border-radius: 50%;
  pointer-events: none;
}
.ms-hero-grid {
  min-height: 600px;
  display: grid;
  grid-template-columns: 1.1fr 1fr;
  gap: 56px;
  align-items: center;
  padding-top: 72px;
  padding-bottom: 72px;
  position: relative;
  z-index: 1;
}
.ms-eyebrow {
  display: inline-block;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--ms-primary);
  font-size: 13px;
  font-weight: 700;
  margin-bottom: 16px;
  padding: 6px 12px;
  background: var(--ms-primary-extra-light);
  border-radius: 4px;
}

/* Hero H1 - SEO 标题（视觉上小但语义重要） */
#ms-hero-seo-heading {
  margin: 0 0 14px !important;
  font-size: 16px !important;
  line-height: 1.4 !important;
  font-weight: 700 !important;
  letter-spacing: 0.08em !important;
  text-transform: uppercase !important;
  color: var(--ms-primary) !important;
  display: inline-block !important;
  padding: 6px 12px !important;
  background: var(--ms-primary-extra-light) !important;
  border-radius: 4px !important;
}

/* Hero H2 - 主视觉标题（视觉上大但语义是 H2） */
.ms-hero h2.ms-hero-title {
  font-size: clamp(32px, 4.4vw, 56px) !important;
  line-height: 1.1 !important;
  margin: 0 0 24px !important;
  letter-spacing: -0.02em !important;
  color: var(--ms-text) !important;
  font-weight: 800 !important;
  overflow-wrap: anywhere !important;
}
.ms-product-hero h1,
.ms-section h1 {
  font-size: clamp(32px, 4.4vw, 56px);
  line-height: 1.1;
  margin: 0 0 24px;
  letter-spacing: -0.02em;
  color: var(--ms-text);
  font-weight: 800;
  overflow-wrap: anywhere;
}
.ms-section h1 { font-size: clamp(30px, 3.8vw, 48px); }
.ms-lead {
  font-size: 18px;
  line-height: 1.7;
  color: var(--ms-text-light);
  max-width: 600px;
  margin: 0 0 8px;
}
.ms-media {
  aspect-ratio: 16 / 11;
  border-radius: var(--ms-radius-lg);
  overflow: hidden;
  background: var(--ms-primary-extra-light);
  box-shadow: var(--ms-shadow-lg);
  position: relative;
  max-width: 100%;
}
.ms-media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

/* ============================================================
   Home full-bleed banner hero (background image + overlay text)
   ============================================================ */
.ms-hero-banner {
  position: relative;
  background-color: #eef2f7;
  border-bottom: 1px solid var(--ms-line);
  overflow: hidden;
}
/* Cancel the decorative radial from .ms-hero */
.ms-hero-banner::before { display: none; }
/* Background slide layer — photos cross-fade behind the fixed heading */
.ms-hero-slides {
  position: absolute;
  inset: 0;
  z-index: 0;
}
.ms-hero-slide {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center right;
  background-repeat: no-repeat;
  opacity: 0;
  transition: opacity 1.1s ease;
}
.ms-hero-slide.is-active { opacity: 1; }
@media (prefers-reduced-motion: reduce) {
  .ms-hero-slide { transition: none; }
}
/* Left-side panel wash so the heading + buttons always sit on clean space */
.ms-hero-banner::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, rgba(238,242,247,0.97) 0%, rgba(238,242,247,0.96) 36%, rgba(238,242,247,0.55) 56%, rgba(238,242,247,0) 74%);
  pointer-events: none;
  z-index: 1;
}
.ms-hero-banner-inner {
  position: relative;
  z-index: 2;
  min-height: 560px;
  display: flex;
  align-items: center;
  padding-top: 64px;
  padding-bottom: 64px;
}
.ms-hero-banner-content {
  max-width: 620px;
}
.ms-hero-banner-title {
  margin: 0 0 20px;
  font-size: clamp(34px, 4.6vw, 60px);
  line-height: 1.08;
  letter-spacing: -0.02em;
  font-weight: 800;
  color: #17356b;
}
.ms-hero-banner-lead {
  margin: 0 0 34px;
  max-width: 500px;
  font-size: clamp(17px, 1.5vw, 21px);
  line-height: 1.6;
  color: #2b3a4f;
}
.ms-hero-banner .ms-actions {
  margin-top: 0;
}
/* Slide navigation dots */
.ms-hero-dots {
  display: flex;
  align-items: center;
  gap: 0;
  margin-top: 14px;
}
.ms-hero-dot {
  width: 44px;
  height: 44px;
  padding: 20px 5px;
  border: 0;
  border-radius: 999px;
  background: rgba(23, 53, 107, 0.22);
  background-clip: content-box;
  cursor: pointer;
  transition: background 0.3s ease, width 0.3s ease, padding 0.3s ease;
}
.ms-hero-dot:hover { background-color: rgba(23, 53, 107, 0.45); }
.ms-hero-dot.is-active { width: 48px; padding-right: 0; padding-left: 0; background-color: #17356b; }
.ms-hero-dot:focus-visible { outline: 2px solid #17356b; outline-offset: 3px; }
@media (max-width: 1024px) {
  .ms-hero-banner-inner { min-height: 480px; }
}
@media (max-width: 768px) {
  .ms-hero-slide {
    background-position: 72% center;
  }
  .ms-hero-banner::after {
    background: linear-gradient(180deg, rgba(238,242,247,0.92) 0%, rgba(238,242,247,0.82) 45%, rgba(238,242,247,0.72) 100%);
  }
  .ms-hero-banner-inner {
    min-height: 420px;
    padding-top: 48px;
    padding-bottom: 48px;
  }
  .ms-hero-banner-content { max-width: 100%; }
}

/* Hero 轮播样式 - 精致优化版 */
.ms-carousel {
  position: relative;
  width: 100%;
  height: 100%;
  overflow: hidden;
  border-radius: var(--ms-radius-lg);
}

.ms-carousel-track {
  display: flex;
  width: 100%;
  height: 100%;
  transition: transform 0.7s cubic-bezier(0.4, 0, 0.2, 1);
  will-change: transform;
}

.ms-carousel-slide {
  width: 100%;
  min-width: 100%;
  height: 100%;
  flex: 0 0 100%;
  overflow: hidden;
}

.ms-carousel-slide img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.ms-carousel-btn {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.85);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border: 1px solid rgba(255, 255, 255, 0.3);
  color: var(--ms-primary-dark);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all 0.3s ease;
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1);
  z-index: 10;
  opacity: 0;
  pointer-events: none;
}

.ms-carousel:hover .ms-carousel-btn {
  opacity: 1;
  pointer-events: auto;
}

.ms-carousel-btn:hover {
  background: var(--ms-primary);
  color: white;
  transform: translateY(-50%) scale(1.08);
  box-shadow: 0 8px 30px rgba(30, 64, 175, 0.3);
}

.ms-carousel-btn:active {
  transform: translateY(-50%) scale(0.95);
}

.ms-carousel-prev {
  left: 16px;
}

.ms-carousel-next {
  right: 16px;
}

.ms-carousel-dots {
  position: absolute;
  bottom: 20px;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  gap: 8px;
  z-index: 10;
  background: rgba(255, 255, 255, 0.1);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  padding: 8px 16px;
  border-radius: 100px;
}

.ms-carousel-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.5);
  border: none;
  cursor: pointer;
  transition: all 0.3s ease;
  padding: 0;
}

.ms-carousel-dot:hover {
  background: rgba(255, 255, 255, 0.8);
  transform: scale(1.2);
}

.ms-carousel-dot.is-active {
  background: white;
  width: 24px;
  border-radius: 10px;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
}

/* 移动端优化 - 始终显示按钮 */
@media (max-width: 768px) {
  .ms-carousel-btn {
    opacity: 1;
    pointer-events: auto;
    width: 36px;
    height: 36px;
  }

  .ms-carousel-prev {
    left: 12px;
  }

  .ms-carousel-next {
    right: 12px;
  }

  .ms-carousel-dots {
    bottom: 16px;
    padding: 6px 12px;
  }

  .ms-carousel-dot {
    width: 7px;
    height: 7px;
  }

  .ms-carousel-dot.is-active {
    width: 20px;
  }
}

/* ============================================================
   Sections / titles
   ============================================================ */
.ms-section { padding: 96px 0; }
.ms-tight { padding: 48px 0; }
.ms-section-soft { background: var(--ms-primary-extra-light); }

.ms-title { max-width: 720px; margin-bottom: 48px; }
.ms-title h2,
.ms-two-col h2 {
  font-size: clamp(28px, 3.5vw, 40px);
  line-height: 1.2;
  margin: 0 0 16px;
  letter-spacing: -0.02em;
  color: var(--ms-text);
  font-weight: 800;
  overflow-wrap: anywhere;
}
.ms-title p,
.ms-two-col p {
  font-size: 17px;
  color: var(--ms-text-light);
  margin: 0;
  line-height: 1.6;
}

/* ============================================================
   Grids
   ============================================================ */
.ms-grid-1 { display: grid; grid-template-columns: minmax(0, 1fr); gap: 24px; max-width: 640px; }
.ms-grid-2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; }
.ms-grid-3 { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; }
.ms-grid-4 { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 20px; }
.ms-grid-5 { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 20px; }
.ms-two-col {
  display: grid;
  grid-template-columns: 0.9fr 1.1fr;
  gap: 56px;
  align-items: center;
}

/* ============================================================
   Cards
   ============================================================ */
.ms-card {
  background: var(--ms-white);
  border: 1px solid var(--ms-line);
  padding: 28px;
  border-radius: var(--ms-radius-lg);
  text-decoration: none;
  color: inherit;
  transition: all var(--ms-transition);
  display: flex;
  flex-direction: column;
  min-width: 0;
}
.ms-card:hover {
  border-color: var(--ms-primary-light);
  box-shadow: var(--ms-shadow-md);
  transform: translateY(-2px);
}
.ms-post-card h2,
.ms-card h3 {
  margin: 0 0 12px;
  font-size: 20px;
  line-height: 1.3;
  color: var(--ms-text);
  font-weight: 700;
  overflow-wrap: anywhere;
}
.ms-post-card h2 a,
.ms-card h3 a { text-decoration: none; }
.ms-post-card h2 a:hover,
.ms-card h3 a:hover { color: var(--ms-primary); }
.ms-card p { color: var(--ms-text-light); margin: 0; font-size: 15px; line-height: 1.6; }
.ms-card strong { color: var(--ms-primary); }
.ms-card .ms-btn { align-self: flex-start; margin-top: auto; }

.ms-card-image {
  display: block;
  margin: -28px -28px 20px;
  aspect-ratio: 16 / 10;
  background: var(--ms-primary-extra-light);
  overflow: hidden;
  border-radius: var(--ms-radius-lg) var(--ms-radius-lg) 0 0;
}
.ms-card-image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.4s ease;
}
.ms-card:hover .ms-card-image img { transform: scale(1.05); }

/* ============================================================
   Link grid (category cards)
   ============================================================ */
.ms-link-grid { display: grid; gap: 20px; }
.ms-link-grid a {
  display: flex;
  flex-direction: column;
  padding: 28px;
  background: var(--ms-white);
  border: 1px solid var(--ms-line);
  border-radius: var(--ms-radius-lg);
  text-decoration: none;
  color: inherit;
  transition: all var(--ms-transition);
  min-height: 200px;
  min-width: 0;
}
.ms-link-grid a::before {
  content: '';
  display: block;
  width: 42px;
  height: 4px;
  background: var(--ms-gold);
  border-radius: 999px;
  margin-bottom: 20px;
}
.ms-link-grid a:hover {
  border-color: var(--ms-primary);
  background: var(--ms-primary-extra-light);
  transform: translateY(-2px);
  box-shadow: var(--ms-shadow-md);
}
.ms-link-grid a:hover h3 { color: var(--ms-primary); }
.ms-link-grid span {
  font-size: 12px;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-weight: 700;
  color: var(--ms-primary);
  margin-bottom: 12px;
}
.ms-link-grid h3 {
  font-size: 18px;
  line-height: 1.3;
  margin: 0 0 12px;
  color: var(--ms-text);
  font-weight: 700;
  transition: color var(--ms-transition);
  overflow-wrap: anywhere;
}
.ms-link-grid p {
  color: var(--ms-text-light);
  font-size: 14px;
  line-height: 1.6;
  margin: 0;
  flex: 1;
}

/* ============================================================
   Badges strip (blue band under hero)
   ============================================================ */
.ms-badges {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  border: 1px solid var(--ms-line);
  background: var(--ms-line);
  gap: 1px;
  border-radius: var(--ms-radius-lg);
  overflow: hidden;
}
.ms-badge {
  background: var(--ms-white);
  text-align: center;
  padding: 20px 12px;
  font-weight: 600;
  font-size: 14px;
  color: var(--ms-text-light);
  overflow-wrap: anywhere;
}
.ms-tight.ms-section-soft { background: var(--ms-primary); padding: 0; }
.ms-tight .ms-badges { border: 0; border-radius: 0; background: transparent; gap: 0; }
.ms-tight .ms-badge {
  background: transparent;
  color: #ffffff;
  border-left: 1px solid rgba(255, 255, 255, 0.13);
  padding: 30px 20px;
  font-size: 15px;
}
.ms-tight .ms-badge:first-child { border-left: 0; }

/* Certification logo strip (real cert badges under the hero) */
.ms-cert-strip.ms-tight.ms-section-soft {
  background: var(--ms-white);
  padding: 30px 0;
}
.ms-cert-label {
  text-align: center;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  font-size: 12px;
  font-weight: 700;
  color: var(--ms-muted);
  margin: 0 0 20px;
}
.ms-cert-logos {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 22px 44px;
}
.ms-cert-logo img {
  height: 56px;
  width: auto;
  display: block;
  opacity: 0.9;
  transition: opacity var(--ms-transition), transform var(--ms-transition);
}
.ms-cert-logo img:hover { opacity: 1; transform: translateY(-2px); }
@media (max-width: 768px) {
  .ms-cert-logos { gap: 18px 28px; }
  .ms-cert-logo img { height: 44px; }
}

/* ============================================================
   Tags
   ============================================================ */
.ms-tags { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 16px; }
.ms-tag {
  border: 1px solid var(--ms-line);
  border-radius: 999px;
  padding: 6px 12px;
  font-size: 12px;
  color: var(--ms-text-light);
  background: var(--ms-white);
}

/* ============================================================
   Split card
   ============================================================ */
.ms-split-card {
  display: grid;
  grid-template-columns: minmax(180px, 0.55fr) 1fr;
  gap: 20px;
  background: var(--ms-white);
  border: 1px solid var(--ms-line);
  padding: 20px;
  border-radius: var(--ms-radius-lg);
  text-decoration: none;
  color: inherit;
  transition: all var(--ms-transition);
}
.ms-split-card > * { min-width: 0; }
.ms-split-card > div { display: flex; flex-direction: column; }
.ms-split-card:hover { border-color: var(--ms-primary-light); box-shadow: var(--ms-shadow-md); }
.ms-split-card img {
  width: 100%;
  height: auto;
  aspect-ratio: 4 / 3;
  align-self: center;
  object-fit: cover;
  border-radius: var(--ms-radius);
  background: var(--ms-primary-extra-light);
}
.ms-split-card h3 { font-size: 20px; margin: 8px 0; color: var(--ms-text); font-weight: 700; }
.ms-split-card .ms-card-cta {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  gap: 6px;
  margin-top: auto;
  padding-top: 12px;
  font-size: 14px;
  font-weight: 600;
  color: var(--ms-primary);
  text-decoration: none;
  transition: gap var(--ms-transition);
}
.ms-split-card .ms-card-cta svg {
  transition: transform var(--ms-transition);
}
.ms-split-card .ms-card-cta:hover {
  gap: 10px;
}
.ms-split-card .ms-card-cta:hover svg {
  transform: translateX(3px);
}

/* ============================================================
   Stat grid
   ============================================================ */
.ms-stat-grid {
  display: grid;
  grid-template-columns: minmax(0, 0.86fr) minmax(0, 1.25fr) minmax(0, 1.18fr) minmax(0, 0.8fr);
  gap: 1px;
  background: var(--ms-line);
  border: 1px solid var(--ms-line);
  border-radius: var(--ms-radius-lg);
  overflow: hidden;
}
.ms-stat-grid > div { background: var(--ms-white); padding: 34px 16px; min-width: 0; }
.ms-stat-grid strong {
  display: block;
  font-size: clamp(36px, 2.2vw, 44px);
  line-height: 1;
  color: var(--ms-primary);
  font-weight: 800;
  margin-bottom: 8px;
  letter-spacing: 0;
  overflow-wrap: normal;
  white-space: nowrap;
}
.ms-stat-grid span { display: block; font-size: 14px; font-weight: 600; color: var(--ms-text); margin-bottom: 8px; white-space: nowrap; }
.ms-stat-grid p { font-size: 13px; color: var(--ms-text-light); margin: 0; line-height: 1.5; }

.ms-factory-overview-grid {
  display: grid;
  grid-template-columns: minmax(0, 0.72fr) minmax(0, 1.28fr);
  align-items: center;
  gap: 48px;
}
.ms-factory-overview-data { min-width: 0; }
.ms-factory-overview-label {
  margin: 0 0 12px;
  color: var(--ms-primary);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}
.ms-factory-overview .ms-stat-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.ms-factory-overview .ms-stat-grid > div { padding: 28px 14px; }
.ms-factory-overview .ms-stat-grid strong { font-size: clamp(26px, 2.15vw, 40px); }

.ms-company-story {
  color: var(--ms-text);
  background: var(--ms-white);
}
.ms-company-story .ms-eyebrow { color: var(--ms-primary); }
.ms-story-heading { max-width: 820px; margin: 0 0 40px; }
.ms-story-heading h2 { margin: 0 0 14px; color: var(--ms-text); font-size: clamp(30px, 3.5vw, 40px); line-height: 1.2; letter-spacing: -0.02em; }
.ms-story-heading p:last-child { margin: 0; color: var(--ms-text-light); font-size: 17px; line-height: 1.7; }
.ms-story-investment { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1px; margin: 0 0 52px; border: 1px solid var(--ms-line); background: var(--ms-line); border-radius: var(--ms-radius-lg); overflow: hidden; box-shadow: var(--ms-shadow-sm); }
.ms-story-investment article { padding: 22px 24px; background: var(--ms-white); }
.ms-story-investment strong, .ms-story-investment span { display: block; }
.ms-story-investment strong { color: var(--ms-primary); font-size: 18px; letter-spacing: 0.02em; }
.ms-story-investment span { margin-top: 7px; color: var(--ms-text); font-size: 14px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.08em; }
.ms-story-investment p { margin: 9px 0 0; color: var(--ms-text-light); font-size: 14px; line-height: 1.55; }
.ms-story-timeline { position: relative; display: grid; grid-template-columns: repeat(9, minmax(180px, 1fr)); gap: 18px; min-width: max-content; margin: 0; padding: 46px 0 4px; list-style: none; }
.ms-story-timeline::before { content: ''; position: absolute; top: 68px; right: 0; left: 0; height: 1px; background: linear-gradient(90deg, transparent, var(--ms-primary-light) 6%, var(--ms-primary-light) 94%, transparent); }
.ms-story-timeline li { position: relative; width: 180px; padding: 44px 14px 0 0; }
.ms-story-timeline li::before { content: ''; position: absolute; top: 13px; left: 0; width: 20px; height: 20px; border: 4px solid var(--ms-primary-extra-light); border-radius: 50%; background: var(--ms-primary); box-shadow: 0 0 0 5px rgba(59, 130, 246, 0.16); }
.ms-story-timeline time { display: block; color: var(--ms-primary); font-size: 28px; font-weight: 800; line-height: 1; letter-spacing: -0.04em; }
.ms-story-timeline h3 { margin: 13px 0 0; color: var(--ms-text); font-size: 15px; line-height: 1.5; font-weight: 650; }
.ms-company-story .ms-container { overflow-x: auto; scrollbar-color: var(--ms-primary-light) transparent; scrollbar-width: thin; }

/* ============================================================
   Tianhua yearly review
   ============================================================ */
.ms-tianhua-review {
  background: linear-gradient(135deg, #f8fbff 0%, #ffffff 52%, #f1f6ff 100%);
}
.ms-review-heading {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 32px;
  padding-bottom: 48px;
  border-bottom: 1px solid var(--ms-line);
}
.ms-review-heading > div:first-child { max-width: 760px; }
.ms-review-heading h2 {
  margin: 0;
  color: var(--ms-text);
  font-size: clamp(32px, 4vw, 52px);
  line-height: 1.08;
  letter-spacing: -0.035em;
}
.ms-review-period {
  margin: 12px 0 18px !important;
  color: var(--ms-primary) !important;
  font-size: 13px !important;
  font-weight: 700;
  letter-spacing: 0.1em;
  line-height: 1.3 !important;
  text-transform: uppercase;
}
.ms-review-heading p:not(.ms-eyebrow) {
  margin: 0;
  color: var(--ms-text-light);
  font-size: 17px;
  line-height: 1.65;
}
.ms-review-actions { flex: 0 0 auto; }
.ms-review-story {
  display: grid;
  grid-template-columns: minmax(0, 0.9fr) minmax(0, 0.9fr) minmax(280px, 1.2fr);
  gap: 18px;
  margin-top: 40px;
}
.ms-review-feature,
.ms-review-media,
.ms-review-figures article,
.ms-review-brand {
  background: var(--ms-white);
  border: 1px solid var(--ms-line);
  border-radius: var(--ms-radius-lg);
  box-shadow: 0 10px 28px rgba(30, 64, 175, 0.06);
}
.ms-review-feature {
  padding: 32px;
  border-top: 3px solid rgba(30, 64, 175, 0.36);
}
.ms-review-index {
  display: block;
  color: var(--ms-primary);
  font-size: clamp(34px, 3.5vw, 52px);
  font-weight: 800;
  letter-spacing: -0.06em;
  line-height: 0.9;
}
.ms-review-kicker {
  margin: 24px 0 8px;
  color: var(--ms-primary);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}
.ms-review-feature h3,
.ms-review-figures h3,
.ms-review-brand h3 {
  margin: 0 0 10px;
  color: var(--ms-text);
  font-size: 19px;
  line-height: 1.3;
}
.ms-review-feature p:not(.ms-review-kicker),
.ms-review-figures p,
.ms-review-brand p { margin: 0; color: var(--ms-text-light); font-size: 14px; line-height: 1.6; }
.ms-review-media { position: relative; min-height: 260px; overflow: hidden; }
.ms-review-media::after { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, transparent 38%, rgba(15, 23, 42, 0.78)); }
.ms-review-media img { width: 100%; height: 100%; object-fit: cover; }
.ms-review-media span { position: absolute; right: 24px; bottom: 20px; z-index: 1; color: #ffffff; font-size: 14px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; }
.ms-review-figures {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 18px;
  margin-top: 18px;
}
.ms-review-figures article { min-height: 266px; padding: 24px 20px; }
.ms-review-figures .ms-review-index { font-size: 30px; margin-bottom: 16px; }
.ms-review-figures h3 { font-size: 16px; }
.ms-review-placeholder {
  margin-top: 18px;
  padding: 12px;
  aspect-ratio: 4 / 3;
}
.ms-review-brand {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 28px;
  margin-top: 18px;
  padding: 28px 32px;
}
.ms-review-brand .ms-review-kicker { margin: 0 0 8px; }
.ms-review-brand a { color: var(--ms-primary); font-size: 14px; font-weight: 700; text-decoration: underline; text-underline-offset: 4px; }

@media (max-width: 1100px) {
  .ms-review-story { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ms-review-media { grid-column: span 2; min-height: 240px; }
  .ms-review-figures { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

@media (max-width: 700px) {
  .ms-review-heading { display: block; padding-bottom: 30px; }
  .ms-review-actions { margin-top: 24px; }
  .ms-review-actions .ms-btn { width: 100%; }
  .ms-review-story { grid-template-columns: 1fr; }
  .ms-review-media { grid-column: auto; min-height: 220px; }
  .ms-review-figures { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ms-review-figures article { min-height: 220px; padding: 20px 16px; }
  .ms-review-brand { grid-template-columns: 1fr; gap: 18px; padding: 24px; }
}

/* ============================================================
   Dark section
   ============================================================ */
.ms-dark { background: var(--ms-primary); color: #ffffff; }
.ms-dark h1, .ms-dark h2, .ms-dark .ms-card h3 { color: #ffffff; }
.ms-dark .ms-eyebrow,
.ms-dark .ms-two-col .ms-eyebrow,
.ms-dark .ms-title .ms-eyebrow { color: #0f172a; }
.ms-dark .ms-title p, .ms-dark p, .ms-dark .ms-two-col p { color: #e2e8f0; }
.ms-dark .ms-card {
  background: rgba(255, 255, 255, 0.075);
  border-color: rgba(255, 255, 255, 0.14);
  color: #ffffff;
  box-shadow: none;
}
.ms-dark .ms-card:hover { background: rgba(255, 255, 255, 0.11); border-color: rgba(255, 255, 255, 0.26); }
.ms-dark .ms-card p { color: #cbd5e1; }

/* ============================================================
   Page hero (interior pages)
   ============================================================ */
.ms-page-hero {
  background: linear-gradient(135deg, #1e3a8a 0%, #1e40af 50%, #3b82f6 100%);
  color: #ffffff;
  padding: 56px 0;
  position: relative;
  overflow: hidden;
}
.ms-page-hero::before {
  content: '';
  position: absolute;
  inset: 0;
  background: url("data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cg fill='%23ffffff' fill-opacity='.05'%3E%3Cpath d='M36 34v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zm0-30V0h-2v4h-4v2h4v4h2V6h4V4h-4zM6 34v-4H4v4H0v2h4v4h2v-4h4v-2H6zM6 4V0H4v4H0v2h4v4h2V6h4V4H6z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");
}
.ms-page-hero .ms-container { position: relative; z-index: 1; }
.ms-page-hero h1 {
  font-size: clamp(30px, 3.5vw, 42px);
  line-height: 1.15;
  margin: 0 0 12px;
  font-weight: 700;
  overflow-wrap: anywhere;
}
.ms-page-hero p { color: #dbeafe; font-size: 16px; line-height: 1.6; max-width: 720px; margin: 0; }
.ms-page-hero .ms-eyebrow { color: #0f172a; }

/* ============================================================
   Breadcrumb
   ============================================================ */
.ms-breadcrumb {
  background: var(--ms-soft);
  border-bottom: 1px solid var(--ms-line);
  padding: 0;
  font-size: 13px;
  line-height: 1;
}
.ms-breadcrumb .ms-container {
  display: flex;
  align-items: center;
  flex-wrap: nowrap;
  gap: 0;
}
.ms-breadcrumb a {
  display: inline-flex;
  min-height: 44px;
  align-items: center;
  color: var(--ms-muted);
  text-decoration: none;
  transition: color var(--ms-transition);
}
.ms-breadcrumb a:hover { color: var(--ms-primary); }
.ms-breadcrumb .ms-breadcrumb-home svg {
  display: block;
  width: 14px;
  height: 14px;
}
.ms-breadcrumb .ms-breadcrumb-home {
  min-width: 44px;
  justify-content: center;
}
.ms-breadcrumb-sep {
  display: inline-flex;
  align-items: center;
  margin: 0 6px;
  color: var(--ms-line);
}
.ms-breadcrumb-sep svg {
  display: block;
  width: 12px;
  height: 12px;
}
.ms-breadcrumb-current {
  flex: 1 1 auto;
  min-width: 0;
  max-width: min(62vw, 720px);
  overflow: hidden;
  color: var(--ms-text);
  font-weight: 500;
  line-height: 1.3;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* ============================================================
   Product filter band
   ============================================================ */
.ms-product-filter { background: var(--ms-primary); color: #ffffff; }
.ms-product-filter .ms-container {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
  justify-content: center;
  padding-top: 24px;
  padding-bottom: 24px;
}
.ms-product-filter a {
  border: 1px solid rgba(255, 255, 255, 0.2);
  background: rgba(255, 255, 255, 0.08);
  color: #ffffff;
  text-decoration: none;
  border-radius: 999px;
  padding: 9px 15px;
  font-size: 13px;
  font-weight: 700;
  transition: all var(--ms-transition);
}
.ms-product-filter a.is-active,
.ms-product-filter a:hover { background: #ffffff; color: var(--ms-primary); }

/* ============================================================
   Product hero / spec table
   ============================================================ */
.ms-product-hero { padding: 58px 0; }
.ms-product-hero .ms-two-col { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.ms-product-hero h2 { font-size: 19px; margin-top: 28px; }

.ms-product-spec {
  width: 100%;
  table-layout: fixed;
  border-collapse: collapse;
  margin-top: 22px;
  background: var(--ms-white);
  border-radius: var(--ms-radius);
  overflow: hidden;
}
.ms-product-spec th,
.ms-product-spec td {
  border: 1px solid var(--ms-line);
  padding: 15px;
  text-align: left;
  vertical-align: top;
  overflow-wrap: anywhere;
}
.ms-product-spec th { background: #f9fafb; width: 34%; }

/* ============================================================
   Content helpers
   ============================================================ */
.ms-check-list { list-style: none; padding: 0; margin: 14px 0 0; display: grid; gap: 12px; }
.ms-check-list li { position: relative; padding-left: 28px; color: #374151; }
.ms-check-list li::before {
  content: '';
  position: absolute;
  left: 0; top: 0.3em;
  width: 16px; height: 16px;
  border-radius: 50%;
  background: var(--ms-primary);
}
.ms-check-list li::after {
  content: '';
  position: absolute;
  left: 5px; top: 0.56em;
  width: 6px; height: 10px;
  border-right: 2px solid #ffffff;
  border-bottom: 2px solid #ffffff;
  transform: rotate(45deg);
}

.ms-alert {
  margin-top: 22px;
  border: 1px solid #f3d08a;
  background: #fff8e5;
  color: #744a00;
  border-radius: var(--ms-radius);
  padding: 15px;
  font-size: 14px;
}
.ms-stack { display: grid; gap: 14px; }
.ms-note {
  border: 1px solid var(--ms-line);
  background: #fafafa;
  border-radius: var(--ms-radius);
  padding: 18px;
  color: #374151;
  min-width: 0;
}
.ms-note strong { color: var(--ms-primary); }
.ms-app-pill {
  display: flex;
  align-items: center;
  gap: 12px;
  border: 1px solid var(--ms-line);
  border-radius: var(--ms-radius);
  padding: 16px;
  font-weight: 700;
  background: var(--ms-white);
  min-width: 0;
}
.ms-app-pill::before {
  content: '';
  width: 24px; height: 24px;
  border-radius: 50%;
  background: var(--ms-primary);
  flex: 0 0 auto;
}
.ms-dashed { border-style: dashed; background: #fafafa; }
.ms-dashed button {
  margin-top: 12px;
  border: 0;
  background: #e5e7eb;
  color: var(--ms-muted);
  border-radius: 6px;
  padding: 10px 14px;
  font-weight: 700;
}
.ms-route {
  border: 1px solid var(--ms-line);
  background: #fafafa;
  border-radius: var(--ms-radius);
  padding: 16px;
  margin: 22px 0;
}
.ms-route h3,
.ms-mini-title {
  font-size: 12px;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--ms-muted);
  margin: 0 0 10px;
}
.ms-route p { font-size: 14px; line-height: 1.6; margin: 0; }

/* ============================================================
   CTA block
   ============================================================ */
.ms-cta {
  background: var(--ms-primary);
  color: #ffffff;
  border-radius: var(--ms-radius);
  text-align: center;
  padding: 42px;
  box-shadow: 0 24px 60px rgba(0, 0, 0, 0.16);
}
.ms-cta h2 { font-size: 32px; margin: 0 0 12px; }
.ms-cta p { max-width: 720px; margin: 0 auto; color: #d1d5db; }
.ms-cta .ms-actions { justify-content: center; }

/* ============================================================
   Case list / media grid / contact list
   ============================================================ */
.ms-case-list { display: grid; gap: 38px; }
.ms-case-list article {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 34px;
  align-items: center;
  border-bottom: 1px solid var(--ms-line);
  padding-bottom: 38px;
}
.ms-case-list article:nth-child(even) img { order: 2; }
.ms-case-list img {
  width: 100%;
  aspect-ratio: 16 / 10;
  height: auto;
  object-fit: cover;
  border-radius: 6px;
  border: 1px solid var(--ms-line);
}
.ms-case-list .ms-btn { margin-top: 22px; }

.ms-media-grid article {
  background: var(--ms-white);
  border: 1px solid var(--ms-line);
  border-radius: var(--ms-radius);
  overflow: hidden;
  min-width: 0;
}
.ms-media-grid img { width: 100%; aspect-ratio: 16 / 10; height: auto; object-fit: cover; }
.ms-media-grid h3 { font-size: 18px; margin: 0; padding: 18px; }

.ms-contact-page-layout {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(340px, 0.85fr);
  gap: 52px;
  align-items: start;
}
.ms-contact-content { overflow: visible; }
.ms-contact-directory { min-width: 0; }
.ms-contact-directory-heading { max-width: 720px; margin-bottom: 32px; }
.ms-contact-directory-heading h2 { margin: 0 0 12px; }
.ms-contact-directory-heading > p:last-child { margin: 0; color: var(--ms-muted); }
.ms-contact-directory-group {
  display: grid;
  grid-template-columns: minmax(150px, 0.34fr) minmax(0, 1fr);
  gap: 28px;
  padding: 24px 0;
  border-top: 1px solid var(--ms-line);
}
.ms-contact-directory-group:last-child { border-bottom: 1px solid var(--ms-line); }
.ms-contact-directory-group h3 { margin: 0; font-size: 17px; line-height: 1.4; }
.ms-contact-directory-group dl { display: grid; gap: 0; margin: 0; }
.ms-contact-entry {
  display: grid;
  grid-template-columns: minmax(128px, 0.42fr) minmax(0, 1fr);
  gap: 18px;
  padding: 12px 0;
  border-top: 1px solid color-mix(in srgb, var(--ms-line) 72%, transparent);
}
.ms-contact-entry:first-child { padding-top: 0; border-top: 0; }
.ms-contact-entry:last-child { padding-bottom: 0; }
.ms-contact-entry dt { color: var(--ms-text-light); font-size: 13px; font-weight: 700; }
.ms-contact-entry dd { min-width: 0; margin: 0; color: var(--ms-muted); line-height: 1.6; overflow-wrap: anywhere; }
.ms-contact-entry address { margin: 0; color: inherit; font-style: normal; }
.ms-contact-entry a { color: var(--ms-primary); font-weight: 650; text-underline-offset: 3px; }
.ms-contact-map-link { display: inline-block; margin-top: 6px; }

@media (min-width: 1181px) and (min-height: 720px) {
  .ms-contact-page-layout > .ms-inquiry-panel {
    position: sticky;
    top: calc(var(--ms-header-h) + var(--ms-space-lg));
  }
  body.admin-bar .ms-contact-page-layout > .ms-inquiry-panel {
    top: calc(var(--ms-header-h) + var(--ms-space-lg) + 32px);
  }
}

/* ============================================================
   Forms
   ============================================================ */
.ms-inquiry-form {
  border: 1px solid var(--ms-line);
  background: var(--ms-white);
  border-radius: var(--ms-radius);
  padding: 28px;
  box-shadow: var(--ms-shadow-sm);
  min-width: 0;
}
.ms-inquiry-panel {
  min-width: 0;
  scroll-margin-top: 96px;
  outline: none;
}
.ms-inquiry-modes {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 4px;
  margin-bottom: 16px;
  padding: 4px;
  border: 1px solid var(--ms-line);
  border-radius: var(--ms-radius);
  background: var(--ms-soft);
}
.ms-inquiry-modes a {
  display: grid;
  min-height: 44px;
  place-items: center;
  padding: 8px 10px;
  border-radius: 6px;
  color: var(--ms-text-light);
  font-size: 13px;
  font-weight: 700;
  text-align: center;
}
.ms-inquiry-modes a:hover,
.ms-inquiry-modes a:focus-visible { color: var(--ms-primary); background: var(--ms-white); }
.ms-inquiry-modes a[aria-current="page"] {
  color: var(--ms-white);
  background: var(--ms-primary);
  box-shadow: var(--ms-shadow-sm);
}
.ms-inquiry-form h3 { font-size: 24px; margin: 0 0 8px; }
.ms-inquiry-form p { color: var(--ms-muted); margin-top: 0; }
.ms-inquiry-form label {
  display: block;
  margin-top: 16px;
  font-size: 14px;
  font-weight: 700;
  color: #334155;
}
.ms-inquiry-form input,
.ms-inquiry-form select,
.ms-inquiry-form textarea {
  display: block;
  width: 100%;
  margin-top: 7px;
  border: 1px solid #cbd5e1;
  border-radius: 6px;
  padding: 12px 13px;
  font: inherit;
  font-size: 14px;
  background: var(--ms-white);
}
.ms-inquiry-form input:focus,
.ms-inquiry-form select:focus,
.ms-inquiry-form textarea:focus {
  outline: 2px solid var(--ms-primary);
  outline-offset: 1px;
}
.ms-inquiry-form button,
.ms-inquiry-form input[type=submit] { min-height: 46px; }
.ms-inquiry-form > button[type="submit"] { margin-top: 20px; }
.ms-inquiry-form button[disabled] { cursor: wait; opacity: .7; }
.ms-inquiry-form[aria-busy="true"] { cursor: progress; }
.ms-form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.ms-form-help { margin-top: 14px !important; font-size: 12px !important; color: var(--ms-muted) !important; }
.ms-inquiry-direct {
  margin: 10px 0 0 !important;
  font-size: 13px;
  overflow-wrap: anywhere;
}
.ms-inquiry-direct a { color: var(--ms-primary); font-weight: 700; }
.ms-form-success {
  border: 1px solid #a7f3d0;
  background: #ecfdf5;
  color: #065f46;
  border-radius: var(--ms-radius);
  padding: 20px;
  margin-bottom: 18px;
}
.ms-form-success p { margin: 6px 0 0; color: #047857; }
.ms-form-error {
  border: 1px solid #fecaca;
  background: #fef2f2;
  color: #991b1b;
  border-radius: var(--ms-radius);
  padding: 20px;
  margin-bottom: 18px;
}
.ms-form-error p { margin: 6px 0 0; color: #b91c1c; }
.ms-form-success:focus-visible,
.ms-form-error:focus-visible { outline: 3px solid currentColor; outline-offset: 3px; }
.ms-hp-field {
  position: absolute !important;
  left: -10000px !important;
  width: 1px !important;
  height: 1px !important;
  overflow: hidden !important;
}

/* ============================================================
   Prose / misc
   ============================================================ */
.ms-content { padding: 64px 0; }
.ms-content img { max-width: 100%; height: auto; }
.ms-prose { max-width: 860px; }
.ms-prose p, .ms-prose li { color: #4b5563; font-size: 17px; line-height: 1.8; }
.ms-post-meta { color: var(--ms-muted); font-size: 14px; margin-bottom: 14px; }
.ms-offline { min-height: 60vh; display: grid; place-items: center; text-align: center; }
.ms-offline h1 { font-size: clamp(34px, 7vw, 56px); line-height: 1; margin: 0 0 18px; }
.ms-offline p { max-width: 640px; margin: 0 auto; color: var(--ms-text-light); font-size: 18px; }

/* ============================================================
   Search results
   ============================================================ */
.ms-search-page { padding: 52px 0 84px; background: var(--ms-white); }
.ms-search-heading { max-width: 880px; }
.ms-search-heading h1 { margin: 4px 0 22px; font-size: 38px; line-height: 1.15; }
.ms-search-page-form {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 10px;
}
.ms-search-page-icon {
  position: absolute;
  top: 50%;
  left: 16px;
  display: grid;
  color: var(--ms-muted);
  transform: translateY(-50%);
  pointer-events: none;
}
.ms-search-page-form input {
  min-width: 0;
  min-height: 50px;
  padding: 12px 16px 12px 48px;
  border: 1px solid #cbd5e1;
  border-radius: var(--ms-radius);
  background: var(--ms-white);
  color: var(--ms-text);
  font: inherit;
  font-size: 16px;
}
.ms-search-page-form input:focus {
  outline: 2px solid var(--ms-primary);
  outline-offset: 2px;
}
.ms-search-page-form .ms-btn { min-height: 50px; }
.ms-search-guidance,
.ms-search-empty {
  max-width: 760px;
  margin-top: 44px;
  padding: 28px;
  border: 1px solid var(--ms-line);
  border-radius: var(--ms-radius);
  background: var(--ms-soft);
}
.ms-search-guidance h2,
.ms-search-empty h2 { margin: 0 0 8px; font-size: 22px; }
.ms-search-guidance p,
.ms-search-empty p { margin: 0; color: var(--ms-text-light); }
.ms-search-empty .ms-actions { margin-top: 22px; }
.ms-search-summary {
  margin-top: 36px;
  padding-bottom: 16px;
  border-bottom: 1px solid var(--ms-line);
}
.ms-search-summary p { margin: 0; color: var(--ms-text-light); }
.ms-search-summary strong { color: var(--ms-text); font-size: 20px; }
.ms-search-summary span { color: var(--ms-text); }
.ms-search-types {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  padding: 18px 0 26px;
}
.ms-search-types a {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 40px;
  padding: 8px 12px;
  border: 1px solid var(--ms-line);
  border-radius: var(--ms-radius);
  color: var(--ms-text-light);
  font-size: 14px;
  font-weight: 700;
}
.ms-search-types a:hover,
.ms-search-types a:focus-visible { border-color: var(--ms-primary); color: var(--ms-primary); }
.ms-search-types a[aria-current="page"] { border-color: var(--ms-primary); color: var(--ms-white); background: var(--ms-primary); }
.ms-search-types strong {
  min-width: 24px;
  padding: 1px 6px;
  border-radius: 999px;
  background: var(--ms-soft);
  color: var(--ms-text-light);
  font-size: 12px;
  text-align: center;
}
.ms-search-types a[aria-current="page"] strong { background: rgba(255,255,255,.18); color: var(--ms-white); }
.ms-search-groups { display: grid; gap: 48px; }
.ms-search-group > header {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 14px;
}
.ms-search-group > header h2 { margin: 0; font-size: 24px; }
.ms-search-group > header span { color: var(--ms-muted); font-size: 13px; white-space: nowrap; }
.ms-search-results { border-top: 1px solid var(--ms-line); }
.ms-search-result {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 24px;
  align-items: center;
  padding: 24px 0;
  border-bottom: 1px solid var(--ms-line);
}
.ms-search-result.has-image { grid-template-columns: 128px minmax(0, 1fr) auto; }
.ms-search-result > * { min-width: 0; }
.ms-search-result-image {
  display: block;
  overflow: hidden;
  border: 1px solid var(--ms-line);
  border-radius: var(--ms-radius);
  background: var(--ms-soft);
}
.ms-search-result-image img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; }
.ms-search-result-type {
  margin: 0 0 5px;
  color: var(--ms-primary);
  font-size: 12px;
  font-weight: 800;
  text-transform: uppercase;
}
.ms-search-result h3 { margin: 0; font-size: 20px; line-height: 1.35; }
.ms-search-result h3 a:hover,
.ms-search-result h3 a:focus-visible { color: var(--ms-primary); }
.ms-search-result > div > p:last-child { margin: 8px 0 0; color: var(--ms-text-light); font-size: 15px; }
.ms-search-result-link,
.ms-search-view-all { color: var(--ms-primary); font-size: 14px; font-weight: 800; text-decoration: underline; text-underline-offset: 4px; }
.ms-search-result-link { padding: 10px 0 10px 12px; }
.ms-search-view-all { display: inline-flex; margin-top: 16px; }
.ms-search-pagination { margin-top: 38px; }
.ms-search-pagination ul { display: flex; flex-wrap: wrap; gap: 6px; margin: 0; padding: 0; list-style: none; }
.ms-search-pagination a,
.ms-search-pagination span {
  display: grid;
  min-width: 40px;
  min-height: 40px;
  place-items: center;
  padding: 6px 10px;
  border: 1px solid var(--ms-line);
  border-radius: 6px;
  font-size: 14px;
  font-weight: 700;
}
.ms-search-pagination .current { border-color: var(--ms-primary); color: var(--ms-white); background: var(--ms-primary); }
.ms-search-pagination a:hover,
.ms-search-pagination a:focus-visible { border-color: var(--ms-primary); color: var(--ms-primary); }

@media (max-width: 700px) {
  .ms-search-page { padding: 36px 0 60px; }
  .ms-search-heading h1 { font-size: 30px; }
  .ms-search-page-form { grid-template-columns: minmax(0, 1fr); }
  .ms-search-page-form .ms-btn { width: 100%; }
  .ms-search-types { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ms-search-types a { justify-content: space-between; }
  .ms-search-types a:first-child { grid-column: 1 / -1; }
  .ms-search-result,
  .ms-search-result.has-image { grid-template-columns: 88px minmax(0, 1fr); gap: 14px; }
  .ms-search-result:not(.has-image) { grid-template-columns: minmax(0, 1fr); }
  .ms-search-result-link { grid-column: 2; justify-self: start; padding: 0; }
  .ms-search-result:not(.has-image) .ms-search-result-link { grid-column: 1; }
  .ms-search-result h3 { font-size: 18px; }
  .ms-search-result > div > p:last-child { font-size: 14px; }
  .ms-search-guidance,
  .ms-search-empty { padding: 22px 18px; }
  .ms-inquiry-modes { grid-template-columns: 1fr; }
}

/* ============================================================
   About page �?section nav tabs
   ============================================================ */
.ms-about-nav { padding: 0; background: var(--ms-white); border-bottom: 1px solid var(--ms-line); position: sticky; top: 0; z-index: 100; }
.ms-about-tabs { display: flex; gap: 0; overflow-x: auto; scrollbar-width: none; -webkit-overflow-scrolling: touch; }
.ms-about-tabs::-webkit-scrollbar { display: none; }
.ms-about-tabs a {
  display: block; padding: 16px 24px; font-size: 14px; font-weight: 500;
  color: var(--ms-text-light); text-decoration: none; white-space: nowrap;
  border-bottom: 2px solid transparent; transition: color .2s, border-color .2s;
}
.ms-about-tabs a:hover { color: var(--ms-primary); }
.ms-about-tabs a.active,
.ms-about-tabs a:focus-visible { color: var(--ms-primary); border-bottom-color: var(--ms-primary); }

/* ============================================================
   About page �?placeholder boxes & cards
   ============================================================ */
.ms-placeholder-box {
  display: flex; align-items: center; justify-content: center;
  min-height: 160px; border-radius: var(--ms-radius-lg);
  background: repeating-linear-gradient(
    -45deg,
    var(--ms-soft),
    var(--ms-soft) 8px,
    var(--ms-bg) 8px,
    var(--ms-bg) 16px
  );
  border: 2px dashed var(--ms-line); padding: 24px; text-align: center;
}
.ms-placeholder-box span {
  font-size: 14px; color: var(--ms-text-muted); line-height: 1.6;
  background: var(--ms-white); padding: 8px 16px; border-radius: var(--ms-radius);
}
.ms-placeholder-card {
  background: var(--ms-white); border: 1px solid var(--ms-line);
  border-radius: var(--ms-radius-lg); padding: 40px 32px; text-align: center;
  transition: border-color .2s, box-shadow .2s;
}
.ms-placeholder-card:hover { border-color: var(--ms-primary-light); box-shadow: var(--ms-shadow-sm); }
.ms-placeholder-icon {
  display: inline-flex; align-items: center; justify-content: center;
  width: 64px; height: 64px; border-radius: 50%;
  background: var(--ms-primary-extra-light); color: var(--ms-primary); margin-bottom: 16px;
}
.ms-placeholder-card h3 { margin: 0 0 8px; font-size: 18px; }
.ms-placeholder-card p { margin: 0; font-size: 14px; color: var(--ms-text-muted); }
.ms-card-highlight { border-top: 3px solid var(--ms-primary); }

/* ============================================================
   Footer CTA band
   ============================================================ */
.ms-footer-cta {
  position: relative;
  overflow: hidden;
  background: linear-gradient(135deg, #1e40af 0%, #3b82f6 100%);
  color: #ffffff;
}
.ms-footer-cta::before,
.ms-footer-cta::after {
  content: '';
  position: absolute;
  border: 1px solid rgba(255, 255, 255, 0.1);
  border-radius: 50%;
  pointer-events: none;
}
.ms-footer-cta::before { width: 500px; height: 500px; right: -180px; top: -350px; }
.ms-footer-cta::after { width: 300px; height: 300px; left: -150px; bottom: -220px; }
.ms-footer-cta-inner {
  position: relative;
  z-index: 1;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 48px;
  padding-top: 64px;
  padding-bottom: 64px;
}
.ms-footer-kicker {
  margin: 0 0 12px;
  color: #bfdbfe;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
.ms-footer-cta h2 {
  max-width: 720px;
  margin: 0;
  font-size: clamp(28px, 3.5vw, 40px);
  line-height: 1.15;
  color: #ffffff;
  font-weight: 800;
  letter-spacing: -0.02em;
}
.ms-footer-cta p:not(.ms-footer-kicker) {
  max-width: 720px;
  margin: 16px 0 0;
  color: #dbeafe;
  font-size: 16px;
  line-height: 1.6;
}
.ms-footer-cta .ms-btn { flex: 0 0 auto; min-width: 140px; }
@keyframes ms-footer-orbit {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}
@media (prefers-reduced-motion: no-preference) {
  .ms-footer-cta::before { animation: ms-footer-orbit 30s linear infinite; }
}

/* ============================================================
   Footer
   ============================================================ */
.ms-footer { padding: 0; background: #0f172a; color: #cbd5e1; }
.ms-footer a { color: #e2e8f0; text-decoration: none; transition: color var(--ms-transition); }
.ms-footer a:hover { color: #93c5fd; }

.ms-footer-links-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 32px;
  padding: 64px 0 48px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.08);
}
.ms-footer-links-grid h2,
.ms-footer-logos h2,
.ms-footer-company-info h2 {
  margin: 0 0 20px;
  color: #ffffff;
  font-size: 15px;
  line-height: 1.3;
  font-weight: 700;
  letter-spacing: 0.02em;
}
.ms-footer-menu { display: grid; gap: 12px; margin: 0; padding: 0; list-style: none; }
.ms-footer-menu a,
.ms-footer-menu span { display: inline-block; color: #94a3b8; font-size: 14px; line-height: 1.5; }
.ms-footer-menu a:hover { color: #93c5fd; }

.ms-footer-logos { padding: 32px 0; border-bottom: 1px solid rgba(255, 255, 255, 0.08); }
.ms-footer-logos > div { display: flex; align-items: center; gap: 24px; flex-wrap: wrap; }
.ms-footer-logos img {
  display: block;
  width: 120px;
  height: 56px;
  padding: 6px 8px;
  border-radius: 6px;
  background: var(--ms-white);
  object-fit: contain;
}
.ms-footer-logos-placeholder {
  margin: 0;
  padding: 14px 18px;
  border-left: 3px solid #93c5fd;
  background: rgba(255, 255, 255, 0.04);
  color: #cbd5e1;
  font-size: 14px;
  line-height: 1.6;
}

.ms-footer-company-info {
  display: grid;
  grid-template-columns: minmax(210px, 0.62fr) minmax(0, 2.38fr);
  gap: 40px;
  align-items: start;
  padding: 40px 0;
  border-bottom: 1px solid rgba(255, 255, 255, 0.08);
}
.ms-footer-company-info h2 { font-size: 20px; margin: 0 0 8px; }
.ms-footer-company-heading { min-width: 0; }
.ms-footer-contact-more {
  display: inline-block;
  margin-top: 12px;
  color: #bfdbfe !important;
  font-size: 13px;
  font-weight: 700;
  text-underline-offset: 4px;
}
.ms-footer-directory {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 24px;
}
.ms-footer-directory-group { min-width: 0; }
.ms-footer-directory-group h3 {
  margin: 0 0 14px;
  color: #e2e8f0;
  font-size: 12px;
  line-height: 1.4;
  font-weight: 700;
  letter-spacing: 0;
  text-transform: uppercase;
}
.ms-footer-directory-list {
  display: grid;
  gap: 14px;
  margin: 0;
}
.ms-footer-directory-item {
  display: grid;
  gap: 4px;
  min-width: 0;
  margin: 0;
  color: #cbd5e1;
  font-size: 14px;
  line-height: 1.55;
  font-style: normal;
  overflow-wrap: anywhere;
}
.ms-footer-directory-item strong,
.ms-footer-directory-item dt {
  color: #e2e8f0;
  font-size: 13px;
  font-weight: 700;
}
.ms-footer-directory-item dd { min-width: 0; margin: 0; }
.ms-footer-directory-item a { color: #bfdbfe; text-decoration: underline; text-decoration-color: rgba(191, 219, 254, 0.45); text-underline-offset: 3px; }

.ms-footer-bottom {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  gap: 24px;
  align-items: center;
  padding: 24px 0;
}
.ms-footer-bottom p { margin: 0; color: #94a3b8; font-size: 13px; text-align: center; }
.ms-footer-social { display: flex; gap: 16px; flex-wrap: wrap; }
.ms-footer-social a, .ms-footer-social span { font-size: 13px; }
.ms-footer-social span { color: #94a3b8; }
.ms-footer-bottom nav { justify-self: end; }
.ms-footer-bottom nav .ms-footer-menu { display: flex; justify-content: flex-end; gap: 16px; flex-wrap: wrap; }
.ms-footer-bottom nav .ms-footer-menu a { font-size: 13px; }

/* The 0822 brief asks for persistent contact access without inventing social
   accounts. Only the contact form, sales email and configured networks render. */
.ms-contact-rail {
  position: fixed;
  right: 24px;
  bottom: 92px;
  z-index: 39;
  display: grid;
  gap: 8px;
}
.ms-contact-rail a {
  position: relative;
  display: grid;
  place-items: center;
  width: 46px;
  height: 46px;
  border: 1px solid rgba(15, 23, 42, 0.12);
  border-radius: var(--ms-radius);
  background: #ffffff;
  color: #1e40af;
  box-shadow: 0 8px 24px rgba(15, 23, 42, 0.15);
  text-decoration: none;
  transition: transform var(--ms-transition), border-color var(--ms-transition), color var(--ms-transition);
}
.ms-contact-rail a:hover {
  transform: translateY(-2px);
  border-color: #3b82f6;
  color: #1d4ed8;
}
.ms-contact-rail a:focus-visible {
  outline: 3px solid #60a5fa;
  outline-offset: 3px;
}
.ms-contact-rail svg {
  width: 21px;
  height: 21px;
  fill: none;
  stroke: currentColor;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.ms-contact-rail span { font-size: 14px; font-weight: 800; }
.ms-contact-rail a::after {
  content: attr(data-ms-contact-label);
  position: absolute;
  top: 50%;
  right: calc(100% + 10px);
  padding: 6px 9px;
  border-radius: 4px;
  background: #0f172a;
  color: #ffffff;
  font-size: 12px;
  font-weight: 700;
  line-height: 1;
  white-space: nowrap;
  opacity: 0;
  pointer-events: none;
  transform: translate3d(4px, -50%, 0);
  transition: opacity var(--ms-transition), transform var(--ms-transition);
}
.ms-contact-rail a:hover::after,
.ms-contact-rail a:focus-visible::after {
  opacity: 1;
  transform: translate3d(0, -50%, 0);
}

.ms-request-received {
  min-height: min(68vh, 680px);
  display: grid;
  align-items: center;
  background: var(--ms-soft);
}
.ms-request-received-panel {
  max-width: 760px;
  margin: 0 auto;
  padding: 56px 0;
  text-align: center;
}
.ms-request-received-panel h1 {
  margin: 0 0 18px;
  color: var(--ms-text);
  font-size: 44px;
  line-height: 1.12;
}
.ms-request-received-panel > p:not(.ms-eyebrow) {
  max-width: 600px;
  margin: 0 auto;
  color: var(--ms-text-light);
  font-size: 18px;
  line-height: 1.7;
}
.ms-request-received-panel .ms-actions { justify-content: center; margin-top: 30px; }

/* 0822 client-owned resource pages share one restrained editorial shell. */
.ms-client-page-hero {
  padding: 64px 0 56px;
  border-bottom: 1px solid var(--ms-line);
  background: #f8fafc;
}
.ms-client-page-hero .ms-eyebrow { margin-bottom: 14px; }
.ms-client-page-hero h1 {
  max-width: 1040px;
  margin: 0;
  color: var(--ms-text);
  font-size: 48px;
  line-height: 1.12;
  text-wrap: balance;
  overflow-wrap: anywhere;
}
.ms-client-page-hero h1 + p {
  max-width: 760px;
  margin: 20px 0 0;
  color: var(--ms-text-light);
  font-size: 18px;
  line-height: 1.7;
}
.ms-client-page-content { padding: 68px 0 88px; }
.ms-client-page-layout {
  display: grid;
  grid-template-columns: minmax(190px, 240px) minmax(0, 860px);
  gap: 64px;
  justify-content: center;
  align-items: start;
}
.ms-client-page-layout.has-no-toc { grid-template-columns: minmax(0, 860px); }
.ms-client-page-toc {
  position: sticky;
  top: calc(var(--ms-header-h) + 28px);
  min-width: 0;
}
.ms-client-page-toc .ms-article-toc {
  margin: 0;
  padding: 0 0 0 18px;
  border: 0;
  border-left: 2px solid var(--ms-line);
  border-radius: 0;
  background: transparent;
}
.ms-client-page-toc .ms-article-toc summary {
  min-height: 44px;
  padding: 10px 0;
  color: var(--ms-text);
}
.ms-client-page-toc .ms-article-toc ol { max-height: calc(100vh - 190px); overflow-y: auto; padding-right: 8px; }
.ms-client-page-toc .ms-article-toc a { font-size: 13px; line-height: 1.45; }
.ms-client-page-body { min-width: 0; color: var(--ms-text-light); font-size: 17px; line-height: 1.8; }
.ms-client-page-body > :first-child { margin-top: 0; }
.ms-client-page-body p { margin: 0 0 1.35em; }
.ms-client-page-body ul,
.ms-client-page-body ol { margin: 0 0 1.5em; padding-left: 1.35em; }
.ms-client-page-body li + li { margin-top: 0.45em; }
.ms-client-page-body h2,
.ms-client-page-body h3,
.ms-client-page-body h4,
.ms-client-page-body h5 {
  color: var(--ms-text);
  scroll-margin-top: calc(var(--ms-header-h) + 28px);
  text-wrap: pretty;
}
.ms-client-page-body h2 { margin: 2.15em 0 0.72em; font-size: 30px; line-height: 1.25; }
.ms-client-page-body h3 { margin: 1.8em 0 0.65em; font-size: 23px; line-height: 1.34; }
.ms-client-page-body h4 { margin: 1.55em 0 0.58em; font-size: 19px; line-height: 1.4; }
.ms-client-page-body h5 { margin: 1.4em 0 0.5em; font-size: 16px; line-height: 1.45; }
.ms-client-page-body a { color: var(--ms-primary); text-underline-offset: 3px; }
.ms-client-page-body a:focus-visible { outline: 3px solid var(--ms-primary-light); outline-offset: 3px; }
.ms-client-page-action { margin-top: 30px; }
.ms-client-page-body .ms-client-page-action .ms-btn {
  max-width: 100%;
  color: #ffffff;
  text-align: center;
  text-decoration: none;
  white-space: normal;
}
.ms-client-page-body .ms-client-page-action .ms-btn:hover { color: #ffffff; text-decoration: none; }
.ms-client-page-body .ms-table-scroll {
  max-width: 100%;
  margin: 32px 0;
  overflow-x: auto;
  border: 1px solid var(--ms-line);
  border-radius: var(--ms-radius);
  background: #ffffff;
}
.ms-client-page-body table { width: 100%; min-width: 760px; border-collapse: collapse; }
.ms-client-page-body th,
.ms-client-page-body td { padding: 14px 16px; border-bottom: 1px solid var(--ms-line); text-align: left; vertical-align: top; }
.ms-client-page-body th { background: var(--ms-soft); color: var(--ms-text); font-size: 14px; }
.ms-client-page-body tr:last-child td { border-bottom: 0; }

.ms-client-map,
.ms-selection-hero { margin: 40px 0 52px; }
.ms-client-map img,
.ms-selection-hero img {
  display: block;
  width: 100%;
  height: auto;
  border: 1px solid var(--ms-line);
  border-radius: var(--ms-radius);
  background: var(--ms-soft);
}
.ms-client-map figcaption,
.ms-selection-hero figcaption { margin-top: 10px; color: var(--ms-muted); font-size: 13px; line-height: 1.5; }

.ms-partner-strip { margin: 56px 0 12px; }
.ms-partner-strip h2 { margin-top: 0; }
.ms-partner-strip-track {
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: minmax(170px, 0.3fr);
  gap: 16px;
  max-width: 100%;
  padding: 2px 2px 16px;
  overflow-x: auto;
  overscroll-behavior-inline: contain;
  scroll-snap-type: inline proximity;
  scrollbar-width: thin;
}
.ms-partner-strip-item {
  position: relative;
  display: grid;
  place-items: center;
  min-height: 112px;
  padding: 18px;
  border: 1px solid var(--ms-line);
  border-radius: var(--ms-radius);
  background: #ffffff;
  scroll-snap-align: start;
}
.ms-partner-strip-item img { display: block; width: 100%; height: 70px; object-fit: contain; }

.ms-certificate-summary,
.ms-certificate-gallery,
.ms-patent-portfolio { margin: 48px 0; }
.ms-certificate-summary-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 20px;
}
.ms-certificate-summary-card {
  display: grid;
  grid-template-rows: 92px auto;
  gap: 14px;
  min-width: 0;
  padding: 20px;
  border: 1px solid var(--ms-line);
  border-radius: var(--ms-radius);
  background: #ffffff;
}
.ms-certificate-summary-card img { width: 100%; height: 92px; object-fit: contain; }
.ms-certificate-summary-card h3 { margin: 0; font-size: 17px; }
.ms-certificate-group + .ms-certificate-group { margin-top: 52px; }
.ms-certificate-document-grid,
.ms-patent-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 24px;
}
.ms-certificate-document-grid figure,
.ms-patent-grid figure { min-width: 0; margin: 0; }
.ms-certificate-document-grid a,
.ms-patent-grid a {
  display: block;
  border: 1px solid var(--ms-line);
  border-radius: var(--ms-radius);
  background: var(--ms-soft);
  overflow: hidden;
}
.ms-certificate-document-grid img,
.ms-patent-grid img { display: block; width: 100%; height: 320px; object-fit: contain; background: #f8fafc; }
.ms-certificate-document-grid figcaption,
.ms-patent-grid figcaption { margin-top: 10px; color: var(--ms-muted); font-size: 13px; line-height: 1.5; }
.ms-patent-list { margin: 0 0 40px; padding: 0; list-style: none; border-top: 1px solid var(--ms-line); }
.ms-patent-list li { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 24px; padding: 16px 0; border-bottom: 1px solid var(--ms-line); }
.ms-patent-list strong { color: var(--ms-text); }
.ms-patent-list span { color: var(--ms-muted); font-size: 14px; }

/* ============================================================
   Image placeholder (pending final assets)
   ============================================================ */
.ms-ph {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 6px;
  width: 100%;
  aspect-ratio: 16 / 10;
  padding: 14px;
  border: 2px dashed #cbd5e1;
  border-radius: var(--ms-radius);
  background: repeating-linear-gradient(45deg, #f8fafc, #f8fafc 14px, #f1f5f9 14px, #f1f5f9 28px);
  color: var(--ms-muted);
  font-size: 13px;
  font-weight: 600;
  line-height: 1.4;
  text-align: center;
  text-transform: none;
  letter-spacing: 0;
}
.ms-ph::before {
  content: '';
  width: 40px;
  height: 30px;
  border: 2px solid #94a3b8;
  border-radius: 4px;
  background:
    radial-gradient(circle 4px at 11px 9px, #94a3b8 4px, transparent 5px),
    linear-gradient(45deg, transparent 12px, #94a3b8 13px, transparent 22px) 0 8px / 100% 100% no-repeat;
}
.ms-ph small { font-weight: 500; font-size: 11px; color: #94a3b8; }
.ms-link-grid a .ms-ph {
  margin-bottom: 18px;
  color: var(--ms-muted);
  font-size: 13px;
  font-weight: 600;
  text-transform: none;
  letter-spacing: 0;
}
.ms-card-image.ms-ph { border-radius: var(--ms-radius-lg) var(--ms-radius-lg) 0 0; border-bottom-width: 2px; }

/* Product-category card image (real photo in place of placeholder) */
.ms-link-grid a .ms-cat-media {
  margin-bottom: 18px;
  width: 100%;
  aspect-ratio: 16 / 10;
  border-radius: var(--ms-radius);
  overflow: hidden;
  background: var(--ms-primary-extra-light);
  display: block;
}
.ms-cat-media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform var(--ms-transition);
}
.ms-link-grid a:hover .ms-cat-media img { transform: scale(1.04); }
.ms-dark .ms-ph {
  border-color: rgba(255, 255, 255, 0.3);
  background: repeating-linear-gradient(45deg, rgba(255,255,255,.05), rgba(255,255,255,.05) 14px, rgba(255,255,255,.09) 14px, rgba(255,255,255,.09) 28px);
  color: #cbd5e1;
}

/* ============================================================
   Back to top
   ============================================================ */
.ms-back-to-top {
  position: fixed;
  right: 24px;
  bottom: 24px;
  width: 52px;
  height: 52px;
  border-radius: 50%;
  background: #111827;
  color: #ffffff;
  border: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 6px 20px rgba(0, 0, 0, 0.18);
  opacity: 0;
  visibility: hidden;
  transform: translateY(12px);
  transition: opacity 0.25s, visibility 0.25s, transform 0.25s, background 0.2s;
  z-index: 40;
}
.ms-back-to-top.is-visible { opacity: 1; visibility: visible; transform: translateY(0); }
.ms-back-to-top:hover { background: #000000; transform: translateY(-2px); box-shadow: 0 8px 24px rgba(0, 0, 0, 0.25); }
.ms-back-to-top svg { display: block; width: 22px; height: 22px; }

/* ============================================================
   Focus visibility
   ============================================================ */
.ms-btn:focus-visible,
.ms-menu-toggle:focus-visible,
.ms-menu-list a:focus-visible,
.ms-submenu-toggle:focus-visible,
.ms-nav-link:focus-visible,
.ms-nav-cta:focus-visible,
.ms-product-filter a:focus-visible,
.ms-back-to-top:focus-visible {
  outline: 3px solid var(--ms-primary);
  outline-offset: 3px;
}
.ms-footer-cta .ms-btn:focus-visible,
.ms-footer a:focus-visible { outline: 3px solid #60a5fa; outline-offset: 3px; }

@media (hover: none) {
  .ms-btn:hover, .ms-nav-cta:hover { transform: none; }
}

/* ============================================================
   Products archive (redesigned)
   ============================================================ */
.ms-products-hero {
  background: linear-gradient(135deg, #0f172a 0%, #1e3a8a 40%, #1e40af 70%, #2563eb 100%);
  color: #ffffff;
  padding: 72px 0 64px;
  position: relative;
  overflow: hidden;
}
.ms-products-hero::before {
  content: '';
  position: absolute;
  inset: 0;
  background-image:
    radial-gradient(ellipse at 80% 20%, rgba(59, 130, 246, 0.2) 0%, transparent 60%),
    radial-gradient(ellipse at 20% 80%, rgba(30, 64, 175, 0.3) 0%, transparent 50%);
  pointer-events: none;
}
.ms-products-hero::after {
  content: '';
  position: absolute;
  inset: 0;
  background-image: url("data:image/svg+xml,%3Csvg width='40' height='40' viewBox='0 0 40 40' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cg fill='%23ffffff' fill-opacity='.03'%3E%3Cpath d='M0 40L40 0H20L0 20M40 40V20L20 40'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");
  pointer-events: none;
}
.ms-products-hero .ms-container { position: relative; z-index: 1; }
.ms-products-hero h1 {
  font-size: clamp(34px, 4vw, 52px);
  line-height: 1.08;
  margin: 0 0 20px;
  font-weight: 800;
  letter-spacing: -0.02em;
  max-width: 800px;
}
.ms-products-hero .ms-lead {
  color: #bfdbfe;
  font-size: 17px;
  line-height: 1.7;
  max-width: 680px;
  margin: 0;
}
.ms-products-hero .ms-eyebrow {
  background: rgba(255, 255, 255, 0.12);
  color: #93c5fd;
  margin-bottom: 20px;
}

.ms-products-filter {
  background: #ffffff;
  border-bottom: 1px solid var(--ms-line);
  position: sticky;
  top: 72px;
  z-index: 50;
}
body.admin-bar .ms-products-filter { top: 104px; }
.ms-products-filter .ms-container {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  padding-top: 16px;
  padding-bottom: 16px;
}
.ms-products-filter a {
  border: 1px solid var(--ms-line);
  background: var(--ms-white);
  color: var(--ms-text-light);
  text-decoration: none;
  border-radius: 6px;
  padding: 8px 16px;
  font-size: 13px;
  font-weight: 600;
  transition: all 0.2s ease;
}
.ms-products-filter a.is-active,
.ms-products-filter a:hover {
  background: var(--ms-primary);
  border-color: var(--ms-primary);
  color: #ffffff;
}

.ms-products-category-intro {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(260px, 0.72fr);
  align-items: stretch;
  margin: 0 0 32px;
  overflow: hidden;
  border-top: 1px solid var(--ms-line);
  border-bottom: 1px solid var(--ms-line);
  background: var(--ms-soft);
}
.ms-products-category-intro.has-no-media { grid-template-columns: minmax(0, 1fr); }
.ms-products-category-copy { align-self: center; padding: 34px 36px; }
.ms-products-category-kicker {
  margin: 0 0 10px;
  color: var(--ms-primary);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0;
  text-transform: uppercase;
}
.ms-products-category-intro h2 {
  margin: 0 0 12px;
  color: var(--ms-text);
  font-size: 30px;
  font-weight: 760;
  line-height: 1.2;
}
.ms-products-intro-description {
  max-width: 680px;
  margin: 0;
  color: var(--ms-text-light);
  font-size: 15px;
  line-height: 1.65;
}
.ms-products-intro-description > :first-child { margin-top: 0; }
.ms-products-intro-description > :last-child { margin-bottom: 0; }
.ms-products-category-count {
  display: flex;
  gap: 10px;
  align-items: baseline;
  margin: 22px 0 0;
  color: var(--ms-text-light);
}
.ms-products-category-count strong { color: var(--ms-primary-dark); font-size: 28px; line-height: 1; }
.ms-products-category-count span { font-size: 13px; font-weight: 700; }
.ms-products-category-media { min-width: 0; margin: 0; overflow: hidden; background: var(--ms-line); }
.ms-products-category-media img {
  width: 100%;
  height: 100%;
  min-height: 100%;
  aspect-ratio: 16 / 10;
  object-fit: cover;
}
.ms-products-category-intro + .ms-products-list { padding-top: 0; }

.ms-products-list {
  display: grid;
  gap: 28px;
  padding: 32px 0 64px;
}

.ms-product-card {
  display: grid;
  grid-template-columns: 360px 1fr;
  gap: 0;
  background: var(--ms-white);
  border: 1px solid var(--ms-line);
  border-radius: var(--ms-radius-lg);
  overflow: hidden;
  transition: border-color 0.25s ease, box-shadow 0.25s ease;
}
.ms-product-card:hover {
  border-color: var(--ms-primary-light);
  box-shadow: 0 8px 30px rgba(30, 64, 175, 0.08);
}
.ms-product-card-media {
  position: relative;
  min-height: 240px;
  background: var(--ms-primary-extra-light);
  overflow: hidden;
}
.ms-product-card-media a {
  display: block;
  width: 100%;
  height: 100%;
}
.ms-product-card-media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.4s ease;
}
.ms-product-card:hover .ms-product-card-media img {
  transform: scale(1.04);
}
.ms-product-card-media .ms-ph {
  height: 100%;
  min-height: 240px;
  border: 0;
  border-radius: 0;
}
.ms-product-card-body {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  padding: 28px 32px;
  gap: 20px;
}
.ms-product-card-cat {
  display: inline-block;
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--ms-primary);
  background: var(--ms-primary-extra-light);
  padding: 4px 10px;
  border-radius: 4px;
  margin: 0 0 10px;
}
.ms-product-card-body h3 {
  font-size: 22px;
  line-height: 1.25;
  margin: 0 0 10px;
  font-weight: 700;
  color: var(--ms-text);
}
.ms-product-card-body h3 a { text-decoration: none; }
.ms-product-card-body h3 a:hover { color: var(--ms-primary); }
.ms-product-card-desc {
  color: var(--ms-text-light);
  font-size: 15px;
  line-height: 1.6;
  margin: 0 0 16px;
}
.ms-product-card-specs {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 4px 24px;
  margin: 0;
}
.ms-product-card-specs div {
  display: flex;
  gap: 4px;
  font-size: 13px;
  line-height: 1.5;
  padding: 4px 0;
  border-bottom: 1px solid var(--ms-line);
}
.ms-product-card-specs dt {
  color: var(--ms-muted);
  font-weight: 500;
  flex-shrink: 0;
}
.ms-product-card-specs dt::after { content: ':'; }
.ms-product-card-specs dd {
  color: var(--ms-text);
  font-weight: 600;
  margin: 0;
}
.ms-product-card-footer {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 14px;
}
.ms-product-card-tags {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  align-items: flex-start;
  width: 100%;
}
.ms-product-card-tags span {
  font-size: 11px;
  font-weight: 600;
  line-height: 1.35;
  color: var(--ms-text-light);
  background: var(--ms-soft);
  border: 1px solid var(--ms-line);
  border-radius: 12px;
  padding: 4px 10px;
  white-space: normal;
}
.ms-product-card-footer .ms-btn {
  flex-shrink: 0;
  align-self: flex-end;
}

.ms-products-empty {
  text-align: center;
  padding: 80px 0;
  color: var(--ms-muted);
  font-size: 16px;
}

/* Product archive hierarchy: a durable directory beside the product list. */
.ms-products-content { background: #f8fafc; }
.ms-products-layout {
  display: grid;
  grid-template-columns: minmax(250px, 292px) minmax(0, 1fr);
  gap: clamp(32px, 4vw, 58px);
  align-items: start;
  padding-top: 48px;
  padding-bottom: 72px;
}
.ms-products-sidebar {
  position: sticky;
  top: 96px;
  min-width: 0;
}
body.admin-bar .ms-products-sidebar { top: 128px; }
.ms-products-directory {
  overflow: hidden;
  background: var(--ms-white);
  border: 1px solid var(--ms-line);
  border-radius: var(--ms-radius-lg);
  box-shadow: var(--ms-shadow-sm);
}
.ms-products-directory-title {
  margin: 0;
  padding: 20px 22px 16px;
  color: var(--ms-white);
  background: var(--ms-primary);
  font-size: 18px;
  line-height: 1.3;
}
.ms-products-directory-list,
.ms-products-directory-products {
  margin: 0;
  padding: 0;
  list-style: none;
}
.ms-products-directory-list a {
  display: block;
  color: var(--ms-text);
  text-decoration: none;
  transition: color var(--ms-transition), background-color var(--ms-transition), box-shadow var(--ms-transition);
}
.ms-products-directory-all > a,
.ms-products-directory-group-link {
  padding: 13px 20px;
  font-size: 14px;
  font-weight: 750;
  line-height: 1.4;
}
.ms-products-directory-all {
  border-bottom: 1px solid var(--ms-line);
}
.ms-products-directory-group {
  border-bottom: 1px solid var(--ms-line);
}
.ms-products-directory-group:last-child { border-bottom: 0; }
.ms-products-directory-group-link {
  position: relative;
  padding-left: 24px;
}
.ms-products-directory-group-link::before {
  content: '';
  position: absolute;
  top: 50%;
  left: 12px;
  width: 4px;
  height: 16px;
  border-radius: 999px;
  background: var(--ms-line-strong, #94a3b8);
  transform: translateY(-50%);
}
.ms-products-directory-products {
  padding: 0 14px 12px;
}
.ms-products-directory-products a {
  display: flex;
  min-height: 44px;
  align-items: center;
  padding: 7px 10px 7px 22px;
  border-radius: 6px;
  color: var(--ms-text-light);
  font-size: 13px;
  line-height: 1.35;
}
.ms-products-directory-products a::before {
  content: '–';
  display: inline-block;
  width: 14px;
  margin-left: -14px;
  color: var(--ms-line-strong, #94a3b8);
}
.ms-products-directory a:hover,
.ms-products-directory a:focus-visible {
  color: var(--ms-primary);
  background: var(--ms-primary-extra-light);
}
.ms-products-directory .is-active > a,
.ms-products-directory .is-current-ancestor > .ms-products-directory-group-link {
  color: var(--ms-primary);
  background: var(--ms-primary-extra-light);
}
.ms-products-directory .is-current-ancestor > .ms-products-directory-group-link::before {
  background: var(--ms-primary);
}
.ms-products-directory .is-active > a { font-weight: 800; }
.ms-products-main {
  min-width: 0;
  scroll-margin-top: 116px;
}
.ms-products-conversion {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 32px;
  align-items: center;
  margin-top: 40px;
  padding: 30px 0;
  border-top: 1px solid var(--ms-line);
  border-bottom: 1px solid var(--ms-line);
}
.ms-products-conversion h2 {
  margin: 0 0 8px;
  font-size: 24px;
  line-height: 1.25;
  color: var(--ms-text);
}
.ms-products-conversion p { margin: 0; color: var(--ms-text-light); line-height: 1.6; }
.ms-products-conversion .ms-actions { margin-top: 0; justify-content: flex-end; }
.ms-products-main .ms-products-list { padding-bottom: 0; }
.ms-product-card[data-product-anchor] {
  scroll-margin-top: 116px;
}
.ms-product-card[data-product-anchor]:target {
  border-color: rgba(18, 83, 164, 0.42);
  box-shadow: 0 0 0 4px rgba(18, 83, 164, 0.1), var(--ms-shadow-md);
}

.ms-products-cta {
  background: var(--ms-primary);
  color: #ffffff;
  padding: 64px 0;
  text-align: center;
}
.ms-products-cta h2 {
  font-size: clamp(26px, 3vw, 36px);
  margin: 0 0 16px;
  color: #ffffff;
  font-weight: 800;
  letter-spacing: -0.02em;
}
.ms-products-cta p {
  max-width: 700px;
  margin: 0 auto 8px;
  color: #bfdbfe;
  font-size: 16px;
  line-height: 1.7;
}

@media (max-width: 980px) {
  .ms-products-layout {
    grid-template-columns: minmax(0, 1fr);
    gap: 28px;
    padding-top: 32px;
  }
  .ms-products-sidebar {
    position: static;
  }
  .ms-products-directory-list {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .ms-products-directory-all {
    grid-column: 1 / -1;
  }
  .ms-products-directory-group {
    border-right: 1px solid var(--ms-line);
  }
  .ms-products-directory-group:nth-child(odd) { border-right: 0; }
}

@media (max-width: 640px) {
  .ms-products-layout { padding-top: 22px; padding-bottom: 52px; }
  .ms-products-directory-list { grid-template-columns: minmax(0, 1fr); }
  .ms-products-directory-group { border-right: 0; }
  .ms-products-directory-title { padding: 17px 18px 14px; }
  .ms-products-directory-all > a,
  .ms-products-directory-group-link { padding-left: 18px; }
}

/* ============================================================
   Tablet: 641px �?1180px
   ============================================================ */
@media (max-width: 1180.98px) {
  .ms-container { padding: 0 24px; }

  /* Header collapses to hamburger + dropdown panel */
  body { padding-top: var(--ms-header-h); }
  body.admin-bar { padding-top: calc(var(--ms-header-h) + 32px); }
  .ms-header-inner { min-height: var(--ms-header-h); }
  .ms-brand-logo-img { height: 48px; }
  .custom-logo { height: 52px !important; }
  .ms-menu-toggle { display: grid; place-items: center; }
  .ms-nav {
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    background: var(--ms-white);
    flex-direction: column;
    align-items: stretch;
    padding: 16px 24px 24px;
    gap: 16px;
    border-bottom: 1px solid var(--ms-line);
    box-shadow: var(--ms-shadow-lg);
    display: none;
    max-height: calc(100vh - var(--ms-header-h));
    max-height: calc(100dvh - var(--ms-header-h));
    overflow-y: auto;
  }
  .ms-nav.is-open { display: flex; }
  .ms-nav-main { width: 100%; }
  .ms-menu-list { flex-direction: column; align-items: stretch; gap: 4px; width: 100%; }
  .ms-menu-list a { padding: 12px 16px; font-size: 15px; }
  .ms-menu-list .menu-item-has-children > a { padding-right: 52px; }
  .ms-menu-list .sub-menu {
    display: none;
    margin: 0;
    padding: 4px 0 6px 16px;
    list-style: none;
    border-left: 1px solid var(--ms-line);
  }
  .ms-menu-list .menu-item-has-children.is-expanded > .sub-menu { display: block; }
  .ms-menu-list .sub-menu a {
    padding-top: 10px;
    padding-bottom: 10px;
    color: var(--ms-text-light);
    font-size: 14px;
  }
  .ms-menu-list .sub-menu .menu-item-has-children > a {
    color: var(--ms-text);
    font-weight: 650;
  }
  .ms-menu-list .sub-menu .sub-menu {
    margin-left: 12px;
    padding-left: 14px;
    border-left-color: var(--ms-primary-light);
  }
  .ms-menu-list .ms-products-menu .sub-menu a {
    line-height: 1.4;
    white-space: normal;
  }
  .ms-submenu-toggle {
    position: absolute;
    top: 5px;
    right: 8px;
    display: grid;
    width: 40px;
    height: 40px;
    place-items: center;
    padding: 0;
    color: var(--ms-primary);
    background: var(--ms-primary-extra-light);
    border: 0;
    border-radius: var(--ms-radius);
    cursor: pointer;
  }
  .ms-submenu-toggle::before {
    content: '';
    width: 8px;
    height: 8px;
    border-right: 2px solid currentColor;
    border-bottom: 2px solid currentColor;
    transform: rotate(45deg) translate(-2px, -2px);
    transition: transform var(--ms-transition);
  }
  .ms-submenu-toggle[aria-expanded="true"]::before { transform: rotate(225deg) translate(-2px, -2px); }
  .ms-nav-actions {
    flex-direction: column;
    align-items: stretch;
    width: 100%;
    gap: 12px;
    padding-top: 16px;
    border-top: 1px solid var(--ms-line);
  }
  .ms-search-form { width: 100%; }
  .ms-search-input { width: 100%; padding: 12px 12px 12px 40px; font-size: 15px; }
  .ms-nav-link:not(.ms-nav-sample) { display: block; }
  .ms-nav-link, .ms-nav-sample, .ms-nav-cta {
    display: block;
    text-align: center;
    padding: 12px 16px;
    font-size: 15px;
  }
  body.ms-nav-open { overflow: hidden; }

  /* Layout */
  .ms-hero-grid { min-height: auto; grid-template-columns: 1fr; gap: 36px; padding-top: 48px; padding-bottom: 56px; }
  .ms-hero .ms-media { max-width: 560px; }
  .ms-product-hero h1, .ms-section h1 { font-size: clamp(30px, 4.2vw, 44px); }
  .ms-section h1 { font-size: clamp(28px, 3.8vw, 40px); }
  .ms-two-col { grid-template-columns: 1fr; gap: 40px; }
  .ms-factory-overview-grid { grid-template-columns: minmax(0, 0.72fr) minmax(0, 1.28fr); gap: 32px; }
  .ms-factory-overview .ms-stat-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .ms-story-timeline { grid-template-columns: repeat(9, minmax(165px, 1fr)); }
  .ms-story-timeline li { width: 165px; }

  /* Side-by-side split cards get too narrow for a 0.4fr image column on
     tablet grids �?stack image above text instead. */
  .ms-split-card { grid-template-columns: 1fr; }
  .ms-split-card img { height: auto; min-height: 0; aspect-ratio: 16 / 10; }
  .ms-product-hero .ms-two-col { grid-template-columns: 1fr; }
  .ms-grid-2, .ms-grid-3, .ms-grid-4, .ms-grid-5 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ms-section { padding: 64px 0; }
  .ms-content { padding: 56px 0; }
  .ms-title { margin-bottom: 36px; }
  .ms-page-hero { padding: 48px 0; }
  .ms-product-hero { padding: 46px 0; }
  .ms-product-filter .ms-container { justify-content: flex-start; }
  .ms-products-hero { padding: 56px 0 48px; }
  .ms-products-filter { top: 64px; }
  body.admin-bar .ms-products-filter { top: 96px; }
  .ms-product-card { grid-template-columns: 240px 1fr; }
  .ms-product-card-media { min-height: 200px; }
  .ms-product-card-body { padding: 22px 24px; }
  .ms-product-card-specs { grid-template-columns: 1fr; gap: 2px; }
  .ms-products-cta { padding: 52px 0; }

  .ms-badges { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ms-tight .ms-badge { border-top: 1px solid rgba(255, 255, 255, 0.13); }
  .ms-tight .ms-badge:nth-child(odd) { border-left: 0; }
  .ms-tight .ms-badge:nth-child(-n+2) { border-top: 0; }
  .ms-stat-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }

  .ms-case-list article { grid-template-columns: 1fr; }
  .ms-case-list article:nth-child(even) img { order: 0; }

  .ms-contact-page-layout { grid-template-columns: minmax(0, 1fr); }
  .ms-contact-page-layout > .ms-inquiry-panel { order: -1; }
  .ms-footer-links-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 40px 32px; }
  .ms-footer-company-info { grid-template-columns: minmax(0, 1fr); }
  .ms-footer-directory { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ms-footer-directory-group:first-child { grid-column: 1 / -1; }
  .ms-footer-bottom { grid-template-columns: 1fr; justify-items: start; }
  .ms-footer-bottom p { text-align: left; }
  .ms-footer-bottom nav { justify-self: start; }
  .ms-footer-bottom nav .ms-footer-menu { justify-content: flex-start; }

  /* About page responsive */
  .ms-about-tabs { gap: 0; }
  .ms-about-tabs a { padding: 14px 16px; font-size: 13px; }
  .ms-grid-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ms-placeholder-box { min-height: 120px; }
  .ms-placeholder-card { padding: 28px 20px; }
}

/* ============================================================
   Mobile: up to 640px
   ============================================================ */
@media (max-width: 640px) {
  .ms-container { padding: 0 18px; }
  .ms-nav { padding: 14px 18px 20px; }
  .ms-brand-text { font-size: 16px; max-width: calc(100vw - 140px); }
  .ms-brand-logo-img { height: 44px; }
  .custom-logo { height: 44px !important; }

  .ms-hero-grid { padding-top: 36px; padding-bottom: 44px; gap: 24px; }
  .ms-product-hero h1 { font-size: 28px; line-height: 1.15; margin-bottom: 18px; }
  .ms-section h1 { font-size: 26px; }
  .ms-media { aspect-ratio: 16 / 10; }
  .ms-lead { font-size: 16px; line-height: 1.65; }
  .ms-eyebrow { font-size: 12px; padding: 5px 10px; margin-bottom: 12px; }
  /* Hero mobile styles */
  #ms-hero-seo-heading { font-size: 14px !important; padding: 4px 10px !important; }
  .ms-hero h2.ms-hero-title { font-size: 28px !important; line-height: 1.15 !important; margin-bottom: 18px !important; }
  .ms-section { padding: 44px 0; }

  /* About page mobile */
  .ms-about-tabs a { padding: 12px 14px; font-size: 12px; }
  .ms-grid-4 { grid-template-columns: 1fr; }
  .ms-placeholder-box { min-height: 100px; }
  .ms-placeholder-box span { font-size: 12px; padding: 6px 12px; }
  .ms-placeholder-card { padding: 24px 16px; }
  .ms-placeholder-icon { width: 52px; height: 52px; }
  .ms-placeholder-icon svg { width: 24px; height: 24px; }
  .ms-tight { padding: 36px 0; }
  .ms-content { padding: 40px 0; }
  .ms-title { margin-bottom: 24px; }
  .ms-title h2, .ms-two-col h2 { font-size: 24px; }
  .ms-title p, .ms-two-col p, .ms-prose p, .ms-prose li { font-size: 15px; }

  .ms-grid-2, .ms-grid-3, .ms-grid-4, .ms-grid-5 { grid-template-columns: 1fr; }
  .ms-two-col { gap: 28px; }
  .ms-badges { grid-template-columns: 1fr; }
  .ms-tight .ms-badge { border-left: 0; border-top: 1px solid rgba(255, 255, 255, 0.13); padding: 16px 14px; font-size: 14px; }
  .ms-tight .ms-badge:first-child { border-top: 0; }
  .ms-stat-grid { grid-template-columns: 1fr; }
  .ms-stat-grid > div { padding: 24px 20px; }
  .ms-stat-grid strong { font-size: 28px; }
  .ms-factory-overview-grid { grid-template-columns: 1fr; gap: 24px; }
  .ms-factory-overview .ms-stat-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ms-factory-overview .ms-stat-grid > div { padding: 20px 14px; }
  .ms-factory-overview .ms-stat-grid strong { font-size: clamp(22px, 7vw, 28px); }
  .ms-story-heading { text-align: left; margin-bottom: 28px; }
  .ms-story-heading h2 { font-size: 30px; }
  .ms-story-investment { grid-template-columns: 1fr; margin-bottom: 36px; }
  .ms-story-investment article { padding: 18px 20px; }
  .ms-story-timeline { grid-template-columns: repeat(9, minmax(210px, 1fr)); gap: 16px; padding-top: 40px; }
  .ms-story-timeline li { width: 210px; }

  .ms-card { padding: 22px; }
  .ms-card-image { margin: -22px -22px 18px; }
  .ms-post-card h2,
  .ms-card h3 { font-size: 18px; }
  .ms-link-grid a { min-height: auto; padding: 24px 20px; }
  .ms-split-card { grid-template-columns: 1fr; padding: 14px; gap: 16px; }
  .ms-split-card img { min-height: 0; aspect-ratio: 16 / 10; height: auto; }
  .ms-app-pill { padding: 14px; }

  .ms-actions { flex-direction: column; align-items: stretch; margin-top: 24px; }
  .ms-actions .ms-btn { width: 100%; }

  .ms-page-hero { padding: 36px 0; }
  .ms-page-hero h1 { font-size: 26px; }
  .ms-cta h2 { font-size: 24px; }
  .ms-page-hero p { font-size: 15px; }
  .ms-products-hero { padding: 40px 0 36px; }
  .ms-products-hero h1 { font-size: 26px; }
  .ms-products-hero .ms-lead { font-size: 15px; }
  .ms-products-filter { top: 64px; }
  body.admin-bar .ms-products-filter { top: 64px; }
  .ms-products-filter .ms-container {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 6px;
    padding-top: 14px;
    padding-bottom: 14px;
  }
  .ms-products-filter a {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 8px 10px;
    font-size: 12px;
    text-align: center;
    white-space: normal;
  }
  .ms-products-category-intro { grid-template-columns: minmax(0, 1fr); margin-bottom: 24px; }
  .ms-products-category-copy { padding: 26px 22px; }
  .ms-products-category-intro h2 { font-size: 24px; }
  .ms-products-category-media img { min-height: 0; }
  .ms-products-list { padding: 20px 0 40px; gap: 20px; }
  .ms-product-card { grid-template-columns: 1fr; }
  .ms-product-card-media { min-height: 180px; }
  .ms-product-card-body { padding: 20px; }
  .ms-product-card-body h3 { font-size: 19px; }
  .ms-product-card-specs { grid-template-columns: 1fr; gap: 2px; }
  .ms-product-card-footer { flex-direction: column; align-items: stretch; }
  .ms-product-card-footer .ms-btn { width: 100%; }
  .ms-products-cta { padding: 40px 0; }
  .ms-products-cta h2 { font-size: 22px; }
  .ms-product-filter .ms-container {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px;
    padding-top: 18px;
    padding-bottom: 18px;
  }
  .ms-product-filter a {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 42px;
    padding: 9px 10px;
    white-space: normal;
    text-align: center;
  }

  .ms-product-spec, .ms-product-spec tbody, .ms-product-spec tr,
  .ms-product-spec th, .ms-product-spec td { display: block; width: 100%; }
  .ms-product-spec tr { border: 1px solid var(--ms-line); border-bottom: 0; }
  .ms-product-spec tr:last-child { border-bottom: 1px solid var(--ms-line); }
  .ms-product-spec th, .ms-product-spec td { border: 0; }
  .ms-product-spec th { padding-bottom: 5px; }
  .ms-product-spec td { padding-top: 5px; }

  .ms-inquiry-form { padding: 22px 18px; }
  .ms-inquiry-form input, .ms-inquiry-form select, .ms-inquiry-form textarea { font-size: 16px; }
  .ms-form-grid { grid-template-columns: 1fr; gap: 10px; }

  .ms-cta { padding: 30px 18px; }
  .ms-footer-cta-inner {
    flex-direction: column;
    align-items: flex-start;
    gap: 24px;
    padding-top: 48px;
    padding-bottom: 48px;
  }
  .ms-footer-cta h2 { font-size: 24px; }
  .ms-footer-cta .ms-btn { width: 100%; }

  .ms-footer-links-grid { grid-template-columns: 1fr; padding: 44px 0 32px; gap: 30px; }
  .ms-footer-logos { padding: 28px 0; }
  .ms-footer-logos > div { gap: 20px; }
  .ms-footer-logos img { max-width: 110px; max-height: 46px; }
  .ms-footer-company-info { grid-template-columns: 1fr; padding: 32px 0; gap: 24px; }
  .ms-footer-directory { grid-template-columns: minmax(0, 1fr); gap: 24px; }
  .ms-footer-directory-group:first-child { grid-column: auto; }
  .ms-contact-directory-heading { margin-bottom: 24px; }
  .ms-contact-directory-group,
  .ms-contact-entry { grid-template-columns: minmax(0, 1fr); }
  .ms-contact-directory-group { gap: 16px; padding: 22px 0; }
  .ms-contact-entry { gap: 5px; }
  .ms-footer-bottom { gap: 16px; padding: 22px 0; }

  .ms-back-to-top { right: 16px; bottom: 16px; width: 46px; height: 46px; }
}

@media (prefers-reduced-motion: reduce) {
  .ms-back-to-top { transition: opacity 0.2s, visibility 0.2s; transform: none; }
  .ms-back-to-top.is-visible, .ms-back-to-top:hover { transform: none; }
}

/* WP admin bar is 32px above 782px and 46px below; below 600px it stops
   being fixed, so the sticky header returns to the viewport top. */
body.admin-bar .ms-header { top: 32px; }
@media (max-width: 782px) {
  body.admin-bar { padding-top: calc(var(--ms-header-h) + 46px); }
  body.admin-bar .ms-header { top: 46px; }
}
@media (max-width: 600px) {
  body.admin-bar { padding-top: var(--ms-header-h); }
  body.admin-bar .ms-header { top: 0; }
}


/* ============================================================
   About Us v2.5 — sidebar TOC layout, process flow, doc grids, FAQ
   ============================================================ */
.ms-about-hero-list { list-style: none; margin: 18px 0; padding: 0; display: grid; gap: 12px; }
.ms-about-hero-list li { position: relative; padding-left: 26px; font-size: 15px; line-height: 1.6; color: rgba(255, 255, 255, 0.88); }
.ms-about-hero-list li::before { content: '\2713'; position: absolute; left: 0; top: 0; color: var(--ms-gold, #f59e0b); font-weight: 700; }
.ms-about-hero-list strong { color: #fff; }

.ms-about-layout-inner { display: grid; grid-template-columns: 260px minmax(0, 1fr); gap: 44px; align-items: start; }
.ms-about-sidebar { position: sticky; top: 104px; }
.ms-about-toc {
  position: relative;
  border: 1px solid var(--ms-line);
  border-radius: var(--ms-radius-lg);
  padding: 18px 16px;
  background: var(--ms-soft);
  max-height: none;
  overflow: visible;
  --ms-toc-progress: 0.08;
}
.ms-about-toc::before,
.ms-about-toc::after {
  content: '';
  position: absolute;
  top: -1px;
  bottom: -1px;
  left: -1px;
  width: 3px;
  border-radius: var(--ms-radius-lg) 0 0 var(--ms-radius-lg);
  pointer-events: none;
}
.ms-about-toc::before { background: var(--ms-line); }
.ms-about-toc::after {
  background: var(--ms-primary);
  transform: scaleY(var(--ms-toc-progress));
  transform-origin: top;
  transition: transform 260ms cubic-bezier(.22, 1, .36, 1);
}
.ms-about-toc-title { margin: 0 0 10px; font-size: 12px; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; color: var(--ms-muted); }
.ms-about-toc ul { list-style: none; margin: 0; padding: 0; }
.ms-about-toc > ul > li + li { margin-top: 4px; }
.ms-about-toc > ul > li > a { font-weight: 700; font-size: 14px; }
.ms-about-toc a { display: flex; min-height: 44px; align-items: center; padding: 6px 9px; border-radius: 6px; color: var(--ms-text); text-decoration: none; transition: var(--ms-transition); }
.ms-about-toc ul ul { margin: 2px 0 8px 9px; padding-left: 10px; border-left: 2px solid var(--ms-line); }
.ms-about-toc ul ul a { font-size: 13px; color: var(--ms-text-light); padding: 4px 8px; }
.ms-about-toc a:hover, .ms-about-toc a.active { color: var(--ms-primary); background: var(--ms-primary-extra-light); }

@media (min-width: 1101px) and (max-height: 720px) {
  .ms-about-sidebar { position: static; }
}

.ms-about-main .ms-container { max-width: 100%; padding: 0; }
.ms-about-main .ms-section { padding: 48px 0; }
.ms-about-main .ms-section:first-child { padding-top: 8px; }
.ms-about-main .ms-section-soft { padding: 44px 34px; border-radius: 16px; }
.ms-about-main .ms-title { margin-bottom: 26px; text-align: left; }
.ms-about-main [id] { scroll-margin-top: 120px; }
.ms-about-block + .ms-about-block { margin-top: 44px; padding-top: 38px; border-top: 1px solid var(--ms-line); }
.ms-about-block h3 { font-size: 22px; margin: 0 0 14px; }
.ms-about-block .ms-two-col { gap: 34px; }
.ms-about-subblock { margin-top: 30px; }
.ms-about-subblock h4 { font-size: 16px; margin: 0 0 14px; letter-spacing: 0.02em; }
.ms-anchor-alias { display: block; height: 0; }

.ms-about-block#history {
  padding: 32px 36px 36px;
  border: 1px solid var(--ms-line);
  border-radius: 18px;
  background: linear-gradient(135deg, var(--ms-white) 0%, var(--ms-soft) 58%, var(--ms-primary-extra-light) 100%);
  box-shadow: var(--ms-shadow-lg);
}
.ms-history-heading {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 24px;
  padding-bottom: 22px;
  border-bottom: 1px solid var(--ms-line);
}
.ms-history-heading > div > span {
  display: block;
  margin-bottom: 8px;
  color: var(--ms-primary);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .14em;
  line-height: 1.3;
  text-transform: uppercase;
}
.ms-about-block .ms-history-heading h3 {
  margin: 0;
  font-size: clamp(24px, 3vw, 32px);
  letter-spacing: -.025em;
  line-height: 1.16;
}
.ms-history-heading > p {
  display: flex;
  flex: 0 0 auto;
  gap: 8px;
  margin: 0 0 3px;
  color: var(--ms-muted);
  font-size: 13px;
  font-weight: 750;
  letter-spacing: .08em;
}
/* About history retains the shared story class for markup compatibility; this
   compound selector makes the vertical timeline immune to source reordering. */
.ms-story-timeline.ms-about-history-timeline { min-width: 0; }
.ms-about-history-timeline {
  position: relative;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  column-gap: 72px;
  row-gap: 0;
  overflow: visible;
  margin: 16px 0 0;
  padding: 4px 0 8px;
  list-style: none;
}
.ms-about-history-timeline::before {
  content: '';
  position: absolute;
  top: 24px;
  right: auto;
  bottom: 24px;
  left: 50%;
  width: 2px;
  height: auto;
  background: var(--ms-primary-light);
  opacity: .42;
  transform: translateX(-50%);
}
.ms-about-history-timeline li {
  position: relative;
  display: block;
  width: auto;
  min-height: 0;
  border: 0;
  border-bottom: 0;
}
.ms-about-history-timeline li:last-child { border-bottom: 0; }
.ms-about-history-timeline li:nth-child(odd) {
  grid-column: 1;
  padding: 14px 38px 24px 0;
  text-align: right;
}
.ms-about-history-timeline li:nth-child(even) {
  grid-column: 2;
  padding: 42px 0 4px 38px;
  text-align: left;
}
.ms-about-history-timeline li::before {
  content: '';
  position: absolute;
  top: 50%;
  width: 14px;
  height: 14px;
  border: 3px solid var(--ms-white);
  border-radius: 50%;
  background: var(--ms-primary);
  box-shadow: 0 0 0 5px var(--ms-primary-extra-light);
  transform: translateY(-50%);
}
.ms-about-history-timeline li:nth-child(odd)::before { right: -43px; left: auto; }
.ms-about-history-timeline li:nth-child(even)::before { right: auto; left: -43px; }
.ms-about-history-timeline li::after {
  content: '';
  position: absolute;
  top: 50%;
  width: 36px;
  height: 1px;
  background: var(--ms-primary-light);
  transform: translateY(-50%);
}
.ms-about-history-timeline li:nth-child(odd)::after { right: -36px; left: auto; }
.ms-about-history-timeline li:nth-child(even)::after { right: auto; left: -36px; }
.ms-milestone-entry { display: block; min-height: 0; padding: 0; border: 0; }
.ms-about-history-timeline time {
  display: block;
  color: var(--ms-primary);
  padding: 0;
  font-size: clamp(32px, 3.3vw, 40px);
  font-weight: 800;
  font-variant-numeric: tabular-nums;
  line-height: 1;
  letter-spacing: -.045em;
}
.ms-about-history-timeline .ms-milestone-entry p {
  max-width: 310px;
  margin: 8px 0 0;
  color: var(--ms-text);
  font-size: 16.5px;
  font-weight: 600;
  line-height: 1.5;
}
.ms-about-history-timeline li:nth-child(odd) p { margin-left: auto; }

.ms-about-facts {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  gap: 10px;
}
.ms-about-fact {
  min-width: 0;
  padding: 18px 22px;
  border-top: 1px solid var(--ms-line);
}
.ms-about-fact strong {
  display: block;
  color: var(--ms-primary);
  font-size: clamp(28px, 3.6vw, 44px);
  font-weight: 800;
  font-variant-numeric: tabular-nums;
  line-height: 1;
  letter-spacing: -.035em;
}
.ms-about-fact span { display: block; margin-top: 8px; color: var(--ms-text); font-size: 12.5px; font-weight: 750; letter-spacing: .05em; text-transform: uppercase; }
.ms-about-fact p { margin: 6px 0 0; color: var(--ms-text-light); font-size: 14px; line-height: 1.5; }
.ms-about-fact-foundation {
  grid-column: 1 / 6;
  grid-row: 1 / 3;
  display: flex;
  min-height: 220px;
  flex-direction: column;
  justify-content: flex-end;
  border: 1px solid var(--ms-primary-light);
  border-left: 5px solid var(--ms-primary);
  border-radius: 18px;
  background: linear-gradient(145deg, var(--ms-primary-extra-light), var(--ms-white));
}
.ms-about-fact-foundation strong { color: var(--ms-primary); font-size: clamp(46px, 5.5vw, 66px); }
.ms-about-fact-foundation span { color: var(--ms-text); }
.ms-about-fact-foundation p { color: var(--ms-text-light); }
.ms-about-fact-headquarters { grid-column: 6 / 13; grid-row: 1; background: var(--ms-primary-extra-light); }
.ms-about-fact-people { grid-column: 6 / 13; grid-row: 2; padding-left: 34px; border-left: 4px solid var(--ms-primary-light); }
.ms-about-fact-presence { grid-column: 1 / 5; grid-row: 3; background: var(--ms-soft); }
.ms-about-fact-business { grid-column: 5 / 13; grid-row: 3; }

.ms-factory-ledger { margin: 0; border-top: 1px solid var(--ms-line); border-bottom: 1px solid var(--ms-line); }
.ms-factory-ledger > div {
  display: grid;
  grid-template-columns: minmax(120px, .72fr) minmax(0, 1.28fr);
  align-items: center;
  gap: 18px;
  padding: 17px 8px;
  border-bottom: 1px solid var(--ms-line);
}
.ms-factory-ledger > div:last-child { border-bottom: 0; }
.ms-factory-ledger dt { min-width: 0; }
.ms-factory-ledger strong { color: var(--ms-primary); font-size: clamp(28px, 4vw, 46px); font-weight: 800; font-variant-numeric: tabular-nums; line-height: 1; letter-spacing: -.035em; white-space: nowrap; }
.ms-factory-ledger dd { display: grid; gap: 3px; min-width: 0; margin: 0; }
.ms-factory-ledger span { color: var(--ms-muted); font-size: 11px; font-weight: 800; letter-spacing: .12em; line-height: 1.35; text-transform: uppercase; }
.ms-factory-ledger b { color: var(--ms-text); font-size: 15px; font-weight: 700; line-height: 1.45; }

.ms-factory-operations-grid {
  display: grid;
  grid-template-columns: minmax(280px, .82fr) minmax(0, 1.45fr);
  align-items: start;
  gap: 36px;
}
.ms-factory-operation-panel { min-width: 0; }
.ms-factory-operation-panel > h3 { padding-bottom: 16px; border-bottom: 1px solid var(--ms-line); font-size: 24px; }
.ms-factory-operations-grid .ms-factory-ledger > div { grid-template-columns: 128px minmax(0, 1fr); gap: 18px; padding: 17px 4px; }
.ms-factory-operations-grid .ms-factory-ledger strong { font-size: clamp(31px, 3.25vw, 40px); }
.ms-factory-operations-grid .ms-factory-ledger b { font-size: 15px; }

.ms-video-embed { position: relative; aspect-ratio: 16 / 9; border-radius: var(--ms-radius-lg); overflow: hidden; background: #0f172a; box-shadow: var(--ms-shadow-md); }
.ms-video-embed iframe,
.ms-video-embed video { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.ms-video-embed video { object-fit: contain; background: #0f172a; }
.ms-video-caption { margin: 14px auto 26px; max-width: 720px; text-align: center; color: var(--ms-text-light); font-size: 14.5px; }
.ms-video-link { text-align: center; }

.ms-process-flow {
  position: relative;
  display: block;
  margin: 0;
  padding: 6px 0 0;
  list-style: none;
  --ms-process-progress: 0;
}
.ms-process-flow::before,
.ms-process-flow::after {
  content: '';
  position: absolute;
  top: 31px;
  bottom: 25px;
  left: 38px;
  width: 2px;
  pointer-events: none;
}
.ms-process-flow::before { background: var(--ms-line); }
.ms-process-flow::after {
  background: linear-gradient(180deg, var(--ms-primary-light), var(--ms-primary));
  transform: scaleY(var(--ms-process-progress));
  transform-origin: top;
  transition: transform 180ms linear;
}
.ms-process-flow li {
  position: relative;
  display: grid;
  grid-template-columns: 76px minmax(0, 1fr);
  gap: 22px;
  padding: 0 0 22px;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}
.ms-process-flow li:not(:last-child)::before { display: none; }
.ms-process-flow li::after { display: none; }
.ms-process-step {
  position: relative;
  z-index: 1;
  display: grid;
  width: 76px;
  min-height: 50px;
  place-items: center;
  align-self: start;
  margin: 0;
  border: 1px solid var(--ms-primary-light);
  border-radius: 10px;
  background: var(--ms-white);
  color: var(--ms-primary);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .08em;
  text-transform: uppercase;
  transition: background 240ms ease, border-color 240ms ease, color 240ms ease, box-shadow 240ms ease;
}
.ms-process-flow li.is-motion-active .ms-process-step {
  border-color: var(--ms-primary);
  background: var(--ms-primary);
  color: var(--ms-white);
  box-shadow: 0 0 0 5px var(--ms-primary-extra-light);
}
.ms-process-copy { padding: 3px 0 18px; border-bottom: 1px solid var(--ms-line); }
.ms-process-flow li:last-child { padding-bottom: 0; }
.ms-process-flow li:last-child .ms-process-copy { padding-bottom: 0; border-bottom: 0; }
.ms-process-flow h4 { margin: 0 0 7px; font-size: clamp(20px, 2.15vw, 23px); line-height: 1.34; }
.ms-process-flow p { margin: 0; color: var(--ms-text-light); font-size: 15.5px; line-height: 1.55; }

.ms-innovation-stagger {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  gap: 12px;
  counter-reset: innovation-strength;
}
.ms-innovation-stagger article {
  position: relative;
  min-height: 140px;
  padding: 22px 22px 20px 64px;
  border-top: 1px solid var(--ms-line);
  counter-increment: innovation-strength;
}
.ms-innovation-stagger article::before {
  content: counter(innovation-strength, decimal-leading-zero);
  position: absolute;
  top: 20px;
  left: 20px;
  color: var(--ms-primary-light);
  font-size: 13px;
  font-weight: 800;
  letter-spacing: .08em;
}
.ms-innovation-stagger article:nth-child(1) { grid-column: 1 / 7; background: var(--ms-primary-extra-light); }
.ms-innovation-stagger article:nth-child(2) { grid-column: 7 / 13; margin-top: 28px; border: 1px solid var(--ms-line); border-radius: 14px; background: var(--ms-white); }
.ms-innovation-stagger article:nth-child(3) { grid-column: 2 / 8; background: linear-gradient(135deg, var(--ms-white), var(--ms-soft)); }
.ms-innovation-stagger article:nth-child(4) { grid-column: 8 / 13; margin-top: 18px; border-left: 4px solid var(--ms-primary-light); }
.ms-innovation-stagger h3 { margin: 0 0 8px; font-size: clamp(19px, 2.3vw, 25px); line-height: 1.22; }
.ms-innovation-stagger p { margin: 0; color: var(--ms-text-light); font-size: 14px; line-height: 1.58; }

.ms-doc-grid figure { margin: 0; background: #fff; border: 1px solid var(--ms-line); border-radius: var(--ms-radius-lg); padding: 14px; text-align: center; box-shadow: var(--ms-shadow-sm); transition: var(--ms-transition); }
.ms-doc-grid figure:hover { box-shadow: var(--ms-shadow-md); transform: translateY(-2px); }
.ms-doc-grid a { display: block; }
.ms-doc-grid img { width: 100%; height: 320px; object-fit: contain; background: var(--ms-soft); border-radius: var(--ms-radius); }
.ms-doc-grid figcaption { margin-top: 12px; font-size: 13.5px; font-weight: 600; line-height: 1.45; color: var(--ms-text); }
.ms-doc-note { margin-top: 16px; font-size: 13px; color: var(--ms-muted); }

/* Certifications move continuously as a horizontal display screen. */
#certificates .ms-doc-grid {
  display: flex;
  gap: 20px;
  overflow-x: auto;
  padding: 4px;
  scroll-padding-inline: 4px;
  scroll-snap-type: none;
  scrollbar-width: none;
  -webkit-overflow-scrolling: touch;
}
#certificates .ms-doc-grid figure {
  flex: 0 0 clamp(220px, 27vw, 300px);
  scroll-snap-align: none;
}
#certificates .ms-doc-grid::-webkit-scrollbar { display: none; }

/* Pin about-page media images to their aspect-ratio box so container height
   can never be driven by the image's natural size */
.ms-about-main .ms-media:not(.ms-media-credited) img,
.ms-about-hero .ms-media img { position: absolute; inset: 0; width: 100%; height: 100%; }
.ms-media-credited { aspect-ratio: auto; overflow: visible; background: none; box-shadow: none; }
.ms-media-credited img { width: 100%; height: auto; border-radius: var(--ms-radius-lg); box-shadow: var(--ms-shadow-lg); }
.ms-img-credit { margin: 8px 2px 0; font-size: 12px; color: var(--ms-muted); }
.ms-live-call-question { font-size: 17px; margin: 18px 0 4px; }

.ms-faq-list { display: grid; gap: 12px; }
.ms-faq-item { border: 1px solid var(--ms-line); border-radius: var(--ms-radius-lg); background: #fff; box-shadow: var(--ms-shadow-sm); }
.ms-faq-item summary { cursor: pointer; list-style: none; display: grid; grid-template-columns: 42px minmax(0, 1fr) 20px; align-items: flex-start; gap: 12px; padding: 16px 20px; font-weight: 600; line-height: 1.5; color: var(--ms-text); }
.ms-faq-item summary::-webkit-details-marker { display: none; }
.ms-faq-item summary::after { content: '+'; grid-column: 3; font-size: 21px; line-height: 1; color: var(--ms-primary); transition: transform 0.2s ease; }
.ms-faq-item[open] summary { color: var(--ms-primary); }
.ms-faq-item[open] summary::after { transform: rotate(45deg); }
.ms-faq-item .ms-faq-label { color: var(--ms-primary); font-size: 12px; font-weight: 800; letter-spacing: .1em; line-height: 1.85; white-space: nowrap; }
.ms-faq-item .ms-faq-question { min-width: 0; }
.ms-faq-answer { padding: 0 20px 18px; color: var(--ms-text); font-size: 14.5px; line-height: 1.75; }
.ms-faq-answer p { margin: 0; }
.ms-faq-answer strong { display: block; font-weight: 700; }
.ms-faq-answer .ms-faq-label { display: inline-block; margin-right: 10px; color: var(--ms-text); }

@media (max-width: 1100px) {
  /* block layout (not grid) so the sticky TOC bar can stick across the whole
     page height instead of only inside its own grid row */
  .ms-about-layout-inner { display: block; }
  .ms-about-sidebar { position: sticky; top: var(--ms-header-h); z-index: 90; margin: 0 -24px 8px; }
  .ms-about-toc { max-height: none; overflow-x: auto; overflow-y: hidden; border-radius: 0; border-left: 0; border-right: 0; padding: 6px 16px; background: #fff; box-shadow: var(--ms-shadow-sm); -webkit-overflow-scrolling: touch; scrollbar-width: none; }
  .ms-about-toc::-webkit-scrollbar { display: none; }
  .ms-about-toc::before, .ms-about-toc::after { display: none; }
  .ms-about-toc-title { display: none; }
  .ms-about-toc > ul { display: flex; gap: 2px; }
  .ms-about-toc > ul > li { white-space: nowrap; }
  .ms-about-toc > ul > li + li { margin-top: 0; }
  .ms-about-toc ul ul { display: none; }
  .ms-about-main .ms-section { padding: 40px 0; }
  .ms-about-main [id] { scroll-margin-top: var(--ms-toc-offset); }
  .ms-about-facts { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ms-about-fact-foundation, .ms-about-fact-business { grid-column: 1 / -1; grid-row: auto; }
  .ms-about-fact-headquarters, .ms-about-fact-people, .ms-about-fact-presence { grid-column: auto; grid-row: auto; }
  .ms-about-fact-foundation { min-height: 220px; }
  .ms-about-fact-presence { grid-column: 1 / 2; }
  .ms-about-fact-business { grid-column: 2 / 3; }
  .ms-innovation-stagger { grid-template-columns: repeat(6, minmax(0, 1fr)); }
  .ms-innovation-stagger article:nth-child(1), .ms-innovation-stagger article:nth-child(3) { grid-column: 1 / 4; }
  .ms-innovation-stagger article:nth-child(2), .ms-innovation-stagger article:nth-child(4) { grid-column: 4 / 7; }
  .ms-innovation-stagger article:nth-child(2) { margin-top: 20px; }
  .ms-innovation-stagger article:nth-child(4) { margin-top: 14px; }
}
@media (max-width: 800px) {
  .ms-factory-operations-grid { grid-template-columns: 1fr; gap: 34px; }
  .ms-factory-operations-grid .ms-factory-ledger > div { grid-template-columns: minmax(116px, .55fr) minmax(0, 1.45fr); gap: 18px; }
}
@media (max-width: 640px) {
  .ms-about-sidebar { margin-left: -18px; margin-right: -18px; }
  .ms-about-main .ms-section-soft { padding: 28px 18px; }
  .ms-doc-grid img { height: 230px; }
  #certificates .ms-doc-grid figure { flex-basis: min(78vw, 280px); }
  .ms-about-block + .ms-about-block { margin-top: 34px; padding-top: 30px; }
  .ms-about-block#history { padding: 24px 18px 22px; }
  .ms-history-heading { display: block; padding-bottom: 18px; }
  .ms-history-heading > p { margin-top: 12px; }
  .ms-about-history-timeline { grid-template-columns: 1fr; margin-top: 12px; padding-left: 48px; }
  .ms-about-history-timeline::before { top: 28px; bottom: 28px; left: 14px; transform: none; }
  .ms-about-history-timeline li, .ms-about-history-timeline li:nth-child(odd), .ms-about-history-timeline li:nth-child(even) { grid-column: 1; width: 100%; padding: 14px 0 16px; text-align: left; }
  .ms-about-history-timeline li:nth-child(odd)::before, .ms-about-history-timeline li:nth-child(even)::before { top: 30px; right: auto; left: -41px; }
  .ms-about-history-timeline li:nth-child(odd)::after, .ms-about-history-timeline li:nth-child(even)::after { top: 30px; right: auto; left: -34px; width: 34px; }
  .ms-about-history-timeline li:nth-child(odd) p { margin-left: 0; }
  .ms-about-history-timeline .ms-milestone-entry { display: grid; grid-template-columns: 76px minmax(0, 1fr); align-items: start; gap: 12px; }
  .ms-about-history-timeline time { font-size: 28px; }
  .ms-about-history-timeline .ms-milestone-entry p { max-width: none; margin-top: 3px; font-size: 16px; line-height: 1.48; }
  .ms-about-facts { grid-template-columns: 1fr; }
  .ms-about-fact, .ms-about-fact-foundation, .ms-about-fact-headquarters, .ms-about-fact-people, .ms-about-fact-presence, .ms-about-fact-business { grid-column: 1; grid-row: auto; min-height: 0; }
  .ms-about-fact-foundation { min-height: 176px; }
  .ms-factory-ledger > div, .ms-factory-operations-grid .ms-factory-ledger > div { grid-template-columns: 112px minmax(0, 1fr); gap: 16px; padding: 17px 0; }
  .ms-factory-ledger strong, .ms-factory-operations-grid .ms-factory-ledger strong { font-size: clamp(30px, 8.5vw, 35px); }
  .ms-factory-ledger b, .ms-factory-operations-grid .ms-factory-ledger b { font-size: 15px; }
  .ms-process-flow li { grid-template-columns: 56px minmax(0, 1fr); gap: 16px; }
  .ms-process-flow::before, .ms-process-flow::after { left: 28px; }
  .ms-process-step { width: 56px; min-height: 48px; font-size: 10.5px; }
  .ms-innovation-stagger { grid-template-columns: 1fr; }
  .ms-innovation-stagger article:nth-child(n) { grid-column: 1; min-height: 0; margin-top: 0; }
  .ms-innovation-stagger article:nth-child(even) { margin-left: 0; }
}

/* Factory Tour reuses the About registry but expands it into full-width,
   unframed evidence bands for buyers reviewing production capability. */
.ms-factory-tour-hero {
  position: relative;
  isolation: isolate;
  display: grid;
  min-height: clamp(480px, 68vh, 680px);
  padding: 0;
  overflow: hidden;
}
.ms-factory-tour-hero::after {
  content: '';
  position: absolute;
  z-index: -1;
  inset: 0;
  background: linear-gradient(90deg, rgba(5, 5, 5, .86) 0%, rgba(5, 5, 5, .64) 48%, rgba(5, 5, 5, .2) 100%);
  pointer-events: none;
}
.ms-factory-tour-hero-media {
  position: absolute;
  z-index: -2;
  inset: 0;
}
.ms-factory-tour-hero-media img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.ms-factory-tour-hero > .ms-container {
  display: flex;
  width: 100%;
  align-items: flex-end;
  padding-top: clamp(90px, 12vw, 150px);
  padding-bottom: clamp(56px, 8vw, 96px);
}
.ms-factory-tour-hero-copy { max-width: 780px; }
.ms-factory-tour-hero-lead {
  max-width: 680px;
  margin: 0;
  font-size: 18px;
  line-height: 1.7;
}
.ms-factory-tour-hero-copy .ms-actions { margin-top: 28px; }
.ms-factory-tour-video .ms-video-embed {
  max-width: 1040px;
  margin-inline: auto;
}
.ms-factory-tour-video,
.ms-factory-tour-key-stats,
.ms-factory-tour-process,
.ms-factory-tour-quality,
.ms-factory-tour-warehousing { scroll-margin-top: 96px; }
.ms-factory-tour-video .ms-video-caption { margin-bottom: 0; }
.ms-factory-tour-stats {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  border-radius: 0;
}
.ms-factory-tour-stats > div { padding: clamp(24px, 3vw, 38px) clamp(16px, 2.4vw, 30px); }
.ms-factory-tour-stats strong { letter-spacing: 0; }
.ms-factory-process-media { padding-top: 0; }
.ms-factory-process-media li {
  grid-template-columns: 76px minmax(0, 1fr);
  gap: clamp(20px, 3vw, 38px);
  padding-bottom: 0;
}
.ms-factory-process-media .ms-process-copy {
  display: grid;
  grid-template-columns: minmax(0, .78fr) minmax(300px, 1.22fr);
  grid-template-rows: auto minmax(0, 1fr);
  gap: 10px clamp(28px, 5vw, 72px);
  align-items: start;
  padding: 4px 0 30px;
}
.ms-factory-process-media li + li { padding-top: 30px; }
.ms-factory-process-media h3,
.ms-factory-process-media h4 {
  grid-column: 1;
  grid-row: 1;
  margin: 0 0 7px;
  font-size: clamp(20px, 2.15vw, 23px);
  line-height: 1.34;
}
.ms-factory-process-media .ms-process-copy > p { grid-column: 1; grid-row: 2; }
.ms-factory-process-media .ms-factory-process-image,
.ms-factory-process-media .ms-factory-process-placeholder {
  grid-column: 2;
  grid-row: 1 / span 2;
  width: 100%;
  min-height: 0;
  margin: 0;
  aspect-ratio: 16 / 10;
}
.ms-factory-process-media li:nth-child(even) .ms-process-copy {
  grid-template-columns: minmax(300px, 1.22fr) minmax(0, .78fr);
}
.ms-factory-process-media li:nth-child(even) h3,
.ms-factory-process-media li:nth-child(even) h4,
.ms-factory-process-media li:nth-child(even) .ms-process-copy > p {
  grid-column: 2;
}
.ms-factory-process-media li:nth-child(even) .ms-factory-process-image,
.ms-factory-process-media li:nth-child(even) .ms-factory-process-placeholder {
  grid-column: 1;
}
.ms-factory-process-placeholder span { text-align: center; }
.ms-factory-compliance-note {
  padding: 12px 14px;
  border-left: 3px solid var(--ms-primary-light);
  background: var(--ms-white);
}
.ms-factory-tour-quality .ms-actions { margin-top: 24px; }
.ms-factory-tour-cta {
  color: var(--ms-white);
  background: var(--ms-primary);
}
.ms-factory-tour-cta .ms-cta {
  padding: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}
.ms-factory-tour-cta .ms-cta h2 { color: var(--ms-white); }
.ms-factory-tour-cta .ms-cta p { color: #e2e8f0; }

@media (max-width: 960px) {
  .ms-factory-tour-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ms-factory-process-media .ms-process-copy {
    grid-template-columns: minmax(0, 1fr);
    grid-template-rows: auto auto auto;
  }
  .ms-factory-process-media li:nth-child(even) .ms-process-copy {
    grid-template-columns: minmax(0, 1fr);
  }
  .ms-factory-process-media h3,
  .ms-factory-process-media h4,
  .ms-factory-process-media li:nth-child(even) h3,
  .ms-factory-process-media li:nth-child(even) h4,
  .ms-factory-process-media .ms-process-copy > p,
  .ms-factory-process-media li:nth-child(even) .ms-process-copy > p,
  .ms-factory-process-media .ms-factory-process-image,
  .ms-factory-process-media .ms-factory-process-placeholder,
  .ms-factory-process-media li:nth-child(even) .ms-factory-process-image,
  .ms-factory-process-media li:nth-child(even) .ms-factory-process-placeholder {
    grid-column: 1;
    grid-row: auto;
  }
  .ms-factory-process-media .ms-factory-process-image,
  .ms-factory-process-media .ms-factory-process-placeholder { margin-top: 12px; }
}
@media (max-width: 640px) {
  .ms-factory-tour-hero { min-height: 500px; }
  .ms-factory-tour-hero::after {
    background: linear-gradient(90deg, rgba(5, 5, 5, .88), rgba(5, 5, 5, .5));
  }
  .ms-factory-tour-hero > .ms-container {
    padding-top: 96px;
    padding-bottom: 54px;
  }
  .ms-factory-tour-hero-lead { font-size: 16px; }
  .ms-factory-tour-stats { grid-template-columns: minmax(0, 1fr); }
  .ms-factory-tour-stats > div { padding: 24px 20px; }
  .ms-factory-process-media li { grid-template-columns: 56px minmax(0, 1fr); gap: 16px; }
  .ms-factory-process-media li + li { padding-top: 24px; }
  .ms-factory-process-media .ms-process-copy { padding-bottom: 24px; }
}

/* About history is a vertical editorial timeline; keep it out of horizontal scrolling. */
#history { overflow: visible; padding-bottom: 8px; }
#history:focus:not(:focus-visible) { outline: none; }

/* ============================================================
   Industry case studies (solutions page)
   ============================================================ */
.ms-case-industry-filter > p {
  margin: 0 0 4px;
  color: var(--ms-muted);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .08em;
  text-transform: uppercase;
}
.ms-case-industry-filter .ms-case-filter-count {
  min-width: 2ch;
  color: var(--ms-muted);
  font-size: 12px;
  font-variant-numeric: tabular-nums;
  text-align: right;
}
.ms-case-industry-filter a {
  gap: 8px;
}
.ms-case-industry-filter a[aria-current='page'] .ms-case-filter-count {
  color: var(--ms-primary);
}

.ms-case-industry { margin-top: 58px; scroll-margin-top: 90px; }
.ms-case-industry:first-child { margin-top: 0; }
.ms-case-industry-head {
  border-bottom: 2px solid var(--ms-primary);
  padding-bottom: 10px;
  margin-bottom: 10px;
}
.ms-case-industry-label {
  font-size: 14px;
  font-weight: 800;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--ms-primary);
}
.ms-case-industry-intro { color: var(--ms-text-light); font-size: 15px; margin: 0; max-width: 920px; }

.ms-ind-group { margin-top: 28px; }
.ms-ind-group-head { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.ms-ind-badge {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 6px 15px;
  border-radius: 999px;
  font-size: 13px;
  font-weight: 700;
  white-space: nowrap;
}
.ms-ind-badge::before { content: ''; width: 9px; height: 9px; border-radius: 50%; background: currentColor; }
.ms-ind-badge-irreversible { background: #ecfdf5; color: #047857; border: 1px solid #a7f3d0; }
.ms-ind-badge-reversible { background: #f5f3ff; color: #6d28d9; border: 1px solid #ddd6fe; }
.ms-ind-group-note { font-size: 14px; color: var(--ms-muted); margin: 0; }

.ms-case-study {
  background: var(--ms-white);
  border: 1px solid var(--ms-line);
  border-radius: var(--ms-radius-lg);
  box-shadow: var(--ms-shadow);
  padding: 34px;
  margin-top: 22px;
  scroll-margin-top: 90px;
}
.ms-case-study h2 { margin: 6px 0 4px; font-size: 28px; line-height: 1.25; }
.ms-case-sub { color: var(--ms-text-light); margin: 0; }
.ms-case-meta { display: flex; flex-wrap: wrap; gap: 8px; margin: 14px 0 18px; }
.ms-case-meta span {
  background: var(--ms-soft);
  border: 1px solid var(--ms-line);
  border-radius: 999px;
  padding: 5px 13px;
  font-size: 13px;
  color: var(--ms-text-light);
}
.ms-case-meta span strong { color: var(--ms-text); font-weight: 700; }
.ms-case-study h3 { font-size: 18px; margin: 26px 0 8px; }
.ms-case-study > p { color: #374151; }

.ms-case-columns {
  display: grid;
  grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr);
  gap: 24px;
  align-items: start;
}
.ms-o2-chart {
  margin: 12px 0 0;
  background: var(--ms-soft);
  border: 1px solid var(--ms-line);
  border-radius: var(--ms-radius);
  padding: 14px;
}
.ms-o2-chart svg { width: 100%; height: auto; display: block; }
.ms-o2-chart figcaption { font-size: 13px; color: var(--ms-muted); margin-top: 8px; text-align: center; }
.ms-o2-grid { stroke: var(--ms-line); stroke-width: 1; }
.ms-o2-axis { stroke: #94a3b8; stroke-width: 1.5; }
.ms-o2-line { fill: none; stroke: var(--ms-primary); stroke-width: 3; stroke-linejoin: round; stroke-linecap: round; }
.ms-o2-dot { fill: var(--ms-white); stroke: var(--ms-primary); stroke-width: 2.5; }
.ms-o2-value { font-size: 11px; font-weight: 700; fill: var(--ms-primary-dark); }
.ms-o2-ytick, .ms-o2-xtick { font-size: 11px; fill: #64748b; }

.ms-table-scroll { overflow-x: auto; margin-top: 12px; }
.ms-case-table { width: 100%; border-collapse: collapse; background: var(--ms-white); font-size: 14px; min-width: 440px; }
.ms-case-table th, .ms-case-table td { border: 1px solid var(--ms-line); padding: 10px 14px; text-align: left; vertical-align: top; }
.ms-case-table thead th { background: var(--ms-primary); color: var(--ms-white); font-weight: 700; }
.ms-case-table tbody tr:nth-child(even) { background: var(--ms-soft); }

.ms-case-conversion {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(240px, 300px);
  gap: clamp(32px, 6vw, 80px);
  align-items: end;
  margin-top: 26px;
}
.ms-case-advantages h3 { margin-top: 0; }
.ms-case-advantages .ms-check-list { max-width: 75ch; }
.ms-case-cta {
  margin-top: 24px;
  display: flex;
  justify-content: flex-end;
  gap: 12px;
  flex-wrap: wrap;
}
.ms-case-conversion .ms-case-cta {
  margin-top: 0;
  flex-direction: column;
  align-items: stretch;
}
.ms-case-conversion .ms-case-cta .ms-btn {
  width: 100%;
  text-align: center;
}

@media (max-width: 960px) {
  .ms-case-columns { grid-template-columns: 1fr; }
}
@media (max-width: 820px) {
  .ms-case-conversion {
    grid-template-columns: 1fr;
    gap: 24px;
  }
  .ms-case-conversion .ms-case-cta {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (max-width: 760px) {
  .ms-case-study { padding: 22px 18px; }
  .ms-case-study h2 { font-size: 23px; }
  .ms-case-industry { margin-top: 44px; }
}
@media (max-width: 640px) {
  .ms-case-studies .ms-case-conversion .ms-case-cta {
    grid-template-columns: 1fr;
  }
  .ms-case-studies .ms-case-cta .ms-btn {
    width: 100%;
    white-space: normal;
    text-align: center;
  }
}

/* Six-case summary and virtual detail pages. */
.ms-case-library { display: grid; gap: 34px; scroll-margin-top: 96px; }
.ms-case-directory {
  display: grid;
  grid-template-columns: minmax(220px, .72fr) minmax(0, 1.28fr);
  gap: 30px;
  padding: clamp(24px, 4vw, 38px);
  color: var(--ms-white);
  background: var(--ms-primary);
  border-radius: var(--ms-radius-lg);
}
.ms-case-directory h2 { margin: 0 0 8px; color: inherit; }
.ms-case-directory p { margin: 0; color: #dbeafe; }
.ms-case-directory ol {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px 20px;
  margin: 0;
  padding: 0;
  list-style: none;
}
.ms-case-directory a {
  display: grid;
  grid-template-columns: 30px minmax(0, 1fr);
  min-height: 44px;
  align-items: center;
  gap: 8px;
  padding: 8px 10px;
  color: var(--ms-white);
  border-radius: 6px;
  font-size: 13px;
  line-height: 1.35;
  text-decoration: none;
}
.ms-case-directory a span { color: #93c5fd; font-weight: 800; }
.ms-case-directory a:hover,
.ms-case-directory a:focus-visible { background: rgba(255,255,255,.12); }
.ms-case-summary-list {
  border-top: 1px solid var(--ms-line);
}
.ms-case-summary-card {
  display: grid;
  grid-template-columns: 74px minmax(180px, 260px) minmax(0, 1fr) auto;
  gap: clamp(18px, 3vw, 40px);
  align-items: center;
  padding: 30px 0;
  border-bottom: 1px solid var(--ms-line);
  scroll-margin-top: 96px;
}
.ms-case-summary-media {
  display: block;
  overflow: hidden;
  aspect-ratio: 4 / 3;
  background: var(--ms-soft);
  border-radius: var(--ms-radius-lg);
}
.ms-case-summary-media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform .25s ease;
}
.ms-case-summary-media:hover img,
.ms-case-summary-media:focus-visible img { transform: scale(1.025); }
.ms-case-summary-index {
  color: var(--ms-primary);
  font-size: 13px;
  font-weight: 800;
}
.ms-case-summary-card h2 {
  margin: 3px 0 8px;
  font-size: clamp(22px, 2.4vw, 30px);
  line-height: 1.24;
}
.ms-case-summary-card p { margin: 0; color: var(--ms-text-light); }
.ms-case-industry-name {
  color: var(--ms-primary) !important;
  font-size: 13px;
  font-weight: 800;
}
.ms-case-summary-card dl {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 18px;
  margin: 16px 0 0;
}
.ms-case-summary-card dl > div { display: flex; gap: 5px; font-size: 13px; }
.ms-case-summary-card dt { color: var(--ms-muted); }
.ms-case-summary-card dt::after { content: ':'; }
.ms-case-summary-card dd { margin: 0; color: var(--ms-text); font-weight: 650; }
.ms-case-summary-card > .ms-btn { white-space: nowrap; }

.ms-case-breadcrumb {
  background: var(--ms-soft);
  border-bottom: 1px solid var(--ms-line);
}
.ms-case-breadcrumb .ms-container {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  padding-top: 13px;
  padding-bottom: 13px;
  color: var(--ms-muted);
  font-size: 13px;
}
.ms-case-breadcrumb a { color: var(--ms-primary); }
.ms-case-detail-hero {
  padding: clamp(54px, 7vw, 90px) 0;
  color: var(--ms-white);
  background: linear-gradient(135deg, #0f172a, #1e3a8a 58%, #1d4ed8);
}
.ms-case-detail-hero-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.25fr) minmax(280px, .75fr);
  gap: clamp(28px, 5vw, 72px);
  align-items: center;
}
.ms-case-detail-hero-media {
  overflow: hidden;
  aspect-ratio: 4 / 3;
  background: rgba(255,255,255,.08);
  border: 1px solid rgba(255,255,255,.18);
  border-radius: var(--ms-radius-xl);
  box-shadow: 0 24px 56px rgba(2, 6, 23, .28);
}
.ms-case-detail-hero-media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.ms-case-detail-hero h1 {
  max-width: 980px;
  margin: 14px 0 18px;
  color: inherit;
  font-size: clamp(34px, 5vw, 64px);
  line-height: 1.06;
  letter-spacing: -0.035em;
  text-wrap: balance;
}
.ms-case-detail-hero .ms-lead {
  max-width: 780px;
  color: #dbeafe;
}
.ms-case-detail-hero .ms-case-meta span {
  color: #dbeafe;
  background: rgba(255,255,255,.09);
  border-color: rgba(255,255,255,.2);
}
.ms-case-detail-hero .ms-case-meta strong { color: var(--ms-white); }
.ms-case-detail-layout {
  display: grid;
  grid-template-columns: minmax(210px, 260px) minmax(0, 1fr);
  gap: clamp(34px, 5vw, 72px);
  align-items: start;
}
.ms-case-detail-toc {
  position: sticky;
  top: 96px;
  padding: 20px;
  background: var(--ms-soft);
  border: 1px solid var(--ms-line);
  border-radius: var(--ms-radius-lg);
}
body.admin-bar .ms-case-detail-toc { top: 128px; }
.ms-case-detail-toc h2 { margin: 0 0 12px; font-size: 17px; }
.ms-case-detail-toc ol { margin: 0 0 16px; padding-left: 20px; }
.ms-case-detail-toc li { padding: 0; color: var(--ms-muted); }
.ms-case-detail-toc a {
  display: inline-flex;
  min-height: 44px;
  align-items: center;
  padding: 6px 0;
  color: var(--ms-text);
  font-size: 14px;
}
.ms-case-detail-content { min-width: 0; }
.ms-case-detail-content > section {
  scroll-margin-top: 96px;
  padding: 0 0 42px;
}
.ms-case-detail-content > section + section {
  padding-top: 42px;
  border-top: 1px solid var(--ms-line);
}
.ms-case-detail-content h2 {
  margin-top: 0;
  font-size: clamp(25px, 3vw, 36px);
}
.ms-case-detail-content > section > p {
  max-width: 74ch;
  color: #374151;
}
.ms-case-detail-content .ms-case-cta { justify-content: flex-start; }
.ms-case-gallery-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px;
}
.ms-case-gallery-grid figure { margin: 0; }
.ms-case-gallery-grid img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: contain;
  background: var(--ms-soft);
  border: 1px solid var(--ms-line);
  border-radius: var(--ms-radius-lg);
}
.ms-case-gallery-grid figcaption {
  margin-top: 8px;
  color: var(--ms-muted);
  font-size: 12px;
  line-height: 1.5;
}
.ms-case-products-ledger {
  margin: 0;
  padding: 0;
  border-top: 1px solid var(--ms-line);
  border-bottom: 1px solid var(--ms-line);
  list-style: none;
}
.ms-case-products-ledger li {
  display: grid;
  grid-template-columns: minmax(190px, .72fr) minmax(0, 1.28fr);
  gap: clamp(18px, 4vw, 48px);
  align-items: start;
  padding: 20px 0;
}
.ms-case-products-ledger li + li { border-top: 1px solid var(--ms-line); }
.ms-case-products-ledger h3 {
  margin: 0;
  color: var(--ms-text);
  font-size: 18px;
  line-height: 1.4;
}
.ms-case-products-ledger p {
  margin: 0;
  color: var(--ms-text-light);
  line-height: 1.65;
}
.ms-case-related-note {
  max-width: 74ch;
  color: var(--ms-text-light);
}
.ms-case-related-products .ms-related-grid { margin-top: 24px; }
.ms-case-final-cta {
  margin-top: 0;
  padding-top: 42px;
  border-top: 1px solid var(--ms-line);
}

@media (max-width: 900px) {
  .ms-case-directory,
  .ms-case-detail-layout,
  .ms-case-detail-hero-grid { grid-template-columns: minmax(0, 1fr); }
  .ms-case-detail-toc { position: static; }
  .ms-case-detail-hero-media { max-width: 620px; }
}
@media (max-width: 700px) {
  .ms-case-products-ledger li { grid-template-columns: minmax(0, 1fr); gap: 8px; }
  .ms-case-directory ol { grid-template-columns: minmax(0, 1fr); }
  .ms-case-summary-card {
    grid-template-columns: 48px minmax(140px, 190px) minmax(0, 1fr);
  }
  .ms-case-summary-card > .ms-btn {
    grid-column: 3;
    justify-self: start;
  }
  .ms-case-gallery-grid { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 480px) {
  .ms-case-summary-card {
    grid-template-columns: minmax(0, 1fr);
  }
  .ms-case-summary-card > .ms-btn { grid-column: 1; width: 100%; }
  .ms-case-summary-media { aspect-ratio: 16 / 10; }
}

/* Chemical notation stays legible in headings, tables, cards and body copy. */
sub {
  position: relative;
  bottom: -0.12em;
  font-size: 0.68em;
  line-height: 0;
  vertical-align: baseline;
}

/* Indicator formats: physical form is visible before the user reads specs. */
.ms-indicator-format-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 18px;
}
.ms-indicator-format {
  display: flex;
  align-items: center;
  gap: 22px;
  min-height: 154px;
  padding: 24px;
  background: var(--ms-white);
  border: 1px solid var(--ms-line);
  border-radius: var(--ms-radius-lg);
}
.ms-indicator-format h3 {
  margin: 0 0 6px;
  font-size: 18px;
}
.ms-indicator-format p {
  margin: 0;
  color: var(--ms-text-light);
  font-size: 14px;
}
.ms-indicator-symbol {
  position: relative;
  display: grid;
  flex: 0 0 82px;
  width: 82px;
  height: 82px;
  place-items: center;
  background: #eef4ff;
  border: 1px solid #bfdbfe;
}
.ms-indicator-symbol.is-tablet { border-radius: 18px; }
.ms-indicator-symbol.is-tablet span {
  width: 48px;
  height: 48px;
  border-radius: 50%;
  background: linear-gradient(135deg, #7c3aed 0 49%, #f9a8d4 51% 100%);
  box-shadow: inset 0 0 0 5px rgba(255,255,255,.78);
}
.ms-indicator-symbol.is-liquid {
  border-radius: 22px 22px 34px 34px;
}
.ms-indicator-symbol.is-liquid span {
  width: 38px;
  height: 52px;
  border-radius: 50% 50% 52% 48% / 62% 62% 38% 38%;
  background: linear-gradient(180deg, #22c55e 0 47%, #fde047 53% 100%);
  transform: rotate(45deg);
  box-shadow: inset 0 0 0 4px rgba(255,255,255,.7);
}

/* Auto-dispensing machines: sticky directory plus six evidence-led entries. */
.ms-machine-layout {
  display: grid;
  grid-template-columns: minmax(230px, 280px) minmax(0, 1fr);
  gap: clamp(28px, 4vw, 58px);
  align-items: start;
}
.ms-machine-toc {
  position: sticky;
  top: 96px;
  overflow: hidden;
  background: var(--ms-soft);
  border: 1px solid var(--ms-line);
  border-radius: var(--ms-radius-lg);
}
body.admin-bar .ms-machine-toc { top: 128px; }
.ms-machine-toc h3 {
  margin: 0;
  padding: 18px 20px;
  color: var(--ms-white);
  background: var(--ms-primary);
  font-size: 17px;
}
.ms-machine-toc ol {
  margin: 0;
  padding: 10px;
  list-style: none;
}
.ms-machine-toc li + li { border-top: 1px solid var(--ms-line); }
.ms-machine-toc a {
  display: grid;
  grid-template-columns: 28px minmax(0, 1fr);
  gap: 8px;
  padding: 11px 10px;
  color: var(--ms-text);
  border-radius: 6px;
  font-size: 13px;
  line-height: 1.35;
  text-decoration: none;
}
.ms-machine-toc a span {
  color: var(--ms-primary);
  font-weight: 800;
}
.ms-machine-toc a:hover,
.ms-machine-toc a:focus-visible {
  color: var(--ms-primary);
  background: var(--ms-primary-extra-light);
}
.ms-machine-list { min-width: 0; }
.ms-machine-entry {
  scroll-margin-top: 96px;
  padding: 30px 0;
  border-top: 1px solid var(--ms-line);
}
.ms-machine-entry:first-child {
  padding-top: 0;
  border-top: 0;
}
.ms-machine-index {
  margin: 0 0 8px;
  color: var(--ms-primary);
  font-size: 13px;
  font-weight: 800;
}
.ms-machine-entry h3 {
  margin: 0;
  font-size: clamp(22px, 2.5vw, 30px);
}
.ms-machine-models {
  margin: 8px 0 20px;
  color: var(--ms-primary);
  font-weight: 750;
}
.ms-machine-entry dl {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  margin: 0 0 18px;
  border-top: 1px solid var(--ms-line);
  border-left: 1px solid var(--ms-line);
}
.ms-machine-entry dl > div {
  padding: 13px 15px;
  border-right: 1px solid var(--ms-line);
  border-bottom: 1px solid var(--ms-line);
}
.ms-machine-entry dt {
  margin-bottom: 4px;
  color: var(--ms-muted);
  font-size: 12px;
  font-weight: 700;
}
.ms-machine-entry dd {
  margin: 0;
  color: var(--ms-text);
  font-size: 14px;
  line-height: 1.45;
}
.ms-text-link {
  color: var(--ms-primary);
  font-weight: 750;
  text-underline-offset: 3px;
}

@media (max-width: 900px) {
  .ms-machine-layout {
    grid-template-columns: minmax(0, 1fr);
  }
  .ms-machine-toc { position: static; }
  .ms-machine-toc ol {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .ms-machine-toc li + li { border-top: 0; }
  .ms-machine-toc li:nth-child(n + 3) { border-top: 1px solid var(--ms-line); }
  .ms-machine-toc li:nth-child(even) { border-left: 1px solid var(--ms-line); }
}
@media (max-width: 640px) {
  .ms-machine-toc ol { grid-template-columns: minmax(0, 1fr); }
  .ms-machine-toc li:nth-child(n) { border-top: 1px solid var(--ms-line); border-left: 0; }
  .ms-machine-toc li:first-child { border-top: 0; }
  .ms-machine-entry dl { grid-template-columns: minmax(0, 1fr); }
  .ms-indicator-format { align-items: flex-start; }
  .ms-indicator-symbol { flex-basis: 68px; width: 68px; height: 68px; }
}

/* ============================================================
   Content-aware grids
   Keep incomplete final rows balanced without changing the
   shared .ms-grid-* utilities used by unrelated framework pages.
   ============================================================ */
.ms-balanced-grid {
  display: grid;
  width: 100%;
  max-width: none;
  gap: 24px;
  align-items: stretch;
}
.ms-balanced-grid > * { min-width: 0; }
.ms-balanced-grid.ms-items-1 { grid-template-columns: minmax(0, 1fr); }
.ms-balanced-grid.ms-items-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.ms-balanced-grid.ms-items-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.ms-balanced-grid.ms-items-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.ms-balanced-grid.ms-items-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }

/* Homepage option 1-A: a compact vertical evidence ledger beside the
   company introduction. */
.ms-company-facts-vertical.ms-items-5 {
  grid-template-columns: minmax(0, 1fr);
  gap: 0;
  margin: 0;
  border-top: 1px solid var(--ms-line);
  border-bottom: 1px solid var(--ms-line);
}
.ms-company-facts-vertical .ms-company-fact {
  display: grid;
  grid-template-columns: minmax(118px, 0.42fr) minmax(0, 1fr);
  align-items: baseline;
  gap: 24px;
  padding: 18px 4px;
  border-top: 1px solid var(--ms-line);
}
.ms-company-facts-vertical .ms-company-fact:first-child { border-top: 0; }
.ms-company-facts-vertical dt {
  margin: 0;
  color: var(--ms-primary);
  font-size: clamp(28px, 3.1vw, 44px);
  font-weight: 800;
  line-height: 1;
  letter-spacing: -0.04em;
}
.ms-company-facts-vertical dd {
  margin: 0;
  color: var(--ms-text);
  font-size: 15px;
  font-weight: 700;
  line-height: 1.45;
}

/* Homepage option 2-A: four equal review cards on desktop. */
.ms-review-figures-four.ms-items-4 {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}
.ms-review-figures-four article {
  min-height: 220px;
  border-top: 3px solid rgba(30, 64, 175, 0.28);
}

/* A single product image uses the available row instead of leaving the
   right half of a 1320px container empty. */
.ms-product-media-grid article,
.ms-product-media-grid figure {
  margin: 0;
  min-width: 0;
  overflow: hidden;
  background: var(--ms-white);
  border: 1px solid var(--ms-line);
  border-radius: var(--ms-radius);
  box-shadow: var(--ms-shadow-sm);
}
.ms-product-media-grid h3,
.ms-product-media-grid figcaption {
  margin: 0;
  padding: 18px;
  font-size: 18px;
  line-height: 1.35;
}
.ms-product-media-grid figcaption { color: var(--ms-text); }
.ms-product-media-grid.ms-items-1 article,
.ms-product-media-grid.ms-items-1 figure {
  display: grid;
  grid-template-columns: minmax(0, 1.45fr) minmax(220px, 0.55fr);
  align-items: stretch;
  min-height: 300px;
}
.ms-product-media-grid.ms-items-1 img {
  width: 100%;
  height: 100%;
  aspect-ratio: 16 / 9;
  object-fit: cover;
}
.ms-product-media-grid.ms-items-1 h3,
.ms-product-media-grid.ms-items-1 figcaption {
  display: flex;
  align-items: center;
  margin: 0;
  padding: clamp(28px, 4vw, 52px);
  background: var(--ms-white);
  font-size: clamp(22px, 2.4vw, 32px);
  line-height: 1.25;
}
.ms-product-media-grid:not(.ms-items-1) img {
  width: 100%;
  aspect-ratio: 16 / 10;
  height: auto;
  object-fit: cover;
}

/* Application pills are short, so four and five items remain balanced on
   desktop. The icon target stays large enough to read at a glance. */
.ms-application-grid .ms-app-pill {
  min-height: 88px;
  line-height: 1.4;
}
.ms-application-grid .ms-app-pill::before,
.ms-application-grid .ms-app-icon {
  width: 46px;
  height: 46px;
  flex: 0 0 46px;
}
.ms-application-grid .ms-app-pill::before {
  border-radius: 12px;
  background-color: var(--ms-primary);
}
.ms-application-grid .ms-app-icon {
  display: block;
  border-radius: 12px;
  color: #0f766e;
  background: #ecfdf5;
  border: 1px solid #99f6e4;
}
.ms-application-grid img.ms-app-icon {
  padding: 8px;
  object-fit: contain;
}
.ms-application-grid .ms-app-icon svg,
.ms-application-grid .ms-app-icon img {
  width: 24px;
  height: 24px;
  object-fit: contain;
}
.ms-application-grid .ms-app-pill::before { display: none; }

/* Downloads now own a full-width row, so two and three files can use equal
   columns without recreating the old 2 + 1 gap. */
.ms-download-grid.ms-items-1 { grid-template-columns: minmax(0, 1fr); }
.ms-download-grid.ms-items-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.ms-download-grid.ms-items-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.ms-download-grid .ms-card { min-height: 0; }
.ms-document-card { color: inherit; text-decoration: none; }
.ms-document-card .ms-eyebrow { margin-bottom: 10px; }
.ms-document-card .ms-card-cta {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  margin-top: auto;
  padding-top: 16px;
  color: var(--ms-primary);
  font-size: 14px;
  font-weight: 700;
}

/* Validation is a full-width sequence: one, two and three steps each receive
   an intentional grid rather than inheriting a fixed three-column shell. */
.ms-validation-grid.ms-items-1 { grid-template-columns: minmax(0, 1fr); }
.ms-validation-grid.ms-items-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.ms-validation-grid.ms-items-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }

/* Related products use normal cards for two/three results. A singleton
   becomes one full-width horizontal card instead of a left-aligned 640px
   card with an empty right side. */
.ms-related-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.ms-related-grid.ms-items-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.ms-related-grid.ms-items-1 { grid-template-columns: minmax(0, 1fr); }
.ms-related-grid.ms-items-1 .ms-related-card {
  display: grid;
  grid-template-columns: minmax(300px, 0.9fr) minmax(0, 1.1fr);
  grid-template-rows: auto minmax(0, 1fr) auto;
  column-gap: 34px;
  min-height: 300px;
}
.ms-related-grid.ms-items-1 .ms-related-card .ms-card-image {
  grid-column: 1;
  grid-row: 1 / -1;
  align-self: stretch;
  height: auto;
  min-height: 300px;
  margin: -28px 0 -28px -28px;
  aspect-ratio: auto;
  border-radius: var(--ms-radius-lg) 0 0 var(--ms-radius-lg);
}
.ms-related-grid.ms-items-1 .ms-related-card .ms-card-image img {
  width: 100%;
  height: 100%;
  aspect-ratio: 16 / 10;
  object-fit: cover;
}
.ms-related-grid.ms-items-1 .ms-related-card h3,
.ms-related-grid.ms-items-1 .ms-related-card > p,
.ms-related-grid.ms-items-1 .ms-related-card > .ms-btn {
  grid-column: 2;
}
.ms-related-grid.ms-items-1 .ms-related-card h3 { grid-row: 1; }
.ms-related-grid.ms-items-1 .ms-related-card > p { grid-row: 2; }
.ms-related-grid.ms-items-1 .ms-related-card > .ms-btn {
  grid-row: 3;
  justify-self: start;
}

.ms-post-filters {
  margin: 0 0 34px;
  border-bottom: 1px solid var(--ms-line);
}
.ms-post-filters ul {
  display: flex;
  flex-wrap: wrap;
  gap: 0 24px;
  margin: 0;
  padding: 0;
  list-style: none;
}
.ms-post-filters a {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  padding: 8px 1px 7px;
  border-bottom: 3px solid transparent;
  color: var(--ms-text-light);
  font-size: 14px;
  font-weight: 700;
  line-height: 1.35;
  text-decoration: none;
  transition: color var(--ms-transition), border-color var(--ms-transition);
}
.ms-post-filters a:hover { color: var(--ms-primary); }
.ms-post-filters a[aria-current='page'] { border-bottom-color: var(--ms-primary); color: var(--ms-primary-dark); }
.ms-post-filters a:focus-visible {
  outline: 3px solid var(--ms-primary-light);
  outline-offset: 3px;
}
.ms-post-list-region { scroll-margin-top: 116px; }
.ms-posts-empty {
  margin: 0;
  padding: 36px 0;
  border-top: 1px solid var(--ms-line);
  border-bottom: 1px solid var(--ms-line);
  color: var(--ms-text-light);
  text-align: center;
}
.ms-post-pagination { margin-top: 42px; }
.ms-post-pagination > div {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 8px;
}
.ms-post-pagination .page-numbers {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 42px;
  min-height: 42px;
  padding: 8px 12px;
  border: 1px solid var(--ms-line);
  border-radius: var(--ms-radius);
  background: var(--ms-white);
  color: var(--ms-text-light);
  font-weight: 700;
  line-height: 1;
  transition: color var(--ms-transition), border-color var(--ms-transition), background-color var(--ms-transition);
}
.ms-post-pagination a.page-numbers:hover {
  border-color: var(--ms-primary-light);
  color: var(--ms-primary);
}
.ms-post-pagination .page-numbers.current {
  border-color: var(--ms-primary);
  background: var(--ms-primary);
  color: var(--ms-white);
}
.ms-post-pagination a.page-numbers:focus-visible {
  outline: 3px solid var(--ms-primary-light);
  outline-offset: 3px;
}

/* Post archives use a six-track grid: cards occupy two tracks, while a
   one- or two-card final row is centered rather than leaving half a page
   visually vacant. */
.ms-post-grid.ms-balanced-grid {
  grid-template-columns: repeat(6, minmax(0, 1fr));
}
.ms-post-grid > * { grid-column: span 2; }
.ms-post-grid > :last-child:nth-child(3n + 1) {
  grid-column: 3 / span 2;
}
.ms-post-grid > :nth-last-child(2):nth-child(3n + 1) {
  grid-column: 2 / span 2;
}

.ms-post-card { height: 100%; }
.ms-post-card .ms-post-meta { margin-bottom: 10px; }
.ms-post-card > p { margin-bottom: 24px; }
.ms-post-card-media { text-decoration: none; }
.ms-post-card-media.ms-ph { color: var(--ms-muted); }
.ms-post-card-news .ms-post-card-media.ms-ph {
  display: flex;
  flex-direction: column;
  position: relative;
  border-color: var(--ms-line);
  background: repeating-linear-gradient(135deg, var(--ms-white), var(--ms-white) 18px, var(--ms-soft) 18px, var(--ms-soft) 36px);
  color: var(--ms-primary);
}
.ms-post-card-news .ms-post-card-media.ms-ph small { color: var(--ms-muted); }
.ms-post-card-news .ms-post-card-media.ms-ph::after {
  content: 'NEWS';
  position: absolute;
  top: 16px;
  left: 16px;
  padding: 5px 8px;
  border: 1px solid var(--ms-line);
  border-radius: var(--ms-radius);
  background: var(--ms-white);
  color: var(--ms-primary);
  font-size: 10px;
  font-weight: 700;
  line-height: 1;
  letter-spacing: 0;
}
.ms-post-card-news .ms-post-card-media {
  display: grid;
  place-items: center;
  position: relative;
  background: var(--ms-soft);
}
.ms-post-card-news .ms-post-card-media img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: contain;
  object-position: center;
}
.ms-post-card-news:hover .ms-post-card-media img { transform: none; }

.ms-post-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(248px, 296px);
  gap: clamp(44px, 5vw, 72px);
  align-items: start;
}
.ms-post-main { min-width: 0; }
.ms-article-hero .ms-container { max-width: 1240px; }
.ms-article-hero .ms-article-title {
  max-width: 1200px;
  font-size: clamp(32px, 3.1vw, 42px);
  font-weight: 700;
  line-height: 1.12;
  letter-spacing: -.025em;
  overflow-wrap: break-word;
  text-wrap: balance;
}
.ms-article-hero .ms-article-summary {
  max-width: 800px;
  font-size: clamp(16px, 1.25vw, 18px);
  line-height: 1.6;
  text-wrap: pretty;
}
.ms-article-hero .ms-article-title.is-long { font-size: clamp(31px, 2.8vw, 40px); }
.ms-article-hero .ms-article-title.is-extra-long { font-size: clamp(30px, 2.6vw, 38px); }
.ms-article-hero .ms-article-title.is-ultra-long { font-size: clamp(28px, 2.4vw, 35px); }
.ms-article .ms-post-meta,
.ms-post-card .ms-post-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 5px 9px;
  align-items: center;
}
.ms-article .ms-post-meta { margin-bottom: 24px; }
.ms-article .ms-post-meta a { color: var(--ms-primary); text-underline-offset: 3px; }
.ms-post-featured {
  margin: 0 0 clamp(28px, 4vw, 44px);
  overflow: hidden;
  border-radius: var(--ms-radius-lg);
  background: var(--ms-soft);
}
.ms-post-featured img {
  display: block;
  width: 100%;
  max-height: 600px;
  object-fit: cover;
}
.ms-article-toc {
  margin: 0 0 38px;
  border-top: 2px solid var(--ms-primary);
  border-bottom: 1px solid var(--ms-line);
  background: var(--ms-soft);
}
.ms-article-toc summary {
  min-height: 48px;
  padding: 14px 18px;
  color: var(--ms-text);
  font-weight: 700;
  cursor: pointer;
}
.ms-article-toc nav { padding: 0 18px 18px; }
.ms-article-toc ol { margin: 0; padding-left: 22px; }
.ms-article-toc li { margin: 7px 0; color: var(--ms-muted); }
.ms-article-toc .ms-toc-level-3 { margin-left: 18px; }
.ms-article-toc a { color: var(--ms-text-light); text-underline-offset: 3px; }
.ms-article-toc a:hover { color: var(--ms-primary); }
.ms-article-toc a:focus-visible { outline: 3px solid var(--ms-primary-light); outline-offset: 3px; }
.ms-article-body {
  max-width: 70ch;
  color: var(--ms-text-light);
  font-size: 17px;
  font-weight: 400;
  line-height: 1.78;
}
.ms-article-body > :first-child { margin-top: 0; }
.ms-article-body p,
.ms-article-body li {
  color: inherit;
  font-size: inherit;
  font-weight: inherit;
  line-height: inherit;
}
.ms-article-body p { margin: 0 0 1.25em; }
.ms-article-body .ms-article-standfirst {
  margin: 0 0 1.65em;
  padding-left: 20px;
  border-left: 3px solid var(--ms-primary-light);
  color: var(--ms-text);
  font-size: clamp(19px, 1.65vw, 22px);
  font-weight: 600;
  line-height: 1.5;
  letter-spacing: -.01em;
  text-wrap: pretty;
}
.ms-article-body h2,
.ms-article-body h3 {
  color: var(--ms-text);
  font-weight: 700;
  letter-spacing: -.015em;
  scroll-margin-top: var(--ms-toc-offset);
  text-wrap: pretty;
}
.ms-article-body h2 { margin: 2em 0 .7em; font-size: clamp(26px, 2.4vw, 32px); line-height: 1.28; }
.ms-article-body h3 { margin: 1.7em 0 .6em; font-size: clamp(21px, 2vw, 24px); line-height: 1.35; }
.ms-article-body ul,
.ms-article-body ol { margin: 0 0 1.4em; padding-left: 1.35em; }
.ms-article-body li + li { margin-top: .4em; }
.ms-article-body strong { color: var(--ms-text); }
.ms-article-body a { color: var(--ms-primary); text-underline-offset: 3px; }
.ms-article-body blockquote {
  margin: 28px 0;
  padding: 2px 0 2px 24px;
  border-left: 3px solid var(--ms-primary);
  color: var(--ms-text);
}
.ms-article-figure { margin: 34px 0; }
.ms-article-figure img { display: block; width: 100%; border-radius: var(--ms-radius-lg); }
.ms-article-figure figcaption { margin-top: 10px; color: var(--ms-muted); font-size: 13px; line-height: 1.5; }
.ms-table-scroll {
  max-width: 100%;
  margin: 30px 0;
  overflow-x: auto;
  border: 1px solid var(--ms-line);
  border-radius: var(--ms-radius);
}
.ms-table-scroll:focus-visible { outline: 3px solid var(--ms-primary-light); outline-offset: 3px; }
.ms-article-body table { width: 100%; min-width: 640px; border-collapse: collapse; background: var(--ms-white); }
.ms-article-body th,
.ms-article-body td { padding: 13px 15px; border-bottom: 1px solid var(--ms-line); text-align: left; vertical-align: top; }
.ms-article-body th { background: var(--ms-soft); color: var(--ms-text); font-size: 14px; }
.ms-article-body tr:last-child td { border-bottom: 0; }

.ms-post-sidebar {
  position: sticky;
  top: calc(var(--ms-header-h) + 28px);
}
.ms-post-sidebar-section { padding: 0 0 26px; border-bottom: 1px solid var(--ms-line); }
.ms-post-sidebar-section + .ms-post-sidebar-section { margin-top: 28px; }
.ms-post-sidebar-section h2 { margin: 0 0 14px; font-size: 17px; line-height: 1.3; }
.ms-post-sidebar .search-form { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px; }
.ms-post-sidebar .search-field {
  min-width: 0;
  min-height: 44px;
  padding: 9px 11px;
  border: 1px solid var(--ms-line);
  border-radius: var(--ms-radius);
}
.ms-post-sidebar .search-submit {
  min-height: 44px;
  padding: 8px 13px;
  border: 1px solid var(--ms-primary);
  border-radius: var(--ms-radius);
  background: var(--ms-primary);
  color: var(--ms-white);
  font-weight: 700;
  cursor: pointer;
}
.ms-post-sidebar .search-field:focus-visible,
.ms-post-sidebar .search-submit:focus-visible { outline: 3px solid var(--ms-primary-light); outline-offset: 2px; }
.ms-post-sidebar-categories,
.ms-post-sidebar-recent { margin: 0; padding: 0; list-style: none; }
.ms-post-sidebar-toc ol { margin: 0; padding-left: 20px; }
.ms-post-sidebar-toc li { margin: 0; color: var(--ms-muted); line-height: 1.45; }
.ms-post-sidebar-toc li + li { margin-top: 10px; }
.ms-post-sidebar-toc .ms-toc-level-3 { margin-left: 12px; }
.ms-post-sidebar-toc a { color: var(--ms-text-light); text-decoration: none; }
.ms-post-sidebar-categories li + li,
.ms-post-sidebar-recent li + li { margin-top: 12px; }
.ms-post-sidebar-categories a {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  color: var(--ms-text-light);
  text-decoration: none;
}
.ms-post-sidebar-categories small { color: var(--ms-muted); }
.ms-post-sidebar-recent a { display: block; color: var(--ms-text); font-weight: 600; line-height: 1.45; text-decoration: none; }
.ms-post-sidebar-recent time { display: block; margin-top: 4px; color: var(--ms-muted); font-size: 12px; }
.ms-post-sidebar a:hover { color: var(--ms-primary); }
.ms-post-sidebar a:focus-visible { outline: 3px solid var(--ms-primary-light); outline-offset: 3px; }

.ms-related-posts {
  margin-top: 64px;
  padding-top: 48px;
  border-top: 1px solid var(--ms-line);
}
.ms-post-consultation {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 32px;
  align-items: center;
  margin-top: 56px;
  padding: 28px 0;
  border-top: 1px solid var(--ms-line);
  border-bottom: 1px solid var(--ms-line);
}
.ms-post-consultation h2 { margin: 0 0 8px; font-size: 22px; line-height: 1.3; }
.ms-post-consultation p { margin: 0; color: var(--ms-text-light); line-height: 1.6; }
.ms-post-consultation > a {
  color: var(--ms-primary);
  font-weight: 700;
  text-underline-offset: 4px;
  transition: color var(--ms-transition), transform var(--ms-transition);
}
.ms-post-consultation > a:hover { color: var(--ms-primary-dark); transform: translateX(2px); }
.ms-post-consultation > a:focus-visible { outline: 3px solid var(--ms-primary-light); outline-offset: 4px; }

.ms-post-author-link {
  color: var(--ms-primary);
  font-weight: 700;
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 3px;
  transition: color var(--ms-transition), text-decoration-thickness var(--ms-transition);
}
.ms-post-author-link:hover {
  color: var(--ms-primary-dark);
  text-decoration-thickness: 2px;
}
.ms-post-author-link:focus-visible { outline: 3px solid var(--ms-primary-light); outline-offset: 3px; }

/* Founder and author profiles use one quiet editorial frame. The source copy
   remains WordPress-owned while this theme owns geometry and responsive rules. */
.ms-profile-page {
  width: 100%;
  max-width: 1200px;
  margin: 0 auto;
  padding: 64px 24px 88px;
}
.ms-profile-intro {
  display: grid;
  grid-template-columns: minmax(280px, 0.72fr) minmax(0, 1.48fr);
  gap: 64px;
  align-items: start;
}
.ms-profile-copy,
.ms-author-copy { min-width: 0; }
.ms-profile-copy h1,
.ms-author-copy h1 {
  max-width: 840px;
  margin: 0 0 28px;
  color: var(--ms-text);
  font-size: 48px;
  line-height: 1.12;
  text-wrap: balance;
}
.ms-profile-copy p,
.ms-author-copy p {
  max-width: 780px;
  margin: 0;
  color: var(--ms-text-light);
  font-size: 18px;
  line-height: 1.78;
}
.ms-founder-profile .ms-profile-copy p { max-width: 68ch; }
.ms-author-profile .ms-author-copy { max-width: 780px; }
.ms-profile-copy p + p,
.ms-author-copy p + p { margin-top: 20px; }
.ms-author-copy p:first-of-type {
  color: var(--ms-text);
  font-size: 22px;
  font-weight: 700;
}
.ms-profile-intro > figure,
.ms-profile-portrait,
.ms-profile-photo-placeholder {
  width: 100%;
  margin: 0;
  overflow: hidden;
  border: 1px solid var(--ms-line);
  border-radius: var(--ms-radius);
  background: var(--ms-soft);
}
.ms-profile-intro > figure img,
.ms-profile-portrait img,
.ms-profile-photo-placeholder {
  width: 100%;
  aspect-ratio: 4 / 5;
}
.ms-author-profile .ms-profile-intro > figure img {
  aspect-ratio: 1;
  object-fit: cover;
}
.ms-profile-portrait img { object-fit: cover; }
.ms-profile-intro figcaption,
.ms-profile-portrait figcaption {
  padding: 12px 16px;
  color: var(--ms-muted);
  font-size: 13px;
  line-height: 1.5;
}
.ms-profile-photo-placeholder {
  display: grid;
  place-items: center;
  align-content: center;
  gap: 8px;
  min-height: 360px;
  padding: 32px;
  color: var(--ms-muted);
  text-align: center;
}
.ms-profile-photo-placeholder span { max-width: 240px; font-weight: 700; line-height: 1.5; }
.ms-profile-photo-placeholder small {
  display: block;
  max-width: 250px;
  margin-top: 0;
  color: var(--ms-muted);
  font-size: 13px;
  line-height: 1.5;
}
.ms-founder-summary { align-items: start; }
.ms-founder-summary > div:first-child { max-width: 68ch; }
.ms-founder-summary .ms-profile-photo-placeholder {
  min-height: 0;
  aspect-ratio: 4 / 5;
}
.ms-founder-patents {
  margin-top: 80px;
  padding-top: 56px;
  border-top: 1px solid var(--ms-line);
}
.ms-founder-patents > h2 {
  margin: 0 0 28px;
  font-size: 32px;
  line-height: 1.2;
}
.ms-patent-table-wrap {
  overflow-x: auto;
  border: 1px solid var(--ms-line);
  border-radius: var(--ms-radius);
  background: var(--ms-white);
  -webkit-overflow-scrolling: touch;
}
.ms-patent-table-wrap:focus-visible {
  outline: 3px solid var(--ms-primary-light);
  outline-offset: 4px;
}
.ms-patent-table {
  width: 100%;
  min-width: 840px;
  border-collapse: collapse;
  color: var(--ms-text-light);
  font-size: 14px;
  line-height: 1.5;
}
.ms-patent-table th,
.ms-patent-table td {
  padding: 16px;
  border-bottom: 1px solid var(--ms-line);
  text-align: left;
  vertical-align: top;
}
.ms-patent-table th {
  background: var(--ms-soft);
  color: var(--ms-text);
  font-weight: 700;
}
.ms-patent-table tbody tr:last-child td { border-bottom: 0; }
.ms-patent-table th:first-child,
.ms-patent-table td:first-child { width: 64px; text-align: center; }
.ms-patent-table th:last-child,
.ms-patent-table td:last-child { width: 176px; white-space: nowrap; }
.ms-patent-evidence-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 32px;
  margin-top: 48px;
}
.ms-patent-evidence-grid figure {
  display: flex;
  flex-direction: column;
  min-width: 0;
  margin: 0;
  border-top: 1px solid var(--ms-line);
  padding-top: 20px;
}
.ms-patent-evidence-link {
  display: block;
  border: 1px solid transparent;
  background: var(--ms-soft);
  cursor: zoom-in;
  transition: border-color var(--ms-transition);
}
.ms-patent-evidence-link:hover { border-color: var(--ms-primary-light); }
.ms-patent-evidence-link:focus-visible {
  outline: 3px solid var(--ms-primary-light);
  outline-offset: 4px;
}
.ms-patent-evidence-grid img {
  display: block;
  width: 100%;
  height: 440px;
  object-fit: contain;
  background: var(--ms-soft);
}

@media (min-width: 761px) and (max-width: 900px) {
  .ms-author-profile .ms-profile-intro {
    grid-template-columns: minmax(0, 1fr);
    gap: 36px;
  }
  .ms-author-profile .ms-profile-intro > figure { max-width: 380px; }
  .ms-author-profile .ms-author-copy h1 {
    max-width: 760px;
    font-size: 38px;
    line-height: 1.15;
  }
}
.ms-patent-evidence-grid figcaption {
  padding-top: 12px;
  color: var(--ms-muted);
  font-size: 13px;
  line-height: 1.5;
}

/* The five-item home product taxonomy becomes 2 + 2 + 1 at the shared
   tablet breakpoint. Let the final category use the full last row. */
@media (min-width: 641px) and (max-width: 1180.98px) {
  .ms-product-category-grid.ms-items-5,
  .ms-grid-5.ms-link-grid.ms-items-5,
  .ms-product-media-grid.ms-items-4,
  .ms-product-media-grid.ms-items-5,
  .ms-download-grid.ms-items-4,
  .ms-download-grid.ms-items-5,
  .ms-validation-grid.ms-items-4,
  .ms-validation-grid.ms-items-5 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .ms-grid-5.ms-link-grid > :last-child:nth-child(odd) {
    grid-column: 1 / -1;
  }
  .ms-product-media-grid.ms-items-5 > :last-child,
  .ms-download-grid.ms-items-5 > :last-child,
  .ms-validation-grid.ms-items-5 > :last-child {
    grid-column: 1 / -1;
  }

  .ms-application-grid.ms-items-4,
  .ms-application-grid.ms-items-5 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .ms-application-grid.ms-items-5 > :last-child {
    grid-column: 1 / -1;
    justify-content: center;
    text-align: center;
  }

  .ms-validation-grid.ms-items-3 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .ms-validation-grid.ms-items-3 > :last-child {
    grid-column: 1 / -1;
  }

  .ms-download-grid.ms-items-3 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .ms-download-grid.ms-items-3 > :last-child {
    grid-column: 1 / -1;
  }

  .ms-related-grid.ms-items-2,
  .ms-related-grid.ms-items-3 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .ms-related-grid.ms-items-3 > :last-child {
    grid-column: 1 / -1;
  }
  .ms-related-grid.ms-items-1 {
    grid-template-columns: minmax(0, 1fr);
  }

  .ms-post-grid.ms-balanced-grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
  .ms-post-grid > * { grid-column: span 2; }
  .ms-post-grid > :last-child:nth-child(odd) {
    grid-column: 2 / span 2;
  }
}

@media (min-width: 641px) and (max-width: 1100px) {
  .ms-review-figures-four.ms-items-4 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 980px) {
  .ms-post-layout { grid-template-columns: minmax(0, 1fr); }
  .ms-post-sidebar {
    position: static;
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 28px 40px;
    margin-top: 52px;
    padding-top: 34px;
    border-top: 1px solid var(--ms-line);
  }
  .ms-post-sidebar-section,
  .ms-post-sidebar-section + .ms-post-sidebar-section { margin: 0; }
  .ms-post-sidebar-toc { grid-column: 1 / -1; }
  .ms-profile-intro { grid-template-columns: minmax(240px, 0.72fr) minmax(0, 1.28fr); gap: 40px; }
  .ms-profile-copy h1,
  .ms-author-copy h1 { font-size: 40px; }
  .ms-patent-evidence-grid img { height: 360px; }
  .ms-client-page-layout { grid-template-columns: minmax(0, 1fr); gap: 34px; }
  .ms-client-page-toc { position: static; }
  .ms-client-page-toc .ms-article-toc { padding-left: 0; border-left: 0; }
  .ms-client-page-toc .ms-article-toc ol { max-height: none; }
}

@media (max-width: 760px) {
  .ms-products-conversion,
  .ms-post-consultation {
    grid-template-columns: minmax(0, 1fr);
    gap: 20px;
  }
  .ms-products-conversion .ms-actions { justify-content: stretch; }
  .ms-post-consultation > a { justify-self: start; }
  .ms-related-posts { margin-top: 48px; padding-top: 36px; }
  .ms-post-sidebar { grid-template-columns: minmax(0, 1fr); }
  .ms-profile-page { padding: 40px 20px 64px; }
  .ms-profile-intro { grid-template-columns: minmax(0, 1fr); gap: 32px; }
  .ms-founder-profile .ms-profile-copy { order: -1; }
  .ms-profile-intro > figure,
  .ms-profile-portrait,
  .ms-profile-photo-placeholder { max-width: 440px; }
  .ms-profile-copy h1,
  .ms-author-copy h1 { margin-bottom: 24px; font-size: 32px; line-height: 1.16; }
  .ms-profile-copy p,
  .ms-author-copy p { font-size: 16px; line-height: 1.72; }
  .ms-author-copy p:first-of-type { font-size: 20px; }
  .ms-founder-patents { margin-top: 56px; padding-top: 40px; }
  .ms-founder-patents > h2 { font-size: 28px; }
  .ms-patent-evidence-grid { grid-template-columns: minmax(0, 1fr); gap: 36px; }
  .ms-patent-evidence-grid img { height: auto; max-height: 560px; }
  .ms-article-hero .ms-article-title {
    font-size: clamp(27px, 7.2vw, 32px);
    line-height: 1.16;
    letter-spacing: -.02em;
    text-wrap: wrap;
  }
  .ms-article-hero .ms-article-title.is-long { font-size: clamp(25.5px, 6.7vw, 29px); }
  .ms-article-hero .ms-article-title.is-extra-long { font-size: clamp(24px, 6.3vw, 27px); }
  .ms-article-hero .ms-article-title.is-ultra-long {
    font-size: clamp(23px, 4.8vw, 27px);
    line-height: 1.12;
    letter-spacing: -.025em;
  }
  .ms-article-hero .ms-article-summary { font-size: 16px; line-height: 1.55; }
  .ms-article-body { max-width: none; font-size: 16px; line-height: 1.75; }
  .ms-article-body .ms-article-standfirst { padding-left: 16px; font-size: 19px; line-height: 1.5; }
  .ms-article-body h2 { font-size: clamp(24px, 7vw, 28px); }
  .ms-article-body h3 { font-size: clamp(20px, 6vw, 23px); }
  .ms-article-toc .ms-toc-level-3 { margin-left: 8px; }
  .ms-client-page-hero { padding: 44px 0 40px; }
  .ms-client-page-hero h1 { font-size: 32px; text-wrap: wrap; }
  .ms-client-page-hero h1 + p { font-size: 16px; }
  .ms-client-page-content { padding: 44px 0 64px; }
  .ms-client-page-body { font-size: 16px; line-height: 1.75; }
  .ms-client-page-body h2 { font-size: 26px; }
  .ms-client-page-body h3 { font-size: 21px; }
  .ms-certificate-summary-grid,
  .ms-certificate-document-grid,
  .ms-patent-grid { grid-template-columns: minmax(0, 1fr); }
  .ms-certificate-document-grid img,
  .ms-patent-grid img { height: auto; max-height: 560px; }
  .ms-patent-list li { grid-template-columns: minmax(0, 1fr); gap: 4px; }

  .ms-product-media-grid.ms-items-1 article,
  .ms-product-media-grid.ms-items-1 figure {
    grid-template-columns: minmax(0, 1fr);
    min-height: 0;
  }
  .ms-product-media-grid.ms-items-1 img {
    height: auto;
    aspect-ratio: 16 / 10;
  }
  .ms-product-media-grid.ms-items-1 h3,
  .ms-product-media-grid.ms-items-1 figcaption {
    padding: 22px 20px;
    font-size: 21px;
  }

  .ms-related-grid.ms-items-1 .ms-related-card {
    display: flex;
    min-height: 0;
  }
  .ms-related-grid.ms-items-1 .ms-related-card .ms-card-image {
    width: auto;
    height: auto;
    min-height: 0;
    margin: -22px -22px 18px;
    aspect-ratio: 16 / 10;
    border-radius: var(--ms-radius-lg) var(--ms-radius-lg) 0 0;
  }
}

@media (max-width: 480px) {
  .ms-article-hero .ms-article-title.is-ultra-long {
    font-size: clamp(20px, 5.2vw, 22px);
    line-height: 1.1;
    letter-spacing: -.03em;
  }
}

/* Restrained narrative motion: content remains visible without JavaScript. */
html.ms-motion-ready [data-ms-reveal] {
  opacity: 0;
  transform: translate3d(0, 14px, 0);
  transition:
    opacity 520ms cubic-bezier(.22, 1, .36, 1) var(--ms-reveal-delay, 0ms),
    transform 520ms cubic-bezier(.22, 1, .36, 1) var(--ms-reveal-delay, 0ms),
    clip-path 680ms cubic-bezier(.22, 1, .36, 1) var(--ms-reveal-delay, 0ms);
}
html.ms-motion-ready [data-ms-reveal='heading'] { transform: translate3d(0, 12px, 0); }
html.ms-motion-ready [data-ms-reveal='data'] {
  clip-path: inset(0 0 14% 0 round var(--ms-radius-lg));
  transform: translate3d(0, 8px, 0);
}
html.ms-motion-ready [data-ms-reveal='media'] {
  clip-path: inset(0 0 10% 0 round var(--ms-radius-lg));
  transform: scale(.985);
}
html.ms-motion-ready [data-ms-reveal].is-revealed {
  opacity: 1;
  clip-path: inset(0 0 0 0 round var(--ms-radius-lg));
  transform: none;
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .ms-carousel-track,
  .ms-process-flow::after,
  .ms-process-step,
  .ms-about-toc::after,
  html.ms-motion-ready [data-ms-reveal] {
    transition: none;
  }
  html.ms-motion-ready [data-ms-reveal] {
    opacity: 1;
    clip-path: none;
    transform: none;
  }
  .ms-carousel-btn:hover,
  .ms-carousel-btn:active,
  .ms-product-card:hover .ms-product-card-media img,
  .ms-doc-grid figure:hover,
  .ms-back-to-top:hover {
    transform: none;
  }
  .ms-contact-rail a,
  .ms-contact-rail a::after { transition: none; }
  .ms-contact-rail a:hover { transform: none; }
}

@media (max-width: 640px) {
  .ms-balanced-grid.ms-items-1,
  .ms-balanced-grid.ms-items-2,
  .ms-balanced-grid.ms-items-3,
  .ms-balanced-grid.ms-items-4,
  .ms-balanced-grid.ms-items-5,
  .ms-product-media-grid,
  .ms-application-grid,
  .ms-download-grid,
  .ms-validation-grid,
  .ms-related-grid,
  .ms-post-grid.ms-balanced-grid {
    grid-template-columns: minmax(0, 1fr);
  }
  .ms-balanced-grid > *,
  .ms-product-media-grid > *,
  .ms-application-grid > *,
  .ms-download-grid > *,
  .ms-validation-grid > *,
  .ms-related-grid > *,
  .ms-post-grid > *,
  .ms-post-grid > :last-child:nth-child(3n + 1),
  .ms-post-grid > :nth-last-child(2):nth-child(3n + 1) {
    grid-column: 1;
  }
  .ms-application-grid .ms-app-pill {
    min-height: 72px;
  }
  .ms-application-grid.ms-items-5 > :last-child {
    grid-column: 1;
    justify-content: flex-start;
    text-align: left;
  }
  .ms-company-facts-vertical .ms-company-fact {
    grid-template-columns: minmax(102px, 0.38fr) minmax(0, 1fr);
    gap: 16px;
    padding: 16px 0;
  }
  .ms-company-facts-vertical dt { font-size: 27px; }
  .ms-review-figures-four article { min-height: 0; }
  .ms-post-filters { margin-bottom: 26px; }
  .ms-post-filters ul { gap: 0 16px; }
  .ms-post-filters a { min-height: 44px; font-size: 13px; }
  .ms-post-pagination { margin-top: 34px; }
  .ms-post-pagination .page-numbers { min-width: 40px; min-height: 40px; padding: 7px 10px; }
  .ms-contact-rail {
    right: 76px;
    bottom: 16px;
    grid-auto-flow: column;
  }
  .ms-contact-rail a { width: 44px; height: 44px; }
  .ms-contact-rail a::after { display: none; }
  .ms-request-received-panel { padding: 40px 0; }
  .ms-request-received-panel h1 { font-size: 32px; }
  .ms-request-received-panel > p:not(.ms-eyebrow) { font-size: 16px; }
}

.ms-product-media-grid a:focus-visible,
.ms-related-card a:focus-visible,
.ms-post-grid a:focus-visible {
  outline: 3px solid var(--ms-primary-light);
  outline-offset: 3px;
}

@media (prefers-reduced-motion: reduce) {
  .ms-product-media-grid *,
  .ms-related-grid *,
  .ms-post-grid * {
    scroll-behavior: auto !important;
    transition-duration: 0.01ms !important;
    animation-duration: 0.01ms !important;
  }
  .ms-related-card:hover,
  .ms-post-grid .ms-card:hover,
  .ms-post-card:hover .ms-post-card-media img,
  .ms-post-consultation > a:hover {
    transform: none;
  }
}
