
:root {
  --navy:#123e69;
  --navy-2:#1a4f80;
  --blue:#2f74b5;
  --blue-2:#68a9df;
  --sky:#d8eafb;
  --mist:#edf4fa;
  --mist-2:#e4eef7;
  --ice:#f7fbff;
  --white:#ffffff;
  --text:#17344f;
  --muted:#6b8194;
  --line:rgba(31,82,126,.16);
  --shadow:0 28px 70px rgba(25,67,103,.14);
  --radius:30px;
  --radius-sm:20px;
  --ease:cubic-bezier(.2,.75,.2,1);
  --nav-h:84px;
  --semc-safe-top:env(safe-area-inset-top,0px);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;background:var(--mist)}
body{
  margin:0;
  font-family:-apple-system,BlinkMacSystemFont,"SF Pro Display","PingFang SC","Microsoft YaHei","Noto Sans CJK SC",sans-serif;
  color:var(--text);
  background:
    radial-gradient(circle at 88% 4%,rgba(104,169,223,.23),transparent 24rem),
    linear-gradient(180deg,#eef6fc 0%,#e8f1f8 36%,#f4f8fb 74%,#eaf3f9 100%);
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
}
button,a{font:inherit}
a{color:inherit;text-decoration:none}
img{display:block;max-width:100%}
::selection{background:rgba(47,116,181,.2)}

/* NAV */
.site-nav{
  position:fixed;z-index:1000;left:50%;top:14px;transform:translateX(-50%);
  width:min(96vw,1560px);height:70px;padding:0 22px 0 18px;
  display:flex;align-items:center;gap:20px;
  border:1px solid rgba(255,255,255,.68);
  border-radius:24px;
  background:rgba(237,246,252,.82);
  backdrop-filter:blur(24px) saturate(145%);
  box-shadow:0 18px 45px rgba(32,81,120,.12);
  transition:.35s var(--ease);
}
.site-nav.scrolled{top:8px;background:rgba(235,245,252,.92);box-shadow:0 16px 42px rgba(32,81,120,.17)}
.brand{display:flex;align-items:center;gap:14px;min-width:0;flex:1}
.brand-logo{width:126px;height:45px;object-fit:contain}
.brand-name{font-size:17px;font-weight:680;letter-spacing:.02em;white-space:nowrap;color:#19466e}
.nav-links{display:flex;align-items:center;gap:4px}
.nav-link{
  position:relative;padding:10px 11px;border-radius:13px;font-size:14px;font-weight:610;color:#355b79;
  transition:.25s var(--ease);white-space:nowrap;
}
.nav-link:hover{background:rgba(255,255,255,.62);color:var(--navy)}
.nav-link.active{color:var(--navy);background:rgba(255,255,255,.78)}
.nav-link.active:after{
  content:"";position:absolute;left:18px;right:18px;bottom:5px;height:2px;border-radius:10px;
  background:linear-gradient(90deg,var(--blue),var(--blue-2));
}
.menu-btn{display:none;border:0;background:rgba(255,255,255,.6);width:42px;height:42px;border-radius:13px;color:var(--navy);font-size:19px}

/* PAGE SHELL */
.page{display:none;opacity:0;transform:translateY(12px) scale(.995)}
.page.active{display:block;animation:pageIn .72s var(--ease) forwards}
@keyframes pageIn{to{opacity:1;transform:none}}
.container{width:min(92vw,1360px);margin:0 auto}
.section{padding:112px 0}
.section.compact{padding:82px 0}
.section.blue-wash{
  background:linear-gradient(135deg,rgba(206,230,249,.72),rgba(235,244,251,.84));
  border-top:1px solid rgba(255,255,255,.75);border-bottom:1px solid rgba(255,255,255,.75);
}
.section.deep-blue{
  color:white;
  background:
    radial-gradient(circle at 80% 10%,rgba(103,170,224,.35),transparent 34rem),
    linear-gradient(135deg,#245b89 0%,#153f68 64%,#1d507e 100%);
}
.section.deep-blue .muted{color:#c8dbea}
.muted{color:var(--muted)}
.eyebrow{
  display:inline-flex;align-items:center;gap:11px;padding:8px 12px 8px 9px;border-radius:999px;
  background:linear-gradient(180deg,rgba(255,255,255,.82),rgba(222,237,248,.76));
  border:1px solid rgba(255,255,255,.9);box-shadow:0 8px 24px rgba(31,78,115,.08);
  color:#35688f;font-weight:720;font-size:11px;letter-spacing:.16em;text-transform:uppercase;
}
.eyebrow .num{
  display:grid;place-items:center;width:25px;height:25px;border-radius:999px;color:white;font-size:10px;letter-spacing:0;
  background:linear-gradient(135deg,var(--blue),#79b7e5);box-shadow:0 5px 14px rgba(47,116,181,.25)
}
.section-title{margin:22px 0 16px;font-size:clamp(34px,4.5vw,62px);line-height:1.04;letter-spacing:-.045em;font-weight:750}
.page-hero .section-title{font-size:clamp(38px,4.2vw,58px)}
.section-lead{max-width:760px;font-size:clamp(17px,1.5vw,21px);line-height:1.8;color:var(--muted);margin:0}
.deep-blue .section-lead{color:#d7e7f2}

/* HOME HERO */
.hero{
  position:relative;min-height:100svh;display:grid;align-items:end;padding:calc(var(--nav-h) + 42px) 0 54px;
  overflow:hidden;background:#4e83aa;
}
.hero-media{position:absolute;inset:0;overflow:hidden}
.hero-media img{
  width:100%;height:100%;object-fit:cover;object-position:center 48%;
  transform:scale(1.03);transition:transform 1.4s var(--ease);will-change:transform;
}
.hero:after{
  content:"";position:absolute;inset:0;
  background:
    linear-gradient(90deg,rgba(20,64,101,.86) 0%,rgba(31,86,130,.58) 38%,rgba(41,98,142,.14) 68%,rgba(49,113,163,.02) 100%),
    linear-gradient(0deg,rgba(20,55,84,.58) 0%,rgba(20,55,84,0) 44%);
}
.hero-content{position:relative;z-index:2;width:min(92vw,1360px);margin:0 auto}
.hero-copy{
  width:min(720px,100%);padding:38px 40px 38px;border-radius:32px;
  background:linear-gradient(135deg,rgba(26,76,116,.66),rgba(42,97,139,.38));
  backdrop-filter:blur(13px) saturate(120%);
  border:1px solid rgba(255,255,255,.25);box-shadow:0 28px 80px rgba(21,60,93,.28);
}
.hero-kicker{display:flex;align-items:center;gap:12px;color:#dcebfa;font-size:12px;font-weight:700;letter-spacing:.18em;text-transform:uppercase}
.hero-kicker i{display:block;width:36px;height:1px;background:#acd4f3}
.hero h1{font-size:clamp(45px,6vw,78px);line-height:.99;letter-spacing:-.05em;color:white;margin:18px 0 20px;font-weight:760;max-width:670px}
.hero p{color:#e8f3fb;font-size:clamp(17px,1.6vw,22px);line-height:1.75;margin:0;max-width:630px}
.hero-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:27px}
.btn{
  display:inline-flex;align-items:center;gap:10px;border:1px solid rgba(255,255,255,.48);
  border-radius:999px;padding:13px 18px;font-weight:680;font-size:14px;transition:.25s var(--ease)
}
.btn.primary{background:white;color:#22577f;box-shadow:0 10px 30px rgba(19,59,91,.15)}
.btn.ghost{background:rgba(255,255,255,.12);color:white}
.btn:hover{transform:translateY(-2px)}
.scroll-cue{position:absolute;z-index:2;right:4vw;bottom:44px;color:white;display:flex;align-items:center;gap:10px;font-size:12px;letter-spacing:.14em;text-transform:uppercase}
.scroll-cue .line{width:42px;height:1px;background:rgba(255,255,255,.7)}

/* MODULES */
.stat-strip{margin-top:-1px;background:rgba(222,237,248,.82);border-bottom:1px solid rgba(255,255,255,.8)}
.stat-grid{display:grid;grid-template-columns:repeat(3,1fr)}
.stat-item{padding:28px 30px;border-right:1px solid var(--line)}
.stat-item:last-child{border-right:0}
.stat-item strong{display:block;font-size:19px;color:var(--navy);margin-bottom:7px}
.stat-item span{font-size:13px;line-height:1.7;color:var(--muted)}

.split{display:grid;grid-template-columns:1.02fr .98fr;gap:60px;align-items:center}
.media-card{position:relative;border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);min-height:500px;background:#dbe9f4}
.media-card img{width:100%;height:100%;position:absolute;inset:0;object-fit:cover}
.media-card:after{content:"";position:absolute;inset:0;background:linear-gradient(0deg,rgba(28,72,108,.38),transparent 52%)}
.media-caption{position:absolute;z-index:2;left:24px;bottom:22px;color:white;font-size:14px;font-weight:650;background:rgba(33,80,118,.38);backdrop-filter:blur(10px);padding:10px 13px;border:1px solid rgba(255,255,255,.2);border-radius:14px}
.feature-list{display:grid;gap:14px;margin-top:30px}
.feature-item{padding:18px 18px 18px 20px;border-radius:18px;background:rgba(255,255,255,.58);border:1px solid rgba(255,255,255,.82);display:grid;grid-template-columns:34px 1fr;gap:14px;align-items:start}
.feature-icon{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;color:white;background:linear-gradient(135deg,var(--blue),#86bce3);font-size:14px;box-shadow:0 8px 20px rgba(47,116,181,.22)}
.feature-item h3{margin:2px 0 5px;font-size:16px}
.feature-item p{margin:0;font-size:13px;line-height:1.7;color:var(--muted)}

.cards-3{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:44px}
.service-card{position:relative;min-height:330px;padding:28px;border-radius:26px;overflow:hidden;background:rgba(255,255,255,.66);border:1px solid rgba(255,255,255,.9);box-shadow:0 18px 48px rgba(38,83,117,.08);transition:.4s var(--ease)}
.service-card:hover:where(:not(.semc-touch-feedback)){transform:translateY(-8px);box-shadow:0 26px 62px rgba(38,83,117,.15)}
.service-card .index{font-size:11px;letter-spacing:.14em;color:#5e8eb3;font-weight:720}
.service-card h3{font-size:25px;letter-spacing:-.03em;margin:60px 0 10px;color:var(--navy)}
.service-card p{font-size:14px;line-height:1.8;color:var(--muted);margin:0}
.service-card .arrow{position:absolute;right:22px;bottom:22px;width:42px;height:42px;border-radius:50%;display:grid;place-items:center;background:#e5f0f8;color:var(--navy);transition:.3s}
.service-card:hover:where(:not(.semc-touch-feedback)) .arrow{transform:translateX(4px);background:#d4e8f7}

.equipment-grid{display:grid;grid-template-columns:repeat(12,1fr);gap:18px;margin-top:44px}
.equipment-card{position:relative;min-height:380px;border-radius:28px;overflow:hidden;box-shadow:0 20px 55px rgba(20,67,103,.13);isolation:isolate}
.equipment-card.large{grid-column:span 7}
.equipment-card.small{grid-column:span 5}
.equipment-card img{width:100%;height:100%;object-fit:cover;position:absolute;inset:0;transition:transform .9s var(--ease)}
.equipment-card:hover:where(:not(.semc-touch-feedback)) img{transform:scale(1.055)}
.equipment-card:after{content:"";position:absolute;inset:0;background:linear-gradient(0deg,rgba(22,64,97,.67),rgba(22,64,97,0) 56%);z-index:1}
.equip-meta{position:absolute;z-index:2;left:24px;right:24px;bottom:22px;color:white;display:flex;justify-content:space-between;align-items:end;gap:18px}
.equip-meta span{font-size:11px;letter-spacing:.15em;text-transform:uppercase;color:#c8e1f5}
.equip-meta h3{margin:6px 0 0;font-size:24px;letter-spacing:-.03em}

.industry-band{display:grid;grid-template-columns:.8fr 1.2fr;gap:40px;align-items:start}
.industry-chips{display:flex;flex-wrap:wrap;gap:10px}
.chip{padding:13px 15px;border-radius:999px;background:rgba(255,255,255,.6);border:1px solid rgba(255,255,255,.86);font-weight:650;color:#376684;transition:.25s}
.chip:hover:where(:not(.semc-touch-feedback)){transform:translateY(-2px);background:white}

.process{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-top:40px}
.step{padding:22px 18px;border-radius:20px;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.18)}
.step b{display:block;font-size:11px;color:#a9d4f3;letter-spacing:.12em;margin-bottom:30px}
.step h3{margin:0 0 7px;font-size:17px}
.step p{margin:0;font-size:12px;line-height:1.65;color:#c7dceb}

.cta-panel{padding:46px;border-radius:34px;background:linear-gradient(135deg,#d4e9f8,#eef6fc);border:1px solid rgba(255,255,255,.9);box-shadow:var(--shadow);display:flex;justify-content:space-between;gap:30px;align-items:center}
.cta-panel h2{font-size:clamp(30px,3.5vw,46px);margin:0;letter-spacing:-.04em}
.cta-panel p{margin:12px 0 0;color:var(--muted);line-height:1.75}
.blue-btn{display:inline-flex;align-items:center;gap:10px;padding:14px 19px;border-radius:999px;background:linear-gradient(135deg,#2f74b5,#5ca0d5);color:white;font-weight:680;box-shadow:0 12px 28px rgba(47,116,181,.22);white-space:nowrap}

/* INNER PAGE HERO */
.page-hero{padding:calc(var(--nav-h) + 92px) 0 68px;position:relative;overflow:hidden}
.page-hero:before{content:"";position:absolute;right:-9vw;top:70px;width:440px;height:440px;border-radius:50%;background:radial-gradient(circle,rgba(87,157,210,.23),transparent 70%);filter:blur(5px)}
.page-hero .container{position:relative;z-index:2}
.page-hero .section-title{max-width:860px}
.page-hero .section-lead{max-width:820px}

.page-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}
.info-card{padding:28px;border-radius:24px;background:rgba(255,255,255,.6);border:1px solid rgba(255,255,255,.9);min-height:210px}
.info-card h3{font-size:23px;margin:0 0 12px;color:var(--navy)}
.info-card p{margin:0;color:var(--muted);line-height:1.8}
.image-banner{height:min(62vw,620px);border-radius:32px;overflow:hidden;box-shadow:var(--shadow)}
.image-banner img{width:100%;height:100%;object-fit:cover}
.timeline{display:grid;gap:16px}
.timeline-item{display:grid;grid-template-columns:120px 1fr;gap:24px;padding:24px 0;border-bottom:1px solid var(--line)}
.timeline-item b{color:#4d87b4}
.timeline-item h3{margin:0 0 7px;font-size:19px}
.timeline-item p{margin:0;color:var(--muted);line-height:1.75}
.gallery-2{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.gallery-2 .photo{border-radius:26px;overflow:hidden;min-height:340px;position:relative}
.gallery-2 img{width:100%;height:100%;object-fit:cover;position:absolute}
.gallery-2 .label{position:absolute;z-index:2;left:18px;bottom:18px;color:white;background:rgba(29,76,114,.52);backdrop-filter:blur(10px);padding:9px 12px;border-radius:12px;border:1px solid rgba(255,255,255,.2)}

/* CASE/NEWS PLACEHOLDERS */
.listing{display:grid;gap:12px}
.list-row{display:grid;grid-template-columns:140px 1fr auto;align-items:center;gap:20px;padding:22px 24px;border-radius:20px;background:rgba(255,255,255,.58);border:1px solid rgba(255,255,255,.9);transition:.25s}
.list-row:hover:where(:not(.semc-touch-feedback)){transform:translateY(-3px);background:rgba(255,255,255,.76)}
.list-row .tag{font-size:12px;color:#4b84af;font-weight:720;letter-spacing:.08em}
.list-row h3{margin:0 0 6px;font-size:19px}
.list-row p{margin:0;color:var(--muted);font-size:13px}
.list-row .go{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:#e0edf7;color:var(--navy)}

/* REVEAL */
.reveal{opacity:0;transform:translateY(26px);transition:opacity .85s var(--ease),transform .85s var(--ease)}

.reveal.delay1{transition-delay:.08s} .reveal.delay2{transition-delay:.16s} .reveal.delay3{transition-delay:.24s}
[data-tilt]{transform-style:preserve-3d}

/* FOOTER */
footer{padding:42px 0 54px;border-top:1px solid var(--line);color:#6b8397}
.footer-row{display:flex;justify-content:space-between;gap:24px;align-items:end}
.footer-brand{display:flex;align-items:center;gap:15px}
.footer-brand img{width:120px;height:40px;object-fit:contain}
.footer-note{font-size:12px;line-height:1.8;max-width:640px}

/* RESPONSIVE */
@media (max-width:1160px){
  .brand-name{font-size:15px}
  .nav-link{padding:9px 8px;font-size:13px}
}
@media (max-width:980px){
  .site-nav{width:94vw}
  .nav-links{position:absolute;top:78px;left:0;right:0;display:none;flex-direction:column;align-items:stretch;padding:12px;background:rgba(235,245,252,.97);border:1px solid rgba(255,255,255,.9);border-radius:22px;box-shadow:var(--shadow)}
  .nav-links.open{display:flex}
  .menu-btn{display:block}
  .brand-name{font-size:14px}
  .brand-logo{width:105px}
  .split,.industry-band{grid-template-columns:1fr}
  .cards-3{grid-template-columns:1fr}
  .equipment-card.large,.equipment-card.small{grid-column:span 12}
  .process{grid-template-columns:1fr 1fr}
  .hero-copy{padding:30px}
  .scroll-cue{display:none}
}
@media (max-width:700px){
  :root{--nav-h:74px}
  .site-nav{height:62px;top:10px;padding:0 12px}
  .brand-logo{width:94px;height:35px}
  .brand-name{font-size:12.5px;letter-spacing:0}
  .section{padding:82px 0}
  .hero{padding-bottom:28px;min-height:88svh}
  .hero-copy{padding:24px;border-radius:24px}
  .hero h1{font-size:43px}
  .stat-grid{grid-template-columns:1fr}
  .stat-item{border-right:0;border-bottom:1px solid var(--line)}
  .stat-item:last-child{border-bottom:0}
  .page-grid,.gallery-2{grid-template-columns:1fr}
  .process{grid-template-columns:1fr}
  .cta-panel{padding:30px;align-items:flex-start;flex-direction:column}
  .timeline-item{grid-template-columns:1fr;gap:8px}
  .listing .list-row{grid-template-columns:1fr auto}
  .list-row .tag{grid-column:1/-1}
  .footer-row{flex-direction:column;align-items:flex-start}
}

/* ===== V4 color refinement: white-led, crisp blue accents, no blue haze ===== */
:root{
  --navy:#153f63;
  --navy-2:#1c4f78;
  --blue:#2f74b5;
  --blue-2:#5a9ed3;
  --sky:#dbeaf6;
  --mist:#f6f8fa;
  --mist-2:#eef2f5;
  --ice:#fbfcfd;
  --white:#ffffff;
  --text:#243746;
  --muted:#6e7f8d;
  --line:rgba(28,79,120,.12);
  --shadow:0 22px 54px rgba(25,55,78,.10);
}


body{
  background:#fff;
  color:var(--text);
}

/* navigation: clearer, whiter, less tinted */
.site-nav{
  background:rgba(255,255,255,.88);
  border:1px solid rgba(21,63,99,.09);
  box-shadow:0 14px 34px rgba(23,54,77,.08);
}
.site-nav.scrolled{
  background:rgba(255,255,255,.95);
  box-shadow:0 14px 36px rgba(23,54,77,.11);
}
.nav-link:hover{background:#f5f8fb}
.nav-link.active{background:#f4f8fb}

/* section rhythm: white first, neutral gray second */
.section{background:#fff}
.section.blue-wash{
  background:#f7f9fb;
  border-top:1px solid rgba(21,63,99,.06);
  border-bottom:1px solid rgba(21,63,99,.06);
}
.section.deep-blue{
  color:var(--text);
  background:#fff;
  border-top:1px solid rgba(21,63,99,.08);
  border-bottom:1px solid rgba(21,63,99,.08);
}
.section.deep-blue .muted,
.deep-blue .section-lead{color:var(--muted)}

/* stronger blue only as a detail, not as a wash */
.eyebrow{
  background:#fff;
  border:1px solid rgba(47,116,181,.16);
  box-shadow:0 8px 22px rgba(28,79,120,.06);
  color:#346e9b;
}
.eyebrow .num{
  background:linear-gradient(135deg,#2f74b5,#6ba8d6);
}
.section-title{color:#1d3446}

/* homepage strip stays clean */
.stat-strip{
  background:#fff;
  border-bottom:1px solid rgba(21,63,99,.08);
}
.stat-item{
  border-right:1px solid rgba(21,63,99,.10);
}

/* cards: crisp white, restrained blue edge */
.media-card,
.service-card,
.info-card,
.feature-item,
.list-row{
  background:#fff;
  border:1px solid rgba(27,76,113,.10);
  box-shadow:0 16px 38px rgba(25,55,78,.07);
}
.service-card:hover:where(:not(.semc-touch-feedback)),
.list-row:hover:where(:not(.semc-touch-feedback)){
  background:#fff;
  box-shadow:0 24px 52px rgba(25,55,78,.12);
}
.feature-icon{
  background:linear-gradient(135deg,#2f74b5,#6aa6d3);
}
.service-card .arrow,
.list-row .go{
  background:#f0f5f9;
  color:#255f8d;
}

/* equipment keeps photography as the visual focus */
.equipment-card{
  box-shadow:0 18px 42px rgba(20,52,76,.10);
}

/* industry chips */
.chip{
  background:#fff;
  border:1px solid rgba(47,116,181,.14);
  color:#346b95;
}
.chip:hover:where(:not(.semc-touch-feedback)){
  background:#f8fbfd;
  border-color:rgba(47,116,181,.24);
}

/* process: remove the large dark-blue field completely */
.deep-blue .process{
  position:relative;
}
.deep-blue .process:before{
  content:"";
  position:absolute;
  left:4%;
  right:4%;
  top:17px;
  height:1px;
  background:linear-gradient(90deg,rgba(47,116,181,.10),rgba(47,116,181,.55),rgba(47,116,181,.10));
  z-index:0;
}
.step{
  position:relative;
  z-index:1;
  background:#fff;
  border:1px solid rgba(47,116,181,.14);
  box-shadow:0 14px 34px rgba(25,55,78,.07);
}
.step b{
  color:#2f74b5;
}
.step h3{
  color:#1d3446;
}
.step p{
  color:var(--muted);
}

/* CTA: white body with a subtle blue rule rather than a blue panel */
.cta-panel{
  background:#fff;
  border:1px solid rgba(47,116,181,.14);
  box-shadow:0 20px 48px rgba(25,55,78,.08);
  position:relative;
  overflow:hidden;
}
.cta-panel:before{
  content:"";
  position:absolute;
  left:0;top:0;bottom:0;
  width:5px;
  background:linear-gradient(180deg,#2f74b5 0%,#5d9dca 42%,#9a7b95 57%,#d34b58 100%);
}

/* inner page hero: clean white canvas with one geometric blue accent */
.page-hero{
  background:#fff;
}
.page-hero:before{
  width:230px;
  height:230px;
  right:3vw;
  top:116px;
  border-radius:34px;
  background:
    linear-gradient(135deg,rgba(47,116,181,.05),rgba(47,116,181,.13));
  border:1px solid rgba(47,116,181,.10);
  transform:rotate(12deg);
  filter:none;
}

/* footer clean white */
footer{
  background:#fff;
  border-top:1px solid rgba(21,63,99,.08);
}

/* mobile menu also white */
@media (max-width:980px){
  .nav-links{
    background:rgba(255,255,255,.98);
    border:1px solid rgba(21,63,99,.09);
  }
}

/* reduce any accidental gray-blue veil from overlays except hero text readability */
.media-card:after{
  background:linear-gradient(0deg,rgba(23,55,79,.30),transparent 48%);
}
.equipment-card:after{
  background:linear-gradient(0deg,rgba(18,50,74,.58),rgba(18,50,74,0) 54%);
}


/* ===== V5 HERO REFINEMENT =====
   Goal:
   1) remove blue veil from hero photo
   2) vertically center hero copy
   3) shift image focus to the right
   4) create a clean white-to-image gradient transition
*/



/* image occupies the right side and remains visually dominant */
.hero-media{
  position:absolute;
  z-index:0;
  top:0;
  right:0;
  bottom:0;
  left:34%;
  overflow:hidden;
  background:#fff;
}
.hero-media img{
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:67% center;
  transform:scale(1.015);
  transition:transform 1.4s var(--ease);
  filter:none !important;
}

/* remove previous global blue overlays entirely */
.hero:after{
  display:none !important;
}

/* dedicated natural white -> transparent blend between text and image */
.hero-media:before{
  content:"";
  position:absolute;
  z-index:2;
  inset:0 auto 0 0;
  width:48%;
  pointer-events:none;
  background:
    linear-gradient(
      90deg,
      rgba(255,255,255,1) 0%,
      rgba(255,255,255,.98) 18%,
      rgba(255,255,255,.88) 37%,
      rgba(255,255,255,.58) 58%,
      rgba(255,255,255,.22) 77%,
      rgba(255,255,255,0) 100%
    );
}

/* subtle bottom fade only, neutral and transparent */
.hero-media:after{
  content:"";
  position:absolute;
  z-index:1;
  left:0;right:0;bottom:0;
  height:18%;
  pointer-events:none;
  background:linear-gradient(0deg,rgba(255,255,255,.08),rgba(255,255,255,0));
}

/* content now centered vertically instead of sitting near the bottom */
.hero-content{
  position:relative;
  z-index:3;
  width:min(92vw,1360px);
  margin:0 auto;
  display:flex;
  align-items:center;
  min-height:calc(100svh - var(--nav-h) - 74px);
}

/* remove the old blue glass block; use clean white content area */
.hero-copy{
  width:min(690px,54vw);
  padding:34px 34px 34px 0;
  border-radius:0;
  background:transparent;
  backdrop-filter:none;
  border:0;
  box-shadow:none;
}

/* refined brand label */
.hero-kicker{
  color:#3d78a6;
  font-size:12px;
  font-weight:760;
  letter-spacing:.17em;
}
.hero-kicker i{
  width:34px;
  background:#3e82b8;
}

/* hero typography: crisp, dark, readable */
.hero h1{
  color:#183247;
  font-size:clamp(44px,5.2vw,72px);
  line-height:1.02;
  letter-spacing:-.05em;
  margin:18px 0 20px;
  max-width:650px;
  text-shadow:none;
}
.hero p{
  color:#5e7282;
  font-size:clamp(16px,1.45vw,20px);
  line-height:1.82;
  max-width:610px;
}

/* buttons now sit on white background */
.btn.primary{
  background:#2f74b5;
  color:#fff;
  border-color:#2f74b5;
  box-shadow:0 10px 28px rgba(47,116,181,.18);
}
.btn.ghost{
  background:#fff;
  color:#2e668f;
  border-color:rgba(47,116,181,.22);
  box-shadow:0 8px 22px rgba(23,55,78,.06);
}
.btn.ghost:hover{
  background:#f7fafc;
}

/* neutral scroll cue */
.scroll-cue{
  color:#48667e;
}


/* make the image feel slightly more right-weighted on larger screens */
@media (min-width:1280px){
  .hero-media{
    left:31%;
  }
  .hero-media img{
    object-position:70% center;
  }
  .hero-copy{
    width:min(700px,50vw);
  }
}

/* tablet: retain transition but give content more room */
@media (max-width:980px){
  
  .hero-media{
    left:18%;
  }
  .hero-media:before{
    width:64%;
    background:
      linear-gradient(
        90deg,
        rgba(255,255,255,1) 0%,
        rgba(255,255,255,.96) 24%,
        rgba(255,255,255,.78) 50%,
        rgba(255,255,255,.34) 76%,
        rgba(255,255,255,0) 100%
      );
  }
  .hero-copy{
    width:min(620px,68vw);
    padding-right:16px;
  }
}

/* phone: image stays full-width but fades cleanly behind content */
@media (max-width:700px){
  .hero{
    min-height:90svh;
    align-items:center;
    padding-top:calc(var(--nav-h) + 18px);
  }
  .hero-media{
    left:0;
    opacity:1;
  }
  .hero-media img{
    object-position:72% center;
  }
  .hero-media:before{
    width:100%;
    background:
      linear-gradient(
        90deg,
        rgba(255,255,255,.98) 0%,
        rgba(255,255,255,.92) 38%,
        rgba(255,255,255,.58) 68%,
        rgba(255,255,255,.20) 100%
      );
  }
  
  .hero-copy{
    width:88vw;
    padding:22px 10px 22px 0;
  }
  .hero h1{
    font-size:41px;
  }
  .hero p{
    max-width:82vw;
  }
}


/* ===== V6: neutral frosted glass + premium micro-interactions ===== */

/* HERO: full photo, no color veil, centered frosted-glass copy */
.hero{
  position:relative;
  min-height:100svh;
  display:flex;
  align-items:center;
  padding:calc(var(--nav-h) + 34px) 0 40px;
  overflow:hidden;
  background:#fff;
  isolation:isolate;
}

.hero-media{
  position:absolute;
  inset:0;
  z-index:0;
  overflow:hidden;
  background:#fff;
}

.hero-media img{
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:63% center;
  transform:scale(1.015);
  transition:transform 1.6s var(--ease), filter .6s var(--ease);
  filter:none !important;
}

/* remove every previous gradient / blue veil on hero */
.hero:after,
.hero-media:before,
.hero-media:after{
  display:none !important;
}

.hero-content{
  position:relative;
  z-index:3;
  width:min(92vw,1360px);
  margin:0 auto;
  min-height:calc(100svh - var(--nav-h) - 74px);
  display:flex;
  align-items:center;
}

.hero-copy{
  width:min(680px,54vw);
  padding:36px 38px 38px;
  border-radius:30px;
  background:rgba(255,255,255,.70);
  -webkit-backdrop-filter:blur(24px) saturate(118%);
  backdrop-filter:blur(24px) saturate(118%);
  border:1px solid rgba(255,255,255,.76);
  box-shadow:
    0 26px 70px rgba(22,46,66,.16),
    inset 0 1px 0 rgba(255,255,255,.82);
  transition:
    transform .55s var(--ease),
    box-shadow .55s var(--ease),
    background .55s var(--ease);
}

.hero-copy:hover{
  transform:translateY(-3px);
  background:rgba(255,255,255,.74);
  box-shadow:
    0 32px 86px rgba(22,46,66,.18),
    inset 0 1px 0 rgba(255,255,255,.90);
}

.hero-kicker{
  color:#47789b;
  font-size:12px;
  font-weight:760;
  letter-spacing:.16em;
}
.hero-kicker i{
  width:34px;
  background:#3b7eaf;
}

.hero h1{
  color:#183247;
  font-size:clamp(44px,5.2vw,72px);
  line-height:1.02;
  letter-spacing:-.05em;
  margin:18px 0 20px;
  max-width:640px;
  text-shadow:none;
}

.hero p{
  color:#5d7080;
  font-size:clamp(16px,1.42vw,20px);
  line-height:1.82;
  max-width:600px;
}

/* NAV: more tactile and refined */
.site-nav{
  overflow:visible;
  transition:
    top .35s var(--ease),
    background .35s var(--ease),
    box-shadow .35s var(--ease),
    transform .35s var(--ease);
}

.brand{
  transition:transform .30s var(--ease), opacity .30s var(--ease);
}
.brand:hover{
  transform:translateY(-1px);
}
.brand-logo{
  transition:transform .35s var(--ease), filter .35s var(--ease);
}
.brand:hover .brand-logo{
  transform:scale(1.018);
}
.brand-name{
  transition:color .30s var(--ease);
}
.brand:hover .brand-name{
  color:#236692;
}

.nav-link{
  overflow:hidden;
  transition:
    color .28s var(--ease),
    background .28s var(--ease),
    transform .28s var(--ease);
}
.nav-link:before{
  content:"";
  position:absolute;
  left:50%;
  bottom:5px;
  width:0;
  height:2px;
  border-radius:99px;
  background:#2f74b5;
  transform:translateX(-50%);
  transition:width .30s var(--ease);
}
.nav-link:hover{
  transform:translateY(-1px);
}
.nav-link:hover:before{
  width:28px;
}
.nav-link.active:after{
  display:none;
}
.nav-link.active:before{
  width:28px;
}

/* BUTTONS: subtle lift, arrow travel, light sweep */
.btn,
.blue-btn{
  position:relative;
  overflow:hidden;
  isolation:isolate;
  transition:
    transform .30s var(--ease),
    box-shadow .30s var(--ease),
    background .30s var(--ease),
    border-color .30s var(--ease);
}

.btn:before,
.blue-btn:before{
  content:"";
  position:absolute;
  z-index:-1;
  top:-70%;
  bottom:-70%;
  left:-45%;
  width:32%;
  transform:rotate(18deg);
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.42),transparent);
  transition:left .56s var(--ease);
}

.btn:hover:before,
.blue-btn:hover:before{
  left:115%;
}

.btn:hover,
.blue-btn:hover{
  transform:translateY(-3px);
}

.btn.primary{
  background:#2f74b5;
  color:#fff;
  border-color:#2f74b5;
  box-shadow:0 12px 28px rgba(47,116,181,.19);
}
.btn.primary:hover{
  background:#286ba7;
  box-shadow:0 16px 34px rgba(47,116,181,.24);
}
.btn.ghost{
  background:rgba(255,255,255,.86);
  color:#2e668f;
  border-color:rgba(47,116,181,.18);
  box-shadow:0 10px 24px rgba(25,55,78,.07);
}
.btn.ghost:hover{
  background:#fff;
  border-color:rgba(47,116,181,.30);
}
.btn span,
.blue-btn span{
  display:inline-block;
  transition:transform .30s var(--ease);
}
.btn:hover span,
.blue-btn:hover span{
  transform:translateX(4px);
}

/* cards: refined hover without looking "gamey" */
.service-card,
.info-card,
.feature-item,
.list-row,
.cta-panel{
  transition:
    transform .38s var(--ease),
    box-shadow .38s var(--ease),
    border-color .38s var(--ease),
    background .38s var(--ease);
}

.service-card:hover:where(:not(.semc-touch-feedback)){
  transform:translateY(-7px);
  border-color:rgba(47,116,181,.18);
  box-shadow:0 28px 62px rgba(25,55,78,.13);
}
.service-card:hover:where(:not(.semc-touch-feedback)) .arrow{
  transform:translateX(4px) rotate(-4deg);
  background:#e8f2f9;
}
.service-card .arrow{
  transition:transform .32s var(--ease), background .32s var(--ease);
}

.feature-item:hover:where(:not(.semc-touch-feedback)),
.info-card:hover:where(:not(.semc-touch-feedback)),
.list-row:hover:where(:not(.semc-touch-feedback)){
  transform:translateY(-4px);
  border-color:rgba(47,116,181,.16);
  box-shadow:0 20px 44px rgba(25,55,78,.10);
}

/* equipment images: smoother hover + caption lift */
.equipment-card{
  transition:transform .45s var(--ease), box-shadow .45s var(--ease);
}
.equipment-card:hover:where(:not(.semc-touch-feedback)){
  transform:translateY(-5px);
  box-shadow:0 28px 64px rgba(20,52,76,.15);
}
.equipment-card img{
  transition:transform 1.05s var(--ease), filter .55s var(--ease);
}
.equipment-card:hover:where(:not(.semc-touch-feedback)) img{
  transform:scale(1.045);
  filter:saturate(1.03) contrast(1.01);
}
.equip-meta{
  transition:transform .38s var(--ease);
}
.equipment-card:hover:where(:not(.semc-touch-feedback)) .equip-meta{
  transform:translateY(-3px);
}

/* page entrance: slightly more polished */
@keyframes pageIn{
  0%{
    opacity:0;
    transform:translateY(12px);
    filter:blur(2px);
  }
  100%{
    opacity:1;
    transform:none;
    filter:blur(0);
  }
}
.page.active{
  animation:pageIn .70s var(--ease) forwards;
}

/* section reveal: smoother */
.reveal{
  opacity:0;
  transform:translateY(22px);
  transition:
    opacity .82s var(--ease),
    transform .82s var(--ease);
}
.reveal.visible{
  opacity:1;
  transform:none;
}

/* subtle hover for chips */
.chip{
  transition:
    transform .28s var(--ease),
    border-color .28s var(--ease),
    box-shadow .28s var(--ease),
    color .28s var(--ease),
    background .28s var(--ease);
}
.chip:hover:where(:not(.semc-touch-feedback)){
  transform:translateY(-3px);
  border-color:rgba(47,116,181,.22);
  box-shadow:0 10px 22px rgba(25,55,78,.08);
  color:#245f89;
}

/* scroll cue */
.scroll-cue{
  color:#476479;
  transition:opacity .3s var(--ease), transform .3s var(--ease);
}
.scroll-cue .line{
  background:rgba(47,116,181,.45);
}

/* desktop keeps photo composition slightly to the right */
@media (min-width:1280px){
  .hero-media img{
    object-position:66% center;
  }
  .hero-copy{
    width:min(690px,50vw);
  }
}

/* tablet */
@media (max-width:980px){
  .hero{
    min-height:92svh;
  }
  .hero-copy{
    width:min(640px,70vw);
    padding:30px 30px 32px;
  }
  .hero-media img{
    object-position:67% center;
  }
}

/* mobile */
@media (max-width:700px){
  .hero{
    min-height:90svh;
    padding-top:calc(var(--nav-h) + 18px);
  }
  .hero-content{
    min-height:calc(90svh - var(--nav-h) - 28px);
  }
  .hero-copy{
    width:91vw;
    padding:24px 22px 25px;
    border-radius:24px;
    background:rgba(255,255,255,.76);
    -webkit-backdrop-filter:blur(18px) saturate(112%);
    backdrop-filter:blur(18px) saturate(112%);
  }
  .hero h1{
    font-size:40px;
  }
  .hero p{
    max-width:100%;
  }
  .hero-media img{
    object-position:70% center;
  }
}

/* Respect accessibility preferences */
@media (prefers-reduced-motion: reduce){
  *,
  *:before,
  *:after{
    scroll-behavior:auto !important;
    animation-duration:.01ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.01ms !important;
  }
}


/* =========================================================
   V12 — CLEAN / CRISP NAVIGATION HOVER
   No blur, no gradients, no overlapping pseudo-elements.
   ========================================================= */

/* Give navigation items enough breathing room. */
.nav-links{
  gap:8px !important;
}

/* Remove every old underline / floating pseudo-element. */


/* Crisp base item. */
.nav-link{
  position:relative !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;

  min-height:40px !important;
  padding:0 13px !important;

  border:1px solid transparent !important;
  border-radius:12px !important;

  background:transparent !important;
  color:#35556d !important;
  box-shadow:none !important;

  transform:none !important;

  transition:
    background-color .20s ease,
    border-color .20s ease,
    color .20s ease,
    transform .20s ease,
    box-shadow .20s ease !important;
}

/* Clear, visible hover feedback. */
.nav-link:hover{
  background:#eef5fb !important;
  border-color:#b9d3e6 !important;
  color:#184f76 !important;

  transform:translateY(-1px) !important;

  box-shadow:
    0 5px 14px rgba(28,73,106,.08) !important;
}

/* Active page: a little stronger than hover, but still clean. */
.nav-link.active{
  background:#e7f0f8 !important;
  border-color:#9fc5df !important;
  color:#15557f !important;

  box-shadow:
    inset 0 -2px 0 #3f83b6,
    0 3px 10px rgba(28,73,106,.06) !important;
}

/* Hover current page. */
.nav-link.active:hover{
  background:#dfeaf4 !important;
  border-color:#8ab7d7 !important;
  color:#10496f !important;

  transform:translateY(-1px) !important;

  box-shadow:
    inset 0 -2px 0 #3579aa,
    0 6px 15px rgba(28,73,106,.09) !important;
}

/* Press feedback. */
.nav-link:active{
  transform:translateY(0) scale(.985) !important;
  box-shadow:
    inset 0 1px 2px rgba(25,58,82,.08) !important;
}

/* Keyboard focus. */
.nav-link:focus-visible{
  outline:none !important;
  background:#eef5fb !important;
  border-color:#7faed0 !important;
  box-shadow:
    0 0 0 3px rgba(63,131,182,.13) !important;
}

/* Explicitly remove stray decorative rules around the nav. */


/* Mobile spacing */
@media (max-width:980px){
  .nav-links{
    gap:6px !important;
  }
  .nav-link{
    min-height:44px !important;
    padding:0 14px !important;
    justify-content:flex-start !important;
  }
}


/* =========================================================
   V13 — V3-STYLE FROSTED NAV + REFINED ACTIVE STATE
   - Nav bar returns to the softer transparent V3 glass feel
   - Active item becomes quiet / premium, no thick border, no blue underline
   - Hover remains clear and crisp
   ========================================================= */

/* ----- NAV BAR: restore V3-style transparent frosted glass ----- */
.site-nav{
  position:fixed !important;
  z-index:1000 !important;
  left:50% !important;
  top:14px !important;
  transform:translateX(-50%) !important;

  width:min(96vw,1560px) !important;
  height:70px !important;
  padding:0 22px 0 18px !important;

  display:flex !important;
  align-items:center !important;
  gap:20px !important;

  /* V3-like translucent material */
  background:rgba(246,250,253,.76) !important;
  -webkit-backdrop-filter:blur(24px) saturate(145%) !important;
  backdrop-filter:blur(24px) saturate(145%) !important;

  border:1px solid rgba(255,255,255,.78) !important;
  border-radius:24px !important;

  box-shadow:
    0 18px 45px rgba(32,81,120,.10),
    inset 0 1px 0 rgba(255,255,255,.72) !important;

  overflow:visible !important;

  transition:
    top .35s var(--ease),
    background .35s var(--ease),
    box-shadow .35s var(--ease),
    border-color .35s var(--ease) !important;
}

.site-nav.scrolled{
  top:8px !important;
  background:rgba(248,251,253,.86) !important;
  border-color:rgba(255,255,255,.86) !important;
  box-shadow:
    0 16px 42px rgba(32,81,120,.13),
    inset 0 1px 0 rgba(255,255,255,.80) !important;
}

/* Mobile flyout uses the same material language. */
@media (max-width:980px){
  .nav-links{
    background:rgba(248,251,253,.92) !important;
    -webkit-backdrop-filter:blur(24px) saturate(145%) !important;
    backdrop-filter:blur(24px) saturate(145%) !important;
    border:1px solid rgba(255,255,255,.88) !important;
    box-shadow:0 18px 46px rgba(32,81,120,.12) !important;
  }
}

/* ----- NAV ITEMS ----- */
.nav-links{
  gap:7px !important;
}



.nav-link{
  position:relative !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;

  min-height:40px !important;
  padding:0 13px !important;

  border:1px solid transparent !important;
  border-radius:12px !important;

  background:transparent !important;
  color:#3b5669 !important;
  box-shadow:none !important;

  transform:none !important;

  transition:
    color .22s ease,
    background-color .22s ease,
    border-color .22s ease,
    transform .22s ease,
    box-shadow .22s ease !important;
}

/* Hover: visible, but clean. No blur / no gradients. */
.nav-link:hover{
  color:#183f5c !important;
  background:rgba(255,255,255,.66) !important;
  border-color:rgba(255,255,255,.72) !important;

  transform:translateY(-1px) !important;

  box-shadow:
    0 6px 15px rgba(29,63,88,.075),
    inset 0 1px 0 rgba(255,255,255,.82) !important;
}

/* Active: intentionally flatter than V12.
   No thick blue border, no underline, no "button floating above nav". */
.nav-link.active{
  color:#163c58 !important;

  background:rgba(255,255,255,.50) !important;

  border-color:rgba(255,255,255,.58) !important;

  transform:none !important;

  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.76),
    inset 0 0 0 1px rgba(40,75,100,.035),
    0 2px 7px rgba(28,60,84,.045) !important;
}

/* Current item on hover can lift slightly, matching the rest. */
.nav-link.active:hover{
  color:#123953 !important;
  background:rgba(255,255,255,.72) !important;
  border-color:rgba(255,255,255,.78) !important;

  transform:translateY(-1px) !important;

  box-shadow:
    0 7px 16px rgba(29,63,88,.08),
    inset 0 1px 0 rgba(255,255,255,.88) !important;
}

/* Press feedback */
.nav-link:active,
.nav-link.active:active{
  transform:translateY(0) scale(.985) !important;

  background:rgba(255,255,255,.58) !important;

  box-shadow:
    inset 0 1px 2px rgba(25,58,82,.06) !important;
}

/* Keyboard focus */
.nav-link:focus-visible{
  outline:none !important;
  color:#153e5a !important;
  background:rgba(255,255,255,.72) !important;
  border-color:rgba(99,145,177,.22) !important;
  box-shadow:
    0 0 0 3px rgba(67,126,166,.10),
    inset 0 1px 0 rgba(255,255,255,.85) !important;
}

/* Remove any leftover decorative rules or indicators. */
.nav-links::before,
.nav-links::after,
.site-nav .nav-link > .line,
.site-nav .nav-link > .indicator,
.site-nav .nav-link > i{
  content:none !important;
  display:none !important;
}

/* Keep company name on one line. */
.brand-name{
  white-space:nowrap !important;
}


/* =========================================================
   V14 — TRUE V3 GLASS MATERIAL
   Exact V3 material language, transplanted into the current layout.
   ========================================================= */

:root{
  --v3-glass:rgba(255,255,255,.74);
  --v3-glass-strong:rgba(255,255,255,.80);
  --v3-glass-border:rgba(255,255,255,.92);
  --v3-shadow:0 24px 70px rgba(52,88,128,.14);
  --v3-shadow-soft:0 14px 42px rgba(52,88,128,.10);
  --v3-nav-shadow:0 10px 40px rgba(57,89,125,.10);
}

/* ---------------------------------------------------------
   1) TOP NAV — exact V3 glass material, current proportions
   --------------------------------------------------------- */
.site-nav{
  top:14px !important;
  height:70px !important;
  width:min(96vw,1560px) !important;
  padding:0 22px 0 18px !important;
  gap:20px !important;

  background:var(--v3-glass) !important;
  border:1px solid var(--v3-glass-border) !important;
  border-radius:25px !important;

  -webkit-backdrop-filter:blur(24px) saturate(1.3) !important;
  backdrop-filter:blur(24px) saturate(1.3) !important;

  box-shadow:var(--v3-nav-shadow) !important;

  /* V3 did not use a blue-tinted inner glow */
  overflow:visible !important;
}

.site-nav.scrolled{
  top:8px !important;

  /* Keep the same material instead of turning opaque/blue when scrolling */
  background:rgba(255,255,255,.79) !important;
  border-color:rgba(255,255,255,.94) !important;

  box-shadow:
    0 11px 42px rgba(57,89,125,.115) !important;
}

/* Brand keeps current one-line full company name. */
.brand-name{
  color:#294f70 !important;
  white-space:nowrap !important;
}

/* ---------------------------------------------------------
   2) NAV ITEMS — no thick selected outline
   --------------------------------------------------------- */
.nav-links{
  gap:3px !important;
}

.nav-link,
.nav-link.active,
.nav-link:hover,
.nav-link.active:hover{
  border:0 !important;
  box-shadow:none !important;
}

.nav-link::before,
.nav-link::after,
.nav-link:before,
.nav-link:after{
  content:none !important;
  display:none !important;
}

.nav-link{
  padding:10px 11px !important;
  border-radius:14px !important;
  color:#46617e !important;
  background:transparent !important;

  transition:
    background-color .25s ease,
    color .25s ease,
    transform .25s ease !important;
}

/* This is deliberately close to V3's hover, with no blur effect. */
.nav-link:hover{
  background:rgba(234,242,251,.76) !important;
  color:#245ca6 !important;
  transform:translateY(-1px) !important;
}

/* Active is quieter than the old thick V12 style. */
.nav-link.active{
  color:#245ca6 !important;
  background:rgba(237,244,253,.78) !important;
  transform:none !important;
}

.nav-link.active:hover{
  background:rgba(230,240,251,.92) !important;
  color:#1f5599 !important;
  transform:translateY(-1px) !important;
}

/* ---------------------------------------------------------
   3) HOME HERO COPY — V3 material, no blue cast
   --------------------------------------------------------- */
.hero-copy{
  width:min(680px,54vw) !important;
  padding:36px 38px 38px !important;
  border-radius:30px !important;

  background:var(--v3-glass) !important;
  border:1px solid var(--v3-glass-border) !important;

  -webkit-backdrop-filter:blur(24px) saturate(1.3) !important;
  backdrop-filter:blur(24px) saturate(1.3) !important;

  box-shadow:
    0 18px 54px rgba(52,88,128,.13) !important;
}

/* Keep text readable against the large photograph. */
.hero-copy h1,
.hero-copy .hero-kicker,
.hero-copy .hero-lead,
.hero-copy p{
  text-shadow:none !important;
}

/* ---------------------------------------------------------
   4) PHOTO LABELS / CAPTIONS — based on V3 photo-caption
   --------------------------------------------------------- */
.media-caption,
.gallery-2 .label,
.photo-caption{
  background:var(--v3-glass-strong) !important;
  border:1px solid var(--v3-glass-border) !important;

  -webkit-backdrop-filter:blur(18px) saturate(1.22) !important;
  backdrop-filter:blur(18px) saturate(1.22) !important;

  box-shadow:0 8px 26px rgba(46,77,111,.10) !important;
}

/* Current pages sometimes use white text on labels; V3-style glass reads better dark. */
.media-caption,
.gallery-2 .label{
  color:#17385e !important;
}

/* ---------------------------------------------------------
   5) CONTENT GLASS CARDS — make translucent cards consistent
   --------------------------------------------------------- */
.feature-item,
.list-row{
  background:rgba(255,255,255,.72) !important;
  border-color:rgba(255,255,255,.92) !important;
  box-shadow:0 9px 26px rgba(57,88,121,.055) !important;
}

/* ---------------------------------------------------------
   6) MOBILE — same glass formula, reduced blur for performance
   --------------------------------------------------------- */
@media (max-width:980px){
  .site-nav{
    background:rgba(255,255,255,.78) !important;
    -webkit-backdrop-filter:blur(20px) saturate(1.3) !important;
    backdrop-filter:blur(20px) saturate(1.3) !important;
  }

  .nav-links{
    background:rgba(255,255,255,.90) !important;
    border:1px solid rgba(255,255,255,.96) !important;
    -webkit-backdrop-filter:blur(24px) saturate(1.3) !important;
    backdrop-filter:blur(24px) saturate(1.3) !important;
    box-shadow:var(--v3-shadow-soft) !important;
  }
}

@media (max-width:720px){
  .hero-copy{
    width:91vw !important;
    padding:24px 22px 25px !important;
    border-radius:24px !important;
    background:rgba(255,255,255,.78) !important;
    -webkit-backdrop-filter:blur(18px) saturate(1.24) !important;
    backdrop-filter:blur(18px) saturate(1.24) !important;
  }
}

/* Transparency accessibility fallback */
@media (prefers-reduced-transparency: reduce){
  .site-nav,
  .hero-copy,
  .media-caption,
  .gallery-2 .label,
  .photo-caption{
    background:rgba(255,255,255,.94) !important;
    -webkit-backdrop-filter:none !important;
    backdrop-filter:none !important;
  }
}


/* =========================================================
   SEMC WEBSITE TEST V1
   Navigation / Brand / Home content / Footer refinement
   ========================================================= */
:root{
  --semc-blue:#245ca6;
  --semc-blue-2:#3f83b6;
  --semc-red:#d6293e;
  --semc-ink:#17344f;
}

/* Brand: larger logo without making the header bulky */
.brand{flex:1 1 auto;gap:16px!important}
.brand-logo{
  width:162px!important;
  height:54px!important;
  object-fit:contain!important;
  transform-origin:left center;
}
.brand:hover .brand-logo{transform:scale(1.025)!important}

/* Navigation material can switch between light/dark contexts.
   The page observer below updates data-nav-theme automatically. */
.site-nav{
  --nav-text:#35556d;
  --nav-text-active:#174e78;
  --nav-focus:rgba(255,255,255,.74);
}
.site-nav[data-nav-theme="dark"]{
  --nav-text:#f5f8fb;
  --nav-text-active:#ffffff;
  background:rgba(18,44,67,.48)!important;
  border-color:rgba(255,255,255,.26)!important;
  box-shadow:0 12px 42px rgba(10,31,48,.18)!important;
}
.site-nav[data-nav-theme="dark"] .brand-name{
  color:#fff!important;
  text-shadow:0 1px 12px rgba(0,0,0,.16);
}

.nav-links{gap:9px!important}
.nav-link,
.nav-link:hover,
.nav-link.active,
.nav-link.active:hover{
  position:relative!important;
  overflow:visible!important;
  min-height:42px!important;
  padding:0 11px 10px!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
  color:var(--nav-text)!important;
  transform:none!important;
  transition:color .24s ease, transform .24s ease!important;
}
.nav-link:hover,
.nav-link.active,
.nav-link.active:hover{
  color:var(--nav-text-active)!important;
}
.nav-link:hover{transform:translateY(-1px)!important}

/* Re-enable one clean indicator and animate it */
.nav-link::before{
  content:""!important;
  display:block!important;
  position:absolute!important;
  left:50%!important;
  bottom:3px!important;
  width:0!important;
  height:3px!important;
  border-radius:99px!important;
  transform:translateX(-50%)!important;
  background:linear-gradient(90deg,var(--semc-blue) 0 66%,var(--semc-red) 66% 100%)!important;
  box-shadow:0 1px 7px rgba(36,92,166,.15)!important;
  opacity:0!important;
  transition:
    width .34s cubic-bezier(.22,.61,.36,1),
    opacity .20s ease!important;
}

.nav-link:hover::before,
.nav-link.active::before{
  width:76%!important;
  opacity:1!important;
}
.nav-link:active{transform:translateY(0) scale(.985)!important}
.nav-link:focus-visible{
  outline:2px solid rgba(63,131,182,.22)!important;
  outline-offset:4px!important;
}

/* Mobile keeps a compact but still larger logo */
@media(max-width:980px){
  .brand-logo{width:136px!important;height:47px!important}
  .nav-link{padding:0 10px 9px!important;justify-content:flex-start!important}
  .nav-link::before{left:10px!important;transform:none!important}
  .nav-link:hover::before,.nav-link.active::before{width:42px!important}
}
@media(max-width:700px){
  .brand-logo{width:118px!important;height:40px!important}
}

/* Home proof points */
.home-proof{
  background:#fff;
  border-top:1px solid rgba(21,63,99,.07);
  border-bottom:1px solid rgba(21,63,99,.07);
}
.home-proof-grid{
  width:min(92vw,1360px);
  margin:0 auto;
  display:grid;
  grid-template-columns:repeat(4,1fr);
}
.home-proof-item{
  padding:30px 26px;
  border-right:1px solid rgba(21,63,99,.09);
}
.home-proof-item:last-child{border-right:0}
.home-proof-item strong{
  display:block;
  color:#173f63;
  font-size:20px;
  margin-bottom:7px;
}
.home-proof-item span{color:#6e7f8d;font-size:13px;line-height:1.7}

/* Corporate footer */
.corp-footer{
  background:#121619!important;
  color:#aeb8bf!important;
  padding:54px 0 24px!important;
  border-top:0!important;
}
.footer-main{
  display:grid;
  grid-template-columns:1.45fr .8fr .8fr 1fr;
  gap:42px;
  align-items:start;
}
.footer-brand-block .footer-brand{margin-bottom:18px}
.footer-brand-block .footer-brand img{
  width:156px!important;
  height:52px!important;
  filter:brightness(0) invert(1);
  opacity:.96;
}
.footer-brand-block h3,
.footer-col h3{
  color:#fff;
  font-size:15px;
  margin:0 0 16px;
}
.footer-brand-block p,.footer-col a,.footer-col p{
  color:#9da8b0;
  font-size:13px;
  line-height:1.9;
  margin:0;
}
.footer-col a{
  display:block;
  transition:color .2s ease,transform .2s ease;
}
.footer-col a:hover{color:#fff;transform:translateX(3px)}
.footer-hotline{
  color:#fff!important;
  font-size:28px!important;
  letter-spacing:.02em;
  margin:10px 0 12px!important;
}
.footer-bottom{
  margin-top:34px;
  padding-top:18px;
  border-top:1px solid rgba(255,255,255,.10);
  display:flex;
  justify-content:space-between;
  gap:20px;
  font-size:12px;
  color:#7f8b93;
}
@media(max-width:900px){
  .home-proof-grid{grid-template-columns:1fr 1fr}
  .home-proof-item:nth-child(2){border-right:0}
  .footer-main{grid-template-columns:1fr 1fr}
}
@media(max-width:620px){
  .home-proof-grid,.footer-main{grid-template-columns:1fr}
  .home-proof-item{border-right:0;border-bottom:1px solid rgba(21,63,99,.09)}
  .footer-bottom{flex-direction:column}
}




/* =========================================================
   SEMC V2 — MULTI-PAGE / HERO / NAV INDICATOR UPDATE
   ========================================================= */
html{background:#fff}
body{min-height:100vh}
.page{
  display:block!important;
  opacity:1!important;
  transform:none!important;
  animation:none!important;
}
.cms-hidden{display:none!important}

/* A lighter, more natural 50/50 blue-red transition under nav text. */
.nav-link::before{
  content:""!important;
  display:block!important;
  position:absolute!important;
  left:50%!important;
  bottom:3px!important;
  width:0!important;
  height:2px!important;
  border-radius:999px!important;
  transform:translateX(-50%) scaleX(.86)!important;
  transform-origin:center!important;
  opacity:0!important;
  background:
    linear-gradient(90deg,
      #245ca6 0%,
      #245ca6 38%,
      #4778ad 44%,
      #756f9a 49%,
      #9b5f82 52%,
      #bd4664 58%,
      #d6293e 64%,
      #d6293e 100%)!important;
  box-shadow:
    0 1px 5px rgba(36,92,166,.10),
    0 1px 5px rgba(214,41,62,.08)!important;
  transition:
    width .34s cubic-bezier(.22,.61,.36,1),
    opacity .22s ease,
    transform .34s cubic-bezier(.22,.61,.36,1)!important;
}
.nav-link:hover::before{
  width:64%!important;
  opacity:.88!important;
  transform:translateX(-50%) scaleX(1)!important;
}
.nav-link.active::before,
.nav-link.active:hover::before{
  width:74%!important;
  opacity:1!important;
  transform:translateX(-50%) scaleX(1)!important;
}
.nav-link::after{content:none!important;display:none!important}

/* HOME HERO: photography first, unboxed copy at bottom-left. */
body[data-page-id="home"] .hero{
  min-height:96svh!important;
  display:flex!important;
  align-items:flex-end!important;
  padding:calc(var(--nav-h) + 34px) 0 58px!important;
  background:#102536!important;
  border-bottom:1px solid rgba(21,63,99,.08);
}
body[data-page-id="home"] .hero-media{
  position:absolute!important;
  inset:0!important;
}
body[data-page-id="home"] .hero-media img{
  object-position:62% center!important;
  transform:scale(1.012);
}
body[data-page-id="home"] .hero::after{
  content:""!important;
  display:block!important;
  position:absolute!important;
  inset:0!important;
  z-index:1!important;
  pointer-events:none!important;
  background:
    linear-gradient(180deg,
      rgba(5,19,30,0) 46%,
      rgba(5,19,30,.08) 64%,
      rgba(5,19,30,.48) 100%),
    linear-gradient(90deg,
      rgba(7,28,43,.42) 0%,
      rgba(7,28,43,.20) 30%,
      rgba(7,28,43,0) 60%)!important;
}
body[data-page-id="home"] .hero-content{
  position:relative!important;
  z-index:3!important;
  width:min(92vw,1360px)!important;
  min-height:auto!important;
  margin:0 auto!important;
  display:flex!important;
  align-items:flex-end!important;
}
body[data-page-id="home"] .hero-copy{
  width:min(575px,58vw)!important;
  padding:0!important;
  margin:0!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
  -webkit-backdrop-filter:none!important;
  backdrop-filter:none!important;
  transform:none!important;
}
body[data-page-id="home"] .hero-copy:hover{
  transform:none!important;
  background:transparent!important;
  box-shadow:none!important;
}
body[data-page-id="home"] .hero-kicker{
  color:rgba(255,255,255,.82)!important;
  font-size:10.5px!important;
  letter-spacing:.18em!important;
  text-shadow:0 2px 16px rgba(0,0,0,.22)!important;
}
body[data-page-id="home"] .hero-kicker i{
  background:linear-gradient(90deg,#66a1d4,#d94c60)!important;
}
body[data-page-id="home"] .hero h1{
  color:#fff!important;
  font-size:clamp(34px,4.35vw,58px)!important;
  line-height:1.04!important;
  letter-spacing:-.045em!important;
  margin:13px 0 15px!important;
  max-width:560px!important;
  text-shadow:0 4px 30px rgba(0,0,0,.28)!important;
}
body[data-page-id="home"] .hero p{
  color:rgba(255,255,255,.88)!important;
  font-size:clamp(14px,1.18vw,17px)!important;
  line-height:1.78!important;
  max-width:540px!important;
  text-shadow:0 3px 22px rgba(0,0,0,.22)!important;
}
body[data-page-id="home"] .hero-actions{
  margin-top:20px!important;
  gap:10px!important;
}
body[data-page-id="home"] .hero .btn{
  padding:11px 16px!important;
  font-size:13px!important;
}
body[data-page-id="home"] .hero .btn.primary{
  background:rgba(255,255,255,.94)!important;
  color:#173f63!important;
  border-color:rgba(255,255,255,.88)!important;
  box-shadow:0 10px 26px rgba(0,0,0,.13)!important;
}
body[data-page-id="home"] .hero .btn.ghost{
  background:rgba(15,40,58,.22)!important;
  color:#fff!important;
  border-color:rgba(255,255,255,.38)!important;
  -webkit-backdrop-filter:blur(8px)!important;
  backdrop-filter:blur(8px)!important;
}
body[data-page-id="home"] .scroll-cue{
  color:rgba(255,255,255,.78)!important;
}
body[data-page-id="home"] .scroll-cue .line{
  background:linear-gradient(90deg,#6ea7d6,#dc4b60)!important;
  opacity:.8;
}

/* A deliberate white landing zone between the hero photograph and content.
   This prevents the first content block from visually melting into the image. */
body[data-page-id="home"] .stat-strip{
  position:relative!important;
  z-index:5!important;
  background:#fff!important;
  border-top:0!important;
  border-bottom:1px solid rgba(21,63,99,.09)!important;
  box-shadow:0 -14px 34px rgba(18,45,66,.06),0 14px 34px rgba(18,45,66,.035)!important;
}
body[data-page-id="home"] .stat-strip::before{
  content:"";
  position:absolute;
  top:0;left:0;right:0;height:1px;
  background:rgba(255,255,255,.95);
}
body[data-page-id="home"] .stat-item{
  padding-top:34px!important;
  padding-bottom:34px!important;
}
body[data-page-id="home"] [data-module="homeAbout"]{
  padding-top:132px!important;
}
body[data-page-id="home"] [data-module="homeAbout"] .split{
  gap:72px!important;
}
body[data-page-id="home"] [data-module="homeAbout"] .media-card{
  border:1px solid rgba(21,63,99,.10)!important;
  box-shadow:0 22px 52px rgba(25,55,78,.10)!important;
}

/* Inner pages are now true independent pages, so the page hero can enter normally. */
body:not([data-page-id="home"]) .page-hero{
  padding-top:calc(var(--nav-h) + 92px)!important;
}
body:not([data-page-id="home"]) .page{
  padding-top:0;
}

/* Links that now navigate to individual pages feel more obviously clickable. */
.service-card,.equipment-card,.chip,.footer-col a,.blue-btn,.btn{
  cursor:pointer;
}

/* Responsive hero placement. */
@media(max-width:980px){
  body[data-page-id="home"] .hero{
    min-height:88svh!important;
    padding-bottom:42px!important;
  }
  body[data-page-id="home"] .hero-copy{
    width:min(590px,74vw)!important;
  }
  body[data-page-id="home"] .hero h1{
    font-size:clamp(34px,6vw,52px)!important;
  }
  body[data-page-id="home"] .hero-media img{
    object-position:66% center!important;
  }
}
@media(max-width:700px){
  body[data-page-id="home"] .hero{
    min-height:84svh!important;
    padding-bottom:30px!important;
  }
  body[data-page-id="home"] .hero-copy{
    width:90vw!important;
    padding:0!important;
    background:transparent!important;
  }
  body[data-page-id="home"] .hero h1{
    font-size:36px!important;
    margin-bottom:12px!important;
  }
  body[data-page-id="home"] .hero p{
    font-size:14px!important;
    max-width:88vw!important;
  }
  body[data-page-id="home"] .hero-actions{
    margin-top:15px!important;
  }
  body[data-page-id="home"] .stat-item{
    padding:24px 22px!important;
  }
  body[data-page-id="home"] [data-module="homeAbout"]{
    padding-top:88px!important;
  }
}

/* =========================================================
   CMS V2.1 — admin-controlled navigation logo size
   Default values exactly match the existing V2 visual sizes.
   ========================================================= */
:root{
  --cms-logo-width:162px;
  --cms-logo-width-tablet:136px;
  --cms-logo-width-mobile:118px;
}
.brand-logo{
  width:var(--cms-logo-width)!important;
  height:auto!important;
  max-height:54px!important;
}
@media(max-width:980px){
  .brand-logo{width:var(--cms-logo-width-tablet)!important;max-height:47px!important}
}
@media(max-width:700px){
  .brand-logo{width:var(--cms-logo-width-mobile)!important;max-height:40px!important}
}

/* =========================================================
   SEMC V2.2 — HERO POSITION / FIXED MEDIA / CLEARER GLASS
   ========================================================= */
:root{
  --cms-hero-text-x:0px;
  --cms-hero-text-y:0px;
}

/* 1) The homepage cover now occupies exactly one viewport. */
body[data-page-id="home"] .hero{
  height:100svh!important;
  min-height:100svh!important;
  max-height:none!important;
  box-sizing:border-box!important;
}
body[data-page-id="home"] .hero-copy,
body[data-page-id="home"] .hero-copy:hover{
  transform:translate3d(var(--cms-hero-text-x),var(--cms-hero-text-y),0)!important;
}
@media(max-width:980px){
  body[data-page-id="home"] .hero{height:100svh!important;min-height:100svh!important;}
}
@media(max-width:700px){
  body[data-page-id="home"] .hero{height:100svh!important;min-height:100svh!important;}
  body[data-page-id="home"] .hero-copy,
  body[data-page-id="home"] .hero-copy:hover{
    transform:translate3d(clamp(-80px,var(--cms-hero-text-x),80px),clamp(-120px,var(--cms-hero-text-y),120px),0)!important;
  }
}

/* 2) A slightly clearer / more transparent frosted navigation material. */
.site-nav{
  background:rgba(255,255,255,.58)!important;
  border-color:rgba(255,255,255,.70)!important;
  -webkit-backdrop-filter:blur(28px) saturate(1.36)!important;
  backdrop-filter:blur(28px) saturate(1.36)!important;
  box-shadow:0 12px 38px rgba(35,67,92,.085)!important;
}
.site-nav.scrolled{
  background:rgba(255,255,255,.66)!important;
  border-color:rgba(255,255,255,.78)!important;
  box-shadow:0 12px 40px rgba(35,67,92,.10)!important;
}
.site-nav[data-nav-theme="dark"]{
  background:rgba(14,35,51,.30)!important;
  border-color:rgba(255,255,255,.24)!important;
  -webkit-backdrop-filter:blur(28px) saturate(1.30)!important;
  backdrop-filter:blur(28px) saturate(1.30)!important;
  box-shadow:0 12px 38px rgba(7,23,35,.14)!important;
}
.site-nav[data-nav-theme="dark"].scrolled{
  background:rgba(14,35,51,.38)!important;
  border-color:rgba(255,255,255,.28)!important;
}
@media(max-width:980px){
  .nav-links{
    background:rgba(255,255,255,.80)!important;
    -webkit-backdrop-filter:blur(28px) saturate(1.34)!important;
    backdrop-filter:blur(28px) saturate(1.34)!important;
  }
}

/* 3) Fixed presentation ratios. Replacing a source image never changes layout. */
.hero-media{aspect-ratio:auto;}
.hero-media img,
.media-card img,
.equipment-card img,
.image-banner img,
.gallery-2 .photo img,
.cms-dynamic-module img{
  width:100%!important;
  height:100%!important;
  object-fit:cover!important;
}
.media-card{
  aspect-ratio:4/3!important;
  min-height:0!important;
}
.image-banner{
  aspect-ratio:16/7!important;
  height:auto!important;
  min-height:0!important;
}
.gallery-2 .photo{
  aspect-ratio:4/3!important;
  min-height:0!important;
}
.equipment-card{
  min-height:0!important;
  align-self:start;
}

.equipment-card.small{aspect-ratio:4/3!important;}
.brand-logo,
.footer-brand img{
  object-fit:contain!important;
}
@media(max-width:980px){
  .equipment-card.large,.equipment-card.small{aspect-ratio:16/9!important;}
}

/* 4) Added modules use only the website's existing visual vocabulary. */
.cms-dynamic-module{
  position:relative;
}
.cms-dynamic-module .media-card,
.cms-dynamic-gallery .photo{
  overflow:hidden;
}
.cms-dynamic-cards .service-card{
  min-height:310px;
}
.cms-dynamic-process{
  grid-template-columns:repeat(4,1fr)!important;
}
.cms-dynamic-feature-list{
  max-width:920px;
}
.cms-dynamic-stats{
  border-top:1px solid rgba(21,63,99,.07);
  border-bottom:1px solid rgba(21,63,99,.07);
}
@media(max-width:900px){
  .cms-dynamic-process{grid-template-columns:1fr 1fr!important;}
}
@media(max-width:620px){
  .cms-dynamic-process{grid-template-columns:1fr!important;}
}
/* Fixed logo frame ratio as well: different replacement artwork cannot resize the header. */
.brand-logo{
  aspect-ratio:3/1!important;
  height:calc(var(--cms-logo-width) / 3)!important;
  object-fit:contain!important;
}
@media(max-width:980px){.brand-logo{height:calc(var(--cms-logo-width-tablet) / 3)!important;}}
@media(max-width:700px){.brand-logo{height:calc(var(--cms-logo-width-mobile) / 3)!important;}}

/* =========================================================
   SEMC V2.3 — viewport lock / capability cards / contact info
   ========================================================= */
:root{--cms-viewport-h:100vh}

/* The homepage cover is pinned to the actual browser viewport height.
   JS refreshes --cms-viewport-h on resize, while 100dvh/100vh remain fallbacks. */
body[data-page-id="home"] .hero{
  height:var(--cms-viewport-h,100vh)!important;
  min-height:var(--cms-viewport-h,100vh)!important;
  max-height:var(--cms-viewport-h,100vh)!important;
  padding-bottom:58px!important;
  margin:0!important;
}
@supports(height:100dvh){
  body[data-page-id="home"] .hero{
    height:var(--cms-viewport-h,100dvh)!important;
    min-height:var(--cms-viewport-h,100dvh)!important;
    max-height:var(--cms-viewport-h,100dvh)!important;
  }
}

/* Homepage capability summary — three independent premium cards rather than a flat strip. */
body[data-page-id="home"] .stat-strip{
  margin-top:0!important;
  padding:34px 0 42px!important;
  background:linear-gradient(180deg,#f8fafc 0%,#f2f6f9 100%)!important;
  border-top:0!important;
  border-bottom:1px solid rgba(22,63,94,.08)!important;
  box-shadow:none!important;
}

body[data-page-id="home"] .stat-grid{gap:16px!important}
body[data-page-id="home"] .stat-item{
  position:relative;
  min-height:158px;
  padding:28px 28px 25px 30px!important;
  border:1px solid rgba(36,80,113,.09)!important;
  border-right:1px solid rgba(36,80,113,.09)!important;
  border-radius:22px;
  background:
    radial-gradient(circle at 92% 10%,rgba(101,161,207,.13),transparent 34%),
    linear-gradient(145deg,rgba(255,255,255,.98),rgba(246,250,252,.95));
  box-shadow:0 16px 42px rgba(27,61,86,.07);
  overflow:hidden;
  transition:transform .34s var(--ease),box-shadow .34s var(--ease),border-color .34s var(--ease);
}
body[data-page-id="home"] .stat-item::before{
  position:absolute;right:18px;top:13px;
  font-size:46px;font-weight:820;line-height:1;letter-spacing:-.06em;
  color:rgba(34,85,122,.055);
}
body[data-page-id="home"] .stat-item:nth-child(1)::before{content:"01"}
body[data-page-id="home"] .stat-item:nth-child(2)::before{content:"02"}
body[data-page-id="home"] .stat-item:nth-child(3)::before{content:"03"}
body[data-page-id="home"] .stat-item::after{
  content:"";position:absolute;left:0;top:0;bottom:0;width:3px;
  background:linear-gradient(180deg,#5b9bcb 0%,#7b96ad 48%,#d94a5d 100%);
  opacity:.82;
}
body[data-page-id="home"] .stat-item strong{
  position:relative;z-index:1;font-size:18px!important;color:#173f61!important;margin:8px 0 10px!important;
}
body[data-page-id="home"] .stat-item>span{
  position:relative;z-index:1;display:block;max-width:88%;font-size:13px!important;line-height:1.75!important;color:#718596!important;
}
body[data-page-id="home"] .stat-item:hover:where(:not(.semc-touch-feedback)){
  transform:translateY(-4px);
  border-color:rgba(41,98,139,.15)!important;
  box-shadow:0 22px 54px rgba(27,61,86,.10);
}

/* A cleared image remains a real fixed-ratio frame instead of falling back to the old baked-in image. */
img.cms-image-empty{object-fit:cover!important;background:#eef3f6!important}

/* Footer contact locations are explicit links to the contact-information section. */
.footer-contact-link{
  display:flex!important;align-items:center;justify-content:space-between;gap:10px;
  width:100%;padding:7px 0!important;color:#b9cad8!important;
  border-bottom:1px solid rgba(255,255,255,.07);
}
.footer-contact-link:hover{color:#fff!important;transform:translateX(3px)}
.footer-link-arrow{font-size:11px;color:#7faed0;transition:transform .25s var(--ease)}
.footer-contact-link:hover .footer-link-arrow{transform:translate(2px,-2px)}

/* Contact page — editable dual-site information module. */
.contact-locations-section{
  background:
    radial-gradient(circle at 92% 10%,rgba(100,166,214,.16),transparent 28rem),
    linear-gradient(180deg,#edf5fa 0%,#f7fafc 100%);
  border-top:1px solid rgba(255,255,255,.92);
}
.contact-locations-head{max-width:920px;margin-bottom:42px}
.contact-location-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.contact-location-card{
  position:relative;padding:30px;border-radius:28px;overflow:hidden;
  background:rgba(255,255,255,.84);border:1px solid rgba(255,255,255,.96);
  box-shadow:0 22px 58px rgba(31,72,102,.09);
  -webkit-backdrop-filter:blur(16px) saturate(115%);backdrop-filter:blur(16px) saturate(115%);
}
.contact-location-card::before{
  content:"";position:absolute;left:0;right:0;top:0;height:3px;
  background:linear-gradient(90deg,#4e91c4 0%,#7898b0 50%,#d8495b 100%);
}
.location-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;padding-bottom:22px;border-bottom:1px solid rgba(35,78,108,.10)}
.location-kicker{display:block;font-size:10px;letter-spacing:.14em;color:#6b8ca3;font-weight:760;text-transform:uppercase;margin-bottom:8px}
.location-card-head h3{margin:0;font-size:24px;letter-spacing:-.035em;color:#173e5d}
.location-index{font-size:34px;line-height:1;font-weight:800;color:rgba(28,79,116,.10)}
.location-lines{display:grid;grid-template-columns:1fr 1fr;gap:0 24px;padding-top:8px}
.location-line{padding:16px 0;border-bottom:1px solid rgba(35,78,108,.085);min-width:0}
.location-line.full{grid-column:1/-1}
.location-line span{display:block;font-size:10px;letter-spacing:.06em;color:#8b9ba6;margin-bottom:6px;font-weight:700}
.location-line strong{display:block;font-size:14px;line-height:1.62;color:#35546b;font-weight:650;word-break:break-word}

@media(max-width:900px){
  body[data-page-id="home"] .stat-grid{grid-template-columns:1fr!important}
  body[data-page-id="home"] .stat-item{min-height:0}
  .contact-location-grid{grid-template-columns:1fr}
}
@media(max-width:620px){
  body[data-page-id="home"] .hero{padding-bottom:30px!important}
  body[data-page-id="home"] .stat-strip{padding:22px 0 30px!important}
  body[data-page-id="home"] .stat-item{padding:22px 22px 21px 24px!important;border-radius:18px}
  .contact-location-card{padding:22px;border-radius:22px}
  .location-lines{grid-template-columns:1fr}
  .location-line.full{grid-column:auto}
  .location-card-head h3{font-size:21px}
}
#contact-locations{scroll-margin-top:104px}

/* =========================================================
   SEMC V2.4 — exact first screen + refined homepage proof design
   ========================================================= */
body[data-page-id="home"] .hero{height:var(--cms-viewport-h,100dvh)!important;min-height:var(--cms-viewport-h,100dvh)!important;max-height:var(--cms-viewport-h,100dvh)!important;overflow:hidden!important;box-sizing:border-box!important}
body[data-page-id="home"] .hero-media,body[data-page-id="home"] .hero-media img{height:100%!important}
body[data-page-id="home"] .stat-strip{margin:0!important;padding:48px 0 56px!important;background:radial-gradient(circle at 8% 18%,rgba(64,125,174,.075),transparent 22rem),linear-gradient(180deg,#f6f9fb 0%,#fff 100%)!important;border:0!important;box-shadow:none!important}
body[data-page-id="home"] .stat-strip::before{display:none!important}body[data-page-id="home"] .stat-grid{gap:18px!important;align-items:stretch!important}
body[data-page-id="home"] .stat-item{position:relative!important;isolation:isolate!important;overflow:hidden!important;min-height:176px!important;padding:30px 30px 28px!important;border:1px solid rgba(31,74,105,.10)!important;border-radius:24px!important;background:rgba(255,255,255,.94)!important;box-shadow:0 16px 42px rgba(24,54,76,.075)!important;display:flex!important;flex-direction:column!important;justify-content:flex-end!important;transition:transform .36s cubic-bezier(.2,.75,.2,1),box-shadow .36s cubic-bezier(.2,.75,.2,1),border-color .36s ease!important}
body[data-page-id="home"] .stat-item::before{content:""!important;position:absolute!important;z-index:-1!important;left:0!important;right:0!important;top:0!important;height:4px!important;background:linear-gradient(90deg,#285fa3 0%,#4777aa 36%,#7e6e99 51%,#b54b68 67%,#d6293e 100%)!important;opacity:.9!important}
body[data-page-id="home"] .stat-item::after{position:absolute!important;right:24px!important;top:18px!important;font-size:54px!important;line-height:1!important;font-weight:820!important;letter-spacing:-.07em!important;color:rgba(31,77,111,.055)!important;pointer-events:none!important}body[data-page-id="home"] .stat-item:nth-child(1)::after{content:"01"!important}body[data-page-id="home"] .stat-item:nth-child(2)::after{content:"02"!important}body[data-page-id="home"] .stat-item:nth-child(3)::after{content:"03"!important}
body[data-page-id="home"] .stat-item>strong,body[data-page-id="home"] .stat-item>strong span{position:relative!important;z-index:1!important;color:#173f63!important;font-size:19px!important;font-weight:760!important;letter-spacing:-.02em!important;margin:0 0 10px!important}body[data-page-id="home"] .stat-item>span,body[data-page-id="home"] .stat-item>span span{position:relative!important;z-index:1!important;color:#6b7f8f!important;font-size:13px!important;line-height:1.75!important}body[data-page-id="home"] .stat-item:hover:where(:not(.semc-touch-feedback)){transform:translateY(-6px)!important;border-color:rgba(38,94,137,.18)!important;box-shadow:0 24px 56px rgba(24,54,76,.12)!important}body[data-page-id="home"] [data-module="homeAbout"]{padding-top:104px!important}
@media(max-width:980px){body[data-page-id="home"] .hero{height:var(--cms-viewport-h,100dvh)!important;min-height:var(--cms-viewport-h,100dvh)!important;max-height:var(--cms-viewport-h,100dvh)!important}body[data-page-id="home"] .stat-grid{grid-template-columns:1fr!important}body[data-page-id="home"] .stat-item{min-height:146px!important}}
@media(max-width:700px){body[data-page-id="home"] .hero{height:var(--cms-viewport-h,100dvh)!important;min-height:var(--cms-viewport-h,100dvh)!important;max-height:var(--cms-viewport-h,100dvh)!important}body[data-page-id="home"] .stat-strip{padding:30px 0 36px!important}body[data-page-id="home"] .stat-grid{gap:12px!important}body[data-page-id="home"] .stat-item{min-height:132px!important;padding:24px!important;border-radius:20px!important}}


/* =========================================================
   SEMC V2.5 — refined home accents / light proof / module parity
   ========================================================= */
/* Homepage capability summary: no blue-red perimeter. Brand accent lives only
   on the left as a softly rounded vertical rail. */
body[data-page-id="home"] .stat-strip{
  padding:48px 0 58px!important;
  background:linear-gradient(180deg,#f7f9fb 0%,#fff 100%)!important;
}
body[data-page-id="home"] .stat-grid{gap:22px!important}
body[data-page-id="home"] .stat-item,
.cms-dynamic-summary .stat-item{
  position:relative!important;isolation:isolate!important;overflow:hidden!important;
  min-height:176px!important;padding:32px 32px 28px 40px!important;
  border:0!important;border-radius:25px!important;
  background:linear-gradient(145deg,#fff 0%,#fbfcfd 100%)!important;
  box-shadow:0 18px 48px rgba(27,55,75,.085)!important;
  display:flex!important;flex-direction:column!important;justify-content:flex-end!important;
  transition:transform .34s var(--ease),box-shadow .34s var(--ease)!important;
}
body[data-page-id="home"] .stat-item::before,
.cms-dynamic-summary .stat-item::before{
  content:""!important;position:absolute!important;left:0!important;top:18px!important;bottom:18px!important;
  width:6px!important;border-radius:0 18px 18px 0!important;
  background:linear-gradient(180deg,#2b6fac 0%,#5f8fb4 42%,#9a7188 64%,#d43e54 100%)!important;
  box-shadow:5px 0 18px rgba(54,104,146,.13)!important;opacity:.92!important;z-index:2!important;
}
body[data-page-id="home"] .stat-item::after,
.cms-dynamic-summary .stat-item::after{
  position:absolute!important;right:24px!important;top:18px!important;font-size:54px!important;line-height:1!important;
  font-weight:820!important;letter-spacing:-.07em!important;color:rgba(31,77,111,.052)!important;pointer-events:none!important;
}
body[data-page-id="home"] .stat-item:nth-child(1)::after,.cms-dynamic-summary .stat-item:nth-child(1)::after{content:"01"!important}
body[data-page-id="home"] .stat-item:nth-child(2)::after,.cms-dynamic-summary .stat-item:nth-child(2)::after{content:"02"!important}
body[data-page-id="home"] .stat-item:nth-child(3)::after,.cms-dynamic-summary .stat-item:nth-child(3)::after{content:"03"!important}
body[data-page-id="home"] .stat-item>strong,body[data-page-id="home"] .stat-item>strong span,
.cms-dynamic-summary .stat-item>strong{color:#173f63!important;font-size:19px!important;font-weight:760!important;letter-spacing:-.02em!important;margin:0 0 10px!important;position:relative!important;z-index:3!important}
body[data-page-id="home"] .stat-item>span,body[data-page-id="home"] .stat-item>span span,
.cms-dynamic-summary .stat-item>span{color:#6b7f8f!important;font-size:13px!important;line-height:1.75!important;position:relative!important;z-index:3!important}
body[data-page-id="home"] .stat-item:hover:where(:not(.semc-touch-feedback)),.cms-dynamic-summary .stat-item:hover:where(:not(.semc-touch-feedback)){transform:translateY(-5px)!important;box-shadow:0 25px 60px rgba(27,55,75,.12)!important}

/* Homepage proof returns to the site's light, precise visual language. */
body[data-page-id="home"] [data-module="homeProof"],
.home-proof.cms-dynamic-stats{
  position:relative!important;overflow:hidden!important;padding:82px 0!important;border-top:1px solid rgba(24,68,99,.07)!important;border-bottom:1px solid rgba(24,68,99,.07)!important;
  background:radial-gradient(circle at 92% 8%,rgba(71,137,187,.10),transparent 24rem),linear-gradient(180deg,#f5f8fa 0%,#fff 100%)!important;
}
body[data-page-id="home"] [data-module="homeProof"] .home-proof-grid,.home-proof.cms-dynamic-stats .home-proof-grid{position:relative!important;z-index:1!important;gap:18px!important}
body[data-page-id="home"] [data-module="homeProof"] .home-proof-item,.home-proof.cms-dynamic-stats .home-proof-item{
  position:relative!important;min-height:198px!important;padding:30px 26px 26px 32px!important;
  border:0!important;border-radius:24px!important;background:rgba(255,255,255,.96)!important;
  box-shadow:0 18px 48px rgba(27,58,80,.075)!important;display:flex!important;flex-direction:column!important;justify-content:flex-end!important;overflow:hidden!important;
  transition:transform .34s var(--ease),box-shadow .34s var(--ease)!important;
}
body[data-page-id="home"] [data-module="homeProof"] .home-proof-item::after,.home-proof.cms-dynamic-stats .home-proof-item::after{
  content:""!important;position:absolute!important;left:0!important;top:24px!important;width:5px!important;height:48px!important;border-radius:0 14px 14px 0!important;
  background:linear-gradient(180deg,#3d80b7 0%,#7b87a4 52%,#d4495c 100%)!important;opacity:.9!important;
}
body[data-page-id="home"] [data-module="homeProof"] .home-proof-item strong,body[data-page-id="home"] [data-module="homeProof"] .home-proof-item strong span,.home-proof.cms-dynamic-stats .home-proof-item strong{
  color:#173f63!important;font-size:clamp(20px,1.5vw,25px)!important;letter-spacing:-.025em!important;margin:0 0 10px!important;font-weight:760!important;
}
body[data-page-id="home"] [data-module="homeProof"] .home-proof-item>span,body[data-page-id="home"] [data-module="homeProof"] .home-proof-item>span span,.home-proof.cms-dynamic-stats .home-proof-item>span{
  color:#6d7f8d!important;font-size:12.5px!important;line-height:1.75!important;
}
body[data-page-id="home"] [data-module="homeProof"] .home-proof-item:hover:where(:not(.semc-touch-feedback)),.home-proof.cms-dynamic-stats .home-proof-item:hover:where(:not(.semc-touch-feedback)){transform:translateY(-6px)!important;box-shadow:0 25px 58px rgba(27,58,80,.11)!important}

/* Footer location links now deliberately behave exactly like the links in Quick Navigation. */
.footer-contact-link{display:block!important;width:auto!important;padding:0!important;color:#9da8b0!important;border:0!important;text-decoration:none!important}
.footer-contact-link:hover{color:#fff!important;transform:translateX(3px)!important}
.footer-link-arrow{display:none!important}

/* New builder types share the existing public-site components rather than inventing new colors. */
.cms-dynamic-summary{padding:70px 0!important;background:linear-gradient(180deg,#f7f9fb,#fff)!important}
.cms-dynamic-summary .stat-grid{gap:22px!important}
.process.cms-process-grid{position:relative}
.process.cms-process-grid::before{content:"";position:absolute;left:4%;right:4%;top:17px;height:1px;background:linear-gradient(90deg,rgba(47,116,181,.10),rgba(47,116,181,.50),rgba(47,116,181,.10));z-index:0}
.process.cms-process-grid .step{z-index:1}
.cms-dynamic-process-wrap .process{grid-template-columns:repeat(4,1fr)}
.cms-dynamic-process5 .process,.cms-dynamic-process-wrap.cms-dynamic-process5 .process{grid-template-columns:repeat(5,1fr)}
.cms-dynamic-banner .image-banner{aspect-ratio:16/7;overflow:hidden;border-radius:28px;box-shadow:0 20px 50px rgba(20,52,76,.10)}
.cms-dynamic-banner .image-banner img{width:100%;height:100%;object-fit:cover;display:block}
.cms-dynamic-page-intro{border-top:1px solid rgba(21,63,99,.06);border-bottom:1px solid rgba(21,63,99,.06)}

@media(max-width:980px){
  body[data-page-id="home"] [data-module="homeProof"] .home-proof-grid,.home-proof.cms-dynamic-stats .home-proof-grid{grid-template-columns:1fr 1fr!important}
  .cms-dynamic-process-wrap .process,.cms-dynamic-process5 .process{grid-template-columns:1fr 1fr!important}
}
@media(max-width:700px){
  body[data-page-id="home"] .stat-item,.cms-dynamic-summary .stat-item{min-height:132px!important;padding:26px 24px 24px 34px!important}
  body[data-page-id="home"] [data-module="homeProof"],.home-proof.cms-dynamic-stats{padding:56px 0!important}
  body[data-page-id="home"] [data-module="homeProof"] .home-proof-grid,.home-proof.cms-dynamic-stats .home-proof-grid{grid-template-columns:1fr!important}
  .cms-dynamic-process-wrap .process,.cms-dynamic-process5 .process{grid-template-columns:1fr!important}
}


/* =========================================================
   SEMC V2.6 — integrated accent / equal-height equipment / page line-art
   ========================================================= */
/* 1) Homepage three-summary accent is now part of the card edge itself.
   The blue-red rail follows the same rounded left contour as the card. */
body[data-page-id="home"] .stat-item::before,
.cms-dynamic-summary .stat-item::before{
  content:""!important;
  position:absolute!important;
  z-index:4!important;
  left:0!important;top:0!important;bottom:0!important;
  width:6px!important;
  border-radius:25px 0 0 25px!important;
  background:linear-gradient(180deg,#2e72ad 0%,#5f8eaf 39%,#8a7898 56%,#bc536f 73%,#d43b52 100%)!important;
  box-shadow:inset -1px 0 rgba(255,255,255,.38),3px 0 14px rgba(38,91,132,.08)!important;
  opacity:.94!important;
  pointer-events:none!important;
}
body[data-page-id="home"] .stat-item,
.cms-dynamic-summary .stat-item{padding-left:40px!important}

/* 2) Equipment matrix: 7:5 / 5:7 alternating cards now resolve to exactly
   the same row height. 80:63 is the matching small-card ratio when the large
   card stays 16:9 in a 7:5 grid. */
.equipment-grid{align-items:start!important}
.equipment-card{align-self:start!important;min-height:0!important;height:auto!important}
.equipment-card.large{aspect-ratio:16/9!important}
.equipment-card.small{aspect-ratio:80/63!important}
.cms-dynamic-equipment .equipment-card.large{grid-column:span 7!important}
.cms-dynamic-equipment .equipment-card.small{grid-column:span 5!important}
@media(max-width:980px){
  
}

/* 3) Inner-page square becomes an editable image holder with page-specific
   line art. The icon is counter-rotated so it remains visually upright. */
.page-hero:before{display:none!important}
.page-hero{min-height:440px}
.page-hero-art{
  position:absolute;z-index:1;right:4.2vw;top:118px;
  width:clamp(176px,15vw,238px);aspect-ratio:1/1;
  display:grid;place-items:center;overflow:hidden;
  border-radius:34px;
  background:linear-gradient(145deg,rgba(247,251,255,.98),rgba(226,237,247,.76));
  border:1px solid rgba(47,116,181,.16);
  box-shadow:0 24px 62px rgba(26,67,98,.08),inset 0 1px 0 rgba(255,255,255,.82);
  transform:rotate(12deg);
  pointer-events:none;
}
.page-hero-art:after{
  content:"";position:absolute;inset:14px;border-radius:27px;
  border:1px solid rgba(47,116,181,.06);pointer-events:none;
}
.page-hero-art img,
.cms-dynamic-page-intro .page-hero-art img{
  position:relative!important;z-index:2!important;width:46%!important;height:46%!important;
  object-fit:contain!important;transform:rotate(-12deg);opacity:.82;
}
.page-hero-art img.cms-image-empty{opacity:.18}
@media(max-width:980px){
  .page-hero-art{right:-34px;top:122px;width:190px;opacity:.58}
  .page-hero .section-title,.page-hero .section-lead{max-width:72vw}
}
@media(max-width:700px){
  .page-hero{min-height:0}
  .page-hero-art{right:-62px;top:112px;width:156px;opacity:.36}
  .page-hero .section-title,.page-hero .section-lead{max-width:88vw}
}

/* 4) Capability proof titles stay on one common baseline. The supporting text
   always reserves three lines, so a 1-line note and a 3-line note cannot push
   the large title to different vertical positions. */
body[data-page-id="home"] [data-module="homeProof"] .home-proof-item,
.home-proof.cms-dynamic-stats .home-proof-item{
  min-height:222px!important;
  padding:84px 26px 24px 32px!important;
  justify-content:flex-start!important;
}
body[data-page-id="home"] [data-module="homeProof"] .home-proof-item strong,
body[data-page-id="home"] [data-module="homeProof"] .home-proof-item strong span,
.home-proof.cms-dynamic-stats .home-proof-item strong{
  display:block!important;margin:0 0 10px!important;line-height:1.25!important;min-height:1.25em!important;
}
body[data-page-id="home"] [data-module="homeProof"] .home-proof-item>span,
body[data-page-id="home"] [data-module="homeProof"] .home-proof-item>span span,
.home-proof.cms-dynamic-stats .home-proof-item>span{
  display:block!important;min-height:5.25em!important;line-height:1.75!important;
}
@media(max-width:700px){
  body[data-page-id="home"] [data-module="homeProof"] .home-proof-item,
  .home-proof.cms-dynamic-stats .home-proof-item{min-height:210px!important;padding-top:80px!important}
}

/* =========================================================
   SEMC V2.7 — responsive hero anchor / refined kicker / collections / back to top
   ========================================================= */
:root{--cms-hero-kicker-display:flex}

/* Home cover copy is anchored to the viewport edge rather than to a centered
   max-width container. This keeps the visual left margin stable on 13", 16",
   2K/4K displays and ordinary desktop monitors. Manual CMS offsets remain additive. */
body[data-page-id="home"] .hero-content{
  width:100%!important;
  max-width:none!important;
  margin:0!important;
  padding-left:clamp(28px,4.65vw,80px)!important;
  padding-right:clamp(28px,4.65vw,80px)!important;
}
body[data-page-id="home"] .hero-copy{
  width:min(575px,calc(100vw - clamp(56px,9.3vw,160px)))!important;
}
body[data-page-id="home"] .scroll-cue{display:none!important}

/* A quieter branded eyebrow: one compact curved gradient stroke + clean type. */
body[data-page-id="home"] .hero-kicker{
  display:var(--cms-hero-kicker-display,flex)!important;
  align-items:center!important;
  gap:11px!important;
  width:max-content!important;
  max-width:100%!important;
  color:rgba(255,255,255,.88)!important;
  font-size:10px!important;
  font-weight:760!important;
  line-height:1.35!important;
  letter-spacing:.155em!important;
  text-transform:uppercase!important;
  text-shadow:0 2px 14px rgba(0,0,0,.20)!important;
}
body[data-page-id="home"] .hero-kicker i{
  position:relative!important;
  flex:0 0 31px!important;
  width:31px!important;
  height:8px!important;
  border-radius:8px 2px 8px 8px!important;
  background:linear-gradient(105deg,#4f98d1 0%,#618db8 39%,#987087 60%,#d4475b 100%)!important;
  box-shadow:0 4px 12px rgba(12,36,53,.20),inset 0 1px rgba(255,255,255,.28)!important;
  transform:skewX(-16deg)!important;
  overflow:hidden!important;
}
body[data-page-id="home"] .hero-kicker i::after{
  content:"";position:absolute;right:2px;top:1px;width:5px;height:5px;border-radius:50%;
  background:rgba(255,255,255,.82);box-shadow:0 0 0 2px rgba(255,255,255,.12);
}
@media(max-width:700px){
  body[data-page-id="home"] .hero-content{padding-left:24px!important;padding-right:24px!important}
  body[data-page-id="home"] .hero-copy{width:calc(100vw - 48px)!important}
  body[data-page-id="home"] .hero-kicker{font-size:9px!important;letter-spacing:.12em!important}
}

/* Optional-image content collections for news / cases / solutions / services. */
.content-collection{display:grid;gap:18px}
.content-story{
  display:grid;grid-template-columns:minmax(0,260px) minmax(0,1fr);gap:26px;align-items:stretch;
  padding:16px;border-radius:24px;background:rgba(255,255,255,.78);border:1px solid rgba(255,255,255,.95);
  box-shadow:0 16px 42px rgba(30,67,94,.07);transition:transform .32s var(--ease),box-shadow .32s var(--ease),border-color .32s ease;
}
.content-story:hover:where(:not(.semc-touch-feedback)){transform:translateY(-3px);box-shadow:0 22px 52px rgba(30,67,94,.105);border-color:rgba(47,116,181,.14)}
.content-story.no-image{grid-template-columns:1fr;padding:25px 28px}
.content-story-media{aspect-ratio:16/9;border-radius:17px;overflow:hidden;background:#e9f0f5;min-width:0}
.content-story-media img{width:100%;height:100%;object-fit:cover;transition:transform .65s var(--ease)}
.content-story:hover:where(:not(.semc-touch-feedback)) .content-story-media img{transform:scale(1.035)}
.content-story-copy{min-width:0;align-self:center;padding:7px 16px 7px 2px}
.content-story.no-image .content-story-copy{padding:0}
.content-story-meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.content-story-tag{display:inline-flex;align-items:center;min-height:27px;padding:5px 10px;border-radius:999px;background:#eaf2f8;color:#477392;font-size:10px;font-weight:780;letter-spacing:.07em}
.content-story-date{font-size:11px;color:#96a4ae;letter-spacing:.035em}
.content-story h3{margin:0 0 9px;font-size:clamp(20px,1.7vw,27px);line-height:1.3;letter-spacing:-.025em;color:#173f63}
.content-story p{margin:0;color:#708392;font-size:13px;line-height:1.78;max-width:850px}

.content-card-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.content-card-grid.service-mode{grid-template-columns:repeat(2,1fr)}
.visual-content-card{overflow:hidden;border-radius:25px;background:rgba(255,255,255,.78);border:1px solid rgba(255,255,255,.95);box-shadow:0 17px 44px rgba(30,67,94,.075);transition:transform .34s var(--ease),box-shadow .34s var(--ease)}
.visual-content-card:hover:where(:not(.semc-touch-feedback)){transform:translateY(-5px);box-shadow:0 24px 54px rgba(30,67,94,.11)}
.visual-content-card-media{aspect-ratio:16/10;overflow:hidden;background:#e8f0f5}
.visual-content-card.service-card-visual .visual-content-card-media{aspect-ratio:4/3}
.visual-content-card-media img{width:100%;height:100%;object-fit:cover;transition:transform .72s var(--ease)}
.visual-content-card:hover:where(:not(.semc-touch-feedback)) .visual-content-card-media img{transform:scale(1.045)}
.visual-content-card-copy{padding:25px 25px 27px}
.visual-content-card.no-image .visual-content-card-copy{padding-top:30px;min-height:230px;display:flex;flex-direction:column;justify-content:flex-end}
.visual-content-card .visual-kicker{display:block;margin-bottom:30px;font-size:10px;color:#5f87a4;font-weight:800;letter-spacing:.13em;text-transform:uppercase}
.visual-content-card h3{margin:0 0 10px;color:#173f63;font-size:23px;letter-spacing:-.025em;line-height:1.28}
.visual-content-card p{margin:0;color:#718493;font-size:13px;line-height:1.78}

@media(max-width:980px){
  .content-story{grid-template-columns:220px 1fr;gap:20px}
  .content-card-grid{grid-template-columns:1fr 1fr}
}
@media(max-width:700px){
  .content-story,.content-story.no-image{grid-template-columns:1fr;padding:13px;border-radius:20px}
  .content-story.no-image{padding:22px}
  .content-story-copy{padding:8px 8px 10px}
  .content-card-grid,.content-card-grid.service-mode{grid-template-columns:1fr}
  .visual-content-card.no-image .visual-content-card-copy{min-height:190px}
}

/* Back-to-top: frosted industrial control with a small blue-red signature. */
.back-to-top{
  position:fixed;right:clamp(16px,2.2vw,34px);bottom:clamp(16px,2.2vw,34px);z-index:960;
  width:50px;height:50px;border-radius:17px;border:1px solid rgba(255,255,255,.86);
  background:rgba(245,250,253,.78);-webkit-backdrop-filter:blur(18px) saturate(1.22);backdrop-filter:blur(18px) saturate(1.22);
  box-shadow:0 14px 36px rgba(27,61,86,.13);display:grid;place-items:center;color:#245b88;
  opacity:0;visibility:hidden;transform:translateY(10px);transition:opacity .25s ease,transform .25s var(--ease),visibility .25s ease,box-shadow .25s ease;
  cursor:pointer;padding:0;
}
.back-to-top::before{content:"";position:absolute;left:12px;right:12px;top:8px;height:3px;border-radius:999px;background:linear-gradient(90deg,#3d84bd,#7c7f9c,#d64055)}
.back-to-top svg{width:19px;height:19px;stroke:currentColor;stroke-width:2;fill:none;stroke-linecap:round;stroke-linejoin:round;margin-top:3px}
.back-to-top.visible{opacity:1;visibility:visible;transform:none}
.back-to-top:hover{transform:translateY(-3px);box-shadow:0 18px 44px rgba(27,61,86,.17);color:#173f63}
@media(max-width:700px){.back-to-top{width:46px;height:46px;border-radius:15px;right:14px;bottom:14px}}

/* V2.7 optional multi-image grids inside managed content items. */
.content-story-media,.visual-content-card-media{display:grid!important;grid-template-columns:1fr;gap:2px!important}
.content-story-media.image-count-2,.visual-content-card-media.image-count-2{grid-template-columns:1fr 1fr}
.content-story-media.image-count-3,.content-story-media.image-count-4,.visual-content-card-media.image-count-3,.visual-content-card-media.image-count-4{grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr}
.collection-image-cell{position:relative;display:block;min-width:0;min-height:0;overflow:hidden;background:#e8f0f5}
.collection-image-cell img{width:100%!important;height:100%!important;object-fit:cover!important;display:block!important}
.more-images{position:absolute;right:8px;bottom:8px;display:grid;place-items:center;min-width:31px;height:25px;padding:0 8px;border-radius:999px;background:rgba(15,42,61,.76);color:#fff;font-size:10px;letter-spacing:.03em;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}
.cms-preview-mode .back-to-top{bottom:78px}

/* V2.7 final polish — homepage eyebrow becomes a fine curved brand line rather
   than a filled badge. The English text remains optional through the CMS switch. */
body[data-page-id="home"] .hero-kicker{
  gap:12px!important;
  font-size:9.5px!important;
  font-weight:720!important;
  letter-spacing:.19em!important;
  color:rgba(255,255,255,.86)!important;
}
body[data-page-id="home"] .hero-kicker i{
  position:relative!important;
  flex:0 0 42px!important;
  width:42px!important;
  height:12px!important;
  border-radius:0!important;
  background:none!important;
  box-shadow:none!important;
  transform:none!important;
  overflow:visible!important;
}
body[data-page-id="home"] .hero-kicker i::before{
  content:""!important;
  position:absolute!important;
  left:0!important;
  top:3px!important;
  width:38px!important;
  height:2px!important;
  border-radius:999px!important;
  background:linear-gradient(90deg,#55a0d8 0%,#6e8dad 43%,#9a7187 65%,#d7475b 100%)!important;
  box-shadow:0 2px 8px rgba(8,28,42,.23)!important;
}
body[data-page-id="home"] .hero-kicker i::after{
  content:""!important;
  position:absolute!important;
  right:0!important;
  top:3px!important;
  width:8px!important;
  height:7px!important;
  border-right:2px solid rgba(215,71,91,.95)!important;
  border-bottom:2px solid rgba(215,71,91,.95)!important;
  border-radius:0 0 7px 0!important;
  background:transparent!important;
  box-shadow:none!important;
}
body[data-page-id="home"] .hero-kicker>span{opacity:.96}

/* Managed article/service text can contain paragraph breaks from the CMS. */
.content-story p span,.visual-content-card p span{white-space:pre-line}


/* ===== SEMC V2.7.2 — service / industry optional-image adaptive layouts ===== */
.content-card-grid.collection-all-text,.content-card-grid.collection-mixed-media{align-items:start}
.content-card-grid.collection-all-text.service-mode{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
.content-card-grid.collection-all-text:not(.service-mode){grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}
.visual-content-card.no-image{position:relative;overflow:hidden;min-height:0!important;background:linear-gradient(145deg,rgba(255,255,255,.98),rgba(247,251,253,.94));border:1px solid rgba(40,86,119,.09);box-shadow:0 14px 36px rgba(30,67,94,.065)}
.visual-content-card.no-image::before{content:"";position:absolute;left:0;top:20px;bottom:20px;width:4px;border-radius:0 8px 8px 0;background:linear-gradient(180deg,#347db8 0%,#5987ad 44%,#987287 66%,#d4475b 100%);box-shadow:2px 0 9px rgba(51,110,157,.12)}
.visual-content-card.no-image::after{content:attr(data-index);position:absolute;right:22px;top:18px;font-size:34px;line-height:1;font-weight:760;letter-spacing:-.05em;color:rgba(45,91,126,.055);pointer-events:none}
.visual-content-card.no-image .visual-content-card-copy{min-height:0!important;padding:27px 28px 29px 31px!important;display:flex!important;flex-direction:column!important;justify-content:flex-start!important}
.visual-content-card.no-image .visual-kicker,.visual-content-card.no-image .visual-service-index{margin-bottom:20px!important}.visual-content-card h3{position:relative;z-index:1}.visual-content-card.no-image h3{margin-bottom:9px!important}.visual-content-card.no-image p{max-width:650px}
.visual-service-index{display:block;color:#5f87a4;font-size:10px;font-weight:800;letter-spacing:.13em;text-transform:uppercase;margin-bottom:14px}.visual-content-card.service-card-visual:not(.no-image) .visual-service-index{margin-bottom:12px}
.content-card-grid.collection-mixed-media .visual-content-card.no-image{align-self:start}
@media(min-width:981px){.content-card-grid.collection-all-text.service-mode .visual-content-card.no-image .visual-content-card-copy{min-height:168px!important}.content-card-grid.collection-all-text:not(.service-mode) .visual-content-card.no-image .visual-content-card-copy{min-height:190px!important}}
@media(max-width:980px){.content-card-grid.collection-all-text:not(.service-mode){grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:700px){.content-card-grid.collection-all-text.service-mode,.content-card-grid.collection-all-text:not(.service-mode){grid-template-columns:1fr}.visual-content-card.no-image .visual-content-card-copy{padding:24px 24px 25px 28px!important}.visual-content-card.no-image::after{right:18px;top:16px;font-size:29px}}


/* ===== SEMC V2.7.3 — full-width adaptive Services / Industry collections ===== */
.cms-collection-host{display:block!important;width:min(92vw,1360px)!important}

/* Managed Services and Industry cards now occupy the entire content width.
   Existing items use all available tracks; adding items automatically adds a
   track and reduces each card width until six desktop columns, then wraps. */
.content-card-grid{
  width:100%!important;
  grid-template-columns:repeat(var(--collection-cols,3),minmax(0,1fr))!important;
  gap:clamp(14px,1.25vw,20px)!important;
  align-items:stretch!important;
  grid-auto-rows:1fr!important;
}
.content-card-grid.service-mode,
.content-card-grid.collection-all-text.service-mode,
.content-card-grid.collection-all-text:not(.service-mode),
.content-card-grid.collection-mixed-media.service-mode,
.content-card-grid.collection-mixed-media:not(.service-mode),
.content-card-grid.collection-all-media.service-mode,
.content-card-grid.collection-all-media:not(.service-mode){
  grid-template-columns:repeat(var(--collection-cols,3),minmax(0,1fr))!important;
  align-items:stretch!important;
}
.visual-content-card{height:100%!important;min-width:0!important;display:flex!important;flex-direction:column!important}
.visual-content-card-media{flex:0 0 auto!important}
.visual-content-card-copy{flex:1 1 auto!important;display:flex!important;flex-direction:column!important;min-width:0!important}
.visual-content-card.no-image{height:100%!important;align-self:stretch!important}
.visual-content-card.no-image .visual-content-card-copy{height:100%!important;min-height:210px!important;justify-content:flex-start!important}
.visual-content-card .visual-kicker,.visual-content-card .visual-service-index{flex:0 0 auto!important}
.visual-content-card h3{min-height:2.56em!important;margin-bottom:10px!important;display:block!important}
.visual-content-card p{flex:1 1 auto!important;min-width:0!important}

/* Equal card boxes are especially important in the Industry row: a longer
   “更多工业领域” description must not create a taller third card. */
.content-card-grid.collection-all-text .visual-content-card.no-image,
.content-card-grid.collection-mixed-media .visual-content-card.no-image{align-self:stretch!important}

@media(max-width:1180px){
  .content-card-grid,.content-card-grid.service-mode,
  .content-card-grid.collection-all-text.service-mode,
  .content-card-grid.collection-all-text:not(.service-mode),
  .content-card-grid.collection-mixed-media.service-mode,
  .content-card-grid.collection-mixed-media:not(.service-mode),
  .content-card-grid.collection-all-media.service-mode,
  .content-card-grid.collection-all-media:not(.service-mode){
    grid-template-columns:repeat(2,minmax(0,1fr))!important
  }
}
@media(max-width:700px){
  .content-card-grid,.content-card-grid.service-mode,
  .content-card-grid.collection-all-text.service-mode,
  .content-card-grid.collection-all-text:not(.service-mode),
  .content-card-grid.collection-mixed-media.service-mode,
  .content-card-grid.collection-mixed-media:not(.service-mode),
  .content-card-grid.collection-all-media.service-mode,
  .content-card-grid.collection-all-media:not(.service-mode){grid-template-columns:1fr!important}
  .visual-content-card h3{min-height:0!important}
  .visual-content-card.no-image .visual-content-card-copy{min-height:0!important}
}

/* =========================================================
   SEMC V2.7.5 — dedicated mobile website experience
   ========================================================= */
@media (max-width:980px){
  /* Mobile / tablet navigation is a true frosted panel instead of an opaque box. */
  .site-nav{
    width:calc(100vw - 24px)!important;
    max-width:none!important;
    left:12px!important;right:12px!important;transform:none!important;
    top:calc(10px + var(--semc-safe-top))!important;
    height:66px!important;
    padding:0 12px 0 13px!important;
    gap:10px!important;
    border-radius:24px!important;
    background:rgba(246,250,253,.62)!important;
    border:1px solid rgba(255,255,255,.84)!important;
    -webkit-backdrop-filter:blur(30px) saturate(1.34)!important;
    backdrop-filter:blur(30px) saturate(1.34)!important;
    box-shadow:0 16px 44px rgba(22,55,80,.12)!important;
  }
  .site-nav.scrolled{
    top:calc(7px + var(--semc-safe-top))!important;
    background:rgba(246,250,253,.72)!important;
  }
  .site-nav[data-nav-theme="dark"],
  .site-nav[data-nav-theme="dark"].scrolled{
    background:rgba(245,250,253,.56)!important;
    border-color:rgba(255,255,255,.76)!important;
    -webkit-backdrop-filter:blur(30px) saturate(1.3)!important;
    backdrop-filter:blur(30px) saturate(1.3)!important;
  }
  .site-nav[data-nav-theme="dark"] .brand-name{color:#16466f!important;text-shadow:none!important}
  .site-nav[data-nav-theme="dark"] .menu-btn{color:#16466f!important}
  .brand{gap:10px!important;min-width:0!important}
  .brand-name{min-width:0;overflow:hidden;text-overflow:ellipsis;font-size:clamp(11px,2.9vw,14px)!important;color:#16466f!important}
  .brand-logo{flex:0 0 auto!important}
  .menu-btn{
    display:grid!important;place-items:center!important;flex:0 0 44px!important;
    width:44px!important;height:44px!important;border-radius:15px!important;
    background:rgba(255,255,255,.58)!important;border:1px solid rgba(255,255,255,.78)!important;
    color:#16466f!important;box-shadow:0 8px 20px rgba(25,63,91,.08)!important;
    transition:transform .22s var(--ease),background .22s ease!important;
  }
  .menu-btn.active{background:rgba(255,255,255,.82)!important;transform:rotate(90deg)}
  .nav-links{
    position:absolute!important;top:calc(100% + 10px)!important;left:0!important;right:0!important;
    display:none!important;flex-direction:column!important;align-items:stretch!important;
    gap:4px!important;padding:10px!important;
    max-height:calc(100dvh - 106px - var(--semc-safe-top))!important;overflow-y:auto!important;
    overscroll-behavior:contain!important;
    border-radius:24px!important;
    border:1px solid rgba(255,255,255,.82)!important;
    background:rgba(244,249,252,.62)!important;
    -webkit-backdrop-filter:blur(32px) saturate(1.4)!important;
    backdrop-filter:blur(32px) saturate(1.4)!important;
    box-shadow:0 26px 70px rgba(18,47,68,.18)!important;
  }
  .nav-links.open{display:flex!important;animation:semcMobileMenuIn .24s var(--ease) both}
  @keyframes semcMobileMenuIn{from{opacity:0;transform:translateY(-8px) scale(.985)}to{opacity:1;transform:none}}
  .nav-link,.nav-link:hover,.nav-link.active,.nav-link.active:hover{
    position:relative!important;display:flex!important;align-items:center!important;
    min-height:46px!important;padding:12px 14px 12px 20px!important;
    border-radius:14px!important;color:#294f6d!important;background:transparent!important;
    font-size:14px!important;font-weight:650!important;transform:none!important;
  }
  .nav-link:hover{background:rgba(255,255,255,.40)!important}
  .nav-link.active{background:rgba(255,255,255,.64)!important;color:#153f63!important}
  .nav-link::before{
    content:""!important;display:block!important;position:absolute!important;
    left:4px!important;right:auto!important;top:9px!important;bottom:9px!important;
    width:4px!important;height:auto!important;border-radius:0 8px 8px 0!important;
    transform:none!important;opacity:0!important;
    background:linear-gradient(180deg,#2d72b4 0%,#557fa6 42%,#93768f 64%,#d53f55 100%)!important;
    box-shadow:3px 0 11px rgba(53,101,139,.13)!important;
    transition:opacity .2s ease!important;
  }
  .nav-link:hover::before{width:4px!important;opacity:.42!important;transform:none!important}
  .nav-link.active::before,.nav-link.active:hover::before{width:4px!important;opacity:1!important;transform:none!important}
  body.mobile-nav-open{overflow:hidden!important}

  /* Page modules: safe tablet defaults used by both built-in and added modules. */
  .container,.cms-collection-host{width:calc(100vw - 36px)!important;max-width:none!important}
  .section{padding:78px 0!important}
  .section.compact{padding:62px 0!important}
  .split,.industry-band{gap:34px!important}
  .media-card{width:100%!important}
  .cards-3{grid-template-columns:1fr 1fr!important;gap:14px!important}
  .service-card{min-height:280px!important}
  .equipment-grid{gap:14px!important}
  .equipment-card.large,.equipment-card.small,
  .cms-dynamic-equipment .equipment-card.large,.cms-dynamic-equipment .equipment-card.small{grid-column:span 12!important;aspect-ratio:16/9!important}
  .gallery-2{gap:14px!important}
  .cms-dynamic-process-wrap .process,.cms-dynamic-process5 .process,.process{grid-template-columns:1fr 1fr!important}
  .content-card-grid,.content-card-grid.service-mode,
  .content-card-grid.collection-all-text.service-mode,.content-card-grid.collection-all-text:not(.service-mode),
  .content-card-grid.collection-mixed-media.service-mode,.content-card-grid.collection-mixed-media:not(.service-mode),
  .content-card-grid.collection-all-media.service-mode,.content-card-grid.collection-all-media:not(.service-mode){grid-template-columns:repeat(2,minmax(0,1fr))!important}
}

@media (max-width:700px){
  :root{--nav-h:86px}
  body{background:#fff}
  .site-nav{width:calc(100vw - 20px)!important;left:10px!important;right:10px!important;height:64px!important;border-radius:22px!important}
  .brand-logo{width:clamp(92px,25vw,var(--cms-logo-width-mobile))!important;max-width:112px!important;height:auto!important;max-height:36px!important}
  .brand-name{font-size:clamp(10.5px,3.05vw,12.5px)!important;line-height:1.2!important;white-space:nowrap!important}
  .menu-btn{flex-basis:42px!important;width:42px!important;height:42px!important;border-radius:14px!important;font-size:18px!important}
  .nav-links{top:calc(100% + 8px)!important;border-radius:21px!important;padding:8px!important}
  .nav-link,.nav-link:hover,.nav-link.active,.nav-link.active:hover{min-height:43px!important;padding:10px 13px 10px 19px!important;font-size:13.5px!important}

  /* Inner page intro: line-art stays fully inside the viewport. */
  .page-hero{
    min-height:0!important;padding:calc(var(--nav-h) + 78px) 0 52px!important;overflow:hidden!important;
  }
  .page-hero .container{width:calc(100vw - 32px)!important;position:relative!important;z-index:2!important}
  .page-hero-art,.cms-dynamic-page-intro .page-hero-art{
    right:14px!important;top:calc(var(--nav-h) + 72px)!important;
    width:108px!important;aspect-ratio:1!important;border-radius:24px!important;
    opacity:.28!important;transform:rotate(9deg)!important;
  }
  .page-hero-art:after{inset:10px!important;border-radius:18px!important}
  .page-hero-art img,.cms-dynamic-page-intro .page-hero-art img{width:48%!important;height:48%!important;transform:rotate(-9deg)!important}
  .page-hero .eyebrow{max-width:calc(100vw - 34px)!important;padding:7px 10px 7px 7px!important;gap:9px!important;font-size:9px!important;letter-spacing:.12em!important}
  .page-hero .eyebrow .num{width:29px!important;height:29px!important;font-size:10px!important}
  .page-hero .section-title{max-width:100%!important;margin:22px 0 14px!important;font-size:clamp(38px,11vw,50px)!important;line-height:1.06!important}
  .page-hero .section-lead{max-width:100%!important;font-size:15.5px!important;line-height:1.78!important;padding-right:0!important}

  /* Home portrait mode. A blank portrait slot automatically falls back to desktop artwork. */
  body[data-page-id="home"] .hero{
    height:var(--cms-viewport-h,100dvh)!important;min-height:var(--cms-viewport-h,100dvh)!important;max-height:var(--cms-viewport-h,100dvh)!important;
    padding:calc(var(--nav-h) + 30px) 0 calc(34px + env(safe-area-inset-bottom,0px))!important;
  }
  body[data-page-id="home"] .hero-media img{object-position:center center!important;transform:scale(1.01)!important}
  body[data-page-id="home"] .hero-media img.mobile-portrait-active{object-position:center center!important}
  body[data-page-id="home"] .hero-content{width:calc(100vw - 36px)!important;margin:0 auto!important}
  body[data-page-id="home"] .hero-copy,body[data-page-id="home"] .hero-copy:hover{
    width:100%!important;max-width:100%!important;transform:translate3d(clamp(-36px,var(--cms-hero-text-x),36px),clamp(-80px,var(--cms-hero-text-y),80px),0)!important;
  }
  body[data-page-id="home"] .hero h1{font-size:clamp(39px,12.2vw,52px)!important;max-width:350px!important;margin:12px 0 14px!important}
  body[data-page-id="home"] .hero p{font-size:15px!important;line-height:1.72!important;max-width:100%!important}
  body[data-page-id="home"] .hero-kicker{font-size:8.7px!important;line-height:1.45!important;letter-spacing:.16em!important;max-width:320px!important}
  body[data-page-id="home"] .hero-actions{display:grid!important;grid-template-columns:1fr 1fr!important;gap:9px!important;margin-top:22px!important}
  body[data-page-id="home"] .hero-actions .btn{justify-content:center!important;min-width:0!important;padding:12px 12px!important;font-size:12.5px!important;white-space:nowrap!important}

  /* All standard and addable content modules get phone-specific spacing/scale. */
  .container,.cms-collection-host{width:calc(100vw - 28px)!important}
  .section{padding:64px 0!important}.section.compact{padding:52px 0!important}
  .section-title{font-size:clamp(31px,9.5vw,42px)!important;line-height:1.08!important;margin:18px 0 13px!important}
  .section-lead{font-size:15px!important;line-height:1.78!important}
  .eyebrow{font-size:9px!important;letter-spacing:.12em!important}
  .split,.industry-band{grid-template-columns:1fr!important;gap:28px!important}
  .feature-list{gap:10px!important;margin-top:24px!important}
  .feature-item{padding:15px!important;grid-template-columns:32px 1fr!important;gap:11px!important}
  .feature-icon{width:32px!important;height:32px!important;border-radius:9px!important}
  .media-card{aspect-ratio:4/3!important;border-radius:22px!important}
  .media-caption{left:14px!important;right:auto!important;bottom:14px!important;font-size:11px!important;padding:8px 10px!important;border-radius:11px!important}
  .cards-3{grid-template-columns:1fr!important;gap:12px!important;margin-top:30px!important}
  .service-card{min-height:0!important;padding:23px!important;border-radius:22px!important}
  .service-card h3{font-size:23px!important;margin:44px 0 9px!important}.service-card p{font-size:13px!important}.service-card .arrow{width:38px!important;height:38px!important;right:18px!important;bottom:18px!important}
  .equipment-grid{gap:12px!important;margin-top:30px!important}.equipment-card.large,.equipment-card.small,.cms-dynamic-equipment .equipment-card.large,.cms-dynamic-equipment .equipment-card.small{aspect-ratio:16/10!important;border-radius:22px!important}
  .equip-meta{left:17px!important;right:17px!important;bottom:15px!important}.equip-meta h3{font-size:20px!important}.equip-meta span{font-size:9px!important}
  .gallery-2{grid-template-columns:1fr!important;gap:12px!important}.gallery-2 .photo{aspect-ratio:4/3!important;border-radius:22px!important}
  .process,.cms-dynamic-process-wrap .process,.cms-dynamic-process5 .process{grid-template-columns:1fr!important;gap:10px!important}.step{min-height:0!important;padding:22px!important;border-radius:18px!important}.step b{margin-bottom:24px!important}
  .industry-chips{gap:8px!important}.chip{padding:9px 12px!important;font-size:12px!important}
  .page-grid{grid-template-columns:1fr!important;gap:12px!important}.info-card{min-height:0!important;padding:22px!important;border-radius:20px!important}.info-card h3{font-size:21px!important}
  .image-banner{aspect-ratio:4/3!important;border-radius:22px!important}
  .timeline-item{padding:19px 0!important}.listing{gap:9px!important}.listing .list-row{padding:18px!important;border-radius:18px!important;gap:12px!important}.list-row h3{font-size:18px!important}
  .cta-panel{padding:26px 22px!important;border-radius:24px!important;gap:18px!important}.cta-panel h2{font-size:31px!important}.blue-btn{width:100%!important;justify-content:center!important}
  .content-card-grid,.content-card-grid.service-mode,
  .content-card-grid.collection-all-text.service-mode,.content-card-grid.collection-all-text:not(.service-mode),
  .content-card-grid.collection-mixed-media.service-mode,.content-card-grid.collection-mixed-media:not(.service-mode),
  .content-card-grid.collection-all-media.service-mode,.content-card-grid.collection-all-media:not(.service-mode){grid-template-columns:1fr!important;gap:12px!important}
  .visual-content-card{border-radius:21px!important}.visual-content-card-media,.visual-content-card.service-card-visual .visual-content-card-media{aspect-ratio:16/10!important}.visual-content-card-copy,.visual-content-card.no-image .visual-content-card-copy{padding:22px!important;min-height:0!important}.visual-content-card h3{font-size:22px!important;min-height:0!important}.visual-content-card .visual-kicker,.visual-service-index{margin-bottom:14px!important}
  .content-story,.content-story.no-image{grid-template-columns:1fr!important;padding:12px!important;border-radius:20px!important;gap:10px!important}.content-story.no-image{padding:20px!important}.content-story-copy{padding:8px 7px 10px!important}.content-story h3{font-size:21px!important}.content-story p{font-size:13px!important}
  .contact-location-grid{grid-template-columns:1fr!important;gap:12px!important}.contact-location-card{padding:20px!important;border-radius:20px!important}.location-card-head{gap:10px!important}.location-index{font-size:32px!important}.location-lines{grid-template-columns:1fr!important}.location-line.full{grid-column:auto!important}
  .home-proof-grid{grid-template-columns:1fr!important}.home-proof-item{border-right:0!important}

  /* Compact mobile corporate footer — same information, far less vertical noise. */
  .corp-footer{padding:34px 0 calc(24px + env(safe-area-inset-bottom,0px))!important}
  .corp-footer .container{width:calc(100vw - 32px)!important}
  
  .footer-brand-block{grid-column:1/-1!important;display:grid!important;grid-template-columns:auto 1fr!important;column-gap:14px!important;align-items:center!important}
  .footer-brand-block .footer-brand{grid-row:1/4!important;margin:0!important}.footer-brand-block .footer-brand img{width:104px!important;height:auto!important;max-height:38px!important}
  .footer-brand-block h3{font-size:14px!important;margin:0 0 5px!important}.footer-brand-block>p:not(.footer-hotline){font-size:11.5px!important;line-height:1.55!important}.footer-hotline{font-size:18px!important;margin:4px 0 0!important;line-height:1.3!important}
  .footer-col h3{font-size:13px!important;margin:0 0 9px!important}.footer-col a,.footer-col p{font-size:11.5px!important;line-height:1.6!important}.footer-col a{padding:3px 0!important}
  .footer-main>.footer-col:last-child{grid-column:1/-1!important;display:grid!important;grid-template-columns:1fr 1fr!important;gap:7px 9px!important}.footer-main>.footer-col:last-child h3{grid-column:1/-1!important}.footer-main>.footer-col:last-child .footer-contact-link{display:flex!important;align-items:center!important;justify-content:center!important;text-align:center!important;min-height:40px!important;padding:8px 9px!important;border-radius:12px!important;background:rgba(255,255,255,.055)!important;border:1px solid rgba(255,255,255,.08)!important}.footer-main>.footer-col:last-child p{display:none!important}
  .footer-bottom{margin-top:24px!important;padding-top:14px!important;gap:5px!important;flex-direction:column!important;font-size:10px!important;line-height:1.55!important}
  .back-to-top{right:12px!important;bottom:calc(12px + env(safe-area-inset-bottom,0px))!important;width:44px!important;height:44px!important;border-radius:14px!important}
}

@media (max-width:430px){
  .site-nav{padding-left:11px!important}.brand{gap:8px!important}.brand-logo{width:90px!important}.brand-name{font-size:10.5px!important}
  .page-hero-art,.cms-dynamic-page-intro .page-hero-art{right:10px!important;width:94px!important;top:calc(var(--nav-h) + 76px)!important}
  body[data-page-id="home"] .hero-actions{grid-template-columns:1fr 1fr!important}.footer-main{gap:22px 14px!important}
}

/* V2.7.5 mobile finishing pass: richer glass depth and touch-safe overlay scrolling. */
@media(max-width:980px){
  .nav-links{
    background:linear-gradient(155deg,rgba(249,252,254,.66),rgba(235,245,251,.46))!important;
    border-color:rgba(255,255,255,.86)!important;
    box-shadow:0 28px 74px rgba(16,47,70,.20),inset 0 1px 0 rgba(255,255,255,.68)!important;
  }
  body.mobile-nav-open{overscroll-behavior:none!important}
}

/* V2.7.5 mobile nav indicator hard reset: no desktop inset underline survives in the drawer. */
@media(max-width:980px){
  .nav-links .nav-link,.nav-links .nav-link:hover,.nav-links .nav-link.active,.nav-links .nav-link.active:hover{
    justify-content:flex-start!important;border:1px solid transparent!important;box-shadow:none!important
  }
  .nav-links .nav-link:hover{border-color:rgba(119,159,188,.10)!important}
  .nav-links .nav-link.active{border-color:rgba(119,159,188,.16)!important;box-shadow:inset 0 1px 0 rgba(255,255,255,.50)!important}
}
@media(max-width:360px){
  body[data-page-id="home"] .hero-actions{grid-template-columns:1fr!important}
  
  
}

/* =========================================================
   SEMC V2.7.6 — mobile first-paint / navigation motion / footer
   ========================================================= */
.hero-picture{display:block;width:100%;height:100%}
.hero-picture>img{display:block;width:100%;height:100%}

/* Footer logo removed on both desktop and mobile. The brand column now uses
   typography as the visual anchor instead of a repeated raster logo. */
.footer-brand-block{
  display:flex!important;
  flex-direction:column!important;
  justify-content:center!important;
  align-self:stretch!important;
  min-width:0!important;
}
.footer-brand-block .footer-brand{display:none!important}
.footer-brand-block h3{
  font-size:clamp(19px,1.35vw,23px)!important;
  line-height:1.35!important;
  letter-spacing:-.02em!important;
  margin:0 0 12px!important;
}
.footer-brand-block>p:not(.footer-hotline){max-width:34em}

@media (max-width:980px){
  :root{
    --semc-mobile-glass:rgba(246,250,253,.80);
    --semc-mobile-glass-border:rgba(255,255,255,.91);
    --semc-mobile-glass-shadow:0 22px 62px rgba(19,52,77,.16);
    --semc-mobile-motion:cubic-bezier(.22,1,.36,1);
  }

  /* Header and drawer share one material instead of two visibly different
     transparencies. A higher material opacity keeps text readable over busy
     factory photography while backdrop-filter still lets the image breathe. */
  .site-nav,
  .site-nav.scrolled,
  .site-nav[data-nav-theme="dark"],
  .site-nav[data-nav-theme="dark"].scrolled{
    background:var(--semc-mobile-glass)!important;
    border-color:var(--semc-mobile-glass-border)!important;
    -webkit-backdrop-filter:blur(28px) saturate(1.32)!important;
    backdrop-filter:blur(28px) saturate(1.32)!important;
    box-shadow:0 16px 44px rgba(22,55,80,.12),inset 0 1px 0 rgba(255,255,255,.60)!important;
  }

  /* True three-line hamburger. Each line morphs independently; the button no
     longer spins as a single object. */
  .menu-btn{
    position:relative!important;
    overflow:hidden!important;
    transform:translateZ(0)!important;
    transition:background-color .30s ease,border-color .30s ease,box-shadow .30s ease,transform .34s var(--semc-mobile-motion)!important;
    -webkit-tap-highlight-color:transparent!important;
  }
  .menu-btn:hover{transform:translateY(-1px)!important}
  .menu-btn.active{transform:scale(.97)!important;background:rgba(255,255,255,.86)!important}
  .menu-btn .menu-line{
    position:absolute!important;
    left:50%!important;top:50%!important;
    display:block!important;
    width:19px!important;height:2px!important;margin:0!important;
    border-radius:999px!important;background:#16466f!important;
    transform-origin:center!important;
    transition:transform .40s var(--semc-mobile-motion),opacity .24s ease,width .34s var(--semc-mobile-motion)!important;
    will-change:transform,opacity,width!important;
  }
  .menu-btn .menu-line-1{transform:translate(-50%,-6px)!important}
  .menu-btn .menu-line-2{transform:translate(-50%,0)!important;width:15px!important}
  .menu-btn .menu-line-3{transform:translate(-50%,6px)!important}
  .menu-btn.active .menu-line-1{transform:translate(-50%,0) rotate(45deg)!important}
  .menu-btn.active .menu-line-2{opacity:0!important;width:5px!important;transform:translate(-50%,0) scaleX(.25)!important}
  .menu-btn.active .menu-line-3{transform:translate(-50%,0) rotate(-45deg)!important}

  /* Keep the flyout mounted so opening does not force a heavy display/layout
     jump. Only compositor-friendly opacity/transform are animated. */
  .nav-links{
    display:flex!important;
    visibility:hidden!important;
    pointer-events:none!important;
    opacity:0!important;
    transform:translate3d(0,-10px,0)!important;
    transform-origin:50% 0!important;
    background:var(--semc-mobile-glass)!important;
    border-color:var(--semc-mobile-glass-border)!important;
    -webkit-backdrop-filter:blur(28px) saturate(1.32)!important;
    backdrop-filter:blur(28px) saturate(1.32)!important;
    box-shadow:var(--semc-mobile-glass-shadow),inset 0 1px 0 rgba(255,255,255,.62)!important;
    will-change:transform,opacity!important;
    contain:paint!important;
    transition:
      opacity .30s ease,
      transform .40s var(--semc-mobile-motion),
      visibility 0s linear .40s!important;
  }
  .nav-links.open{
    visibility:visible!important;
    pointer-events:auto!important;
    opacity:1!important;
    transform:translate3d(0,0,0)!important;
    animation:none!important;
    transition:
      opacity .30s ease,
      transform .40s var(--semc-mobile-motion),
      visibility 0s linear 0s!important;
  }
  .nav-links .nav-link,
  .nav-links .nav-link:hover,
  .nav-links .nav-link.active,
  .nav-links .nav-link.active:hover{
    opacity:0!important;
    transform:translate3d(0,-6px,0)!important;
    transition:
      opacity .24s ease,
      transform .34s var(--semc-mobile-motion),
      color .22s ease,
      background-color .22s ease,
      border-color .22s ease!important;
  }
  .nav-links.open .nav-link,
  .nav-links.open .nav-link:hover,
  .nav-links.open .nav-link.active,
  .nav-links.open .nav-link.active:hover{opacity:1!important;transform:translate3d(0,0,0)!important}
  .nav-links.open .nav-link:nth-child(1){transition-delay:.035s!important}
  .nav-links.open .nav-link:nth-child(2){transition-delay:.055s!important}
  .nav-links.open .nav-link:nth-child(3){transition-delay:.075s!important}
  .nav-links.open .nav-link:nth-child(4){transition-delay:.095s!important}
  .nav-links.open .nav-link:nth-child(5){transition-delay:.115s!important}
  .nav-links.open .nav-link:nth-child(6){transition-delay:.135s!important}
  .nav-links.open .nav-link:nth-child(7){transition-delay:.155s!important}
  .nav-links.open .nav-link:nth-child(8){transition-delay:.175s!important}
  .nav-links:not(.open) .nav-link{transition-delay:0s!important}

  /* The active rail stays on the left edge of the item and follows the item's
     rounded geometry, rather than looking like a centered desktop underline. */
  .nav-links .nav-link::before{
    left:3px!important;top:7px!important;bottom:7px!important;width:4px!important;
    border-radius:0 8px 8px 0!important;
  }
}

@media (max-width:700px){
  /* Mobile footer: no empty logo column. Company name starts at the left edge,
     with compact two-column navigation beneath it. */
  .footer-main{grid-template-columns:1fr 1fr!important;gap:24px 18px!important}
  .footer-brand-block{
    grid-column:1/-1!important;
    display:flex!important;
    flex-direction:column!important;
    align-items:flex-start!important;
    justify-content:center!important;
    gap:0!important;
  }
  .footer-brand-block h3{font-size:18px!important;line-height:1.35!important;margin:0 0 7px!important}
  .footer-brand-block>p:not(.footer-hotline){font-size:11.5px!important;line-height:1.6!important;max-width:32em!important}
  .footer-hotline{font-size:19px!important;margin:7px 0 0!important}
}

@media (max-width:360px){
  
}

@media (prefers-reduced-motion:reduce){
  .menu-btn .menu-line,.nav-links,.nav-links .nav-link{transition-duration:.01ms!important;transition-delay:0s!important}
}

/* =========================================================
   SEMC V2.7.7 — true live mobile glass + mirrored active rail
   ========================================================= */
@media (max-width:980px){
  /* The header keeps the exact V2.7.6 live-glass material. The flyout is
     portaled to <body> by site.js, so Safari blurs the actual page behind it
     instead of a pre-composited header layer. Both surfaces intentionally use
     the same alpha, blur, saturation, border and highlight values. */
  .site-nav,
  .site-nav.scrolled,
  .site-nav[data-nav-theme="dark"],
  .site-nav[data-nav-theme="dark"].scrolled,
  body > .nav-links.mobile-nav-panel{
    background:rgba(246,250,253,.80)!important;
    border-color:rgba(255,255,255,.91)!important;
    -webkit-backdrop-filter:blur(28px) saturate(1.32)!important;
    backdrop-filter:blur(28px) saturate(1.32)!important;
    box-shadow:0 16px 44px rgba(22,55,80,.12),inset 0 1px 0 rgba(255,255,255,.60)!important;
  }

  /* Real independent backdrop layer: no transform or paint containment is put
     on the glass itself, which keeps backdrop-filter live while the page moves. */
  body > .nav-links.mobile-nav-panel{
    position:fixed!important;
    left:12px!important;right:12px!important;
    top:calc(86px + var(--semc-safe-top))!important;
    width:auto!important;
    z-index:999!important;
    display:flex!important;
    visibility:hidden!important;
    pointer-events:none!important;
    opacity:0!important;
    transform:none!important;
    transform-origin:initial!important;
    contain:none!important;
    isolation:auto!important;
    will-change:opacity!important;
    border-style:solid!important;border-width:1px!important;
    border-radius:24px!important;
    max-height:calc(100dvh - 100px - var(--semc-safe-top))!important;
    overflow-y:auto!important;overflow-x:hidden!important;
    overscroll-behavior:contain!important;
    -webkit-overflow-scrolling:touch!important;
    transition:opacity .30s ease,visibility 0s linear .30s!important;
  }
  body > .nav-links.mobile-nav-panel.open{
    visibility:visible!important;
    pointer-events:auto!important;
    opacity:1!important;
    transform:none!important;
    transition:opacity .30s ease,visibility 0s linear 0s!important;
  }

  /* Mirror the blue/red rail across its vertical axis. Its outer-left radius
     follows the selected white item's 14px radius, so the accent visually hugs
     the same corner instead of bending toward the text. */
  body > .nav-links.mobile-nav-panel .nav-link,
  body > .nav-links.mobile-nav-panel .nav-link:hover,
  body > .nav-links.mobile-nav-panel .nav-link.active,
  body > .nav-links.mobile-nav-panel .nav-link.active:hover{
    border-radius:14px!important;
    overflow:visible!important;
  }
  body > .nav-links.mobile-nav-panel .nav-link::before{
    left:-1px!important;right:auto!important;
    top:-1px!important;bottom:-1px!important;
    width:6px!important;height:auto!important;
    border-radius:14px 0 0 14px!important;
    transform:none!important;
    background:linear-gradient(180deg,#2d72b4 0%,#557fa6 42%,#93768f 64%,#d53f55 100%)!important;
    box-shadow:none!important;
  }
  body > .nav-links.mobile-nav-panel .nav-link:hover::before{width:6px!important;opacity:.42!important;transform:none!important}
  
}

@media (max-width:700px){
  body > .nav-links.mobile-nav-panel{
    left:10px!important;right:10px!important;
    top:calc(82px + var(--semc-safe-top))!important;
    border-radius:21px!important;
    max-height:calc(100dvh - 94px - var(--semc-safe-top))!important;
  }
  body > .nav-links.mobile-nav-panel .nav-link,
  body > .nav-links.mobile-nav-panel .nav-link:hover,
  body > .nav-links.mobile-nav-panel .nav-link.active,
  body > .nav-links.mobile-nav-panel .nav-link.active:hover{border-radius:14px!important}
  body > .nav-links.mobile-nav-panel .nav-link::before{border-radius:14px 0 0 14px!important}
}

/* Back-to-top shadow cleanup: retain depth but remove the dark/black halo. */
.back-to-top{
  -webkit-appearance:none!important;appearance:none!important;
  outline:none!important;filter:none!important;
  box-shadow:0 10px 26px rgba(45,101,138,.075),inset 0 1px 0 rgba(255,255,255,.78)!important;
}
.back-to-top:hover{
  box-shadow:0 12px 28px rgba(45,101,138,.095),inset 0 1px 0 rgba(255,255,255,.82)!important;
}
.back-to-top:focus-visible{
  box-shadow:0 0 0 3px rgba(47,116,181,.16),0 10px 26px rgba(45,101,138,.07),inset 0 1px 0 rgba(255,255,255,.80)!important;
}


/* =========================================================
   SEMC V2.7.8 — mobile footer / active rail / shadow-free top control
   ========================================================= */

/* 3) Back-to-top: deliberately flat. Remove every outer/inner shadow on
   website desktop + mobile; focus keeps an outline instead of a shadow. */
.back-to-top,
.back-to-top:hover,
.back-to-top:active,
.back-to-top:focus,
.back-to-top:focus-visible{
  box-shadow:none!important;
  -webkit-box-shadow:none!important;
  filter:none!important;
  text-shadow:none!important;
  -webkit-tap-highlight-color:transparent!important;
}
.back-to-top:focus-visible{
  outline:2px solid rgba(47,116,181,.42)!important;
  outline-offset:3px!important;
}

@media (max-width:980px){
  /* 2) The mobile active blue/red rail now lives INSIDE the selected white
     rounded item. It follows the same left-side curve instead of sitting
     outside the card boundary. */
  body > .nav-links.mobile-nav-panel .nav-link,
  body > .nav-links.mobile-nav-panel .nav-link:hover,
  body > .nav-links.mobile-nav-panel .nav-link.active,
  body > .nav-links.mobile-nav-panel .nav-link.active:hover{
    overflow:hidden!important;
  }
  body > .nav-links.mobile-nav-panel .nav-link::before{
    left:1px!important;
    right:auto!important;
    top:1px!important;
    bottom:1px!important;
    width:5px!important;
    height:auto!important;
    border-radius:13px 0 0 13px!important;
    transform:none!important;
    box-shadow:none!important;
  }
  body > .nav-links.mobile-nav-panel .nav-link:hover::before,
  body > .nav-links.mobile-nav-panel .nav-link.active::before,
  body > .nav-links.mobile-nav-panel .nav-link.active:hover::before{
    width:5px!important;
    transform:none!important;
    box-shadow:none!important;
  }
}

@media (max-width:700px){
  /* 1) Mobile footer: turn the two dense link columns into compact shortcut
     groups. The full navigation still exists in the header; the footer keeps
     only the most useful shortcuts so it no longer reads like a long sitemap. */
  .corp-footer{
    padding:30px 0 calc(22px + env(safe-area-inset-bottom,0px))!important;
  }
  
  .footer-main{
    grid-template-columns:1fr 1fr!important;
    gap:18px 12px!important;
    align-items:start!important;
  }
  .footer-brand-block{
    grid-column:1/-1!important;
    padding-bottom:16px!important;
    border-bottom:1px solid rgba(255,255,255,.09)!important;
  }
  .footer-brand-block h3{
    font-size:18px!important;
    line-height:1.34!important;
    margin:0 0 7px!important;
  }
  .footer-brand-block>p:not(.footer-hotline){
    font-size:11px!important;
    line-height:1.55!important;
    max-width:31em!important;
  }
  .footer-hotline{
    font-size:16px!important;
    letter-spacing:.04em!important;
    margin:7px 0 0!important;
  }

  /* Business / quick-nav blocks become small framed groups instead of two
     long columns of loose text. */
  .footer-main>.footer-col:nth-child(2),
  .footer-main>.footer-col:nth-child(3){
    min-width:0!important;
    padding:13px 12px 11px!important;
    border:1px solid rgba(255,255,255,.08)!important;
    border-radius:16px!important;
    background:rgba(255,255,255,.035)!important;
  }
  .footer-main>.footer-col:nth-child(2) h3,
  .footer-main>.footer-col:nth-child(3) h3{
    position:relative!important;
    font-size:12px!important;
    line-height:1.2!important;
    margin:0 0 10px!important;
    padding-left:11px!important;
  }
  .footer-main>.footer-col:nth-child(2) h3::before,
  .footer-main>.footer-col:nth-child(3) h3::before{
    content:""!important;
    position:absolute!important;
    left:0!important;top:1px!important;bottom:1px!important;
    width:3px!important;
    border-radius:999px!important;
    background:linear-gradient(180deg,#4385b9 0%,#7d8098 50%,#d04457 100%)!important;
  }
  .footer-main>.footer-col:nth-child(2) a,
  .footer-main>.footer-col:nth-child(3) a{
    display:block!important;
    padding:4px 0!important;
    font-size:11px!important;
    line-height:1.45!important;
    white-space:nowrap!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
    transform:none!important;
  }
  /* Keep the mobile footer concise: secondary routes remain available from
     the main mobile navigation and desktop footer. */
  .footer-main>.footer-col:nth-child(2) a:nth-of-type(3){display:none!important}
  .footer-main>.footer-col:nth-child(3) a:nth-of-type(2){display:none!important}

  /* Contact centres stay easy to reach but occupy a single compact band. */
  .footer-main>.footer-col:last-child{
    grid-column:1/-1!important;
    display:grid!important;
    grid-template-columns:1fr 1fr!important;
    gap:8px!important;
    padding-top:2px!important;
  }
  .footer-main>.footer-col:last-child h3{
    grid-column:1/-1!important;
    font-size:12px!important;
    margin:0 0 2px!important;
  }
  .footer-main>.footer-col:last-child .footer-contact-link{
    min-height:38px!important;
    padding:7px 8px!important;
    border-radius:12px!important;
    font-size:10.5px!important;
    line-height:1.35!important;
  }
  .footer-bottom{
    margin-top:19px!important;
    padding-top:13px!important;
    gap:3px!important;
    font-size:9.5px!important;
    line-height:1.45!important;
  }
}

@media (max-width:360px){
  .footer-main{grid-template-columns:1fr!important}
  .footer-main>.footer-col:nth-child(2),
  .footer-main>.footer-col:nth-child(3){grid-column:1/-1!important}
  .footer-main>.footer-col:last-child{grid-template-columns:1fr!important}
}


/* =========================================================
   SEMC V2.7.9 — mobile active rail flush to selected card edge
   ========================================================= */
@media (max-width:980px){
  body > .nav-links.mobile-nav-panel .nav-link,
  body > .nav-links.mobile-nav-panel .nav-link:hover,
  body > .nav-links.mobile-nav-panel .nav-link.active,
  body > .nav-links.mobile-nav-panel .nav-link.active:hover{
    overflow:hidden!important;
    isolation:isolate!important;
  }
  body > .nav-links.mobile-nav-panel .nav-link::before{
    left:0!important;
    right:auto!important;
    top:0!important;
    bottom:0!important;
    width:6px!important;
    height:auto!important;
    border-radius:14px 0 0 14px!important;
    transform:none!important;
    box-shadow:none!important;
    z-index:1!important;
  }
  body > .nav-links.mobile-nav-panel .nav-link:hover::before{
    width:6px!important;
  }
  body > .nav-links.mobile-nav-panel .nav-link.active::before,
  body > .nav-links.mobile-nav-panel .nav-link.active:hover::before{
    width:6px!important;
    opacity:1!important;
    transform:none!important;
  }
}

/* =========================================================
   SEMC V2.8.2 — Content Center details + adaptive galleries + refined video
   ========================================================= */

/* Managed cards become fully clickable only when a detail page exists. */
.cms-detail-link{display:block;color:inherit;text-decoration:none;min-width:0}
.cms-detail-link-story,.cms-detail-link-visual{border-radius:inherit}
.content-story.has-detail,.visual-content-card.has-detail{cursor:pointer}
.content-story.has-detail,.visual-content-card.has-detail{
  transition:transform .42s var(--ease),box-shadow .42s var(--ease),border-color .42s var(--ease),background .42s var(--ease)
}
.cms-detail-link:hover .content-story.has-detail,
.cms-detail-link:hover .visual-content-card.has-detail{
  transform:translateY(-5px);
  box-shadow:0 24px 60px rgba(28,76,114,.13);
}
.content-detail-hint{
  display:inline-flex;align-items:center;gap:8px;margin-top:17px;
  color:#275f8c;font-size:12px;font-weight:760;letter-spacing:.03em;
}
.content-detail-hint b{font-size:16px;font-weight:520;transition:transform .28s var(--ease)}
.cms-detail-link:hover .content-detail-hint b{transform:translateX(4px)}
.cms-module-detail-link{
  margin:32px 0 0 auto;width:max-content;max-width:100%;display:flex;align-items:center;gap:12px;
  padding:11px 15px 11px 17px;border-radius:999px;border:1px solid rgba(42,105,157,.16);
  background:rgba(255,255,255,.72);backdrop-filter:blur(14px) saturate(125%);
  color:#255a85;font-size:13px;font-weight:720;box-shadow:0 10px 28px rgba(30,75,111,.07);
  transition:transform .28s var(--ease),background .28s var(--ease),border-color .28s var(--ease)
}
.cms-module-detail-link b{display:grid;place-items:center;width:25px;height:25px;border-radius:50%;background:#edf5fb;font-size:15px;font-weight:500}
.cms-module-detail-link:hover{transform:translateY(-2px);background:#fff;border-color:rgba(42,105,157,.25)}

/* Detail page shell. It deliberately reuses the site's current pale-blue / white
   language instead of introducing a separate visual system. */
.detail-page-body{background:#f3f7fa}
.detail-root{min-height:72vh;padding-top:0}
.detail-loading{min-height:72vh;display:grid;place-items:center;align-content:center;gap:16px;color:var(--muted)}
.detail-loading-mark{width:44px;height:44px;border-radius:50%;border:2px solid rgba(48,112,165,.16);border-top-color:#3d7eb5;animation:detailSpin .9s linear infinite}
@keyframes detailSpin{to{transform:rotate(360deg)}}
.detail-article{overflow:hidden;background:#fff}
.detail-hero{
  position:relative;padding:154px 0 82px;min-height:520px;display:flex;align-items:center;
  background:
    radial-gradient(circle at 88% 18%,rgba(113,174,222,.18),transparent 28rem),
    linear-gradient(180deg,#eaf4fb 0%,#f8fbfd 100%);
  border-bottom:1px solid rgba(29,80,122,.10);
}
.detail-hero::before{
  content:"";position:absolute;inset:0;pointer-events:none;opacity:.48;
  background:linear-gradient(115deg,transparent 0 64%,rgba(255,255,255,.78) 64% 66%,transparent 66% 100%);
}
.detail-hero-grid{position:relative;z-index:1;display:grid;grid-template-columns:minmax(0,1.05fr) minmax(340px,.95fr);gap:64px;align-items:center}
.detail-hero.no-cover .detail-hero-grid{grid-template-columns:minmax(0,900px)}
.detail-hero-copy{min-width:0}
.detail-breadcrumb{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-bottom:38px;color:#72879a;font-size:12px;font-weight:620}
.detail-breadcrumb a{transition:color .2s ease}.detail-breadcrumb a:hover{color:#245f90}.detail-breadcrumb b{color:#42637e;font-weight:680;max-width:46ch;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.detail-kicker{display:flex;align-items:center;gap:13px;color:#376b94;font-size:11px;font-weight:760;letter-spacing:.17em;text-transform:uppercase}
.detail-kicker i{width:48px;height:3px;border-radius:999px;background:linear-gradient(90deg,#367bb5 0%,#748ba7 52%,#c63d50 100%)}
.detail-hero h1{margin:20px 0 20px;max-width:16ch;font-size:clamp(42px,5.4vw,76px);line-height:1.02;letter-spacing:-.052em;font-weight:770;color:#173b5b}
.detail-hero-copy>p{max-width:720px;margin:0;color:#6a8194;font-size:clamp(16px,1.35vw,20px);line-height:1.85}
.detail-meta{margin-top:24px;padding-top:18px;border-top:1px solid rgba(39,89,130,.11);font-size:12px;font-weight:690;letter-spacing:.04em;color:#5a7891}
.detail-hero-media{position:relative;aspect-ratio:4/3;border-radius:32px;overflow:hidden;border:1px solid rgba(255,255,255,.92);box-shadow:0 28px 70px rgba(27,73,109,.15);background:#e7f0f6}
.detail-hero-media::after{content:"";position:absolute;inset:0;box-shadow:inset 0 0 0 1px rgba(34,81,118,.06);border-radius:inherit;pointer-events:none}
.detail-hero-media img{width:100%;height:100%;object-fit:cover}
.detail-modules{background:#fff}
.detail-modules>.section:first-child{border-top:0}
.detail-empty-block{padding:48px;border:1px dashed rgba(46,100,143,.22);border-radius:24px;background:#f7fafc;color:#6f8395;text-align:center;line-height:1.8}
.detail-not-found{min-height:74vh;display:flex;align-items:center;padding:148px 0 80px;background:linear-gradient(145deg,#edf6fc,#fff)}
.detail-not-found span{font-size:11px;letter-spacing:.18em;font-weight:760;color:#5e88a8}.detail-not-found h1{font-size:clamp(38px,5vw,64px);letter-spacing:-.04em;margin:16px 0 12px}.detail-not-found p{color:var(--muted);font-size:17px}.detail-not-found a{display:inline-flex;margin-top:24px;padding:12px 16px;border-radius:999px;background:#fff;border:1px solid var(--line);color:#225b87;font-weight:700}

/* Video — quiet before playback, then hands control to the native media UI. */
.cms-dynamic-video{overflow:hidden}
.cms-video-stage{margin-top:42px}
.cms-video-frame{
  position:relative;margin:0 auto;aspect-ratio:var(--video-aspect,1.7777778);overflow:hidden;
  border-radius:30px;background:
    radial-gradient(circle at 20% 16%,rgba(108,171,219,.34),transparent 34%),
    linear-gradient(145deg,#153e61 0%,#245f89 54%,#183d5a 100%);
  border:1px solid rgba(255,255,255,.82);box-shadow:0 28px 70px rgba(25,68,101,.18);
  isolation:isolate;
}
.cms-video-stage.cms-video-landscape .cms-video-frame{width:min(100%,1180px)}
.cms-video-stage.cms-video-cinema .cms-video-frame{width:min(100%,1280px);border-radius:26px}
.cms-video-stage.cms-video-square .cms-video-frame{width:min(100%,760px)}
.cms-video-stage.cms-video-portrait .cms-video-frame{width:min(100%,520px);border-radius:34px}
.cms-video{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:#0c263a;z-index:1}
.cms-video-frame:not(.has-started) .cms-video{filter:saturate(.94) brightness(.93);transform:scale(1.001);transition:filter .55s var(--ease),transform .7s var(--ease)}
.cms-video-ambient{
  position:absolute;inset:0;z-index:2;pointer-events:none;opacity:.62;
  background:radial-gradient(circle at 50% 46%,rgba(255,255,255,.13),transparent 32%),linear-gradient(180deg,rgba(255,255,255,.04),rgba(8,28,43,.07));
  transition:opacity .45s ease;
}
.cms-video-play{
  position:absolute;z-index:4;left:50%;top:50%;transform:translate(-50%,-50%);
  display:grid;justify-items:center;gap:9px;border:0;background:transparent;color:white;cursor:pointer;
  transition:transform .38s var(--ease),opacity .3s ease;
}
.cms-video-play-ring{
  width:78px;height:78px;border-radius:50%;display:grid;place-items:center;
  background:rgba(244,250,255,.17);border:1px solid rgba(255,255,255,.62);
  backdrop-filter:blur(18px) saturate(135%);box-shadow:0 14px 38px rgba(8,32,50,.22),inset 0 1px rgba(255,255,255,.26);
  transition:transform .38s var(--ease),background .38s var(--ease);
}
.cms-video-play-ring::after{content:"";position:absolute;inset:-9px;border-radius:50%;border:1px solid rgba(255,255,255,.16);opacity:.62;transition:transform .5s var(--ease),opacity .5s ease}
.cms-video-play svg{width:30px;height:30px;fill:white;margin-left:3px}.cms-video-play small{font-size:9px;font-weight:780;letter-spacing:.22em;text-shadow:0 2px 12px rgba(0,0,0,.25)}
.cms-video-frame:not(.has-started):hover .cms-video{filter:saturate(1) brightness(.97);transform:scale(1.008)}
.cms-video-frame:not(.has-started):hover .cms-video-play{transform:translate(-50%,-50%) scale(1.025)}
.cms-video-frame:not(.has-started):hover .cms-video-play-ring{background:rgba(248,252,255,.23);transform:scale(1.035)}
.cms-video-frame:not(.has-started):hover .cms-video-play-ring::after{transform:scale(1.04);opacity:.9}

.cms-video-frame.has-started .cms-video-play,.cms-video-frame.has-started .cms-video-ambient{opacity:0!important;visibility:hidden!important;pointer-events:none!important;animation:none!important;transition:opacity .24s ease!important}
.cms-video-empty{display:grid;place-items:center;min-height:0}
.cms-video-empty>div{text-align:center;color:#dcecf7}.cms-video-empty span{display:block;font-size:10px;letter-spacing:.25em;font-weight:780}.cms-video-empty p{margin:8px 0 0;color:#a9c5d9}
.cms-video-caption{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;margin:15px auto 0;width:min(100%,1180px);color:#6f8494;font-size:12px;line-height:1.6}
.cms-video-caption b{font-weight:720;color:#3d6f94;white-space:nowrap;padding:4px 8px;border-radius:999px;background:#edf5fa}
.cms-video-stage.cms-video-portrait .cms-video-caption,.cms-video-stage.cms-video-square .cms-video-caption{max-width:760px}.cms-video-stage.cms-video-portrait .cms-video-caption{max-width:520px}

@media (max-width:980px){
  .detail-hero{padding:132px 0 64px;min-height:auto}
  .detail-hero-grid{grid-template-columns:1fr;gap:34px}
  .detail-hero h1{max-width:18ch;font-size:clamp(38px,8.5vw,58px)}
  .detail-hero-media{width:min(100%,720px);border-radius:26px}
  .detail-breadcrumb{margin-bottom:28px}
  .cms-video-frame{border-radius:24px}
  .cms-video-stage.cms-video-portrait .cms-video-frame{width:min(72vw,440px)}
  .cms-video-play-ring{width:68px;height:68px}.cms-video-play-ring::after{width:82px;height:82px}
}
@media (max-width:640px){
  .detail-hero{padding:112px 0 48px;background:linear-gradient(180deg,#eaf4fb 0%,#f8fbfd 100%)}
  .detail-hero::before{display:none}
  .detail-breadcrumb{font-size:10px;gap:7px;margin-bottom:24px}.detail-breadcrumb b{max-width:21ch}
  .detail-kicker{font-size:9.5px;letter-spacing:.15em}.detail-kicker i{width:34px;height:2px}
  .detail-hero h1{font-size:clamp(34px,10.5vw,48px);margin:16px 0 14px;line-height:1.05}
  .detail-hero-copy>p{font-size:15px;line-height:1.78}.detail-meta{margin-top:18px;padding-top:14px}
  .detail-hero-media{border-radius:22px;aspect-ratio:16/10}
  .detail-modules .section{padding-top:68px;padding-bottom:68px}.detail-modules .section.compact{padding-top:54px;padding-bottom:54px}
  .cms-video-stage{margin-top:30px}
  .cms-video-stage.cms-video-landscape .cms-video-frame,.cms-video-stage.cms-video-cinema .cms-video-frame,.cms-video-stage.cms-video-square .cms-video-frame{width:100%}
  .cms-video-stage.cms-video-portrait .cms-video-frame{width:min(82vw,390px)}
  .cms-video-frame{border-radius:20px;box-shadow:0 18px 46px rgba(25,68,101,.14)}
  .cms-video-play-ring{width:60px;height:60px}.cms-video-play-ring::after{width:72px;height:72px}.cms-video-play svg{width:25px;height:25px}
  .cms-video-caption{gap:12px;margin-top:12px;font-size:11px}
  .cms-module-detail-link{margin-top:24px}
}
@media (prefers-reduced-motion:reduce){.cms-video-frame:not(.has-started) .cms-video,.cms-video-play,.cms-video-play-ring,.cms-video-play-ring::after{transition:none!important}}


/* V4.8.4 adaptive 2–12 image modules (textGallery; simpleContent remains 2–8) */
.cms-dynamic-textGallery .section-lead{max-width:880px}
.cms-adaptive-gallery{--gallery-gap:14px;display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:var(--gallery-gap);margin-top:38px}
.cms-adaptive-gallery figure{grid-column:span 4;position:relative;margin:0;overflow:hidden;aspect-ratio:4/3;border-radius:20px;background:#eaf1f5;border:1px solid rgba(42,91,126,.09)}
.cms-adaptive-gallery figure img{width:100%;height:100%;display:block;object-fit:cover;transition:transform .7s var(--ease),filter .7s var(--ease)}
.cms-adaptive-gallery figure::after{content:"";position:absolute;inset:0;border-radius:inherit;box-shadow:inset 0 0 0 1px rgba(255,255,255,.45);pointer-events:none}
.cms-adaptive-gallery figure:hover img{transform:scale(1.018);filter:saturate(1.03)}
.cms-adaptive-gallery[data-count="2"] figure{grid-column:span 6}
.cms-adaptive-gallery[data-count="3"] figure{grid-column:span 4}
.cms-adaptive-gallery[data-count="4"] figure{grid-column:span 6}
.cms-adaptive-gallery[data-count="5"] figure:nth-child(-n+3){grid-column:span 4}.cms-adaptive-gallery[data-count="5"] figure:nth-child(n+4){grid-column:span 6}
.cms-adaptive-gallery[data-count="6"] figure{grid-column:span 4}
.cms-adaptive-gallery[data-count="7"] figure:nth-child(-n+4){grid-column:span 3}.cms-adaptive-gallery[data-count="7"] figure:nth-child(n+5){grid-column:span 4}
.cms-adaptive-gallery[data-count="8"] figure{grid-column:span 3}
.cms-pure-text{width:100%;max-width:none;margin:0;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none}
.cms-pure-text .reveal{width:100%;max-width:none;margin:0;text-align:left}.cms-pure-text .section-title{max-width:none}.cms-pure-text-body{margin-top:24px;max-width:920px;color:var(--muted);font-size:clamp(16px,1.35vw,19px);line-height:1.9;white-space:pre-line}
.cms-dynamic-simpleContent.is-images .cms-adaptive-gallery{margin-top:0}
@media(max-width:980px){
  .cms-adaptive-gallery{gap:12px;margin-top:30px}.cms-adaptive-gallery figure,.cms-adaptive-gallery[data-count] figure{grid-column:span 6}.cms-adaptive-gallery[data-count="3"] figure:last-child,.cms-adaptive-gallery[data-count="5"] figure:last-child,.cms-adaptive-gallery[data-count="7"] figure:last-child{grid-column:1/-1;aspect-ratio:16/9}
  .cms-pure-text{padding:0;border-radius:0}
}
@media(max-width:640px){
  .cms-adaptive-gallery{display:grid;grid-template-columns:1fr;gap:10px;margin-top:24px}.cms-adaptive-gallery figure,.cms-adaptive-gallery[data-count] figure,.cms-adaptive-gallery[data-count] figure:last-child{grid-column:1!important;aspect-ratio:4/3!important;border-radius:16px}.cms-adaptive-gallery[data-count="2"]{grid-template-columns:repeat(2,minmax(0,1fr))}.cms-adaptive-gallery[data-count="2"] figure{grid-column:auto!important;aspect-ratio:3/4!important}
  .cms-pure-text{padding:0;border-radius:0}.cms-pure-text-body{margin-top:18px;font-size:15px;line-height:1.85}
}
@media (prefers-reduced-motion:reduce){.cms-adaptive-gallery figure img{transition:none!important}}

/* =========================================================
   SEMC Website V2.8.2 — compact multi-image system / video caption cleanup
   ========================================================= */
/* Multi-image modules are deliberately more compact on desktop. 2–4 images
   share a single row; 5–12 wrap with no more than four images per row. */
.cms-adaptive-gallery{
  --gallery-cols:4;
  width:100%;max-width:1120px;margin-left:auto;margin-right:auto;
  grid-template-columns:repeat(var(--gallery-cols),minmax(0,1fr))!important;
  gap:12px!important;
}
.cms-adaptive-gallery[data-count="2"]{--gallery-cols:2;max-width:780px}
.cms-adaptive-gallery[data-count="3"]{--gallery-cols:3;max-width:980px}
.cms-adaptive-gallery[data-count="4"]{--gallery-cols:4;max-width:1120px}
.cms-adaptive-gallery[data-count="5"],
.cms-adaptive-gallery[data-count="6"],
.cms-adaptive-gallery[data-count="7"],
.cms-adaptive-gallery[data-count="8"],
.cms-adaptive-gallery[data-count="9"],
.cms-adaptive-gallery[data-count="10"],
.cms-adaptive-gallery[data-count="11"],
.cms-adaptive-gallery[data-count="12"]{--gallery-cols:4;max-width:1120px}
.cms-adaptive-gallery figure,
.cms-adaptive-gallery[data-count] figure,
.cms-adaptive-gallery[data-count] figure:last-child{
  grid-column:auto!important;aspect-ratio:4/3!important;border-radius:18px!important;
}

/* Built-in two-photo modules and equipment matrices use the same restrained
   media scale so large screens are led by content rather than oversized media. */
.gallery-2{max-width:1040px;margin-left:auto;margin-right:auto;gap:12px!important}
.gallery-2 .photo{border-radius:20px!important}
.equipment-grid{max-width:1160px;margin-left:auto;margin-right:auto;gap:14px!important}

/* Managed content items may contain several images inside one card. Keep the
   2x2 media mosaic compact and stable rather than letting it dominate the copy. */
.content-story-media{max-width:230px}
.content-story.multi-image .content-story-media{aspect-ratio:4/3}
.visual-content-card-media.image-count-2,
.visual-content-card-media.image-count-3,
.visual-content-card-media.image-count-4{aspect-ratio:4/3}

/* The selected video ratio is an editor concern; the public site only shows
   the human-facing caption. */
.cms-video-caption{justify-content:flex-start!important}
.cms-video-caption b{display:none!important}

@media(max-width:980px){
  .cms-adaptive-gallery{--gallery-cols:3;max-width:900px!important;gap:10px!important}
  .cms-adaptive-gallery[data-count="2"]{--gallery-cols:2;max-width:700px!important}
  .cms-adaptive-gallery[data-count="3"]{--gallery-cols:3;max-width:900px!important}
  .cms-adaptive-gallery[data-count="4"],.cms-adaptive-gallery[data-count="5"],.cms-adaptive-gallery[data-count="6"],.cms-adaptive-gallery[data-count="7"],.cms-adaptive-gallery[data-count="8"],.cms-adaptive-gallery[data-count="9"],.cms-adaptive-gallery[data-count="10"],.cms-adaptive-gallery[data-count="11"],.cms-adaptive-gallery[data-count="12"]{--gallery-cols:3;max-width:900px!important}
  .equipment-grid{max-width:900px}
}

@media(max-width:700px){
  /* Phone galleries stay compact: two images per row whenever there is more
     than one image, including odd counts. No forced full-width last tile. */
  .cms-adaptive-gallery,
  .cms-adaptive-gallery[data-count="2"],.cms-adaptive-gallery[data-count="3"],.cms-adaptive-gallery[data-count="4"],
  .cms-adaptive-gallery[data-count="5"],.cms-adaptive-gallery[data-count="6"],.cms-adaptive-gallery[data-count="7"],.cms-adaptive-gallery[data-count="8"],
  .cms-adaptive-gallery[data-count="9"],.cms-adaptive-gallery[data-count="10"],.cms-adaptive-gallery[data-count="11"],.cms-adaptive-gallery[data-count="12"]{
    --gallery-cols:2;grid-template-columns:repeat(2,minmax(0,1fr))!important;
    max-width:100%!important;gap:8px!important;margin-top:22px!important;
  }
  .cms-adaptive-gallery figure,
  .cms-adaptive-gallery[data-count] figure,
  .cms-adaptive-gallery[data-count] figure:last-child{
    grid-column:auto!important;aspect-ratio:4/3!important;border-radius:14px!important;
  }
  .cms-dynamic-simpleContent.is-images .cms-adaptive-gallery{margin-top:0!important}

  .gallery-2{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:8px!important;max-width:100%!important}
  .gallery-2 .photo{aspect-ratio:4/3!important;border-radius:15px!important}
  .gallery-2 .label{left:8px!important;bottom:8px!important;right:8px!important;font-size:9px!important;padding:6px 7px!important}

  /* Equipment/gallery modules no longer become a long one-image-per-row stack. */
  .equipment-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:8px!important;max-width:100%!important}
  .equipment-card.large,.equipment-card.small,
  .cms-dynamic-equipment .equipment-card.large,.cms-dynamic-equipment .equipment-card.small{
    grid-column:span 1!important;aspect-ratio:4/3!important;border-radius:16px!important;height:auto!important;
  }
  .equip-meta{left:10px!important;right:10px!important;bottom:9px!important;gap:6px!important}
  .equip-meta h3{font-size:14px!important;line-height:1.24!important}.equip-meta span{font-size:7.5px!important}.equip-meta>b{font-size:10px!important}

  .content-story-media{max-width:none;width:100%}
  .content-story.multi-image .content-story-media{aspect-ratio:16/9}
}

/* =========================================================
   SEMC Website V2.8.4 — balanced galleries / cleaner video edges
   ========================================================= */
/* Video: keep the native controls fully usable (including the scrubber) while
   removing the dark 1px edge that some WebKit builds create around rounded
   video layers. clip-path is a single compositing clip, not a continuous blur
   or mask, so the corner cleanup stays lightweight. */
.cms-video-frame{
  --video-radius:30px;
  border:0!important;
  border-radius:var(--video-radius)!important;
  background:#edf3f7!important;
  box-shadow:0 22px 54px rgba(28,72,105,.11)!important;
  overflow:hidden!important;
  clip-path:inset(0 round var(--video-radius));
}
.cms-video-stage.cms-video-cinema .cms-video-frame{--video-radius:26px}
.cms-video-stage.cms-video-portrait .cms-video-frame{--video-radius:34px}
.cms-video-frame::after{
  content:"";position:absolute;inset:0;z-index:6;pointer-events:none;border-radius:inherit;
  box-shadow:inset 0 0 0 1px rgba(40,88,122,.07),inset 0 0 0 2px rgba(255,255,255,.36);
}
.cms-video{
  inset:0!important;border:0!important;outline:0!important;border-radius:inherit!important;
  background:transparent!important;clip-path:inset(.45px round calc(var(--video-radius) - .45px));
  transform:none!important;will-change:auto!important;
}
.cms-video-frame:not(.has-started) .cms-video,
.cms-video-frame:not(.has-started):hover .cms-video{transform:none!important}
.cms-video-frame.has-started .cms-video{filter:none!important;transform:scale(1)!important;transition:filter .46s var(--ease),transform .58s cubic-bezier(.22,1,.36,1)!important}
@media(max-width:700px){
  .cms-video-frame{--video-radius:22px}
  .cms-video-stage.cms-video-cinema .cms-video-frame{--video-radius:20px}
  .cms-video-stage.cms-video-portrait .cms-video-frame{--video-radius:26px}
}

/* Multi-image modules: use more of the content width again, but keep an
   intentional layout for every image count. One image can breathe; two sit
   side-by-side; odd counts use a wider final row instead of leaving dead space. */
.cms-adaptive-gallery{
  width:100%!important;max-width:1320px!important;margin-left:auto!important;margin-right:auto!important;
  display:grid!important;grid-template-columns:repeat(12,minmax(0,1fr))!important;gap:16px!important;
}
.cms-adaptive-gallery[data-count="1"]{max-width:1120px!important}
.cms-adaptive-gallery[data-count="2"]{max-width:1240px!important}
.cms-adaptive-gallery[data-count="3"],
.cms-adaptive-gallery[data-count="4"],
.cms-adaptive-gallery[data-count="5"],
.cms-adaptive-gallery[data-count="6"],
.cms-adaptive-gallery[data-count="7"],
.cms-adaptive-gallery[data-count="8"]{max-width:1320px!important}
.cms-adaptive-gallery figure,
.cms-adaptive-gallery[data-count] figure,
.cms-adaptive-gallery[data-count] figure:last-child{grid-column:span 4!important;aspect-ratio:4/3!important;border-radius:20px!important}
.cms-adaptive-gallery[data-count="1"] figure{grid-column:1/-1!important;aspect-ratio:16/9!important}
.cms-adaptive-gallery[data-count="2"] figure{grid-column:span 6!important}
.cms-adaptive-gallery[data-count="3"] figure{grid-column:span 4!important}
.cms-adaptive-gallery[data-count="4"] figure{grid-column:span 3!important}
.cms-adaptive-gallery[data-count="5"] figure:nth-child(-n+3){grid-column:span 4!important}
.cms-adaptive-gallery[data-count="5"] figure:nth-child(n+4){grid-column:span 6!important}
.cms-adaptive-gallery[data-count="6"] figure{grid-column:span 4!important}
.cms-adaptive-gallery[data-count="7"] figure:nth-child(-n+4){grid-column:span 3!important}
.cms-adaptive-gallery[data-count="7"] figure:nth-child(n+5){grid-column:span 4!important}
.cms-adaptive-gallery[data-count="8"] figure{grid-column:span 3!important}
.gallery-2{max-width:1240px!important;gap:16px!important}

/* Equipment matrix keeps the established 7:5 / 5:7 rhythm but no longer sits
   in a narrow island on wide screens. A single item becomes a confident hero. */
.equipment-grid{max-width:1320px!important;gap:16px!important}
.equipment-grid[data-count="1"]{max-width:1120px!important}
.equipment-grid[data-count="1"]>.equipment-card{grid-column:1/-1!important;aspect-ratio:16/9!important}

@media(max-width:980px){
  .cms-adaptive-gallery{max-width:100%!important;gap:12px!important}
  .cms-adaptive-gallery[data-count="1"] figure{grid-column:1/-1!important;aspect-ratio:16/9!important}
  .cms-adaptive-gallery[data-count="2"] figure{grid-column:span 6!important}
  .cms-adaptive-gallery[data-count="3"] figure{grid-column:span 4!important}
  .cms-adaptive-gallery[data-count="4"] figure,
  .cms-adaptive-gallery[data-count="5"] figure,
  .cms-adaptive-gallery[data-count="6"] figure,
  .cms-adaptive-gallery[data-count="7"] figure,
  .cms-adaptive-gallery[data-count="8"] figure{grid-column:span 6!important}
  .cms-adaptive-gallery[data-count="5"] figure:last-child,
  .cms-adaptive-gallery[data-count="7"] figure:last-child{grid-column:1/-1!important;aspect-ratio:16/9!important}
  .equipment-grid{max-width:100%!important}
}
@media(max-width:700px){
  .cms-adaptive-gallery{grid-template-columns:repeat(12,minmax(0,1fr))!important;gap:9px!important;margin-top:24px!important}
  .cms-adaptive-gallery figure,
  .cms-adaptive-gallery[data-count] figure,
  .cms-adaptive-gallery[data-count] figure:last-child{grid-column:span 6!important;aspect-ratio:4/3!important;border-radius:15px!important}
  .cms-adaptive-gallery[data-count="1"] figure{grid-column:1/-1!important;aspect-ratio:16/10!important}
  .cms-adaptive-gallery[data-count="3"] figure:last-child,
  .cms-adaptive-gallery[data-count="5"] figure:last-child,
  .cms-adaptive-gallery[data-count="7"] figure:last-child{grid-column:1/-1!important;aspect-ratio:16/9!important}
  .gallery-2{grid-template-columns:repeat(2,minmax(0,1fr))!important;max-width:100%!important;gap:9px!important}
  .gallery-2 .photo{aspect-ratio:4/3!important;border-radius:16px!important}
  .equipment-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:9px!important;max-width:100%!important}
  .equipment-grid[data-count="1"]{grid-template-columns:1fr!important}
  .equipment-grid[data-count="1"]>.equipment-card{grid-column:1!important;aspect-ratio:16/10!important}
  .equipment-grid[data-count="3"]>.equipment-card:last-child,
  .equipment-grid[data-count="5"]>.equipment-card:last-child,
  .equipment-grid[data-count="7"]>.equipment-card:last-child{grid-column:1/-1!important;aspect-ratio:16/9!important}
}

/* V2.8.4 specificity lock: image-count geometry must beat legacy :last-child rules. */
.cms-adaptive-gallery[data-count="1"] > figure,
.cms-adaptive-gallery[data-count="1"] > figure:last-child{grid-column:1/-1!important;aspect-ratio:16/9!important}
.cms-adaptive-gallery[data-count="2"] > figure,
.cms-adaptive-gallery[data-count="2"] > figure:last-child{grid-column:span 6!important;aspect-ratio:4/3!important}
.cms-adaptive-gallery[data-count="3"] > figure,
.cms-adaptive-gallery[data-count="3"] > figure:last-child{grid-column:span 4!important;aspect-ratio:4/3!important}
.cms-adaptive-gallery[data-count="4"] > figure,
.cms-adaptive-gallery[data-count="4"] > figure:last-child{grid-column:span 3!important;aspect-ratio:4/3!important}
.cms-adaptive-gallery[data-count="5"] > figure:nth-child(-n+3){grid-column:span 4!important;aspect-ratio:4/3!important}
.cms-adaptive-gallery[data-count="5"] > figure:nth-child(n+4),
.cms-adaptive-gallery[data-count="5"] > figure:last-child{grid-column:span 6!important;aspect-ratio:4/3!important}
.cms-adaptive-gallery[data-count="6"] > figure,
.cms-adaptive-gallery[data-count="6"] > figure:last-child{grid-column:span 4!important;aspect-ratio:4/3!important}
.cms-adaptive-gallery[data-count="7"] > figure:nth-child(-n+4){grid-column:span 3!important;aspect-ratio:4/3!important}
.cms-adaptive-gallery[data-count="7"] > figure:nth-child(n+5),
.cms-adaptive-gallery[data-count="7"] > figure:last-child{grid-column:span 4!important;aspect-ratio:4/3!important}
.cms-adaptive-gallery[data-count="8"] > figure,
.cms-adaptive-gallery[data-count="8"] > figure:last-child{grid-column:span 3!important;aspect-ratio:4/3!important}
@media(max-width:980px){
  .cms-adaptive-gallery[data-count="1"] > figure,
  .cms-adaptive-gallery[data-count="1"] > figure:last-child{grid-column:1/-1!important;aspect-ratio:16/9!important}
  .cms-adaptive-gallery[data-count="2"] > figure,
  .cms-adaptive-gallery[data-count="2"] > figure:last-child{grid-column:span 6!important}
  .cms-adaptive-gallery[data-count="3"] > figure,
  .cms-adaptive-gallery[data-count="3"] > figure:last-child{grid-column:span 4!important}
  .cms-adaptive-gallery[data-count="4"] > figure,
  .cms-adaptive-gallery[data-count="4"] > figure:last-child,
  .cms-adaptive-gallery[data-count="5"] > figure,
  .cms-adaptive-gallery[data-count="6"] > figure,
  .cms-adaptive-gallery[data-count="6"] > figure:last-child,
  .cms-adaptive-gallery[data-count="7"] > figure,
  .cms-adaptive-gallery[data-count="8"] > figure,
  .cms-adaptive-gallery[data-count="8"] > figure:last-child{grid-column:span 6!important}
  .cms-adaptive-gallery[data-count="5"] > figure:last-child,
  .cms-adaptive-gallery[data-count="7"] > figure:last-child{grid-column:1/-1!important;aspect-ratio:16/9!important}
}
@media(max-width:700px){
  .cms-adaptive-gallery[data-count] > figure,
  .cms-adaptive-gallery[data-count] > figure:last-child{grid-column:span 6!important;aspect-ratio:4/3!important}
  .cms-adaptive-gallery[data-count="1"] > figure,
  .cms-adaptive-gallery[data-count="1"] > figure:last-child{grid-column:1/-1!important;aspect-ratio:16/10!important}
  
}

/* V2.8.4 mobile/tablet grid lock: override V2.8.2 count-specific 2/3-column templates. */
@media(max-width:980px){
  .cms-adaptive-gallery[data-count="1"],.cms-adaptive-gallery[data-count="2"],.cms-adaptive-gallery[data-count="3"],.cms-adaptive-gallery[data-count="4"],
  .cms-adaptive-gallery[data-count="5"],.cms-adaptive-gallery[data-count="6"],.cms-adaptive-gallery[data-count="7"],.cms-adaptive-gallery[data-count="8"]{
    grid-template-columns:repeat(12,minmax(0,1fr))!important;
  }
}
@media(max-width:700px){
  .cms-adaptive-gallery[data-count="1"],.cms-adaptive-gallery[data-count="2"],.cms-adaptive-gallery[data-count="3"],.cms-adaptive-gallery[data-count="4"],
  .cms-adaptive-gallery[data-count="5"],.cms-adaptive-gallery[data-count="6"],.cms-adaptive-gallery[data-count="7"],.cms-adaptive-gallery[data-count="8"]{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
  }
  .cms-adaptive-gallery[data-count="2"] > figure:nth-child(n),
  .cms-adaptive-gallery[data-count="3"] > figure:nth-child(n),
  .cms-adaptive-gallery[data-count="4"] > figure:nth-child(n),
  .cms-adaptive-gallery[data-count="5"] > figure:nth-child(n),
  .cms-adaptive-gallery[data-count="6"] > figure:nth-child(n),
  .cms-adaptive-gallery[data-count="7"] > figure:nth-child(n),
  .cms-adaptive-gallery[data-count="8"] > figure:nth-child(n){grid-column:auto!important;aspect-ratio:4/3!important}
  .cms-adaptive-gallery[data-count="1"] > figure:nth-child(n){grid-column:1/-1!important;aspect-ratio:16/10!important}
  .cms-adaptive-gallery[data-count="3"] > figure:last-child,
  .cms-adaptive-gallery[data-count="5"] > figure:last-child,
  .cms-adaptive-gallery[data-count="7"] > figure:last-child{grid-column:1/-1!important;aspect-ratio:16/9!important}
}

/* V2.8.4 final video edge cleanup: no dark inner outline around the media. */
.cms-video-frame::after{box-shadow:inset 0 0 0 1px rgba(255,255,255,.42)!important}

/* =========================================================
   SEMC Website V2.8.4 — native-safe video idle interaction
   =========================================================
   Before first playback the browser's own controls stay hidden so iOS / Android
   cannot stack a second system play button over the designed control. After the
   first real play event the decorative layer disappears permanently for that
   page view and control is handed to the native media UI. */
.cms-video-frame:not(.has-started) .cms-video::-webkit-media-controls,
.cms-video-frame:not(.has-started) .cms-video::-webkit-media-controls-panel,
.cms-video-frame:not(.has-started) .cms-video::-webkit-media-controls-start-playback-button{
  display:none!important;
  -webkit-appearance:none!important;
  opacity:0!important;
}
.cms-video-play-ring{position:relative}
.cms-video-frame:not(.has-started) .cms-video-play-ring{
  animation:semcVideoIdleBreathe 5.6s cubic-bezier(.4,0,.2,1) infinite;
}
.cms-video-frame:not(.has-started) .cms-video-play-ring::after{
  animation:semcVideoIdleHalo 5.6s cubic-bezier(.4,0,.2,1) infinite;
}
.cms-video-frame:not(.has-started) .cms-video-ambient{
  animation:semcVideoIdleAmbient 7.2s ease-in-out infinite;
}
.cms-video-frame.is-starting .cms-video-play{opacity:.76;transform:translate(-50%,-50%) scale(.985)}
.cms-video-frame.has-started .cms-video-play,
.cms-video-frame.has-started .cms-video-ambient{
  opacity:0!important;visibility:hidden!important;pointer-events:none!important;
  animation:none!important;transition:none!important;
}
.cms-video-frame.has-started .cms-video-play-ring,
.cms-video-frame.has-started .cms-video-play-ring::after,
.cms-video-frame.has-started .cms-video-ambient{animation:none!important}
@keyframes semcVideoIdleBreathe{
  0%,100%{transform:translateY(0) scale(1);box-shadow:0 14px 38px rgba(8,32,50,.20),inset 0 1px rgba(255,255,255,.26)}
  50%{transform:translateY(-2px) scale(1.025);box-shadow:0 18px 44px rgba(19,69,104,.22),inset 0 1px rgba(255,255,255,.34)}
}
@keyframes semcVideoIdleHalo{
  0%,100%{transform:scale(.96);opacity:.32}
  50%{transform:scale(1.08);opacity:.70}
}
@keyframes semcVideoIdleAmbient{
  0%,100%{opacity:.48}
  50%{opacity:.66}
}
@media(max-width:700px){
  .cms-video-play{gap:7px}
  .cms-video-play-ring{width:64px;height:64px}
  .cms-video-play-ring::after{inset:-7px}
  .cms-video-play svg{width:25px;height:25px}
  .cms-video-play small{font-size:8px;letter-spacing:.19em}
}
@media(prefers-reduced-motion:reduce){
  .cms-video-frame:not(.has-started) .cms-video-play-ring,
  .cms-video-frame:not(.has-started) .cms-video-play-ring::after,
  .cms-video-frame:not(.has-started) .cms-video-ambient{animation:none!important}
}


/* =========================================================
   SEMC Website V2.8.5 — stable whole-frame video interaction
   =========================================================
   The whole poster frame responds before first playback. After playback has
   started once, play/pause/seeking only affect the native media UI and never
   rescale, recolor or "bounce" the video frame again. */
.cms-video-frame{
  transform:translate3d(0,0,0) scale(1);
  transform-origin:50% 50%;
  transition:transform .66s cubic-bezier(.22,1,.36,1),box-shadow .66s cubic-bezier(.22,1,.36,1),border-color .5s ease;
}
.cms-video-frame:not(.has-started){will-change:transform}
.cms-video-frame:not(.has-started) .cms-video{
  filter:saturate(.95) brightness(.945)!important;
  transform:scale(1)!important;
  transition:transform .72s cubic-bezier(.22,1,.36,1),filter .58s ease!important;
}
.cms-video-frame:not(.has-started) .cms-video-play-ring,
.cms-video-frame:not(.has-started) .cms-video-play-ring::after,
.cms-video-frame:not(.has-started) .cms-video-ambient{animation:none!important}
@media (hover:hover) and (pointer:fine){
  .cms-video-frame:not(.has-started):hover{
    transform:translate3d(0,-3px,0) scale(1.012);
    box-shadow:0 34px 78px rgba(25,68,101,.205);
  }
  .cms-video-frame:not(.has-started):hover .cms-video{
    filter:saturate(1) brightness(.975)!important;
    transform:scale(1.004)!important;
  }
  .cms-video-frame:not(.has-started):hover .cms-video-ambient{opacity:.70}
  .cms-video-frame:not(.has-started):hover .cms-video-play{transform:translate(-50%,-50%) scale(1.018)}
  .cms-video-frame:not(.has-started):hover .cms-video-play-ring{background:rgba(248,252,255,.23);transform:scale(1.018)}
  .cms-video-frame:not(.has-started):hover .cms-video-play-ring::after{transform:scale(1.025);opacity:.82}
}
.cms-video-frame.has-started,
.cms-video-frame.has-started:hover,
.cms-video-frame.has-started:focus-within{
  transform:translate3d(0,0,0) scale(1)!important;
  animation:none!important;
  will-change:auto;
}
.cms-video-frame.has-started .cms-video,
.cms-video-frame.has-started:hover .cms-video,
.cms-video-frame.has-started:focus-within .cms-video{
  filter:none!important;
  transform:scale(1)!important;
  animation:none!important;
  transition:transform .58s cubic-bezier(.22,1,.36,1),filter .46s ease!important;
}
.cms-video-frame.has-started .cms-video-play,
.cms-video-frame.has-started .cms-video-ambient{
  opacity:0!important;visibility:hidden!important;pointer-events:none!important;animation:none!important;
}
/* Native play/pause and timeline seeking must never change the outer geometry. */
.cms-video-frame.has-started.is-playing,
.cms-video-frame.has-started.is-starting,
.cms-video-frame.has-started:not(.is-playing){
  transform:translate3d(0,0,0) scale(1)!important;
}
.cms-video-frame.has-started.is-playing .cms-video,
.cms-video-frame.has-started:not(.is-playing) .cms-video,
.cms-video-frame.has-started.is-starting .cms-video{
  filter:none!important;transform:scale(1)!important;animation:none!important;
}
@media (prefers-reduced-motion:reduce){
  .cms-video-frame,.cms-video-frame .cms-video,.cms-video-frame .cms-video-play,.cms-video-frame .cms-video-play-ring{transition:none!important}
}

/* =========================================================
   SEMC Website V2.9 — flexible dual-center contact lines
   ========================================================= */
.location-lines{align-content:start}
.location-line strong:empty::after{content:"—";color:#a5b2bb;font-weight:500}
@media(min-width:621px){
  .location-lines[data-count="0"]{display:block;min-height:0;padding-top:0}
}


/* ===== SEMC CMS V3.3.5 · Floating Contacts ===== */
.home-floating-contacts{
  position:fixed;right:18px;top:50%;transform:translateY(-8%);
  z-index:120;display:grid;gap:8px;pointer-events:none
}
.floating-contact-item{position:relative;display:flex;justify-content:flex-end;pointer-events:auto}
.floating-contact-trigger{
  width:54px;height:54px;border:1px solid rgba(255,255,255,.36);border-radius:16px;
  display:grid;place-items:center;background:linear-gradient(145deg,rgba(18,78,173,.96),rgba(19,82,207,.98));
  color:#fff;box-shadow:0 14px 32px rgba(20,66,127,.20);cursor:pointer;transition:.28s var(--ease);
  backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)
}
.floating-contact-trigger:hover,.floating-contact-item.is-open .floating-contact-trigger{
  transform:translateX(-4px);box-shadow:0 18px 42px rgba(20,66,127,.28)
}
.floating-contact-icon{width:23px;height:23px;display:grid;place-items:center}
.floating-contact-icon svg{width:100%;height:100%;fill:currentColor}
.floating-contact-panel{
  position:absolute;right:64px;top:50%;transform:translate(14px,-50%) scale(.96);
  min-width:220px;max-width:320px;padding:13px 15px;border-radius:15px;
  background:rgba(16,36,51,.94);color:#fff;box-shadow:0 18px 46px rgba(0,0,0,.24);
  opacity:0;visibility:hidden;pointer-events:none;transition:.24s var(--ease);
  backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px)
}
.floating-contact-item:hover .floating-contact-panel,.floating-contact-item:focus-within .floating-contact-panel,.floating-contact-item.is-open .floating-contact-panel{
  opacity:1;visibility:visible;transform:translate(0,-50%) scale(1)
}
.floating-contact-panel small,.floating-contact-panel strong{display:block}
.floating-contact-panel small{font-size:10px;color:#9db6c9;letter-spacing:.08em}
.floating-contact-panel strong{margin-top:5px;font-size:14px;line-height:1.4;word-break:break-word}
.floating-contact-panel.wechat-panel{min-width:190px;text-align:center}
.floating-contact-panel.wechat-panel img{
  width:150px;height:150px;object-fit:contain;background:#fff;border-radius:11px;padding:7px;margin:9px auto 5px;display:block
}
.wechat-empty{
  width:150px;height:150px;display:grid;place-items:center;margin:9px auto 5px;
  padding:16px;border-radius:11px;border:1px dashed rgba(255,255,255,.28);color:#a9becc;font-size:10px;line-height:1.5
}
@media(max-width:980px){
  .home-floating-contacts{right:12px;top:auto;bottom:92px;transform:none;gap:6px}
  .floating-contact-trigger{width:48px;height:48px;border-radius:14px}
  .floating-contact-panel{right:58px;max-width:min(270px,calc(100vw - 90px))}
}
@media(max-width:560px){
  .home-floating-contacts{bottom:82px}
  .floating-contact-trigger{width:44px;height:44px;border-radius:13px}
  .floating-contact-icon{width:20px;height:20px}
}

/* ===== SEMC CMS V3.3.5 · Achievement Carousel ===== */
.achievement-showcase{
  position:relative;overflow:hidden;
  background:
    linear-gradient(110deg,rgba(12,26,38,.96),rgba(26,40,50,.90)),
    radial-gradient(circle at 70% 25%,rgba(27,91,188,.20),transparent 42%);
  color:#fff
}
.achievement-showcase::after{
  content:"";position:absolute;inset:auto -12% -38% 26%;height:72%;
  background:radial-gradient(ellipse,rgba(223,49,61,.12),transparent 62%);pointer-events:none
}
.achievement-layout{
  position:relative;z-index:1;display:grid;grid-template-columns:minmax(230px,.34fr) minmax(0,1fr);
  gap:44px;align-items:center
}
.achievement-copy .eyebrow{color:#a9c0d0}
.achievement-copy .eyebrow .num{border-color:rgba(255,255,255,.22);color:#fff}
.achievement-copy .section-title{color:#fff}
.achievement-copy .section-lead{color:#c7d3db;max-width:430px}
.achievement-copy .blue-btn{margin-top:24px;background:#0b55d9;color:#fff}
.achievement-carousel{position:relative;display:grid;grid-template-columns:44px minmax(0,1fr) 44px;align-items:center;gap:12px;min-width:0}
.achievement-viewport{overflow:hidden;min-width:0}
.achievement-track{display:flex;gap:16px;will-change:transform;transition:transform .48s cubic-bezier(.22,.75,.24,1)}
.achievement-card{
  flex:0 0 auto;display:block;color:inherit;text-decoration:none;min-width:0;
  border-radius:16px;overflow:hidden;background:rgba(255,255,255,.08);
  border:1px solid rgba(255,255,255,.12);transition:.28s var(--ease)
}
.achievement-card:hover:where(:not(.semc-touch-feedback)){transform:translateY(-5px);background:rgba(255,255,255,.11)}
.achievement-card-media{aspect-ratio:4/3;overflow:hidden;background:#263846}
.achievement-card-media img{width:100%;height:100%;object-fit:cover;transition:transform .5s var(--ease)}
.achievement-card:hover:where(:not(.semc-touch-feedback)) .achievement-card-media img{transform:scale(1.035)}
.achievement-card-copy{padding:14px 15px 16px}
.achievement-card-copy>span{display:block;color:#91b1c8;font-size:10px;letter-spacing:.10em}
.achievement-card-copy h3{margin:7px 0 0;color:#fff;font-size:17px;line-height:1.35}
.achievement-card-copy p{margin:8px 0 0;color:#b8c7d1;font-size:11px;line-height:1.6}
.achievement-card-copy b{display:flex;align-items:center;gap:7px;margin-top:12px;color:#fff;font-size:10px;font-weight:720}
.achievement-card-copy b i{font-style:normal;color:#e33549}
.achievement-arrow{
  width:42px;height:58px;border:1px solid rgba(255,255,255,.18);border-radius:14px;
  background:rgba(255,255,255,.06);color:#fff;font-size:20px;cursor:pointer;transition:.22s var(--ease)
}
.achievement-arrow:hover:not(:disabled){background:#0b55d9;border-color:#0b55d9}
.achievement-arrow:disabled{opacity:.25;cursor:default}
@media(max-width:1100px){
  .achievement-layout{grid-template-columns:1fr;gap:28px}
  .achievement-copy{max-width:700px}
}
@media(max-width:700px){
  .achievement-carousel{grid-template-columns:36px minmax(0,1fr) 36px;gap:8px}
  .achievement-arrow{width:34px;height:48px;border-radius:12px}
  .achievement-card-copy h3{font-size:16px}
}


/* ===== SEMC CMS V3.3.6 · refined new modules ===== */

/* Floating contacts: use the same light glass / navy / blue-red language
   as the website header instead of solid app-like blue squares. */
.home-floating-contacts{
  right:22px!important;
  gap:9px!important;
}
.floating-contact-trigger{
  width:52px!important;height:52px!important;
  border:1px solid rgba(31,75,108,.14)!important;
  border-radius:17px!important;
  background:rgba(247,251,253,.90)!important;
  color:#245ca6!important;
  box-shadow:0 12px 30px rgba(28,60,83,.13)!important;
  backdrop-filter:blur(18px)!important;
  -webkit-backdrop-filter:blur(18px)!important;
  position:relative!important;
  overflow:hidden!important
}
.floating-contact-trigger::before{
  content:"";position:absolute;left:10px;right:10px;top:0;height:2px;
  background:linear-gradient(90deg,#2b71b3 0 58%,#d9384e 58% 100%);
  border-radius:999px;opacity:.9
}
.floating-contact-trigger:hover,
.floating-contact-item.is-open .floating-contact-trigger{
  color:#174f83!important;
  background:#fff!important;
  border-color:rgba(36,92,166,.24)!important;
  transform:translateX(-4px)!important;
  box-shadow:0 16px 36px rgba(28,60,83,.19)!important
}
.floating-contact-panel{
  min-width:224px!important;
  background:rgba(250,252,253,.96)!important;
  color:#18384f!important;
  border:1px solid rgba(31,75,108,.12)!important;
  box-shadow:0 18px 44px rgba(23,52,73,.17)!important
}
.floating-contact-panel small{color:#718999!important}
.floating-contact-panel strong{color:#18384f!important}
.floating-contact-panel.wechat-panel img{border:1px solid #dce6ec!important}
.wechat-empty{
  border-color:#d2dfe7!important;
  color:#79909f!important;
  background:#f4f8fa!important
}

/* Achievement carousel: light corporate engineering section matching existing
   blue-wash cards rather than a separate dark microsite visual language. */
.achievement-showcase{
  background:
    radial-gradient(circle at 92% 6%,rgba(43,113,179,.12),transparent 34%),
    linear-gradient(180deg,#edf5fa 0%,#f8fbfd 58%,#fff 100%)!important;
  color:#18384f!important
}
.achievement-showcase::after{
  background:radial-gradient(ellipse,rgba(217,56,78,.07),transparent 64%)!important
}
.achievement-copy .eyebrow{color:#607d91!important}
.achievement-copy .eyebrow .num{
  background:#fff!important;color:#2b71b3!important;
  border-color:#d2e2ec!important
}
.achievement-copy .section-title{color:#173f63!important}
.achievement-copy .section-lead{color:#708594!important}
.achievement-copy .blue-btn{
  background:#245ca6!important;
  box-shadow:0 10px 22px rgba(36,92,166,.13)!important
}
.achievement-card{
  background:rgba(255,255,255,.90)!important;
  border-color:#d9e5ec!important;
  color:#173f63!important;
  box-shadow:0 12px 30px rgba(28,60,83,.07)!important
}
.achievement-card:hover:where(:not(.semc-touch-feedback)){
  background:#fff!important;
  border-color:#c3d8e6!important;
  box-shadow:0 18px 38px rgba(28,60,83,.12)!important
}
.achievement-card-copy>span{color:#5e8199!important}
.achievement-card-copy h3{color:#173f63!important}
.achievement-card-copy p{color:#718594!important}
.achievement-card-copy b{color:#315d7e!important}
.achievement-card-copy b i{color:#d9384e!important}
.achievement-arrow{
  background:rgba(255,255,255,.78)!important;
  border-color:#cfdee7!important;
  color:#315d7e!important;
  box-shadow:0 8px 20px rgba(28,60,83,.07)!important
}
.achievement-arrow:hover:not(:disabled){
  background:#245ca6!important;
  color:#fff!important;
  border-color:#245ca6!important
}


/* ===== SEMC CMS V3.3.7 ===== */

/* Native video controls remain fully interactive. */

.cms-video-frame.has-started .cms-video{
  pointer-events:auto!important;
}
.cms-video-frame.has-started .cms-video-play{
  pointer-events:none!important;
}

/* Floating contacts: a full, naturally blended blue-red ring with white center. */
.floating-contact-trigger{
  border:2px solid transparent!important;
  background:
    linear-gradient(#fff,#fff) padding-box,
    conic-gradient(
      from 215deg,
      #2b71b3 0deg,
      #397db8 82deg,
      #7180ae 142deg,
      #b55b7c 198deg,
      #d9384e 236deg,
      #786f9e 292deg,
      #2b71b3 360deg
    ) border-box!important;
  color:#245ca6!important;
  box-shadow:0 12px 30px rgba(28,60,83,.13)!important
}
.floating-contact-trigger::before{
  display:none!important;
  content:none!important
}
.floating-contact-trigger:hover,
.floating-contact-item.is-open .floating-contact-trigger{
  background:
    linear-gradient(#fff,#fff) padding-box,
    conic-gradient(
      from 245deg,
      #245ca6 0deg,
      #4b82b2 86deg,
      #a2678d 170deg,
      #d6293e 228deg,
      #8e6692 290deg,
      #245ca6 360deg
    ) border-box!important;
  color:#174f83!important
}

/* Footer QR area */
.footer-main{
  grid-template-columns:1.35fr .72fr .72fr .88fr minmax(180px,.72fr)!important;
  gap:32px!important
}
.footer-qr-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:14px;
  align-items:start;
  justify-self:end;
  width:min(100%,230px)
}
.footer-qr-item{
  margin:0;
  text-align:center;
  min-width:0
}
.footer-qr-item img,
.footer-qr-placeholder{
  width:100%;
  aspect-ratio:1;
  border-radius:12px;
  background:#fff;
  object-fit:contain;
  padding:7px;
  box-sizing:border-box
}
.footer-qr-placeholder{
  display:grid;
  place-items:center;
  align-content:center;
  gap:4px;
  border:1px dashed rgba(255,255,255,.18);
  background:rgba(255,255,255,.07);
  color:#7f929f
}
.footer-qr-placeholder span{
  color:#b7c4cc;
  font-size:18px;
  font-weight:820;
  letter-spacing:.12em
}
.footer-qr-placeholder small{
  font-size:8px;
  color:#768791
}
.footer-qr-item figcaption{
  margin-top:8px;
  color:#aeb8bf;
  font-size:10px;
  line-height:1.45;
  word-break:break-word
}
@media(max-width:1100px){
  .footer-main{
    grid-template-columns:1.2fr 1fr 1fr!important
  }
  .footer-qr-grid{
    justify-self:start;
    width:min(230px,100%);
  }
}
@media(max-width:900px){
  .footer-main{
    grid-template-columns:1fr 1fr!important
  }
  .footer-qr-grid{
    grid-column:1/-1;
    width:min(260px,100%);
  }
}
@media(max-width:620px){
  .footer-main{
    grid-template-columns:1fr!important
  }
  .footer-qr-grid{
    grid-column:auto;
    width:min(250px,100%);
    justify-self:start;
    gap:12px
  }
  .footer-qr-item figcaption{font-size:10px}
}


/* ===== SEMC CMS V3.3.8 ===== */

/* Achievement carousel: cards read as independent objects, not one long frame. */
.achievement-viewport{
  overflow:hidden!important;
  padding:10px 7px 18px!important;
  margin:-10px -7px -18px!important;
}
.achievement-track{
  gap:18px!important;
  align-items:stretch!important
}
.achievement-card{
  position:relative!important;
  overflow:hidden!important;
  border-radius:18px!important;
  border:1px solid #d7e4ec!important;
  background:#fff!important;
  box-shadow:0 12px 28px rgba(28,60,83,.08)!important;
  transform:none!important;
  transition:border-color .24s ease,box-shadow .24s ease,background .24s ease!important
}
.achievement-card:hover:where(:not(.semc-touch-feedback)){
  transform:none!important;
  border-color:#bcd4e3!important;
  box-shadow:0 18px 40px rgba(28,60,83,.14)!important;
  background:#fff!important
}
.achievement-card-media{
  border-bottom:1px solid #e2ebf0!important
}
.achievement-card:hover:where(:not(.semc-touch-feedback)) .achievement-card-media img{
  transform:scale(1.025)!important
}

/* Mobile footer: keep only the useful information, center QR codes. */
@media(max-width:700px){
  .corp-footer{
    padding:28px 0 calc(20px + env(safe-area-inset-bottom,0px))!important
  }
  .corp-footer .container{
    width:calc(100vw - 34px)!important
  }
  .footer-main{
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:16px!important
  }

  .footer-brand-block{
    grid-column:auto!important;
    padding-bottom:14px!important;
    text-align:left!important
  }
  .footer-brand-block h3{
    font-size:17px!important;
    margin-bottom:6px!important
  }
  .footer-brand-block>p:not(.footer-hotline){
    font-size:10.5px!important;
    line-height:1.55!important
  }
  .footer-hotline{
    font-size:15px!important;
    margin-top:6px!important
  }

  /* The main mobile menu already contains these routes. Hiding them here
     keeps the footer from becoming a second long sitemap. */
  .footer-main>.footer-col:nth-child(2),
  .footer-main>.footer-col:nth-child(3){
    display:none!important
  }

  .footer-main>.footer-col:nth-child(4){
    display:grid!important;
    grid-template-columns:1fr 1fr!important;
    gap:8px!important;
    padding:12px!important;
    border:1px solid rgba(255,255,255,.08)!important;
    border-radius:16px!important;
    background:rgba(255,255,255,.035)!important
  }
  .footer-main>.footer-col:nth-child(4) h3{
    grid-column:1/-1!important;
    font-size:12px!important;
    margin:0 0 2px!important
  }
  .footer-main>.footer-col:nth-child(4) .footer-contact-link{
    min-height:38px!important;
    display:grid!important;
    align-items:center!important;
    padding:7px 8px!important;
    border:1px solid rgba(255,255,255,.06)!important;
    border-radius:11px!important;
    font-size:10px!important;
    line-height:1.35!important;
    text-align:center!important
  }
  .footer-main>.footer-col:nth-child(4) p{
    display:none!important
  }

  .footer-qr-grid{
    grid-column:auto!important;
    width:min(232px,100%)!important;
    justify-self:center!important;
    grid-template-columns:repeat(2,minmax(0,104px))!important;
    justify-content:center!important;
    gap:14px!important;
    padding-top:2px!important
  }
  .footer-qr-item{
    text-align:center!important
  }
  .footer-qr-item img,
  .footer-qr-placeholder{
    width:104px!important;
    height:104px!important;
    margin:0 auto!important
  }
  .footer-qr-item figcaption{
    text-align:center!important;
    font-size:9.5px!important;
    margin-top:7px!important
  }

  .footer-bottom{
    margin-top:16px!important;
    padding-top:14px!important;
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:4px!important;
    text-align:center!important;
    font-size:9px!important;
    line-height:1.45!important
  }
}

/* Explicit clean mobile nav geometry for real site and CMS preview. */
@media(max-width:980px){
  .site-nav,
  .site-nav.scrolled{
    left:12px!important;
    right:12px!important;
    width:auto!important;
    transform:none!important
  }
}
@media(max-width:700px){
  .site-nav,
  .site-nav.scrolled{
    left:10px!important;
    right:10px!important;
    width:auto!important
  }
}


/* ===== SEMC CMS V3.3.9 ===== */

/* Achievement cards: no dark group shadow, no clipped right-most card. */
.achievement-carousel{
  min-width:0!important;
  overflow:visible!important
}
.achievement-viewport{
  width:100%!important;
  min-width:0!important;
  padding:0!important;
  margin:0!important;
  box-sizing:border-box!important;
  overflow:hidden!important;
  box-shadow:none!important;
  filter:none!important
}
.achievement-track{
  gap:18px!important;
  padding:0!important;
  margin:0!important;
  box-shadow:none!important;
  filter:none!important
}
.achievement-card,
.achievement-card:hover:where(:not(.semc-touch-feedback)){
  box-sizing:border-box!important;
  box-shadow:none!important;
  filter:none!important;
  transform:none!important
}


/* ===== SEMC V3.4 · tablet footer refinement ===== */
@media(min-width:701px) and (max-width:980px){
  .corp-footer{
    padding:42px 0 24px!important;
  }
  .corp-footer .container{
    width:min(92vw,900px)!important;
  }
  .footer-main{
    display:grid!important;
    grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;
    gap:26px 34px!important;
    align-items:start!important;
  }
  .footer-brand-block{
    grid-column:1/-1!important;
    display:grid!important;
    grid-template-columns:auto minmax(0,1fr)!important;
    column-gap:24px!important;
    row-gap:5px!important;
    align-items:center!important;
    padding-bottom:18px!important;
    border-bottom:1px solid rgba(255,255,255,.08)!important;
  }
  .footer-brand-block .footer-brand{
    grid-row:1/5!important;
    margin:0!important;
    align-self:center!important;
  }
  .footer-brand-block .footer-brand img{
    width:142px!important;
    height:auto!important;
  }
  .footer-brand-block h3{
    margin:0 0 2px!important;
    font-size:15px!important;
  }
  .footer-brand-block>p:not(.footer-hotline){
    max-width:520px!important;
    font-size:11.5px!important;
    line-height:1.65!important;
  }
  .footer-hotline{
    margin:2px 0 0!important;
    font-size:21px!important;
  }

  .footer-main>.footer-col{
    min-width:0!important;
    padding:16px 18px!important;
    border:1px solid rgba(255,255,255,.07)!important;
    border-radius:16px!important;
    background:rgba(255,255,255,.025)!important;
  }
  .footer-main>.footer-col h3{
    margin:0 0 11px!important;
    font-size:13px!important;
  }
  .footer-main>.footer-col a,
  .footer-main>.footer-col p{
    font-size:11px!important;
    line-height:1.72!important;
  }
  .footer-main>.footer-col:nth-child(2){
    grid-column:1!important;
  }
  .footer-main>.footer-col:nth-child(3){
    grid-column:2!important;
  }
  .footer-main>.footer-col:nth-child(4){
    grid-column:1!important;
  }

  .footer-qr-grid{
    grid-column:2!important;
    align-self:stretch!important;
    justify-self:stretch!important;
    width:100%!important;
    min-height:100%!important;
    grid-template-columns:repeat(2,minmax(0,112px))!important;
    justify-content:center!important;
    align-content:center!important;
    gap:16px!important;
    padding:16px 18px!important;
    border:1px solid rgba(255,255,255,.07)!important;
    border-radius:16px!important;
    background:rgba(255,255,255,.025)!important;
    box-sizing:border-box!important;
  }
  
  

  .footer-bottom{
    margin-top:26px!important;
    padding-top:16px!important;
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:5px!important;
    text-align:center!important;
    font-size:10px!important;
    line-height:1.5!important;
  }
}


/* ===== SEMC V3.4.1 · tablet footer balance ===== */
@media(min-width:701px) and (max-width:980px){
  .corp-footer{
    padding:36px 0 22px!important
  }
  .corp-footer .container{
    width:min(94vw,920px)!important
  }
  .footer-main{
    display:grid!important;
    grid-template-columns:repeat(12,minmax(0,1fr))!important;
    gap:18px!important
  }
  .footer-brand-block{
    grid-column:1/-1!important;
    display:grid!important;
    grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr)!important;
    gap:10px 28px!important;
    align-items:center!important;
    padding:0 0 18px!important
  }
  .footer-brand-block .footer-brand{
    grid-column:1!important;
    grid-row:auto!important;
    margin:0 0 6px!important
  }
  .footer-brand-block .footer-brand img{
    width:132px!important;
    height:auto!important
  }
  .footer-brand-block h3{
    grid-column:1!important;
    font-size:16px!important;
    margin:0!important
  }
  .footer-brand-block>p:not(.footer-hotline){
    grid-column:1!important;
    max-width:520px!important;
    font-size:11px!important;
    line-height:1.6!important
  }
  .footer-hotline{
    grid-column:2!important;
    grid-row:1/4!important;
    align-self:center!important;
    justify-self:end!important;
    margin:0!important;
    font-size:22px!important;
    text-align:right!important
  }

  .footer-main>.footer-col{
    box-sizing:border-box!important;
    min-width:0!important;
    padding:15px 16px!important;
    border:1px solid rgba(255,255,255,.075)!important;
    border-radius:15px!important;
    background:rgba(255,255,255,.028)!important
  }
  .footer-main>.footer-col:nth-child(2){
    grid-column:1/5!important
  }
  .footer-main>.footer-col:nth-child(3){
    grid-column:5/9!important
  }
  .footer-main>.footer-col:nth-child(4){
    grid-column:1/7!important;
    display:grid!important;
    grid-template-columns:1fr 1fr!important;
    column-gap:14px!important
  }
  .footer-main>.footer-col:nth-child(4) h3{
    grid-column:1/-1!important
  }
  .footer-main>.footer-col:nth-child(4) p{
    grid-column:1/-1!important
  }
  .footer-main>.footer-col h3{
    margin:0 0 9px!important;
    font-size:12px!important
  }
  .footer-main>.footer-col a,
  .footer-main>.footer-col p{
    font-size:10.5px!important;
    line-height:1.62!important
  }

  .footer-qr-grid{
    grid-column:7/13!important;
    align-self:stretch!important;
    justify-self:stretch!important;
    width:100%!important;
    min-height:100%!important;
    display:grid!important;
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    gap:14px!important;
    padding:14px!important;
    border:1px solid rgba(255,255,255,.075)!important;
    border-radius:15px!important;
    background:rgba(255,255,255,.028)!important;
    box-sizing:border-box!important
  }
  .footer-qr-item{
    display:grid!important;
    grid-template-rows:auto auto!important;
    justify-items:center!important;
    align-content:center!important;
    padding:8px!important;
    border-radius:12px!important;
    background:rgba(255,255,255,.025)!important
  }
  .footer-qr-item img,
  .footer-qr-placeholder{
    width:min(100%,112px)!important;
    height:auto!important;
    aspect-ratio:1!important;
    margin:0 auto!important
  }
  

  .footer-bottom{
    margin-top:20px!important;
    padding-top:14px!important
  }
}


/* ===== SEMC V3.4.2 · clean tablet footer ===== */
@media(min-width:701px) and (max-width:980px){
  .corp-footer{
    padding:34px 0 22px!important
  }
  .corp-footer .container{
    width:min(92vw,860px)!important
  }
  .footer-main{
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:16px!important
  }

  .footer-brand-block{
    grid-column:auto!important;
    display:block!important;
    padding:0 0 15px!important;
    border-bottom:1px solid rgba(255,255,255,.08)!important;
    text-align:left!important
  }
  .footer-brand-block .footer-brand{
    margin:0 0 10px!important
  }
  .footer-brand-block .footer-brand img{
    width:138px!important;
    height:auto!important
  }
  .footer-brand-block h3{
    margin:0 0 5px!important;
    font-size:16px!important
  }
  .footer-brand-block>p:not(.footer-hotline){
    max-width:620px!important;
    font-size:11px!important;
    line-height:1.6!important
  }
  .footer-hotline{
    margin:7px 0 0!important;
    font-size:19px!important;
    text-align:left!important
  }

  /* Same philosophy as mobile: don't repeat the whole site map in footer. */
  .footer-main>.footer-col:nth-child(2),
  .footer-main>.footer-col:nth-child(3){
    display:none!important
  }

  .footer-main>.footer-col:nth-child(4){
    grid-column:auto!important;
    display:grid!important;
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    gap:9px!important;
    padding:14px!important;
    border:1px solid rgba(255,255,255,.075)!important;
    border-radius:16px!important;
    background:rgba(255,255,255,.03)!important
  }
  .footer-main>.footer-col:nth-child(4) h3{
    grid-column:1/-1!important;
    margin:0 0 2px!important;
    font-size:12.5px!important
  }
  .footer-main>.footer-col:nth-child(4) .footer-contact-link{
    min-height:40px!important;
    display:grid!important;
    place-items:center!important;
    padding:8px 10px!important;
    border:1px solid rgba(255,255,255,.065)!important;
    border-radius:11px!important;
    background:rgba(255,255,255,.018)!important;
    font-size:10.5px!important;
    line-height:1.4!important;
    text-align:center!important
  }
  .footer-main>.footer-col:nth-child(4) p{
    grid-column:1/-1!important;
    margin:2px 0 0!important;
    text-align:center!important;
    font-size:10px!important;
    line-height:1.55!important
  }

  .footer-qr-grid{
    grid-column:auto!important;
    width:min(300px,100%)!important;
    justify-self:center!important;
    display:grid!important;
    grid-template-columns:repeat(2,minmax(0,118px))!important;
    justify-content:center!important;
    gap:18px!important;
    padding:14px 16px!important;
    border:1px solid rgba(255,255,255,.075)!important;
    border-radius:16px!important;
    background:rgba(255,255,255,.03)!important;
    box-sizing:border-box!important
  }
  .footer-qr-item{
    display:grid!important;
    justify-items:center!important;
    align-content:start!important;
    padding:0!important;
    background:transparent!important
  }
  .footer-qr-item img,
  .footer-qr-placeholder{
    width:112px!important;
    height:112px!important;
    margin:0 auto!important
  }
  .footer-qr-item figcaption{
    margin-top:7px!important;
    text-align:center!important;
    font-size:9.5px!important
  }

  .footer-bottom{
    margin-top:18px!important;
    padding-top:13px!important;
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:4px!important;
    text-align:center!important;
    font-size:9.5px!important;
    line-height:1.5!important
  }
}


/* ===== SEMC CMS V3.4.3 · cross-platform video controls ===== */
.cms-video{
  pointer-events:auto!important;
}
.cms-video-frame.has-started .cms-video,
.cms-video-frame.native-controls-active .cms-video,
.cms-video-frame.native-mobile-player .cms-video{
  z-index:6!important;
  pointer-events:auto!important;
}
.cms-video-frame.has-started .cms-video-play,
.cms-video-frame.native-controls-active .cms-video-play{
  display:none!important;
  pointer-events:none!important
}
.cms-video-frame.has-started .cms-video-ambient,
.cms-video-frame.native-controls-active .cms-video-ambient{
  display:none!important
}

/* Mobile browsers already draw their own play button. Hiding our decorative
   one at CSS time prevents the two-button flash before JavaScript runs. */
@media (hover:none), (pointer:coarse){
  .cms-video-play,
  .cms-video-ambient{
    display:none!important;
    visibility:hidden!important;
    pointer-events:none!important
  }
  .cms-video{
    z-index:6!important;
    pointer-events:auto!important
  }
}

/* Chromium/WebKit desktop timeline stays directly interactive. */
.cms-video::-webkit-media-controls,
.cms-video::-webkit-media-controls-panel,
.cms-video::-webkit-media-controls-timeline{
  pointer-events:auto!important
}


/* ===== SEMC CMS V3.4.3 · customizable floating contact icons ===== */
.floating-contact-custom-icon{
  width:100%;
  height:100%;
  display:block;
  object-fit:contain;
  border-radius:4px
}


/* ===== SEMC CMS V3.4.6 · mobile poster retirement ===== */
.cms-video-frame.video-poster-retired .cms-video{
  filter:none!important;
  transform:scale(1)!important;
}


/* ===== SEMC CMS V3.5 · customer service request ===== */
.service-request-section{
  background:linear-gradient(
    180deg,
    #fff 0%,
    #fcfdfe 5%,
    #f7fbfd 10%,
    #eff6fa 18%,
    #eaf3f9 28%,
    #eef6fa 48%,
    #f7fbfd 76%,
    #fff 100%
  )
}
.service-request-layout{
  display:grid;
  grid-template-columns:minmax(250px,.72fr) minmax(0,1.28fr);
  gap:54px;
  align-items:start
}
.service-request-copy{
  position:sticky;
  top:118px
}
.service-request-copy .section-lead{max-width:520px}
.service-request-assurance{
  margin-top:25px;
  padding:15px 17px;
  border:1px solid #d7e4ec;
  border-radius:15px;
  background:rgba(255,255,255,.72);
  display:grid;
  gap:5px;
  box-shadow:0 12px 30px rgba(28,60,83,.055)
}
.service-request-assurance strong{font-size:13px;color:#204c6d}
.service-request-assurance span{font-size:11px;line-height:1.6;color:#778b99}
.service-request-card{
  padding:24px;
  border:1px solid #d8e4eb;
  border-radius:22px;
  background:rgba(255,255,255,.92);
  box-shadow:0 22px 55px rgba(24,58,80,.10)
}
.service-request-form{display:grid;gap:18px}
.service-request-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:14px
}
.service-request-grid label,
.service-request-description,
.service-request-urgency{
  display:grid;
  gap:7px
}
.service-request-grid .wide{grid-column:1/-1}
.service-request-form label>span,
.service-request-issues legend{
  color:#466579;
  font-size:11px;
  font-weight:760
}
.service-request-form label>span em{
  color:#91a1ab;
  font-size:9px;
  font-style:normal;
  font-weight:500
}
.service-request-form input:not([type="checkbox"]):not([type="file"]),
.service-request-form textarea,
.service-request-form select{
  width:100%;
  box-sizing:border-box;
  border:1px solid #cfdee7;
  border-radius:11px;
  background:#fff;
  color:#173f63;
  min-height:43px;
  padding:10px 12px;
  font:inherit;
  outline:none;
  transition:border-color .18s ease,box-shadow .18s ease
}
.service-request-form textarea{resize:vertical;min-height:96px;line-height:1.6}
.service-request-form input:focus,
.service-request-form textarea:focus,
.service-request-form select:focus{
  border-color:#75a7cb;
  box-shadow:0 0 0 3px rgba(43,113,179,.09)
}
.service-request-issues{
  margin:0;
  padding:0;
  border:0
}
.service-request-issues legend{margin-bottom:9px}
.service-request-chips{display:flex;gap:8px;flex-wrap:wrap}
.service-request-chips label{cursor:pointer}
.service-request-chips input{position:absolute;opacity:0;pointer-events:none}
.service-request-chips span{
  display:inline-flex;
  align-items:center;
  min-height:34px;
  padding:7px 11px;
  border:1px solid #d3e1e9;
  border-radius:999px;
  background:#f8fbfc;
  color:#607a8d;
  font-size:10px;
  font-weight:680;
  transition:.18s ease
}
.service-request-chips input:checked+span{
  border-color:#80adcd;
  background:#eaf4fa;
  color:#245b86;
  box-shadow:inset 0 0 0 1px rgba(36,91,134,.04)
}
.service-request-bottom{
  display:grid;
  grid-template-columns:minmax(150px,.45fr) minmax(0,1.55fr);
  gap:14px;
  align-items:start
}
.service-request-upload{
  display:grid;
  gap:6px;
  padding-top:20px
}
.service-request-upload input{display:none}
.service-request-upload-button{
  min-height:43px;
  display:flex;
  align-items:center;
  justify-content:center;
  border:1px dashed #a9c6d9;
  border-radius:11px;
  background:#f5f9fb;
  color:#315f7e!important;
  cursor:pointer;
  transition:.18s ease
}
.service-request-upload:hover .service-request-upload-button{
  background:#edf6fb;
  border-color:#72a7ca
}
.service-request-file-note{font-size:9px;color:#8797a2;line-height:1.45}
.service-request-file-list{display:flex;gap:5px;flex-wrap:wrap}
.service-request-file-list span{
  max-width:100%;
  padding:4px 7px;
  border-radius:7px;
  background:#eef4f7;
  color:#6b8190;
  font-size:8.5px;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap
}
.service-request-honeypot{
  position:absolute!important;
  left:-10000px!important;
  width:1px!important;
  height:1px!important;
  opacity:0!important
}
.service-request-error{
  min-height:16px;
  color:#b52d42;
  font-size:10px;
  line-height:1.5
}
.service-request-actions{
  display:flex;
  align-items:center;
  gap:16px;
  flex-wrap:wrap
}
.service-request-actions .blue-btn{
  border:0;
  cursor:pointer
}
.service-request-actions .blue-btn:disabled{opacity:.55;cursor:wait}
.service-request-actions>small{
  flex:1;
  min-width:220px;
  color:#8a99a3;
  font-size:9px;
  line-height:1.5
}
.service-request-success{
  padding:16px 17px;
  border:1px solid #b9d9c6;
  border-radius:14px;
  background:#f1faf4;
  color:#3d7453;
  display:grid;
  gap:4px
}
.service-request-success.hidden{display:none!important}
.service-request-success strong{font-size:13px}
.service-request-success span{font-size:11px;font-weight:720}
.service-request-success p{margin:2px 0 0;font-size:10px;line-height:1.55}
@media(max-width:980px){
  .service-request-layout{grid-template-columns:1fr;gap:28px}
  .service-request-copy{position:static}
}
@media(max-width:620px){
  .service-request-section{padding-top:54px;padding-bottom:54px}
  .service-request-card{padding:16px;border-radius:18px}
  .service-request-grid{grid-template-columns:1fr;gap:11px}
  .service-request-grid .wide{grid-column:auto}
  .service-request-bottom{grid-template-columns:1fr}
  .service-request-upload{padding-top:0}
  .service-request-chips{gap:6px}
  .service-request-chips span{min-height:32px;padding:6px 9px;font-size:9.5px}
  .service-request-actions{display:grid;grid-template-columns:1fr;gap:9px}
  .service-request-actions .blue-btn{width:100%;justify-content:center}
  .service-request-actions>small{min-width:0;text-align:center}
}


/* ===== SEMC CMS V3.5 · service request CAPTCHA ===== */
.service-request-captcha{
  display:flex;
  align-items:center
}
.service-request-captcha label{
  width:100%;
  display:grid;
  gap:7px
}
.service-request-captcha label>span{
  color:#466579;
  font-size:11px;
  font-weight:760
}
.service-request-captcha label>div{
  display:flex;
  align-items:center;
  gap:10px
}
.service-request-captcha-question{
  min-width:105px;
  min-height:43px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:0 12px;
  border:1px solid #d4e2ea;
  border-radius:11px;
  background:#f5f9fb;
  color:#315f7e;
  font-size:12px;
  letter-spacing:.04em
}
.service-request-captcha input{
  width:100px!important;
  flex:0 0 100px
}
@media(max-width:620px){
  .service-request-captcha label>div{
    align-items:stretch
  }
  .service-request-captcha-question{
    flex:1
  }
  .service-request-captcha input{
    flex:0 0 86px;
    width:86px!important
  }
}


/* ===== SEMC CMS V3.5.2 · service request visual refinements ===== */
.service-request-required-star{
  color:#D83836!important;
  font-style:normal!important;
  font-weight:850!important
}


/* ===== SEMC CMS V3.5.3 · urgency dropdown ===== */
.service-request-select{
  position:relative;
  width:100%;
  z-index:8
}
.service-request-select-trigger{
  width:100%;
  min-height:43px;
  box-sizing:border-box;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:10px 12px;
  border:1px solid #cfdee7;
  border-radius:11px;
  background:#fff;
  color:#173f63;
  font:inherit;
  text-align:left;
  cursor:pointer;
  transition:border-color .18s ease,box-shadow .18s ease,background .18s ease
}
.service-request-select-trigger:hover{
  border-color:#b6cedd;
  background:#fcfdfe
}
.service-request-select.open .service-request-select-trigger{
  border-color:#75a7cb;
  box-shadow:0 0 0 3px rgba(43,113,179,.09)
}
.service-request-select-trigger i{
  width:8px;
  height:8px;
  flex:0 0 auto;
  border-right:1.7px solid #315f7e;
  border-bottom:1.7px solid #315f7e;
  transform:rotate(45deg) translateY(-2px);
  transition:transform .18s ease
}
.service-request-select.open .service-request-select-trigger i{
  transform:rotate(225deg) translate(-1px,-1px)
}
.service-request-select-menu{
  position:absolute;
  left:0;
  right:0;
  top:calc(100% + 7px);
  z-index:40;
  display:none;
  padding:6px;
  border:1px solid #cbdbe5;
  border-radius:12px;
  background:#fff;
  box-shadow:0 15px 38px rgba(24,57,80,.16);
  overflow:hidden
}
.service-request-select.open .service-request-select-menu{
  display:grid
}
.service-request-select-menu button{
  width:100%;
  min-height:38px;
  padding:8px 10px;
  border:0;
  border-radius:8px;
  background:transparent;
  color:#365a73;
  font:inherit;
  text-align:left;
  cursor:pointer
}
.service-request-select-menu button:hover,
.service-request-select-menu button.selected{
  background:#edf5fa;
  color:#245b86
}
.service-request-select-menu button.selected::before{
  content:"✓";
  display:inline-block;
  width:18px;
  color:#2d74ad;
  font-weight:850
}


/* ===== SEMC CMS V3.5.7 · hero image edge sealing ===== */
/* Cover a few physical pixels past the hero box so browser sub-pixel rounding
   cannot expose the hero background between the image and the next module. */
body[data-page-id="home"] .hero{
  border-bottom:0!important
}
body[data-page-id="home"] .hero-media{
  left:-2px!important;
  right:-2px!important;
  top:-2px!important;
  bottom:-3px!important
}
body[data-page-id="home"] .hero-picture{
  position:absolute!important;
  inset:0!important;
  display:block!important;
  overflow:hidden!important;
  line-height:0!important
}
body[data-page-id="home"] .hero-picture img,
body[data-page-id="home"] .hero-media img{
  display:block!important;
  width:100%!important;
  height:100%!important;
  max-width:none!important;
  vertical-align:top!important
}


/* ===== SEMC CMS V3.5.8 · definitive home hero bottom-edge fix ===== */
/*
   The hero media now has the same responsive photo as a CSS background under
   the <picture>. Browser viewport/sub-pixel rounding can therefore never expose
   the old dark hero fallback between the photo and the following module.
*/
body[data-page-id="home"] .hero{
  background:#fff!important;
  border-bottom:0!important;
}
body[data-page-id="home"] .hero-media{
  inset:-2px -2px -12px -2px!important;
  background-color:#fff!important;
  background-image:var(--semc-hero-desktop)!important;
  background-repeat:no-repeat!important;
  background-size:cover!important;
  background-position:63% center!important;
}
body[data-page-id="home"] .hero-picture{
  position:absolute!important;
  inset:0!important;
  display:block!important;
  width:100%!important;
  height:100%!important;
  line-height:0!important;
  overflow:hidden!important;
}
body[data-page-id="home"] .hero-picture>img,
body[data-page-id="home"] .hero-media>picture>img{
  position:absolute!important;
  left:-2px!important;
  top:-2px!important;
  width:calc(100% + 4px)!important;
  height:calc(100% + 16px)!important;
  min-height:calc(100% + 16px)!important;
  display:block!important;
  object-fit:cover!important;
  object-position:63% center!important;
  vertical-align:top!important;
}
/* Do not allow the dark readability overlay to create a solid separator at
   the exact physical bottom edge. It fades out over the final few pixels. */
body[data-page-id="home"] .hero::after{
  background:
    linear-gradient(
      180deg,
      rgba(5,19,30,0) 46%,
      rgba(5,19,30,.08) 64%,
      rgba(5,19,30,.46) 94%,
      rgba(5,19,30,.18) 98%,
      rgba(5,19,30,0) 100%
    ),
    linear-gradient(
      90deg,
      rgba(7,28,43,.42) 0%,
      rgba(7,28,43,.20) 30%,
      rgba(7,28,43,0) 60%
    )!important;
}
@media(max-width:760px) and (orientation:portrait){
  body[data-page-id="home"] .hero-media{
    background-image:var(--semc-hero-mobile,var(--semc-hero-desktop))!important;
  }
  body[data-page-id="home"] .hero-picture>img,
  body[data-page-id="home"] .hero-media>picture>img{
    object-position:66% center!important;
  }
}


/* ===== SEMC CMS V3.5.9 · actual hero image covers the bottom edge ===== */
/*
   V3.5.8 added a CSS background copy of the hero image as an underlay.
   If a browser exposed a few pixels below the <img>, that underlay could show
   a slightly different crop and look like a grey/white strip.
   V3.5.9 removes the underlay at the edge and fixes the older height conflict:
   the real <picture>/<img> itself extends beyond the clipped hero boundary.
*/
body[data-page-id="home"] .hero{
  position:relative!important;
  overflow:hidden!important;
  border:0!important;
  outline:0!important;
  background:#fff!important;
}
body[data-page-id="home"] .hero-media{
  position:absolute!important;
  top:-6px!important;
  right:-4px!important;
  bottom:-24px!important;
  left:-4px!important;
  width:auto!important;
  height:auto!important;
  min-height:0!important;
  max-height:none!important;
  background:none!important;
  background-image:none!important;
  background-color:transparent!important;
  overflow:hidden!important;
}
body[data-page-id="home"] .hero-picture{
  position:absolute!important;
  top:0!important;
  right:0!important;
  bottom:0!important;
  left:0!important;
  width:auto!important;
  height:auto!important;
  display:block!important;
  line-height:0!important;
  overflow:hidden!important;
}
body[data-page-id="home"] .hero-picture>img,
body[data-page-id="home"] .hero-media>picture>img{
  position:absolute!important;
  top:0!important;
  right:0!important;
  bottom:0!important;
  left:0!important;
  width:100%!important;
  height:100%!important;
  min-height:100%!important;
  max-width:none!important;
  display:block!important;
  object-fit:cover!important;
  vertical-align:top!important;
}
/* Extend the readability overlay beyond the clipped edge as well, so no
   compositor seam can appear between the media and overlay layers. */
body[data-page-id="home"] .hero::after{
  top:-1px!important;
  right:-1px!important;
  bottom:-3px!important;
  left:-1px!important;
}
body[data-page-id="home"] .hero + .stat-strip{
  border-top:0!important;
  margin-top:0!important;
}


/* Module-aware internal links always offset the current CMS module position. */
body[data-page-id="contact"] [data-module="contactLocations"]{
  scroll-margin-top:104px!important;
}


/* ===== SEMC CMS V3.6 · timeline / equipment / certificates / honors ===== */
.v36-timeline-section{overflow:hidden}
.v36-timeline-grid{
  --v36-cols:6;
  margin-top:52px;
  display:grid;
  grid-template-columns:repeat(var(--v36-count,6),minmax(0,1fr));
  row-gap:48px
}
.v36-timeline-grid[data-count="1"]{--v36-count:1}
.v36-timeline-grid[data-count="2"]{--v36-count:2}
.v36-timeline-grid[data-count="3"]{--v36-count:3}
.v36-timeline-grid[data-count="4"]{--v36-count:4}
.v36-timeline-grid[data-count="5"]{--v36-count:5}
.v36-timeline-grid[data-count="6"],
.v36-timeline-grid[data-count="7"],
.v36-timeline-grid[data-count="8"],
.v36-timeline-grid[data-count="9"],
.v36-timeline-grid[data-count="10"],
.v36-timeline-grid[data-count="11"],
.v36-timeline-grid[data-count="12"]{--v36-count:6}
.v36-timeline-item{
  position:relative;
  display:grid;
  grid-template-rows:auto 30px minmax(72px,auto);
  text-align:center;
  min-width:0
}
.v36-timeline-year{
  padding:0 12px 12px;
  color:#17466f;
  font-size:20px;
  font-weight:790;
  letter-spacing:-.02em
}
.v36-timeline-point{position:relative;display:grid;place-items:center}
.v36-timeline-point:before,
.v36-timeline-point:after{
  content:"";
  position:absolute;
  top:50%;
  height:1px;
  background:linear-gradient(90deg,#8db7d5,#4b86b7)
}
.v36-timeline-point:before{left:0;right:50%}
.v36-timeline-point:after{left:50%;right:0}
.v36-timeline-item:nth-child(6n+1) .v36-timeline-point:before{display:none}
.v36-timeline-item:nth-child(6n) .v36-timeline-point:after{display:none}
.v36-timeline-item:last-child .v36-timeline-point:after{display:none}
.v36-timeline-point i{
  position:relative;
  z-index:2;
  width:16px;height:16px;border-radius:50%;
  background:#fff;
  border:4px solid #3f82b9;
  box-shadow:0 0 0 7px rgba(63,130,185,.10)
}
.v36-timeline-text{
  padding:13px 16px 0;
  color:#6c8191;
  font-size:13px;
  line-height:1.75
}

.v36-equipment-main{
  margin-top:42px;
  display:grid;
  grid-template-columns:minmax(0,1.45fr) minmax(310px,.75fr);
  gap:28px;
  align-items:stretch
}
.v36-equipment-carousel{
  position:relative;
  min-width:0;
  border-radius:28px;
  overflow:hidden;
  background:#dfeaf2;
  box-shadow:0 22px 56px rgba(27,61,86,.13)
}
.v36-equipment-viewport{overflow:hidden;height:100%;min-height:520px}
.v36-equipment-track{
  height:100%;
  display:flex;
  transition:transform .7s var(--ease)
}
.v36-equipment-slide{flex:0 0 100%;height:100%;margin:0}
.v36-equipment-slide img{width:100%;height:100%;object-fit:cover}
.v36-carousel-arrow{
  position:absolute;z-index:4;
  width:44px;height:44px;border:1px solid rgba(255,255,255,.8);border-radius:14px;
  background:rgba(255,255,255,.88);backdrop-filter:blur(12px);
  color:#245b86;font-weight:800;cursor:pointer;
  box-shadow:0 10px 28px rgba(20,55,78,.12)
}
.v36-equipment-carousel>.v36-carousel-arrow{top:50%;transform:translateY(-50%)}
.v36-equipment-carousel>.v36-carousel-arrow.prev{left:16px}
.v36-equipment-carousel>.v36-carousel-arrow.next{right:16px}
.v36-carousel-arrow:disabled{opacity:.25;cursor:default}
.v36-equipment-carousel.single .v36-carousel-arrow,
.v36-equipment-carousel.single .v36-carousel-dots{display:none}
.v36-carousel-dots{
  position:absolute;z-index:4;left:50%;bottom:16px;transform:translateX(-50%);
  display:flex;gap:7px;padding:7px 9px;border-radius:999px;
  background:rgba(12,37,54,.35);backdrop-filter:blur(10px)
}
.v36-carousel-dots button{
  width:7px;height:7px;padding:0;border:0;border-radius:50%;
  background:rgba(255,255,255,.48);cursor:pointer
}
.v36-carousel-dots button.active{background:#fff;transform:scale(1.28)}
.v36-equipment-params{
  align-content:start;
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:12px
}
.v36-equipment-param{
  min-height:116px;
  padding:18px;
  border:1px solid rgba(35,84,119,.11);
  border-radius:20px;
  background:linear-gradient(145deg,#fff,#f5f9fb);
  box-shadow:0 14px 34px rgba(27,61,86,.065);
  display:flex;flex-direction:column;justify-content:space-between;gap:16px
}
.v36-equipment-param span{font-size:10px;color:#7790a2;font-weight:720}
.v36-equipment-param strong{font-size:17px;line-height:1.35;color:#17466f}
.v36-equipment-params[data-count="1"]{grid-template-columns:1fr}
.v36-equipment-params[data-count="2"],
.v36-equipment-params[data-count="3"]{grid-template-columns:1fr}
.v36-equipment-params[data-count="4"],
.v36-equipment-params[data-count="5"],
.v36-equipment-params[data-count="6"]{grid-template-columns:repeat(2,minmax(0,1fr))}

.v36-certificate-carousel{
  position:relative;
  margin-top:42px;
  padding:0 58px
}
.v36-certificate-viewport{overflow:hidden;padding:10px 3px 22px}
.v36-certificate-track{
  display:flex;gap:20px;
  transition:transform .65s var(--ease);
  align-items:stretch
}
.v36-certificate-card{
  flex:0 0 auto;
  min-width:0;
  padding:16px;
  border:1px solid rgba(35,84,119,.10);
  border-radius:24px;
  background:linear-gradient(145deg,#fff,#f7fafc);
  box-shadow:0 18px 44px rgba(25,58,80,.085);
  display:flex;flex-direction:column
}
.v36-certificate-paper{
  width:100%;
  border-radius:13px;
  overflow:hidden;
  background:#eef3f6;
  box-shadow:inset 0 0 0 1px rgba(30,73,104,.08)
}
.v36-certificate-card.portrait .v36-certificate-paper{aspect-ratio:210/297}
.v36-certificate-card.landscape .v36-certificate-paper{aspect-ratio:297/210}
.v36-certificate-paper img{width:100%;height:100%;object-fit:contain;background:#fff}
.v36-certificate-copy{padding:15px 3px 2px}
.v36-certificate-copy h3{margin:0 0 7px;color:#173f63;font-size:16px;line-height:1.35}
.v36-certificate-copy p{margin:0;color:#758999;font-size:11.5px;line-height:1.65}
.v36-certificate-carousel>.v36-carousel-arrow{top:44%}
.v36-certificate-carousel>.v36-carousel-arrow.prev{left:0}
.v36-certificate-carousel>.v36-carousel-arrow.next{right:0}
.v36-certificate-carousel.single>.v36-carousel-arrow{display:none}

.v36-honor-a4-section{
  background:
    radial-gradient(circle at 10% 18%,rgba(67,133,183,.10),transparent 28rem),
    linear-gradient(180deg,#f7fafc,#fff)
}
.v36-honor-split{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  gap:46px;
  align-items:center
}
.v36-honor-paper{
  width:min(100%,520px);
  justify-self:center;
  overflow:hidden;
  border-radius:18px;
  background:#fff;
  box-shadow:0 26px 64px rgba(25,57,80,.14),0 0 0 1px rgba(31,75,108,.08)
}
.v36-honor-paper.portrait{aspect-ratio:210/297}
.v36-honor-paper.landscape{aspect-ratio:297/210;width:min(100%,620px)}
.v36-honor-paper img{width:100%;height:100%;object-fit:contain;background:#fff}
.v36-honor-copy{
  min-height:430px;
  padding:48px;
  border:1px solid rgba(35,84,119,.10);
  border-radius:30px;
  background:rgba(255,255,255,.88);
  box-shadow:0 22px 56px rgba(27,61,86,.08);
  display:flex;flex-direction:column;justify-content:center
}
.v36-honor-copy .section-lead{max-width:none}
@media(max-width:1100px){
  .v36-equipment-main{grid-template-columns:1fr}
  .v36-equipment-viewport{min-height:440px}
  .v36-equipment-params{grid-template-columns:repeat(3,minmax(0,1fr))}
  .v36-honor-split{gap:28px}
  .v36-honor-copy{padding:34px;min-height:360px}
}
@media(max-width:760px){
  .v36-timeline-grid{
    margin-top:38px;
    display:grid;
    grid-template-columns:1fr;
    gap:0
  }
  .v36-timeline-item{
    grid-template-columns:82px 34px minmax(0,1fr);
    grid-template-rows:auto;
    min-height:112px;
    text-align:left
  }
  .v36-timeline-year{padding:5px 10px 0 0;text-align:right;font-size:17px}
  .v36-timeline-point{height:100%}
  .v36-timeline-point:before,
  .v36-timeline-point:after{
    left:50%;right:auto;top:0;bottom:50%;width:1px;height:auto;
    background:linear-gradient(180deg,#8db7d5,#4b86b7)
  }
  .v36-timeline-point:after{top:50%;bottom:0}
  .v36-timeline-item:first-child .v36-timeline-point:before{display:none}
  .v36-timeline-item:last-child .v36-timeline-point:after{display:none}
  .v36-timeline-point i{width:15px;height:15px}
  .v36-timeline-text{padding:3px 0 22px 12px;font-size:12.5px}
  .v36-equipment-main{margin-top:30px;gap:18px}
  .v36-equipment-viewport{min-height:300px}
  .v36-equipment-params{grid-template-columns:repeat(2,minmax(0,1fr))}
  .v36-equipment-param{min-height:100px;padding:15px;border-radius:16px}
  .v36-certificate-carousel{padding:0 42px;margin-top:30px}
  .v36-certificate-card{padding:12px;border-radius:19px}
  .v36-honor-split{grid-template-columns:1fr;gap:22px}
  .v36-honor-paper{width:min(92%,460px)}
  .v36-honor-paper.landscape{width:100%}
  .v36-honor-copy{min-height:auto;padding:28px;border-radius:24px}
}
@media(max-width:480px){
  .v36-equipment-params{grid-template-columns:1fr}
  .v36-equipment-viewport{min-height:250px}
  .v36-carousel-arrow{width:40px;height:40px}
  .v36-certificate-carousel{padding:0 34px}
  .v36-honor-paper{width:min(94%,390px)}
}


.v36-equipment-carousel[data-count="1"]>.v36-carousel-arrow,
.v36-equipment-carousel[data-count="1"]>.v36-carousel-dots{
  display:none!important
}


/* ===== SEMC CMS V3.6.1 · module density / typography / mobile order ===== */
/* Equipment parameter hierarchy: parameter name is the title. */
.v36-equipment-param span{
  color:#315f7e!important;
  font-size:15px!important;
  line-height:1.35!important;
  font-weight:800!important
}
.v36-equipment-param strong{
  color:#718696!important;
  font-size:13px!important;
  line-height:1.55!important;
  font-weight:620!important
}
.v36-equipment-param{
  min-height:92px!important;
  padding:15px 16px!important;
  gap:10px!important
}

/* New sections should not routinely exceed a viewport with ordinary content. */
.v36-timeline-section,
.v36-equipment-spotlight,
.v36-certificate-section,
.v36-honor-a4-section{
  padding-top:82px!important;
  padding-bottom:82px!important
}
.v36-equipment-main{margin-top:32px!important;gap:22px!important}
.v36-equipment-viewport{min-height:390px!important}
.v36-certificate-carousel{
  width:min(100%,1120px)!important;
  margin:32px auto 0!important;
  padding:0 50px!important
}
.v36-certificate-card{
  padding:11px!important;
  border-radius:20px!important;
  box-shadow:none!important
}
.v36-certificate-viewport{padding-top:4px!important;padding-bottom:8px!important}
.v36-certificate-copy{padding:11px 3px 0!important}
.v36-certificate-copy h3{font-size:15px!important;margin-bottom:5px!important}
.v36-certificate-copy p{font-size:10.5px!important;line-height:1.55!important}

/* No dark drop shadows on carousel templates. */
.v36-equipment-carousel,
.v36-certificate-carousel,
.v36-certificate-card,
.achievement-carousel,
.achievement-card,
.achievement-viewport{
  box-shadow:none!important
}

/* Multi-A4 honor layout. */
.v36-honor-split{gap:34px!important}
.v36-honor-papers{
  min-width:0;
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:14px;
  align-items:center;
  justify-items:center
}
.v36-honor-papers[data-count="1"]{grid-template-columns:1fr}
.v36-honor-paper{
  width:min(100%,410px)!important;
  border-radius:15px!important;
  box-shadow:none!important
}
.v36-honor-papers[data-count="1"] .v36-honor-paper{width:min(100%,420px)!important}
.v36-honor-paper.landscape{width:min(100%,500px)!important}
.v36-honor-copy{
  min-height:300px!important;
  padding:34px!important;
  border-radius:26px!important
}

/* Timeline enters as one unit rather than a series of disconnected upward moves. */
.v36-timeline-grid.reveal{transition-duration:.72s!important}
.v36-timeline-text{
  line-height:1.8!important;
  overflow-wrap:anywhere
}

@media(max-width:1100px){
  .v36-timeline-section,
  .v36-equipment-spotlight,
  .v36-certificate-section,
  .v36-honor-a4-section{padding-top:70px!important;padding-bottom:70px!important}
  .v36-equipment-viewport{min-height:330px!important}
  .v36-equipment-params{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .v36-certificate-carousel{width:min(100%,920px)!important;padding:0 46px!important}
  .v36-honor-copy{min-height:260px!important;padding:28px!important}
}

@media(max-width:700px){
  /* Every split-style module presents copy first and media second on phones. */
  .split{display:grid!important;grid-template-columns:1fr!important}
  .split>.media-card{order:2!important}
  .split>div:not(.media-card){order:1!important}
  .split>.media-card{aspect-ratio:16/10!important}

  .v36-timeline-section,
  .v36-equipment-spotlight,
  .v36-certificate-section,
  .v36-honor-a4-section{padding-top:54px!important;padding-bottom:54px!important}

  /* Mobile timeline: reset desktop row-break rules so the vertical line is continuous. */
  .v36-timeline-grid{margin-top:30px!important}
  .v36-timeline-item{
    grid-template-columns:72px 32px minmax(0,1fr)!important;
    min-height:0!important;
    align-items:stretch!important
  }
  .v36-timeline-item .v36-timeline-point:before,
  .v36-timeline-item .v36-timeline-point:after{display:block!important}
  .v36-timeline-item:first-child .v36-timeline-point:before{display:none!important}
  .v36-timeline-item:last-child .v36-timeline-point:after{display:none!important}
  .v36-timeline-year{font-size:16px!important;padding-top:4px!important}
  .v36-timeline-text{padding:1px 0 30px 10px!important;font-size:12.5px!important;line-height:1.8!important}

  .v36-equipment-main{margin-top:24px!important;gap:15px!important}
  .v36-equipment-viewport{min-height:230px!important}
  .v36-equipment-params{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:9px!important}
  .v36-equipment-param{min-height:84px!important;padding:13px!important}
  .v36-equipment-param span{font-size:14px!important}
  .v36-equipment-param strong{font-size:12px!important}

  .v36-certificate-carousel{width:100%!important;margin-top:24px!important;padding:0 36px!important}
  .v36-certificate-card{padding:9px!important;border-radius:17px!important}

  /* Honor copy is always above certificates on mobile, regardless of desktop side. */
  .v36-honor-split{grid-template-columns:1fr!important;gap:18px!important}
  .v36-honor-copy{order:1!important;min-height:0!important;padding:24px!important;border-radius:22px!important}
  .v36-honor-papers{order:2!important;grid-template-columns:1fr!important;gap:14px!important}
  .v36-honor-paper,
  .v36-honor-papers[data-count="1"] .v36-honor-paper{width:min(88vw,330px)!important}
  .v36-honor-paper.landscape{width:min(92vw,390px)!important}
}
@media(max-width:480px){
  .v36-equipment-viewport{min-height:205px!important}
  
  .v36-certificate-carousel{padding:0 30px!important}
  .v36-honor-paper,
  .v36-honor-papers[data-count="1"] .v36-honor-paper{width:min(86vw,300px)!important}
}


/* ===== SEMC CMS V3.6.2 · section blending / compact equipment / refined certificates & honors ===== */

/* Smooth the boundary between adjacent CMS sections. The transition layer
   extends into the preceding section and fades toward the current section. */
.page > .section{
  position:relative
}
.page > .section:not(:first-child)::before{
  content:"";
  position:absolute;
  z-index:0;
  left:0;
  right:0;
  top:-30px;
  height:31px;
  pointer-events:none;
  background:linear-gradient(180deg,rgba(255,255,255,0),rgba(255,255,255,.98))
}
.page > .section.blue-wash::before{
  background:linear-gradient(180deg,rgba(232,242,249,0),rgba(232,242,249,.96))
}
.page > .section.deep-blue::before{
  background:linear-gradient(180deg,rgba(29,80,126,0),rgba(29,80,126,.96))
}
.page > .service-request-section::before{
  background:linear-gradient(180deg,rgba(247,251,253,0),rgba(247,251,253,.98))
}
.page > .v36-honor-a4-section::before{
  background:linear-gradient(180deg,rgba(247,250,252,0),rgba(247,250,252,.98))
}


/* Equipment spotlight: smaller image, larger parameter share, and count-aware grid. */
.v36-equipment-main{
  grid-template-columns:minmax(0,1.16fr) minmax(390px,.84fr)!important;
  gap:18px!important;
  align-items:stretch!important
}
.v36-equipment-carousel{
  border-radius:24px!important
}
.v36-equipment-viewport{
  min-height:0!important;
  height:330px!important
}
.v36-equipment-params{
  min-height:330px!important;
  height:330px!important;
  align-content:stretch!important;
  grid-auto-flow:row!important;
  gap:10px!important
}
.v36-equipment-params[data-count="1"]{
  grid-template-columns:1fr!important;
  grid-template-rows:minmax(120px,1fr)!important
}
.v36-equipment-params[data-count="2"]{
  grid-template-columns:1fr!important;
  grid-template-rows:repeat(2,minmax(0,1fr))!important
}
.v36-equipment-params[data-count="3"]{
  grid-template-columns:1fr!important;
  grid-template-rows:repeat(3,minmax(0,1fr))!important
}
.v36-equipment-params[data-count="4"]{
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  grid-template-rows:repeat(2,minmax(0,1fr))!important
}
.v36-equipment-params[data-count="5"],
.v36-equipment-params[data-count="6"]{
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  grid-template-rows:repeat(3,minmax(0,1fr))!important
}
.v36-equipment-params[data-count="7"],
.v36-equipment-params[data-count="8"]{
  height:auto!important;
  min-height:330px!important;
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  grid-auto-rows:minmax(94px,auto)!important
}
.v36-equipment-param{
  min-height:0!important;
  height:100%!important;
  padding:15px 17px!important;
  gap:9px!important;
  justify-content:center!important;
  box-shadow:none!important
}
.v36-equipment-param h3{
  margin:0!important;
  color:#2d6287!important;
  font-size:16px!important;
  line-height:1.35!important;
  font-weight:800!important;
  letter-spacing:-.01em!important
}
.v36-equipment-param p{
  margin:0!important;
  color:#6e8392!important;
  font-size:12.5px!important;
  line-height:1.7!important;
  font-weight:520!important;
  overflow-wrap:anywhere!important
}

/* Certificate captions are centered; if the optional explanation is removed,
   the title occupies and centers itself in the copy area. */
.v36-certificate-copy{
  min-height:58px!important;
  padding:12px 6px 3px!important;
  text-align:center!important;
  display:flex!important;
  flex-direction:column!important;
  align-items:center!important;
  justify-content:flex-start!important
}
.v36-certificate-copy h3{
  width:100%!important;
  margin:0 0 6px!important;
  text-align:center!important
}
.v36-certificate-copy p{
  width:100%!important;
  margin:0!important;
  text-align:center!important
}
.v36-certificate-card.no-description .v36-certificate-copy{
  min-height:58px!important;
  justify-content:center!important
}
.v36-certificate-card.no-description .v36-certificate-copy h3{
  margin:0!important
}

/* More deliberate honor composition: editorial copy + document gallery. */
.v36-honor-a4-section{
  background:
    linear-gradient(180deg,rgba(255,255,255,.96) 0%,rgba(245,249,252,.98) 18%,#f7fafc 100%)!important
}
.v36-honor-split{
  gap:28px!important;
  align-items:stretch!important
}
.v362-honor-gallery{
  padding:22px!important;
  border:1px solid rgba(33,79,113,.11)!important;
  border-radius:28px!important;
  background:
    radial-gradient(circle at 88% 8%,rgba(76,143,194,.13),transparent 18rem),
    linear-gradient(145deg,#edf5fa,#f9fbfc)!important;
  box-shadow:0 18px 44px rgba(29,67,94,.07)!important
}
.v362-honor-gallery-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  padding:0 2px 16px;
  border-bottom:1px solid rgba(38,82,113,.10)
}
.v362-honor-gallery-head span{
  color:#416f90;
  font-size:10px;
  font-weight:780;
  letter-spacing:.18em
}
.v362-honor-gallery-head b{
  min-width:34px;
  height:28px;
  display:grid;
  place-items:center;
  border-radius:999px;
  background:#fff;
  color:#2e6b97;
  font-size:10px;
  box-shadow:0 7px 18px rgba(30,70,100,.08)
}
.v362-honor-paper-grid{
  margin-top:18px;
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:14px
}
.v362-honor-gallery[data-count="1"] .v362-honor-paper-grid{
  grid-template-columns:1fr
}
.v36-honor-paper-item{
  margin:0;
  min-width:0;
  display:grid;
  gap:8px;
  justify-items:center
}
.v36-honor-paper-item .v36-honor-paper{
  width:min(100%,245px)!important;
  border:8px solid #fff!important;
  border-radius:12px!important;
  background:#fff!important;
  box-shadow:0 14px 30px rgba(23,56,79,.10)!important
}
.v36-honor-paper-item.landscape .v36-honor-paper{
  width:min(100%,300px)!important
}
.v36-honor-paper-item figcaption{
  width:100%;
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:0 4px;
  color:#8092a0;
  font-size:8px;
  letter-spacing:.13em
}
.v36-honor-paper-item figcaption b{
  color:#356b91;
  font-size:9px
}
.v362-honor-copy{
  min-height:0!important;
  padding:36px 38px!important;
  border-radius:28px!important;
  border:1px solid rgba(34,78,111,.10)!important;
  background:
    linear-gradient(160deg,rgba(255,255,255,.98),rgba(246,250,252,.96))!important;
  box-shadow:0 18px 44px rgba(29,67,94,.06)!important;
  justify-content:center!important
}
.v362-honor-copy-mark{
  display:flex;
  align-items:center;
  gap:9px;
  margin-bottom:20px;
  color:#7690a2;
  font-size:9px;
  font-weight:760;
  letter-spacing:.14em
}
.v362-honor-copy-mark i{
  width:34px;
  height:3px;
  border-radius:999px;
  background:linear-gradient(90deg,#2e74ae 0 68%,#d83836 68% 100%)
}
.v362-honor-copy .section-title{
  margin-top:18px!important;
  font-size:clamp(32px,3.3vw,52px)!important
}
.v362-honor-rule{
  width:72px;
  height:1px;
  margin:4px 0 20px;
  background:linear-gradient(90deg,#3e7faf,#d5e5ef)
}
.v362-honor-copy .section-lead{
  font-size:clamp(15px,1.25vw,18px)!important;
  line-height:1.8!important
}

@media(max-width:1100px){
  .v36-equipment-main{
    grid-template-columns:minmax(0,1fr) minmax(330px,.9fr)!important
  }
  .v36-equipment-viewport,
  .v36-equipment-params{
    height:300px!important;
    min-height:300px!important
  }
  .v362-honor-copy{padding:30px!important}
}

@media(max-width:760px){
  .page > .section:not(:first-child)::before{
    top:-20px;
    height:21px
  }
  .v36-equipment-main{
    grid-template-columns:1fr!important;
    gap:13px!important
  }
  .v36-equipment-viewport{
    height:215px!important;
    min-height:215px!important
  }
  .v36-equipment-params{
    width:100%!important;
    height:auto!important;
    min-height:0!important;
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    grid-template-rows:none!important;
    grid-auto-rows:minmax(88px,auto)!important
  }
  
  .v36-equipment-params[data-count="2"],
  .v36-equipment-params[data-count="3"],
  .v36-equipment-params[data-count="4"],
  .v36-equipment-params[data-count="5"],
  .v36-equipment-params[data-count="6"]{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    grid-template-rows:none!important
  }
  .v36-equipment-param{
    min-height:88px!important;
    padding:13px 14px!important
  }
  .v36-equipment-param h3{font-size:14.5px!important}
  .v36-equipment-param p{font-size:11.5px!important;line-height:1.65!important}

  .v36-certificate-copy{min-height:54px!important;padding-top:10px!important}
  .v36-certificate-card.no-description .v36-certificate-copy{min-height:54px!important}

  .v362-honor-gallery{
    order:2!important;
    padding:18px!important;
    border-radius:23px!important
  }
  .v362-honor-copy{
    order:1!important;
    padding:26px!important;
    border-radius:23px!important
  }
  .v362-honor-paper-grid{gap:11px}
  .v36-honor-paper-item .v36-honor-paper{width:min(100%,230px)!important}
  .v36-honor-paper-item.landscape .v36-honor-paper{width:min(100%,290px)!important}
  .v362-honor-copy .section-title{font-size:clamp(30px,9vw,42px)!important}
}
@media(max-width:480px){
  .v36-equipment-params{grid-template-columns:1fr!important}
  .v36-equipment-params[data-count="2"],
  .v36-equipment-params[data-count="3"],
  .v36-equipment-params[data-count="4"],
  .v36-equipment-params[data-count="5"],
  .v36-equipment-params[data-count="6"]{
    grid-template-columns:1fr!important
  }
  .v362-honor-paper-grid{grid-template-columns:1fr!important}
  .v36-honor-paper-item .v36-honor-paper{width:min(82vw,260px)!important}
  .v36-honor-paper-item.landscape .v36-honor-paper{width:min(90vw,330px)!important}
}


/* V3.6.2 final layout safeguards */
.v362-honor-gallery{
  display:block!important;
  grid-template-columns:none!important
}
.v36-equipment-params{
  height:auto!important;
  min-height:330px!important
}
.v36-equipment-params[data-count="1"],
.v36-equipment-params[data-count="2"],
.v36-equipment-params[data-count="3"],
.v36-equipment-params[data-count="4"],
.v36-equipment-params[data-count="5"],
.v36-equipment-params[data-count="6"]{
  height:330px!important
}
@media(max-width:1100px){
  .v36-equipment-params[data-count="1"],
  .v36-equipment-params[data-count="2"],
  .v36-equipment-params[data-count="3"],
  .v36-equipment-params[data-count="4"],
  .v36-equipment-params[data-count="5"],
  .v36-equipment-params[data-count="6"]{
    height:300px!important
  }
}
@media(max-width:760px){
  .v36-equipment-params,
  .v36-equipment-params[data-count="1"],
  .v36-equipment-params[data-count="2"],
  .v36-equipment-params[data-count="3"],
  .v36-equipment-params[data-count="4"],
  .v36-equipment-params[data-count="5"],
  .v36-equipment-params[data-count="6"]{
    height:auto!important;
    min-height:0!important
  }
}


/* ===== SEMC CMS V3.6.3 · equipment ratios + national-standard showcase ===== */
.v36-equipment-main{align-items:start!important}
.v36-equipment-carousel{width:100%!important;height:auto!important;min-height:0!important}
.v36-equipment-carousel.ratio-4-3{aspect-ratio:4/3!important}
.v36-equipment-carousel.ratio-16-9{aspect-ratio:16/9!important}
.v36-equipment-carousel .v36-equipment-viewport{width:100%!important;height:100%!important;min-height:0!important}
.v36-equipment-params,
.v36-equipment-params[data-count="1"],.v36-equipment-params[data-count="2"],.v36-equipment-params[data-count="3"],
.v36-equipment-params[data-count="4"],.v36-equipment-params[data-count="5"],.v36-equipment-params[data-count="6"]{height:auto!important;min-height:0!important}

.v363-standard-section{background:linear-gradient(180deg,#f8fafc 0%,#f3f7fa 52%,#fff 100%)!important}
.v363-standard-split{grid-template-columns:minmax(0,1.08fr) minmax(0,.92fr)!important;gap:32px!important;align-items:stretch!important}
.v363-standard-library{min-width:0;padding:30px;border:1px solid rgba(30,75,108,.10);border-radius:28px;background:#fff;box-shadow:0 16px 42px rgba(27,62,87,.06);display:flex;flex-direction:column;justify-content:center}
.v363-standard-library-title{margin:0 0 24px;color:#54758d;font-size:11px;line-height:1.45;font-weight:790;letter-spacing:.17em;text-transform:uppercase}
.v363-standard-paper-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;align-items:center}
.v363-standard-paper-grid[data-count="1"]{grid-template-columns:1fr}
.v363-standard-paper-item{margin:0;min-width:0;display:grid;place-items:center}
.v363-standard-paper-item .v36-honor-paper{width:min(100%,290px)!important;border:9px solid #fff!important;border-radius:13px!important;background:#fff!important;box-shadow:0 18px 38px rgba(23,55,79,.09),0 0 0 1px rgba(27,70,102,.06)!important}
.v363-standard-paper-item.landscape .v36-honor-paper{width:min(100%,350px)!important}
.v363-standard-copy{min-height:100%;padding:46px 48px;border:1px solid rgba(30,75,108,.10);border-radius:28px;background:linear-gradient(155deg,#fff,#f8fbfd);box-shadow:0 16px 42px rgba(27,62,87,.045);display:flex;flex-direction:column;justify-content:center;align-items:flex-start}
.v363-standard-kicker{margin-bottom:24px;color:#54758d;font-size:11px;line-height:1.45;font-weight:790;letter-spacing:.17em;text-transform:uppercase}
.v363-standard-copy .section-title{margin:0!important;max-width:650px;font-size:clamp(38px,4vw,58px)!important;line-height:1.1!important}
.v363-standard-copy .section-lead{max-width:640px!important;margin-top:25px!important;font-size:clamp(15px,1.25vw,18px)!important;line-height:1.9!important}
.v363-standard-meta{width:100%;margin-top:30px;padding-top:20px;border-top:1px solid rgba(40,83,113,.10);color:#7890a0;font-size:10px;line-height:1.6;font-weight:680;letter-spacing:.04em}
@media(max-width:1100px){.v363-standard-split{gap:22px!important}.v363-standard-library{padding:24px!important}.v363-standard-copy{padding:34px!important}.v363-standard-paper-grid{gap:12px!important}}
@media(max-width:760px){
  .v363-standard-split{grid-template-columns:1fr!important;gap:18px!important}
  .v363-standard-copy{order:1!important;min-height:0!important;padding:27px!important;border-radius:23px!important}
  .v363-standard-library{order:2!important;padding:21px!important;border-radius:23px!important}
  .v363-standard-copy .section-title{font-size:clamp(32px,10vw,44px)!important}
  .v363-standard-copy .section-lead{margin-top:18px!important}
  .v363-standard-library-title{margin-bottom:18px!important;font-size:10px!important}
  .v363-standard-paper-grid{gap:12px!important}
  .v363-standard-paper-item .v36-honor-paper{width:min(100%,250px)!important}
  .v363-standard-paper-item.landscape .v36-honor-paper{width:min(100%,320px)!important}
}
@media(max-width:480px){.v363-standard-paper-grid{grid-template-columns:1fr!important}.v363-standard-paper-item .v36-honor-paper{width:min(82vw,280px)!important}.v363-standard-paper-item.landscape .v36-honor-paper{width:min(90vw,340px)!important}}


/* ===== SEMC CMS V3.6.5 · balanced density / adaptive timeline / Apple-like standards ===== */

/* --- Timeline: preserve one continuous row even when descriptions are long. --- */
.v36-timeline-grid{
  grid-template-columns:repeat(var(--v365-timeline-cols,var(--v36-count,6)),minmax(0,1fr))!important;
  row-gap:34px!important
}
.v36-timeline-item{
  grid-template-rows:38px 30px auto!important;
  align-content:start!important;
  min-height:0!important
}
.v36-timeline-year{
  display:flex!important;
  align-items:flex-end!important;
  justify-content:center!important;
  padding:0 10px 10px!important
}
.v36-timeline-text{
  min-width:0!important;
  padding:12px 14px 0!important;
  overflow-wrap:anywhere!important;
  word-break:normal!important
}
.v36-timeline-grid[data-cols="3"] .v36-timeline-text,
.v36-timeline-grid[data-cols="4"] .v36-timeline-text{
  text-align:left!important
}
/* Reset the old six-column connector cuts before applying adaptive row ends. */
.v36-timeline-grid[data-cols="3"] .v36-timeline-point:before,
.v36-timeline-grid[data-cols="3"] .v36-timeline-point:after,
.v36-timeline-grid[data-cols="4"] .v36-timeline-point:before,
.v36-timeline-grid[data-cols="4"] .v36-timeline-point:after{
  display:block!important
}
.v36-timeline-grid[data-cols="3"] .v36-timeline-item:nth-child(3n+1) .v36-timeline-point:before,
.v36-timeline-grid[data-cols="4"] .v36-timeline-item:nth-child(4n+1) .v36-timeline-point:before{
  display:none!important
}
.v36-timeline-grid[data-cols="3"] .v36-timeline-item:nth-child(3n) .v36-timeline-point:after,
.v36-timeline-grid[data-cols="4"] .v36-timeline-item:nth-child(4n) .v36-timeline-point:after{
  display:none!important
}
.v36-timeline-grid .v36-timeline-item:last-child .v36-timeline-point:after{
  display:none!important
}

/* --- Equipment: smaller media share; params stretch to the image row. --- */
.v36-equipment-main{
  grid-template-columns:minmax(0,.86fr) minmax(430px,1.14fr)!important;
  gap:16px!important;
  align-items:stretch!important
}
.v36-equipment-carousel{
  align-self:start!important
}
.v36-equipment-params{
  align-self:stretch!important;
  height:auto!important;
  min-height:0!important;
  align-content:stretch!important;
  grid-auto-flow:row!important;
  gap:10px!important
}
.v36-equipment-params[data-count="1"]{
  grid-template-columns:1fr!important;
  grid-template-rows:1fr!important
}
.v36-equipment-params[data-count="2"]{
  grid-template-columns:1fr!important;
  grid-template-rows:repeat(2,1fr)!important
}
.v36-equipment-params[data-count="3"]{
  grid-template-columns:1fr!important;
  grid-template-rows:repeat(3,1fr)!important
}
.v36-equipment-params[data-count="4"]{
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  grid-template-rows:repeat(2,1fr)!important
}
.v36-equipment-params[data-count="5"],
.v36-equipment-params[data-count="6"]{
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  grid-template-rows:repeat(3,1fr)!important
}
.v36-equipment-param{
  height:auto!important;
  min-height:0!important;
  justify-content:center!important
}

/* --- Certificate carousel: landscape A4 cards keep their natural height. --- */
.v36-certificate-track{
  align-items:flex-start!important
}
.v36-certificate-card{
  height:auto!important;
  align-self:flex-start!important
}
.v36-certificate-card.landscape{
  align-self:flex-start!important
}

.v36-certificate-card.landscape .v36-certificate-copy{
  min-height:58px!important
}

/* --- National standards: one unified glass surface, soft SEMC ambient logo. --- */
.v365-standard-section{
  position:relative!important;
  overflow:hidden!important;
  isolation:isolate!important;
  background:
    radial-gradient(circle at 14% 20%,rgba(68,132,181,.08),transparent 34rem),
    radial-gradient(circle at 88% 76%,rgba(216,56,54,.035),transparent 30rem),
    linear-gradient(180deg,#fff 0%,#f7fafc 18%,#f3f7fa 64%,#fff 100%)!important
}
.page > .v365-standard-section::before{
  content:""!important;
  position:absolute!important;
  z-index:0!important;
  left:0!important;
  right:0!important;
  top:-64px!important;
  height:65px!important;
  pointer-events:none!important;
  background:linear-gradient(180deg,rgba(255,255,255,0),rgba(249,251,253,.72),#f7fafc)!important
}
.v365-standard-section::after{
  content:"";
  position:absolute;
  z-index:0;
  width:min(48vw,720px);
  height:min(24vw,330px);
  right:-7vw;
  top:92px;
  pointer-events:none;
  background:url('/assets/images/SEMC_上电梅山_61ed279d1f64.png') center/contain no-repeat;
  filter:blur(34px) saturate(.9);
  opacity:.075;
  transform:scale(1.12)
}
.v365-standard-shell{
  position:relative!important;
  z-index:1!important;
  display:grid!important;
  grid-template-columns:minmax(0,1.06fr) minmax(0,.94fr)!important;
  gap:0!important;
  align-items:stretch!important;
  padding:18px!important;
  border:1px solid rgba(255,255,255,.76)!important;
  border-radius:40px!important;
  background:rgba(255,255,255,.68)!important;
  -webkit-backdrop-filter:blur(28px) saturate(1.08)!important;
  backdrop-filter:blur(28px) saturate(1.08)!important;
  box-shadow:
    0 28px 80px rgba(31,65,89,.09),
    inset 0 0 0 1px rgba(30,75,108,.035)!important
}
.v365-standard-shell::after{
  content:"";
  position:absolute;
  top:42px;
  bottom:42px;
  left:53%;
  width:1px;
  background:linear-gradient(180deg,transparent,rgba(58,99,128,.12) 16%,rgba(58,99,128,.12) 84%,transparent);
  pointer-events:none
}
.v365-standard-shell.image-right::after{
  left:47%
}
.v365-standard-documents,
.v365-standard-story{
  min-width:0;
  padding:44px 46px
}
.v365-standard-documents{
  display:flex;
  flex-direction:column;
  justify-content:center
}
.v365-standard-label,
.v365-standard-kicker{
  color:#557991;
  font-size:11px;
  line-height:1.4;
  font-weight:790;
  letter-spacing:.18em;
  text-transform:uppercase
}
.v365-standard-label{
  margin-bottom:26px
}
.v365-standard-paper-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:20px;
  align-items:center
}
.v365-standard-paper-grid[data-count="1"]{
  grid-template-columns:1fr
}
.v365-standard-paper{
  margin:0;
  min-width:0;
  display:grid;
  place-items:center
}
.v365-standard-paper .v36-honor-paper{
  width:min(100%,300px)!important;
  border:10px solid rgba(255,255,255,.96)!important;
  border-radius:16px!important;
  background:#fff!important;
  box-shadow:
    0 18px 48px rgba(28,62,86,.10),
    0 1px 0 rgba(255,255,255,.95) inset!important
}
.v365-standard-paper.landscape .v36-honor-paper{
  width:min(100%,360px)!important
}
.v365-standard-story{
  display:flex;
  flex-direction:column;
  justify-content:center;
  align-items:flex-start
}
.v365-standard-kicker{
  margin-bottom:26px
}
.v365-standard-story .section-title{
  margin:0!important;
  max-width:620px!important;
  font-size:clamp(40px,4.15vw,62px)!important;
  line-height:1.06!important;
  letter-spacing:-.035em!important
}
.v365-standard-story .section-lead{
  max-width:610px!important;
  margin-top:28px!important;
  color:#6e8494!important;
  font-size:clamp(15px,1.22vw,18px)!important;
  line-height:1.9!important
}
.v365-standard-footnote{
  margin-top:34px;
  padding-top:20px;
  width:100%;
  border-top:1px solid rgba(46,88,118,.09);
  color:#8295a3;
  font-size:10px;
  line-height:1.6;
  letter-spacing:.06em
}

@media(max-width:1100px){
  .v36-equipment-main{
    grid-template-columns:minmax(0,.92fr) minmax(350px,1.08fr)!important
  }
  .v365-standard-documents,
  .v365-standard-story{
    padding:34px 30px
  }
}
@media(max-width:900px){
  .v36-equipment-main{
    grid-template-columns:1fr!important
  }
  .v36-equipment-carousel{
    width:min(100%,760px)!important;
    justify-self:center!important
  }
  .v36-equipment-params{
    width:100%!important;
    grid-auto-rows:minmax(92px,auto)!important
  }
}
@media(max-width:760px){
  .v36-timeline-grid{
    grid-template-columns:1fr!important;
    row-gap:0!important
  }
  .v36-timeline-item{
    grid-template-columns:82px 34px minmax(0,1fr)!important;
    grid-template-rows:auto!important;
    min-height:112px!important
  }
  .v36-timeline-year{
    display:block!important;
    padding:5px 10px 0 0!important;
    text-align:right!important
  }
  .v36-timeline-text{
    padding:3px 0 22px 12px!important;
    text-align:left!important
  }
  .v36-timeline-grid[data-cols="3"] .v36-timeline-point:before,
  .v36-timeline-grid[data-cols="3"] .v36-timeline-point:after,
  .v36-timeline-grid[data-cols="4"] .v36-timeline-point:before,
  .v36-timeline-grid[data-cols="4"] .v36-timeline-point:after{
    display:block!important
  }
  .v36-timeline-item:first-child .v36-timeline-point:before{
    display:none!important
  }
  .v36-timeline-item:last-child .v36-timeline-point:after{
    display:none!important
  }

  .v36-equipment-params,
  .v36-equipment-params[data-count="1"],
  .v36-equipment-params[data-count="2"],
  .v36-equipment-params[data-count="3"],
  .v36-equipment-params[data-count="4"],
  .v36-equipment-params[data-count="5"],
  .v36-equipment-params[data-count="6"]{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    grid-template-rows:none!important;
    height:auto!important
  }
  .v36-equipment-params[data-count="1"]{
    grid-template-columns:1fr!important
  }

  .v365-standard-shell{
    grid-template-columns:1fr!important;
    padding:12px!important;
    border-radius:28px!important
  }
  .v365-standard-shell::after{
    display:none!important
  }
  .v365-standard-story{
    order:1!important;
    padding:28px 24px 24px!important
  }
  .v365-standard-documents{
    order:2!important;
    padding:20px 24px 28px!important
  }
  .v365-standard-story .section-title{
    font-size:clamp(34px,10vw,46px)!important
  }
  .v365-standard-story .section-lead{
    margin-top:20px!important
  }
  .v365-standard-paper-grid{
    gap:13px
  }
  .v365-standard-paper .v36-honor-paper{
    width:min(100%,250px)!important
  }
  .v365-standard-paper.landscape .v36-honor-paper{
    width:min(100%,320px)!important
  }
  .v365-standard-section::after{
    width:560px;
    height:260px;
    right:-250px;
    top:80px;
    opacity:.055
  }
}
@media(max-width:480px){
  .v36-equipment-params,
  .v36-equipment-params[data-count="2"],
  .v36-equipment-params[data-count="3"],
  .v36-equipment-params[data-count="4"],
  .v36-equipment-params[data-count="5"],
  .v36-equipment-params[data-count="6"]{
    grid-template-columns:1fr!important
  }
  .v365-standard-paper-grid{
    grid-template-columns:1fr!important
  }
  .v365-standard-paper .v36-honor-paper{
    width:min(82vw,280px)!important
  }
  .v365-standard-paper.landscape .v36-honor-paper{
    width:min(90vw,340px)!important
  }
}


/* V3.6.5 mobile timeline: desktop row-break rules must not cut the vertical line. */
@media(max-width:760px){
  .v36-timeline-grid[data-cols="3"] .v36-timeline-item:nth-child(3n+1) .v36-timeline-point:before,
  .v36-timeline-grid[data-cols="3"] .v36-timeline-item:nth-child(3n) .v36-timeline-point:after,
  .v36-timeline-grid[data-cols="4"] .v36-timeline-item:nth-child(4n+1) .v36-timeline-point:before,
  .v36-timeline-grid[data-cols="4"] .v36-timeline-item:nth-child(4n) .v36-timeline-point:after{
    display:block!important
  }
  .v36-timeline-grid .v36-timeline-item:first-child .v36-timeline-point:before{
    display:none!important
  }
  .v36-timeline-grid .v36-timeline-item:last-child .v36-timeline-point:after{
    display:none!important
  }
}

/* ===== SEMC CMS V3.6.6 · six-column timeline / centered landscape certificates / smoother standards / desktop footer ===== */

/* Development timeline: desktop always keeps a maximum of six nodes per row.
   Each CSS-grid row shares the height of its longest copy, so long descriptions
   extend the whole row without breaking the connector alignment. */
@media(min-width:761px){
  .v36-timeline-grid{
    grid-template-columns:repeat(var(--v365-timeline-cols,var(--v36-count,6)),minmax(0,1fr))!important;
    align-items:stretch!important
  }
  .v36-timeline-item{
    height:100%!important;
    grid-template-rows:38px 30px auto!important
  }
  .v36-timeline-grid[data-cols="3"] .v36-timeline-text,
  .v36-timeline-grid[data-cols="4"] .v36-timeline-text{
    text-align:center!important
  }
}

/* Certificate carousel: all visible cards share the row height. Landscape A4
   keeps its true 297:210 ratio, while the full paper+caption group is centered
   vertically beside portrait certificates. */
.v36-certificate-track{
  align-items:stretch!important
}
.v36-certificate-card,
.v36-certificate-card.landscape{
  align-self:stretch!important;
  justify-content:center!important
}

.v36-certificate-carousel>.v36-carousel-arrow{
  top:50%!important;
  transform:translateY(-50%)!important
}

/* National-standard showcase: blend all the way into the section's true white
   top edge, eliminating the visible join. The blurred SEMC ambient mark is only
   slightly stronger than V3.6.5. */
.v365-standard-section{
  background:
    radial-gradient(circle at 14% 20%,rgba(68,132,181,.085),transparent 34rem),
    radial-gradient(circle at 88% 76%,rgba(216,56,54,.038),transparent 30rem),
    linear-gradient(180deg,#fff 0%,#f9fbfc 11%,#f3f7fa 64%,#fff 100%)!important
}
.page > .v365-standard-section::before{
  top:-96px!important;
  height:97px!important;
  background:linear-gradient(
    180deg,
    rgba(255,255,255,0) 0%,
    rgba(255,255,255,.38) 35%,
    rgba(255,255,255,.82) 72%,
    #fff 100%
  )!important
}
.v365-standard-section::after{
  opacity:.095!important
}
@media(max-width:760px){
  .page > .v365-standard-section::before{
    top:-58px!important;
    height:59px!important
  }
  .v365-standard-section::after{
    opacity:.07!important
  }
}

/* PC footer: redistribute the three information columns and give the contact
   block a calmer buffer before the QR area. Tablet/mobile rules remain intact. */
@media(min-width:1101px){
  .footer-main{
    grid-template-columns:
      minmax(260px,1.30fr)
      minmax(118px,.64fr)
      minmax(118px,.64fr)
      minmax(205px,1.02fr)
      minmax(200px,.78fr)!important;
    column-gap:clamp(36px,3vw,52px)!important;
    row-gap:0!important
  }
  .footer-main>.footer-col:nth-child(2),
  .footer-main>.footer-col:nth-child(3),
  .footer-main>.footer-col:nth-child(4){
    min-width:0!important
  }
  .footer-main>.footer-col:nth-child(4){
    padding-right:12px!important
  }
  .footer-qr-grid{
    width:min(100%,210px)!important;
    justify-self:end!important
  }
}



/* ===== SEMC CMS V3.6.7 · responsive repair / natural section blending ===== */
.v36-certificate-track{align-items:center!important}
.v36-certificate-card,.v36-certificate-card.landscape,.v36-certificate-card.portrait{
  height:auto!important;align-self:center!important;justify-content:flex-start!important
}
.v36-certificate-card.landscape .v36-certificate-paper{aspect-ratio:297/210!important}

@media(max-width:760px){
  .v36-timeline-grid{
    --v367-timeline-year:72px;--v367-timeline-point:34px;
    margin-top:26px!important;row-gap:0!important;overflow:visible!important
  }
  .v36-timeline-item{
    position:relative!important;
    grid-template-columns:var(--v367-timeline-year) var(--v367-timeline-point) minmax(0,1fr)!important;
    grid-template-rows:auto!important;min-height:86px!important;align-items:start!important;
    padding:0!important;text-align:left!important
  }
  .v36-timeline-item:not(:last-child)::after{
    content:"";position:absolute;z-index:0;
    left:calc(var(--v367-timeline-year) + (var(--v367-timeline-point) / 2));
    top:17px;bottom:-17px;width:1px;transform:translateX(-.5px);
    background:linear-gradient(180deg,#4b86b7,#8db7d5);pointer-events:none
  }
  .v36-timeline-point{
    position:relative!important;z-index:1!important;width:var(--v367-timeline-point)!important;
    height:34px!important;min-height:34px!important;align-self:start!important;
    display:grid!important;place-items:center!important
  }
  .v36-timeline-point::before,.v36-timeline-point::after{display:none!important}
  .v36-timeline-point i{width:15px!important;height:15px!important;box-sizing:border-box!important;border-width:4px!important}
  .v36-timeline-year{display:block!important;padding:3px 10px 0 0!important;text-align:right!important;line-height:1.35!important}
  .v36-timeline-text{min-width:0!important;padding:1px 0 27px 12px!important;text-align:left!important;line-height:1.72!important}
}
@media(max-width:420px){
  .v36-timeline-grid{--v367-timeline-year:64px;--v367-timeline-point:32px}
  .v36-timeline-item:not(:last-child)::after{
    left:calc(var(--v367-timeline-year) + (var(--v367-timeline-point) / 2));top:16px;bottom:-16px
  }
  .v36-timeline-point{width:32px!important;height:32px!important;min-height:32px!important}
  .v36-timeline-year{font-size:15px!important;padding-right:8px!important}
  .v36-timeline-text{font-size:12px!important;padding-left:10px!important}
}

.page > .section{isolation:isolate}
.page > .section.blue-wash,.page > .section.deep-blue,.contact-locations-section{
  border-top:0!important;border-bottom:0!important
}
.page > .section:not(:first-child)::before{
  top:-52px!important;height:104px!important;
  background:linear-gradient(180deg,rgba(255,255,255,0) 0%,rgba(255,255,255,.52) 30%,rgba(255,255,255,.98) 50%,rgba(255,255,255,.70) 70%,rgba(255,255,255,0) 100%)!important
}
.page > .section.blue-wash::before{
  background:linear-gradient(180deg,rgba(247,249,251,0),rgba(247,249,251,.58) 30%,#f7f9fb 50%,rgba(247,249,251,.72) 70%,rgba(247,249,251,0))!important
}
.page > .service-request-section::before{
  background:linear-gradient(180deg,rgba(247,251,253,0),rgba(247,251,253,.58) 30%,#f7fbfd 50%,rgba(247,251,253,.72) 70%,rgba(247,251,253,0))!important
}
.page > .contact-locations-section::before{
  background:linear-gradient(180deg,rgba(237,245,250,0),rgba(237,245,250,.58) 30%,#edf5fa 50%,rgba(237,245,250,.72) 70%,rgba(237,245,250,0))!important
}
.v365-standard-section{overflow:visible!important}
.page > .v365-standard-section::before{
  top:-72px!important;height:144px!important;
  background:linear-gradient(180deg,rgba(255,255,255,0),rgba(255,255,255,.54) 31%,#fff 50%,rgba(255,255,255,.76) 70%,rgba(255,255,255,0))!important
}
.contact-locations-section{
  background:radial-gradient(circle at 92% 10%,rgba(100,166,214,.14),transparent 28rem),linear-gradient(180deg,#edf5fa 0%,#f7fafc 100%)!important
}

@media(max-width:700px){
  .v36-certificate-section{padding-top:46px!important;padding-bottom:46px!important}
  .v36-certificate-carousel{margin-top:18px!important;padding:0 28px!important}
  .v36-certificate-viewport{padding:3px 1px 5px!important}
  .v36-certificate-track{gap:10px!important;align-items:center!important}
  .v36-certificate-card,.v36-certificate-card.landscape,.v36-certificate-card.portrait{padding:6px!important;border-radius:15px!important}
  .v36-certificate-paper{border-radius:10px!important}
  .v36-certificate-copy{min-height:42px!important;padding:8px 2px 1px!important;justify-content:center!important}
  .v36-certificate-card.no-description .v36-certificate-copy{min-height:38px!important}
  .v36-certificate-copy h3{margin-bottom:3px!important;font-size:12px!important;line-height:1.28!important}
  .v36-certificate-copy p{font-size:9.2px!important;line-height:1.45!important}
  .v36-certificate-carousel>.v36-carousel-arrow{width:34px!important;height:34px!important;border-radius:11px!important}
}
@media(max-width:380px){
  .v36-certificate-carousel{padding:0 24px!important}
  .v36-certificate-copy h3{font-size:11.5px!important}
  .v36-certificate-copy p{font-size:8.8px!important}
}

@media(max-width:900px){
  .v36-equipment-main,.v365-standard-shell{min-width:0!important}
  .v36-equipment-carousel,.v36-equipment-params,.v365-standard-documents,.v365-standard-story{max-width:100%!important;min-width:0!important}
}
@media(max-width:700px){
  .v365-standard-section{padding-top:50px!important;padding-bottom:50px!important}
  .v365-standard-shell{width:100%!important;box-sizing:border-box!important}
  .v365-standard-story,.v365-standard-documents{min-width:0!important}
  .v365-standard-paper-grid{width:100%!important}
  .contact-location-card{min-width:0!important}
  .location-line strong{overflow-wrap:anywhere!important}
}


/* ===== SEMC CMS V3.6.8 · restored capsules / compact mobile standards / repeatable motion ===== */

/* Restore the original pale blue-white glass tint of all shared English capsule
   headings. Only the capsule background is restored; typography and spacing stay unchanged. */
.eyebrow{
  background:linear-gradient(180deg,rgba(255,255,255,.82),rgba(222,237,248,.76))!important
}

/* National-standard showcase: V3.6.7 let the ambient logo extend outside the
   section so the top feather could remain visible. On narrow screens that logo
   box reached roughly 250px beyond the viewport and enlarged the page canvas.
   Keep the ambient mark fully inside the section without touching the feather. */
.v365-standard-section::after{
  right:0!important;
  width:min(46vw,700px)!important;
  max-width:100%!important;
  transform:scale(1.08)!important;
  transform-origin:right center!important;
  clip-path:inset(-80px 0 -80px -80px)!important
}

@media(max-width:760px){
  .v365-standard-section{
    padding-top:46px!important;
    padding-bottom:46px!important
  }
  .v365-standard-section::after{
    width:min(94vw,420px)!important;
    height:min(44vw,210px)!important;
    right:0!important;
    top:72px!important;
    opacity:.06!important;
    transform:scale(1.03)!important;
    clip-path:inset(-64px 0 -64px -64px)!important
  }
  .v365-standard-shell{
    padding:9px!important;
    border-radius:25px!important
  }
  .v365-standard-story{
    padding:22px 19px 17px!important
  }
  .v365-standard-kicker{
    margin-bottom:15px!important;
    font-size:9.5px!important
  }
  .v365-standard-story .section-title{
    font-size:clamp(29px,8.7vw,39px)!important;
    line-height:1.08!important
  }
  .v365-standard-story .section-lead{
    margin-top:15px!important;
    font-size:13px!important;
    line-height:1.72!important
  }
  .v365-standard-footnote{
    margin-top:18px!important;
    padding-top:13px!important;
    font-size:9px!important
  }
  .v365-standard-documents{
    padding:14px 12px 18px!important
  }
  .v365-standard-label{
    margin-bottom:13px!important;
    font-size:9px!important;
    letter-spacing:.15em!important
  }
  .v365-standard-paper-grid{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    gap:8px!important;
    align-items:start!important
  }
  .v365-standard-paper-grid[data-count="1"]{
    grid-template-columns:minmax(0,1fr)!important;
    width:min(48%,170px)!important;
    margin-inline:auto!important
  }
  .v365-standard-paper-grid[data-count="3"] .v365-standard-paper:last-child,
  .v365-standard-paper-grid[data-count="5"] .v365-standard-paper:last-child{
    grid-column:1/-1!important;
    width:calc(50% - 4px)!important;
    justify-self:center!important
  }
  .v365-standard-paper,
  .v365-standard-paper .v36-honor-paper,
  .v365-standard-paper.landscape .v36-honor-paper{
    min-width:0!important;
    max-width:100%!important
  }
  .v365-standard-paper .v36-honor-paper,
  .v365-standard-paper.landscape .v36-honor-paper{
    width:100%!important;
    border-width:5px!important;
    border-radius:10px!important;
    box-shadow:0 10px 24px rgba(28,62,86,.075),0 1px 0 rgba(255,255,255,.95) inset!important
  }
}

@media(max-width:480px){
  .v365-standard-paper-grid{
    grid-template-columns:repeat(2,minmax(0,1fr))!important
  }
  .v365-standard-paper-grid[data-count="1"]{
    grid-template-columns:minmax(0,1fr)!important
  }
  .v365-standard-paper .v36-honor-paper,
  .v365-standard-paper.landscape .v36-honor-paper{
    width:100%!important
  }
}

/* Apple-like motion pass: smaller travel, softer easing, and repeatable entrance
   states. Image sizing/cropping, video layers, and carousel playback are untouched. */
@media(prefers-reduced-motion:no-preference){
  .reveal{
    --semc-reveal-y:18px;
    opacity:0;
    transform:translate3d(0,var(--semc-reveal-y),0);
    transition:
      opacity .68s cubic-bezier(.22,1,.36,1),
      transform .78s cubic-bezier(.22,1,.36,1)!important
  }
  .reveal.visible{
    opacity:1;
    transform:translate3d(0,0,0)
  }
  .reveal.delay1{transition-delay:.055s!important}
  .reveal.delay2{transition-delay:.11s!important}
  .reveal.delay3{transition-delay:.165s!important}

  .service-card,
  .equipment-card,
  .visual-content-card,
  .contact-location-card,
  .v36-equipment-param,
  .v36-certificate-card,
  .achievement-card{
    transition-timing-function:cubic-bezier(.22,1,.36,1)!important
  }
}

@media(prefers-reduced-motion:reduce){
  
}


/* ===== SEMC CMS V3.6.9 · flat capsules / seamless sections / polished route motion ===== */

/* Shared English capsule headings: flat pale-blue glass instead of a blue/white gradient. */
.eyebrow{
  background:rgba(233,244,252,.96)!important;
  border-color:rgba(92,151,194,.25)!important;
  box-shadow:0 10px 28px rgba(42,91,126,.075),inset 0 1px 0 rgba(255,255,255,.68)!important;
  backdrop-filter:blur(12px) saturate(118%);
  -webkit-backdrop-filter:blur(12px) saturate(118%)
}

/* Adjacent section seam bridge. JS supplies the actual tone on both sides so
   white, pale-blue and special CMS modules blend without a horizontal cut. */
.page > .section:not(:first-child)::before{
  content:""!important;
  position:absolute!important;
  z-index:0!important;
  left:0!important;right:0!important;
  top:0!important;height:192px!important;
  pointer-events:none!important;
  background:linear-gradient(180deg,var(--semc-seam-prev,#fff) 0%,var(--semc-seam-prev,#fff) 8%,var(--semc-seam-current,#fff) 92%,var(--semc-seam-current,#fff) 100%)!important;
  opacity:1!important
}
.page > .section > .container{position:relative;z-index:1}
.page > .v365-standard-section::before,
.page > .contact-locations-section::before,
.page > .service-request-section::before,
.page > .section.blue-wash::before,
.page > .section.deep-blue::before{
  background:linear-gradient(180deg,var(--semc-seam-prev,#fff) 0%,var(--semc-seam-prev,#fff) 8%,var(--semc-seam-current,#fff) 92%,var(--semc-seam-current,#fff) 100%)!important
}
@media(max-width:760px){
  .page > .section:not(:first-child)::before{top:0!important;height:156px!important}
}

/* Repeated scrolling stays interactive, but content/media never vanishes. */
@media(prefers-reduced-motion:no-preference){
  .reveal{
    --semc-reveal-y:12px;
    opacity:.985!important;
    transform:translate3d(0,var(--semc-reveal-y),0) scale(.999)!important;
    transition:opacity .48s cubic-bezier(.22,1,.36,1),transform .72s cubic-bezier(.22,1,.36,1)!important;
    will-change:transform
  }
  .reveal.visible{opacity:1!important;transform:translate3d(0,0,0) scale(1)!important}
  .reveal.delay1{transition-delay:.035s!important}.reveal.delay2{transition-delay:.07s!important}.reveal.delay3{transition-delay:.105s!important}
  .reveal img,.reveal video,.reveal picture{opacity:1!important;visibility:visible!important}
}

/* Full-page enter/exit motion for top navigation changes. The page starts
   almost fully visible, avoiding flashes while still giving route changes a
   deliberate Apple-like handoff. */
@media(prefers-reduced-motion:no-preference){
  .page.active{animation:none!important;opacity:1!important;transform:none!important}
  body.semc-route-prep main,
  body.semc-route-prep .corp-footer{opacity:.94;transform:translate3d(0,9px,0) scale(.999);transition:opacity .58s cubic-bezier(.22,1,.36,1),transform .68s cubic-bezier(.22,1,.36,1)}
  
  body.semc-page-leaving main,
  body.semc-page-leaving .corp-footer{opacity:.82!important;transform:translate3d(0,-7px,0) scale(.9985)!important;transition:opacity .20s cubic-bezier(.4,0,1,1),transform .22s cubic-bezier(.4,0,1,1)!important}
  body.semc-page-leaving .site-nav{opacity:.92;transform:translateX(-50%) translateY(-3px)!important;transition:opacity .18s ease,transform .22s cubic-bezier(.4,0,1,1)!important}
}
@media(prefers-reduced-motion:reduce){
  body.semc-route-prep main,body.semc-route-prep .corp-footer,body.semc-page-leaving main,body.semc-page-leaving .corp-footer{opacity:1!important;transform:none!important;transition:none!important}
}


/* ===== SEMC CMS V3.7 · repaired module seams / quicker scroll & route motion ===== */

/* V3.6.9 reused each section's ::before pseudo-element as the seam layer.
   Some special modules also use / override that pseudo-element, which can make
   the blend disappear or be clipped. V3.7 uses a dedicated DOM layer instead. */
.page > .section:not(:first-child)::before,
.page > .section.blue-wash::before,
.page > .section.deep-blue::before,
.page > .service-request-section::before,
.page > .contact-locations-section::before,
.page > .v36-honor-a4-section::before,
.page > .v365-standard-section::before{
  display:none!important
}
.semc-blended-section{position:relative!important}
.semc-section-blend{
  position:absolute!important;
  z-index:0!important;
  left:0!important;
  right:0!important;
  top:0!important;
  height:clamp(118px,9vw,168px)!important;
  pointer-events:none!important;
  display:block!important;
  background:linear-gradient(
    180deg,
    var(--semc-seam-prev,#fff) 0%,
    var(--semc-seam-prev,#fff) 7%,
    var(--semc-seam-current,#fff) 93%,
    var(--semc-seam-current,#fff) 100%
  )!important
}
.semc-blended-section > .container,
.semc-blended-section > .home-proof-grid,
.semc-blended-section > .achievement-layout,
.semc-blended-section > .service-request-layout{
  position:relative;
  z-index:1
}
@media(max-width:760px){
  .semc-section-blend{height:104px!important}
}

/* Faster repeatable reveal: no scale phase and virtually no opacity change.
   This keeps same-colour neighbouring sections visually anchored. */
@media(prefers-reduced-motion:no-preference){
  .reveal{
    --semc-reveal-y:9px;
    opacity:.998!important;
    transform:translate3d(0,var(--semc-reveal-y),0)!important;
    transition:
      opacity .22s ease-out,
      transform .38s cubic-bezier(.22,1,.36,1)!important;
    will-change:transform
  }
  
  .reveal.delay1{transition-delay:.018s!important}
  .reveal.delay2{transition-delay:.036s!important}
  .reveal.delay3{transition-delay:.054s!important}

  body.semc-route-prep main,
  body.semc-route-prep .corp-footer{
    opacity:.985;
    transform:translate3d(0,6px,0);
    transition:
      opacity .30s cubic-bezier(.22,1,.36,1),
      transform .38s cubic-bezier(.22,1,.36,1)
  }
  body.semc-route-prep.semc-route-ready main,
  body.semc-route-prep.semc-route-ready .corp-footer{
    opacity:1;
    transform:none
  }
  body.semc-page-leaving main,
  body.semc-page-leaving .corp-footer{
    opacity:.94!important;
    transform:translate3d(0,-5px,0)!important;
    transition:
      opacity .13s ease-out,
      transform .16s cubic-bezier(.4,0,1,1)!important
  }
  body.semc-page-leaving .site-nav{
    opacity:.96;
    transform:translateX(-50%) translateY(-2px)!important;
    transition:
      opacity .13s ease-out,
      transform .16s cubic-bezier(.4,0,1,1)!important
  }
}


/* ===== SEMC CMS V3.7.1 · mobile scroll stability / glass capsules / true seam bridges / soft spring motion ===== */

/* Shared English capsule: quiet pale-blue glass with a restrained internal
   highlight. The circular index is a fixed grid cell so + / 01 / 02 stays
   geometrically centered regardless of the surrounding label length. */
.eyebrow{
  position:relative!important;
  isolation:isolate!important;
  overflow:hidden!important;
  background:
    linear-gradient(180deg,rgba(255,255,255,.42),rgba(255,255,255,.08)),
    rgba(224,240,251,.82)!important;
  border:1px solid rgba(91,151,194,.25)!important;
  box-shadow:
    0 12px 30px rgba(38,83,116,.085),
    inset 0 1px 0 rgba(255,255,255,.88),
    inset 0 -1px 0 rgba(90,146,188,.055)!important;
  -webkit-backdrop-filter:blur(16px) saturate(132%)!important;
  backdrop-filter:blur(16px) saturate(132%)!important;
}
.eyebrow::after{
  content:""!important;
  position:absolute!important;
  z-index:0!important;
  left:10%!important;
  top:-42%!important;
  width:58%!important;
  height:90%!important;
  border-radius:999px!important;
  background:rgba(255,255,255,.30)!important;
  filter:blur(10px)!important;
  pointer-events:none!important;
}
.eyebrow>*{position:relative!important;z-index:1!important}
.eyebrow .num,
.achievement-copy .eyebrow .num{
  display:inline-grid!important;
  place-items:center!important;
  flex:0 0 25px!important;
  width:25px!important;
  height:25px!important;
  min-width:25px!important;
  min-height:25px!important;
  margin:0!important;
  padding:0!important;
  box-sizing:border-box!important;
  line-height:1!important;
  text-align:center!important;
  color:#fff!important;
  background:linear-gradient(145deg,#2f74b5 0%,#5e9fd0 100%)!important;
  border:1px solid rgba(255,255,255,.56)!important;
  box-shadow:0 5px 14px rgba(38,91,132,.17),inset 0 1px 0 rgba(255,255,255,.34)!important;
}
.eyebrow .num>*{display:block!important;margin:0!important;padding:0!important;line-height:1!important;text-align:center!important}
@media(max-width:700px){
  .page-hero .eyebrow .num,
  .page-hero .achievement-copy .eyebrow .num{
    flex-basis:29px!important;width:29px!important;height:29px!important;
    min-width:29px!important;min-height:29px!important
  }
}

/* True cross-module bridge. It is a zero-net-height sibling between sections,
   overlapping both sides of the boundary. Therefore borders, rectangular
   backgrounds and module overflow can no longer expose a one-pixel divider. */
.page{isolation:isolate}
.semc-section-blend{
  --semc-blend-h:clamp(150px,10vw,190px);
  position:relative!important;
  z-index:1!important;
  display:block!important;
  width:100%!important;
  max-width:none!important;
  height:var(--semc-blend-h)!important;
  margin-top:calc(var(--semc-blend-h) * -.5)!important;
  margin-bottom:calc(var(--semc-blend-h) * -.5)!important;
  left:auto!important;right:auto!important;top:auto!important;
  pointer-events:none!important;
  overflow:visible!important;
  background:linear-gradient(180deg,
    var(--semc-seam-prev,#fff) 0%,
    var(--semc-seam-prev,#fff) 12%,
    var(--semc-seam-current,#fff) 88%,
    var(--semc-seam-current,#fff) 100%)!important;
}
@supports (color:color-mix(in srgb,#fff 50%,#000)){
  .semc-section-blend{
    background:linear-gradient(180deg,
      var(--semc-seam-prev,#fff) 0%,
      var(--semc-seam-prev,#fff) 10%,
      color-mix(in srgb,var(--semc-seam-prev,#fff) 78%,var(--semc-seam-current,#fff)) 28%,
      color-mix(in srgb,var(--semc-seam-prev,#fff) 54%,var(--semc-seam-current,#fff)) 46%,
      color-mix(in srgb,var(--semc-seam-prev,#fff) 34%,var(--semc-seam-current,#fff)) 66%,
      var(--semc-seam-current,#fff) 90%,
      var(--semc-seam-current,#fff) 100%)!important;
  }
}
.semc-blended-section{position:relative!important;z-index:auto!important}
.semc-blended-section>.container,
.semc-blended-section>.home-proof-grid,
.semc-blended-section>.achievement-layout,
.semc-blended-section>.service-request-layout{
  position:relative!important;
  z-index:2!important;
}
@media(max-width:760px){
  .semc-section-blend{--semc-blend-h:132px}
}

/* Re-entry motion: content never fades away. A 5-7px spring-like settle is
   enough to keep the page alive without making images/video look reloaded. */
@media(prefers-reduced-motion:no-preference){
  .reveal{
    --semc-reveal-y:7px;
    opacity:1!important;
    transform:translate3d(0,var(--semc-reveal-y),0)!important;
    transition:
      transform .44s cubic-bezier(.16,1.08,.30,1),
      opacity .16s ease-out!important;
    will-change:auto!important;
  }
  
  .reveal.delay1{transition-delay:.016s!important}
  .reveal.delay2{transition-delay:.032s!important}
  .reveal.delay3{transition-delay:.048s!important}

  body.semc-route-prep main,
  body.semc-route-prep .corp-footer{
    opacity:.99!important;
    transform:translate3d(0,7px,0)!important;
    transition:
      opacity .20s ease-out,
      transform .34s cubic-bezier(.16,1.08,.30,1)!important;
  }
  body.semc-route-prep.semc-route-ready main,
  body.semc-route-prep.semc-route-ready .corp-footer{
    opacity:1!important;
    transform:translate3d(0,0,0)!important;
  }
  body.semc-page-leaving main,
  body.semc-page-leaving .corp-footer{
    opacity:.985!important;
    transform:translate3d(0,-3px,0)!important;
    transition:
      opacity .10s ease-out,
      transform .12s cubic-bezier(.4,0,.6,1)!important;
  }
  body.semc-page-leaving .site-nav{
    opacity:.99!important;
    transform:translateX(-50%) translateY(-1px)!important;
    transition:opacity .10s ease-out,transform .12s cubic-bezier(.4,0,.6,1)!important;
  }
}
@media(max-width:980px) and (prefers-reduced-motion:no-preference){
  .reveal{--semc-reveal-y:5px;transition-duration:.38s,.14s!important}
}


/* ===== SEMC CMS V3.7.2 · iPad hero lock / seam overlay / compact desktop nav ===== */

/* Touch-first homepage cover: keep the same static crop, but never change its
   height or transform while Safari's toolbar / pull-to-refresh UI is moving. */
html.semc-touch-device body[data-page-id="home"] .hero{
  height:100svh!important;
  min-height:100svh!important;
  max-height:100svh!important
}
html.semc-touch-device body[data-page-id="home"] .hero-media img{
  transform:scale(1.012)!important;
  transition:none!important;
  will-change:auto!important
}
@supports not (height:100svh){
  html.semc-touch-device body[data-page-id="home"] .hero{
    height:100vh!important;min-height:100vh!important;max-height:100vh!important
  }
}

/* V3.7.2 seam bridges are page-level absolute overlays, centred on the actual
   boundary and kept out of layout. This covers the old rectangular module edge
   itself instead of merely placing a gradient before/after it. */
.semc-seam-page{position:relative!important;isolation:isolate!important}
.semc-section-blend{
  --semc-blend-h:clamp(132px,8.2vw,166px);
  position:absolute!important;
  z-index:18!important;
  left:0!important;
  right:0!important;
  top:var(--semc-seam-y,0px)!important;
  width:100%!important;
  height:var(--semc-blend-h)!important;
  margin:0!important;
  transform:translate3d(0,-50%,0)!important;
  pointer-events:none!important;
  overflow:visible!important;
  background:linear-gradient(180deg,
    var(--semc-seam-prev,#fff) 0%,
    var(--semc-seam-prev,#fff) 5%,
    color-mix(in srgb,var(--semc-seam-prev,#fff) 82%,var(--semc-seam-current,#fff)) 24%,
    color-mix(in srgb,var(--semc-seam-prev,#fff) 56%,var(--semc-seam-current,#fff)) 44%,
    color-mix(in srgb,var(--semc-seam-prev,#fff) 34%,var(--semc-seam-current,#fff)) 64%,
    var(--semc-seam-current,#fff) 92%,
    var(--semc-seam-current,#fff) 100%)!important;
  box-shadow:none!important
}
@supports not (color:color-mix(in srgb,#fff 50%,#000)){
  .semc-section-blend{
    background:linear-gradient(180deg,
      var(--semc-seam-prev,#fff) 0%,
      var(--semc-seam-prev,#fff) 8%,
      var(--semc-seam-current,#fff) 92%,
      var(--semc-seam-current,#fff) 100%)!important
  }
}
.semc-blend-previous{border-bottom-color:transparent!important}
.semc-blended-section{border-top-color:transparent!important}
.semc-blended-section>.container,
.semc-blended-section>.home-proof-grid,
.semc-blended-section>.achievement-layout,
.semc-blended-section>.service-request-layout,
.semc-blended-section>.v365-standard-shell{
  position:relative!important;
  z-index:24!important
}
@media(max-width:760px){
  .semc-section-blend{--semc-blend-h:108px}
}

/* Compact desktop / small-laptop navigation. Keep desktop navigation visible,
   but reclaim spacing before it starts to crowd the brand block. */
@media(min-width:981px) and (max-width:1480px){
  .site-nav{
    width:calc(100vw - 30px)!important;
    padding:0 15px!important;
    gap:clamp(8px,1vw,14px)!important
  }
  .brand{
    flex:0 1 auto!important;
    min-width:0!important;
    gap:clamp(8px,.8vw,12px)!important;
    align-items:center!important
  }
  .brand-logo{
    width:clamp(112px,10.5vw,148px)!important;
    height:auto!important;
    max-height:48px!important
  }
  .brand-name{
    font-size:clamp(12.5px,1.12vw,15.5px)!important;
    line-height:1.16!important;
    display:flex!important;
    align-items:center!important
  }
  .nav-links{
    flex:0 0 auto!important;
    margin-left:auto!important;
    gap:clamp(0px,.28vw,4px)!important;
    align-items:center!important
  }
  .nav-link,
  .nav-link:hover,
  .nav-link.active,
  .nav-link.active:hover{
    display:flex!important;
    align-items:center!important;
    justify-content:center!important;
    height:44px!important;
    min-height:44px!important;
    padding:0 clamp(5px,.62vw,9px) 1px!important;
    font-size:clamp(11.8px,.98vw,13.5px)!important;
    line-height:1!important
  }
  .nav-link::before{bottom:2px!important}
}
@media(min-width:981px) and (max-width:1160px){
  .site-nav{padding-inline:12px!important;gap:7px!important}
  .brand{gap:7px!important}
  .brand-logo{width:110px!important;max-height:42px!important}
  .brand-name{font-size:12.2px!important}
  .nav-links{gap:0!important}
  .nav-link,
  .nav-link:hover,
  .nav-link.active,
  .nav-link.active:hover{
    padding-inline:5px!important;
    font-size:11.7px!important
  }
}


/* ===== SEMC CMS V3.7.3 · intrinsic section surfaces / continuous soft tones / one-shot content motion ===== */

/* Retire every historical cross-boundary seam element. The transition is now
   painted by each section's own background, permanently below its content. */
.semc-section-blend{display:none!important}

/* Adjacent modules share an identical computed boundary colour. From that exact
   colour each section softly returns to its own nearby white / cool-blue tone.
   There is no overlay above text, no negative margin and no high-z-index bridge. */
body[data-page-id] .page > .semc-toned-section{
  --semc-tone-current:#ffffff;
  --semc-tone-top-edge:var(--semc-tone-current);
  --semc-tone-bottom-edge:var(--semc-tone-current);
  --semc-tone-edge-depth:clamp(56px,6.2vw,104px);
  position:relative!important;
  isolation:isolate!important;
  border-top-color:transparent!important;
  border-bottom-color:transparent!important;
  background:
    linear-gradient(
      180deg,
      var(--semc-tone-top-edge) 0,
      var(--semc-tone-current) var(--semc-tone-edge-depth),
      var(--semc-tone-current) calc(100% - var(--semc-tone-edge-depth)),
      var(--semc-tone-bottom-edge) 100%
    )!important
}

/* Preserve a very light ambient blue accent on the contact-information field,
   but keep the actual edge blend in the same intrinsic background layer. */
body[data-page-id] .page > .semc-toned-section.contact-locations-section{
  background:
    radial-gradient(circle at 92% 12%,rgba(100,166,214,.085),transparent 28rem),
    linear-gradient(
      180deg,
      var(--semc-tone-top-edge) 0,
      var(--semc-tone-current) var(--semc-tone-edge-depth),
      var(--semc-tone-current) calc(100% - var(--semc-tone-edge-depth)),
      var(--semc-tone-bottom-edge) 100%
    )!important
}

@media(max-width:760px){
  body[data-page-id] .page > .semc-toned-section{
    --semc-tone-edge-depth:clamp(44px,9vw,72px)
  }
}

/* New scroll interaction: backgrounds remain perfectly stationary. Only content
   makes one restrained upward settle on its first entrance and is never re-armed. */
@media(prefers-reduced-motion:no-preference){
  .reveal{
    --semc-reveal-y:13px;
    opacity:.94!important;
    transform:translate3d(0,var(--semc-reveal-y),0)!important;
    transition:
      transform .68s cubic-bezier(.22,1,.36,1),
      opacity .42s cubic-bezier(.22,1,.36,1)!important;
    will-change:transform,opacity!important
  }
  
  
  
  
  
}
@media(max-width:980px) and (prefers-reduced-motion:no-preference){
  .reveal{
    --semc-reveal-y:8px;
    opacity:.965!important;
    transition-duration:.58s,.34s!important
  }
}
@media(prefers-reduced-motion:reduce){
  
}

/* ===== SEMC CMS V3.7.4 · zoom-stable navigation / clean module edges / clearer scroll settle ===== */

/* A transparent 1px border still exposes the page/body colour underneath, which
   is why some otherwise mathematically matched section edges showed a grey or
   white hairline. Remove the boundary border itself instead of only clearing its
   colour; each section keeps painting its transition entirely inside its box. */
body[data-page-id] .page > .semc-toned-section{
  border-top:0!important;
  border-bottom:0!important;
  background-clip:border-box!important;
  background-origin:border-box!important
}

/* Keep the contact-page ambient blue light away from the physical top/bottom
   edges. Its earlier top-right radial began at the boundary and could expose a
   rectangular half-edge even though the linear section colours matched. */
body[data-page-id] .page > .semc-toned-section.contact-locations-section{
  background:
    radial-gradient(ellipse 34rem 12rem at 92% 50%,rgba(100,166,214,.075) 0%,rgba(100,166,214,.034) 46%,transparent 76%),
    linear-gradient(
      180deg,
      var(--semc-tone-top-edge) 0,
      var(--semc-tone-current) var(--semc-tone-edge-depth),
      var(--semc-tone-current) calc(100% - var(--semc-tone-edge-depth)),
      var(--semc-tone-bottom-edge) 100%
    )!important
}

/* The achievement module's decorative red atmosphere used to touch the bottom
   clipping edge on the right. Keep the same quiet accent, but bound it well
   inside the section so the shared bottom colour remains uninterrupted. */
body[data-page-id] .page > .semc-toned-section.achievement-showcase::after{
  inset:30% -8% auto 36%!important;
  height:38%!important;
  opacity:.72!important;
  background:radial-gradient(ellipse,rgba(217,56,78,.055),transparent 66%)!important
}

/* Slightly clearer one-shot scroll motion. The background surface never moves;
   only content settles upward once after it is genuinely visible in the viewport. */
@media(prefers-reduced-motion:no-preference){
  .reveal{
    --semc-reveal-y:20px;
    opacity:.88!important;
    transform:translate3d(0,var(--semc-reveal-y),0)!important;
    transition:
      transform .80s cubic-bezier(.22,1,.36,1),
      opacity .52s cubic-bezier(.22,1,.36,1)!important;
    will-change:transform,opacity!important
  }
  
  .reveal.delay1{transition-delay:.06s!important}
  .reveal.delay2{transition-delay:.12s!important}
  .reveal.delay3{transition-delay:.18s!important}
  
}
@media(max-width:980px) and (prefers-reduced-motion:no-preference){
  .reveal{
    --semc-reveal-y:13px;
    opacity:.91!important;
    transition-duration:.72s,.46s!important
  }
}
@media(max-width:700px) and (prefers-reduced-motion:no-preference){
  .reveal{
    --semc-reveal-y:11px;
    opacity:.925!important;
    transition-duration:.66s,.42s!important
  }
}
@media(prefers-reduced-motion:reduce){
  
}


/* ===== SEMC CMS V3.7.5 · refresh-stable layout / bidirectional motion / tuned surfaces ===== */

/* While a true browser reload is settling CMS content, disable scroll anchoring.
   JS restores the exact pre-refresh Y after layout so repeated refreshes cannot
   accumulate a few pixels of upward page drift. */
html.semc-reload-stabilizing,
html.semc-reload-stabilizing body{
  scroll-behavior:auto!important;
  overflow-anchor:none!important
}

/* Keep the already-repaired intrinsic seam system, but give the nearby tones a
   slightly longer, softer return to their own surface colour. */
body[data-page-id] .page > .semc-toned-section{
  --semc-tone-edge-depth:clamp(68px,7vw,116px)
}
@media(max-width:760px){
  body[data-page-id] .page > .semc-toned-section{
    --semc-tone-edge-depth:clamp(48px,10vw,78px)
  }
}

/* Repeated two-way reveal. The sign of --semc-reveal-y is supplied by JS from
   the side the element exited, so upward and downward scrolling feel equally
   responsive without moving any section background. */
@media(prefers-reduced-motion:no-preference){
  .reveal{
    --semc-reveal-y:17px;
    opacity:.91!important;
    transform:translate3d(0,var(--semc-reveal-y),0)!important;
    transition:
      transform .64s cubic-bezier(.22,1,.36,1),
      opacity .40s cubic-bezier(.22,1,.36,1)!important;
    will-change:transform,opacity!important
  }
  .reveal.visible{
    opacity:1!important;
    transform:translate3d(0,0,0)!important
  }
  .reveal.semc-reveal-arming{
    transition:none!important
  }
  .reveal.delay1{transition-delay:.045s!important}
  .reveal.delay2{transition-delay:.09s!important}
  .reveal.delay3{transition-delay:.135s!important}
  .reveal.semc-reveal-done{will-change:auto!important}
}
@media(max-width:980px) and (prefers-reduced-motion:no-preference){
  .reveal{
    --semc-reveal-y:11px;
    opacity:.93!important;
    transition-duration:.56s,.36s!important
  }
}
@media(prefers-reduced-motion:reduce){
  .reveal,.reveal.visible{
    opacity:1!important;
    transform:none!important;
    transition:none!important
  }
}

/* Mobile navigation is left/right anchored, not centered with translateX(-50%).
   Do not let the desktop page-leave transform override that geometry after a
   drawer link is tapped. */
@media(max-width:980px){
  body.semc-page-leaving .site-nav{
    transform:none!important
  }
}


/* ===== SEMC CMS V3.7.6 · touch navigation latency / active-indicator continuity ===== */

/* iPad and other touch-first devices can expose a desktop-width navigation bar.
   Their page handoff now stays native (JS), so do not spend a frame animating the
   outgoing document or the fixed backdrop-filter header while Safari is navigating. */
html.semc-touch-device body.semc-page-leaving main,
html.semc-touch-device body.semc-page-leaving .corp-footer,
html.semc-touch-device body.semc-page-leaving .site-nav{
  opacity:1!important;
  transform:none!important;
  transition:none!important
}

/* Non-collapsed navigation: the hover rail already grows smoothly, but the active
   rail used to be fully painted on the first destination frame. Reveal the final
   few pixels from the same approximate hover length, creating one continuous
   hover -> commit -> active settle without changing the navigation geometry. */
@media(min-width:981px) and (prefers-reduced-motion:no-preference){
  .nav-link.active::before,
  .nav-link.active:hover::before{
    clip-path:inset(0 0 0 0);
    animation:semcNavActiveSettle .44s cubic-bezier(.22,1,.36,1) both!important
  }
  .nav-link.semc-nav-committing::before,
  .nav-link.semc-nav-committing:hover::before{
    width:74%!important;
    opacity:1!important;
    transform:translateX(-50%) scaleX(1)!important;
    transition:
      width .22s cubic-bezier(.22,1,.36,1),
      opacity .16s ease,
      transform .22s cubic-bezier(.22,1,.36,1)!important
  }
  @keyframes semcNavActiveSettle{
    0%{clip-path:inset(0 7% 0 7%)}
    100%{clip-path:inset(0 0 0 0)}
  }
}
@media(prefers-reduced-motion:reduce){
  .nav-link.active::before,
  .nav-link.active:hover::before{animation:none!important;clip-path:none!important}
}


/* ===== SEMC CMS V3.7.7 · no-contract nav commit / paced route handoff / touch compositor relief ===== */

/* 1) Non-collapsed navigation rail: hover -> click grows only forward.
   V3.7.6 used a destination clip-path settle that intentionally shortened the
   active rail before expanding it. Remove that middle contraction completely. */
@media(min-width:981px) and (prefers-reduced-motion:no-preference){
  .nav-link.active::before,
  .nav-link.active:hover::before{
    width:74%!important;
    opacity:1!important;
    transform:translateX(-50%) scaleX(1)!important;
    clip-path:none!important;
    animation:none!important
  }
  .nav-link.semc-nav-committing::before,
  .nav-link.semc-nav-committing:hover::before{
    width:74%!important;
    opacity:1!important;
    transform:translateX(-50%) scaleX(1)!important;
    clip-path:none!important;
    animation:none!important;
    transition:
      width .26s cubic-bezier(.22,1,.36,1),
      opacity .18s ease,
      transform .26s cubic-bezier(.22,1,.36,1)!important
  }
}

/* 2) Desktop route motion: slightly slower than V3.7.6 so the page settle reads
   as one continuous handoff rather than a quick snap. Geometry stays extremely
   small and the fixed glass navigation remains visually stable. */
@media(min-width:981px) and (pointer:fine) and (prefers-reduced-motion:no-preference){
  body.semc-route-prep main,
  body.semc-route-prep .corp-footer{
    opacity:.965!important;
    transform:translate3d(0,8px,0)!important;
    transition:
      opacity .52s cubic-bezier(.22,1,.36,1),
      transform .62s cubic-bezier(.22,1,.36,1)!important
  }
  body.semc-route-prep.semc-route-ready main,
  body.semc-route-prep.semc-route-ready .corp-footer{
    opacity:1!important;
    transform:translate3d(0,0,0)!important
  }
  body.semc-page-leaving main,
  body.semc-page-leaving .corp-footer{
    opacity:.955!important;
    transform:translate3d(0,-4px,0)!important;
    transition:
      opacity .18s cubic-bezier(.4,0,.6,1),
      transform .20s cubic-bezier(.4,0,.6,1)!important
  }
  body.semc-page-leaving .site-nav{
    opacity:.985!important;
    transform:translateX(-50%) translateY(-1px)!important;
    transition:opacity .18s ease,transform .20s cubic-bezier(.4,0,.6,1)!important
  }
}

/* 3) iPad / phone route motion: do NOT animate the huge document surface.
   A single viewport-sized translucent layer fades away on entry and returns on
   exit. Only opacity is animated, which is materially cheaper for Safari than a
   full-page transform/backdrop composition and also gives the homepage a clear
   entry interaction on touch devices. */
@media(prefers-reduced-motion:no-preference){
  html.semc-touch-device body::after{
    content:"";
    position:fixed;
    z-index:980;
    inset:0;
    pointer-events:none;
    background:rgba(236,245,251,.82);
    opacity:0;
    will-change:opacity;
    transform:translateZ(0)
  }
  html.semc-touch-device body.semc-route-prep main,
  html.semc-touch-device body.semc-route-prep .corp-footer,
  html.semc-touch-device body.semc-page-leaving main,
  html.semc-touch-device body.semc-page-leaving .corp-footer{
    opacity:1!important;
    transform:none!important;
    transition:none!important;
    will-change:auto!important
  }
  html.semc-touch-device body.semc-route-prep .site-nav,
  html.semc-touch-device body.semc-page-leaving .site-nav{
    opacity:1!important;
    transition:none!important
  }
  html.semc-touch-device body.semc-route-prep::after{
    opacity:.18;
    transition:none
  }
  html.semc-touch-device body.semc-route-prep.semc-route-ready::after{
    opacity:0;
    transition:opacity .66s cubic-bezier(.22,1,.36,1)
  }
  html.semc-touch-device body.semc-page-leaving::after,
  html.semc-touch-device body.semc-route-prep.semc-route-ready.semc-page-leaving::after{
    opacity:.16;
    transition:opacity .24s cubic-bezier(.4,0,.6,1)
  }
}

/* The phone drawer already owns a 300ms opacity close. Keep it above the route
   veil during that close so tapping a destination feels continuous, not clipped. */
@media(max-width:980px) and (prefers-reduced-motion:no-preference){
  body > .nav-links.mobile-nav-panel{z-index:999!important}
}

@media(prefers-reduced-motion:reduce){
  
  .nav-link.active::before,
  .nav-link.active:hover::before,
  .nav-link.semc-nav-committing::before,
  .nav-link.semc-nav-committing:hover::before{animation:none!important;clip-path:none!important}
}


/* ===== SEMC CMS V3.7.8 · iPad nav geometry lock / calmer touch motion ===== */

/* 1) iPad can expose a desktop-width (>980px) navigation while still being a
   touch device. Earlier touch leave rules cleared transform completely; on this
   centered desktop geometry that removes translateX(-50%) for one frame and
   visibly throws the entire glass bar to the right. Keep the two geometries
   explicit: centered on desktop-width touch, untransformed only for the drawer
   layout at <=980px. */
@media(min-width:981px){
  html.semc-touch-device .site-nav,
  html.semc-touch-device body.semc-route-prep .site-nav,
  html.semc-touch-device body.semc-page-leaving .site-nav{
    left:50%!important;
    right:auto!important;
    transform:translateX(-50%)!important
  }
}
@media(max-width:980px){
  html.semc-touch-device body.semc-route-prep .site-nav,
  html.semc-touch-device body.semc-page-leaving .site-nav{
    transform:none!important
  }
}

/* 2) Touch route veil: keep it above the glass navigation/drawer so Safari does
   not have to re-rasterize backdrop-filter surfaces underneath a changing veil.
   The pseudo layer stays hidden/inert between transitions; JS releases route-prep
   after entry so normal scrolling carries no permanent full-screen GPU layer. */
@media(prefers-reduced-motion:no-preference){
  html.semc-touch-device body::after{
    content:""!important;
    position:fixed!important;
    inset:0!important;
    pointer-events:none!important;
    z-index:1400!important;
    background:#eef5fa!important;
    opacity:0!important;
    visibility:hidden!important;
    transform:none!important;
    will-change:auto!important;
    transition:none!important
  }
  html.semc-touch-device body.semc-route-prep::after,
  html.semc-touch-device body.semc-page-leaving::after{
    visibility:visible!important;
    will-change:opacity!important
  }
  html.semc-touch-device body.semc-route-prep::after{
    opacity:.12!important;
    transition:none!important
  }
  html.semc-touch-device body.semc-route-prep.semc-route-ready::after{
    opacity:0!important;
    transition:opacity .82s cubic-bezier(.16,1,.3,1)!important
  }
  html.semc-touch-device body.semc-page-leaving::after,
  html.semc-touch-device body.semc-route-prep.semc-route-ready.semc-page-leaving::after{
    opacity:.13!important;
    transition:opacity .34s cubic-bezier(.32,0,.2,1)!important
  }
}

/* 3) Touch scroll reveal: a smaller 9px path plus a longer settle removes the
   quick snap without asking Safari to animate large surfaces. Do not pre-promote
   every reveal node on the page; only the currently animating nodes receive a
   temporary will-change hint from JS. */
@media(prefers-reduced-motion:no-preference){
  html.semc-touch-device .reveal{
    opacity:.94!important;
    will-change:auto!important;
    transition:
      transform .76s cubic-bezier(.16,1,.3,1),
      opacity .50s cubic-bezier(.22,1,.36,1)!important
  }
  html.semc-touch-device .reveal.semc-reveal-hot{
    will-change:transform,opacity!important
  }
  html.semc-touch-device .reveal.semc-reveal-arming{
    transition:none!important;
    will-change:auto!important
  }
  html.semc-touch-device .reveal.delay1{transition-delay:.04s!important}
  html.semc-touch-device .reveal.delay2{transition-delay:.08s!important}
  html.semc-touch-device .reveal.delay3{transition-delay:.12s!important}
}

@media(prefers-reduced-motion:reduce){
  html.semc-touch-device body::after{content:none!important}
}


/* ===== SEMC CMS V3.7.9 · immediate route response / slower touch settle / homepage cue ===== */

/* Click response is now handled by the short JS handoff. Keep the destination
   motion visually unhurried without re-introducing a long pre-navigation wait. */
@media(prefers-reduced-motion:no-preference){
  html.semc-touch-device body.semc-route-prep.semc-route-ready::after{
    transition:opacity 1.04s cubic-bezier(.16,1,.3,1)!important
  }

  /* Slower, lower-contrast touch reveal: less visual snap, same small geometry. */
  html.semc-touch-device .reveal{
    opacity:.955!important;
    transition:
      transform .92s cubic-bezier(.16,1,.3,1),
      opacity .64s cubic-bezier(.22,1,.36,1)!important
  }
  html.semc-touch-device .reveal.delay1{transition-delay:.045s!important}
  html.semc-touch-device .reveal.delay2{transition-delay:.09s!important}
  html.semc-touch-device .reveal.delay3{transition-delay:.135s!important}

  /* The homepage previously relied mainly on the route veil, so its first view
     could feel static on iPad/phone. Animate only the lightweight hero content
     container after route-ready; the hero image and full document remain fixed. */
  html.semc-touch-device body[data-page-id="home"].semc-route-ready .hero-content{
    animation:semcHomeTouchEntry 1.06s cubic-bezier(.16,1,.3,1) both!important
  }
  @keyframes semcHomeTouchEntry{
    0%{opacity:.94;transform:translate3d(0,7px,0)}
    100%{opacity:1;transform:translate3d(0,0,0)}
  }
}

@media(prefers-reduced-motion:reduce){
  html.semc-touch-device body[data-page-id="home"] .hero-content{animation:none!important}
}

/* ===== SEMC CMS V3.7.9.1 · layered cinematic scroll scenes ===== */

/* The V3.7.9.1 motion layer deliberately uses the independent translate/scale
   properties. Existing card/image hover transforms therefore remain intact, and
   section/background geometry is never moved. */
@media(prefers-reduced-motion:no-preference){
  .semc-scroll-motion{
    --semc-reveal-y:20px;
    --semc-motion-delay:0ms;
    opacity:.78!important;
    translate:0 var(--semc-reveal-y)!important;
    scale:1!important;
    transform:none!important;
    transition-property:opacity,translate,scale!important;
    transition-duration:.72s,.96s,1.02s!important;
    transition-timing-function:cubic-bezier(.22,1,.36,1),cubic-bezier(.16,1,.3,1),cubic-bezier(.16,1,.3,1)!important;
    transition-delay:var(--semc-motion-delay)!important;
    will-change:auto!important
  }
  .semc-scroll-motion[data-semc-motion="card"]{
    opacity:.74!important;
    scale:.994!important;
    transition-duration:.70s,.94s,1.02s!important
  }
  .semc-scroll-motion[data-semc-motion="media"]{
    opacity:.80!important;
    scale:.986!important;
    transition-duration:.78s,1.02s,1.12s!important
  }
  .semc-scroll-motion[data-semc-motion="micro"]{
    opacity:.80!important;
    scale:.998!important;
    transition-duration:.62s,.82s,.86s!important
  }
  .semc-scroll-motion.visible{
    opacity:1!important;
    translate:0 0!important;
    scale:1!important
  }
  .semc-scroll-motion.semc-reveal-arming{
    transition:none!important;
    will-change:auto!important
  }
  .semc-scroll-motion.semc-reveal-hot{
    will-change:opacity,translate,scale!important
  }
  .semc-scroll-motion.semc-reveal-done{will-change:auto!important}

  /* Copy wrappers gain a second, very small internal stagger. This is what makes
     a section read as kicker -> title -> explanation rather than one flat block. */
  .semc-motion-copy > .eyebrow,
  .semc-motion-copy > .section-title,
  .semc-motion-copy > .section-lead,
  .semc-motion-copy > h1,
  .semc-motion-copy > h2,
  .semc-motion-copy > h3,
  .semc-motion-copy > p{
    opacity:.86;
    translate:0 7px;
    transition:opacity .62s cubic-bezier(.22,1,.36,1),translate .82s cubic-bezier(.16,1,.3,1)
  }
  .semc-motion-copy.visible > .eyebrow,
  .semc-motion-copy.visible > .section-title,
  .semc-motion-copy.visible > .section-lead,
  .semc-motion-copy.visible > h1,
  .semc-motion-copy.visible > h2,
  .semc-motion-copy.visible > h3,
  .semc-motion-copy.visible > p{opacity:1;translate:0 0}
  .semc-motion-copy > .section-title,
  .semc-motion-copy > h1,
  .semc-motion-copy > h2,
  .semc-motion-copy > h3{transition-delay:.055s}
  .semc-motion-copy > .section-lead,
  .semc-motion-copy > p{transition-delay:.10s}

  /* Desktop-only scroll-linked media drift. JS activates only media currently
     near the viewport, so this remains a tiny transform workload rather than a
     full-page parallax layer. */
  @media(min-width:981px) and (pointer:fine){
    .semc-motion-media img{
      --semc-media-drift:0px;
      translate:0 var(--semc-media-drift);
      scale:1.018;
      transition:translate .16s linear,scale 1.1s cubic-bezier(.16,1,.3,1)
    }
    .semc-motion-media.semc-parallax-active img{will-change:translate}
    .semc-motion-media:not(.semc-parallax-active) img{will-change:auto}
  }

  /* Public-page intro choreography. The hero is not part of the repeated scroll
     observer: it receives one composed entrance after CMS layout is ready. */
  body:not([data-page-id="home"]) .page-hero .eyebrow,
  body:not([data-page-id="home"]) .page-hero .section-title,
  body:not([data-page-id="home"]) .page-hero .section-lead,
  body:not([data-page-id="home"]) .page-hero .page-hero-art{
    opacity:0!important;
    translate:0 18px!important;
    scale:1!important;
    transition:opacity .72s cubic-bezier(.22,1,.36,1),translate .96s cubic-bezier(.16,1,.3,1),scale 1.08s cubic-bezier(.16,1,.3,1)!important
  }
  body:not([data-page-id="home"]).semc-route-ready .page-hero .eyebrow,
  body:not([data-page-id="home"]).semc-route-ready .page-hero .section-title,
  body:not([data-page-id="home"]).semc-route-ready .page-hero .section-lead,
  body:not([data-page-id="home"]).semc-route-ready .page-hero .page-hero-art{
    opacity:1!important;
    translate:0 0!important;
    scale:1!important
  }
  body:not([data-page-id="home"]) .page-hero .section-title{transition-delay:.07s!important}
  body:not([data-page-id="home"]) .page-hero .section-lead{transition-delay:.14s!important}
  body:not([data-page-id="home"]) .page-hero .page-hero-art{translate:18px 8px!important;scale:.975!important;transition-delay:.08s!important}
  body:not([data-page-id="home"]).semc-route-ready .page-hero .page-hero-art{translate:0 0!important;scale:1!important}

  /* Homepage first frame: layer the copy instead of moving the whole hero. */
  body[data-page-id="home"] .hero-kicker,
  body[data-page-id="home"] .hero-copy h1,
  body[data-page-id="home"] .hero-copy > p,
  body[data-page-id="home"] .hero-actions{
    opacity:0!important;
    translate:0 18px!important;
    transition:opacity .72s cubic-bezier(.22,1,.36,1),translate 1.02s cubic-bezier(.16,1,.3,1)!important
  }
  body[data-page-id="home"].semc-route-ready .hero-kicker,
  body[data-page-id="home"].semc-route-ready .hero-copy h1,
  body[data-page-id="home"].semc-route-ready .hero-copy > p,
  body[data-page-id="home"].semc-route-ready .hero-actions{opacity:1!important;translate:0 0!important}
  body[data-page-id="home"] .hero-copy h1{transition-delay:.07s!important}
  body[data-page-id="home"] .hero-copy > p{transition-delay:.14s!important}
  body[data-page-id="home"] .hero-actions{transition-delay:.21s!important}
  body[data-page-id="home"] .hero-media{scale:1.018;transition:scale 1.25s cubic-bezier(.16,1,.3,1)}
  body[data-page-id="home"].semc-route-ready .hero-media{scale:1}

  /* Detail hero is injected by the CMS, so animate its semantic pieces rather
     than relying on static markup classes. */
  body[data-page-id="detail"] .detail-hero-copy > *,
  body[data-page-id="detail"] .detail-hero-media{
    opacity:0!important;
    translate:0 18px!important;
    transition:opacity .70s cubic-bezier(.22,1,.36,1),translate .98s cubic-bezier(.16,1,.3,1),scale 1.08s cubic-bezier(.16,1,.3,1)!important
  }
  body[data-page-id="detail"].semc-route-ready .detail-hero-copy > *,
  body[data-page-id="detail"].semc-route-ready .detail-hero-media{opacity:1!important;translate:0 0!important;scale:1!important}
  body[data-page-id="detail"] .detail-hero-copy > :nth-child(2){transition-delay:.055s!important}
  body[data-page-id="detail"] .detail-hero-copy > :nth-child(3){transition-delay:.11s!important}
  body[data-page-id="detail"] .detail-hero-copy > :nth-child(4){transition-delay:.165s!important}
  body[data-page-id="detail"] .detail-hero-media{scale:.985!important;transition-delay:.10s!important}

  /* V3.7.9 used a parent hero-content keyframe on touch. The new child-level
     choreography replaces it so there is no double animation. */
  html.semc-touch-device body[data-page-id="home"].semc-route-ready .hero-content{animation:none!important}

  /* iPad can be wider than the mobile breakpoint, so its touch-specific override
     must live outside max-width media queries. This also supersedes the older
     V3.7.8/V3.7.9 transform-based reveal shorthand. */
  html.semc-touch-device .semc-scroll-motion{
    opacity:.82!important;
    transition:opacity .72s cubic-bezier(.22,1,.36,1),translate 1.02s cubic-bezier(.16,1,.3,1),scale 1.08s cubic-bezier(.16,1,.3,1)!important
  }
  html.semc-touch-device .semc-scroll-motion[data-semc-motion="media"]{opacity:.85!important;scale:.990!important}
  html.semc-touch-device .semc-scroll-motion[data-semc-motion="card"]{opacity:.80!important;scale:.996!important}
}

/* Touch tuning: same rhythm, smaller geometry, no continuous parallax. */
@media(max-width:980px) and (prefers-reduced-motion:no-preference){
  html.semc-touch-device .semc-scroll-motion{
    opacity:.83!important;
    transition-duration:.68s,.98s,1.04s!important
  }
  html.semc-touch-device .semc-scroll-motion[data-semc-motion="media"]{opacity:.86!important;scale:.991!important}
  html.semc-touch-device .semc-scroll-motion[data-semc-motion="card"]{opacity:.81!important;scale:.997!important}
  .semc-motion-copy > .eyebrow,.semc-motion-copy > .section-title,.semc-motion-copy > .section-lead,.semc-motion-copy > h1,.semc-motion-copy > h2,.semc-motion-copy > h3,.semc-motion-copy > p{translate:0 5px}
  body:not([data-page-id="home"]) .page-hero .eyebrow,
  body:not([data-page-id="home"]) .page-hero .section-title,
  body:not([data-page-id="home"]) .page-hero .section-lead{translate:0 13px!important}
  body:not([data-page-id="home"]) .page-hero .page-hero-art{translate:10px 5px!important;scale:.986!important}
  body[data-page-id="home"] .hero-kicker,
  body[data-page-id="home"] .hero-copy h1,
  body[data-page-id="home"] .hero-copy > p,
  body[data-page-id="home"] .hero-actions{translate:0 13px!important}
  body[data-page-id="home"] .hero-media{scale:1!important;transition:none!important}
}

@media(max-width:700px) and (prefers-reduced-motion:no-preference){
  html.semc-touch-device .semc-scroll-motion{opacity:.86!important;transition-duration:.64s,.92s,.98s!important}
  html.semc-touch-device .semc-scroll-motion[data-semc-motion="media"]{opacity:.88!important}
  body:not([data-page-id="home"]) .page-hero .eyebrow,
  body:not([data-page-id="home"]) .page-hero .section-title,
  body:not([data-page-id="home"]) .page-hero .section-lead,
  body[data-page-id="home"] .hero-kicker,
  body[data-page-id="home"] .hero-copy h1,
  body[data-page-id="home"] .hero-copy > p,
  body[data-page-id="home"] .hero-actions{translate:0 11px!important}
}

@media(prefers-reduced-motion:reduce){
  .semc-scroll-motion,
  .page-hero .eyebrow,.page-hero .section-title,.page-hero .section-lead,.page-hero .page-hero-art,
  body[data-page-id="home"] .hero-kicker,body[data-page-id="home"] .hero-copy h1,body[data-page-id="home"] .hero-copy > p,body[data-page-id="home"] .hero-actions,
  body[data-page-id="detail"] .detail-hero-copy > *,body[data-page-id="detail"] .detail-hero-media{
    opacity:1!important;translate:none!important;scale:1!important;transition:none!important;animation:none!important
  }
}



/* ===== SEMC CMS V3.8 · hover continuity / compact equipment / multi-step process ===== */

/* V3.7.9.1 moved scroll motion to the independent translate/scale properties,
   but its neutral transform reset was intentionally !important. Restore the
   component-level hover transforms with higher-specificity rules so the reveal
   engine and pointer interaction can coexist instead of snapping in one frame. */
@media (hover:hover) and (pointer:fine){
  .semc-scroll-motion.service-card,
  .semc-scroll-motion.stat-item,
  .semc-scroll-motion.info-card,
  .semc-scroll-motion.feature-item,
  .semc-scroll-motion.list-row,
  .semc-scroll-motion.equipment-card,
  .semc-scroll-motion.content-story,
  .semc-scroll-motion.visual-content-card,
  .semc-scroll-motion.home-proof-item,
  .semc-scroll-motion.step,
  .semc-scroll-motion.contact-location-card,
  .semc-scroll-motion.v36-equipment-param,
  .semc-scroll-motion.v36-certificate-card,
  .semc-scroll-motion.chip{
    transition-property:opacity,translate,scale,transform,box-shadow,border-color,background!important
  }
  .semc-scroll-motion.semc-reveal-done{transition-delay:0ms!important}
  .semc-scroll-motion.service-card:hover:where(:not(.semc-touch-feedback)){transform:translateY(-7px)!important}
  .semc-scroll-motion.info-card:hover:where(:not(.semc-touch-feedback)),
  .semc-scroll-motion.feature-item:hover:where(:not(.semc-touch-feedback)),
  .semc-scroll-motion.list-row:hover:where(:not(.semc-touch-feedback)),
  .semc-scroll-motion.v36-equipment-param:hover:where(:not(.semc-touch-feedback)){transform:translateY(-4px)!important}
  .semc-scroll-motion.equipment-card:hover:where(:not(.semc-touch-feedback)){transform:translateY(-5px)!important}
  .semc-scroll-motion.content-story:hover:where(:not(.semc-touch-feedback)){transform:translateY(-3px)!important}
  .semc-scroll-motion.visual-content-card:hover:where(:not(.semc-touch-feedback)){transform:translateY(-5px)!important}
  .semc-scroll-motion.home-proof-item:hover:where(:not(.semc-touch-feedback)){transform:translateY(-6px)!important}
  .semc-scroll-motion.stat-item:hover:where(:not(.semc-touch-feedback)){transform:translateY(-5px)!important}
  .semc-scroll-motion.chip:hover:where(:not(.semc-touch-feedback)){transform:translateY(-3px)!important}

  /* Process, contact and image-led modules get the same restrained tactile lift. */
  .semc-scroll-motion.step,
  .semc-scroll-motion.contact-location-card,
  .semc-scroll-motion.media-card,
  .semc-scroll-motion.photo,
  .semc-scroll-motion.image-banner,
  .cms-adaptive-gallery figure.semc-scroll-motion,
  .semc-scroll-motion.v36-equipment-carousel,
  .semc-scroll-motion.v365-standard-documents,
  .detail-hero-media{
    transition-property:opacity,translate,scale,transform,box-shadow,border-color!important;
  }
  .semc-scroll-motion.step:hover:where(:not(.semc-touch-feedback)){transform:translateY(-4px)!important;box-shadow:0 18px 42px rgba(26,61,87,.08);border-color:rgba(57,126,180,.16)}
  .semc-scroll-motion.contact-location-card:hover:where(:not(.semc-touch-feedback)){transform:translateY(-4px)!important}
  .semc-scroll-motion.media-card:hover:where(:not(.semc-touch-feedback)),
  .semc-scroll-motion.photo:hover:where(:not(.semc-touch-feedback)),
  .semc-scroll-motion.image-banner:hover:where(:not(.semc-touch-feedback)){transform:translateY(-3px)!important}
  .cms-adaptive-gallery figure.semc-scroll-motion:hover:where(:not(.semc-touch-feedback)){transform:translateY(-2px)!important}
  .semc-scroll-motion.v36-equipment-carousel:hover:where(:not(.semc-touch-feedback)){transform:translateY(-3px)!important}
  .semc-scroll-motion.v365-standard-documents:hover:where(:not(.semc-touch-feedback)){transform:translateY(-2px)!important}

  /* The desktop drift rule used to replace each image's transition list, which
     made hover zoom jump immediately. Include transform/filter explicitly so
     mouse enter AND mouse leave both interpolate smoothly. */
  .semc-motion-media img{
    transition:translate .16s linear,scale 1.1s cubic-bezier(.16,1,.3,1),transform .78s cubic-bezier(.16,1,.3,1),filter .58s cubic-bezier(.22,1,.36,1)!important
  }

  .media-card,
  .gallery-2 .photo,
  .image-banner,
  .cms-adaptive-gallery figure,
  .detail-hero-media,
  .v36-equipment-carousel,
  .v36-certificate-card,
  .v36-honor-paper,
  .v365-standard-paper{
    transition:transform .46s cubic-bezier(.22,1,.36,1),box-shadow .46s cubic-bezier(.22,1,.36,1),border-color .36s ease
  }
  .media-card img,
  .gallery-2 .photo img,
  .image-banner img,
  .cms-adaptive-gallery figure img,
  .detail-hero-media img,
  .v36-equipment-slide img,
  .v36-certificate-paper img,
  .v36-honor-paper img,
  .v365-standard-paper img{
    transition:transform .78s cubic-bezier(.16,1,.3,1),filter .58s cubic-bezier(.22,1,.36,1)!important
  }
  .media-card:hover:where(:not(.semc-touch-feedback)) img{transform:scale(1.022)!important;filter:saturate(1.025) contrast(1.01)}
  .gallery-2 .photo:hover:where(:not(.semc-touch-feedback)) img{transform:scale(1.026)!important;filter:saturate(1.025)}
  .image-banner:hover:where(:not(.semc-touch-feedback)) img{transform:scale(1.018)!important;filter:saturate(1.02)}
  .cms-adaptive-gallery figure:hover img{transform:scale(1.024)!important;filter:saturate(1.03)}
  .detail-hero-media:hover{transform:translateY(-3px)!important;box-shadow:0 28px 64px rgba(24,58,82,.14)}
  .detail-hero-media:hover img{transform:scale(1.018)!important;filter:saturate(1.02)}
  .v36-equipment-carousel:hover:where(:not(.semc-touch-feedback)){box-shadow:0 28px 64px rgba(27,61,86,.16)}
  .v36-equipment-carousel:hover:where(:not(.semc-touch-feedback)) .v36-equipment-slide img{transform:scale(1.018)!important;filter:saturate(1.02)}
  .v36-certificate-card:hover:where(:not(.semc-touch-feedback)){transform:translateY(-4px)!important;box-shadow:0 24px 56px rgba(25,58,80,.12)}
  .v36-certificate-card:hover:where(:not(.semc-touch-feedback)) .v36-certificate-paper img{transform:scale(1.012)!important}
  .v36-equipment-param:hover:where(:not(.semc-touch-feedback)){border-color:rgba(57,126,180,.16);box-shadow:0 18px 42px rgba(26,61,87,.08)}
  .v36-honor-paper:hover:where(:not(.semc-touch-feedback)),.v365-standard-paper:hover:where(:not(.semc-touch-feedback)){transform:translateY(-3px)}
  .v36-honor-paper:hover:where(:not(.semc-touch-feedback)) img,.v365-standard-paper:hover:where(:not(.semc-touch-feedback)) img{transform:scale(1.012)!important}

  /* Collection/list cards and arrows now animate even while the card itself is a
     scroll-motion node. This covers news/cases, repair visual lists and industries. */
  .list-row .go{transition:transform .34s cubic-bezier(.22,1,.36,1),background .34s ease}
  .list-row:hover:where(:not(.semc-touch-feedback)) .go{transform:translateX(4px);background:#d7e9f6}
  .content-story,.visual-content-card{transition:transform .42s cubic-bezier(.22,1,.36,1),box-shadow .42s cubic-bezier(.22,1,.36,1),border-color .36s ease}
  .content-story-media img,.visual-content-card-media img{transition:transform .76s cubic-bezier(.16,1,.3,1),filter .58s cubic-bezier(.22,1,.36,1)!important}
  .content-story:hover:where(:not(.semc-touch-feedback)) .content-story-media img{transform:scale(1.028)!important;filter:saturate(1.02)}
  .visual-content-card:hover:where(:not(.semc-touch-feedback)) .visual-content-card-media img{transform:scale(1.032)!important;filter:saturate(1.025)}

  /* Equipment grid: keep the scroll-linked drift, but give hover zoom a smooth
     transform channel instead of a one-frame jump. */
  .equipment-card img{transition:translate .16s linear,scale 1.1s cubic-bezier(.16,1,.3,1),transform .82s cubic-bezier(.16,1,.3,1),filter .58s cubic-bezier(.22,1,.36,1)!important}
  .equipment-card:hover:where(:not(.semc-touch-feedback)) img{transform:scale(1.026)!important;filter:saturate(1.03) contrast(1.01)}
}

@media(min-width:981px) and (hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){
  .semc-motion-media img{
    transition:translate .16s linear,scale 1.1s cubic-bezier(.16,1,.3,1),transform .78s cubic-bezier(.16,1,.3,1),filter .58s cubic-bezier(.22,1,.36,1)!important
  }
}

/* The four/five-step split is replaced by one flexible 2–12-step layout.
   Desktop never exceeds six columns; 7–12 steps wrap into a second row. */
.cms-dynamic-process-wrap .cms-process-grid{
  display:flex!important;
  flex-wrap:wrap;
  justify-content:center;
  gap:14px!important
}
.cms-dynamic-process-wrap .cms-process-grid>.step{
  min-width:0;
  min-height:188px;
  transition:transform .42s cubic-bezier(.22,1,.36,1),box-shadow .42s cubic-bezier(.22,1,.36,1),border-color .36s ease,background .36s ease
}
.cms-dynamic-process-wrap .cms-process-grid[data-count="2"]>.step{flex:0 0 calc((100% - 14px)/2)}
.cms-dynamic-process-wrap .cms-process-grid[data-count="3"]>.step{flex:0 0 calc((100% - 28px)/3)}
.cms-dynamic-process-wrap .cms-process-grid[data-count="4"]>.step{flex:0 0 calc((100% - 42px)/4)}
.cms-dynamic-process-wrap .cms-process-grid[data-count="5"]>.step{flex:0 0 calc((100% - 56px)/5)}
.cms-dynamic-process-wrap .cms-process-grid[data-count="6"]>.step,
.cms-dynamic-process-wrap .cms-process-grid[data-count="7"]>.step,
.cms-dynamic-process-wrap .cms-process-grid[data-count="8"]>.step,
.cms-dynamic-process-wrap .cms-process-grid[data-count="9"]>.step,
.cms-dynamic-process-wrap .cms-process-grid[data-count="10"]>.step,
.cms-dynamic-process-wrap .cms-process-grid[data-count="11"]>.step,
.cms-dynamic-process-wrap .cms-process-grid[data-count="12"]>.step{flex:0 0 calc((100% - 70px)/6)}
@media(max-width:1180px){
  .cms-dynamic-process-wrap .cms-process-grid>.step{flex:0 0 calc((100% - 14px)/2)!important}
}
@media(max-width:700px){
  .cms-dynamic-process-wrap .cms-process-grid{gap:11px!important}
  .cms-dynamic-process-wrap .cms-process-grid>.step{flex:0 0 100%!important;min-height:0}
}

/* Multi-device equipment matrix: reduce vertical mass without narrowing the
   content column. The cards stay distributed across the full container, so the
   smaller images do not bunch up in the center and leave oversized side gutters. */
@media(min-width:981px){
  .equipment-grid{gap:22px 24px!important;margin-top:36px!important}
  .equipment-card.large,
  .equipment-card.small{
    aspect-ratio:auto!important;
    height:clamp(330px,24vw,430px)!important
  }
  .cms-dynamic-equipment{padding-top:88px!important;padding-bottom:88px!important}
}
@media(min-width:981px) and (max-width:1280px){
  .equipment-card.large,.equipment-card.small{height:clamp(290px,27vw,350px)!important}
}


/* ===== SEMC CMS V3.8.1 · navigation continuity / preview-safe motion / process row connectors ===== */

/* Route-click header continuity. Freeze the outgoing bar at the exact pixel top
   recorded by JS, then carry that top into the first destination paint. Releasing
   the arrival class returns to the normal top/scrolled geometry through the nav's
   existing easing instead of a one-frame vertical reset. */
body.semc-nav-freeze .site-nav{
  top:var(--semc-nav-freeze-top,8px)!important
}
html.semc-nav-arrival .site-nav{
  top:var(--semc-nav-arrival-top,8px)!important
}
@media(min-width:981px){
  body.semc-nav-freeze.semc-page-leaving .site-nav{
    transform:translateX(-50%)!important;
    transition:opacity .16s ease,background .35s var(--ease),box-shadow .35s var(--ease)!important
  }
}
@media(max-width:980px){
  body.semc-nav-freeze.semc-page-leaving .site-nav{
    transform:none!important;
    transition:opacity .16s ease,background .35s var(--ease),box-shadow .35s var(--ease)!important
  }
}

/* iPad desktop-width navigation indicator. The outgoing page holds a stable
   committed scale during the immediate handoff; the destination starts at the
   same scale and transitions transform-only to the final rail. No width animation
   is cut off by navigation, so Safari produces a smooth run of intermediate frames. */
@media(min-width:981px) and (prefers-reduced-motion:no-preference){
  html.semc-touch-device body.semc-touch-nav-committing .nav-link.semc-nav-committing::before,
  html.semc-touch-device body.semc-touch-nav-committing .nav-link.semc-nav-committing:hover::before{
    width:74%!important;
    opacity:1!important;
    transform:translateX(-50%) scaleX(.86)!important;
    transition:none!important;
    animation:none!important;
    clip-path:none!important
  }
  html.semc-touch-device body.semc-touch-nav-committing .nav-link.active:not(.semc-nav-committing)::before{
    opacity:0!important;
    transition:none!important
  }
  html.semc-nav-arrival-touch .nav-link.active::before,
  html.semc-nav-arrival-touch .nav-link.active:hover::before{
    width:74%!important;
    opacity:1!important;
    transform:translateX(-50%) scaleX(.86)!important;
    transform-origin:center!important;
    transition:transform .52s cubic-bezier(.16,1,.3,1),opacity .24s ease!important;
    animation:none!important;
    clip-path:none!important
  }
  html.semc-nav-arrival-touch.semc-nav-arrival-touch-run .nav-link.active::before,
  html.semc-nav-arrival-touch.semc-nav-arrival-touch-run .nav-link.active:hover::before{
    transform:translateX(-50%) scaleX(1)!important
  }
}

/* Multi-step process: the old single container line only existed across row one.
   Draw connectors in the physical gap after each card instead. Wrapping therefore
   creates the same connector on row two automatically, while row breaks and the
   final card are explicitly terminated. */
.cms-dynamic-process-wrap .cms-process-grid::before{
  display:none!important
}
.cms-dynamic-process-wrap .cms-process-grid>.step::after{
  content:"";
  position:absolute;
  z-index:0;
  top:17px;
  left:100%;
  width:14px;
  height:1px;
  background:linear-gradient(90deg,rgba(47,116,181,.48),rgba(47,116,181,.18));
  pointer-events:none
}
.cms-dynamic-process-wrap .cms-process-grid>.step:last-child::after{display:none}
@media(hover:hover) and (pointer:fine){
  .cms-dynamic-process-wrap .cms-process-grid>.step:hover:where(:not(.semc-touch-feedback))::after{transform:translateY(4px)}
}
@media(min-width:1181px){
  .cms-dynamic-process-wrap .cms-process-grid[data-count="7"]>.step:nth-child(6)::after,
  .cms-dynamic-process-wrap .cms-process-grid[data-count="8"]>.step:nth-child(6)::after,
  .cms-dynamic-process-wrap .cms-process-grid[data-count="9"]>.step:nth-child(6)::after,
  .cms-dynamic-process-wrap .cms-process-grid[data-count="10"]>.step:nth-child(6)::after,
  .cms-dynamic-process-wrap .cms-process-grid[data-count="11"]>.step:nth-child(6)::after,
  .cms-dynamic-process-wrap .cms-process-grid[data-count="12"]>.step:nth-child(6)::after{display:none}
}
@media(min-width:701px) and (max-width:1180px){
  .cms-dynamic-process-wrap .cms-process-grid>.step:nth-child(even)::after{display:none}
}
@media(max-width:700px){
  .cms-dynamic-process-wrap .cms-process-grid>.step::after{display:none!important}
}


/* ===== SEMC CMS V3.8.2 · hover continuity / true-color media / iPad indicator settle ===== */

/* The scroll scene owns the CSS transform property for compatibility with older
   modules. Pointer hover now uses the independent translate/scale channels after
   reveal settles. This avoids a transform-channel handoff that WebKit/Chromium can
   render as one-frame enlarge/shrink, especially on process cards and list cards. */
@media (hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){
  .semc-scroll-motion.semc-reveal-done{
    transition-delay:0ms!important
  }
  .semc-scroll-motion.semc-reveal-done.service-card,
  .semc-scroll-motion.semc-reveal-done.stat-item,
  .semc-scroll-motion.semc-reveal-done.info-card,
  .semc-scroll-motion.semc-reveal-done.feature-item,
  .semc-scroll-motion.semc-reveal-done.list-row,
  .semc-scroll-motion.semc-reveal-done.equipment-card,
  .semc-scroll-motion.semc-reveal-done.content-story,
  .semc-scroll-motion.semc-reveal-done.visual-content-card,
  .semc-scroll-motion.semc-reveal-done.home-proof-item,
  .semc-scroll-motion.semc-reveal-done.step,
  .semc-scroll-motion.semc-reveal-done.contact-location-card,
  .semc-scroll-motion.semc-reveal-done.v36-equipment-param,
  .semc-scroll-motion.semc-reveal-done.v36-certificate-card,
  .semc-scroll-motion.semc-reveal-done.chip,
  .semc-scroll-motion.semc-reveal-done.media-card,
  .semc-scroll-motion.semc-reveal-done.photo,
  .semc-scroll-motion.semc-reveal-done.image-banner,
  .cms-adaptive-gallery figure.semc-scroll-motion.semc-reveal-done,
  .semc-scroll-motion.semc-reveal-done.v36-equipment-carousel,
  .semc-scroll-motion.semc-reveal-done.v365-standard-documents{
    transform:none!important;
    transition-property:opacity,translate,scale,box-shadow,border-color,background!important;
    transition-duration:.36s,.42s,.46s,.42s,.34s,.34s!important;
    transition-timing-function:cubic-bezier(.22,1,.36,1),cubic-bezier(.22,1,.36,1),cubic-bezier(.16,1,.3,1),cubic-bezier(.22,1,.36,1),ease,ease!important
  }
  .semc-scroll-motion.semc-reveal-done.service-card:hover:where(:not(.semc-touch-feedback)){translate:0 -7px!important;scale:1.004!important}
  .semc-scroll-motion.semc-reveal-done.stat-item:hover:where(:not(.semc-touch-feedback)){translate:0 -5px!important;scale:1.003!important}
  .semc-scroll-motion.semc-reveal-done.info-card:hover:where(:not(.semc-touch-feedback)),
  .semc-scroll-motion.semc-reveal-done.feature-item:hover:where(:not(.semc-touch-feedback)),
  .semc-scroll-motion.semc-reveal-done.list-row:hover:where(:not(.semc-touch-feedback)),
  .semc-scroll-motion.semc-reveal-done.v36-equipment-param:hover:where(:not(.semc-touch-feedback)){translate:0 -4px!important;scale:1.002!important}
  .semc-scroll-motion.semc-reveal-done.equipment-card:hover:where(:not(.semc-touch-feedback)){translate:0 -5px!important;scale:1.002!important}
  .semc-scroll-motion.semc-reveal-done.content-story:hover:where(:not(.semc-touch-feedback)){translate:0 -3px!important;scale:1.0015!important}
  .semc-scroll-motion.semc-reveal-done.visual-content-card:hover:where(:not(.semc-touch-feedback)){translate:0 -5px!important;scale:1.002!important}
  .semc-scroll-motion.semc-reveal-done.home-proof-item:hover:where(:not(.semc-touch-feedback)){translate:0 -6px!important;scale:1.002!important}
  .semc-scroll-motion.semc-reveal-done.step:hover:where(:not(.semc-touch-feedback)){translate:0 -4px!important;scale:1.006!important;box-shadow:0 18px 42px rgba(26,61,87,.08)!important;border-color:rgba(57,126,180,.16)!important}
  .semc-scroll-motion.semc-reveal-done.contact-location-card:hover:where(:not(.semc-touch-feedback)){translate:0 -4px!important;scale:1.002!important}
  .semc-scroll-motion.semc-reveal-done.chip:hover:where(:not(.semc-touch-feedback)){translate:0 -3px!important;scale:1.002!important}
  .semc-scroll-motion.semc-reveal-done.media-card:hover:where(:not(.semc-touch-feedback)),
  .semc-scroll-motion.semc-reveal-done.photo:hover:where(:not(.semc-touch-feedback)),
  .semc-scroll-motion.semc-reveal-done.image-banner:hover:where(:not(.semc-touch-feedback)){translate:0 -3px!important;scale:1.001!important}
  .cms-adaptive-gallery figure.semc-scroll-motion.semc-reveal-done:hover:where(:not(.semc-touch-feedback)){translate:0 -2px!important;scale:1.001!important}
  .semc-scroll-motion.semc-reveal-done.v36-equipment-carousel:hover:where(:not(.semc-touch-feedback)){translate:0 -3px!important;scale:1.001!important}
  .semc-scroll-motion.semc-reveal-done.v36-certificate-card:hover:where(:not(.semc-touch-feedback)){translate:0 -4px!important;scale:1.002!important}
  .semc-scroll-motion.semc-reveal-done.v365-standard-documents:hover:where(:not(.semc-touch-feedback)){translate:0 -2px!important;scale:1.001!important}

  /* The row connector is positioned inside each step. Let it compensate for the
     card's hover lift with the same easing instead of snapping four pixels in a
     single frame (the V3.8.1 transform override had no transition). */
  .cms-dynamic-process-wrap .cms-process-grid>.step::after{
    transform:none!important;
    translate:0 0;
    transition:translate .42s cubic-bezier(.22,1,.36,1)!important
  }
  .cms-dynamic-process-wrap .cms-process-grid>.step:hover:where(:not(.semc-touch-feedback))::after{
    transform:none!important;
    translate:0 4px
  }
}

/* Inner-page photography should preserve the uploaded file's native contrast.
   Earlier full-frame blue/gray readability veils were useful before captions
   gained their own glass/text-shadow treatment, but on Windows/iPad/phone color
   pipelines those veils visibly flattened midtones. Keep homepage art untouched;
   remove only the inner-page full-image veil and normalize content-image filters. */
body:not([data-page-id="home"]) .media-card::after,
body:not([data-page-id="home"]) .equipment-card::after{
  display:none!important;
  content:none!important
}
body:not([data-page-id="home"]) .media-card img,
body:not([data-page-id="home"]) .equipment-card img,
body:not([data-page-id="home"]) .image-banner img,
body:not([data-page-id="home"]) .gallery-2 .photo img,
body:not([data-page-id="home"]) .cms-adaptive-gallery figure img,
body:not([data-page-id="home"]) .content-story-media img,
body:not([data-page-id="home"]) .visual-content-card-media img,
body:not([data-page-id="home"]) .detail-hero-media img,
body:not([data-page-id="home"]) .v36-equipment-slide img,
body:not([data-page-id="home"]) .v36-certificate-paper img,
body:not([data-page-id="home"]) .v36-honor-paper img,
body:not([data-page-id="home"]) .v365-standard-paper img,
body:not([data-page-id="home"]) .achievement-card-media img,
body:not([data-page-id="home"]) .collection-image-cell img{
  opacity:1!important;
  mix-blend-mode:normal!important;
  filter:none
}
body:not([data-page-id="home"]) .equip-meta,
body:not([data-page-id="home"]) .equip-meta h3,
body:not([data-page-id="home"]) .equip-meta span{
  text-shadow:0 2px 14px rgba(3,20,33,.62),0 1px 3px rgba(3,20,33,.42)
}
body:not([data-page-id="home"]) .media-caption{
  background:rgba(18,47,69,.46)!important;
  border-color:rgba(255,255,255,.26)!important;
  color:#fff!important
}

/* Touch reveal states in V3.7.9.1 used a higher-specificity opacity rule so
   touch devices could keep cards/media at 0.80–0.88 even after .visible was set.
   Besides flattening photographs against pale section backgrounds, that could be
   mistaken for an image tint. Restore true 100% opacity once a scene is visible. */
html.semc-touch-device .semc-scroll-motion.visible,
html.semc-touch-device .semc-scroll-motion.semc-reveal-done{
  opacity:1!important;
  translate:0 0!important;
  scale:1!important
}

/* V3.8.1 carried the short rail across the document boundary, but Safari could
   still coalesce the JS class transition into two rasterized states. V3.8.2 uses
   a delayed CSS keyframe with backwards fill: the short rail is physically held
   for the first paint, then transform-only interpolation runs independently of
   JS/main-thread startup work. Navigation itself remains immediate. */
@keyframes semcTouchRailSettleV382{
  from{scale:.86 1}
  to{scale:1 1}
}
@media(min-width:981px) and (prefers-reduced-motion:no-preference){
  html.semc-touch-device.semc-nav-arrival-touch .nav-link.active::before,
  html.semc-touch-device.semc-nav-arrival-touch .nav-link.active:hover::before{
    width:74%!important;
    opacity:1!important;
    transform-origin:center!important;
    transform:translateX(-50%) scaleX(1)!important;
    scale:1 1;
    transition:none!important;
    animation:semcTouchRailSettleV382 .66s cubic-bezier(.16,1,.3,1) .09s both!important;
    will-change:scale;
    backface-visibility:hidden
  }
}

/* ===== SEMC CMS V3.8.3 · iPad centered active-rail handoff ===== */
/* V3.8.2 animated the CSS individual `scale` property while the rail also used
   transform:translateX(-50%). WebKit composes individual transforms before the
   transform list, so the first destination frame could shift the tiny rail to
   the right before growing mostly from one side. Keep the rail box completely
   fixed and reveal the painted gradient through a centered mask instead. Both
   the outgoing committed state and the destination first frame use the same
   86% centered mask; the destination then expands that mask symmetrically with
   no intentional hold/delay. */
@keyframes semcTouchRailMaskV383{
  from{-webkit-mask-size:86% 100%;mask-size:86% 100%}
  to{-webkit-mask-size:100% 100%;mask-size:100% 100%}
}
/* Touch Safari synthesizes :hover/:active during a tap. Historical desktop
   hover rules lift the whole link by 1px, so the outgoing rail can sit one pixel
   above the destination rail even when their own geometry matches. Keep touch
   navigation links on a fixed baseline; colour feedback remains intact. */
html.semc-touch-device .nav-link:hover,
html.semc-touch-device .nav-link.active:hover,
html.semc-touch-device .nav-link:active,
html.semc-touch-device .nav-link.active:active{
  transform:none!important
}

@media(min-width:981px) and (prefers-reduced-motion:no-preference){
  html.semc-touch-device body.semc-touch-nav-committing .nav-link.semc-nav-committing::before,
  html.semc-touch-device body.semc-touch-nav-committing .nav-link.semc-nav-committing:hover::before{
    width:74%!important;
    opacity:1!important;
    transform:translateX(-50%) scaleX(1)!important;
    scale:1 1!important;
    transform-origin:center!important;
    -webkit-mask-image:linear-gradient(#000 0 0)!important;
    mask-image:linear-gradient(#000 0 0)!important;
    -webkit-mask-repeat:no-repeat!important;
    mask-repeat:no-repeat!important;
    -webkit-mask-position:center!important;
    mask-position:center!important;
    -webkit-mask-size:86% 100%!important;
    mask-size:86% 100%!important;
    transition:none!important;
    animation:none!important;
    clip-path:none!important
  }
  html.semc-touch-device.semc-nav-arrival-touch .nav-link.active::before,
  html.semc-touch-device.semc-nav-arrival-touch .nav-link.active:hover::before{
    width:74%!important;
    opacity:1!important;
    transform:translateX(-50%) scaleX(1)!important;
    scale:1 1!important;
    transform-origin:center!important;
    -webkit-mask-image:linear-gradient(#000 0 0)!important;
    mask-image:linear-gradient(#000 0 0)!important;
    -webkit-mask-repeat:no-repeat!important;
    mask-repeat:no-repeat!important;
    -webkit-mask-position:center!important;
    mask-position:center!important;
    transition:none!important;
    clip-path:none!important;
    animation:semcTouchRailMaskV383 .64s cubic-bezier(.16,1,.3,1) 0s both!important;
    will-change:-webkit-mask-size,mask-size;
    backface-visibility:hidden
  }
}
@media(min-width:981px) and (prefers-reduced-motion:reduce){
  html.semc-touch-device.semc-nav-arrival-touch .nav-link.active::before,
  html.semc-touch-device.semc-nav-arrival-touch .nav-link.active:hover::before{
    -webkit-mask-image:none!important;
    mask-image:none!important;
    scale:1 1!important
  }
}


/* ===== SEMC V3.8.7 · precise brand hit-area / image protection / module jumps ===== */
/* The homepage anchor must cover only the visible logo + company name. The
   navigation links / menu keep their original far-right alignment independently. */
.site-nav > .brand{
  flex:0 1 auto!important;
  width:max-content!important;
  max-width:calc(100% - 70px)!important;
}
.site-nav > .nav-links,
.site-nav > .menu-btn{margin-left:auto!important}

/* Logo grows from its left edge; the company name follows the visual growth so
   the gap remains stable instead of lifting upward. */
.brand{transform:none!important;opacity:1!important}
.brand:hover{transform:none!important}
.brand-name{
  transition:color .30s var(--ease),transform .35s var(--ease)!important;
  transform:translateX(0)!important;
}
.brand:hover .brand-name{
  color:#236692;
  transform:translateX(4px)!important;
}
@media (hover:none),(pointer:coarse){
  .brand:hover .brand-logo{transform:none!important}
  .brand:hover .brand-name{transform:none!important}
}

/* Internal CMS module anchors stop below the frosted navigation on every page. */
[data-module]{scroll-margin-top:104px}
@media(max-width:980px){[data-module]{scroll-margin-top:92px}}
@media(max-width:700px){[data-module]{scroll-margin-top:82px}}

/* UI-level deterrent only. The server separately serves metadata-free public
   derivatives, so disabling context/drag does not carry the security burden. */
img.semc-protected-image{
  -webkit-user-drag:none!important;
  -webkit-touch-callout:none!important;
  user-select:none!important;
}


/* ===== SEMC V3.9 · footer QR interaction ===== */
/* QR cards keep the exact existing layout and scan contrast, but now respond like
   the rest of the site: a small lift, image settle and caption cue on fine-pointer
   devices. Nothing overlays the QR modules themselves. */
.footer-qr-item{
  transform:translate3d(0,0,0);
  transition:transform .46s cubic-bezier(.16,1,.3,1)
}
.footer-qr-item img{
  transform:translate3d(0,0,0) scale(1);
  transition:transform .52s cubic-bezier(.16,1,.3,1),box-shadow .42s ease,filter .42s ease
}
.footer-qr-item figcaption{
  transition:color .32s ease,transform .42s cubic-bezier(.16,1,.3,1)
}
@media (hover:hover) and (pointer:fine){
  .footer-qr-item:hover{transform:translate3d(0,-5px,0)}
  .footer-qr-item:hover img{
    transform:translate3d(0,0,0) scale(1.026);
    box-shadow:0 16px 34px rgba(0,0,0,.22);
    filter:brightness(1.015)
  }
  .footer-qr-item:hover figcaption{color:#d4dce2;transform:translateY(2px)}
}
@media (hover:none),(pointer:coarse){
  .footer-qr-item:active{transform:scale(.985)}
}

/* ===== SEMC V3.9.3 · BFCache stale-hover rail guard =====
   History restore can resurrect a non-active link's old CSS :hover state before
   the pointer returns to the document. Hide only that stale rail until the first
   real pointer action; active/commit/iPad indicator animations stay untouched. */
html.semc-history-hover-guard .nav-link:not(.active):not(.semc-nav-committing):hover::before,
html.semc-history-hover-guard .nav-link:not(.active):not(.semc-nav-committing):hover:before{
  width:0!important;
  opacity:0!important;
  transition:none!important;
  animation:none!important
}



/* SEMC V3.9.5: detail-capable item affordance without changing existing layout. */
[data-cms-detail-href]{cursor:pointer}
[data-cms-detail-href]:focus-visible{outline:2px solid currentColor;outline-offset:4px}


/* ===== SEMC V3.9.8 · fixed contacts / Android header / footer legal row ===== */
html.semc-android-browser{--semc-safe-top:0px}

.footer-bottom{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) auto minmax(0,1fr)!important;
  align-items:center!important;
  column-gap:20px!important;
  line-height:1.45!important
}
.footer-bottom>.footer-legal-left{grid-column:1;justify-self:start!important}
.footer-bottom>.footer-icp-slot{grid-column:2;justify-self:center!important}
.footer-bottom>.footer-legal-right{grid-column:3;justify-self:end!important}
.footer-bottom>.footer-legal-left,
.footer-bottom>.footer-icp-slot,
.footer-bottom>.footer-legal-right{
  display:flex;
  align-items:center;
  min-height:1.6em
}
.footer-icp-slot{
  color:inherit;
  white-space:nowrap;
  text-decoration:none;
  transition:color .22s ease
}
.footer-icp-slot:hover{color:#b8c2c9}
.footer-icp-slot[hidden]{display:none!important}
@media(max-width:980px){
  .footer-bottom{
    grid-template-columns:1fr!important;
    justify-items:center!important;
    row-gap:4px!important
  }
  .footer-bottom>.footer-legal-left,
  .footer-bottom>.footer-icp-slot,
  .footer-bottom>.footer-legal-right{
    grid-column:1!important;
    justify-self:center!important;
    text-align:center!important
  }
}


/* ===== SEMC V4.0.0 · bilingual switch and English responsive fit ===== */
.site-language-switch{display:flex;align-items:center;justify-content:center;gap:6px;flex:0 0 auto;min-height:34px;padding:3px 5px;border:1px solid rgba(30,74,108,.16);border-radius:999px;background:rgba(255,255,255,.42);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}
.site-language-switch i{width:1px;height:13px;background:rgba(31,73,105,.16)}
.site-language-switch button{appearance:none;border:0;background:transparent;color:#6f8494;border-radius:999px;min-width:31px;height:28px;padding:0 7px;font:800 11px/1 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;letter-spacing:.035em;cursor:pointer}
.site-language-switch button.active{background:rgba(36,92,166,.12);color:#174d79}.site-language-switch button:focus-visible{outline:2px solid #2b6fa6;outline-offset:2px}
html[data-site-lang="en"] .nav-links{gap:clamp(9px,1.05vw,19px)}html[data-site-lang="en"] .nav-link{font-size:clamp(11px,.78vw,14px);white-space:nowrap}html[data-site-lang="en"] .brand-name{max-width:300px}html[data-site-lang="en"] .brand-name span{font-size:clamp(11px,.78vw,14px);line-height:1.25}
html[data-site-lang="en"] .hero-copy h1,html[data-site-lang="en"] .page-hero h1,html[data-site-lang="en"] .section-title{text-wrap:balance}html[data-site-lang="en"] .hero-copy h1{font-size:clamp(48px,5.2vw,82px);line-height:.98}html[data-site-lang="en"] .section-title{font-size:clamp(32px,3.7vw,56px);line-height:1.04}
html[data-site-lang="en"] .section-lead,html[data-site-lang="en"] .hero-copy p,html[data-site-lang="en"] .detail-hero-copy p{max-width:66ch}html[data-site-lang="en"] .btn,html[data-site-lang="en"] .blue-btn,html[data-site-lang="en"] .content-detail-hint{white-space:normal;line-height:1.3}html[data-site-lang="en"] .footer-grid h3,html[data-site-lang="en"] .footer-grid a,html[data-site-lang="en"] .footer-grid p{overflow-wrap:anywhere}
@media(min-width:981px){.nav-links>.site-language-switch{margin-left:2px}}
@media(max-width:1180px) and (min-width:981px){html[data-site-lang="en"] .nav-links{gap:7px}html[data-site-lang="en"] .nav-link{font-size:11px}.site-language-switch{transform:scale(.92);transform-origin:right center}}
@media(max-width:980px){.nav-links.mobile-nav-panel>.site-language-switch,.nav-links>.site-language-switch{order:99;width:max-content;min-width:112px;margin:16px auto 2px;padding:5px 8px;background:rgba(255,255,255,.7)}.site-language-switch button{min-width:38px;height:34px;font-size:12px}html[data-site-lang="en"] .nav-link{font-size:clamp(18px,4.5vw,24px);white-space:normal}html[data-site-lang="en"] .hero-copy h1{font-size:clamp(40px,10.4vw,68px);line-height:1}html[data-site-lang="en"] .section-title{font-size:clamp(30px,7.5vw,48px);line-height:1.06}html[data-site-lang="en"] .service-request-grid{grid-template-columns:1fr}}
@media(max-width:560px){html[data-site-lang="en"] .brand-name{max-width:min(47vw,210px)}html[data-site-lang="en"] .brand-name span{font-size:11px}html[data-site-lang="en"] .hero-copy h1{font-size:clamp(37px,10vw,52px)}html[data-site-lang="en"] .service-request-actions{align-items:flex-start;flex-direction:column}}
@media(max-width:1180px) and (min-width:981px){html[data-site-lang="en"] .brand-name{max-width:210px;white-space:normal}html[data-site-lang="en"] .brand-name span{display:block;line-height:1.15}html[data-site-lang="en"] .brand{gap:10px}}


/* ===== SEMC V4.0.1 · bilingual polish / stable language transition / short-page footer ===== */
html::before{
  content:"";position:fixed;inset:0;z-index:2147482500;pointer-events:none;opacity:0;
  background:linear-gradient(145deg,rgba(235,245,252,.98),rgba(247,251,254,.98));
  transition:opacity .30s cubic-bezier(.22,1,.36,1)
}
html.semc-language-arriving::before,html.semc-language-leaving::before{opacity:1;transition:none}
html.semc-language-arrival-reveal::before{opacity:0}
.semc-language-transition-layer{
  position:fixed;inset:0;z-index:2147482600;display:grid;place-items:center;pointer-events:none;
  opacity:0;background:linear-gradient(145deg,rgba(232,244,252,.72),rgba(249,252,254,.76));
  backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px);
  transition:opacity .22s ease
}
html.semc-language-leaving .semc-language-transition-layer{opacity:1}
.semc-language-transition-mark{
  display:flex;align-items:center;gap:11px;padding:10px 14px;border-radius:14px;
  border:1px solid rgba(34,82,119,.10);background:rgba(255,255,255,.74);
  box-shadow:0 14px 34px rgba(38,76,103,.08);color:#758a99;
  font:720 11px/1.2 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;letter-spacing:.035em
}
.semc-language-transition-mark strong{color:#245d87;font-weight:820}.semc-language-transition-mark i{font-style:normal;color:#9aabb6}

/* Compact segmented control: it belongs to the nav instead of looking like another large button. */
.site-language-switch{
  position:relative!important;display:grid!important;grid-template-columns:1fr 1fr!important;align-items:center!important;
  width:68px!important;height:30px!important;min-height:30px!important;padding:2px!important;gap:0!important;margin-left:6px!important;
  border:1px solid rgba(30,74,108,.12)!important;border-radius:11px!important;
  background:rgba(28,75,111,.055)!important;box-shadow:inset 0 1px rgba(255,255,255,.55)!important;
  backdrop-filter:none!important;-webkit-backdrop-filter:none!important;overflow:hidden!important
}
.site-language-slider{
  position:absolute;z-index:0;left:2px;top:2px;width:31px;height:24px;border-radius:8px;
  background:rgba(255,255,255,.86);border:1px solid rgba(38,91,131,.08);
  box-shadow:0 2px 8px rgba(31,72,103,.08);transform:translate3d(0,0,0);
  transition:transform .32s cubic-bezier(.16,1,.3,1),background .25s ease
}
.site-language-switch[data-active-lang="en"] .site-language-slider{transform:translate3d(31px,0,0)}
.site-language-switch button{
  position:relative;z-index:1;appearance:none!important;border:0!important;background:transparent!important;
  min-width:0!important;width:31px!important;height:24px!important;padding:0!important;border-radius:8px!important;
  color:#8394a0!important;font:800 10px/1 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif!important;
  letter-spacing:.02em!important;cursor:pointer!important;transition:color .22s ease,transform .22s ease!important
}
.site-language-switch button.active{color:#1c5a87!important}.site-language-switch button:hover{color:#2c658c!important}
.site-language-switch button:active{transform:scale(.94)!important}.site-language-switch button:focus-visible{outline:2px solid #4d89b5!important;outline-offset:-1px!important}


/* Let the footer reach the viewport bottom on short inner/detail pages. */
html,body{min-height:100%}
body:not([data-page-id="home"]){min-height:100vh;min-height:100dvh;display:flex;flex-direction:column}
body:not([data-page-id="home"])>main{flex:1 0 auto;min-height:0;width:100%}
body:not([data-page-id="home"])>.corp-footer{margin-top:auto}
.detail-page-body>.detail-root{flex:1 0 auto}

@media(max-width:1180px) and (min-width:981px){
  .site-language-switch{transform:none!important;margin-left:3px!important}
}
@media(max-width:980px){
  .nav-links.mobile-nav-panel>.site-language-switch,.nav-links>.site-language-switch{
    width:82px!important;height:36px!important;min-height:36px!important;margin:15px auto 2px!important;padding:3px!important;background:rgba(31,78,113,.06)!important
  }
  .nav-links.mobile-nav-panel>.site-language-switch .site-language-slider,.nav-links>.site-language-switch .site-language-slider{left:3px;top:3px;width:36px;height:28px;border-radius:9px}
  .nav-links.mobile-nav-panel>.site-language-switch[data-active-lang="en"] .site-language-slider,.nav-links>.site-language-switch[data-active-lang="en"] .site-language-slider{transform:translate3d(36px,0,0)}
  .nav-links.mobile-nav-panel>.site-language-switch button,.nav-links>.site-language-switch button{width:36px!important;height:28px!important;font-size:11px!important}
}
@media(prefers-reduced-motion:reduce){
  html::before,.semc-language-transition-layer,.site-language-slider{transition:none!important}
  .semc-language-transition-mark{display:none}
}


/* ===== SEMC V4.0.3 · minimal language control / single transition / stable nav ===== */

/* Minimal right-edge language control. No capsule or oversized switch: it reads
   as a quiet part of the navigation itself while keeping a fixed footprint. */
.site-language-switch{
  position:relative!important;
  display:flex!important;
  align-items:center!important;
  justify-content:flex-end!important;
  flex:0 0 92px!important;
  width:92px!important;
  height:32px!important;
  min-height:32px!important;
  box-sizing:border-box!important;
  gap:8px!important;
  margin-left:10px!important;
  padding:0!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
  backdrop-filter:none!important;
  -webkit-backdrop-filter:none!important;
  overflow:visible!important
}
.site-language-switch button{
  position:relative!important;
  display:grid!important;
  place-items:center!important;
  appearance:none!important;
  width:auto!important;
  min-width:32px!important;
  height:30px!important;
  min-height:30px!important;
  padding:0 2px!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
  color:#7e909c!important;
  font:760 11px/1 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif!important;
  letter-spacing:.015em!important;
  cursor:pointer!important;
  transition:color .28s ease,opacity .28s ease!important
}
.site-language-switch button::after{
  content:"";
  position:absolute;
  left:50%;
  bottom:0;
  width:17px;
  height:2px;
  border-radius:999px;
  background:linear-gradient(90deg,#276aa3 0 72%,#d83c50 72% 100%);
  opacity:0;
  transform:translateX(-50%) scaleX(.35);
  transform-origin:center;
  transition:opacity .28s ease,transform .34s cubic-bezier(.16,1,.3,1)
}
html[data-site-lang="zh"] .site-language-switch [data-lang="zh"],
html[data-site-lang="en"] .site-language-switch [data-lang="en"],
.site-language-switch button.active{
  color:#1e557d!important
}
html[data-site-lang="zh"] .site-language-switch [data-lang="zh"]::after,
html[data-site-lang="en"] .site-language-switch [data-lang="en"]::after,
.site-language-switch button.active::after{
  opacity:1;
  transform:translateX(-50%) scaleX(1)
}
.site-language-switch button:hover{color:#2e678e!important}
.site-language-switch button:focus-visible{outline:2px solid rgba(54,111,153,.42)!important;outline-offset:2px!important}
.site-language-switch.is-switching button{pointer-events:none}
.site-language-divider{
  display:block!important;
  flex:0 0 1px!important;
  width:1px!important;
  height:13px!important;
  background:rgba(64,96,118,.16)!important
}

/* Keep the right navigation rail stable throughout normal page navigation.
   The server already returns the correct order/text, and JS now avoids moving
   the nodes again, so this layer remains visually unchanged across hydration. */
.nav-links{
  backface-visibility:hidden;
  -webkit-backface-visibility:hidden
}

/* One language animation only. The outgoing page shows this minimal hand-off;
   the destination page does NOT replay it. */
html::before{
  content:"";
  position:fixed;
  inset:0;
  z-index:2147482500;
  pointer-events:none;
  opacity:0;
  background:#f4f9fc!important;
  transition:opacity .38s cubic-bezier(.22,1,.36,1)!important
}
html.semc-language-leaving::before{opacity:1!important}

html.semc-language-arrival-reveal::before{opacity:0!important;transition:opacity .40s cubic-bezier(.22,1,.36,1)!important}

.semc-language-transition-layer{
  position:fixed!important;
  inset:0!important;
  z-index:2147482600!important;
  display:grid!important;
  place-items:center!important;
  pointer-events:none!important;
  opacity:0!important;
  background:#f4f9fc!important;
  backdrop-filter:none!important;
  -webkit-backdrop-filter:none!important;
  transition:opacity .22s ease!important
}
.semc-language-transition-layer.active{opacity:1!important}
.semc-language-transition-minimal{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:24px;
  min-width:min(420px,calc(100vw - 48px));
  color:#667f90;
  opacity:0;
  transform:translateY(5px);
  transition:opacity .28s ease,transform .42s cubic-bezier(.16,1,.3,1)
}
.semc-language-transition-layer.active .semc-language-transition-minimal{
  opacity:1;
  transform:none
}
.semc-language-transition-minimal>strong{
  min-width:76px;
  color:#315b78;
  font:720 clamp(25px,3.4vw,34px)/1 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  letter-spacing:-.025em;
  white-space:nowrap
}
.semc-language-transition-minimal>strong:first-child{text-align:right;color:#7b8f9d}
.semc-language-transition-minimal>strong:last-child{text-align:left;color:#245f8a}
.semc-language-transition-line{
  position:relative;
  display:grid;
  place-items:center;
  flex:0 0 96px;
  width:96px;
  height:26px
}
.semc-language-transition-line::before{
  content:"";
  position:absolute;
  left:2px;
  right:2px;
  top:50%;
  height:1px;
  background:rgba(57,101,132,.14);
  transform:translateY(-50%)
}
.semc-language-transition-line i{
  position:absolute;
  left:2px;
  top:50%;
  width:92px;
  height:1px;
  background:linear-gradient(90deg,#2f73a7,#5b8daf 68%,#d53c50);
  transform:translateY(-50%) scaleX(0);
  transform-origin:left center;
  animation:semcLanguageLineOnce .48s .06s cubic-bezier(.22,1,.36,1) forwards
}
.semc-language-transition-line b{
  position:relative;
  z-index:2;
  display:grid;
  place-items:center;
  width:24px;
  height:20px;
  background:#f4f9fc;
  color:#6d899c;
  font:650 17px/1 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif
}
@keyframes semcLanguageLineOnce{
  from{transform:translateY(-50%) scaleX(0);opacity:.25}
  to{transform:translateY(-50%) scaleX(1);opacity:1}
}

@media(max-width:1180px) and (min-width:981px){
  .site-language-switch{
    flex-basis:84px!important;
    width:84px!important;
    gap:6px!important;
    margin-left:6px!important
  }
  .site-language-switch button{font-size:10px!important;min-width:29px!important}
}

@media(max-width:980px){
  .nav-links.mobile-nav-panel>.site-language-switch,
  .nav-links>.site-language-switch{
    order:99!important;
    flex:0 0 118px!important;
    width:118px!important;
    height:44px!important;
    min-height:44px!important;
    gap:12px!important;
    margin:16px auto 3px!important;
    padding:0!important;
    background:transparent!important
  }
  .nav-links.mobile-nav-panel>.site-language-switch button,
  .nav-links>.site-language-switch button{
    min-width:42px!important;
    height:42px!important;
    min-height:42px!important;
    font-size:12px!important
  }
  .nav-links.mobile-nav-panel>.site-language-switch button::after,
  .nav-links>.site-language-switch button::after{bottom:4px}
  .site-language-divider{height:15px!important}
  .semc-language-transition-minimal{
    gap:17px;
    min-width:0;
    width:calc(100vw - 44px)
  }
  .semc-language-transition-minimal>strong{
    min-width:62px;
    font-size:26px
  }
  .semc-language-transition-line{
    flex-basis:72px;
    width:72px
  }
  .semc-language-transition-line i{width:68px}
}

@media(max-width:430px){
  .semc-language-transition-minimal{gap:12px;width:calc(100vw - 30px)}
  .semc-language-transition-minimal>strong{min-width:56px;font-size:23px}
  .semc-language-transition-line{flex-basis:58px;width:58px}
  .semc-language-transition-line i{width:54px}
}

@media(prefers-reduced-motion:reduce){
  .site-language-switch button,
  .site-language-switch button::after,
  html::before,
  .semc-language-transition-layer,
  .semc-language-transition-minimal{transition:none!important}
  
}


/* ===== SEMC V4.0.4 · compact language action / English layout safety ===== */

/* One target-language action only:
   中文页面显示 EN；English 页面显示 中文。 */
.site-language-switch{
  position:relative!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  flex:0 0 66px!important;
  width:66px!important;
  height:42px!important;
  min-height:42px!important;
  box-sizing:border-box!important;
  gap:0!important;
  margin-left:9px!important;
  padding:3px!important;
  border:1px solid rgba(54,92,119,.16)!important;
  border-radius:12px!important;
  background:rgba(255,255,255,.28)!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.58)!important;
  backdrop-filter:blur(10px)!important;
  -webkit-backdrop-filter:blur(10px)!important;
  overflow:hidden!important
}
.site-language-toggle{
  position:relative!important;
  display:grid!important;
  place-items:center!important;
  width:100%!important;
  min-width:0!important;
  height:34px!important;
  min-height:34px!important;
  padding:0 7px 3px!important;
  border:0!important;
  border-radius:9px!important;
  background:rgba(255,255,255,.36)!important;
  color:#315f7e!important;
  box-shadow:none!important;
  font:780 11.5px/1 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif!important;
  letter-spacing:.015em!important;
  cursor:pointer!important;
  transition:background-color .24s ease,color .24s ease,transform .20s ease!important
}
.site-language-toggle:hover{background:rgba(255,255,255,.62)!important;color:#1f557d!important}
.site-language-toggle:active{transform:scale(.965)!important}
.site-language-toggle:focus-visible{outline:2px solid rgba(54,111,153,.45)!important;outline-offset:-1px!important}
.site-language-switch.is-switching .site-language-toggle{pointer-events:none!important}

.site-language-next{display:none;white-space:nowrap}
html[data-site-lang="zh"] .site-language-next-en{display:inline}
html[data-site-lang="en"] .site-language-next-zh{display:inline}

.site-language-toggle::after{
  content:"";
  position:absolute;
  left:50%;
  bottom:2px;
  width:26px;
  height:2px;
  border-radius:999px;
  transform:translateX(-50%);
  background:
    linear-gradient(90deg,
      #245ca6 0%,
      #245ca6 38%,
      #4778ad 44%,
      #756f9a 49%,
      #9b5f82 52%,
      #bd4664 58%,
      #d6293e 64%,
      #d6293e 100%)!important;
  box-shadow:0 1px 5px rgba(36,92,166,.08),0 1px 5px rgba(214,41,62,.06)
}
.site-language-divider{display:none!important}

/* English navigation must remain collision-free even when every first-level
   module is enabled. The company name may use two lines before any navigation
   label is allowed to collide. */
html[data-site-lang="en"] .site-nav{
  gap:clamp(8px,.75vw,14px)!important
}
html[data-site-lang="en"] .brand{
  flex:1 1 320px!important;
  min-width:0!important;
  gap:clamp(8px,.7vw,13px)!important
}
html[data-site-lang="en"] .brand-name{
  min-width:0!important;
  max-width:clamp(190px,17vw,300px)!important;
  white-space:normal!important;
  line-height:1.12!important
}
html[data-site-lang="en"] .brand-name span{
  display:block!important;
  min-width:0!important;
  white-space:normal!important;
  overflow-wrap:break-word!important
}
html[data-site-lang="en"] .nav-links{
  flex:0 1 auto!important;
  min-width:0!important;
  gap:clamp(0px,.32vw,5px)!important
}
html[data-site-lang="en"] .nav-link,
html[data-site-lang="en"] .nav-link:hover,
html[data-site-lang="en"] .nav-link.active,
html[data-site-lang="en"] .nav-link.active:hover{
  flex:0 1 auto!important;
  min-width:0!important;
  padding-inline:clamp(4px,.48vw,8px)!important;
  font-size:clamp(10.5px,.70vw,12.8px)!important
}

@media(min-width:981px) and (max-width:1540px){
  html[data-site-lang="en"] .brand-logo{width:clamp(108px,8.5vw,126px)!important}
  html[data-site-lang="en"] .brand-name{max-width:220px!important}
  html[data-site-lang="en"] .brand-name span{font-size:10.8px!important}
  html[data-site-lang="en"] .nav-link,
  html[data-site-lang="en"] .nav-link:hover,
  html[data-site-lang="en"] .nav-link.active,
  html[data-site-lang="en"] .nav-link.active:hover{
    padding-inline:4px!important;
    font-size:10.6px!important
  }
  html[data-site-lang="en"] .site-language-switch{
    flex-basis:62px!important;
    width:62px!important;
    margin-left:5px!important
  }
}
@media(min-width:981px) and (max-width:1320px){
  html[data-site-lang="en"] .brand-name{display:none!important}
  html[data-site-lang="en"] .brand{flex:0 0 auto!important}
  html[data-site-lang="en"] .site-nav{gap:7px!important}
}

/* General English-content safety: long translated labels can wrap, but grid /
   flex children must never paint on top of their neighbours. */
html[data-site-lang="en"] :where(
  .split,.stat-grid,.cards-3,.industry-band,.equipment-grid,.gallery-2,
  .footer-main,.footer-bottom,.detail-hero-grid,.contact-location-grid,
  .home-proof-grid,.achievement-layout,.achievement-carousel,
  .v36-equipment-main,.v36-equipment-params,.v36-honor-split,
  .content-story-grid,.visual-content-grid,.location-lines
)>*{min-width:0!important}

html[data-site-lang="en"] :where(
  .section-title,.section-lead,.hero-copy h1,.hero-copy p,
  .service-card h3,.service-card p,.feature-item h3,.feature-item p,
  .stat-item strong,.stat-item span,.equip-meta h3,
  .footer-main h3,.footer-main a,.footer-main p,
  .detail-hero-copy h1,.detail-hero-copy p,.detail-breadcrumb,
  .achievement-card-copy h3,.achievement-card-copy p,
  .v36-timeline-text,.v36-equipment-param strong,
  .v36-certificate-copy h3,.v36-certificate-copy p,
  .contact-location-card,.location-line
){
  min-width:0!important;
  overflow-wrap:break-word!important;
  word-break:normal!important;
  hyphens:auto
}
html[data-site-lang="en"] :where(.btn,.blue-btn,.content-detail-hint){
  min-width:0!important;
  white-space:normal!important;
  text-align:center!important
}

@media(max-width:980px){
  .nav-links.mobile-nav-panel>.site-language-switch,
  .nav-links>.site-language-switch{
    order:99!important;
    flex:0 0 76px!important;
    width:76px!important;
    height:44px!important;
    min-height:44px!important;
    margin:16px auto 3px!important;
    padding:3px!important;
    border-radius:13px!important;
    background:rgba(255,255,255,.36)!important
  }
  .nav-links.mobile-nav-panel>.site-language-switch .site-language-toggle,
  .nav-links>.site-language-switch .site-language-toggle{
    width:100%!important;
    height:36px!important;
    min-height:36px!important;
    font-size:12px!important;
    border-radius:10px!important
  }
}


/* ===== SEMC V4.0.5 · glass language control / English brand scale / frosted language hand-off ===== */

/* Language action is a second glass layer inside the main frosted navigation.
   Keep a clear frame, but remove the opaque square hover fill. */
.site-language-switch{
  flex:0 0 66px!important;
  width:66px!important;
  height:42px!important;
  min-height:42px!important;
  margin-left:9px!important;
  padding:3px!important;
  border:1px solid rgba(255,255,255,.62)!important;
  border-radius:13px!important;
  background:
    linear-gradient(145deg,rgba(255,255,255,.19),rgba(226,240,249,.13))!important;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.62),
    inset 0 0 0 1px rgba(43,91,126,.055),
    0 5px 16px rgba(28,69,98,.035)!important;
  backdrop-filter:blur(15px) saturate(112%)!important;
  -webkit-backdrop-filter:blur(15px) saturate(112%)!important;
  overflow:hidden!important
}
.site-language-toggle{
  position:relative!important;
  width:100%!important;
  height:34px!important;
  min-height:34px!important;
  padding:0 7px 4px!important;
  border:1px solid rgba(255,255,255,.34)!important;
  border-radius:10px!important;
  background:rgba(255,255,255,.08)!important;
  color:#2e6285!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.22)!important;
  outline:none!important;
  -webkit-tap-highlight-color:transparent!important;
  transition:
    color .24s ease,
    border-color .24s ease,
    background-color .24s ease,
    box-shadow .24s ease!important
}
.site-language-toggle:hover{
  background:rgba(255,255,255,.18)!important;
  border-color:rgba(255,255,255,.56)!important;
  color:#1f557d!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.34)!important;
  transform:none!important
}
.site-language-toggle:active{
  background:rgba(255,255,255,.22)!important;
  transform:none!important
}
.site-language-toggle:focus,
.site-language-toggle:focus-visible{
  outline:none!important;
  border-color:rgba(68,124,164,.31)!important;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.36),
    0 0 0 2px rgba(65,121,160,.08)!important
}
.site-language-toggle::after{
  left:50%!important;
  bottom:2px!important;
  width:27px!important;
  height:2px!important;
  border-radius:999px!important;
  transform:translateX(-50%)!important;
  background:
    linear-gradient(90deg,
      #245ca6 0%,
      #245ca6 38%,
      #4778ad 44%,
      #756f9a 49%,
      #9b5f82 52%,
      #bd4664 58%,
      #d6293e 64%,
      #d6293e 100%)!important;
  box-shadow:0 1px 5px rgba(36,92,166,.10),0 1px 5px rgba(214,41,62,.08)!important
}

/* Restore a more confident English brand scale on wide desktops. The collision
   safeguards from V4.0.4 remain in force for compact desktop widths. */
@media(min-width:1541px){
  html[data-site-lang="en"] .brand{
    flex:1 1 430px!important;
    gap:clamp(11px,.8vw,16px)!important
  }
  html[data-site-lang="en"] .brand-logo{
    width:clamp(148px,8.8vw,170px)!important;
    max-height:54px!important
  }
  html[data-site-lang="en"] .brand-name{
    max-width:380px!important;
    line-height:1.16!important
  }
  html[data-site-lang="en"] .brand-name span{
    font-size:clamp(13.5px,.82vw,15.8px)!important;
    line-height:1.18!important
  }
}
@media(min-width:1321px) and (max-width:1540px){
  html[data-site-lang="en"] .brand-logo{
    width:clamp(128px,9.2vw,148px)!important;
    max-height:49px!important
  }
  html[data-site-lang="en"] .brand-name{
    max-width:250px!important
  }
  html[data-site-lang="en"] .brand-name span{
    font-size:clamp(11.8px,.84vw,13.2px)!important;
    line-height:1.16!important
  }
}

/* Frosted hand-off background with restrained SEMC blue/red ambient light.
   The language glyph animation itself is unchanged. */
html::before{
  background:
    radial-gradient(circle at 23% 46%,rgba(46,116,170,.105),transparent 31%),
    radial-gradient(circle at 78% 54%,rgba(205,57,75,.060),transparent 29%),
    linear-gradient(145deg,rgba(236,246,252,.91),rgba(248,250,252,.90))!important;
  backdrop-filter:blur(14px) saturate(108%)!important;
  -webkit-backdrop-filter:blur(14px) saturate(108%)!important
}
.semc-language-transition-layer{
  background:
    radial-gradient(circle at 30% 48%,rgba(50,120,174,.085),transparent 32%),
    radial-gradient(circle at 72% 52%,rgba(205,58,77,.052),transparent 30%),
    rgba(241,248,252,.48)!important;
  backdrop-filter:blur(18px) saturate(110%)!important;
  -webkit-backdrop-filter:blur(18px) saturate(110%)!important
}
.semc-language-transition-minimal{
  padding:18px 22px;
  border:1px solid rgba(255,255,255,.34);
  border-radius:18px;
  background:rgba(255,255,255,.055);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.20)
}
.semc-language-transition-line b{
  background:rgba(244,249,252,.58)!important;
  backdrop-filter:blur(8px)!important;
  -webkit-backdrop-filter:blur(8px)!important
}

@media(max-width:980px){
  .nav-links.mobile-nav-panel>.site-language-switch,
  .nav-links>.site-language-switch{
    background:
      linear-gradient(145deg,rgba(255,255,255,.22),rgba(226,240,249,.14))!important;
    border:1px solid rgba(255,255,255,.58)!important;
    backdrop-filter:blur(15px) saturate(112%)!important;
    -webkit-backdrop-filter:blur(15px) saturate(112%)!important
  }
  .nav-links.mobile-nav-panel>.site-language-switch .site-language-toggle,
  .nav-links>.site-language-switch .site-language-toggle{
    background:rgba(255,255,255,.08)!important;
    border-radius:10px!important
  }
}


/* ===== SEMC V4.0.7 · English nav spacing / Apple-like language action / refined hand-off ===== */

/* 1. English desktop navigation:
   Add only a little more breathing room between English modules. The compact
   widths keep the V4.0.4 collision safeguards. */
@media(min-width:1541px){
  html[data-site-lang="en"] .site-nav{
    width:min(96vw,1740px)!important;
    gap:clamp(10px,.72vw,16px)!important
  }
  html[data-site-lang="en"] .brand{
    flex:1 1 455px!important;
    gap:clamp(12px,.82vw,17px)!important
  }
  html[data-site-lang="en"] .brand-logo{
    width:clamp(158px,9.2vw,180px)!important;
    max-height:57px!important
  }
  html[data-site-lang="en"] .brand-name{
    max-width:410px!important;
    line-height:1.17!important
  }
  html[data-site-lang="en"] .brand-name span{
    font-size:clamp(14.2px,.84vw,16.2px)!important;
    line-height:1.18!important;
    font-weight:680!important
  }
  html[data-site-lang="en"] .nav-links{
    gap:clamp(5px,.40vw,9px)!important
  }
  html[data-site-lang="en"] .nav-link,
  html[data-site-lang="en"] .nav-link:hover,
  html[data-site-lang="en"] .nav-link.active,
  html[data-site-lang="en"] .nav-link.active:hover{
    padding-inline:clamp(7px,.50vw,10px)!important;
    font-size:clamp(13.8px,.78vw,15.2px)!important;
    font-weight:620!important
  }
}
@media(min-width:1321px) and (max-width:1540px){
  html[data-site-lang="en"] .brand-logo{
    width:clamp(136px,9.4vw,154px)!important;
    max-height:51px!important
  }
  html[data-site-lang="en"] .brand-name{
    max-width:270px!important
  }
  html[data-site-lang="en"] .brand-name span{
    font-size:clamp(12.2px,.88vw,13.5px)!important;
    line-height:1.16!important
  }
  html[data-site-lang="en"] .nav-links{
    gap:clamp(2px,.26vw,5px)!important
  }
  html[data-site-lang="en"] .nav-link,
  html[data-site-lang="en"] .nav-link:hover,
  html[data-site-lang="en"] .nav-link.active,
  html[data-site-lang="en"] .nav-link.active:hover{
    padding-inline:4px!important;
    font-size:clamp(11.7px,.80vw,12.8px)!important;
    font-weight:620!important
  }
}
@media(min-width:981px) and (max-width:1320px){
  html[data-site-lang="en"] .brand-logo{
    width:clamp(114px,9.2vw,132px)!important;
    max-height:47px!important
  }
  html[data-site-lang="en"] .nav-links{
    gap:1px!important
  }
  html[data-site-lang="en"] .nav-link,
  html[data-site-lang="en"] .nav-link:hover,
  html[data-site-lang="en"] .nav-link.active,
  html[data-site-lang="en"] .nav-link.active:hover{
    padding-inline:3px!important;
    font-size:clamp(11.1px,.94vw,12.1px)!important;
    font-weight:620!important
  }
}

/* 2. Language action:
   Same text color as the navigation modules. Keep the flat glass control, but
   add two distinct interaction states: a soft hover lift and a short press. */
.site-language-switch{
  flex:0 0 66px!important;
  width:66px!important;
  height:42px!important;
  min-height:42px!important;
  padding:3px!important;
  border:1px solid rgba(58,101,132,.19)!important;
  border-radius:13px!important;
  background:linear-gradient(180deg,rgba(244,250,253,.17),rgba(219,237,248,.095))!important;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.30),
    0 1px 2px rgba(31,68,94,.018)!important;
  backdrop-filter:blur(18px) saturate(116%)!important;
  -webkit-backdrop-filter:blur(18px) saturate(116%)!important;
  transition:
    border-color .34s cubic-bezier(.16,1,.3,1),
    background .34s cubic-bezier(.16,1,.3,1),
    box-shadow .34s cubic-bezier(.16,1,.3,1),
    transform .34s cubic-bezier(.16,1,.3,1)!important
}
.site-language-toggle{
  width:100%!important;
  height:34px!important;
  min-height:34px!important;
  padding:0 7px 4px!important;
  border:0!important;
  border-radius:9px!important;
  background:transparent!important;
  color:#35556d!important;
  box-shadow:none!important;
  outline:none!important;
  font-weight:680!important;
  -webkit-tap-highlight-color:transparent!important;
  transition:
    color .28s cubic-bezier(.16,1,.3,1),
    opacity .22s ease,
    transform .28s cubic-bezier(.16,1,.3,1),
    letter-spacing .28s cubic-bezier(.16,1,.3,1)!important
}
.site-language-switch:hover{
  border-color:rgba(48,96,131,.29)!important;
  background:linear-gradient(180deg,rgba(247,251,254,.23),rgba(222,238,248,.13))!important;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.36),
    0 5px 15px rgba(31,70,98,.045)!important;
  transform:translateY(-1px)!important
}
.site-language-toggle:hover{
  background:transparent!important;
  color:#184f76!important;
  transform:translateY(-.5px)!important;
  letter-spacing:.018em!important
}
.site-language-switch:active{
  transform:translateY(0) scale(.978)!important;
  box-shadow:
    inset 0 1px 2px rgba(30,67,93,.055),
    0 1px 3px rgba(31,70,98,.025)!important
}
.site-language-toggle:active{
  background:transparent!important;
  color:#15557f!important;
  opacity:.84!important;
  transform:scale(.965)!important
}
.site-language-switch:focus-within{
  border-color:rgba(50,105,144,.36)!important;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.34),
    0 0 0 2px rgba(48,105,145,.065)!important
}
.site-language-toggle:focus,
.site-language-toggle:focus-visible{
  outline:none!important;
  border:0!important;
  background:transparent!important;
  box-shadow:none!important
}
.site-language-toggle::after{
  width:28px!important;
  bottom:2px!important;
  box-shadow:0 1px 4px rgba(36,92,166,.08),0 1px 4px rgba(214,41,62,.06)!important;
  transition:width .30s cubic-bezier(.16,1,.3,1),opacity .24s ease!important
}
.site-language-switch:hover .site-language-toggle::after{width:31px!important}
.site-language-switch:active .site-language-toggle::after{width:25px!important}

@media(max-width:980px){
  .nav-links.mobile-nav-panel>.site-language-switch,
  .nav-links>.site-language-switch{
    border-color:rgba(58,101,132,.19)!important;
    background:linear-gradient(180deg,rgba(244,250,253,.17),rgba(220,238,248,.10))!important;
    box-shadow:inset 0 1px 0 rgba(255,255,255,.30)!important;
    backdrop-filter:blur(18px) saturate(116%)!important;
    -webkit-backdrop-filter:blur(18px) saturate(116%)!important
  }
  .nav-links.mobile-nav-panel>.site-language-switch .site-language-toggle,
  .nav-links>.site-language-switch .site-language-toggle{
    border:0!important;
    background:transparent!important;
    box-shadow:none!important;
    color:#35556d!important
  }
}

/* 3. Language transition:
   No colored card behind the Chinese/English demonstration. The atmosphere
   lives in the full frosted layer, while the typography floats cleanly above
   it. This keeps the transition larger and more premium without adding UI
   chrome. */
html::before{
  background:
    radial-gradient(ellipse 54% 48% at 12% 48%,rgba(44,116,172,.17),transparent 71%),
    radial-gradient(ellipse 50% 44% at 88% 53%,rgba(204,57,76,.095),transparent 72%),
    radial-gradient(ellipse 32% 22% at 50% 46%,rgba(255,255,255,.38),transparent 76%),
    linear-gradient(142deg,rgba(235,246,252,.925),rgba(247,250,252,.93) 57%,rgba(249,244,246,.91))!important;
  backdrop-filter:blur(18px) saturate(112%)!important;
  -webkit-backdrop-filter:blur(18px) saturate(112%)!important;
  transition:opacity .46s cubic-bezier(.22,1,.36,1)!important
}
html.semc-language-leaving::before{
  opacity:1!important;
  transition:opacity .38s cubic-bezier(.22,1,.36,1)!important
}
html.semc-language-arriving::before{
  opacity:1!important;
  transition:none!important
}
html.semc-language-arrival-reveal::before{
  opacity:0!important;
  transition:opacity .50s cubic-bezier(.22,1,.36,1)!important
}

.semc-language-transition-layer{
  background:transparent!important;
  backdrop-filter:none!important;
  -webkit-backdrop-filter:none!important;
  transition:opacity .34s cubic-bezier(.22,1,.36,1)!important
}
.semc-language-transition-minimal{
  min-width:min(650px,calc(100vw - 56px))!important;
  gap:clamp(34px,4vw,62px)!important;
  padding:24px 10px!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
  backdrop-filter:none!important;
  -webkit-backdrop-filter:none!important;
  opacity:0!important;
  transform:translate3d(0,12px,0) scale(.982)!important;
  filter:blur(5px)!important;
  transition:
    opacity .42s ease,
    transform .64s cubic-bezier(.16,1,.3,1),
    filter .50s cubic-bezier(.16,1,.3,1)!important
}
.semc-language-transition-layer.active .semc-language-transition-minimal{
  opacity:1!important;
  transform:translate3d(0,0,0) scale(1)!important;
  filter:blur(0)!important
}
.semc-language-transition-minimal>strong{
  min-width:126px!important;
  color:#315b78!important;
  font:710 clamp(42px,5.4vw,60px)/.98 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif!important;
  letter-spacing:-.035em!important;
  white-space:nowrap!important;
  text-shadow:0 1px 0 rgba(255,255,255,.38)!important;
  transition:
    color .42s ease,
    opacity .42s ease,
    transform .62s cubic-bezier(.16,1,.3,1)!important
}
.semc-language-transition-minimal>strong:first-child{
  text-align:right!important;
  color:#6e8798!important;
  transform:translateX(8px)
}
.semc-language-transition-minimal>strong:last-child{
  text-align:left!important;
  color:#245f8a!important;
  transform:translateX(-8px)
}
.semc-language-transition-layer.active .semc-language-transition-minimal>strong:first-child,
.semc-language-transition-layer.active .semc-language-transition-minimal>strong:last-child{
  transform:translateX(0)
}
.semc-language-transition-line{
  flex:0 0 148px!important;
  width:148px!important;
  height:34px!important
}
.semc-language-transition-line::before{
  left:0!important;
  right:0!important;
  height:1px!important;
  background:linear-gradient(
    90deg,
    rgba(44,110,163,.22),
    rgba(83,126,157,.13) 47%,
    rgba(195,78,94,.18)
  )!important
}
.semc-language-transition-line i{
  left:0!important;
  width:148px!important;
  height:1px!important;
  background:linear-gradient(
    90deg,
    #2f73a7 0%,
    #4b83aa 40%,
    #7c849a 50%,
    #af6579 60%,
    #d53c50 100%
  )!important;
  animation:semcLanguageLineOnceV407 .68s .08s cubic-bezier(.22,1,.36,1) forwards!important
}
.semc-language-transition-line b{
  width:34px!important;
  height:30px!important;
  border-radius:999px!important;
  background:rgba(244,249,252,.58)!important;
  color:#6d899c!important;
  font:620 20px/1 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif!important;
  box-shadow:0 0 0 6px rgba(244,249,252,.11)!important;
  backdrop-filter:blur(10px)!important;
  -webkit-backdrop-filter:blur(10px)!important;
  transform:scale(.92)!important;
  transition:transform .58s .14s cubic-bezier(.16,1,.3,1),color .42s ease!important
}
.semc-language-transition-layer.active .semc-language-transition-line b{
  transform:scale(1)!important;
  color:#52778f!important
}
@keyframes semcLanguageLineOnceV407{
  from{transform:translateY(-50%) scaleX(0);opacity:.20}
  34%{opacity:.70}
  to{transform:translateY(-50%) scaleX(1);opacity:1}
}

@media(max-width:980px){
  .semc-language-transition-minimal{
    min-width:0!important;
    width:calc(100vw - 42px)!important;
    gap:clamp(18px,5vw,30px)!important;
    padding:18px 4px!important
  }
  .semc-language-transition-minimal>strong{
    min-width:78px!important;
    font-size:clamp(30px,8.4vw,42px)!important
  }
  .semc-language-transition-line{
    flex-basis:92px!important;
    width:92px!important
  }
  .semc-language-transition-line i{width:92px!important}
}
@media(max-width:430px){
  .semc-language-transition-minimal{
    width:calc(100vw - 28px)!important;
    gap:12px!important
  }
  .semc-language-transition-minimal>strong{
    min-width:64px!important;
    font-size:28px!important
  }
  .semc-language-transition-line{
    flex-basis:66px!important;
    width:66px!important
  }
  .semc-language-transition-line i{width:66px!important}
  .semc-language-transition-line b{
    width:28px!important;
    height:26px!important;
    font-size:17px!important
  }
}
@media(prefers-reduced-motion:reduce){
  .site-language-switch,
  .site-language-toggle,
  .site-language-toggle::after,
  html::before,
  .semc-language-transition-layer,
  .semc-language-transition-minimal,
  .semc-language-transition-minimal>strong,
  .semc-language-transition-line b{
    transition:none!important
  }
  .semc-language-transition-line i{
    animation:none!important;
    transform:translateY(-50%) scaleX(1)!important
  }
}



/* ===== SEMC V4.0.8 · language action tone / hover-press refinement ===== */
.site-language-toggle{
  color:#355b79!important;
  font-weight:620!important;
  opacity:1!important;
  transition:
    color .28s cubic-bezier(.16,1,.3,1),
    transform .30s cubic-bezier(.16,1,.3,1),
    letter-spacing .30s cubic-bezier(.16,1,.3,1),
    opacity .24s ease!important
}
.site-language-switch:hover{
  border-color:rgba(53,91,121,.30)!important;
  background:linear-gradient(180deg,rgba(247,251,254,.245),rgba(222,238,248,.145))!important;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.38),
    0 5px 15px rgba(31,70,98,.050)!important;
  transform:translateY(-1px)!important
}
.site-language-toggle:hover{
  color:#17344f!important;
  background:transparent!important;
  transform:translateY(-.5px)!important;
  letter-spacing:.018em!important
}
.site-language-switch:active{
  transform:translateY(0) scale(.978)!important;
  box-shadow:
    inset 0 1px 2px rgba(30,67,93,.065),
    0 1px 3px rgba(31,70,98,.028)!important
}
.site-language-toggle:active{
  color:#17344f!important;
  background:transparent!important;
  opacity:.88!important;
  transform:scale(.962)!important
}
.site-language-switch:focus-within{
  border-color:rgba(53,91,121,.36)!important;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.34),
    0 0 0 2px rgba(53,91,121,.070)!important
}
@media(max-width:980px){
  .nav-links.mobile-nav-panel>.site-language-switch .site-language-toggle,
  .nav-links>.site-language-switch .site-language-toggle{
    color:#355b79!important
  }
}


/* ===== SEMC V4.0.9 · desktop language tone / mobile English resilience / Safari arrival ===== */

/* Desktop default state: the language action must be the same depth as the
   ordinary navigation text before hover, not a muted secondary label. */
@media(min-width:981px){
  .site-nav .site-language-switch .site-language-toggle,
  .site-nav .site-language-switch .site-language-next{
    color:#355b79!important;
    -webkit-text-fill-color:#355b79!important;
    opacity:1!important;
    filter:none!important;
    text-shadow:none!important
  }
  .site-nav .site-language-switch .site-language-toggle{
    font-weight:620!important
  }
}

/* Mobile drawer: leave a real safe gutter between the blue/red active rail and
   the English label. The text itself sits above the decorative rail so the
   first glyph can never be painted underneath it. */
@media(max-width:980px){
  html[data-site-lang="en"] body > .nav-links.mobile-nav-panel .nav-link,
  html[data-site-lang="en"] body > .nav-links.mobile-nav-panel .nav-link:hover,
  html[data-site-lang="en"] body > .nav-links.mobile-nav-panel .nav-link.active,
  html[data-site-lang="en"] body > .nav-links.mobile-nav-panel .nav-link.active:hover{
    box-sizing:border-box!important;
    padding-left:30px!important;
    padding-right:18px!important
  }
  html[data-site-lang="en"] body > .nav-links.mobile-nav-panel .nav-link > span{
    position:relative!important;
    z-index:2!important;
    display:block!important;
    min-width:0!important
  }

  /* The language action becomes one compact drawer row instead of a large
     floating tile. It retains the glass language treatment and touch target. */
  body > .nav-links.mobile-nav-panel .site-language-switch{
    order:99!important;
    align-self:stretch!important;
    flex:0 0 auto!important;
    width:auto!important;
    min-width:0!important;
    max-width:none!important;
    height:48px!important;
    min-height:48px!important;
    margin:10px 12px 5px!important;
    padding:3px!important;
    border-radius:14px!important
  }
  body > .nav-links.mobile-nav-panel .site-language-toggle{
    width:100%!important;
    min-width:0!important;
    height:40px!important;
    min-height:40px!important;
    padding:0 14px 4px!important;
    border-radius:11px!important;
    font-size:13px!important;
    color:#355b79!important;
    -webkit-text-fill-color:#355b79!important
  }
  body > .nav-links.mobile-nav-panel .site-language-next{
    color:inherit!important;
    -webkit-text-fill-color:currentColor!important;
    opacity:1!important
  }
}

/* English mobile layout safety:
   Long translated labels are allowed to grow vertically, while their parent
   buttons / controls never exceed the viewport. This deliberately leaves
   Chinese geometry unchanged. */
@media(max-width:700px){
  html[data-site-lang="en"] :where(
    .btn,
    .blue-btn,
    .service-request-upload-button,
    .service-request-submit
  ){
    box-sizing:border-box!important;
    width:auto;
    max-width:100%!important;
    min-width:0!important;
    height:auto!important;
    min-height:44px!important;
    padding-block:12px!important;
    padding-inline:clamp(14px,4.8vw,22px)!important;
    white-space:normal!important;
    line-height:1.28!important;
    text-align:center!important;
    justify-content:center!important;
    overflow:visible!important
  }

  html[data-site-lang="en"] :where(.btn,.blue-btn)>span:first-child{
    min-width:0!important;
    max-width:100%!important;
    white-space:normal!important;
    overflow-wrap:break-word!important;
    word-break:normal!important
  }
  html[data-site-lang="en"] :where(.btn,.blue-btn)>span:last-child,
  html[data-site-lang="en"] :where(.btn,.blue-btn)>b:last-child{
    flex:0 0 auto!important
  }

  html[data-site-lang="en"] :where(
    .content-detail-hint,
    .service-request-upload-button,
    .footer-contact-link
  ){
    max-width:100%!important;
    min-width:0!important;
    white-space:normal!important;
    overflow-wrap:break-word!important;
    word-break:normal!important;
    line-height:1.32!important
  }

  /* Homepage CTAs use content-aware flex sizing. On ordinary phones the long
     English labels naturally stack; on wider mobile / small tablet widths they
     may share a row when there is genuinely enough room. */
  html[data-site-lang="en"] body[data-page-id="home"] .hero-actions{
    display:flex!important;
    flex-wrap:wrap!important;
    align-items:stretch!important;
    gap:10px!important;
    width:100%!important
  }
  html[data-site-lang="en"] body[data-page-id="home"] .hero-actions .btn{
    flex:1 1 230px!important;
    width:auto!important;
    max-width:100%!important;
    min-width:min(100%,220px)!important;
    padding-inline:clamp(15px,5vw,22px)!important;
    font-size:clamp(12px,3.65vw,14px)!important
  }

  /* Generic content shells and card rows get one last mobile overflow guard.
     This covers dynamic modules added through the CMS as well as built-ins. */
  html[data-site-lang="en"] :where(
    .container,.cms-collection-host,.split,.cards-3,.industry-band,
    .content-card-grid,.equipment-grid,.gallery-2,.process,
    .detail-hero-grid,.contact-location-grid,.footer-main,
    .achievement-layout,.achievement-carousel,.v36-equipment-main,
    .v36-equipment-params,.service-request-grid,.cta-panel
  ){
    min-width:0!important;
    max-width:100%!important
  }
  html[data-site-lang="en"] :where(
    .section-title,.section-lead,.hero-copy h1,.hero-copy p,
    .service-card h3,.service-card p,.feature-item h3,.feature-item p,
    .content-story h3,.content-story p,.visual-content-card h3,.visual-content-card p,
    .achievement-card-copy h3,.achievement-card-copy p,
    .v36-certificate-copy h3,.v36-certificate-copy p,
    .contact-location-card,.location-line,.detail-hero-copy h1,.detail-hero-copy p
  ){
    max-width:100%!important;
    overflow-wrap:break-word!important;
    word-break:normal!important;
    hyphens:auto
  }
}

@media(max-width:520px){
  html[data-site-lang="en"] body[data-page-id="home"] .hero-actions .btn{
    flex-basis:100%!important;
    width:100%!important
  }
}

/* Safari / WebKit language-switch arrival:
   the full-screen homepage media previously replayed its 1.018 -> 1 scale
   entrance underneath the language hand-off. On desktop Safari that large
   composited layer can produce visible frame drops. The language transition
   already supplies the arrival motion, so keep the photograph at its final
   scale only during a language arrival; normal first-load / route animation
   remains unchanged. */
html.semc-language-arriving body[data-page-id="home"] .hero-media,
html.semc-language-arrival-reveal body[data-page-id="home"] .hero-media{
  scale:1!important;
  transition:none!important;
  will-change:auto!important
}
html.semc-language-arriving body[data-page-id="home"] #heroImage,
html.semc-language-arrival-reveal body[data-page-id="home"] #heroImage{
  transition:none!important;
  will-change:auto!important
}


/* ===== SEMC V4.1.0 · mobile language centering / Android video start control ===== */

/* Mobile drawer language action: exact optical + geometric centering.
   The visible target language uses the entire button box rather than inheriting
   the desktop bottom padding used to make room for the accent line. */
@media(max-width:980px){
  body > .nav-links.mobile-nav-panel .site-language-switch{
    height:52px!important;
    min-height:52px!important;
    padding:3px!important
  }
  body > .nav-links.mobile-nav-panel .site-language-toggle{
    position:relative!important;
    display:grid!important;
    place-items:center!important;
    width:100%!important;
    min-width:0!important;
    height:44px!important;
    min-height:44px!important;
    padding:0!important;
    line-height:1!important;
    font-size:16px!important;
    font-weight:680!important;
    text-align:center!important
  }
  body > .nav-links.mobile-nav-panel .site-language-next{
    position:absolute!important;
    inset:0!important;
    display:none!important;
    align-items:center!important;
    justify-content:center!important;
    width:100%!important;
    height:100%!important;
    padding:0!important;
    margin:0!important;
    line-height:1!important;
    text-align:center!important;
    transform:none!important
  }
  html[data-site-lang="zh"] body > .nav-links.mobile-nav-panel .site-language-next-en,
  html[data-site-lang="en"] body > .nav-links.mobile-nav-panel .site-language-next-zh{
    display:flex!important
  }
  body > .nav-links.mobile-nav-panel .site-language-toggle::after{
    bottom:4px!important
  }
}
@media(max-width:430px){
  body > .nav-links.mobile-nav-panel .site-language-toggle{
    font-size:16.5px!important
  }
}

/* Android/touch fallback:
   V3.4.3 intentionally hid the CMS play affordance on all coarse pointers,
   assuming the operating system would draw a native start button. Some Android
   Chromium/WebView builds do not. JS marks those players custom-mobile-player,
   so restore one clear play affordance until playback begins. */
@media (hover:none), (pointer:coarse){
  .cms-video-frame.custom-mobile-player:not(.has-started) .cms-video-play{
    display:grid!important;
    visibility:visible!important;
    opacity:1!important;
    pointer-events:auto!important;
    z-index:9!important
  }
  .cms-video-frame.custom-mobile-player:not(.has-started) .cms-video-ambient{
    display:block!important;
    visibility:visible!important;
    pointer-events:none!important
  }
  .cms-video-frame.custom-mobile-player:not(.has-started) .cms-video{
    z-index:1!important;
    pointer-events:auto!important
  }
  .cms-video-frame.custom-mobile-player .cms-video-play-ring{
    width:64px!important;
    height:64px!important
  }
  .cms-video-frame.custom-mobile-player .cms-video-play-ring::after{
    inset:-7px!important
  }
  .cms-video-frame.custom-mobile-player .cms-video-play svg{
    width:25px!important;
    height:25px!important
  }
}


/* ===== SEMC V4.1.1 · protected video delivery / adaptive mobile safety ===== */
.semc-protected-video{
  -webkit-touch-callout:none!important;
  -webkit-user-select:none!important;
  user-select:none!important
}

/* Shared min-width and wrapping guards keep both languages and future CMS-added
   modules inside the viewport without changing the desktop module geometry. */
@media(max-width:980px){
  :where(
    .hero-content,.hero-copy,.container,.cms-collection-host,.split,.industry-band,
    .cards-3,.content-card-grid,.equipment-grid,.gallery-2,.process,.page-grid,
    .detail-hero-grid,.contact-location-grid,.footer-main,.achievement-layout,
    .achievement-carousel,.v36-equipment-main,.v36-equipment-params,
    .service-request-grid,.cta-panel,.content-story,.visual-content-card
  ){
    min-width:0!important;
    max-width:100%!important
  }
  :where(
    .split,.industry-band,.cards-3,.content-card-grid,.equipment-grid,.gallery-2,
    .process,.page-grid,.detail-hero-grid,.contact-location-grid,.footer-main,
    .achievement-layout,.achievement-carousel,.v36-equipment-main,
    .v36-equipment-params,.service-request-grid,.cta-panel,.content-story,
    .visual-content-card
  )>*{min-width:0!important}
  :where(
    .section-title,.section-lead,.hero-copy h1,.hero-copy p,.page-hero h1,
    .service-card h3,.service-card p,.feature-item h3,.feature-item p,
    .content-story h3,.content-story p,.visual-content-card h3,.visual-content-card p,
    .achievement-card-copy h3,.achievement-card-copy p,.v36-certificate-copy h3,
    .v36-certificate-copy p,.detail-hero-copy h1,.detail-hero-copy p,
    .contact-location-card,.location-line
  ){
    max-width:100%!important;
    overflow-wrap:break-word!important;
    word-break:normal!important
  }
  :where(.btn,.blue-btn,.content-detail-hint,.service-request-upload-button,.service-request-submit){
    max-width:100%!important;
    min-width:0!important
  }
  .cms-video-frame,.cms-video-stage,.cms-video{max-width:100%!important}
}

/* Phone home hero: content can grow beyond one viewport, and negative CMS text
   offsets cannot move the first line underneath the fixed navigation. */
@media(max-width:700px){
  body[data-page-id="home"] .hero{
    height:auto!important;
    min-height:var(--cms-viewport-h,100dvh)!important;
    max-height:none!important;
    padding-top:max(calc(var(--nav-h) + 30px),calc(106px + var(--semc-safe-top)))!important
  }
  body[data-page-id="home"] .hero-content,
  body[data-page-id="home"] .hero-copy,
  body[data-page-id="home"] .hero-copy:hover{
    min-width:0!important;
    max-width:100%!important
  }
  body[data-page-id="home"] .hero-copy,
  body[data-page-id="home"] .hero-copy:hover{
    transform:translate3d(
      clamp(-24px,var(--cms-hero-text-x),24px),
      clamp(-10px,var(--cms-hero-text-y),80px),
      0
    )!important
  }
  body[data-page-id="home"] .hero-kicker{
    align-items:flex-start!important;
    max-width:100%!important;
    min-width:0!important;
    white-space:normal!important;
    overflow-wrap:break-word!important;
    word-break:normal!important
  }
  body[data-page-id="home"] .hero-kicker i{
    flex:0 0 28px!important;
    width:28px!important;
    margin-top:.65em!important
  }
  body[data-page-id="home"] .hero-kicker>span{
    min-width:0!important;
    max-width:100%!important
  }
}
@supports not (height:100dvh){
  @media(max-width:700px){
    body[data-page-id="home"] .hero{min-height:100vh!important}
  }
}

/* ===== SEMC V4.1.2 · mobile English flow / straight kicker / route first-paint guard ===== */

/* 首页眉题装饰：只保留一条蓝→红渐变直线；旧版本右端弧线彻底关闭。 */
body[data-page-id="home"] .hero-kicker i{
  position:relative!important;
  flex:0 0 42px!important;
  width:42px!important;
  height:2px!important;
  margin:0!important;
  border:0!important;
  border-radius:999px!important;
  background:linear-gradient(90deg,#55a0d8 0%,#6e8dad 43%,#9a7187 65%,#d7475b 100%)!important;
  box-shadow:0 2px 8px rgba(8,28,42,.18)!important;
  transform:none!important;
  overflow:hidden!important
}
body[data-page-id="home"] .hero-kicker i::before,
body[data-page-id="home"] .hero-kicker i::after{
  content:none!important;
  display:none!important;
  width:0!important;
  height:0!important;
  border:0!important;
  background:none!important;
  box-shadow:none!important
}

/* 顶部导航切换目标页时，先让 CMS 内容完成首轮布局再绘制 main/footer。
   semc-nav-arrival 已由 V4.1.1 的 <head> 首帧脚本提前设置，因此无需改动
   原有导航逻辑，也不会影响直接打开网址 / 刷新 / 后退前进。 */
html.semc-nav-arrival body:not(.semc-route-ready)>main,
html.semc-nav-arrival body:not(.semc-route-ready)>.corp-footer,
html.semc-nav-arrival body:not(.semc-route-ready)>.home-floating-contacts,
html.semc-nav-arrival body:not(.semc-route-ready)>.back-to-top{
  visibility:hidden!important;
  opacity:0!important;
  pointer-events:none!important;
  transform:none!important;
  transition:none!important
}

/* V4.1.1 已经允许手机 Hero 自动增高，但较早的 touch 规则仍可能锁死为 100svh，
   同时 Hero 仍采用底部对齐。English 内容一长，首行会向上溢进固定导航。
   V4.1.2 仅在 English + touch 下覆盖这两个旧约束：100svh 变为最小高度，
   文案从导航下方开始自然向下增长。Android / iOS / iPad 触屏共用。 */
@media(max-width:980px){
  html[data-site-lang="en"].semc-touch-device body[data-page-id="home"] .hero{
    height:auto!important;
    min-height:100svh!important;
    max-height:none!important;
    align-items:flex-start!important;
    padding-top:max(calc(var(--nav-h) + 30px),calc(106px + var(--semc-safe-top)))!important;
    padding-bottom:calc(32px + env(safe-area-inset-bottom,0px))!important;
    overflow:hidden!important
  }
  html[data-site-lang="en"].semc-touch-device body[data-page-id="home"] .hero-content{
    width:calc(100vw - 36px)!important;
    max-width:calc(100vw - 36px)!important;
    min-width:0!important;
    margin:0 auto!important;
    padding-left:0!important;
    padding-right:0!important
  }
  html[data-site-lang="en"].semc-touch-device body[data-page-id="home"] .hero-copy,
  html[data-site-lang="en"].semc-touch-device body[data-page-id="home"] .hero-copy:hover{
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
    transform:translate3d(
      clamp(-18px,var(--cms-hero-text-x),18px),
      clamp(0px,var(--cms-hero-text-y),72px),
      0
    )!important
  }

  html[data-site-lang="en"] body[data-page-id="home"] .hero-kicker{
    align-items:center!important;
    gap:10px!important;
    min-width:0!important;
    max-width:100%!important;
    white-space:normal!important;
    overflow-wrap:break-word!important;
    word-break:normal!important;
    line-height:1.42!important
  }
  html[data-site-lang="en"] body[data-page-id="home"] .hero-kicker>span{
    min-width:0!important;
    max-width:calc(100% - 48px)!important
  }
}

/* 手机 English 字号 / 行距采用 viewport clamp；标题、正文变长只增加 Hero 高度，
   不再通过负向溢出挤到导航栏后面。 */
@media(max-width:700px){
  html[data-site-lang="en"] body[data-page-id="home"] .hero h1{
    width:100%!important;
    max-width:100%!important;
    margin:12px 0 14px!important;
    font-size:clamp(34px,10.4vw,46px)!important;
    line-height:1.055!important;
    letter-spacing:-.035em!important;
    overflow-wrap:normal!important;
    word-break:normal!important;
    hyphens:none!important;
    text-wrap:balance
  }
  html[data-site-lang="en"] body[data-page-id="home"] .hero p{
    width:100%!important;
    max-width:100%!important;
    margin:0!important;
    font-size:clamp(13.5px,3.8vw,15px)!important;
    line-height:1.58!important;
    overflow-wrap:break-word!important;
    word-break:normal!important;
    hyphens:none!important;
    text-wrap:pretty
  }
  html[data-site-lang="en"] body[data-page-id="home"] .hero-actions{
    margin-top:18px!important
  }

  /* 全站移动端 English 标题 / 正文再加一层自然换行保护。
     只作用于窄屏，不改变 PC 版式。 */
  html[data-site-lang="en"] :where(
    .page-hero .section-title,
    .detail-hero-copy h1,
    .section-title
  ){
    min-width:0!important;
    max-width:100%!important;
    line-height:1.09!important;
    letter-spacing:-.025em!important;
    overflow-wrap:break-word!important;
    word-break:normal!important;
    hyphens:none!important;
    text-wrap:balance
  }
  html[data-site-lang="en"] :where(
    .page-hero .section-lead,
    .detail-hero-copy p,
    .section-lead,
    .service-card p,
    .content-story p,
    .visual-content-card p,
    .feature-item p
  ){
    min-width:0!important;
    max-width:100%!important;
    overflow-wrap:break-word!important;
    word-break:normal!important;
    hyphens:none!important;
    text-wrap:pretty
  }
}

@media(max-width:430px){
  html[data-site-lang="en"] body[data-page-id="home"] .hero h1{
    font-size:clamp(32px,9.8vw,40px)!important;
    line-height:1.06!important
  }
  html[data-site-lang="en"] body[data-page-id="home"] .hero p{
    font-size:13.5px!important;
    line-height:1.55!important
  }
}

@supports not (height:100svh){
  @media(max-width:980px){
    html[data-site-lang="en"].semc-touch-device body[data-page-id="home"] .hero{
      min-height:100vh!important
    }
  }
}



/* ===== SEMC V4.1.3 · route continuity / mobile English baseline / hero shade ===== */

/* V4.1.2 hid the complete destination main/footer until CMS layout was ready.
   That removed the one-frame footer content, but the page background underneath
   was white, so the handoff could still blink. V4.1.3 keeps the destination
   structural surfaces/media painted and hides only text/content until ready.
   The outgoing page also stays fully opaque until the real navigation occurs. */
@media(prefers-reduced-motion:no-preference){
  body.semc-page-leaving main,
  body.semc-page-leaving .corp-footer{
    opacity:1!important;
    transform:none!important;
    transition:none!important
  }
  body.semc-page-leaving .site-nav{
    opacity:1!important;
    transition:none!important
  }
}
html.semc-nav-arrival body:not(.semc-route-ready)>main,
html.semc-nav-arrival body:not(.semc-route-ready)>.corp-footer{
  visibility:visible!important;
  opacity:1!important;
  transform:none!important;
  transition:none!important;
  pointer-events:none!important
}
html.semc-nav-arrival body:not(.semc-route-ready)>main,
html.semc-nav-arrival body:not(.semc-route-ready)>main>.page{
  min-height:100svh!important
}
html.semc-nav-arrival body:not(.semc-route-ready)>main .hero .hero-content,
html.semc-nav-arrival body:not(.semc-route-ready)>main .page-hero>.container,
html.semc-nav-arrival body:not(.semc-route-ready)>main .page>:not(.hero):not(.page-hero)>*,
html.semc-nav-arrival body:not(.semc-route-ready)>.corp-footer>*{
  visibility:hidden!important;
  opacity:0!important;
  pointer-events:none!important;
  transition:none!important
}
@supports not (height:100svh){
  html.semc-nav-arrival body:not(.semc-route-ready)>main,
  html.semc-nav-arrival body:not(.semc-route-ready)>main>.page{min-height:100vh!important}
}

/* English touch layout now uses the same vertical centring baseline as Chinese.
   The hero remains auto-height (100svh is only a minimum), so long translations
   grow the cover downward instead of forcing their first line under the nav. */
@media(max-width:1180px){
  html[data-site-lang="en"].semc-touch-device body[data-page-id="home"] .hero{
    height:auto!important;
    min-height:100svh!important;
    max-height:none!important;
    align-items:center!important;
    padding-top:max(calc(var(--nav-h) + 30px),calc(106px + var(--semc-safe-top)))!important;
    padding-bottom:calc(32px + env(safe-area-inset-bottom,0px))!important
  }
}
@supports not (height:100svh){
  @media(max-width:1180px){
    
  }
}

/* Keep the readability shade continuous through the physical bottom edge.
   Earlier seam fixes intentionally faded the overlay to transparent at 100%;
   that exposed a light strip below the copy on both phone and desktop. */
body[data-page-id="home"] .hero::after{
  display:block!important;
  top:-1px!important;
  right:-1px!important;
  bottom:-26px!important;
  left:-1px!important;
  background:
    linear-gradient(
      180deg,
      rgba(5,19,30,0) 40%,
      rgba(5,19,30,.08) 58%,
      rgba(5,19,30,.30) 78%,
      rgba(5,19,30,.54) 100%
    ),
    linear-gradient(
      90deg,
      rgba(7,28,43,.42) 0%,
      rgba(7,28,43,.20) 30%,
      rgba(7,28,43,0) 60%
    )!important
}
@media(max-width:700px){
  body[data-page-id="home"] .hero::after{
    background:
      linear-gradient(
        180deg,
        rgba(5,19,30,0) 34%,
        rgba(5,19,30,.09) 54%,
        rgba(5,19,30,.34) 76%,
        rgba(5,19,30,.60) 100%
      ),
      linear-gradient(
        90deg,
        rgba(7,28,43,.43) 0%,
        rgba(7,28,43,.21) 34%,
        rgba(7,28,43,0) 66%
      )!important
  }
}


/* ===== SEMC V4.1.4 · clipped button sweep / stable route footer / press feedback ===== */

/* 1) Button light sweep containment.
   Some English mobile rules need flexible text wrapping and historically set
   overflow:visible on .btn/.blue-btn. That let the rotated highlight pseudo
   element escape the pill. Restore hard clipping at the shared button layer. */
.btn,
.blue-btn{
  overflow:hidden!important;
  overflow:clip!important;
  isolation:isolate!important;
  -webkit-tap-highlight-color:transparent
}
.btn::before,
.btn:before,
.blue-btn::before,
.blue-btn:before{
  pointer-events:none!important
}

/* Touch browsers synthesize :hover during a tap. Let the sweep run only while
   our explicit press state is active, so it cannot leave a one-frame diagonal
   artifact after the finger has already released. */
@keyframes semcButtonTouchSweepV414{
  0%{left:-45%}
  100%{left:115%}
}
@media (hover:none), (pointer:coarse){
  .btn:hover::before,
  .btn:hover:before,
  .blue-btn:hover::before,
  .blue-btn:hover:before{
    left:-45%!important
  }
  .btn.semc-pressing::before,
  .btn.semc-pressing:before,
  .blue-btn.semc-pressing::before,
  .blue-btn.semc-pressing:before{
    animation:semcButtonTouchSweepV414 .46s cubic-bezier(.22,1,.36,1) both!important
  }
}

/* 2) A visible but restrained press/release phase for buttons and generated
   detail links/cards. Navigation is delayed by only ~0.1 s in JS, enough for
   several rendered frames instead of the previous single-frame :active flash. */
.btn,
.blue-btn,
.cms-module-detail-link,
.cms-detail-link{
  -webkit-tap-highlight-color:transparent;
  transition:
    transform .24s cubic-bezier(.22,1,.36,1),
    filter .24s cubic-bezier(.22,1,.36,1),
    opacity .20s ease,
    box-shadow .24s cubic-bezier(.22,1,.36,1)!important
}
.btn.semc-pressing,
.blue-btn.semc-pressing,
.cms-module-detail-link.semc-pressing,
.cms-detail-link.semc-pressing{
  transform:translateY(1px) scale(.985)!important;
  filter:brightness(.985)!important;
  transition-duration:.13s!important
}
[data-cms-detail-href].semc-pressing{
  filter:brightness(.975) saturate(.99)!important;
  transition:filter .14s ease!important
}
button.semc-pressing{
  opacity:.93!important;
  transition:opacity .13s ease!important
}
@media (hover:hover) and (pointer:fine){
  .cms-detail-link:hover{
    filter:brightness(1.01)
  }
}
@media(prefers-reduced-motion:reduce){
  .btn.semc-pressing,
  .blue-btn.semc-pressing,
  .cms-module-detail-link.semc-pressing,
  .cms-detail-link.semc-pressing,
  [data-cms-detail-href].semc-pressing,
  button.semc-pressing{
    transform:none!important;
    filter:none!important;
    opacity:1!important;
    animation:none!important;
    transition:none!important
  }
}

/* 3) Route footer continuity.
   Do not tint the outgoing / incoming touch page with the historical pale-blue
   full-screen veil. It was the remaining visible "white flash" when navigating
   while already scrolled to a footer. Keep the footer itself fully opaque during
   route-prep and page-leaving; the head bootstrap resets destination scroll to
   the top before first paint. */
@media(prefers-reduced-motion:no-preference){
  html.semc-touch-device body.semc-route-prep::after,
  html.semc-touch-device body.semc-page-leaving::after,
  html.semc-touch-device body.semc-route-prep.semc-route-ready::after,
  html.semc-touch-device body.semc-route-prep.semc-route-ready.semc-page-leaving::after{
    content:none!important;
    display:none!important;
    visibility:hidden!important;
    opacity:0!important;
    transition:none!important
  }
  body.semc-route-prep .corp-footer,
  body.semc-page-leaving .corp-footer{
    opacity:1!important;
    transform:none!important;
    filter:none!important;
    transition:none!important
  }
}
html.semc-nav-arrival,
html.semc-nav-arrival body{
  scroll-behavior:auto!important;
  overflow-anchor:none!important
}


/* ===== SEMC V4.1.6 · route snapshot / English touch baseline / preview-safe sweep ===== */

/* 默认关闭跨文档快照；V5.1.1 仅在 Chromium 运行时显式开启。这样 WebKit
   不会在脚本加载前先进入会丢失 backdrop-filter 的根页面快照路径。 */
@view-transition{
  navigation:none
}
::view-transition-group(root){
  animation-duration:.16s;
  animation-timing-function:cubic-bezier(.22,1,.36,1)
}
::view-transition-old(root){
  animation:none;
  opacity:1
}
::view-transition-new(root){
  animation:semcRouteNewV416 .16s cubic-bezier(.22,1,.36,1) both
}
@keyframes semcRouteNewV416{
  from{opacity:.985}
  to{opacity:1}
}

/* 不支持跨文档 View Transition 的回退：V4.1.8 不再把整个目标 body
   染成深色，而是只保留来源页面中真正可见的页脚区域。上方浅色内容维持
   原样，底部 handoff band 固定为页脚 #121619，避免页脚 -> 页脚时白闪。 */
html.semc-nav-arrival-footer{
  background-color:#fff!important;
  background-image:linear-gradient(
    to bottom,
    #fff 0 var(--semc-footer-handoff-top,60vh),
    #121619 var(--semc-footer-handoff-top,60vh) 100%
  )!important
}
html.semc-nav-arrival-footer::after{
  content:"";
  position:fixed;
  left:0;
  right:0;
  top:var(--semc-footer-handoff-top,60vh);
  bottom:0;
  z-index:999;
  display:block;
  pointer-events:none;
  background:#121619!important;
  opacity:1!important;
  transform:none!important;
  transition:none!important
}

/* English 手机/触屏 Hero 和中文版一样从下方基线排版。
   仍保持 auto-height + 100svh minimum：文字短时整体更靠下，文字变长时
   Hero 自动向下增长，不会把首行压入导航，也不会把按钮推出封面边界。 */
@media(max-width:1180px){
  html[data-site-lang="en"].semc-touch-device body[data-page-id="home"] .hero{
    height:auto!important;
    min-height:100svh!important;
    max-height:none!important;
    align-items:flex-end!important;
    padding-top:max(calc(var(--nav-h) + 48px),calc(124px + var(--semc-safe-top)))!important;
    padding-bottom:calc(38px + env(safe-area-inset-bottom,0px))!important;
    overflow:hidden!important
  }
  html[data-site-lang="en"].semc-touch-device body[data-page-id="home"] .hero-content{
    align-self:flex-end!important;
    min-width:0!important;
    max-width:100%!important
  }
  html[data-site-lang="en"].semc-touch-device body[data-page-id="home"] .hero-copy,
  html[data-site-lang="en"].semc-touch-device body[data-page-id="home"] .hero-copy:hover{
    min-width:0!important;
    max-width:100%!important
  }
}
@supports not (height:100svh){
  @media(max-width:1180px){
    html[data-site-lang="en"].semc-touch-device body[data-page-id="home"] .hero{
      min-height:100vh!important
    }
  }
}

/* 手机宽度进一步保证长英文正文与两个 CTA 都留在 Hero 自己的流式高度内。 */
@media(max-width:700px){
  html[data-site-lang="en"].semc-touch-device body[data-page-id="home"] .hero-content{
    width:calc(100vw - 36px)!important;
    max-width:calc(100vw - 36px)!important
  }
  html[data-site-lang="en"].semc-touch-device body[data-page-id="home"] .hero-copy{
    width:100%!important
  }
  html[data-site-lang="en"].semc-touch-device body[data-page-id="home"] .hero-actions{
    width:100%!important;
    max-width:100%!important;
    margin-top:20px!important;
    padding-bottom:0!important
  }
  html[data-site-lang="en"].semc-touch-device body[data-page-id="home"] .hero-actions .btn{
    max-width:100%!important
  }
}

/* CMS 右侧预览是编辑辅助界面，不需要真实站点的扫光 hover。
   直接关闭预览 iframe 内的扫光伪元素，彻底避免缩放后的手机预览里出现
   一帧三角亮光越出圆角按钮。正式官网仍保留既有按钮交互。 */
body.cms-preview-mode .btn::before,
body.cms-preview-mode .btn:before,
body.cms-preview-mode .blue-btn::before,
body.cms-preview-mode .blue-btn:before{
  content:none!important;
  display:none!important;
  animation:none!important;
  transition:none!important
}

/* ===== SEMC V4.1.8 · full language hit target / footer-color handoff ===== */
/* The outer glass shell is visually one button, so every pixel of that shell
   uses the same pointer affordance. JS handles clicks from the shell padding / border. */
.site-language-switch{cursor:pointer!important}
.site-language-switch.is-switching{pointer-events:none!important;cursor:default!important}
.site-language-toggle{cursor:pointer!important}

/* ===== SEMC V4.2.2 · development timeline alignment / connector continuity ===== */
/* Desktop copy follows normal reading direction. Connector halves meet at the
   same pale midpoint, so each year-to-year segment transitions smoothly from
   deep blue near a node to light blue at the middle and back to deep blue. */
.v36-timeline-item{text-align:left!important}
.v36-timeline-year{justify-content:flex-start!important;text-align:left!important}
.v36-timeline-text,
.v36-timeline-grid[data-cols="3"] .v36-timeline-text,
.v36-timeline-grid[data-cols="4"] .v36-timeline-text{text-align:left!important}
.v36-timeline-point:after{background:linear-gradient(90deg,#3f82b9 0%,#5d94bf 48%,#8db7d5 100%)!important}
.v36-timeline-point:before{background:linear-gradient(90deg,#8db7d5 0%,#5d94bf 52%,#3f82b9 100%)!important}
@media(max-width:760px){
  .v36-timeline-year{justify-content:flex-start!important;text-align:left!important;padding-left:0!important;padding-right:10px!important}
  .v36-timeline-text{text-align:left!important}
}

/* ===== SEMC V4.2.3 · configurable timeline rows / centered mobile connector ===== */
@media(min-width:761px){
  .v36-timeline-grid .v36-timeline-item:not([data-row-start="1"]) .v36-timeline-point:before{
    display:block!important
  }
  .v36-timeline-grid .v36-timeline-item:not([data-row-end="1"]) .v36-timeline-point:after{
    display:block!important
  }
  .v36-timeline-grid .v36-timeline-item[data-row-start="1"] .v36-timeline-point:before{
    display:none!important
  }
  .v36-timeline-grid .v36-timeline-item[data-row-end="1"] .v36-timeline-point:after{
    display:none!important
  }
}
@media(max-width:760px){
  .v36-timeline-grid .v36-timeline-point:before,
  .v36-timeline-grid .v36-timeline-point:after{
    left:50%!important;
    right:auto!important;
    width:1px!important;
    transform:translateX(-50%)!important
  }
  .v36-timeline-grid .v36-timeline-point:before{
    background:linear-gradient(180deg,#8db7d5 0%,#5d94bf 52%,#3f82b9 100%)!important
  }
  .v36-timeline-grid .v36-timeline-point:after{
    background:linear-gradient(180deg,#3f82b9 0%,#5d94bf 48%,#8db7d5 100%)!important
  }
}

/* ===== SEMC V4.2.4 · six-slot timeline geometry / justified copy ===== */
@media(min-width:761px){
  /* Keep the same physical card width used by the original six-year layout.
     Fewer cards are distributed between the same outer anchors instead of
     stretching their columns, so years, nodes and connector geometry stay stable. */
  .v36-timeline-section .v36-timeline-grid{
    grid-template-columns:repeat(360,minmax(0,1fr))!important;
    grid-auto-flow:row!important;
    column-gap:0!important
  }
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item{
    grid-column:var(--v424-col-start,1) / span 60!important;
    grid-row:var(--v424-row,1)!important;
    min-width:0!important
  }
  /* The year itself remains left-aligned, while its intrinsic box is centered
     over the node so the date and dot are visually paired. */
  .v36-timeline-section .v36-timeline-year{
    width:max-content!important;
    max-width:100%!important;
    margin-left:50%!important;
    transform:translateX(-50%)!important;
    padding:0 0 10px!important;
    justify-content:flex-start!important;
    text-align:left!important
  }
  /* Chinese copy receives proper full-line justification; long Western tokens
     such as VPI / IEC model strings may wrap instead of forcing uneven columns. */
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item .v36-timeline-text{
    text-align:justify!important;
    text-align-last:left!important;
    text-justify:inter-character;
    overflow-wrap:anywhere!important;
    word-break:normal!important;
    line-break:auto;
    hyphens:auto
  }
  /* One segment is drawn from each node directly to the next node. The segment
     width is calculated from the real item count in that row, so blank spacing
     never disconnects or shifts the line. */
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item .v36-timeline-point:before{
    display:none!important
  }
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item .v36-timeline-point:after{
    display:block!important;
    left:50%!important;
    right:auto!important;
    width:var(--v424-segment,100%)!important;
    height:1px!important;
    background:linear-gradient(90deg,#3f82b9 0%,#5d94bf 48%,#8db7d5 50%,#5d94bf 52%,#3f82b9 100%)!important
  }
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item[data-row-end="1"] .v36-timeline-point:after{
    display:none!important
  }
}

/* ===== SEMC V4.2.7 · effective CMS line-height across dedicated text containers ===== */
/* Applied by site.js only when the CMS text span is the sole child of a safe
   dedicated text container (P/Hx/list/DIV/figcaption/address). Its own
   font-size + line-height can then define wrapping instead of the larger
   parent line box; buttons, links, chips and mixed-content wrappers are excluded. */
.cms-text-linebox{display:block;max-width:100%;min-width:0}

/* ===== SEMC V4.3.2 · tablet timeline English rhythm ===== */
/* Keep desktop node/connector geometry unchanged. English copy gets slightly
   more usable width (roughly two extra letters per line) by reclaiming the
   old side padding. On tablet widths, left alignment prevents full
   justification from creating the large inter-word gaps seen on iPad. */
@media(min-width:761px){
  html[data-site-lang="en"] .v36-timeline-section .v36-timeline-grid .v36-timeline-item .v36-timeline-text{
    padding-left:6px!important;
    padding-right:6px!important
  }
}
@media(min-width:761px) and (max-width:1180px){
  html[data-site-lang="en"] .v36-timeline-section .v36-timeline-grid .v36-timeline-item .v36-timeline-text{
    text-align:left!important;
    text-align-last:auto!important;
    text-justify:auto!important;
    overflow-wrap:break-word!important;
    word-break:normal!important;
    hyphens:auto!important
  }
}

/* ===== SEMC V4.3.3 · iPad navigation / timeline / intentional CMS spacing ===== */
[data-cms-key]{tab-size:4}

/* V4.0.4 hid the long English company name from compact desktop widths. iPad
   landscape has enough room once the brand uses two compact lines. */
@media(min-width:981px) and (max-width:1220px){
  html[data-site-lang="en"] .site-nav{gap:6px!important}
  html[data-site-lang="en"] .brand{
    flex:1 1 285px!important;min-width:245px!important;gap:8px!important
  }
  html[data-site-lang="en"] .brand-logo{
    flex:0 0 auto!important;width:clamp(104px,9.2vw,118px)!important;max-height:45px!important
  }
  html[data-site-lang="en"] .brand-name{
    display:block!important;flex:0 1 168px!important;width:auto!important;min-width:0!important;
    max-width:168px!important;white-space:normal!important;line-height:1.08!important
  }
  html[data-site-lang="en"] .brand-name span{
    display:block!important;font-size:9.4px!important;line-height:1.12!important;
    white-space:normal!important;overflow-wrap:normal!important;word-break:normal!important
  }
}

/* Tablet timeline uses the configured row count itself rather than the PC
   six-slot physical card width. This widens each iPad card and removes the
   empty gaps between cards. Both languages use natural left alignment here. */
@media(min-width:761px) and (max-width:1366px){
  .v36-timeline-section .container{width:min(96vw,1360px)!important}
  .v36-timeline-section .v36-timeline-grid{
    grid-template-columns:repeat(var(--v365-timeline-cols,6),minmax(0,1fr))!important;
    grid-auto-flow:row!important;column-gap:0!important;row-gap:38px!important
  }
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item{
    grid-column:auto!important;grid-row:auto!important;min-width:0!important
  }
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item .v36-timeline-text{
    padding-left:8px!important;padding-right:8px!important;text-align:left!important;
    text-align-last:auto!important;text-justify:auto!important;word-spacing:normal!important;
    overflow-wrap:break-word!important;word-break:normal!important;hyphens:auto!important
  }
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item[data-row-start] .v36-timeline-point:before,
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item[data-row-end] .v36-timeline-point:after{
    display:block!important;width:auto!important;transform:none!important
  }
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item .v36-timeline-point:before{
    left:0!important;right:50%!important;width:auto!important;
    background:linear-gradient(90deg,#8db7d5 0%,#5d94bf 52%,#3f82b9 100%)!important
  }
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item .v36-timeline-point:after{
    left:50%!important;right:0!important;width:auto!important;
    background:linear-gradient(90deg,#3f82b9 0%,#5d94bf 48%,#8db7d5 100%)!important
  }
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item[data-row-start="1"] .v36-timeline-point:before,
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item[data-row-end="1"] .v36-timeline-point:after{
    display:none!important
  }
}

/* ===== SEMC V4.3.4 · paragraph/title helpers / calmer iPad timeline ===== */
.cms-paragraph-stack{display:block;width:100%;max-width:100%;min-width:0}
.cms-paragraph-line{display:block;min-width:0;max-width:100%}
.cms-first-indent{text-indent:2em}
.cms-numbered-line{display:flex!important;align-items:flex-start!important;text-indent:0!important}
.cms-numbered-prefix{flex:0 0 auto;white-space:nowrap}
.cms-numbered-body{flex:1 1 auto;min-width:0}

/* iPad/tablet: the PC-configured row count can still be too dense at tablet
   widths. Use a calmer 3-column portrait/smaller-tablet rhythm and 4-column
   wide-tablet rhythm for both languages. Desktop and mobile remain unchanged. */
@media(min-width:761px) and (max-width:900px){
  .v36-timeline-section .container{width:min(94vw,980px)!important}
  .v36-timeline-section .v36-timeline-grid{
    grid-template-columns:repeat(3,minmax(0,1fr))!important;
    grid-auto-flow:row!important;column-gap:0!important;row-gap:30px!important
  }
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item{
    grid-column:auto!important;grid-row:auto!important;min-width:0!important;height:100%!important
  }
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item .v36-timeline-text{
    padding:12px clamp(12px,1.8vw,18px) 0!important;
    font-size:12.5px!important;line-height:1.68!important;text-align:left!important;
    text-align-last:auto!important;text-justify:auto!important;word-spacing:normal!important;
    overflow-wrap:break-word!important;word-break:normal!important;hyphens:auto!important
  }
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item[data-row-start] .v36-timeline-point:before,
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item[data-row-end] .v36-timeline-point:after,
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item .v36-timeline-point:before,
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item .v36-timeline-point:after{
    display:block!important;left:0!important;right:50%!important;width:auto!important;height:1px!important;transform:none!important
  }
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item .v36-timeline-point:after{
    left:50%!important;right:0!important
  }
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item:nth-child(3n+1) .v36-timeline-point:before,
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item:nth-child(3n) .v36-timeline-point:after,
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item:last-child .v36-timeline-point:after{
    display:none!important
  }
}
@media(min-width:901px) and (max-width:1366px){
  .v36-timeline-section .container{width:min(94vw,1280px)!important}
  .v36-timeline-section .v36-timeline-grid{
    grid-template-columns:repeat(4,minmax(0,1fr))!important;
    grid-auto-flow:row!important;column-gap:0!important;row-gap:32px!important
  }
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item{
    grid-column:auto!important;grid-row:auto!important;min-width:0!important;height:100%!important
  }
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item .v36-timeline-text{
    padding:12px clamp(12px,1.35vw,20px) 0!important;
    font-size:12.5px!important;line-height:1.68!important;text-align:left!important;
    text-align-last:auto!important;text-justify:auto!important;word-spacing:normal!important;
    overflow-wrap:break-word!important;word-break:normal!important;hyphens:auto!important
  }
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item[data-row-start] .v36-timeline-point:before,
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item[data-row-end] .v36-timeline-point:after,
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item .v36-timeline-point:before,
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item .v36-timeline-point:after{
    display:block!important;left:0!important;right:50%!important;width:auto!important;height:1px!important;transform:none!important
  }
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item .v36-timeline-point:after{
    left:50%!important;right:0!important
  }
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item:nth-child(4n+1) .v36-timeline-point:before,
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item:nth-child(4n) .v36-timeline-point:after,
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item:last-child .v36-timeline-point:after{
    display:none!important
  }
}

/* ===== SEMC V4.3.5 · editable case / exact honor ratio / balanced iPad timeline ===== */
/* CMS-entered letter case is authoritative. Older visual kickers used inherited
   text-transform:uppercase; the CMS span now neutralizes that inheritance unless
   the editor explicitly enables the reversible “全部大写” style. */
[data-cms-key]{text-transform:none}

/* Double-A4 honor module: requested portrait display is width:height = 1:1.4. */
.v365-standard-paper.portrait .v36-honor-paper{aspect-ratio:5/7!important}

/* iPad/tablet timeline: use three generous columns for both orientations. Wider
   text cells allow real two-edge alignment without the exaggerated spacing seen
   in narrow English columns. Connector rows are recalculated independently of
   the PC row metadata so years/dots/lines remain continuous on iPad. */
@media(min-width:761px) and (max-width:1366px){
  .v36-timeline-section .container{width:min(94vw,1180px)!important}
  .v36-timeline-section .v36-timeline-grid{
    grid-template-columns:repeat(3,minmax(0,1fr))!important;
    grid-auto-flow:row!important;column-gap:0!important;row-gap:52px!important
  }
  
  .v36-timeline-section .v36-timeline-grid .v36-timeline-year{
    padding-left:24px!important;padding-right:24px!important
  }
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item .v36-timeline-text{
    padding:14px clamp(20px,2.35vw,30px) 0!important;
    font-size:12.5px!important;line-height:1.72!important;
    text-align:justify!important;text-align-last:left!important;
    overflow-wrap:break-word!important;word-break:normal!important;hyphens:auto!important
  }
  
  
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item .v36-timeline-point:before,
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item .v36-timeline-point:after,
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item[data-row-start="1"] .v36-timeline-point:before,
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item[data-row-end="1"] .v36-timeline-point:after{
    display:block!important;top:50%!important;height:1px!important;width:auto!important;transform:none!important
  }
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item .v36-timeline-point:before{
    left:0!important;right:50%!important;
    background:linear-gradient(90deg,#8db7d5 0%,#5d94bf 52%,#3f82b9 100%)!important
  }
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item .v36-timeline-point:after{
    left:50%!important;right:0!important;
    background:linear-gradient(90deg,#3f82b9 0%,#5d94bf 48%,#8db7d5 100%)!important
  }
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item:nth-child(3n+1) .v36-timeline-point:before,
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item:nth-child(3n) .v36-timeline-point:after,
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item:last-child .v36-timeline-point:after{
    display:none!important
  }
}

/* ===== SEMC V4.3.6 · adaptive 4–6 column iPad timeline ===== */
/* iPad/tablet timeline returns to a denser 4–6 items per row, selected only
   from the live viewport width.  The tablet grid deliberately ignores the PC
   row metadata for geometry, then rebuilds row starts/ends from the effective
   4/5/6-column count so years, nodes and connector lines cannot drift apart. */
@media(min-width:761px) and (max-width:1366px){
  .v36-timeline-section .container{
    width:min(94vw,1320px)!important
  }
  .v36-timeline-section .v36-timeline-grid{
    grid-auto-flow:row!important;
    column-gap:0!important;
    row-gap:50px!important
  }
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item{
    grid-column:auto!important;
    grid-row:auto!important;
    min-width:0!important;
    height:100%!important
  }
  .v36-timeline-section .v36-timeline-grid .v36-timeline-year{
    width:max-content!important;
    max-width:100%!important;
    margin-left:50%!important;
    transform:translateX(-50%)!important;
    padding:0 0 10px!important;
    text-align:left!important
  }
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item .v36-timeline-text{
    box-sizing:border-box!important;
    padding:14px var(--v436-copy-pad,20px) 0!important;
    font-size:12.5px!important;
    line-height:1.70!important;
    text-align:justify!important;
    text-align-last:left!important;
    overflow-wrap:break-word!important;
    word-break:normal!important;
    hyphens:auto!important
  }
  html[data-site-lang="zh"] .v36-timeline-section .v36-timeline-grid .v36-timeline-item .v36-timeline-text{
    text-justify:inter-character!important;
    word-spacing:normal!important
  }
  html[data-site-lang="en"] .v36-timeline-section .v36-timeline-grid .v36-timeline-item .v36-timeline-text{
    text-justify:inter-word!important;
    word-spacing:normal!important;
    hyphenate-limit-chars:8 4 4
  }

  /* Reset every historical PC/tablet row-boundary rule first. */
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item .v36-timeline-point:before,
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item .v36-timeline-point:after,
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item[data-row-start] .v36-timeline-point:before,
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item[data-row-end] .v36-timeline-point:after,
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item:nth-child(3n+1) .v36-timeline-point:before,
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item:nth-child(3n) .v36-timeline-point:after,
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item:nth-child(4n+1) .v36-timeline-point:before,
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item:nth-child(4n) .v36-timeline-point:after{
    display:block!important;
    top:50%!important;
    height:1px!important;
    width:auto!important;
    transform:none!important
  }
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item .v36-timeline-point:before,
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item[data-row-start] .v36-timeline-point:before{
    left:0!important;
    right:50%!important;
    background:linear-gradient(90deg,#8db7d5 0%,#5d94bf 52%,#3f82b9 100%)!important
  }
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item .v36-timeline-point:after,
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item[data-row-end] .v36-timeline-point:after{
    left:50%!important;
    right:0!important;
    background:linear-gradient(90deg,#3f82b9 0%,#5d94bf 48%,#8db7d5 100%)!important
  }
}

/* Compact / portrait iPad: four years per row. */
@media(min-width:761px) and (max-width:1024px){
  .v36-timeline-section .v36-timeline-grid{
    grid-template-columns:repeat(4,minmax(0,1fr))!important;
    --v436-copy-pad:24px
  }
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item[data-row-start]:nth-child(4n+1) .v36-timeline-point:before,
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item:nth-child(4n+1) .v36-timeline-point:before,
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item[data-row-end]:nth-child(4n) .v36-timeline-point:after,
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item:nth-child(4n) .v36-timeline-point:after,
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item:last-child .v36-timeline-point:after{
    display:none!important
  }
}

/* Mid-size iPad landscape: five years per row. */
@media(min-width:1025px) and (max-width:1199px){
  .v36-timeline-section .v36-timeline-grid{
    grid-template-columns:repeat(5,minmax(0,1fr))!important;
    --v436-copy-pad:22px
  }
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item[data-row-start]:nth-child(5n+1) .v36-timeline-point:before,
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item:nth-child(5n+1) .v36-timeline-point:before,
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item[data-row-end]:nth-child(5n) .v36-timeline-point:after,
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item:nth-child(5n) .v36-timeline-point:after,
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item:last-child .v36-timeline-point:after{
    display:none!important
  }
}

/* Wide iPad Pro / tablet landscape: six years per row. */
@media(min-width:1200px) and (max-width:1366px){
  .v36-timeline-section .v36-timeline-grid{
    grid-template-columns:repeat(6,minmax(0,1fr))!important;
    --v436-copy-pad:18px
  }
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item[data-row-start]:nth-child(6n+1) .v36-timeline-point:before,
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item:nth-child(6n+1) .v36-timeline-point:before,
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item[data-row-end]:nth-child(6n) .v36-timeline-point:after,
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item:nth-child(6n) .v36-timeline-point:after,
  .v36-timeline-section .v36-timeline-grid .v36-timeline-item:last-child .v36-timeline-point:after{
    display:none!important
  }
}

/* ===== SEMC V4.3.7 · iPad timeline natural spacing / equal copy gaps ===== */
/*
   Keep V4.3.6's stable 4 / 5 / 6-column tablet geometry and connector rules.
   The remaining visual gaps came from full justification: CJK runs containing
   Latin model names/numbers and narrow English columns could be stretched
   dramatically. On iPad/tablet only, use natural left alignment for both
   languages and apply the exact same inline padding to zh/en. This removes
   artificial word/character expansion while keeping intentional CMS spaces.
*/
@media(min-width:761px) and (max-width:1366px){
  html[data-site-lang="zh"] .v36-timeline-section .v36-timeline-grid .v36-timeline-item .v36-timeline-text,
  html[data-site-lang="en"] .v36-timeline-section .v36-timeline-grid .v36-timeline-item .v36-timeline-text{
    padding-left:var(--v436-copy-pad,20px)!important;
    padding-right:var(--v436-copy-pad,20px)!important;
    text-align:left!important;
    text-align-last:auto!important;
    text-justify:auto!important;
    word-spacing:normal!important
  }
  html[data-site-lang="zh"] .v36-timeline-section .v36-timeline-grid .v36-timeline-item .v36-timeline-text{
    overflow-wrap:break-word!important;
    word-break:normal!important
  }
  html[data-site-lang="en"] .v36-timeline-section .v36-timeline-grid .v36-timeline-item .v36-timeline-text{
    overflow-wrap:break-word!important;
    word-break:normal!important;
    hyphens:auto!important;
    hyphenate-limit-chars:8 4 4
  }
}

/* ===== SEMC V4.3.8 · backend-driven justified iPad timeline ===== */
/*
   Tablet/iPad follows the CMS timeline "PC 每行年份数量" again. The renderer
   already exposes that value as --v365-timeline-cols and calculates
   data-row-start/data-row-end from the same count. This final tablet layer
   deliberately overrides V4.3.6's viewport-only 4/5/6 column rules without
   changing desktop or mobile behavior.

   Copy remains fully justified, but both CJK and English may break inside
   Western words/tokens when necessary. That gives the justification engine
   many more legal wrap points, preventing a few spaces from being expanded
   into visually large holes. The last line remains naturally left-aligned.
*/
@media(min-width:761px) and (max-width:1366px){
  .v36-timeline-section .v36-timeline-grid{
    grid-template-columns:repeat(var(--v365-timeline-cols,6),minmax(0,1fr))!important;
    grid-auto-flow:row!important;
    column-gap:0!important
  }

  /* Keep readable gaps based on the actual CMS-configured column count. */
  .v36-timeline-section .v36-timeline-grid[data-cols="1"],
  .v36-timeline-section .v36-timeline-grid[data-cols="2"]{--v438-copy-pad:24px}
  .v36-timeline-section .v36-timeline-grid[data-cols="3"]{--v438-copy-pad:21px}
  .v36-timeline-section .v36-timeline-grid[data-cols="4"]{--v438-copy-pad:18px}
  .v36-timeline-section .v36-timeline-grid[data-cols="5"]{--v438-copy-pad:14px}
  .v36-timeline-section .v36-timeline-grid[data-cols="6"]{--v438-copy-pad:10px}

  html[data-site-lang="zh"] .v36-timeline-section .v36-timeline-grid .v36-timeline-item .v36-timeline-text,
  html[data-site-lang="en"] .v36-timeline-section .v36-timeline-grid .v36-timeline-item .v36-timeline-text{
    box-sizing:border-box!important;
    padding-left:var(--v438-copy-pad,16px)!important;
    padding-right:var(--v438-copy-pad,16px)!important;
    text-align:justify!important;
    text-align-last:left!important;
    text-justify:inter-character!important;
    word-spacing:normal!important;
    overflow-wrap:anywhere!important;
    word-break:break-all!important;
    hyphens:auto!important
  }

  /* Reset all historical 3/4/5/6 nth-child row cuts with a stronger selector. */
  html body .v36-timeline-section .v36-timeline-grid
  .v36-timeline-item[data-row-start][data-row-end]:nth-child(n) .v36-timeline-point:before,
  html body .v36-timeline-section .v36-timeline-grid
  .v36-timeline-item[data-row-start][data-row-end]:nth-child(n) .v36-timeline-point:after{
    display:block!important;
    top:50%!important;
    height:1px!important;
    width:auto!important;
    transform:none!important
  }
  html body .v36-timeline-section .v36-timeline-grid
  .v36-timeline-item[data-row-start][data-row-end]:nth-child(n) .v36-timeline-point:before{
    left:0!important;
    right:50%!important;
    background:linear-gradient(90deg,#8db7d5 0%,#5d94bf 52%,#3f82b9 100%)!important
  }
  html body .v36-timeline-section .v36-timeline-grid
  .v36-timeline-item[data-row-start][data-row-end]:nth-child(n) .v36-timeline-point:after{
    left:50%!important;
    right:0!important;
    background:linear-gradient(90deg,#3f82b9 0%,#5d94bf 48%,#8db7d5 100%)!important
  }

  /* Real row boundaries come from the backend-configured timelineCols. */
  html body .v36-timeline-section .v36-timeline-grid
  .v36-timeline-item[data-row-start="1"][data-row-end]:nth-child(n) .v36-timeline-point:before{
    display:none!important
  }
  html body .v36-timeline-section .v36-timeline-grid
  .v36-timeline-item[data-row-end="1"][data-row-start]:nth-child(n) .v36-timeline-point:after{
    display:none!important
  }
}

/* ===== SEMC V4.4.0 · icon text corporate values module ===== */
.v440-values-section{
  position:relative;overflow:hidden;isolation:isolate;
  background:radial-gradient(circle at 9% 12%,rgba(79,151,207,.13),transparent 28rem),radial-gradient(circle at 91% 82%,rgba(204,54,65,.045),transparent 24rem),linear-gradient(135deg,rgba(218,235,248,.78),rgba(244,249,252,.94))!important
}
.v440-values-section::after{content:"";position:absolute;width:min(52vw,760px);height:min(30vw,420px);right:-14vw;top:18%;border-radius:50%;pointer-events:none;background:radial-gradient(circle,rgba(86,158,210,.13),transparent 68%);filter:blur(10px)}
.v440-values-shell{position:relative;z-index:1}
.v440-values-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin-top:46px}
.v440-values-grid[data-count="1"]{grid-template-columns:minmax(0,560px)}
.v440-values-grid[data-count="2"]{grid-template-columns:repeat(2,minmax(0,1fr))}
.v440-values-grid[data-count="4"]{grid-template-columns:repeat(2,minmax(0,1fr))}
.v440-value-card{position:relative;min-width:0;min-height:360px;padding:28px 28px 30px;border-radius:28px;overflow:hidden;background:linear-gradient(155deg,rgba(255,255,255,.88),rgba(239,247,252,.72));border:1px solid rgba(255,255,255,.94);box-shadow:0 18px 52px rgba(35,81,116,.10),inset 0 0 0 1px rgba(40,94,136,.035);transition:transform .35s var(--ease),box-shadow .35s var(--ease)}
.v440-value-card::before{content:"";position:absolute;left:28px;right:28px;top:0;height:3px;border-radius:0 0 99px 99px;background:linear-gradient(90deg,#2f74b5 0%,#5ba8dd 72%,#d34b58 100%);opacity:.9}
.v440-value-card::after{content:"";position:absolute;width:210px;height:210px;right:-115px;bottom:-115px;border-radius:50%;background:radial-gradient(circle,rgba(78,151,205,.12),transparent 68%);pointer-events:none}
@media(hover:hover) and (pointer:fine){.v440-value-card:hover:where(:not(.semc-touch-feedback)){transform:translateY(-6px);box-shadow:0 26px 66px rgba(35,81,116,.14),inset 0 0 0 1px rgba(40,94,136,.04)}}
.v440-value-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}
.v440-value-icon{width:64px;height:64px;border-radius:20px;display:grid;place-items:center;color:#2f74b5;background:linear-gradient(145deg,#f9fcff,#dcecf8);border:1px solid rgba(78,142,190,.18);box-shadow:0 10px 26px rgba(39,94,136,.10)}
.v440-value-icon svg{width:34px;height:34px;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}
.v440-value-index{padding-top:4px;color:#7f9bad;font-size:11px;line-height:1;font-weight:780;letter-spacing:.16em}
.v440-value-kicker{margin-top:34px;color:#5481a1;font-size:11px;line-height:1.45;font-weight:790;letter-spacing:.15em}
.v440-value-card h3{position:relative;z-index:1;margin:10px 0 16px;color:var(--navy);font-size:clamp(23px,2.15vw,31px);line-height:1.16;letter-spacing:-.025em}
.v440-value-copy{position:relative;z-index:1;color:#657f92;font-size:14px;line-height:1.86}
.v440-value-copy .cms-text-linebox{display:block}
@media(max-width:980px){.v440-values-grid{gap:14px}.v440-value-card{min-height:330px;padding:24px 22px 26px}.v440-value-card::before{left:22px;right:22px}.v440-value-icon{width:58px;height:58px;border-radius:18px}.v440-value-icon svg{width:31px;height:31px}.v440-value-kicker{margin-top:28px}.v440-value-copy{font-size:13px}}
@media(max-width:760px){.v440-values-grid,.v440-values-grid[data-count="1"],.v440-values-grid[data-count="2"],.v440-values-grid[data-count="4"]{grid-template-columns:1fr;gap:14px;margin-top:34px}.v440-value-card{min-height:0;padding:22px 20px 24px;border-radius:22px}.v440-value-card::before{left:20px;right:20px}.v440-value-icon{width:54px;height:54px;border-radius:17px}.v440-value-kicker{margin-top:24px}.v440-value-card h3{font-size:24px}}

/* ===== SEMC V4.4.1 · custom corporate icons + calmer site-family background ===== */
.v440-values-section{
  background:
    radial-gradient(circle at 10% 12%,rgba(79,151,207,.075),transparent 29rem),
    radial-gradient(circle at 91% 82%,rgba(204,54,65,.032),transparent 24rem),
    linear-gradient(135deg,rgba(235,243,248,.82),rgba(249,251,252,.97))!important
}
.v440-values-section::after{
  background:radial-gradient(circle,rgba(86,158,210,.075),transparent 68%)!important
}
.v440-value-icon .v441-value-custom-icon{
  display:block;
  width:38px;
  height:38px;
  max-width:76%;
  max-height:76%;
  object-fit:contain;
  object-position:center;
}
@media(max-width:980px){
  .v440-value-icon .v441-value-custom-icon{width:34px;height:34px}
}
@media(max-width:760px){
  .v440-value-icon .v441-value-custom-icon{width:32px;height:32px}
}

/* ===== SEMC V4.4.2 · corporate-value motion + full brand rail + touch feedback ===== */
.v440-value-card::before{
  left:0!important;
  right:0!important;
  width:auto!important;
  height:4px!important;
  border-radius:0!important;
  opacity:.94!important;
  background:linear-gradient(90deg,#2f74b5 0%,#5ba8dd 72%,#d34b58 100%)!important;
  transition:filter .38s ease,opacity .38s ease!important
}
.v440-value-icon{
  transition:transform .46s cubic-bezier(.16,1,.3,1),
             box-shadow .42s cubic-bezier(.22,1,.36,1),
             background .36s ease,border-color .36s ease!important
}
.v440-value-index{
  transition:transform .42s cubic-bezier(.16,1,.3,1),color .3s ease!important
}
@media (hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){
  .semc-scroll-motion.semc-reveal-done.v440-value-card{
    transform:none!important;
    transition-property:opacity,translate,scale,box-shadow,border-color,background!important;
    transition-duration:.32s,.48s,.52s,.48s,.36s,.36s!important;
    transition-timing-function:ease,cubic-bezier(.16,1,.3,1),cubic-bezier(.16,1,.3,1),cubic-bezier(.22,1,.36,1),ease,ease!important;
    transition-delay:0ms!important
  }
  .semc-scroll-motion.semc-reveal-done.v440-value-card:hover:where(:not(.semc-touch-feedback)){
    translate:0 -7px!important;
    scale:1.005!important;
    box-shadow:0 28px 68px rgba(35,81,116,.145),inset 0 0 0 1px rgba(40,94,136,.045)!important;
    border-color:rgba(91,158,207,.22)!important
  }
  .v440-value-card:hover:where(:not(.semc-touch-feedback))::before{filter:saturate(1.08) brightness(1.04)}
  .v440-value-card:hover:where(:not(.semc-touch-feedback)) .v440-value-icon{
    transform:translateY(-2px) scale(1.045);
    box-shadow:0 15px 32px rgba(39,94,136,.145)
  }
  .v440-value-card:hover:where(:not(.semc-touch-feedback)) .v440-value-index{
    transform:translateY(-1px);
    color:#5d88a7
  }
}

/* iPad / touch devices: subtle press feedback for the same card/media family
   that has desktop hover motion. No tap is delayed or intercepted. */
@media (prefers-reduced-motion:no-preference){
  html.semc-touch-device .semc-touch-feedback{
    transition-property:translate,scale,box-shadow,border-color,background!important;
    transition-duration:.18s,.22s,.24s,.20s,.20s!important;
    transition-timing-function:cubic-bezier(.22,1,.36,1),cubic-bezier(.16,1,.3,1),cubic-bezier(.22,1,.36,1),ease,ease!important;
    transition-delay:0ms!important
  }
  html.semc-touch-device .semc-touch-feedback.semc-touch-pressed{
    translate:0 2px!important;
    scale:.992!important
  }
  html.semc-touch-device .v440-value-card.semc-touch-feedback.semc-touch-pressed{
    box-shadow:0 14px 34px rgba(35,81,116,.105),inset 0 0 0 1px rgba(40,94,136,.04)!important
  }
  html.semc-touch-device .v440-value-card.semc-touch-feedback.semc-touch-pressed .v440-value-icon{
    transform:scale(.965)
  }
}

/* ===== SEMC V4.4.3 · adaptive organization framework ===== */
.v443-org-section{
  position:relative;overflow:hidden;
  background:
    radial-gradient(circle at 12% 10%,rgba(74,151,207,.075),transparent 31rem),
    radial-gradient(circle at 88% 88%,rgba(205,59,72,.025),transparent 26rem),
    linear-gradient(180deg,#f9fbfc 0%,#f3f7fa 100%)
}
.v443-org-section::before{
  content:"";position:absolute;left:0;right:0;top:0;height:1px;
  background:linear-gradient(90deg,transparent,#77a9cf 28%,#d24e5b 72%,transparent);opacity:.5
}
.v443-org-shell{position:relative;z-index:1}
.v443-org-chart{position:relative;margin-top:46px;display:grid;gap:42px}
.v443-org-branch{position:relative;min-width:0;isolation:isolate}
.v443-org-branch.has-children{padding-bottom:4px}
.v443-org-branch>.v443-org-node{position:relative;z-index:2;margin:0 auto;max-width:900px}
.v443-org-children{
  position:relative;z-index:1;display:grid;align-items:start;
  grid-template-columns:repeat(var(--v443-child-cols,3),minmax(0,1fr));
  gap:30px 26px;margin-top:48px
}
.v443-org-children>.v443-org-branch.has-children{grid-column:1/-1;margin-top:4px}
.v443-org-children>.v443-org-branch.has-children>.v443-org-node{max-width:760px}
.v443-org-node{
  min-width:0;height:auto;padding:24px 25px 25px;border:1px solid rgba(69,118,151,.16);
  border-radius:24px;background:rgba(255,255,255,.92);
  box-shadow:0 18px 48px rgba(37,77,106,.065),inset 0 1px 0 rgba(255,255,255,.9);
  transition:translate .42s cubic-bezier(.16,1,.3,1),scale .44s cubic-bezier(.16,1,.3,1),box-shadow .42s ease,border-color .32s ease
}
.v443-org-node::before{
  content:"";position:absolute;left:24px;right:24px;top:0;height:3px;border-radius:0 0 999px 999px;
  background:linear-gradient(90deg,#2f74b5 0%,#5ba8dd 76%,#d34b58 100%);opacity:.9
}
.v443-org-node-top{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:13px}
.v443-org-level-label{font-size:11px;line-height:1;letter-spacing:.18em;font-weight:820;color:#6791ad}
.v443-org-node-index{display:grid;place-items:center;min-width:34px;height:26px;padding:0 9px;border-radius:999px;background:#edf5fa;color:#467aa0;font-size:11px;font-weight:820;letter-spacing:.08em}
.v443-org-node h3{margin:0;color:#183d59;font-size:clamp(19px,1.55vw,26px);line-height:1.2;letter-spacing:-.02em}
.v443-org-node-copy{margin-top:12px;color:#6b8293;font-size:14px;line-height:1.78;overflow-wrap:anywhere;word-break:normal}
.v443-org-branch[data-depth="0"]>.v443-org-node{
  max-width:980px;padding:28px 30px 29px;border-color:rgba(62,126,172,.2);
  background:linear-gradient(135deg,rgba(255,255,255,.98),rgba(245,250,253,.97));
  box-shadow:0 24px 62px rgba(38,79,108,.09),inset 0 1px 0 #fff
}
.v443-org-branch[data-depth="0"]>.v443-org-node h3{font-size:clamp(23px,2vw,32px)}
.v443-org-connectors{position:absolute;inset:0;width:100%;height:100%;z-index:0;overflow:visible;pointer-events:none}
.v443-org-connector{fill:none;stroke:#8fb7d2;stroke-width:1.45;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke;opacity:.86}
.v443-org-connector-dot{fill:#4b8cba;stroke:#f5f9fb;stroke-width:2;vector-effect:non-scaling-stroke}
@media(hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){
  .v443-org-node:hover:where(:not(.semc-touch-feedback)){translate:0 -5px;scale:1.004;border-color:rgba(68,135,183,.26);box-shadow:0 25px 58px rgba(37,77,106,.105),inset 0 1px 0 rgba(255,255,255,.96)}
}
/* Tablet: preserve the configured hierarchy but cap overly dense rows so long
   department descriptions stay readable and connector geometry remains stable. */
@media(min-width:761px) and (max-width:1180px){
  .v443-org-chart{margin-top:38px;gap:34px}
  .v443-org-children{gap:26px 20px;margin-top:44px}
  .v443-org-children[data-cols="4"],.v443-org-children[data-cols="5"],.v443-org-children[data-cols="6"]{grid-template-columns:repeat(3,minmax(0,1fr))}
  .v443-org-node{padding:21px 20px 22px;border-radius:21px}
  .v443-org-node::before{left:20px;right:20px}
  .v443-org-node-copy{font-size:13.5px;line-height:1.72}
}
@media(min-width:761px) and (max-width:900px){
  .v443-org-children[data-cols="3"],.v443-org-children[data-cols="4"],.v443-org-children[data-cols="5"],.v443-org-children[data-cols="6"]{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:760px){
  .v443-org-chart{margin-top:30px;gap:28px}
  .v443-org-children,.v443-org-children[data-cols]{grid-template-columns:1fr!important;gap:22px;margin-top:38px}
  .v443-org-children>.v443-org-branch.has-children{grid-column:auto}
  .v443-org-node,.v443-org-branch[data-depth="0"]>.v443-org-node{max-width:none;padding:20px 18px 21px;border-radius:19px}
  .v443-org-node::before{left:18px;right:18px}
  .v443-org-node h3,.v443-org-branch[data-depth="0"]>.v443-org-node h3{font-size:21px}
  .v443-org-node-copy{font-size:13.5px;line-height:1.7}
  .v443-org-level-label{font-size:10px}
}

/* ===== SEMC V4.4.4 · organization polish + stable one-shot reveal ===== */
/* Same-row leaf organization cards share the grid-row height. Long text still
   determines the row height naturally; shorter cards stretch to match it. */
.v443-org-children{align-items:stretch!important}
.v443-org-children>.v443-org-branch:not(.has-children){display:flex;align-self:stretch;min-height:100%}
.v443-org-children>.v443-org-branch:not(.has-children)>.v443-org-node{
  width:100%;height:100%;min-height:100%
}

/* Brand rail now fills the entire upper edge instead of being inset. */
.v443-org-node::before{
  left:0!important;right:0!important;width:auto!important;height:4px!important;
  border-radius:24px 24px 0 0!important
}
@media(min-width:761px) and (max-width:1180px){
  .v443-org-node::before{left:0!important;right:0!important;border-radius:21px 21px 0 0!important}
}
@media(max-width:760px){
  .v443-org-node::before{left:0!important;right:0!important;border-radius:19px 19px 0 0!important}
}

/* Organization connectors are layout geometry, not scroll-motion geometry. */
.v443-org-connectors{contain:layout paint;will-change:auto!important}
.v443-org-connector,.v443-org-connector-dot{shape-rendering:geometricPrecision}

/* Final-state scroll nodes never need to be geometrically reset off-screen. */
@media(prefers-reduced-motion:no-preference){
  .semc-scroll-motion.semc-reveal-done.visible{
    opacity:1!important;translate:0 0!important;scale:1!important
  }
}


/* ===== SEMC V4.4.6 · organization motion + clipped rails/connectors ===== */
/* Keep the brand rail inside each rounded card on every breakpoint. The node
   itself clips only its decorative/card contents; connector SVGs remain outside. */
.v443-org-node{
  overflow:hidden
}

/* Connector paths are masked in JS anywhere an organization card occupies the
   branch. Slightly soften the remaining open-space linework so dense wrapped
   rows stay readable without changing the hierarchy or configured column count. */
.v443-org-connector{opacity:.76;stroke-width:1.35}
.v443-org-connector-dot{opacity:.82}
@media(max-width:760px){
  .v443-org-connector{opacity:.68;stroke-width:1.25}
  .v443-org-connector-dot{opacity:.76}
}

/* Organization cards rejoin the repeated scroll system in V4.4.6. Their outer
   top edge stays fixed so connector geometry never chases a moving card; the
   visible slide is carried by the card content instead. */
@media(prefers-reduced-motion:no-preference){
  .v443-org-node.semc-scroll-motion{
    translate:0 0!important;
    transform-origin:50% 0
  }
  .v443-org-node.semc-scroll-motion>.v443-org-node-top,
  .v443-org-node.semc-scroll-motion>h3,
  .v443-org-node.semc-scroll-motion>.v443-org-node-copy{
    opacity:.90;
    translate:0 var(--semc-reveal-y);
    transition-property:opacity,translate;
    transition-duration:.54s,.78s;
    transition-timing-function:cubic-bezier(.22,1,.36,1),cubic-bezier(.16,1,.3,1)
  }
  .v443-org-node.semc-scroll-motion>.v443-org-node-top{
    transition-delay:calc(var(--semc-motion-delay,0ms) + 20ms)
  }
  .v443-org-node.semc-scroll-motion>h3{
    transition-delay:calc(var(--semc-motion-delay,0ms) + 54ms)
  }
  .v443-org-node.semc-scroll-motion>.v443-org-node-copy{
    transition-delay:calc(var(--semc-motion-delay,0ms) + 88ms)
  }
  .v443-org-node.semc-scroll-motion.visible>.v443-org-node-top,
  .v443-org-node.semc-scroll-motion.visible>h3,
  .v443-org-node.semc-scroll-motion.visible>.v443-org-node-copy{
    opacity:1;
    translate:0 0
  }
}
@media (hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){
  .v443-org-node.semc-scroll-motion.semc-reveal-done{
    transition-property:opacity,translate,scale,box-shadow,border-color!important;
    transition-duration:.34s,.42s,.46s,.42s,.34s!important;
    transition-timing-function:ease,cubic-bezier(.22,1,.36,1),cubic-bezier(.16,1,.3,1),cubic-bezier(.22,1,.36,1),ease!important;
    transition-delay:0ms!important
  }
  .v443-org-node.semc-scroll-motion.semc-reveal-done:hover:where(:not(.semc-touch-feedback)){
    translate:0 -5px!important;
    scale:1.004!important;
    border-color:rgba(68,135,183,.26)!important;
    box-shadow:0 25px 58px rgba(37,77,106,.105),inset 0 1px 0 rgba(255,255,255,.96)!important
  }
}


/* ===== SEMC V4.4.7 · organization connector restoration + synchronized motion ===== */
/* Connector segments are rebuilt from fixed card edges, so their geometry never
   chases the reveal animation. The outer card stays stationary; only its existing
   inner-copy reveal moves. This keeps line/card endpoints aligned on all widths. */
.v447-org-connector-segment{opacity:1}
@media(prefers-reduced-motion:no-preference){
  .v447-org-connector-segment{
    opacity:0;
    transition:opacity .30s ease;
    transition-delay:var(--v447-line-delay,0ms)
  }
  .v447-org-connector-segment .v443-org-connector{
    stroke-dasharray:1;
    stroke-dashoffset:1;
    transition:stroke-dashoffset .74s cubic-bezier(.22,1,.36,1);
    transition-delay:calc(var(--v447-line-delay,0ms) + 18ms)
  }
  .v447-org-connector-segment .v443-org-connector-dot{
    opacity:0;
    transition:opacity .24s ease;
    transition-delay:calc(var(--v447-line-delay,0ms) + 340ms)
  }
  .v447-org-connector-segment.is-visible{opacity:1}
  .v447-org-connector-segment.is-visible .v443-org-connector{stroke-dashoffset:0}
  .v447-org-connector-segment.is-visible .v443-org-connector-dot{opacity:.82}
}

/* V4.4.6 already keeps reveal motion inside the card. Do the same for hover:
   use border/shadow feedback only, avoiding the former -5px outer-card lift that
   could visually detach a fixed SVG connector from the card edge. */
@media (hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){
  .v443-org-node.semc-scroll-motion.semc-reveal-done:hover:where(:not(.semc-touch-feedback)){
    translate:0 0!important;
    scale:1!important;
    border-color:rgba(68,135,183,.28)!important;
    box-shadow:0 25px 58px rgba(37,77,106,.11),inset 0 1px 0 rgba(255,255,255,.96)!important
  }
}

/* ===== SEMC V4.5.8 · organization metadata + fixed-edge hover + stronger connectors ===== */
/* The brand rail is an even 50 / 50 split. It stays clipped by the existing
   rounded card overflow on desktop, tablet and phone. */
.v443-org-node::before{
  background:linear-gradient(90deg,#3f86c4 0%,#3f86c4 50%,#d55765 50%,#d55765 100%)!important;
  opacity:.94
}

/* Both compact labels are now CMS text fields. The right badge grows with its
   real text instead of reserving a fixed-width capsule. */
.v443-org-node-top{min-width:0}
.v443-org-level-label{min-width:0;max-width:70%;overflow-wrap:anywhere}
.v443-org-node-index{
  display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;
  width:max-content;min-width:34px;max-width:48%;height:auto;min-height:26px;
  padding:6px 10px;line-height:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  transition:background-color .28s ease,box-shadow .30s ease,scale .30s cubic-bezier(.16,1,.3,1)
}

/* V4.4.7 correctly stopped moving the outer card because the SVG connector is
   calculated from that fixed edge. Restore a visible desktop hover interaction
   by moving only the card's inner content and strengthening border/shadow feedback.
   CSS translate does not participate in layout, so connector geometry never drifts. */
@media (hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){
  .v443-org-node.semc-reveal-done:hover:where(:not(.semc-touch-feedback)){
    translate:0 0!important;scale:1!important;
    border-color:rgba(61,129,177,.34)!important;
    box-shadow:0 27px 62px rgba(37,77,106,.135),inset 0 1px 0 rgba(255,255,255,.98)!important
  }
  .v443-org-node.semc-reveal-done>.v443-org-node-top,
  .v443-org-node.semc-reveal-done>h3,
  .v443-org-node.semc-reveal-done>.v443-org-node-copy{
    transition-delay:0ms!important;transition-duration:.32s!important
  }
  .v443-org-node.semc-reveal-done:hover:where(:not(.semc-touch-feedback))>.v443-org-node-top,
  .v443-org-node.semc-reveal-done:hover:where(:not(.semc-touch-feedback))>h3,
  .v443-org-node.semc-reveal-done:hover:where(:not(.semc-touch-feedback))>.v443-org-node-copy{
    translate:0 -3px!important
  }
  .v443-org-node.semc-reveal-done:hover:where(:not(.semc-touch-feedback))>.v443-org-node-top{transition-delay:0ms!important}
  .v443-org-node.semc-reveal-done:hover:where(:not(.semc-touch-feedback))>h3{transition-delay:18ms!important}
  .v443-org-node.semc-reveal-done:hover:where(:not(.semc-touch-feedback))>.v443-org-node-copy{transition-delay:36ms!important}
  .v443-org-node.semc-reveal-done:hover:where(:not(.semc-touch-feedback)) .v443-org-node-index{
    background:#e6f1f8;box-shadow:0 5px 14px rgba(52,112,151,.10);scale:1.035
  }
}

/* V4.4.6 intentionally softened the connector network too far. Restore a stable
   medium blue on all three responsive ranges while preserving the draw animation.
   The JS mask is inset inside card borders, so endpoints meet the frame without
   painting through translucent card bodies. */
.v443-org-connector{
  stroke:#78a9cb;stroke-width:1.5;opacity:.96
}
.v443-org-connector-dot{
  fill:#3f84b5;opacity:.96
}
.v447-org-connector-segment.is-visible .v443-org-connector-dot{opacity:.96}
@media(max-width:760px){
  .v443-org-connector{stroke-width:1.4;opacity:.94}
  .v443-org-connector-dot,
  .v447-org-connector-segment.is-visible .v443-org-connector-dot{opacity:.94}
}

/* ===== SEMC V4.5.9 · centered brand blend + continuous connector joints ===== */
/* Keep the blue/red rail visually balanced while restoring a soft centered blend.
   Solid color occupies the same amount on both sides; only the middle band mixes. */
.v443-org-node::before{
  background:linear-gradient(90deg,#3f86c4 0%,#3f86c4 42%,#6f9abe 46%,#9c8ba0 50%,#bd7489 54%,#d55765 58%,#d55765 100%)!important
}

/* The connector dot used to have a pale outline. During SVG masking/draw-in that
   outline could visually cut the final path pixels away from the card edge. Match
   the outline to the connector itself and reveal the dot only as the path finishes. */
.v443-org-connector-dot{stroke:#78a9cb;stroke-width:1;vector-effect:non-scaling-stroke}
@media(prefers-reduced-motion:no-preference){
  .v447-org-connector-segment .v443-org-connector-dot{
    transition-delay:calc(var(--v447-line-delay,0ms) + 720ms)
  }
}

/* ===== SEMC V4.4.9 · flexible showcase captions + multi-image banners ===== */
.cms-banner-stack{
  display:grid;
  grid-template-columns:minmax(0,1fr);
  gap:18px
}
.cms-banner-stack .image-banner{
  position:relative;
  width:100%;
  margin:0
}
.cms-showcase-label{
  position:absolute;
  z-index:2;
  left:18px;
  bottom:18px;
  max-width:calc(100% - 36px);
  color:#fff;
  background:rgba(29,76,114,.52);
  -webkit-backdrop-filter:blur(10px);
  backdrop-filter:blur(10px);
  padding:9px 12px;
  border-radius:12px;
  border:1px solid rgba(255,255,255,.2);
  line-height:1.45
}
.cms-showcase-label:empty{display:none!important}
.cms-static-showcase-gallery,
.cms-dynamic-gallery{align-items:stretch}
.cms-static-showcase-gallery .photo,
.cms-dynamic-gallery .photo{aspect-ratio:4/3;min-height:0}
@media(max-width:760px){
  .cms-banner-stack{gap:12px}
  .cms-showcase-label{
    left:10px;
    right:10px;
    bottom:10px;
    max-width:none;
    padding:7px 9px;
    border-radius:10px;
    font-size:10px
  }
}
@media(max-width:520px){
  .cms-banner-stack{gap:9px}
  .gallery-2 .cms-showcase-label{
    left:8px!important;
    right:8px!important;
    bottom:8px!important;
    max-width:none!important;
    padding:6px 7px!important;
    font-size:9px!important
  }
}

/* ===== SEMC V4.5.0 · banner ratios + gallery-matched captions ===== */
.cms-banner-stack .image-banner{
  aspect-ratio:var(--cms-banner-ratio,16/7)!important;
  height:auto!important;
  min-height:0!important
}
.cms-banner-stack .cms-showcase-label{
  color:#17385e!important;
  background:var(--v3-glass-strong)!important;
  border:1px solid var(--v3-glass-border)!important;
  -webkit-backdrop-filter:blur(18px) saturate(1.22)!important;
  backdrop-filter:blur(18px) saturate(1.22)!important;
  box-shadow:0 8px 26px rgba(46,77,111,.10)!important
}
@media (prefers-reduced-transparency: reduce){
  .cms-banner-stack .cms-showcase-label{
    background:rgba(255,255,255,.94)!important;
    -webkit-backdrop-filter:none!important;
    backdrop-filter:none!important
  }
}

/* ===== SEMC V4.5.1 · optional showcase headings + smaller banners ===== */
.cms-showcase-heading{margin-bottom:32px}
.cms-banner-stack{
  width:80%;
  margin-left:auto;
  margin-right:auto
}
.cms-dynamic-banner .cms-showcase-heading,
[data-module="servicesContent2"] .cms-showcase-heading{
  width:80%;
  margin-left:auto;
  margin-right:auto
}
@media(max-width:760px){
  .cms-showcase-heading{margin-bottom:24px}
}


/* ===== SEMC V4.5.2 · responsive showcases + reload paint guard ===== */
/* A true reload below the top is marked in the document head before first paint.
   Keep that new document visually quiet until CMS content has settled and JS has
   restored the saved Y position; normal navigation and top-of-page reloads are
   untouched. */
html.semc-reload-paint-guard{background:var(--mist,#edf4fa)!important}
html.semc-reload-paint-guard body{opacity:0!important;transition:none!important}
html.semc-reload-stabilizing .page.active{animation:none!important;opacity:1!important;transform:none!important}

/* Banner headings stay on the normal container rail on every device. Only the
   desktop banner media itself remains deliberately narrower. */
.cms-dynamic-banner .cms-showcase-heading,
[data-module="servicesContent2"] .cms-showcase-heading{
  width:100%!important;
  max-width:none!important;
  margin-left:0!important;
  margin-right:0!important
}

/* Banner captions are content-sized glass labels. The former mobile right inset
   forced short captions to stretch almost the full image width. */
.cms-banner-stack .cms-showcase-label{
  right:auto!important;
  width:auto!important;
  max-width:calc(100% - 36px)!important;
  white-space:normal
}

/* Harden both the built-in and addable two-image gallery against WebKit/touch
   grid sizing quirks: the card owns an explicit 4:3 box and its absolute image
   is pinned to all four edges. Two columns are preserved on phone and tablet,
   matching desktop rather than collapsing or producing a zero-paint media box. */
.cms-static-showcase-gallery,
.cms-dynamic-gallery{
  display:grid!important;
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  align-items:stretch!important
}
.cms-static-showcase-gallery .photo,
.cms-dynamic-gallery .photo{
  position:relative!important;
  display:block!important;
  width:100%!important;
  min-width:0!important;
  min-height:0!important;
  aspect-ratio:4/3!important;
  overflow:hidden!important
}
.cms-static-showcase-gallery .photo>img,
.cms-dynamic-gallery .photo>img{
  position:absolute!important;
  inset:0!important;
  display:block!important;
  width:100%!important;
  height:100%!important;
  object-fit:cover!important;
  opacity:1!important
}

@media(max-width:980px){
  /* On phone / narrow tablet the banner uses the full normal content width; the
     80% desktop treatment is intentionally not carried down to small screens. */
  .cms-banner-stack{
    width:100%!important;
    margin-left:0!important;
    margin-right:0!important
  }
  .cms-banner-stack .cms-showcase-label{
    left:10px!important;
    right:auto!important;
    max-width:calc(100% - 20px)!important
  }
  .cms-static-showcase-gallery,
  .cms-dynamic-gallery{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    gap:10px!important;
    max-width:100%!important
  }
}
@media(max-width:520px){
  .cms-banner-stack .cms-showcase-label{
    left:8px!important;
    right:auto!important;
    bottom:8px!important;
    max-width:calc(100% - 16px)!important
  }
  .cms-static-showcase-gallery,
  .cms-dynamic-gallery{gap:8px!important}
}

/* ===== SEMC V4.5.3 · universal next-module spacing + mobile gallery captions ===== */
/* “默认” intentionally has no CSS class and therefore preserves every existing
   template's current padding. The three opt-in levels split the desired visual
   gap across the current module's bottom and the next visible module's top. */
html body [data-module].cms-next-gap-compact{padding-bottom:48px!important;--semc-tone-bottom-depth:48px}
html body [data-module].cms-prev-gap-compact{padding-top:48px!important;--semc-tone-top-depth:48px}
html body [data-module].cms-next-gap-close{padding-bottom:24px!important;--semc-tone-bottom-depth:24px}
html body [data-module].cms-prev-gap-close{padding-top:24px!important;--semc-tone-top-depth:24px}
html body [data-module].cms-next-gap-closer{padding-bottom:16px!important;--semc-tone-bottom-depth:16px}
html body [data-module].cms-prev-gap-closer{padding-top:16px!important;--semc-tone-top-depth:16px}

/* V4.5.2 already made banner captions content-sized on small screens. Apply the
   same rule to both built-in and addable two-image galleries instead of letting
   the older left+right mobile insets stretch a short caption across the image. */
@media(max-width:980px){
  html body .cms-static-showcase-gallery .cms-showcase-label,
  html body .cms-dynamic-gallery .cms-showcase-label{
    left:10px!important;
    right:auto!important;
    width:auto!important;
    max-width:calc(100% - 20px)!important;
    white-space:normal!important
  }
  html body [data-module].cms-next-gap-compact{padding-bottom:36px!important;--semc-tone-bottom-depth:36px}
  html body [data-module].cms-prev-gap-compact{padding-top:36px!important;--semc-tone-top-depth:36px}
  html body [data-module].cms-next-gap-close{padding-bottom:18px!important;--semc-tone-bottom-depth:18px}
  html body [data-module].cms-prev-gap-close{padding-top:18px!important;--semc-tone-top-depth:18px}
  html body [data-module].cms-next-gap-closer{padding-bottom:12px!important;--semc-tone-bottom-depth:12px}
  html body [data-module].cms-prev-gap-closer{padding-top:12px!important;--semc-tone-top-depth:12px}
}
@media(max-width:520px){
  html body .cms-static-showcase-gallery .cms-showcase-label,
  html body .cms-dynamic-gallery .cms-showcase-label{
    left:8px!important;
    right:auto!important;
    bottom:8px!important;
    width:auto!important;
    max-width:calc(100% - 16px)!important
  }
  html body [data-module].cms-next-gap-compact{padding-bottom:28px!important;--semc-tone-bottom-depth:28px}
  html body [data-module].cms-prev-gap-compact{padding-top:28px!important;--semc-tone-top-depth:28px}
  html body [data-module].cms-next-gap-close{padding-bottom:14px!important;--semc-tone-bottom-depth:14px}
  html body [data-module].cms-prev-gap-close{padding-top:14px!important;--semc-tone-top-depth:14px}
  html body [data-module].cms-next-gap-closer{padding-bottom:9px!important;--semc-tone-bottom-depth:9px}
  html body [data-module].cms-prev-gap-closer{padding-top:9px!important;--semc-tone-top-depth:9px}
}

/* ===== SEMC V4.5.4 · seam-safe next-module spacing ===== */
/* The V3.7.x surface system intentionally makes adjacent sections meet on the
   exact same mixed edge colour. V4.5.3 shortened section padding for custom
   spacing, but kept the old 56–104px blend depth, so the blend was squeezed far
   into the content area and read as a horizontal colour band. Use independent
   top/bottom blend depths and match only the edited edge to its actual padding.
   This keeps every boundary continuous on desktop, tablet and phone while the
   opposite edge of the same module retains its original transition depth. */
body[data-page-id] .detail-modules > .semc-gap-toned-section{
  --semc-tone-edge-depth:clamp(56px,6.2vw,104px);
  position:relative!important;
  isolation:isolate!important;
  border-top:0!important;
  border-bottom:0!important;
  background-clip:border-box!important;
  background-origin:border-box!important
}
@media(max-width:760px){
  body[data-page-id] .detail-modules > .semc-gap-toned-section{
    --semc-tone-edge-depth:clamp(44px,9vw,72px)
  }
}
body[data-page-id] .page > .semc-toned-section,
body[data-page-id] .detail-modules > .semc-gap-toned-section{
  background:
    linear-gradient(
      180deg,
      var(--semc-tone-top-edge) 0,
      var(--semc-tone-current) var(--semc-tone-top-depth,var(--semc-tone-edge-depth)),
      var(--semc-tone-current) calc(100% - var(--semc-tone-bottom-depth,var(--semc-tone-edge-depth))),
      var(--semc-tone-bottom-edge) 100%
    )!important
}
body[data-page-id] .page > .semc-toned-section.contact-locations-section,
body[data-page-id] .detail-modules > .semc-gap-toned-section.contact-locations-section{
  background:
    radial-gradient(ellipse 34rem 12rem at 92% 50%,rgba(100,166,214,.075) 0%,rgba(100,166,214,.034) 46%,transparent 76%),
    linear-gradient(
      180deg,
      var(--semc-tone-top-edge) 0,
      var(--semc-tone-current) var(--semc-tone-top-depth,var(--semc-tone-edge-depth)),
      var(--semc-tone-current) calc(100% - var(--semc-tone-bottom-depth,var(--semc-tone-edge-depth))),
      var(--semc-tone-bottom-edge) 100%
    )!important
}

/* ===== SEMC V4.5.5 · continuous custom-gap bridge ===== */
/* V4.5.4 made the two section backgrounds meet on the same edge colour, but a
   shortened gap can still expose a different kind of seam: large media/card
   shadows from the previous module are painted into its bottom padding and then
   abruptly covered when the next section starts. The dedicated bridge is placed
   only inside the real whitespace between both content boxes. It repaints one
   continuous surface through that gap and fades in/out near the content edges,
   so shadows keep a natural local falloff without being hard-cut at the section
   boundary. Default spacing creates no bridge and remains byte-for-byte visual. */
.semc-module-gap-bridge{
  position:absolute!important;
  left:0!important;
  right:0!important;
  margin:0!important;
  padding:0!important;
  pointer-events:none!important;
  z-index:86!important;
  background:linear-gradient(
    180deg,
    var(--semc-gap-bridge-from,#f7fafc) 0%,
    var(--semc-gap-bridge-to,#f7fafc) 100%
  )!important;
  -webkit-mask-image:linear-gradient(180deg,transparent 0%,rgba(0,0,0,.78) 20%,#000 36%,#000 64%,rgba(0,0,0,.78) 80%,transparent 100%);
  mask-image:linear-gradient(180deg,transparent 0%,rgba(0,0,0,.78) 20%,#000 36%,#000 64%,rgba(0,0,0,.78) 80%,transparent 100%);
  -webkit-mask-size:100% 100%;
  mask-size:100% 100%;
  -webkit-mask-repeat:no-repeat;
  mask-repeat:no-repeat;
  box-shadow:none!important;
  border:0!important
}
body.semc-page-leaving .semc-module-gap-bridge{opacity:0!important}
@media(prefers-reduced-motion:reduce){.semc-module-gap-bridge{transition:none!important}}

/* ===== SEMC V4.5.6 · motion-safe custom-gap bridge ===== */
/* V4.5.5's bridge is still the seam repair, but it is an overlay by design. On
   refresh / route entry the desktop <main> surface translates a few pixels, and
   repeated reveal can temporarily move media into the gap. Keep the bridge fully
   out of the foreground paint path during those motion windows, then restore it
   only after the neighbouring content has settled. This preserves the repaired
   colour/shadow seam without a pale mask flashing over banner/gallery images. */
.semc-module-gap-bridge{
  opacity:0!important;
  transition:opacity .12s cubic-bezier(.22,1,.36,1)!important
}
.semc-module-gap-bridge.semc-gap-bridge-visible{opacity:1!important}
.semc-module-gap-bridge.semc-gap-bridge-motion,
body.semc-history-replay .semc-module-gap-bridge,
html.semc-reload-paint-guard .semc-module-gap-bridge{
  opacity:0!important;
  transition:none!important
}
/* Desktop route entry moves <main> by 8px. The bridge stays body-level so it can
   cover the seam, but mirrors exactly the same transform and duration. JS stores
   transform-neutral coordinates, so the old half-second drift + correction flash
   cannot occur while route-prep settles. */
@media(min-width:981px) and (pointer:fine) and (prefers-reduced-motion:no-preference){
  body.semc-route-prep .semc-module-gap-bridge{
    transform:translate3d(0,8px,0)!important;
    transition:transform .62s cubic-bezier(.22,1,.36,1),opacity .12s cubic-bezier(.22,1,.36,1)!important
  }
  body.semc-route-prep.semc-route-ready .semc-module-gap-bridge{
    transform:translate3d(0,0,0)!important
  }
  body.semc-route-prep .semc-module-gap-bridge.semc-gap-bridge-motion,
  body.semc-history-replay .semc-module-gap-bridge{
    transition:transform .62s cubic-bezier(.22,1,.36,1),opacity 0s linear!important
  }
}
@media(prefers-reduced-motion:reduce){
  .semc-module-gap-bridge{transform:none!important;transition:none!important}
}



/* ===== SEMC V4.5.7 · persistent seam surface + foreground-safe reveal ===== */
/* V4.5.6 prevented the pale bridge from covering moving media by hiding the
   bridge during route/reveal motion. That re-exposed the original shadow/background
   seam until the reveal settle window finished (roughly one second). V4.5.7 keeps
   the seam surface painted continuously and moves ordinary bridges into the same
   page/detail paint root as the neighbouring modules. Refresh/route transforms now
   carry foreground and bridge together; no delayed hide/show state is required. */
.semc-gap-bridge-root{
  position:relative!important;
  isolation:isolate!important
}
/* Section isolation would otherwise trap its content below the bridge. Relax it
   only for the two modules participating in a custom gap; the local root above
   still contains all temporary z-layers inside this page/detail surface. */
body[data-page-id] .semc-gap-bridge-root .semc-gap-bridge-host,
body[data-page-id] .semc-gap-bridge-root .semc-gap-bridge-host.semc-toned-section,
body[data-page-id] .semc-gap-bridge-root .semc-gap-bridge-host.semc-gap-toned-section{
  isolation:auto!important
}
/* Keep each module's real foreground above the z=86 seam surface. Static direct
   wrappers receive position:relative from JS; already-positioned artwork keeps
   its original positioning mode and only receives the higher paint level. This
   covers image/card shadows as well as repeated reveal travel without moving any
   layout geometry. */
body[data-page-id] .semc-gap-bridge-host > .semc-gap-bridge-foreground{
  z-index:var(--semc-gap-foreground-z,90)!important
}
body[data-page-id] .semc-gap-bridge-host > .semc-gap-bridge-foreground-static{
  position:relative!important
}
/* Local bridges already inherit route/reload transforms from their root. Cancel
   the historical V4.5.6 body-level 8px mirror transform so it is never applied a
   second time. Body fallback bridges retain the old transform-neutral handling. */
.semc-module-gap-bridge.semc-gap-bridge-local,
body.semc-route-prep .semc-module-gap-bridge.semc-gap-bridge-local,
body.semc-route-prep.semc-route-ready .semc-module-gap-bridge.semc-gap-bridge-local{
  transform:none!important;
  transition:none!important
}
.semc-module-gap-bridge,
.semc-module-gap-bridge.semc-gap-bridge-visible,
.semc-module-gap-bridge.semc-gap-bridge-motion,
body.semc-history-replay .semc-module-gap-bridge,
body.semc-page-leaving .semc-module-gap-bridge,
html.semc-reload-paint-guard .semc-module-gap-bridge{
  opacity:1!important
}


/* ===== SEMC V4.6.0 · detail hero motion + seamless detail handoff ===== */
/* The detail hero owns an !important route-entry transition with a more specific
   selector than the shared V3.8 hover rule. That left transform/box-shadow out of
   the computed transition list, so the cover jumped one frame on mouse enter and
   mouse leave. Keep the route choreography, but explicitly add pointer interaction
   properties at the same specificity. */
@media(hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){
  body[data-page-id="detail"] .detail-hero-media{
    transition:
      opacity .70s cubic-bezier(.22,1,.36,1) .10s,
      translate .98s cubic-bezier(.16,1,.3,1) .10s,
      scale 1.08s cubic-bezier(.16,1,.3,1) .10s,
      transform .46s cubic-bezier(.22,1,.36,1) 0s,
      box-shadow .46s cubic-bezier(.22,1,.36,1) 0s,
      border-color .36s ease 0s!important
  }
}
/* The old 1px border marked the end of the hero as a hard horizontal rule. Blend
   the pale-blue shell into the white module surface instead, without changing
   hero/module spacing or any module background rules. */
body[data-page-id="detail"] .detail-hero{
  --semc-detail-hero-edge:#fff;
  border-bottom:0!important;
  background:
    radial-gradient(circle at 88% 18%,rgba(113,174,222,.18),transparent 28rem),
    linear-gradient(180deg,#eaf4fb 0%,#f8fbfd 72%,var(--semc-detail-hero-edge,#fff) 100%)!important
}
body[data-page-id="detail"] .detail-modules{border-top:0!important;background:#fff!important}
@media(max-width:640px){
  body[data-page-id="detail"] .detail-hero{
    background:linear-gradient(180deg,#eaf4fb 0%,#f8fbfd 70%,var(--semc-detail-hero-edge,#fff) 100%)!important
  }
}


/* ===== SEMC V4.6.1 · equipment parameter icons + adaptive single-field centering ===== */
.v36-equipment-param{display:flex!important;align-items:stretch!important}
.v461-equipment-param-inner{width:100%;min-width:0;display:grid;grid-template-columns:42px minmax(0,1fr);gap:14px;align-items:center}
.v461-equipment-param-icon{width:42px;height:42px;display:grid;place-items:center;align-self:center;border:1px solid rgba(76,137,179,.16);border-radius:12px;background:linear-gradient(145deg,rgba(241,248,252,.96),rgba(250,252,253,.88));color:#397ca6;box-shadow:inset 0 1px 0 rgba(255,255,255,.82)}
.v461-equipment-param-icon svg{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.v461-equipment-param-icon img{width:26px;height:26px;object-fit:contain;display:block}
.v461-equipment-param-copy{min-width:0;align-self:center;display:flex;flex-direction:column;justify-content:center;gap:7px}
.v461-equipment-param-copy h3,.v461-equipment-param-copy p{margin:0!important}
.v36-equipment-param.is-single-text .v461-equipment-param-copy{height:100%;justify-content:center}
.v36-equipment-param.is-single-text .v461-equipment-param-copy h3,
.v36-equipment-param.is-single-text .v461-equipment-param-copy p{margin-top:0!important;margin-bottom:0!important}
@media(max-width:980px){.v461-equipment-param-inner{grid-template-columns:38px minmax(0,1fr);gap:11px}.v461-equipment-param-icon{width:38px;height:38px;border-radius:11px}.v461-equipment-param-icon svg{width:21px;height:21px}.v461-equipment-param-icon img{width:23px;height:23px}}
@media(max-width:620px){.v461-equipment-param-inner{grid-template-columns:34px minmax(0,1fr);gap:10px}.v461-equipment-param-icon{width:34px;height:34px;border-radius:10px}.v461-equipment-param-icon svg{width:19px;height:19px}.v461-equipment-param-icon img{width:21px;height:21px}}


/* ===== SEMC Website V4.6.2 · optional blue eyebrow ===== */
.eyebrow.cms-empty-eyebrow{display:none!important}

/* ===== SEMC V4.6.6 · detail template surface / alignment compatibility ===== */
body[data-page-id="detail"] .detail-modules{width:100%;overflow:clip;background:#fff!important}
body[data-page-id="detail"] .detail-modules>section[data-module]{width:100%;max-width:none;margin-left:0!important;margin-right:0!important;box-sizing:border-box;grid-template-columns:minmax(0,1fr)!important}
body[data-page-id="detail"] .detail-modules>section[data-module]>.container{margin-left:auto!important;margin-right:auto!important;justify-self:center!important}
body[data-page-id] .detail-modules>.semc-detail-toned-section{
  --semc-tone-edge-depth:clamp(72px,7.5vw,124px);
  position:relative!important;isolation:isolate!important;border-top:0!important;border-bottom:0!important;
  background:
    linear-gradient(180deg,var(--semc-tone-top-edge) 0,var(--semc-tone-current) var(--semc-tone-top-depth,var(--semc-tone-edge-depth)),var(--semc-tone-current) calc(100% - var(--semc-tone-bottom-depth,var(--semc-tone-edge-depth))),var(--semc-tone-bottom-edge) 100%)!important
}
body[data-page-id] .detail-modules>.semc-detail-toned-section.contact-locations-section{
  background:radial-gradient(ellipse 34rem 12rem at 92% 50%,rgba(100,166,214,.075) 0%,rgba(100,166,214,.034) 46%,transparent 76%),linear-gradient(180deg,var(--semc-tone-top-edge) 0,var(--semc-tone-current) var(--semc-tone-top-depth,var(--semc-tone-edge-depth)),var(--semc-tone-current) calc(100% - var(--semc-tone-bottom-depth,var(--semc-tone-edge-depth))),var(--semc-tone-bottom-edge) 100%)!important
}
@media(max-width:760px){body[data-page-id] .detail-modules>.semc-detail-toned-section{--semc-tone-edge-depth:clamp(52px,11vw,84px)}}


/* ===== SEMC V4.6.7 · optional detail cover + dynamic gallery root compatibility ===== */
/* Newly created detail pages start without a cover. When no cover is present the
   title copy owns the full content rail; adding a cover restores the existing
   two-column hero without changing the page title fields. */
body[data-page-id="detail"] .detail-hero.no-cover .detail-hero-grid{
  grid-template-columns:minmax(0,1fr)!important
}
body[data-page-id="detail"] .detail-hero.no-cover .detail-hero-copy{
  width:min(100%,1040px)!important;
  max-width:1040px!important
}
body[data-page-id="detail"] .detail-hero.no-cover .detail-hero-copy h1{
  max-width:20ch!important
}
body[data-page-id="detail"] .detail-hero.no-cover .detail-hero-copy>p{
  max-width:840px!important
}

/* "gallery" is both the dynamic module type and the inner two-image grid class.
   Earlier generic selectors therefore turned the OUTER section itself into a
   two-column grid, which pulled the heading/container to the left. Keep only the
   actual .gallery-2 element as the two-column grid and restore the module section
   to the normal full-width section flow on every page, including detail pages. */
html body section.section.cms-dynamic-module.cms-dynamic-gallery{
  display:block!important;
  grid-template-columns:none!important;
  align-items:initial!important;
  gap:0!important;
  width:100%!important;
  max-width:none!important
}
html body section.section.cms-dynamic-module.cms-dynamic-gallery>.container{
  display:block!important;
  width:min(92vw,1360px)!important;
  max-width:1360px!important;
  margin-left:auto!important;
  margin-right:auto!important
}
html body section.section.cms-dynamic-module.cms-dynamic-gallery>.container>.cms-showcase-heading{
  width:100%!important;
  max-width:none!important;
  margin-left:0!important;
  margin-right:0!important
}
html body section.section.cms-dynamic-module.cms-dynamic-gallery>.container>.gallery-2.cms-dynamic-gallery{
  display:grid!important;
  width:100%!important;
  max-width:1240px!important;
  margin-left:auto!important;
  margin-right:auto!important;
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  align-items:stretch!important
}
@media(max-width:980px){
  html body section.section.cms-dynamic-module.cms-dynamic-gallery>.container{
    width:min(94vw,1360px)!important
  }
  html body section.section.cms-dynamic-module.cms-dynamic-gallery>.container>.gallery-2.cms-dynamic-gallery{
    max-width:100%!important;
    grid-template-columns:repeat(2,minmax(0,1fr))!important
  }
}

/* ===== SEMC V4.7.9 · simple content alignment + detail surface handoff ===== */
html body .cms-dynamic-simpleContent.is-text>.container{display:block!important}
html body .cms-dynamic-simpleContent.is-text .cms-pure-text{
  width:100%!important;max-width:none!important;margin-left:0!important;margin-right:0!important;
  padding:0!important;border:0!important;border-radius:0!important;background:transparent!important;box-shadow:none!important
}
html body .cms-dynamic-simpleContent.is-text .cms-pure-text>.reveal{
  width:100%!important;max-width:none!important;margin-left:0!important;margin-right:0!important;text-align:left!important
}
html body .cms-dynamic-simpleContent.is-text .cms-pure-text .section-title{
  width:100%!important;max-width:none!important;margin-left:0!important;margin-right:0!important;text-align:left!important
}
html body .cms-dynamic-simpleContent.is-text .cms-pure-text-body{
  margin-left:0!important;margin-right:auto!important
}



/* ===== SEMC V4.8.0 · seamless custom-gap surface handoff ===== */
/* The bridge now samples each host's visible gradient at the content edge and
   passes through their shared boundary at its REAL vertical position. This
   repairs compressed/asymmetric pairings without touching the default-spacing
   surface, the existing mask, foreground stacking or reveal animations. */
body[data-page-id] .semc-module-gap-bridge{
  background:linear-gradient(
    180deg,
    var(--semc-gap-bridge-from,#f7fafc) 0%,
    var(--semc-gap-bridge-join-color,#f7fafc) var(--semc-gap-bridge-join-position,50%),
    var(--semc-gap-bridge-to,#f7fafc) 100%
  )!important
}

/* ===== SEMC V4.8.6 · page visual hero module ===== */
/* Full-bleed horizontally. If this module is the first visible page module, its
   image absorbs the former top breathing space so the area below navigation is
   filled with real content. object-fit:cover keeps the photograph undistorted. */
body[data-page-id] .page-visual-hero-section{
  --page-visual-leading-fill:clamp(48px,5.2vw,76px);
  --page-visual-leading-copy-offset:clamp(24px,2.6vw,38px);
  padding-top:var(--page-visual-leading-fill)!important;
  padding-bottom:clamp(58px,6.4vw,92px)!important
}
body[data-page-id] .page-visual-hero-section.semc-page-leading-visual{padding-top:0!important}
body[data-page-id] .page-visual-hero-section>.container{
  position:relative;
  z-index:2;
  width:100%!important;
  max-width:none!important;
  margin-left:0!important;
  margin-right:0!important
}
.page-visual-hero{
  --page-visual-mask-color:#0a4f84;
  --page-visual-mask-rgb:10,79,132;
  --page-visual-pill-rgb:10,79,132;
  --page-visual-mask-position:79%;
  --page-visual-mask-stop-1:19%;
  --page-visual-mask-stop-2:35%;
  --page-visual-mask-stop-3:49%;
  --page-visual-mask-stop-4:61%;
  --page-visual-mask-stop-5:70%;
  --page-visual-mask-tablet-position:80%;
  --page-visual-mask-tablet-stop-1:22%;
  --page-visual-mask-tablet-stop-2:40%;
  --page-visual-mask-tablet-stop-3:53%;
  --page-visual-mask-tablet-stop-4:67%;
  --page-visual-mask-mobile-position:89%;
  --page-visual-mask-mobile-stop-1:29%;
  --page-visual-mask-mobile-stop-2:46%;
  --page-visual-mask-mobile-stop-3:62%;
  --page-visual-mask-mobile-stop-4:76%;
  --page-visual-mask-opacity:1;
  position:relative;
  width:100%;
  height:clamp(360px,36.5125vw,540px);
  min-height:0;
  max-height:none;
  overflow:hidden;
  isolation:isolate;
  border:0;
  box-sizing:border-box;
  border-radius:0;
  background:var(--page-visual-mask-color);
  box-shadow:0 28px 72px rgba(25,61,89,.13),0 8px 22px rgba(25,61,89,.07);
  transition:box-shadow .9s cubic-bezier(.16,1,.3,1)
}
body[data-page-id] .page-visual-hero-section.semc-page-leading-visual .page-visual-hero{
  height:calc(clamp(360px,36.5125vw,540px) + var(--page-visual-leading-fill))
}
.page-visual-hero-media,
.page-visual-hero-overlay{
  position:absolute;
  inset:0
}
.page-visual-hero-media{
  z-index:0;
  overflow:hidden;
  transform:scale(1);
  transform-origin:center center;
  transition:transform .78s cubic-bezier(.16,1,.3,1);
  will-change:transform
}
.page-visual-hero-media img{
  width:100%;
  height:100%;
  display:block;
  object-fit:cover;
  object-position:center;
  filter:saturate(.96) contrast(1.015);
  transform:scale(1);
  transform-origin:center center;
  transition:transform .14s linear,filter .72s cubic-bezier(.22,1,.36,1)!important;
  will-change:transform
}
.page-visual-hero-overlay{
  z-index:1;
  pointer-events:none;
  opacity:var(--page-visual-mask-opacity);
  background:
    linear-gradient(90deg,
      rgba(var(--page-visual-mask-rgb),.98) 0%,
      rgba(var(--page-visual-mask-rgb),.94) var(--page-visual-mask-stop-1),
      rgba(var(--page-visual-mask-rgb),.82) var(--page-visual-mask-stop-2),
      rgba(var(--page-visual-mask-rgb),.60) var(--page-visual-mask-stop-3),
      rgba(var(--page-visual-mask-rgb),.31) var(--page-visual-mask-stop-4),
      rgba(var(--page-visual-mask-rgb),.09) var(--page-visual-mask-stop-5),
      rgba(var(--page-visual-mask-rgb),0) var(--page-visual-mask-position)),
    linear-gradient(90deg,rgba(5,28,49,.30) 0%,rgba(5,28,49,.18) 34%,rgba(5,28,49,.05) 58%,rgba(5,28,49,0) 76%),
    linear-gradient(0deg,rgba(5,28,49,.20) 0%,rgba(5,28,49,.04) 34%,rgba(5,28,49,0) 62%),
    radial-gradient(circle at 18% 38%,rgba(255,255,255,.10),transparent 34%)
}
.page-visual-hero::before{
  content:"";
  position:absolute;
  z-index:2;
  inset:0;
  pointer-events:none;
  background:linear-gradient(115deg,rgba(255,255,255,.075) 0%,rgba(255,255,255,0) 28%);
  mix-blend-mode:screen;
  opacity:.58
}
.page-visual-hero-brandline{
  position:absolute;
  z-index:5;
  left:0;
  bottom:0;
  width:100%;
  height:3px;
  background:linear-gradient(90deg,
    #3b82c4 0%,
    #3b82c4 45%,
    #5997c7 48.5%,
    #9c7ca1 50%,
    #c36178 51.5%,
    #d9505b 55%,
    #d9505b 100%);
  opacity:.98
}
.page-visual-hero-copy{
  position:absolute;
  z-index:3;
  top:50%;
  left:clamp(30px,5.1vw,76px);
  width:min(49%,660px);
  translate:0 -50%;
  color:#fff;
  text-shadow:0 2px 16px rgba(4,27,48,.18)
}
body[data-page-id] .page-visual-hero-section.semc-page-leading-visual .page-visual-hero-copy{
  top:calc(50% + var(--page-visual-leading-copy-offset))
}
.page-visual-hero-copy-inner{width:100%;min-width:0}
.page-visual-hero-eyebrow{
  width:max-content;
  max-width:100%;
  margin:0 0 clamp(14px,1.5vw,22px);
  color:rgb(var(--page-visual-pill-rgb))!important;
  background:rgba(250,253,255,.91)!important;
  border-color:rgba(var(--page-visual-pill-rgb),.28)!important;
  box-shadow:0 8px 22px rgba(4,31,52,.13),inset 0 1px 0 rgba(255,255,255,.68)!important;
  backdrop-filter:blur(10px) saturate(115%);
  -webkit-backdrop-filter:blur(10px) saturate(115%);
  text-shadow:none
}
.page-visual-hero-eyebrow .num{
  background:linear-gradient(135deg,rgb(var(--page-visual-pill-rgb)),rgba(var(--page-visual-pill-rgb),.68))!important;
  color:#fff!important
}
.page-visual-hero-copy h2{
  margin:0;
  color:#fff;
  font-size:clamp(38px,4.35vw,66px);
  line-height:1.06;
  letter-spacing:-.025em;
  font-weight:720
}
.page-visual-hero-copy p{
  max-width:620px;
  margin:clamp(16px,1.55vw,24px) 0 0;
  color:rgba(238,247,253,.91);
  font-size:clamp(14px,1.08vw,17px);
  line-height:1.82;
  letter-spacing:.01em
}

/* Match the homepage cover's bottom-to-top copy entrance while retaining the
   project's repeated reveal/re-arm behaviour for this module. */
@media(prefers-reduced-motion:no-preference){
  .page-visual-hero-copy-inner.semc-scroll-motion{
    opacity:0!important;
    translate:0 18px!important;
    scale:1!important;
    transition:opacity .72s cubic-bezier(.22,1,.36,1),translate 1.02s cubic-bezier(.16,1,.3,1)!important
  }
  .page-visual-hero-copy-inner.semc-scroll-motion.visible{
    opacity:1!important;
    translate:0 0!important;
    scale:1!important
  }
}
@media(hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){
  .page-visual-hero:hover{
    box-shadow:0 32px 84px rgba(25,61,89,.17),0 10px 26px rgba(25,61,89,.09)
  }
  /* Hover scale is applied to the media wrapper. Scroll scale stays on the
     child <img>, so the two transforms compose instead of overwriting. */
  .page-visual-hero:hover .page-visual-hero-media{transform:scale(1.014)}
  .page-visual-hero:hover .page-visual-hero-media img{filter:saturate(1.01) contrast(1.025)}
}
@media(max-width:980px){
  body[data-page-id] .page-visual-hero-section{
    --page-visual-leading-fill:clamp(42px,6vw,62px);
    --page-visual-leading-copy-offset:clamp(21px,3vw,31px);
    padding-top:var(--page-visual-leading-fill)!important;
    padding-bottom:clamp(52px,7vw,76px)!important
  }
  body[data-page-id] .page-visual-hero-section.semc-page-leading-visual{padding-top:0!important}
  .page-visual-hero{
    height:42.55vw;
    min-height:0;
    max-height:none
  }
  body[data-page-id] .page-visual-hero-section.semc-page-leading-visual .page-visual-hero{
    height:calc(42.55vw + var(--page-visual-leading-fill))
  }
  .page-visual-hero-copy{
    left:clamp(26px,5.2vw,52px);
    width:min(58%,560px)
  }
  .page-visual-hero-copy h2{font-size:clamp(34px,5.8vw,52px)}
  .page-visual-hero-copy p{font-size:clamp(13px,1.8vw,16px);line-height:1.72}
  .page-visual-hero-overlay{
    background:
      linear-gradient(90deg,
        rgba(var(--page-visual-mask-rgb),.98) 0%,
        rgba(var(--page-visual-mask-rgb),.94) var(--page-visual-mask-tablet-stop-1),
        rgba(var(--page-visual-mask-rgb),.82) var(--page-visual-mask-tablet-stop-2),
        rgba(var(--page-visual-mask-rgb),.57) var(--page-visual-mask-tablet-stop-3),
        rgba(var(--page-visual-mask-rgb),.21) var(--page-visual-mask-tablet-stop-4),
        rgba(var(--page-visual-mask-rgb),0) var(--page-visual-mask-tablet-position)),
      linear-gradient(90deg,rgba(5,28,49,.29) 0%,rgba(5,28,49,.16) 38%,rgba(5,28,49,0) 77%),
      linear-gradient(0deg,rgba(5,28,49,.20) 0%,rgba(5,28,49,0) 60%)
  }
}
@media(max-width:760px){
  body[data-page-id] .page-visual-hero-section{
    --page-visual-leading-fill:36px;
    --page-visual-leading-copy-offset:18px;
    padding-top:var(--page-visual-leading-fill)!important;
    padding-bottom:52px!important
  }
  body[data-page-id] .page-visual-hero-section.semc-page-leading-visual{padding-top:0!important}
  body[data-page-id] .page-visual-hero-section>.container{width:100%!important;max-width:none!important}
  .page-visual-hero{
    height:51.75vw;
    min-height:0!important;
    max-height:none!important;
    box-shadow:0 20px 52px rgba(25,61,89,.13),0 6px 18px rgba(25,61,89,.06)
  }
  body[data-page-id] .page-visual-hero-section.semc-page-leading-visual .page-visual-hero{
    height:calc(51.75vw + var(--page-visual-leading-fill))
  }
  .page-visual-hero-media img{object-position:58% center}
  .page-visual-hero-copy{
    left:clamp(20px,6vw,30px);
    width:72%;
    max-width:none
  }
  .page-visual-hero-eyebrow{
    margin-bottom:10px;
    min-height:28px;
    padding:4px 10px 4px 5px!important;
    font-size:9px!important;
    letter-spacing:.11em!important
  }
  .page-visual-hero-eyebrow .num{width:20px!important;height:20px!important;min-width:20px!important}
  .page-visual-hero-copy h2{font-size:clamp(26px,8.1vw,34px);line-height:1.08}
  .page-visual-hero-copy p{
    display:-webkit-box;
    -webkit-line-clamp:3;
    -webkit-box-orient:vertical;
    overflow:hidden;
    max-width:94%;
    margin-top:10px;
    font-size:clamp(11px,3.05vw,13px);
    line-height:1.55
  }
  .page-visual-hero-overlay{
    background:
      linear-gradient(90deg,
        rgba(var(--page-visual-mask-rgb),.99) 0%,
        rgba(var(--page-visual-mask-rgb),.96) var(--page-visual-mask-mobile-stop-1),
        rgba(var(--page-visual-mask-rgb),.84) var(--page-visual-mask-mobile-stop-2),
        rgba(var(--page-visual-mask-rgb),.58) var(--page-visual-mask-mobile-stop-3),
        rgba(var(--page-visual-mask-rgb),.19) var(--page-visual-mask-mobile-stop-4),
        rgba(var(--page-visual-mask-rgb),0) var(--page-visual-mask-mobile-position)),
      linear-gradient(90deg,rgba(5,28,49,.30) 0%,rgba(5,28,49,.15) 42%,rgba(5,28,49,0) 86%),
      linear-gradient(0deg,rgba(5,28,49,.18) 0%,rgba(5,28,49,0) 62%)
  }
}
@media(prefers-reduced-motion:reduce){
  .page-visual-hero,
  .page-visual-hero-media,
  .page-visual-hero-media img,
  .page-visual-hero-copy-inner{
    transition:none!important;
    animation:none!important
  }
  .page-visual-hero-media{transform:none!important;will-change:auto!important}
  .page-visual-hero-media img{transform:none!important;translate:none!important;scale:1!important;will-change:auto!important}
  .page-visual-hero-copy-inner{opacity:1!important;translate:0 0!important;transform:none!important}
}



/* V4.8.4: extend the established count-specific gallery geometry from 2–8 to
   2–12 without changing any of the existing 2–8 layouts. Desktop keeps rows
   visually balanced; tablet stays two-up with an odd full-width final image;
   phone keeps the existing two-column rule and the same odd-count finish. */
.cms-adaptive-gallery[data-count="9"] > figure,
.cms-adaptive-gallery[data-count="9"] > figure:last-child{grid-column:span 4!important;aspect-ratio:4/3!important}
.cms-adaptive-gallery[data-count="10"] > figure:nth-child(-n+8){grid-column:span 3!important;aspect-ratio:4/3!important}
.cms-adaptive-gallery[data-count="10"] > figure:nth-child(n+9),
.cms-adaptive-gallery[data-count="10"] > figure:last-child{grid-column:span 6!important;aspect-ratio:4/3!important}
.cms-adaptive-gallery[data-count="11"] > figure:nth-child(-n+8){grid-column:span 3!important;aspect-ratio:4/3!important}
.cms-adaptive-gallery[data-count="11"] > figure:nth-child(n+9),
.cms-adaptive-gallery[data-count="11"] > figure:last-child{grid-column:span 4!important;aspect-ratio:4/3!important}
.cms-adaptive-gallery[data-count="12"] > figure,
.cms-adaptive-gallery[data-count="12"] > figure:last-child{grid-column:span 3!important;aspect-ratio:4/3!important}
@media(max-width:980px){
  .cms-adaptive-gallery[data-count="9"],.cms-adaptive-gallery[data-count="10"],.cms-adaptive-gallery[data-count="11"],.cms-adaptive-gallery[data-count="12"]{
    grid-template-columns:repeat(12,minmax(0,1fr))!important;max-width:100%!important
  }
  .cms-adaptive-gallery[data-count="9"] > figure:nth-child(n),.cms-adaptive-gallery[data-count="10"] > figure:nth-child(n),
  .cms-adaptive-gallery[data-count="11"] > figure:nth-child(n),.cms-adaptive-gallery[data-count="12"] > figure:nth-child(n){
    grid-column:span 6!important;aspect-ratio:4/3!important
  }
  .cms-adaptive-gallery[data-count="9"] > figure:last-child,
  .cms-adaptive-gallery[data-count="11"] > figure:last-child{grid-column:1/-1!important;aspect-ratio:16/9!important}
}
@media(max-width:700px){
  .cms-adaptive-gallery[data-count="9"],.cms-adaptive-gallery[data-count="10"],.cms-adaptive-gallery[data-count="11"],.cms-adaptive-gallery[data-count="12"]{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;max-width:100%!important
  }
  .cms-adaptive-gallery[data-count="9"] > figure:nth-child(n),.cms-adaptive-gallery[data-count="10"] > figure:nth-child(n),
  .cms-adaptive-gallery[data-count="11"] > figure:nth-child(n),.cms-adaptive-gallery[data-count="12"] > figure:nth-child(n){
    grid-column:auto!important;aspect-ratio:4/3!important
  }
  .cms-adaptive-gallery[data-count="9"] > figure:last-child,
  .cms-adaptive-gallery[data-count="11"] > figure:last-child{grid-column:1/-1!important;aspect-ratio:16/9!important}
}

/* ===== SEMC V4.8.4 · first-paint stability / page visual hero entrance ===== */
/* Inner-page HTML contains a static structural fallback while CMS data is loaded.
   Keep only main/footer invisible until the final CMS module set, ordering and
   reveal start states have been applied. visibility preserves layout and scroll
   geometry, so refresh restoration does not jump. The fixed navigation remains
   visible and interactive. */
html.semc-content-paint-guard body>main,
html.semc-content-paint-guard body>.corp-footer{
  visibility:hidden!important;
  pointer-events:none!important;
  transition:none!important
}

/* A page visual hero at the top of an inner page gets the same deliberate first
   entrance as the fixed page-title area. Its later scroll-linked image scale and
   desktop hover transform live on separate transform channels and remain intact. */
@media(prefers-reduced-motion:no-preference){
  body:not([data-page-id="home"]) .page-visual-hero-section.semc-page-leading-visual .page-visual-hero-copy-inner{
    opacity:1!important;
    translate:0 0!important;
    scale:1!important;
    transition:none!important
  }
  body:not([data-page-id="home"]) .page-visual-hero-section.semc-page-leading-visual .page-visual-hero-copy-inner>.page-visual-hero-eyebrow,
  body:not([data-page-id="home"]) .page-visual-hero-section.semc-page-leading-visual .page-visual-hero-copy-inner>h2,
  body:not([data-page-id="home"]) .page-visual-hero-section.semc-page-leading-visual .page-visual-hero-copy-inner>p{
    opacity:0!important;
    translate:0 18px!important;
    transition:opacity .72s cubic-bezier(.22,1,.36,1),translate 1.02s cubic-bezier(.16,1,.3,1)!important
  }
  body:not([data-page-id="home"]).semc-route-ready .page-visual-hero-section.semc-page-leading-visual .page-visual-hero-copy-inner>.page-visual-hero-eyebrow,
  body:not([data-page-id="home"]).semc-route-ready .page-visual-hero-section.semc-page-leading-visual .page-visual-hero-copy-inner>h2,
  body:not([data-page-id="home"]).semc-route-ready .page-visual-hero-section.semc-page-leading-visual .page-visual-hero-copy-inner>p{
    opacity:1!important;
    translate:0 0!important
  }
  body:not([data-page-id="home"]) .page-visual-hero-section.semc-page-leading-visual .page-visual-hero-copy-inner>h2{transition-delay:.07s!important}
  body:not([data-page-id="home"]) .page-visual-hero-section.semc-page-leading-visual .page-visual-hero-copy-inner>p{transition-delay:.14s!important}
  body:not([data-page-id="home"]) .page-visual-hero-section.semc-page-leading-visual .page-visual-hero-media{
    opacity:.94;
    scale:1.018;
    transition:transform .78s cubic-bezier(.16,1,.3,1),scale 1.25s cubic-bezier(.16,1,.3,1),opacity .72s cubic-bezier(.22,1,.36,1)
  }
  /* Commit the designed start state before route-ready. Fast inline content can
     otherwise transition from the default end state towards the start and then
     reverse it in the next frame, cancelling the image entrance. */
  body:not([data-page-id="home"]).semc-route-prep:not(.semc-route-ready) .page-visual-hero-section.semc-page-leading-visual .page-visual-hero-media{
    transition:none
  }
  body:not([data-page-id="home"]).semc-route-ready .page-visual-hero-section.semc-page-leading-visual .page-visual-hero-media{
    opacity:1;
    scale:1
  }
}
@media(max-width:980px) and (prefers-reduced-motion:no-preference){
  body:not([data-page-id="home"]) .page-visual-hero-section.semc-page-leading-visual .page-visual-hero-copy-inner>.page-visual-hero-eyebrow,
  body:not([data-page-id="home"]) .page-visual-hero-section.semc-page-leading-visual .page-visual-hero-copy-inner>h2,
  body:not([data-page-id="home"]) .page-visual-hero-section.semc-page-leading-visual .page-visual-hero-copy-inner>p{translate:0 13px!important}
  body:not([data-page-id="home"]) .page-visual-hero-section.semc-page-leading-visual .page-visual-hero-media{scale:1.010}
}
@media(max-width:700px) and (prefers-reduced-motion:no-preference){
  body:not([data-page-id="home"]) .page-visual-hero-section.semc-page-leading-visual .page-visual-hero-copy-inner>.page-visual-hero-eyebrow,
  body:not([data-page-id="home"]) .page-visual-hero-section.semc-page-leading-visual .page-visual-hero-copy-inner>h2,
  body:not([data-page-id="home"]) .page-visual-hero-section.semc-page-leading-visual .page-visual-hero-copy-inner>p{translate:0 11px!important}
}
@media(prefers-reduced-motion:reduce){
  html.semc-content-paint-guard body>main,
  html.semc-content-paint-guard body>.corp-footer{visibility:hidden!important}
  .page-visual-hero-section.semc-page-leading-visual .page-visual-hero-copy-inner>*{
    opacity:1!important;translate:0 0!important;transition:none!important
  }
  .page-visual-hero-section.semc-page-leading-visual .page-visual-hero-media{
    opacity:1!important;scale:1!important;transition:none!important
  }
}

/* ===== SEMC V4.8.5 · equipment rows / configurable text-gallery rows / mobile page visual hero ===== */
/* Equipment matrix: the default rhythm still uses at most two cards per row.
   A manual full-row item, or the unpaired final item inside any default segment,
   always consumes the complete row instead of leaving an empty right-hand cell. */
.equipment-grid>.equipment-card.is-full-row{
  grid-column:1/-1!important
}
@media(min-width:981px){
  .equipment-grid>.equipment-card.is-full-row{
    aspect-ratio:auto!important
  }
}
@media(max-width:700px){
  .equipment-grid>.equipment-card.is-full-row{
    grid-column:1/-1!important;
    aspect-ratio:16/9!important
  }
}

/* Text gallery custom rows are opt-in. With no manual row break the established
   V4.8.4 count-based geometry remains untouched. */
.cms-adaptive-gallery.has-custom-rows{
  grid-template-columns:repeat(12,minmax(0,1fr))!important
}
.cms-adaptive-gallery.has-custom-rows>figure.custom-row-size-1{
  grid-column:1/-1!important;
  aspect-ratio:16/9!important
}
.cms-adaptive-gallery.has-custom-rows>figure.custom-row-size-2{grid-column:span 6!important;aspect-ratio:4/3!important}
.cms-adaptive-gallery.has-custom-rows>figure.custom-row-size-3{grid-column:span 4!important;aspect-ratio:4/3!important}
.cms-adaptive-gallery.has-custom-rows>figure.custom-row-size-4{grid-column:span 3!important;aspect-ratio:4/3!important}
.cms-adaptive-gallery-caption{
  position:absolute;z-index:4;left:clamp(11px,1.15vw,16px);bottom:clamp(11px,1.15vw,16px);
  max-width:calc(100% - 32px);margin:0;padding:8px 13px;border:1px solid rgba(255,255,255,.72);
  border-radius:10px;background:rgba(250,253,255,.88);color:#174a70;
  -webkit-backdrop-filter:blur(12px) saturate(112%);backdrop-filter:blur(12px) saturate(112%);
  box-shadow:0 8px 24px rgba(16,52,78,.12);font-size:13px;font-weight:700;line-height:1.35;
  text-shadow:none;overflow-wrap:anywhere
}
@media(max-width:980px){
  .cms-adaptive-gallery.has-custom-rows>figure.custom-row-size-1{grid-column:1/-1!important;aspect-ratio:16/9!important}
  .cms-adaptive-gallery.has-custom-rows>figure.custom-row-size-2{grid-column:span 6!important}
  .cms-adaptive-gallery.has-custom-rows>figure.custom-row-size-3{grid-column:span 6!important}
  .cms-adaptive-gallery.has-custom-rows>figure.custom-row-size-3.custom-row-pos-3{grid-column:1/-1!important;aspect-ratio:16/9!important}
  .cms-adaptive-gallery.has-custom-rows>figure.custom-row-size-4{grid-column:span 6!important}
}
@media(max-width:700px){
  .cms-adaptive-gallery.has-custom-rows{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .cms-adaptive-gallery.has-custom-rows>figure.custom-row-size-2,
  .cms-adaptive-gallery.has-custom-rows>figure.custom-row-size-3,
  .cms-adaptive-gallery.has-custom-rows>figure.custom-row-size-4{
    grid-column:auto!important;aspect-ratio:4/3!important
  }
  .cms-adaptive-gallery.has-custom-rows>figure.custom-row-size-1,
  .cms-adaptive-gallery.has-custom-rows>figure.custom-row-size-3.custom-row-pos-3{
    grid-column:1/-1!important;aspect-ratio:16/10!important
  }
  .cms-adaptive-gallery-caption{
    left:9px;bottom:9px;max-width:calc(100% - 18px);padding:6px 9px;border-radius:8px;font-size:10.5px
  }
}

/* ===== SEMC V4.8.6 · mobile page visual correction ===== */
/* The fixed navigation keeps its original site-wide styling. On phones a leading
   page visual begins below that navigation instead of recolouring it or placing
   important hero content underneath it. Copy stays compact enough for longer
   introductions while the photograph returns to a landscape-led composition. */
@media(max-width:760px){
  body[data-page-id] .page-visual-hero-section{
    --page-visual-leading-fill:0px;
    --page-visual-leading-copy-offset:0px
  }
  body[data-page-id] .page-visual-hero-section.semc-page-leading-visual{
    padding-top:max(var(--nav-h),calc(84px + var(--semc-safe-top)))!important
  }
  .page-visual-hero,
  body[data-page-id] .page-visual-hero-section.semc-page-leading-visual .page-visual-hero{
    display:flex!important;
    align-items:center!important;
    height:auto!important;
    min-height:clamp(248px,70vw,292px)!important;
    max-height:none!important;
    padding:clamp(18px,4.8vw,24px) 0!important;
    box-sizing:border-box
  }
  .page-visual-hero-media img{
    object-position:center center!important
  }
  .page-visual-hero-copy,
  body[data-page-id] .page-visual-hero-section.semc-page-leading-visual .page-visual-hero-copy{
    position:relative!important;
    top:auto!important;
    left:auto!important;
    translate:none!important;
    width:min(calc(100% - 40px),430px)!important;
    max-width:none!important;
    margin-left:clamp(20px,5.5vw,28px)!important;
    padding:0!important
  }
  .page-visual-hero-copy-inner{width:100%!important;max-width:100%!important}
  .page-visual-hero-eyebrow{
    display:inline-flex!important;
    flex-wrap:nowrap!important;
    width:fit-content!important;
    max-width:calc(100vw - 52px)!important;
    min-height:25px!important;
    margin-bottom:9px!important;
    padding:3px 9px 3px 4px!important;
    gap:7px!important;
    font-size:8px!important;
    line-height:1!important;
    letter-spacing:.085em!important;
    white-space:nowrap!important
  }
  .page-visual-hero-eyebrow>span:last-child{
    display:block!important;
    min-width:0!important;
    max-width:none!important;
    white-space:nowrap!important;
    overflow:visible!important;
    text-overflow:clip!important;
    overflow-wrap:normal!important
  }
  .page-visual-hero-eyebrow .num{
    flex:0 0 18px!important;
    width:18px!important;
    height:18px!important;
    min-width:18px!important;
    min-height:18px!important;
    font-size:9px!important
  }
  .page-visual-hero-copy h2{
    max-width:100%!important;
    font-size:clamp(22px,6.4vw,29px)!important;
    line-height:1.08!important;
    letter-spacing:-.016em!important;
    overflow-wrap:anywhere
  }
  .page-visual-hero-copy p{
    display:block!important;
    -webkit-line-clamp:unset!important;
    -webkit-box-orient:initial!important;
    overflow:visible!important;
    max-width:100%!important;
    margin-top:8px!important;
    font-size:clamp(9.8px,2.62vw,11.6px)!important;
    line-height:1.48!important;
    letter-spacing:.004em!important;
    overflow-wrap:anywhere
  }
}
@media(max-width:420px){
  .page-visual-hero,
  body[data-page-id] .page-visual-hero-section.semc-page-leading-visual .page-visual-hero{
    min-height:clamp(238px,70vw,278px)!important;
    padding-top:17px!important;
    padding-bottom:17px!important
  }
  .page-visual-hero-copy p{
    font-size:clamp(9.5px,2.58vw,10.8px)!important;
    line-height:1.46!important
  }
}

/* SEMC V4.8.7 · responsive editor data is rendered by site.js; existing visual CSS preserved. */


/* ===== SEMC V4.8.8 · text-gallery frame alignment ===== */
/* Keep the frame inside the same geometry as the cropped image. The former blue
   outer border + translucent inset ring could read as two offset rounded frames. */
.cms-dynamic-textGallery .cms-adaptive-gallery figure{
  box-sizing:border-box!important;
  border:2px solid #fff!important
}
.cms-dynamic-textGallery .cms-adaptive-gallery figure::after{
  box-shadow:none!important
}


/* ===== SEMC V4.9.0 · leading visual continuity / section seams / touch nav glass ===== */
/* A leading page visual now owns the navigation overlap on phones. The total
   section geometry stays equivalent to V4.8.9, but the photograph starts at
   the top of the section and the copy remains below the fixed navigation. */
@media(max-width:760px){
  body[data-page-id] .page-visual-hero-section.semc-page-leading-visual{
    --page-visual-nav-overlap:max(var(--nav-h),calc(84px + var(--semc-safe-top)));
    padding-top:0!important
  }
  body[data-page-id] .page-visual-hero-section.semc-page-leading-visual .page-visual-hero{
    min-height:calc(clamp(248px,70vw,292px) + var(--page-visual-nav-overlap))!important;
    padding-top:calc(var(--page-visual-nav-overlap) + clamp(18px,4.8vw,24px))!important;
    padding-bottom:clamp(18px,4.8vw,24px)!important
  }
}
@media(max-width:420px){
  body[data-page-id] .page-visual-hero-section.semc-page-leading-visual .page-visual-hero{
    min-height:calc(clamp(238px,70vw,278px) + var(--page-visual-nav-overlap))!important;
    padding-top:calc(var(--page-visual-nav-overlap) + 17px)!important;
    padding-bottom:17px!important
  }
}

/* Keep all normal page/detail module surfaces on a deeper shared edge ramp.
   Explicit compact/close/closer top/bottom depths remain inline and therefore
   still take priority on the edited edge. */
body[data-page-id] .page > .semc-toned-section,
body[data-page-id] .detail-modules > .semc-toned-section{
  --semc-tone-edge-depth:clamp(88px,9vw,148px);
  border-top:0!important;border-bottom:0!important;
  background-clip:border-box!important;background-origin:border-box!important
}
@media(max-width:760px){
  body[data-page-id] .page > .semc-toned-section,
  body[data-page-id] .detail-modules > .semc-toned-section{--semc-tone-edge-depth:clamp(60px,13vw,96px)}
}

/* ===== SEMC Website V5.0.7 · stable Safari navigation glass / text geometry ===== */
/* Keep one material value for normal, scrolled and dark states. Route handoff
   classes now reuse that exact value instead of temporarily painting an opaque
   blue-white cover that later fades away on iPad. */
.site-nav{
  --semc-nav-glass-bg:rgba(255,255,255,.58);
  --semc-nav-glass-border:rgba(255,255,255,.70);
  --semc-nav-glass-blur:blur(28px) saturate(1.36);
  background:var(--semc-nav-glass-bg)!important;
  border-color:var(--semc-nav-glass-border)!important
}
.site-nav.scrolled{
  --semc-nav-glass-bg:rgba(255,255,255,.66);
  --semc-nav-glass-border:rgba(255,255,255,.78)
}
.site-nav[data-nav-theme="dark"]{
  --semc-nav-glass-bg:rgba(14,35,51,.30);
  --semc-nav-glass-border:rgba(255,255,255,.24);
  --semc-nav-glass-blur:blur(28px) saturate(1.30)
}
.site-nav[data-nav-theme="dark"].scrolled{
  --semc-nav-glass-bg:rgba(14,35,51,.38);
  --semc-nav-glass-border:rgba(255,255,255,.28)
}
@media(max-width:980px){
  .site-nav,
  .site-nav.scrolled,
  .site-nav[data-nav-theme="dark"],
  .site-nav[data-nav-theme="dark"].scrolled{
    --semc-nav-glass-bg:rgba(246,250,253,.80);
    --semc-nav-glass-border:rgba(255,255,255,.91);
    --semc-nav-glass-blur:blur(28px) saturate(1.32)
  }
}
html.semc-nav-arrival .site-nav,
html.semc-touch-device body.semc-route-prep .site-nav,
html.semc-touch-device body.semc-page-leaving .site-nav,
body.semc-route-prep .site-nav,
body.semc-page-leaving .site-nav,
body.semc-nav-freeze .site-nav{
  opacity:1!important;
  background:var(--semc-nav-glass-bg)!important;
  border-color:var(--semc-nav-glass-border)!important;
  -webkit-backdrop-filter:var(--semc-nav-glass-blur)!important;
  backdrop-filter:var(--semc-nav-glass-blur)!important;
  -webkit-backface-visibility:visible!important;
  backface-visibility:visible!important;
  will-change:auto!important;
  transition:none!important
}

/* Safari is most reliable when the desktop-width backdrop-filter surface is
   centred by layout instead of being re-composited through translateX during a
   cross-document route change. The visible geometry is unchanged. */
@media(min-width:981px){
  .site-nav,
  body.semc-page-leaving .site-nav,
  body.semc-nav-freeze.semc-page-leaving .site-nav,
  html.semc-touch-device .site-nav,
  html.semc-touch-device body.semc-route-prep .site-nav,
  html.semc-touch-device body.semc-page-leaving .site-nav{
    left:0!important;
    right:0!important;
    margin-left:auto!important;
    margin-right:auto!important;
    transform:none!important
  }
}

/* The active rail still animates, but the glyph itself never scales or lifts.
   This removes the hover -> pressed shrink -> destination grow sequence. */
.site-nav .nav-link,
.site-nav .nav-link:hover,
.site-nav .nav-link:active,
.site-nav .nav-link.active,
.site-nav .nav-link.active:hover,
.site-nav .nav-link.active:active,
.site-nav .nav-link.semc-nav-committing{
  transform:none!important;
  transition:color .24s ease!important
}

/* ===== SEMC Website V5.0.9 · scroll motion / Safari glass continuity ===== */
/* The rail returns to the original two-position scroll motion: it eases a few
   pixels upward while reading a page, then returns through the same curve at
   the top. Unlike V5.0.8, neither normal scrolling nor route handoff promotes
   the backdrop-filter surface with a 3D transform. Safari can therefore keep
   one live blur surface instead of briefly repainting it as transparent. */
.site-nav,
.site-nav.scrolled,
body.semc-route-prep .site-nav,
body.semc-page-leaving .site-nav,
body.semc-nav-freeze .site-nav,
html.semc-nav-arrival .site-nav{
  opacity:1!important;
  background:var(--semc-nav-glass-bg)!important;
  border-color:var(--semc-nav-glass-border)!important;
  -webkit-backdrop-filter:blur(28px) saturate(1.36)!important;
  backdrop-filter:blur(28px) saturate(1.36)!important;
  -webkit-transform:none!important;
  transform:none!important;
  translate:none!important;
  -webkit-backface-visibility:visible!important;
  backface-visibility:visible!important;
  will-change:auto!important
}
@media(min-width:981px){
  .site-nav,
  body.semc-route-prep .site-nav,
  body.semc-page-leaving .site-nav,
  body.semc-nav-freeze .site-nav,
  html.semc-nav-arrival .site-nav{
    left:0!important;
    right:0!important;
    margin-left:auto!important;
    margin-right:auto!important
  }
  .site-nav{top:14px!important;transition:top .35s var(--ease),background-color .32s var(--ease),border-color .32s var(--ease),box-shadow .32s var(--ease)!important}
  .site-nav.scrolled{top:8px!important}
}
.site-nav[data-nav-theme="dark"],
.site-nav[data-nav-theme="dark"].scrolled,
body.semc-route-prep .site-nav[data-nav-theme="dark"],
body.semc-page-leaving .site-nav[data-nav-theme="dark"],
body.semc-nav-freeze .site-nav[data-nav-theme="dark"],
html.semc-nav-arrival .site-nav[data-nav-theme="dark"]{
  -webkit-backdrop-filter:blur(28px) saturate(1.30)!important;
  backdrop-filter:blur(28px) saturate(1.30)!important
}
body.semc-nav-freeze .site-nav{
  top:var(--semc-nav-freeze-top,14px)!important;
  transition:none!important
}
html.semc-nav-arrival .site-nav{
  top:var(--semc-nav-arrival-top,14px)!important;
  transition:none!important
}
body.semc-route-prep .site-nav,
body.semc-page-leaving .site-nav{
  transition:none!important
}
html:not(.semc-nav-arrival) body.semc-route-prep.semc-route-ready:not(.semc-page-leaving) .site-nav{
  transition:top .35s var(--ease),background-color .32s var(--ease),border-color .32s var(--ease),box-shadow .32s var(--ease)!important
}
@media(max-width:980px){
  .site-nav,
  .site-nav.scrolled,
  .site-nav[data-nav-theme="dark"],
  .site-nav[data-nav-theme="dark"].scrolled,
  body.semc-route-prep .site-nav,
  body.semc-page-leaving .site-nav,
  body.semc-nav-freeze .site-nav,
  html.semc-nav-arrival .site-nav{
    -webkit-backdrop-filter:blur(28px) saturate(1.32)!important;
    backdrop-filter:blur(28px) saturate(1.32)!important
  }
  .site-nav{top:calc(10px + var(--semc-safe-top))!important;transition:top .35s var(--ease),background-color .32s var(--ease),border-color .32s var(--ease),box-shadow .32s var(--ease)!important}
  .site-nav.scrolled{top:calc(7px + var(--semc-safe-top))!important}
  body.semc-nav-freeze .site-nav{top:var(--semc-nav-freeze-top,calc(10px + var(--semc-safe-top)))!important;transition:none!important}
  html.semc-nav-arrival .site-nav{top:var(--semc-nav-arrival-top,calc(10px + var(--semc-safe-top)))!important;transition:none!important}
}

/* Keep the intended click feedback, but use one continuous translation curve.
   Hover lifts the text by a single pixel; press/commit and the destination active
   state settle to zero without any scale step, so glyph size never pulses. */
.site-nav .nav-link,
.site-nav .nav-link.active,
.site-nav .nav-link.active:hover,
.site-nav .nav-link:active,
.site-nav .nav-link.semc-nav-committing{
  transform:translateY(0)!important;
  transition:color .24s ease,background-color .24s ease,transform .28s cubic-bezier(.22,1,.36,1)!important
}
@media(min-width:981px) and (hover:hover) and (pointer:fine){
  .site-nav .nav-link:not(.active):not(.semc-nav-committing):hover{
    transform:translateY(-1px)!important
  }
  .site-nav .nav-link:not(.active):active{
    transform:translateY(0)!important;
    transition-duration:.16s!important
  }
}


/* ===== SEMC V4.9.1 · phone-safe shallow-section surface ramps ===== */
/* Short phone modules must not let their top and bottom surface ramps cross.
   The shared physical edge colour is unchanged; PC/tablet geometry is unchanged. */
@media(max-width:760px){
  body[data-page-id] .page > .semc-toned-section,
  body[data-page-id] .detail-modules > .semc-toned-section{
    --semc-tone-edge-depth:min(clamp(48px,12vw,76px),36%)
  }
}


/* ===== SEMC V4.9.2 · per-row process grid + signature card rails ===== */
/* Desktop process rows are explicit grids. An incomplete row keeps its configured
   cell width and starts at the left edge instead of being flex-centered. */
@media(min-width:1181px){
  .cms-dynamic-process-wrap .cms-process-grid{
    display:grid!important;grid-template-columns:minmax(0,1fr)!important;gap:14px!important;justify-content:stretch!important
  }
  .cms-dynamic-process-wrap .cms-process-row{
    display:grid!important;grid-template-columns:repeat(var(--process-row-cols,6),minmax(0,1fr));gap:14px!important;
    justify-content:start!important;align-items:stretch!important;min-width:0
  }
  .cms-dynamic-process-wrap .cms-process-row>.step{width:auto!important;min-width:0!important;min-height:188px;position:relative}
  .cms-dynamic-process-wrap .cms-process-row>.step::after{
    content:"";position:absolute;z-index:0;top:17px;left:100%;width:14px;height:1px;
    background:linear-gradient(90deg,rgba(47,116,181,.48),rgba(47,116,181,.18));pointer-events:none
  }
  .cms-dynamic-process-wrap .cms-process-row>.step:last-child::after{display:none!important}
}
@media(max-width:1180px){
  .cms-dynamic-process-wrap .cms-process-grid{
    display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:14px!important;justify-content:stretch!important
  }
  .cms-dynamic-process-wrap .cms-process-row{display:contents!important}
  .cms-dynamic-process-wrap .cms-process-row>.step{width:auto!important;min-width:0!important;min-height:188px;position:relative}
  .cms-dynamic-process-wrap .cms-process-row>.step::after{
    content:"";position:absolute;z-index:0;top:17px;left:100%;width:14px;height:1px;
    background:linear-gradient(90deg,rgba(47,116,181,.48),rgba(47,116,181,.18));pointer-events:none
  }
  .cms-dynamic-process-wrap .cms-process-row>.step.cms-process-tablet-row-end::after{display:none!important}
}
@media(max-width:700px){
  .cms-dynamic-process-wrap .cms-process-grid{grid-template-columns:minmax(0,1fr)!important;gap:11px!important}
  .cms-dynamic-process-wrap .cms-process-row>.step{min-height:0}
  .cms-dynamic-process-wrap .cms-process-row>.step::after{display:none!important}
}

/* Company signature rail requested for the four-info-card and three-business-card
   box families. The rail is inside the rounded box and never changes card geometry. */
.service-card,
.info-card{position:relative;overflow:hidden}
.service-card::before,
.info-card::before{
  content:"";position:absolute;left:0;top:18px;bottom:18px;width:4px;border-radius:0 999px 999px 0;
  background:linear-gradient(180deg,#397eb7 0%,#5ea2cf 47%,#aa789a 73%,#d94b5d 100%);
  opacity:.94;pointer-events:none;z-index:1
}
@media(max-width:700px){
  .service-card::before,.info-card::before{top:15px;bottom:15px;width:3px}
}


/* ===== SEMC Website V4.9.3 · mobile certificate arrow gutters ===== */
@media(max-width:700px){
  .v36-certificate-carousel>.v36-carousel-arrow.prev{left:-6px!important}
  .v36-certificate-carousel>.v36-carousel-arrow.next{right:-6px!important}
}
@media(max-width:380px){
  .v36-certificate-carousel>.v36-carousel-arrow.prev{left:-10px!important}
  .v36-certificate-carousel>.v36-carousel-arrow.next{right:-10px!important}
}

/* ===== SEMC Website V4.9.4 · phone A4 lower-shadow seam repair ===== */
/* The A4 / national-standard glass shell keeps its desktop/tablet depth. On
   phones, its former 80px blur extended past the 46px lower section padding and
   was cut off exactly at the next module boundary, creating a dark-to-light
   horizontal step. Shorten only the phone shadow so it fully fades before the
   shared toned-section edge; section spacing and edge colours stay unchanged. */
@media(max-width:760px){
  body[data-page-id] .page > .v365-standard-section .v365-standard-shell,
  body[data-page-id] .detail-modules > .v365-standard-section .v365-standard-shell{
    box-shadow:0 16px 36px rgba(31,65,89,.06),inset 0 0 0 1px rgba(30,75,108,.035)!important
  }
}


/* ===== SEMC V4.9.7 · two-up phone service steps and fixed-edge guides ===== */
.cms-dynamic-process-wrap .cms-process-grid{position:relative;isolation:isolate}
.cms-dynamic-process-wrap .cms-process-row{position:static!important}
.cms-dynamic-process-wrap .cms-process-grid::before,
.cms-dynamic-process-wrap .cms-process-row>.step::after{display:none!important}
.cms-dynamic-process-wrap .cms-process-grid .cms-process-connectors{
  position:absolute;inset:0;width:100%;height:100%;overflow:visible;
  z-index:0;pointer-events:none;display:block
}
.cms-dynamic-process-wrap .cms-process-connector-segment{opacity:1}
.cms-dynamic-process-wrap .cms-process-connector-halo,
.cms-dynamic-process-wrap .cms-process-connector-path{fill:none;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke;shape-rendering:geometricPrecision}
.cms-dynamic-process-wrap .cms-process-connector-halo{stroke:rgba(255,255,255,.92);stroke-width:4}
.cms-dynamic-process-wrap .cms-process-connector-path{stroke:#3175ac;stroke-width:2.15}
.cms-dynamic-process-wrap .cms-process-row>.step{position:relative;z-index:1;min-width:0;min-height:0}
/* Keep the frame fixed: lines are anchored to its actual border, and only inner
   copy moves on reveal/hover. Never shift the frame without shifting connectors. */
.cms-dynamic-process-wrap .step.reveal,
.cms-dynamic-process-wrap .step.semc-scroll-motion{
  transform:none!important;translate:0 0!important;scale:1!important;opacity:1!important;
  transition:box-shadow .34s ease,border-color .34s ease,background .34s ease!important
}
.cms-dynamic-process-wrap .step.reveal>b,
.cms-dynamic-process-wrap .step.reveal>h3,
.cms-dynamic-process-wrap .step.reveal>p{
  transition:opacity .48s cubic-bezier(.22,1,.36,1),translate .70s cubic-bezier(.16,1,.3,1);
  transition-delay:var(--semc-motion-delay,0ms)
}
.cms-dynamic-process-wrap .step.reveal:not(.visible)>b,
.cms-dynamic-process-wrap .step.reveal:not(.visible)>h3,
.cms-dynamic-process-wrap .step.reveal:not(.visible)>p{opacity:.12;translate:0 var(--semc-reveal-y,11px)}
.cms-dynamic-process-wrap .step.reveal.visible>b,
.cms-dynamic-process-wrap .step.reveal.visible>h3,
.cms-dynamic-process-wrap .step.reveal.visible>p{opacity:1;translate:0 0}
@media(hover:hover) and (pointer:fine){
  .cms-dynamic-process-wrap .step.reveal:hover:where(:not(.semc-touch-feedback)),
  .cms-dynamic-process-wrap .step.semc-scroll-motion.semc-reveal-done:hover:where(:not(.semc-touch-feedback)){
    transform:none!important;translate:0 0!important;scale:1!important;
    box-shadow:0 20px 46px rgba(26,61,87,.13)!important;border-color:rgba(49,117,172,.36)!important
  }
  .cms-dynamic-process-wrap .step.reveal.visible:hover:where(:not(.semc-touch-feedback))>b,
  .cms-dynamic-process-wrap .step.reveal.visible:hover:where(:not(.semc-touch-feedback))>h3,
  .cms-dynamic-process-wrap .step.reveal.visible:hover:where(:not(.semc-touch-feedback))>p{translate:0 -2px}
}
@media(prefers-reduced-motion:no-preference){
  .cms-dynamic-process-wrap .cms-process-connector-segment{opacity:0;transition:opacity .26s ease}
  .cms-dynamic-process-wrap .cms-process-connector-path{stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset .70s cubic-bezier(.22,1,.36,1)}
  .cms-dynamic-process-wrap .cms-process-connector-segment.is-visible{opacity:1}
  .cms-dynamic-process-wrap .cms-process-connector-segment.is-visible .cms-process-connector-path{stroke-dashoffset:0}
}
@media(prefers-reduced-motion:reduce){
  .cms-dynamic-process-wrap .step.reveal>b,.cms-dynamic-process-wrap .step.reveal>h3,.cms-dynamic-process-wrap .step.reveal>p{transition:none!important;opacity:1!important;translate:none!important}
}
@media(max-width:700px){
  .cms-dynamic-process-wrap .cms-process-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:12px!important}
  .cms-dynamic-process-wrap .cms-process-row>.step{min-height:0!important;padding:16px 11px 17px;border-radius:16px}
  .cms-dynamic-process-wrap .cms-process-row>.step b{font-size:10px;margin-bottom:18px;overflow-wrap:anywhere}
  .cms-dynamic-process-wrap .cms-process-row>.step h3{font-size:clamp(13px,3.65vw,17px);line-height:1.38;overflow-wrap:anywhere}
  .cms-dynamic-process-wrap .cms-process-row>.step p{font-size:clamp(10px,2.65vw,12px);line-height:1.62;overflow-wrap:anywhere}
}


/* ===== SEMC V4.9.8 · process guides stop at row breaks ===== */
.cms-dynamic-process-wrap .cms-process-connector-segment.is-row-break{display:none!important}

/* ===== SEMC V4.9.9 · phone two-up service cards / organization level 2 ===== */
@media(max-width:700px){
  /* Only the maintenance/service collection changes to two-up. Industry/news/
     case collection phone layouts keep their existing rules. */
  .content-card-grid.service-mode,
  .content-card-grid.collection-all-text.service-mode,
  .content-card-grid.collection-mixed-media.service-mode,
  .content-card-grid.collection-all-media.service-mode{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    gap:10px!important;grid-auto-rows:1fr!important
  }
  .content-card-grid.service-mode .visual-content-card{border-radius:17px!important}
  .content-card-grid.service-mode .visual-content-card-copy,
  .content-card-grid.service-mode .visual-content-card.no-image .visual-content-card-copy{
    padding:14px 12px 15px!important;min-height:0!important
  }
  .content-card-grid.service-mode .visual-content-card .visual-kicker,
  .content-card-grid.service-mode .visual-content-card .visual-service-index{
    margin-bottom:9px!important;font-size:8px!important;letter-spacing:.09em!important
  }
  .content-card-grid.service-mode .visual-content-card h3{
    min-height:0!important;margin-bottom:7px!important;
    font-size:clamp(15px,4.3vw,18px)!important;line-height:1.34!important;overflow-wrap:anywhere
  }
  .content-card-grid.service-mode .visual-content-card p{
    font-size:clamp(10.5px,2.85vw,12px)!important;line-height:1.6!important;overflow-wrap:anywhere
  }
  .content-card-grid.service-mode .visual-content-card.no-image::after{right:11px;top:11px;font-size:22px}
}

@media(max-width:760px){
  /* The direct children of the organization root are the level-2 modules the
     user sees immediately below the total/root card. They alone become two-up;
     any deeper child host keeps the existing one-column phone hierarchy. */
  .v443-org-branch[data-depth="0"]>.v443-org-children,
  .v443-org-branch[data-depth="0"]>.v443-org-children[data-cols]{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    gap:16px 12px!important;align-items:stretch!important;margin-top:38px!important
  }
  .v443-org-branch[data-depth="0"]>.v443-org-children>.v443-org-branch{
    min-width:0!important;grid-column:auto!important
  }
  .v443-org-branch[data-depth="0"]>.v443-org-children>.v443-org-branch>.v443-org-node{
    max-width:none!important;width:100%!important;height:100%!important;min-height:100%!important;
    padding:15px 12px 16px!important;border-radius:16px!important
  }
  .v443-org-branch[data-depth="0"]>.v443-org-children>.v443-org-branch>.v443-org-node::before{
    border-radius:16px 16px 0 0!important
  }
  .v443-org-branch[data-depth="0"]>.v443-org-children>.v443-org-branch>.v443-org-node .v443-org-node-top{
    gap:7px!important;margin-bottom:9px!important
  }
  .v443-org-branch[data-depth="0"]>.v443-org-children>.v443-org-branch>.v443-org-node .v443-org-level-label{
    max-width:62%!important;font-size:8px!important;letter-spacing:.10em!important;line-height:1.18!important
  }
  .v443-org-branch[data-depth="0"]>.v443-org-children>.v443-org-branch>.v443-org-node .v443-org-node-index{
    min-width:27px!important;max-width:40%!important;min-height:22px!important;
    padding:5px 7px!important;font-size:8.5px!important
  }
  .v443-org-branch[data-depth="0"]>.v443-org-children>.v443-org-branch>.v443-org-node h3{
    font-size:clamp(15px,4.3vw,18px)!important;line-height:1.30!important;overflow-wrap:anywhere
  }
  .v443-org-branch[data-depth="0"]>.v443-org-children>.v443-org-branch>.v443-org-node .v443-org-node-copy{
    margin-top:9px!important;font-size:clamp(10.5px,2.9vw,12px)!important;
    line-height:1.58!important;overflow-wrap:anywhere
  }
}



/* ===== SEMC Website V5.0.2 · equipment carousel slide clipping ===== */
/* Each slide clips its own hover-zoomed image. Without this, the adjacent
   off-screen image can scale a few pixels into the visible viewport. */
.v36-equipment-slide{
  min-width:100%!important;
  max-width:100%!important;
  overflow:hidden!important
}
.v36-equipment-slide img{display:block}


/* ===== SEMC Website V5.0.4 · detail hero live layout controls ===== */
.detail-breadcrumb{font-size:var(--detail-breadcrumb-font-size,14px)}
.detail-hero[data-top-spacing="compact"]{padding-top:136px;min-height:500px}
.detail-hero[data-top-spacing="close"]{padding-top:120px;min-height:480px}
.detail-hero[data-top-spacing="closer"]{padding-top:108px;min-height:462px}
@media(max-width:980px){
  .detail-hero[data-top-spacing]{min-height:auto}
  .detail-hero[data-top-spacing="compact"]{padding-top:116px}
  .detail-hero[data-top-spacing="close"]{padding-top:104px}
  .detail-hero[data-top-spacing="closer"]{padding-top:94px}
}
@media(max-width:640px){
  .detail-breadcrumb{font-size:var(--detail-breadcrumb-font-size-mobile,12px)}
  .detail-hero[data-top-spacing="compact"]{padding-top:96px}
  .detail-hero[data-top-spacing="close"]{padding-top:84px}
  .detail-hero[data-top-spacing="closer"]{padding-top:76px}
}


/* ===== SEMC Website V5.0.5 · responsive layout + sparse equipment + optional A4 note ===== */
/* A cleared lower-right note has no separator and the remaining copy stays
   naturally centred by the existing flex story container. */
.v365-standard-story.is-footnote-empty{justify-content:center!important}
.v365-standard-story.is-footnote-empty .v365-standard-footnote{display:none!important;border-top:0!important;margin-top:0!important;padding-top:0!important}

/* Sparse equipment data should not inherit the image height. Short values share
   a row; long prose receives a full row. This keeps the right side compact while
   preserving the existing image / parameter visual hierarchy. */
.v36-equipment-main{align-items:start!important}
.v36-equipment-params,
.v36-equipment-params[data-count="1"],.v36-equipment-params[data-count="2"],.v36-equipment-params[data-count="3"],
.v36-equipment-params[data-count="4"],.v36-equipment-params[data-count="5"],.v36-equipment-params[data-count="6"],
.v36-equipment-params[data-count="7"],.v36-equipment-params[data-count="8"]{
  width:100%!important;height:auto!important;min-height:0!important;align-self:start!important;align-content:start!important;
  grid-template-columns:repeat(2,minmax(0,1fr))!important;grid-template-rows:none!important;grid-auto-rows:minmax(88px,auto)!important;gap:10px!important
}
.v36-equipment-params[data-count="1"]{grid-template-columns:minmax(0,1fr)!important}
.v36-equipment-param{height:auto!important;min-height:88px!important;padding:14px 15px!important;justify-content:center!important;align-self:stretch!important}
.v36-equipment-param.is-wide,.v36-equipment-param.is-balance-wide{grid-column:1/-1!important}
.v36-equipment-param.is-wide{min-height:96px!important}
@media(max-width:900px){
  .v36-equipment-params{align-self:start!important;grid-auto-rows:minmax(82px,auto)!important}
}
@media(max-width:700px){
  .v36-equipment-params,
  .v36-equipment-params[data-count="1"],.v36-equipment-params[data-count="2"],.v36-equipment-params[data-count="3"],
  .v36-equipment-params[data-count="4"],.v36-equipment-params[data-count="5"],.v36-equipment-params[data-count="6"],
  .v36-equipment-params[data-count="7"],.v36-equipment-params[data-count="8"]{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;grid-template-rows:none!important;grid-auto-rows:minmax(76px,auto)!important;gap:8px!important
  }
  .v36-equipment-params[data-count="1"]{grid-template-columns:minmax(0,1fr)!important}
  .v36-equipment-param{min-height:76px!important;padding:11px 10px!important}
  .v36-equipment-param.is-wide,.v36-equipment-param.is-balance-wide{grid-column:1/-1!important}
}
@media(max-width:340px){
  .v36-equipment-params,
  .v36-equipment-params[data-count]{grid-template-columns:minmax(0,1fr)!important}
  .v36-equipment-param.is-wide,.v36-equipment-param.is-balance-wide{grid-column:auto!important}
}

/* Phone title-area settings are independent only when the CMS stores a mobile
   value. Missing values resolve to PC in JavaScript, preserving existing pages. */
@media(max-width:640px){
  .detail-hero[data-top-spacing-mobile="default"]{padding-top:112px!important}
  .detail-hero[data-top-spacing-mobile="compact"]{padding-top:96px!important}
  .detail-hero[data-top-spacing-mobile="close"]{padding-top:84px!important}
  .detail-hero[data-top-spacing-mobile="closer"]{padding-top:76px!important}
}


/* ===== SEMC Website V5.0.6 · corporate-values custom-gap continuity ===== */
/* The corporate-values section has its own pale blue decorative surface. When a
   shortened next-gap is used, the generic soft mask could expose that local
   surface at the bridge ends and make a horizontal band visible. For this one
   renderer family, paint the entire measured whitespace bridge opaquely; the
   shared top/bottom tones are still calculated by the existing V4.8 transition
   engine, so geometry and the four spacing values remain unchanged. */
body[data-page-id] .semc-module-gap-bridge.semc-gap-bridge-values{
  -webkit-mask-image:none!important;mask-image:none!important;
  -webkit-mask:none!important;mask:none!important
}


/* ===== SEMC Website V5.1.1 · Safari continuity / retained-effects performance ===== */
/* WebKit never enters a cross-document root snapshot. Chromium is opted back
   in by site.js after engine detection. During the WebKit fallback the content
   alone performs the handoff; the fixed glass rail is never faded, transformed,
   filtered or promoted to a temporary 3D layer. */
html.semc-webkit .site-nav,
html.semc-webkit body.semc-route-prep .site-nav,
html.semc-webkit body.semc-page-leaving .site-nav,
html.semc-webkit body.semc-nav-freeze .site-nav,
html.semc-webkit.semc-nav-arrival .site-nav{
  opacity:1!important;
  transform:none!important;
  translate:none!important;
  filter:none!important;
  will-change:auto!important;
  -webkit-backdrop-filter:blur(28px) saturate(1.36)!important;
  backdrop-filter:blur(28px) saturate(1.36)!important
}
html.semc-webkit .site-nav[data-nav-theme="dark"],
html.semc-webkit body.semc-page-leaving .site-nav[data-nav-theme="dark"]{
  -webkit-backdrop-filter:blur(28px) saturate(1.30)!important;
  backdrop-filter:blur(28px) saturate(1.30)!important
}
@media(max-width:980px){
  html.semc-webkit .site-nav,
  html.semc-webkit .site-nav[data-nav-theme="dark"]{
    -webkit-backdrop-filter:blur(28px) saturate(1.32)!important;
    backdrop-filter:blur(28px) saturate(1.32)!important
  }
}
@media(prefers-reduced-motion:no-preference){
  html.semc-webkit body.semc-page-leaving main,
  html.semc-webkit body.semc-page-leaving .corp-footer{
    opacity:.94!important;
    transform:none!important;
    filter:none!important;
    transition:opacity .14s ease!important
  }
  html.semc-webkit body.semc-route-prep main,
  html.semc-webkit body.semc-route-prep .corp-footer{
    transform:none!important;
    filter:none!important
  }
}

/* Off-screen modules keep their full glass, shadow and motion styling. The
   browser simply postpones their paint/layout work until they approach the
   viewport; the intrinsic fallback prevents scroll-height jumps. */
@supports(content-visibility:auto){
  body:not(.cms-preview-mode) main .page > section,
  body:not(.cms-preview-mode) main .detail-modules > section{
    content-visibility:auto;
    contain-intrinsic-size:auto 760px
  }
  body:not(.cms-preview-mode) main .page > .page-visual-hero-section.semc-page-leading-visual{
    content-visibility:visible;
    contain-intrinsic-size:none
  }
}

/* Intrinsic dimensions reserve the correct ratio before image decode; existing
   component selectors continue to own each image's displayed size. */
img[width][height]{max-width:100%}


/* ===== SEMC V5.1.1 · footer regression repair =====
   Keep the existing footer layout, but prevent injected QR images from inheriting
   an oversized replaced-element height in desktop/CMS-preview rendering. */
@media(min-width:1101px){
  .corp-footer .footer-qr-item img,
  .corp-footer .footer-qr-placeholder{
    width:98px!important;
    height:98px!important;
    min-width:98px!important;
    min-height:98px!important;
    max-width:98px!important;
    max-height:98px!important;
    aspect-ratio:1/1!important;
    object-fit:contain!important;
  }
  .corp-footer .footer-qr-item{
    align-self:start!important;
    align-content:start!important;
  }
}


/* ===== SEMC V5.1.4 · service-request issue chip regression =====
   CMS preview may wrap editable chip text. The wrapper must stay typographic-only
   so the original label > span remains the single pill outline. */
.service-request-chips label > span [data-cms-text-key],
.service-request-chips label > span .cms-preview-text,
.service-request-chips label > span .cms-preview-locator,
.service-request-chips label > span .cms-text-locator{
  display:inline!important;
  padding:0!important;
  margin:0!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
  min-width:0!important;
  min-height:0!important;
  line-height:inherit!important;
}


/* ===== SEMC V5.1.4 · About managed-image first-paint guard =====
   Hide only CMS-managed About images until CMS content has resolved their source.
   This prevents the old/default image flash without blocking the whole page. */
html[data-cms-loading="1"] body[data-page="about"] main [data-cms-image]{
  visibility:hidden!important;
}

html[data-cms-loading="1"] body[data-page="about"] main{
  opacity:1!important;
  visibility:visible!important;
}


/* ===== SEMC V5.1.4 · service-request issue chips single-outline fix ===== */
.service-request-chips label{
  border:0!important;
  outline:0!important;
  box-shadow:none!important;
  background:transparent!important;
  padding:0!important;
  border-radius:0!important;
}
.service-request-chips label > span{
  box-shadow:none!important;
}
.service-request-chips label > span[data-cms-text-key],
.service-request-chips label > span[data-cms-locator],
.service-request-chips label > span[data-preview-locator],
.service-request-chips label > span.cms-preview-text,
.service-request-chips label > span.cms-preview-locator,
.service-request-chips label > span.cms-text-locator,
.service-request-chips label > span.cms-locator{
  outline:0!important;
  box-shadow:none!important;
}
.service-request-chips label > span > span,
.service-request-chips label > span > [data-cms-text-key],
.service-request-chips label > span > [data-cms-locator],
.service-request-chips label > span > [data-preview-locator],
.service-request-chips label > span > .cms-preview-text,
.service-request-chips label > span > .cms-preview-locator,
.service-request-chips label > span > .cms-text-locator,
.service-request-chips label > span > .cms-locator{
  display:inline!important;
  padding:0!important;
  margin:0!important;
  border:0!important;
  outline:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
  min-width:0!important;
  min-height:0!important;
  line-height:inherit!important;
}

/* ===== SEMC V5.1.4 · About stale-source root fix ===== */
body[data-page-id="about"] main img[data-cms-image]:not([src]){visibility:hidden!important;}


/* ===== SEMC Website V5.1.7 · equipment spotlight image paint contract ===== */
/* The carousel has a definite aspect ratio. Carry that height through every flex
   layer so WebKit cannot resolve a slide image against an auto-height track and
   leave only the pale carousel background visible. */
.v36-equipment-carousel .v36-equipment-viewport,
.v36-equipment-carousel .v36-equipment-track,
.v36-equipment-carousel .v36-equipment-slide{height:100%!important;min-height:0!important}
.v36-equipment-carousel .v36-equipment-slide img{
  display:block!important;width:100%!important;height:100%!important;
  min-width:100%!important;min-height:100%!important;object-fit:cover!important;
  opacity:1!important;visibility:visible!important
}

/* ===== SEMC Website V5.2.3 · corporate-values standard surface parity ===== */
/* Corporate-values now uses the exact same intrinsic section-tone and measured
   custom-gap bridge pipeline as every other stable module. Historical V5.1.8–
   V5.2.2 values-only handoff layers were removed instead of overridden. Keep the
   cards' own artwork/shadows, but let the shared section system own both edges. */
body[data-page-id] .page > .v440-values-section.semc-toned-section,
body[data-page-id] .detail-modules > .v440-values-section.semc-toned-section{
  overflow:visible!important
}


/* ===== SEMC V5.2.5 · text-gallery manual rows / footer legal records ===== */
/* A custom text-gallery uses one consistent 12-column desktop/tablet grid.
   V5.2.4 mixed 12-column span values with the older 2/3/4-column adaptive
   grid, which created implicit columns and the tiny tiles seen after a break. */
.cms-dynamic-textGallery .cms-adaptive-gallery.has-custom-rows{
  --gallery-cols:12!important;
  grid-template-columns:repeat(12,minmax(0,1fr))!important;
  max-width:1120px!important
}
.cms-dynamic-textGallery .cms-adaptive-gallery.has-custom-rows>figure{grid-column-start:auto!important}
.cms-dynamic-textGallery .cms-adaptive-gallery.has-custom-rows>figure[data-custom-row-start="1"]{grid-column-start:1!important}
.cms-dynamic-textGallery .cms-adaptive-gallery.has-custom-rows>figure.custom-row-size-1{grid-column-end:span 12!important;aspect-ratio:16/9!important}
.cms-dynamic-textGallery .cms-adaptive-gallery.has-custom-rows>figure.custom-row-size-2{grid-column-end:span 6!important;aspect-ratio:4/3!important}
.cms-dynamic-textGallery .cms-adaptive-gallery.has-custom-rows>figure.custom-row-size-3{grid-column-end:span 4!important;aspect-ratio:4/3!important}
.cms-dynamic-textGallery .cms-adaptive-gallery.has-custom-rows>figure.custom-row-size-4{grid-column-end:span 3!important;aspect-ratio:4/3!important}
@media(max-width:980px){
  .cms-dynamic-textGallery .cms-adaptive-gallery.has-custom-rows{
    --gallery-cols:12!important;grid-template-columns:repeat(12,minmax(0,1fr))!important;max-width:900px!important
  }
  .cms-dynamic-textGallery .cms-adaptive-gallery.has-custom-rows>figure.custom-row-size-1{grid-column-end:span 12!important;aspect-ratio:16/9!important}
  .cms-dynamic-textGallery .cms-adaptive-gallery.has-custom-rows>figure.custom-row-size-2{grid-column-end:span 6!important}
  .cms-dynamic-textGallery .cms-adaptive-gallery.has-custom-rows>figure.custom-row-size-3{grid-column-end:span 6!important}
  .cms-dynamic-textGallery .cms-adaptive-gallery.has-custom-rows>figure.custom-row-size-3.custom-row-pos-3{grid-column-start:1!important;grid-column-end:span 12!important;aspect-ratio:16/9!important}
  .cms-dynamic-textGallery .cms-adaptive-gallery.has-custom-rows>figure.custom-row-size-4{grid-column-end:span 6!important}
}
@media(max-width:700px){
  .cms-dynamic-textGallery .cms-adaptive-gallery.has-custom-rows{
    --gallery-cols:2!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;max-width:100%!important
  }
  .cms-dynamic-textGallery .cms-adaptive-gallery.has-custom-rows>figure.custom-row-size-1,
  .cms-dynamic-textGallery .cms-adaptive-gallery.has-custom-rows>figure.custom-row-size-3.custom-row-pos-3{grid-column-start:1!important;grid-column-end:span 2!important;aspect-ratio:16/10!important}
  .cms-dynamic-textGallery .cms-adaptive-gallery.has-custom-rows>figure.custom-row-size-2,
  .cms-dynamic-textGallery .cms-adaptive-gallery.has-custom-rows>figure.custom-row-size-3,
  .cms-dynamic-textGallery .cms-adaptive-gallery.has-custom-rows>figure.custom-row-size-4{grid-column-end:span 1!important;aspect-ratio:4/3!important}
}

/* Bottom legal records read left-to-right as company, ICP and public-security
   registration; the existing English legal line remains anchored right. */
.footer-bottom{grid-template-columns:auto auto auto minmax(0,1fr)!important;column-gap:14px!important}
.footer-bottom>.footer-legal-left{grid-column:1!important}
.footer-bottom>.footer-icp-slot{grid-column:2!important;justify-self:start!important}
.footer-bottom>.footer-psb-slot{grid-column:3!important;justify-self:start!important}
.footer-bottom>.footer-legal-right{grid-column:4!important;justify-self:end!important}
.footer-icp-slot:not([href]),.footer-psb-slot:not([href]){cursor:default}
.footer-psb-slot{color:inherit;white-space:nowrap;text-decoration:none;transition:color .22s ease;display:flex;align-items:center;min-height:1.6em}
.footer-psb-slot:hover{color:#b8c2c9}
.footer-psb-slot[hidden]{display:none!important}
@media(max-width:980px){
  .footer-bottom>.footer-legal-left,.footer-bottom>.footer-icp-slot,.footer-bottom>.footer-psb-slot,.footer-bottom>.footer-legal-right{grid-column:1!important;justify-self:center!important;text-align:center!important}
}


/* ===== SEMC V5.2.6 · reliable text-gallery row containers / mobile footer legal layout ===== */
/* Manual "本图后换行" rows own their geometry.  Wrapping each requested row
   prevents the many historical count-based gallery selectors from competing
   with row-break sizing, while untouched galleries keep the established DOM. */
.cms-dynamic-textGallery .cms-adaptive-gallery.has-custom-rows{
  display:flex!important;
  flex-direction:column!important;
  width:100%!important;
  max-width:1320px!important;
  gap:16px!important;
}
.cms-dynamic-textGallery .cms-adaptive-gallery.has-custom-rows>.cms-text-gallery-row{
  display:grid!important;
  grid-template-columns:repeat(var(--semc-row-count),minmax(0,1fr))!important;
  gap:16px!important;
  width:100%!important;
  min-width:0!important;
}
.cms-dynamic-textGallery .cms-adaptive-gallery.has-custom-rows>.cms-text-gallery-row[data-row-size="1"]{--semc-row-count:1}
.cms-dynamic-textGallery .cms-adaptive-gallery.has-custom-rows>.cms-text-gallery-row[data-row-size="2"]{--semc-row-count:2}
.cms-dynamic-textGallery .cms-adaptive-gallery.has-custom-rows>.cms-text-gallery-row[data-row-size="3"]{--semc-row-count:3}
.cms-dynamic-textGallery .cms-adaptive-gallery.has-custom-rows>.cms-text-gallery-row[data-row-size="4"]{--semc-row-count:4}
.cms-dynamic-textGallery .cms-adaptive-gallery.has-custom-rows>.cms-text-gallery-row>figure,
.cms-dynamic-textGallery .cms-adaptive-gallery.has-custom-rows>.cms-text-gallery-row>figure:last-child{
  grid-column:auto!important;
  width:100%!important;
  min-width:0!important;
  max-width:none!important;
  aspect-ratio:4/3!important;
  margin:0!important;
}
.cms-dynamic-textGallery .cms-adaptive-gallery.has-custom-rows>.cms-text-gallery-row[data-row-size="1"]>figure{
  aspect-ratio:16/9!important;
}
@media(max-width:980px){
  .cms-dynamic-textGallery .cms-adaptive-gallery.has-custom-rows,
  .cms-dynamic-textGallery .cms-adaptive-gallery.has-custom-rows>.cms-text-gallery-row{gap:12px!important}
}
@media(max-width:700px){
  .cms-dynamic-textGallery .cms-adaptive-gallery.has-custom-rows{gap:9px!important}
  .cms-dynamic-textGallery .cms-adaptive-gallery.has-custom-rows>.cms-text-gallery-row{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    gap:9px!important;
  }
  .cms-dynamic-textGallery .cms-adaptive-gallery.has-custom-rows>.cms-text-gallery-row>figure,
  .cms-dynamic-textGallery .cms-adaptive-gallery.has-custom-rows>.cms-text-gallery-row>figure:last-child{
    grid-column:auto!important;aspect-ratio:4/3!important
  }
  .cms-dynamic-textGallery .cms-adaptive-gallery.has-custom-rows>.cms-text-gallery-row[data-row-size="1"]>figure,
  .cms-dynamic-textGallery .cms-adaptive-gallery.has-custom-rows>.cms-text-gallery-row[data-row-size="3"]>figure:last-child{
    grid-column:1/-1!important;aspect-ratio:16/10!important
  }
}

/* Mobile legal area: company on its own line, the two filing records aligned as
   a compact pair, and the English legal line separated below. */
@media(max-width:700px){
  .corp-footer .footer-bottom{
    display:grid!important;
    grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;
    align-items:center!important;
    justify-items:center!important;
    column-gap:12px!important;
    row-gap:7px!important;
    margin-top:24px!important;
    padding-top:16px!important;
    font-size:10.5px!important;
    line-height:1.45!important;
  }
  .corp-footer .footer-bottom>.footer-legal-left{
    grid-column:1/-1!important;grid-row:1!important;justify-self:center!important;text-align:center!important;
    font-size:11px!important;color:#929da5!important
  }
  .corp-footer .footer-bottom>.footer-icp-slot{
    grid-column:1!important;grid-row:2!important;justify-self:end!important;text-align:right!important
  }
  .corp-footer .footer-bottom>.footer-psb-slot{
    grid-column:2!important;grid-row:2!important;justify-self:start!important;text-align:left!important
  }
  .corp-footer .footer-bottom>.footer-legal-right{
    grid-column:1/-1!important;grid-row:3!important;justify-self:center!important;text-align:center!important;
    margin-top:3px!important;font-size:9.5px!important;color:#77858f!important
  }
  .corp-footer .footer-bottom>.footer-icp-slot,
  .corp-footer .footer-bottom>.footer-psb-slot{
    min-width:0!important;max-width:100%!important;white-space:normal!important;overflow-wrap:anywhere!important;color:#87949d!important
  }
}
@media(max-width:420px){
  .corp-footer .footer-bottom{grid-template-columns:1fr!important;row-gap:5px!important}
  .corp-footer .footer-bottom>.footer-legal-left{grid-column:1!important;grid-row:1!important}
  .corp-footer .footer-bottom>.footer-icp-slot{grid-column:1!important;grid-row:2!important;justify-self:center!important;text-align:center!important}
  .corp-footer .footer-bottom>.footer-psb-slot{grid-column:1!important;grid-row:3!important;justify-self:center!important;text-align:center!important}
  .corp-footer .footer-bottom>.footer-legal-right{grid-column:1!important;grid-row:4!important}
}


/* ===== SEMC V5.2.7 · intrinsically centered mobile legal pair / mobile-only line breaks ===== */
@media(max-width:700px){
  .corp-footer .footer-bottom{grid-template-columns:max-content max-content!important;justify-content:center!important;justify-items:center!important;width:100%!important}
  .corp-footer .footer-bottom>.footer-icp-slot{grid-column:1!important;justify-self:center!important;text-align:center!important}
  .corp-footer .footer-bottom>.footer-psb-slot{grid-column:2!important;justify-self:center!important;text-align:center!important}
}
@media(max-width:420px){
  .corp-footer .footer-bottom{grid-template-columns:minmax(0,1fr)!important}
  .corp-footer .footer-bottom>.footer-icp-slot{grid-column:1!important;grid-row:2!important}
  .corp-footer .footer-bottom>.footer-psb-slot{grid-column:1!important;grid-row:3!important}
}


/* ===== SEMC V5.2.9 · honors / authorization showcases + terminal footer-gap repair ===== */
.v528-honor-layout{display:grid;grid-template-columns:minmax(220px,.72fr) minmax(0,2.1fr);gap:28px;margin-top:42px;align-items:stretch}
.v528-honor-nav{display:grid;align-content:start;gap:8px;padding:10px;border:1px solid rgba(54,106,146,.11);border-radius:26px;background:rgba(255,255,255,.48);box-shadow:0 20px 48px rgba(26,62,88,.055)}
.v528-honor-nav-item{appearance:none;border:0;background:transparent;display:grid;grid-template-columns:34px minmax(0,1fr);gap:12px;text-align:left;padding:15px 14px;border-radius:18px;color:#6c8292;cursor:pointer;transition:background .28s ease,box-shadow .28s ease,color .28s ease,transform .28s ease}
.v528-honor-nav-item>span{font-size:10px;font-weight:800;letter-spacing:.12em;color:#6d98b7;padding-top:2px}.v528-honor-nav-item small{display:block;font-size:9px;font-weight:760;letter-spacing:.13em;text-transform:uppercase;margin-bottom:5px}.v528-honor-nav-item strong{display:block;color:#234b69;font-size:15px;line-height:1.35}.v528-honor-nav-item.active{background:rgba(255,255,255,.92);box-shadow:0 12px 30px rgba(26,62,88,.09);color:#2f6e9d;transform:translateX(3px)}
.v528-honor-stage{min-width:0;position:relative}.v528-honor-viewport{overflow:hidden;touch-action:pan-y;cursor:grab;border-radius:30px}.v528-honor-layout.is-dragging .v528-honor-viewport{cursor:grabbing}.v528-honor-track{display:flex;gap:18px;align-items:stretch}.v528-honor-card{flex:0 0 100%;display:grid;grid-template-columns:minmax(260px,.92fr) minmax(0,1.08fr);gap:0;overflow:hidden;min-height:430px;border-radius:30px;background:linear-gradient(145deg,rgba(255,255,255,.98),rgba(239,247,252,.92));border:1px solid rgba(255,255,255,.96);box-shadow:0 28px 72px rgba(26,62,88,.12)}
.v528-honor-media{position:relative;min-height:360px;background:#dceaf4;overflow:hidden}.v528-honor-media img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .6s cubic-bezier(.2,.7,.2,1)}.v528-honor-card:hover:where(:not(.semc-touch-feedback)) .v528-honor-media img{transform:scale(1.025)}.v528-honor-media>span{position:absolute;top:22px;left:22px;display:grid;place-items:center;width:44px;height:44px;border-radius:15px;background:rgba(255,255,255,.88);backdrop-filter:blur(12px);color:#2e6f9f;font-size:11px;font-weight:820;letter-spacing:.12em}
.v528-honor-copy{display:flex;flex-direction:column;justify-content:center;padding:44px 46px}.v528-honor-copy small{color:#4b82a9;font-size:10px;line-height:1.5;font-weight:780;letter-spacing:.12em;text-transform:uppercase}.v528-honor-copy h3{margin:15px 0 18px;color:#173f60;font-size:clamp(28px,3vw,44px);line-height:1.08;letter-spacing:-.04em}.v528-honor-copy p{margin:0;color:#6a8090;font-size:15px;line-height:1.9}.v528-honor-controls{display:flex;align-items:center;gap:10px;margin-top:16px}.v528-honor-progress{height:3px;flex:1;overflow:hidden;border-radius:999px;background:rgba(43,101,143,.12)}.v528-honor-progress i{display:block;height:100%;width:0;background:linear-gradient(90deg,#3a8dca,#58a7dc 72%,#d35c75);border-radius:inherit;transition:width .4s ease}.v528-honor-controls button{width:42px;height:42px;border-radius:14px;border:1px solid rgba(46,104,146,.16);background:rgba(255,255,255,.78);color:#2c6896;font-size:17px;cursor:pointer;transition:.22s}.v528-honor-controls button:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 10px 24px rgba(30,74,105,.1)}.v528-honor-controls button:disabled{opacity:.34;cursor:default}
.v528-auth-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin-top:42px}.v528-auth-card{position:relative;overflow:hidden;min-height:390px;padding:20px;border-radius:28px;background:linear-gradient(145deg,rgba(255,255,255,.96),rgba(239,247,252,.88));border:1px solid rgba(255,255,255,.96);box-shadow:0 24px 62px rgba(25,59,83,.095);transition:transform .32s ease,box-shadow .32s ease}.v528-auth-card::before{content:"";position:absolute;left:0;right:0;top:0;height:3px;background:linear-gradient(90deg,#3a8dca,#5ba9dc 70%,#d35b74)}.v528-auth-card:hover:where(:not(.semc-touch-feedback)){transform:translateY(-6px);box-shadow:0 30px 74px rgba(25,59,83,.13)}.v528-auth-index{position:absolute;z-index:2;right:28px;top:28px;color:#7898ae;font-size:10px;font-weight:800;letter-spacing:.16em}.v528-auth-media{height:164px;border-radius:20px;overflow:hidden;background:linear-gradient(135deg,#dceaf4,#edf5fa);display:grid;place-items:center}.v528-auth-media img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .5s ease}.v528-auth-card:hover:where(:not(.semc-touch-feedback)) .v528-auth-media img{transform:scale(1.025)}.v528-auth-copy{padding:25px 8px 7px}.v528-auth-company{color:#3d7ba7;font-size:10px;line-height:1.5;font-weight:800;letter-spacing:.13em;text-transform:uppercase}.v528-auth-copy h3{margin:10px 0 12px;color:#173f60;font-size:23px;line-height:1.25;letter-spacing:-.025em}.v528-auth-copy p{margin:0 0 18px;color:#687f90;font-size:14px;line-height:1.8}.v528-auth-copy small{display:block;padding-top:15px;border-top:1px solid rgba(42,92,127,.1);color:#8496a3;font-size:11px;line-height:1.6}
@media(max-width:1100px){.v528-honor-layout{grid-template-columns:1fr}.v528-honor-nav{display:flex;overflow:auto;scrollbar-width:none}.v528-honor-nav::-webkit-scrollbar{display:none}.v528-honor-nav-item{flex:0 0 min(280px,70vw)}.v528-auth-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:700px){.v528-honor-layout{gap:16px;margin-top:28px}.v528-honor-nav{padding:7px;border-radius:20px}.v528-honor-nav-item{flex-basis:min(240px,78vw);padding:12px}.v528-honor-card{grid-template-columns:1fr;min-height:0;border-radius:24px}.v528-honor-media{min-height:0;height:auto;aspect-ratio:4/3}.v528-honor-copy{padding:28px 24px 30px}.v528-honor-copy h3{font-size:28px}.v528-honor-controls button{width:38px;height:38px;border-radius:12px}.v528-auth-grid{grid-template-columns:1fr;gap:14px;margin-top:28px}.v528-auth-card{min-height:0;border-radius:23px;padding:15px}.v528-auth-media{height:auto;aspect-ratio:16/9}.v528-auth-copy{padding:21px 5px 5px}}
/* Terminal content spacing never paints into the dark footer. */
.corp-footer.cms-prev-gap-compact,.corp-footer.cms-prev-gap-close,.corp-footer.cms-prev-gap-closer{padding-top:0!important;--semc-tone-top-depth:0px!important}


/* ===== SEMC V5.2.9 · image-stack honors / authorization archive / terminal footer flush ===== */
.v529-honor-layout{display:grid;grid-template-columns:minmax(230px,.7fr) minmax(0,2.15fr);gap:34px;margin-top:42px;align-items:center}
.v529-honor-nav{display:grid;gap:7px;align-content:center}.v529-honor-nav-item{appearance:none;border:0;background:transparent;display:grid;grid-template-columns:34px minmax(0,1fr);gap:11px;text-align:left;padding:13px 14px;border-radius:17px;color:#718898;cursor:pointer;transition:background .28s ease,transform .28s ease,box-shadow .28s ease}.v529-honor-nav-item>span{font:800 10px/1.4 system-ui;color:#79a0ba;letter-spacing:.12em}.v529-honor-nav-item small{display:block;color:#7894a8;font-size:9px;font-weight:800;letter-spacing:.13em;text-transform:uppercase}.v529-honor-nav-item strong{display:block;margin-top:4px;color:#244d6c;font-size:15px;line-height:1.35}.v529-honor-nav-item em{display:block;margin-top:5px;color:#91a0aa;font-size:10px;line-height:1.45;font-style:normal}.v529-honor-nav-item.active{background:rgba(255,255,255,.86);box-shadow:0 12px 30px rgba(31,69,96,.08);transform:translateX(4px)}
.v529-honor-stage{min-width:0}.v529-honor-viewport{position:relative;height:clamp(430px,46vw,650px);overflow:hidden;touch-action:pan-y;cursor:grab}.v529-honor-layout.is-dragging .v529-honor-viewport{cursor:grabbing}.v529-honor-stack{position:absolute;inset:0;display:grid;place-items:center;perspective:1400px}.v529-honor-photo{--stack-offset:0;position:absolute;margin:0;display:grid;place-items:center;max-width:min(72%,620px);max-height:90%;border-radius:4px;background:#fff;box-shadow:0 28px 65px rgba(23,55,79,.16);overflow:hidden;transform:translate3d(calc(var(--stack-offset)*17% + var(--honor-drag,0px)*.16),calc(var(--stack-abs)*10px),calc(var(--stack-abs)*-40px)) rotate(calc(var(--stack-offset)*1.2deg)) scale(calc(1 - var(--stack-abs)*.075));opacity:calc(1 - var(--stack-abs)*.18);z-index:calc(20 - var(--stack-abs));transition:transform .62s cubic-bezier(.2,.75,.2,1),opacity .42s ease,filter .42s ease;filter:saturate(calc(1 - var(--stack-abs)*.12));will-change:transform}.v529-honor-photo.portrait{aspect-ratio:210/297;height:min(88%,610px);width:auto}.v529-honor-photo.landscape{aspect-ratio:297/210;width:min(72%,650px);height:auto}.v529-honor-photo.auto{width:min(72%,620px);height:min(88%,610px)}.v529-honor-photo img{display:block;width:100%;height:100%;object-fit:contain;background:#fff}.v529-honor-photo.auto img{width:auto;height:auto;max-width:100%;max-height:100%;object-fit:contain}.v529-honor-photo figcaption{position:absolute;left:14px;right:14px;bottom:12px;width:max-content;max-width:calc(100% - 28px);padding:8px 11px;border-radius:11px;background:rgba(255,255,255,.88);backdrop-filter:blur(10px);color:#315c7b;font-size:11px;line-height:1.4;opacity:0;transform:translateY(5px);transition:.25s}.v529-honor-photo.active figcaption{opacity:1;transform:none}.v529-honor-photo.stack-hidden{opacity:0;pointer-events:none}.v529-honor-controls{display:flex;align-items:center;gap:10px;margin-top:4px}.v529-honor-progress{height:3px;flex:1;border-radius:999px;overflow:hidden;background:rgba(43,101,143,.11)}.v529-honor-progress i{display:block;height:100%;width:0;border-radius:inherit;background:linear-gradient(90deg,#3a8dca,#58a7dc 72%,#d35c75);transition:width .4s ease}.v529-honor-controls button{width:40px;height:40px;border-radius:13px;border:1px solid rgba(46,104,146,.15);background:rgba(255,255,255,.75);color:#2c6896;cursor:pointer}.v529-honor-controls button:disabled{opacity:.34}
.v529-auth-wall{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:38px 24px;margin-top:42px;align-items:start}.v529-auth-document{min-width:0}.v529-auth-document.landscape{grid-column:span 2}.v529-auth-paper{position:relative;display:grid;place-items:center;width:100%;overflow:hidden;background:#fff;border:1px solid rgba(44,91,124,.09);box-shadow:0 22px 55px rgba(28,62,87,.11);transition:transform .35s cubic-bezier(.2,.75,.2,1),box-shadow .35s ease}.v529-auth-document.portrait .v529-auth-paper{aspect-ratio:210/297}.v529-auth-document.landscape .v529-auth-paper{aspect-ratio:297/210}.v529-auth-paper img{display:block;width:100%;height:100%;object-fit:contain;background:#fff}.v529-auth-paper>span{position:absolute;top:12px;right:12px;display:grid;place-items:center;width:30px;height:30px;border-radius:10px;background:rgba(238,247,252,.9);color:#4f83a8;font-size:9px;font-weight:850;letter-spacing:.08em}.v529-auth-document:hover:where(:not(.semc-touch-feedback)) .v529-auth-paper{transform:translateY(-6px);box-shadow:0 30px 68px rgba(28,62,87,.15)}.v529-auth-caption{padding:16px 3px 0}.v529-auth-caption small{display:block;color:#4c82a8;font-size:9px;font-weight:820;letter-spacing:.12em;text-transform:uppercase}.v529-auth-caption h3{margin:7px 0 7px;color:#173f60;font-size:18px;line-height:1.35}.v529-auth-caption p{margin:0;color:#718695;font-size:12px;line-height:1.7}.v529-auth-caption em{display:block;margin-top:8px;color:#97a4ad;font-size:10px;line-height:1.55;font-style:normal}
/* Keep the shared white document canvas for top-edge overscroll. Retain the
   technology footer's one-pixel overlap to prevent a fractional footer seam. */
body[data-page-id="technology"]>.corp-footer{position:relative;z-index:2;margin-bottom:-1px!important;padding-bottom:25px!important}
body[data-page-id="technology"]>main{background:#fff}
@media(max-width:1100px){.v529-honor-layout{grid-template-columns:1fr;gap:18px}.v529-honor-nav{display:flex;overflow:auto;scrollbar-width:none}.v529-honor-nav::-webkit-scrollbar{display:none}.v529-honor-nav-item{flex:0 0 min(280px,72vw)}.v529-honor-viewport{height:min(72vw,610px)}.v529-auth-wall{grid-template-columns:repeat(2,minmax(0,1fr))}.v529-auth-document.landscape{grid-column:span 2}}
@media(max-width:700px){.v529-honor-layout{margin-top:28px}.v529-honor-nav-item{flex-basis:min(240px,78vw);padding:11px}.v529-honor-viewport{height:min(105vw,520px)}.v529-honor-photo{max-width:78%}.v529-honor-photo.portrait{height:min(88%,480px)}.v529-honor-photo.landscape{width:min(82%,560px)}.v529-honor-photo.auto{width:min(80%,520px);height:min(86%,480px)}.v529-honor-controls{margin-top:0}.v529-auth-wall{grid-template-columns:1fr;gap:30px;margin-top:28px}.v529-auth-document.landscape{grid-column:auto}.v529-auth-caption{padding-top:13px}}


/* ===== SEMC V5.3.1 · compact showcase modules / crop-native media ratio ===== */
.v529-honor-section,.v529-auth-section{padding-top:72px!important;padding-bottom:72px!important}
.v529-honor-layout{grid-template-columns:minmax(210px,.62fr) minmax(0,1.9fr)!important;gap:26px!important;margin-top:30px!important}.v529-honor-viewport{height:clamp(330px,34vw,500px)!important}.v529-honor-photo{border-radius:10px!important;max-width:min(70%,590px)!important;max-height:88%!important;aspect-ratio:auto!important}.v529-honor-photo img{width:auto!important;height:auto!important;max-width:100%!important;max-height:min(450px,72vh)!important;object-fit:contain!important;border-radius:inherit!important}.v529-honor-controls{margin-top:0!important}.v529-honor-nav-item{padding:10px 12px!important}.v529-honor-nav-item strong{font-size:14px!important}.v529-honor-nav-item em{margin-top:3px!important}.v529-auth-wall{grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:28px 20px!important;margin-top:30px!important}.v529-auth-paper{border-radius:10px!important;aspect-ratio:auto!important;height:auto!important}.v529-auth-paper img{width:100%!important;height:auto!important;max-height:420px!important;object-fit:contain!important;border-radius:inherit!important}.v529-auth-caption{padding-top:12px!important}.v529-auth-caption h3{margin:5px 0!important;font-size:16px!important}.v529-auth-caption p{font-size:11px!important;line-height:1.6!important}.v529-auth-caption em{margin-top:5px!important}.v529-honor-photo[data-display-ratio],.v529-auth-document[data-display-ratio] .v529-auth-paper{aspect-ratio:auto!important}.v529-honor-photo[data-display-ratio] img,.v529-auth-document[data-display-ratio] .v529-auth-paper img{width:auto!important;height:auto!important;max-width:100%!important;object-fit:contain!important}
@media(max-width:1100px){.v529-honor-viewport{height:min(58vw,480px)!important}.v529-auth-wall{grid-template-columns:repeat(2,minmax(0,1fr))!important}.v529-auth-document.landscape{grid-column:span 2}}
@media(max-width:700px){.v529-honor-section,.v529-auth-section{padding-top:54px!important;padding-bottom:54px!important}.v529-honor-layout{margin-top:24px!important;gap:12px!important}.v529-honor-viewport{height:min(88vw,430px)!important}.v529-honor-photo{max-width:78%!important}.v529-honor-photo img{max-height:min(390px,68vh)!important}.v529-auth-wall{grid-template-columns:1fr!important;gap:24px!important;margin-top:24px!important}.v529-auth-document.landscape{grid-column:auto}.v529-auth-paper img{max-height:none!important}}

/* ===== SEMC V5.3.3 · natural honor shadow handoff / adaptive authorization media ===== */
/* Leave space between the photo stack's fixed shadow and its progress controls. */
.v529-honor-stage{position:relative!important;min-width:0!important}
.v529-honor-viewport{overflow:visible!important;margin-bottom:26px!important}
.v529-honor-controls{position:relative!important;z-index:28!important;margin-top:0!important}

/* Honor directory: continuous five-slot window with soft edges. */
.v529-honor-nav{position:relative!important;height:390px!important;overflow:hidden!important;display:block!important;padding:34px 0!important;mask-image:linear-gradient(to bottom,transparent 0,#000 11%,#000 89%,transparent 100%)!important;-webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 11%,#000 89%,transparent 100%)!important}
.v529-honor-nav-item{position:absolute!important;left:0!important;right:0!important;top:50%!important;margin:0!important;transform:translateY(calc(-50% + var(--honor-nav-slot,0)*72px))!important;opacity:var(--honor-nav-opacity,0)!important;transition:transform .55s cubic-bezier(.2,.75,.2,1),opacity .4s ease,background .3s ease,box-shadow .3s ease!important}
.v529-honor-nav-item[hidden]{display:none!important}
.v529-honor-layout.honor-initializing .v529-honor-nav-item{transition:none!important}
.v529-honor-layout.honor-recentering .v529-honor-nav-item{transition:none!important}
.v529-honor-layout.honor-initializing .v529-honor-photo{transition:none!important}
.v529-honor-layout.honor-awaiting-images .v529-honor-viewport{visibility:hidden}
.v529-honor-nav-item.active{box-shadow:0 14px 32px -14px rgba(31,69,96,.23),0 8px 18px -14px rgba(31,69,96,.12)!important}
@media(min-width:1101px){.v529-honor-layout.honor-short .v529-honor-nav-item.honor-directory-copy{display:none!important}}
@media(max-width:1100px){
  .v529-honor-nav{height:auto!important;min-height:0!important;display:flex!important;overflow-x:auto!important;overflow-y:hidden!important;padding:14px 8px 18px!important;mask-image:none!important;-webkit-mask-image:none!important;scrollbar-width:none}
  .v529-honor-nav-item{position:relative!important;left:auto!important;right:auto!important;top:auto!important;transform:none!important;opacity:1!important}
  .v529-honor-nav::-webkit-scrollbar{display:none}
  .v529-honor-nav-item.active{box-shadow:0 9px 22px -10px rgba(31,69,96,.22)!important}
}
/* Each document stays opaque; only the complete stack fades at the viewport edges. */
.v529-honor-viewport::before{content:"";position:absolute;left:50%;bottom:-12px;width:min(80%,var(--honor-shadow-width,780px));height:clamp(62px,7vw,82px);transform:translateX(-50%);background:radial-gradient(ellipse at center,rgba(23,55,79,.22) 0%,rgba(23,55,79,.1) 42%,rgba(23,55,79,0) 74%);pointer-events:none;z-index:0}
.v536-honor-fade{position:absolute;inset:-80px 0 -110px;z-index:1;mask-image:linear-gradient(to right,transparent 0%,#000 9%,#000 91%,transparent 100%);-webkit-mask-image:linear-gradient(to right,transparent 0%,#000 9%,#000 91%,transparent 100%)}
.v536-honor-fade .v529-honor-stack{inset:80px 0 110px}
.v529-honor-photo{opacity:1!important;z-index:calc(20 - var(--stack-abs))!important;transform:translate3d(calc(var(--stack-offset)*17% + var(--honor-edge-shift,0px) + var(--honor-drag,0px)*.16),calc(var(--stack-abs)*10px + var(--honor-y-shift,0px)),calc(var(--stack-abs)*-40px)) rotate(calc(var(--stack-offset)*1.2deg)) scale(calc(1 - var(--stack-abs)*.075)) scale(var(--honor-size-adjust,1))!important;background:transparent!important;box-shadow:none!important;overflow:visible!important;clip-path:none!important;mask-image:none!important;-webkit-mask-image:none!important;transition:transform .62s cubic-bezier(.2,.75,.2,1),opacity .42s ease,filter .42s ease!important}
.v529-honor-photo img{box-shadow:none;background:transparent!important}
.v529-honor-photo.stack-hidden{opacity:0!important;pointer-events:none}
.v529-honor-controls{position:relative!important;z-index:28!important;margin-top:0!important}
@media(max-width:700px){.v529-honor-viewport{margin-bottom:22px!important}}
@media(max-width:1100px){
  .v529-honor-layout{grid-template-columns:minmax(0,1fr)!important}
  .v529-honor-nav{width:100%!important;min-width:0!important;box-sizing:border-box!important}
  .v529-honor-nav-item{flex:0 0 min(280px,72vw)!important;box-sizing:border-box!important}
}
@media(max-width:700px){
  .v529-honor-layout{gap:14px!important}
  .v529-honor-nav-item{flex-basis:min(250px,80vw)!important}
  .v529-honor-viewport{height:clamp(250px,82vw,430px)!important}
  .v536-honor-fade{mask-image:linear-gradient(to right,transparent 0%,#000 3%,#000 97%,transparent 100%);-webkit-mask-image:linear-gradient(to right,transparent 0%,#000 3%,#000 97%,transparent 100%)}
  .v529-honor-photo{max-width:68%!important}
  .v529-honor-photo img{max-height:min(340px,65vh)!important}
  .v529-honor-photo figcaption{transition:none!important;background:rgba(255,255,255,.96)!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;box-shadow:0 7px 22px -13px rgba(31,69,96,.24)}
}

/* Authorization: natural image proportions within equal carousel slots. */
.v534-auth-carousel{position:relative;margin-top:30px;padding:0 48px}
.v534-auth-viewport{overflow:hidden;cursor:grab;touch-action:pan-y;mask-image:linear-gradient(to right,transparent 0%,#000 10%,#000 90%,transparent 100%);-webkit-mask-image:linear-gradient(to right,transparent 0%,#000 10%,#000 90%,transparent 100%)}
.v534-auth-carousel.is-dragging .v534-auth-viewport{cursor:grabbing}
.v529-auth-wall{display:flex!important;flex-wrap:nowrap!important;justify-content:flex-start!important;align-items:center!important;gap:12px!important;margin:0!important;padding:12px 10% 22px!important;transition:transform .58s cubic-bezier(.2,.75,.2,1)!important;will-change:transform}
.v534-auth-carousel.is-dragging .v529-auth-wall,.v529-auth-wall.auth-no-transition{transition:none!important}
.v529-auth-document{grid-column:auto!important;flex:0 0 auto!important;width:var(--auth-slot-width,300px)!important;min-width:0!important;max-width:none!important;display:flex!important;flex-direction:column!important;align-items:center!important}
.v529-auth-paper{position:relative!important;display:block!important;flex:none!important;align-self:center!important;width:var(--auth-media-width,100%)!important;height:auto!important;min-width:0!important;max-width:100%!important;aspect-ratio:auto!important;overflow:visible!important;background:transparent!important;border:0!important;border-radius:12px!important;box-shadow:none!important;margin-inline:auto!important}
.v529-auth-document.portrait .v529-auth-paper,.v529-auth-document.landscape .v529-auth-paper{aspect-ratio:auto!important}
.v529-auth-paper img{display:block!important;width:100%!important;height:auto!important;aspect-ratio:var(--auth-ratio,4/3)!important;max-width:100%!important;max-height:none!important;object-fit:contain!important;background:transparent!important;border-radius:12px!important;box-shadow:0 16px 38px rgba(28,62,87,.11)!important}
.v529-auth-document:hover:where(:not(.semc-touch-feedback)) .v529-auth-paper{transform:translateY(-5px)!important;box-shadow:none!important}
.v529-auth-paper>span{z-index:2}
.v529-auth-caption{width:var(--auth-caption-width,100%)!important;min-width:0!important;max-width:100%!important;align-self:center!important;margin-inline:auto!important;padding:11px 2px 0!important}
.v529-auth-caption h3{font-size:15px!important;line-height:1.35!important;margin:4px 0 5px!important}.v529-auth-caption p{font-size:11px!important;line-height:1.55!important}.v529-auth-caption em{margin-top:4px!important}
.v534-auth-prev,.v534-auth-next{position:absolute;top:42%;z-index:5;width:40px;height:40px;border-radius:13px;border:1px solid rgba(46,104,146,.15);background:rgba(255,255,255,.86);color:#2c6896;box-shadow:0 10px 28px rgba(33,74,104,.08);cursor:pointer;transform:translateY(-50%)}
.v534-auth-prev{left:0}.v534-auth-next{right:0}.v534-auth-prev:disabled,.v534-auth-next:disabled{opacity:.28;cursor:default}
.v534-auth-carousel.is-single .v534-auth-prev,.v534-auth-carousel.is-single .v534-auth-next{display:none}
@media(max-width:1100px){.v534-auth-carousel{padding:0 42px}.v529-auth-wall{gap:10px!important}}
@media(max-width:700px){
  .v534-auth-carousel{margin-top:24px;padding:0 34px}
  .v534-auth-viewport{mask-image:linear-gradient(to right,transparent 0%,#000 8%,#000 92%,transparent 100%);-webkit-mask-image:linear-gradient(to right,transparent 0%,#000 8%,#000 92%,transparent 100%)}
  .v529-auth-wall{padding-left:8%!important;padding-right:8%!important}
  .v534-auth-prev,.v534-auth-next{width:36px;height:36px;border-radius:12px}
}
/* Editable decorations are real content so spacing overlays cannot replace them. */
body[data-page-id="home"] [data-module="homeProof"],.home-proof.cms-dynamic-stats{isolation:isolate!important}
body[data-page-id="home"] [data-module="homeProof"]>.cms-proof-watermark,.home-proof.cms-dynamic-stats>.cms-proof-watermark{position:absolute;z-index:0;top:8px;right:0;max-width:100%;overflow:hidden;white-space:nowrap;pointer-events:none;color:rgba(23,63,96,.045);font-size:clamp(62px,9vw,146px);line-height:1.15;font-weight:850;letter-spacing:-.07em}
body[data-page-id="home"] [data-module="homeProof"] .home-proof-item>.cms-proof-kicker,.home-proof.cms-dynamic-stats .home-proof-item>.cms-proof-kicker{position:absolute!important;z-index:2;top:26px;left:32px;color:#6689a2!important;font-size:10px!important;font-weight:800!important;letter-spacing:.17em!important;line-height:1.4!important}
body[data-page-id="home"] .stat-item:nth-child(n)::after,.cms-dynamic-summary .stat-item:nth-child(n)::after{content:none!important}
body[data-page-id="home"] .stat-item>.cms-summary-index,.cms-dynamic-summary .stat-item>.cms-summary-index{display:block!important;position:relative!important;z-index:1!important;align-self:flex-start;flex:none;margin:0 0 12px!important;color:rgba(31,77,111,.07)!important;font-size:54px!important;line-height:1!important;letter-spacing:-.07em!important;font-weight:820!important;white-space:nowrap}
body[data-page-id="home"] .stat-item>.cms-summary-index span,.cms-dynamic-summary .stat-item>.cms-summary-index span{color:inherit!important;font-size:inherit!important;line-height:inherit!important}

/* Paint the accent into the card surface so its full-height edge follows
   rounded corners even when a card grows taller. Match the CTA's quieter hues. */
body[data-page-id="home"] .stat-item,.cms-dynamic-summary .stat-item{
  background:linear-gradient(180deg,rgba(47,116,181,.85) 0%,rgba(93,157,202,.85) 42%,rgba(154,123,149,.85) 57%,rgba(211,75,88,.85) 100%) left top / 5px 100% no-repeat,
    linear-gradient(145deg,#fff 0%,#fbfcfd 100%)!important
}
body[data-page-id="home"] .stat-item::before,.cms-dynamic-summary .stat-item::before{content:none!important}

/* Keep the editable watermark in normal flow so its overlap with the following
   card row depends on font size, not on configurable section spacing. The text
   extends beyond this short line box behind the opaque cards. */
body[data-page-id="home"] [data-module="homeProof"],.home-proof.cms-dynamic-stats{padding-top:clamp(26px,3vw,44px)!important}
body[data-page-id="home"] [data-module="homeProof"]>.cms-proof-watermark,.home-proof.cms-dynamic-stats>.cms-proof-watermark{
  display:block;position:relative;top:auto;right:auto;z-index:1;width:100%;max-width:100%;
  height:.45em;margin-bottom:0;
  text-align:right;line-height:1.1;overflow:visible
}

/* Keep the four proof cards' white surface unchanged on hover. An older dark
   design still has a more specific hover background above the light design. */
body[data-page-id="home"] [data-module="homeProof"] .home-proof-item:hover:where(:not(.semc-touch-feedback)),
.home-proof.cms-dynamic-stats .home-proof-item:hover:where(:not(.semc-touch-feedback)){
  background:rgba(255,255,255,.96)!important
}

/* Keep the built-in four-card grid readable on tablet widths. */
@media(max-width:980px){
  body[data-page-id="home"] [data-module="homeProof"] .home-proof-grid{
    grid-template-columns:repeat(2,minmax(0,1fr))!important
  }
}

/* Two readable cards per phone row; only an unpaired last card fills the row. */
@media(max-width:700px){
  body[data-page-id="home"] :is(.stat-strip,.cms-dynamic-summary) .stat-grid,
  body[data-page-id="home"] [data-module="homeProof"] .home-proof-grid,
  .home-proof.cms-dynamic-stats .home-proof-grid{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    gap:12px!important
  }
  body[data-page-id="home"] :is(.stat-strip,.cms-dynamic-summary) .stat-grid>.stat-item:last-child:nth-child(odd),
  body[data-page-id="home"] [data-module="homeProof"] .home-proof-grid>.home-proof-item:last-child:nth-child(odd),
  .home-proof.cms-dynamic-stats .home-proof-grid>.home-proof-item:last-child:nth-child(odd){
    grid-column:1/-1!important
  }
  body[data-page-id="home"] :is(.stat-strip,.cms-dynamic-summary) .stat-item{
    min-width:0;min-height:0!important;padding:20px 12px 20px 17px!important
  }
  body[data-page-id="home"] :is(.stat-strip,.cms-dynamic-summary) .stat-item>.cms-summary-index{
    font-size:clamp(36px,10vw,46px)!important;margin-bottom:10px!important
  }
  body[data-page-id="home"] :is(.stat-strip,.cms-dynamic-summary) .stat-item>strong,
  body[data-page-id="home"] :is(.stat-strip,.cms-dynamic-summary) .stat-item>strong span{
    font-size:clamp(15px,3.8vw,18px)!important;overflow-wrap:anywhere
  }
  body[data-page-id="home"] :is(.stat-strip,.cms-dynamic-summary) .stat-item>span:not(.cms-summary-index),
  body[data-page-id="home"] :is(.stat-strip,.cms-dynamic-summary) .stat-item>span:not(.cms-summary-index) span{
    font-size:clamp(11px,2.9vw,13px)!important;line-height:1.6!important;overflow-wrap:anywhere
  }
  body[data-page-id="home"] [data-module="homeProof"] .home-proof-item,
  .home-proof.cms-dynamic-stats .home-proof-item{
    min-width:0;min-height:180px!important;padding:57px 12px 18px 16px!important
  }
  body[data-page-id="home"] [data-module="homeProof"] .home-proof-item>.cms-proof-kicker,
  .home-proof.cms-dynamic-stats .home-proof-item>.cms-proof-kicker{
    top:18px!important;left:16px!important;font-size:9px!important
  }
  body[data-page-id="home"] [data-module="homeProof"] .home-proof-item strong,
  body[data-page-id="home"] [data-module="homeProof"] .home-proof-item strong span,
  .home-proof.cms-dynamic-stats .home-proof-item strong{
    font-size:clamp(15px,4vw,20px)!important;overflow-wrap:anywhere
  }
  body[data-page-id="home"] [data-module="homeProof"] .home-proof-item>span:not(.cms-proof-kicker),
  body[data-page-id="home"] [data-module="homeProof"] .home-proof-item>span:not(.cms-proof-kicker) span,
  .home-proof.cms-dynamic-stats .home-proof-item>span:not(.cms-proof-kicker){
    min-height:0!important;font-size:clamp(10.5px,2.7vw,12px)!important;
    line-height:1.6!important;overflow-wrap:anywhere
  }
}

/* Card surfaces have important transform/box-shadow transitions for hover.
   During entry these overrode the scene engine's independent translate channel,
   so the upward movement jumped while opacity still faded. Preserve the scene
   transition until it settles, then let each card's existing hover rules apply. */
@media(prefers-reduced-motion:no-preference){
  body .semc-scroll-motion[data-semc-motion="card"]:not(.semc-reveal-done):not(.semc-reveal-arming){
    transition-property:opacity,translate,scale,transform,box-shadow,border-color,background!important;
    transition-duration:.70s,.94s,1.02s,.34s,.34s,.34s,.34s!important;
    transition-timing-function:cubic-bezier(.22,1,.36,1),cubic-bezier(.16,1,.3,1),cubic-bezier(.16,1,.3,1),cubic-bezier(.22,1,.36,1),cubic-bezier(.22,1,.36,1),ease,ease!important;
    transition-delay:var(--semc-motion-delay,0ms)!important
  }
}

/* The original single media card also holds a small fading slideshow. */
.cms-feature-carousel .cms-feature-slides{position:absolute;inset:0;touch-action:pan-y}
.cms-feature-carousel .cms-feature-slide{position:absolute;inset:0;opacity:0;z-index:0;transition:opacity .55s ease;pointer-events:none}
.cms-feature-carousel .cms-feature-slide.active{opacity:1;z-index:1}
.cms-feature-carousel .cms-feature-prev,.cms-feature-carousel .cms-feature-next{position:absolute;z-index:4;top:50%;width:42px;height:42px;transform:translateY(-50%);border:1px solid rgba(255,255,255,.8);border-radius:50%;background:rgba(255,255,255,.83);color:#285f89;font-size:23px;line-height:1;cursor:pointer;box-shadow:0 6px 18px rgba(18,50,75,.17)}
.cms-feature-carousel .cms-feature-prev{left:14px}.cms-feature-carousel .cms-feature-next{right:14px}
.cms-feature-carousel .cms-feature-prev:hover,.cms-feature-carousel .cms-feature-next:hover{background:#fff}


/* ===== V5.5.8 · equipment parameter row packing, preserving card appearance ===== */
@media(min-width:701px){
  .v36-equipment-params[data-layout="one"]{grid-template-columns:minmax(0,1fr)!important}
  .v36-equipment-params[data-layout="one"]>.v36-equipment-param{grid-column:1/-1!important}
}
@media(max-width:700px){
  /* The CMS layout selector is desktop-only; phones repack by actual copy length. */
  .v36-equipment-params[data-layout]{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .v36-equipment-params>.v36-equipment-param.is-wide,
  .v36-equipment-params>.v36-equipment-param.is-balance-wide{grid-column:auto!important}
  .v36-equipment-params>.v36-equipment-param.v558-mobile-wide,
  .v36-equipment-params>.v36-equipment-param.v558-mobile-balance{grid-column:1/-1!important}
}
@media(max-width:340px){
  .v36-equipment-params[data-layout]{grid-template-columns:minmax(0,1fr)!important}
  .v36-equipment-params>.v36-equipment-param{grid-column:auto!important}
}

/* ===== V5.5.8 · transform-only card touch feedback ===== */
@media(prefers-reduced-motion:no-preference){
  /* Leave a card's original scroll-entry duration intact until the reveal
     settles. Otherwise the generic touch rule could shorten its arrival. */
  html.semc-touch-device .semc-touch-feedback:not(.semc-scroll-motion),
  html.semc-touch-device .semc-scroll-motion.semc-reveal-done.semc-touch-feedback,
  html.semc-touch-device .semc-scroll-motion.semc-touch-feedback:is(.semc-touch-pressed,.semc-touch-navigating){
    transition-property:translate,scale!important;
    transition-duration:.18s,.22s!important;
    transition-timing-function:cubic-bezier(.22,1,.36,1),cubic-bezier(.16,1,.3,1)!important;
    transition-delay:0ms!important
  }
  html.semc-touch-device .semc-touch-feedback:is(.semc-touch-pressed,.semc-touch-navigating){
    translate:0 2px!important;scale:.992!important
  }
  /* Visible motion cards previously forced translate:0 and scale:1, defeating
     tap feedback while the generic scroll-reveal class remained attached. */
  html.semc-touch-device .semc-scroll-motion.visible.semc-touch-feedback:is(.semc-touch-pressed,.semc-touch-navigating),
  html.semc-touch-device .semc-scroll-motion.semc-reveal-done.semc-touch-feedback:is(.semc-touch-pressed,.semc-touch-navigating){
    translate:0 2px!important;scale:.992!important
  }
  html.semc-touch-device body .semc-scroll-motion.semc-touch-feedback.semc-reveal-done{
    transition-property:translate,scale!important;
    transition-duration:.18s,.22s!important;
    transition-delay:0ms!important
  }
}
@media(prefers-reduced-motion:reduce){
  html.semc-touch-device .semc-touch-feedback,
  html.semc-touch-device .semc-touch-feedback:is(.semc-touch-pressed,.semc-touch-navigating){
    transition:none!important;translate:none!important;scale:1!important
  }
}


/* ===== V5.5.9 · equipment rows: CMS choices and paired smart cards ===== */
@media(min-width:701px){
  .v36-equipment-params[data-layout]{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    grid-template-rows:none!important;
    grid-auto-rows:minmax(88px,auto)!important;
  }
  .v36-equipment-params[data-layout]>.v36-equipment-param{
    grid-column:auto!important;
  }
  .v36-equipment-params[data-layout]>.v36-equipment-param.is-wide,
  .v36-equipment-params[data-layout]>.v36-equipment-param.is-balance-wide{
    grid-column:1/-1!important;
  }
}
/* The original single-column global mode is rendered through full-width rows,
   and individual row overrides may still form a deliberate pair. */

/* V5.6.0 · scoped page-subpages and three new corporate modules.
   Existing navigation backdrop-filter and existing modules are intentionally unchanged. */
.v560-subpage-off{display:none!important}
.v560-page-tabs{position:sticky;top:77px;z-index:42;background:#f8fafc;border-bottom:1px solid #dae7ef;box-shadow:0 8px 22px rgba(21,54,73,.045)}
.v560-page-tabs-inner{display:flex;align-items:center;gap:9px;overflow-x:auto;scrollbar-width:thin;scroll-padding:16px;padding-top:12px;padding-bottom:12px;-webkit-overflow-scrolling:touch}
.v560-page-tab{flex:0 0 auto;border:1px solid transparent;border-radius:999px;padding:11px 22px;background:transparent;color:#506a7e;font-size:14px;font-weight:650;cursor:pointer;transition:color .2s ease,border-color .2s ease,background-color .2s ease,box-shadow .2s ease;white-space:nowrap}
.v560-page-tab.active{background:#e5f2fc;border-color:#a8cae2;color:#145b89;box-shadow:inset 0 0 0 1px rgba(95,163,201,.1)}
.v560-page-tab:focus-visible,.v560-service-tab:focus-visible{outline:2px solid #2d83bc;outline-offset:3px}
.v560-service-section,.v560-why-section,.v560-company-section{color:#203d52}
.v560-service-section .section-lead,.v560-why-section .section-lead,.v560-company-section .section-lead{max-width:900px}
.v560-service-shell{margin-top:35px;border:1px solid #dde8ef;border-radius:26px;overflow:hidden;background:linear-gradient(132deg,#f9fcfe,#edf5f9);box-shadow:0 20px 48px rgba(26,68,96,.07)}
.v560-service-tabs{display:flex;gap:0;overflow-x:auto;border-bottom:1px solid #dceaf2;scrollbar-width:thin;-webkit-overflow-scrolling:touch}
.v560-service-tab{flex:1 0 auto;min-width:140px;max-width:350px;padding:22px 28px;white-space:nowrap;font-size:16px;font-weight:700;color:#3b627d;background:transparent;border:0;border-right:1px solid #e0ebf2;cursor:pointer;transition:background-color .2s,color .2s,box-shadow .2s}
.v560-service-tab.active{background:#13639c;color:#fff;box-shadow:inset 0 -3px 0 #83c0df}
.v560-service-panel{display:grid;grid-template-columns:minmax(0,1.12fr) minmax(0,.88fr);gap:24px;padding:30px;align-items:stretch;min-height:390px}
.v560-service-panel[hidden]{display:none!important}
.v560-service-copy{display:flex;flex-direction:column;justify-content:center;padding:15px 8px}
.v560-service-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 26px;align-content:center}
.v560-service-point{display:flex;align-items:flex-start;gap:12px;padding:11px 6px;border-radius:11px;color:#2e526e;font-size:15px;line-height:1.65;min-width:0}
.v560-service-point>span{display:flex;align-items:center;justify-content:center;flex:0 0 36px;width:36px;height:36px;border:1px solid #abc7d9;border-radius:50%;font-size:13px;font-weight:750;color:#17699f;background:#fff}
.v560-service-point>div{min-width:0;overflow-wrap:anywhere;padding-top:5px}
.v560-service-visual{position:relative;overflow:hidden;border-radius:22px;min-height:310px;background:#d9eaf4}
.v560-service-visual>img,.v560-advantage-media img,.v560-company-photo>img,.v560-company-support-image>img{width:100%;height:100%;object-fit:cover;display:block}
.v560-service-visual-tag{position:absolute;bottom:20px;left:20px;max-width:calc(100% - 40px);padding:12px 18px;border:1px solid rgba(255,255,255,.8);border-radius:15px;background:rgba(249,253,255,.93);color:#1d536f;font-size:17px;font-weight:750;box-shadow:0 10px 25px rgba(19,54,85,.11)}
.v560-text-link{display:inline-flex;align-items:center;gap:14px;align-self:flex-start;width:max-content;max-width:100%;margin-top:22px;padding:12px 19px;border-radius:999px;border:1px solid #aecfe4;color:#155e8b;background:#fff;font-weight:700;text-decoration:none;transition:background-color .2s,color .2s}
.v560-text-link span{font-size:19px}
.v560-empty-module{padding:24px;color:#698397}
.v560-media-placeholder{width:100%;min-height:220px;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;background:linear-gradient(145deg,#d6e7f2,#f1f8fb);color:#668fa8;text-align:center}
.v560-media-placeholder span{font-size:54px;letter-spacing:.12em;font-weight:800;color:#8ab1c9}
.v560-media-placeholder i{font-size:12px;letter-spacing:.18em;font-style:normal;font-weight:600}
.v560-advantage-list{display:grid;gap:64px;margin-top:42px}
.v560-advantage-row{display:grid;grid-template-columns:1fr 1fr;gap:clamp(28px,5vw,90px);align-items:center;min-width:0}
.v560-advantage-row.image-right .v560-advantage-media{order:2}
.v560-advantage-row.image-right .v560-advantage-copy{order:1}
.v560-advantage-media{display:grid;grid-template-columns:minmax(0,3fr) minmax(0,1.15fr);gap:9px;align-items:stretch;min-height:300px;aspect-ratio:1.65/1;border-radius:21px;overflow:hidden;background:#e6f1f7}
.v560-advantage-media:not(:has(.v560-advantage-extras)){grid-template-columns:minmax(0,1fr)}
.v560-advantage-main{min-width:0;min-height:0;object-fit:cover}
.v560-advantage-extras{display:grid;grid-template-rows:repeat(3,minmax(0,1fr));gap:8px;min-width:0;min-height:0}
.v560-advantage-extras>img,.v560-advantage-extras>.v560-media-placeholder{height:100%;min-height:0;object-fit:cover}
.v560-advantage-copy{display:flex;align-items:flex-start;flex-direction:column;gap:20px;min-width:0}
.v560-advantage-num{display:inline-flex;align-items:center;justify-content:center;min-width:75px;padding:10px 18px;background:#1366a1;border-radius:9px;color:#fff;font-size:17px;font-weight:700}
.v560-advantage-copy h3{font-size:clamp(22px,2.05vw,34px);line-height:1.35;margin:0;color:#183a53}
.v560-advantage-copy p{font-size:clamp(14px,1.1vw,17px);line-height:1.9;color:#647f92;margin:0;white-space:normal;overflow-wrap:anywhere}
.v560-advantage-copy .v560-text-link{margin-top:0}
.v560-company-top{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));min-height:410px;background:#f5f9fc;border:1px solid #e0eaf1;border-radius:25px 25px 0 0;overflow:hidden}
.v560-company-intro{min-width:0;padding:clamp(28px,4vw,68px);display:flex;flex-direction:column;justify-content:center}
.v560-company-strap{font-size:13px;color:#3d8bb6;font-weight:750;letter-spacing:.18em;margin-bottom:20px}
.v560-company-intro .section-title{margin:0 0 18px}
.v560-company-intro .section-lead{line-height:1.9;margin-bottom:24px}
.v560-company-links{display:flex;flex-wrap:wrap;gap:5px 10px}
.v560-company-link{display:inline-flex;align-items:center;gap:8px;border-bottom:1px solid #cddde8;padding:10px 7px;color:#245b82;font-weight:680;text-decoration:none;font-size:14px;transition:color .2s,border-color .2s}
.v560-company-link span{color:#5184a6;font-size:18px}
.v560-company-photo{position:relative;width:100%;max-width:100%;min-width:0;min-height:340px;overflow:hidden;isolation:isolate;background:#e3eef5}
.v560-company-bottom{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));min-height:245px;border:1px solid #e0eaf1;border-top:0;border-radius:0 0 25px 25px;overflow:hidden}
.v560-company-support-image{min-height:245px;position:relative;background:#deedf5}
.v560-company-support-image>span{position:absolute;bottom:0;left:0;padding:14px 26px;background:#146fa7;color:#fff;font-size:17px;font-weight:700}
.v560-company-contact{padding:34px clamp(28px,3.5vw,62px);background:linear-gradient(120deg,#f9fcfe,#e9f5fc);display:flex;align-items:flex-start;justify-content:center;flex-direction:column;gap:12px}
.v560-company-contact-kicker{color:#3a8dbb;letter-spacing:.13em;font-size:12px;font-weight:750}
.v560-company-contact h3{font-size:clamp(19px,1.6vw,27px);line-height:1.5;color:#193d57;margin:0}
.v560-company-contact p{font-size:14px;color:#678397;line-height:1.8;margin:0}
.v560-company-phone{font-size:clamp(20px,2vw,31px);font-weight:780;color:#176fa9;text-decoration:none;overflow-wrap:anywhere}
.v560-company-contact-muted{font-size:16px;letter-spacing:.1em;color:#7495aa}
@media(hover:hover) and (pointer:fine){
 .v560-page-tab:hover:not(.active){background:#eaf3f9;color:#286b99}
 .v560-service-tab:hover:not(.active){background:#e0edf7;color:#164d78}
 .v560-text-link:hover,.v560-company-link:hover{color:#0c79b7;border-color:#5da6d1}
}
@media(max-width:900px){
 .v560-service-panel{grid-template-columns:minmax(0,1fr) minmax(0,.9fr);gap:14px;padding:19px;min-height:300px}
 .v560-service-list{gap:5px 12px}
 .v560-service-point{font-size:13px;gap:8px}
 .v560-service-visual{min-height:260px}
 .v560-advantage-row{gap:25px}
 .v560-advantage-media{min-height:250px}
 .v560-company-top{min-height:335px}
 .v560-company-intro{padding:28px}
}
@media(max-width:700px){
 .v560-page-tabs{top:62px;z-index:35}
 .v560-page-tabs-inner{gap:6px;padding-top:9px;padding-bottom:9px}
 .v560-page-tab{font-size:12px;padding:9px 15px}
 .v560-service-shell{margin-top:23px;border-radius:20px}
 .v560-service-tab{font-size:13px;min-width:120px;padding:16px 17px}
 .v560-service-panel{grid-template-columns:1fr;gap:14px;padding:16px;min-height:0}
 .v560-service-copy{padding:7px 2px 2px}
 .v560-service-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:5px 8px}
 .v560-service-point{font-size:12px;line-height:1.5;gap:7px;padding:6px 2px}
 .v560-service-point>span{flex-basis:30px;width:30px;height:30px;font-size:11px}
 .v560-service-point>div{padding-top:4px}
 .v560-service-visual{min-height:220px;max-height:370px;aspect-ratio:1.45/1}
 .v560-service-visual-tag{font-size:14px;bottom:12px;left:12px;padding:9px 12px}
 .v560-text-link{padding:10px 15px;font-size:13px;margin-top:13px}
 .v560-advantage-list{gap:35px;margin-top:25px}
 .v560-advantage-row,.v560-advantage-row.image-right{grid-template-columns:1fr;gap:19px}
 .v560-advantage-row .v560-advantage-media,.v560-advantage-row.image-right .v560-advantage-media{order:0}
 .v560-advantage-row .v560-advantage-copy,.v560-advantage-row.image-right .v560-advantage-copy{order:1}
 .v560-advantage-media{min-height:220px;aspect-ratio:1.4/1}
 .v560-advantage-copy{gap:10px}
 .v560-advantage-num{min-width:60px;padding:8px 15px;font-size:13px}
 .v560-advantage-copy h3{font-size:21px}
 .v560-advantage-copy p{font-size:13px;line-height:1.8}
 .v560-company-top{grid-template-columns:1fr;min-height:0;border-radius:18px 18px 0 0}
 .v560-company-intro{padding:24px}
 .v560-company-photo{min-height:215px;aspect-ratio:1.55/1}
 .v560-company-bottom{grid-template-columns:1fr;min-height:0;border-radius:0 0 18px 18px}
 .v560-company-support-image{min-height:185px;aspect-ratio:1.65/1}
 .v560-company-contact{padding:25px 24px;min-height:185px}
 .v560-company-link{font-size:12px}
 .v560-media-placeholder span{font-size:38px}
}
@media(max-width:350px){.v560-service-list{grid-template-columns:1fr}.v560-service-visual{min-height:180px}}
@media(prefers-reduced-motion:reduce){.v560-page-tab,.v560-service-tab,.v560-text-link,.v560-company-link{transition:none!important}}


/* V5.6.1 · page-section navigation sits after shared cover/content modules.
   Scoped here; the original fixed navigation and its realtime glass stay intact. */
.v560-page-tabs{
  position:sticky;top:77px;z-index:42;
  background:linear-gradient(110deg,rgba(246,251,255,.98),rgba(230,241,250,.97));
  border-block:1px solid rgba(182,209,229,.72);
  box-shadow:0 11px 28px rgba(19,65,100,.085);
}
.v560-page-tabs-inner{
  gap:9px;padding-top:11px;padding-bottom:11px;
  scrollbar-width:none;scroll-behavior:smooth;
}
.v560-page-tabs-inner::-webkit-scrollbar{display:none}
.v560-page-tab{
  position:relative;display:inline-flex;align-items:center;justify-content:center;
  min-height:42px;border:1px solid rgba(171,201,224,.7);border-radius:13px;
  padding:10px 20px;background:rgba(255,255,255,.76);color:#345d7c;
  font-size:13px;font-weight:690;letter-spacing:.015em;
  box-shadow:0 2px 7px rgba(40,92,130,.035);
  transition:background-color .22s ease,border-color .22s ease,color .22s ease,box-shadow .22s ease;
}
.v560-page-tab.active{
  background:linear-gradient(145deg,#e8f4fe,#dceffa);border-color:#8dbddb;
  color:#155a89;box-shadow:inset 0 0 0 1px rgba(90,157,199,.13),0 5px 14px rgba(48,111,164,.10);
}
.v560-page-tab.active::after{
  content:"";position:absolute;bottom:4px;left:22%;right:22%;height:2px;
  border-radius:4px;background:linear-gradient(90deg,#2e79b8,#7ab6df);
}
.v560-page-tab:focus-visible{outline:2px solid #438dbb;outline-offset:3px}
@media(hover:hover) and (pointer:fine){
  .v560-page-tab:hover:not(.active){background:#f4faff;border-color:#a7cce3;color:#1c638f}
}
@media(max-width:700px){
  .v560-page-tabs{top:62px;z-index:35}
  .v560-page-tabs-inner{gap:7px;padding-top:9px;padding-bottom:9px;scroll-padding-inline:18px}
  .v560-page-tab{min-height:38px;font-size:12px;padding:8px 14px;border-radius:11px}
}
@media(prefers-reduced-motion:reduce){.v560-page-tabs-inner{scroll-behavior:auto}.v560-page-tab{transition:none!important}}


/* V5.6.3 · Page-section navigation stays in normal flow, but must paint
   above the z=86 module-gap gradient bridge when placed after a shared hero.
   Position:relative is NOT sticky; no position/spacing/glass change occurs. */
.v560-page-tabs{
  position:relative!important;top:auto!important;z-index:87!important;
  opacity:1!important;transform:none!important;filter:none!important;
  margin:0!important;padding:0!important;animation:none!important;
  background:#fff!important;border:0!important;
  border-top:1px solid rgba(29,84,124,.11)!important;
  border-bottom:1px solid rgba(29,84,124,.13)!important;
  box-shadow:none!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;
}
.v560-page-tabs-inner{
  display:flex;align-items:center;gap:7px;padding-top:16px;padding-bottom:16px;
  scroll-behavior:auto;scroll-padding-inline:16px;
}
.v560-page-tab{
  flex:0 0 auto;position:relative;min-height:43px;padding:10px 21px;
  border:1px solid #dce7ef;border-radius:11px;background:#fff;
  color:#3b6079;font-size:13px;font-weight:700;
  box-shadow:none!important;transition:none!important;animation:none!important;
}
.v560-page-tab.active{
  background:#edf6fd;border:1px solid #a7c9df;color:#155c89;
  box-shadow:inset 0 0 0 1px rgba(83,151,194,.045)!important;
}
.v560-page-tab.active::after{
  content:'';position:absolute;left:24%;right:24%;bottom:4px;height:2px;
  border-radius:2px;background:#367daf;
}
@media(hover:hover) and (pointer:fine){
 .v560-page-tab:hover:not(.active){background:#f5f9fd;border-color:#bbd4e5}
}
@media(max-width:700px){
 .v560-page-tabs{top:auto!important;z-index:87!important}
 .v560-page-tabs-inner{padding-top:12px;padding-bottom:12px;gap:7px}
 .v560-page-tab{min-height:40px;padding:9px 14px;font-size:12px}
}


/* ===== V5.6.4 · inline editorial section navigation + module motion =====
   Navigation remains a NORMAL in-flow sibling and is painted above bridge
   gradients. This applies ONLY to pages with enabled subpages. No effect on
   the site's real-time glass top navigation or unrelated module spacing. */
.v560-page-tabs{
  position:relative!important;top:auto!important;z-index:97!important;
  margin:0!important;padding:0!important;
  background:linear-gradient(112deg,#f8fbfe 0%,#f3f8fc 100%)!important;
  border:0!important;border-block-end:1px solid rgba(45,106,154,.15)!important;
  border-radius:0!important;box-shadow:none!important;
  opacity:1!important;transform:none!important;filter:none!important;
  backdrop-filter:none!important;-webkit-backdrop-filter:none!important;
  animation:none!important
}
.v560-page-tabs-inner{
  display:flex;align-items:center;gap:0!important;
  min-height:62px;padding-block:0!important;
  overflow-x:auto;overflow-y:hidden;
  scroll-padding-inline:16px;scrollbar-width:none;
  -webkit-overflow-scrolling:touch
}
.v560-page-tab,.v560-page-tab.active{
  position:relative;display:inline-flex;align-items:center;justify-content:center;
  flex:0 0 auto;min-height:62px;padding:17px clamp(19px,2.4vw,34px)!important;
  border:0!important;border-radius:0!important;
  background:transparent!important;box-shadow:none!important;
  color:#365b78;font-size:14px;font-weight:670;letter-spacing:.016em;
  transition:color .26s ease,background-color .26s ease!important;
  animation:none!important
}
.v560-page-tab.active{color:#155b89;font-weight:780}
.v560-page-tabs-inner>.v560-page-tab:first-child{margin-left:auto}
.v560-page-tab+.v560-page-tab::before{
  content:"";position:absolute;left:0;top:50%;width:1px;height:18px;
  transform:translateY(-50%);background:rgba(49,105,147,.23);
  pointer-events:none
}
.v560-page-tab::after,.v560-page-tab.active::after{
  content:"";position:absolute;left:17px;right:17px;bottom:0;
  height:3px;border-radius:3px 3px 0 0;
  background:linear-gradient(90deg,#2678bb 0%,#4c9fce 52%,#d84c69 100%);
  box-shadow:none;opacity:0;transform:scaleX(.42);
  transform-origin:center;
  transition:transform .42s cubic-bezier(.16,1,.3,1),opacity .24s ease!important;
  pointer-events:none
}
.v560-page-tab.active::after{opacity:1;transform:scaleX(1)}
.v560-page-tab:focus-visible{outline:2px solid #438dbb;outline-offset:-4px}
@media(hover:hover) and (pointer:fine){
  .v560-page-tab:hover:not(.active):not(.semc-touch-feedback){
    color:#166ca2;background:rgba(52,137,198,.065)!important
  }
  .v560-page-tab:hover:not(.active):not(.semc-touch-feedback)::after{
    opacity:.48;transform:scaleX(.64)
  }
}
/* The previous section's trailing padding made a disconnected empty band.
   Compact ONLY the directly adjacent sections, not the global CMS controls. */
html body [data-module].v564-tabs-anchor{padding-bottom:0!important;--semc-tone-bottom-depth:0px!important}
html body [data-module].v564-tabs-next:not(.page-visual-hero-section){
  padding-top:clamp(24px,3.2vw,44px)!important;
  --semc-tone-top-depth:clamp(24px,3.2vw,44px)!important
}

/* Existing full-site scroll/reveal owns the entry motion. The new modules
   now register their layers there; these rules only add micro-interactions. */
.v560-service-shell,.v560-advantage-media,.v560-company-photo,.v560-company-support-image{
  backface-visibility:hidden
}
.v560-service-panel.active{
  animation:v564-matrix-enter .58s cubic-bezier(.22,1,.36,1) both
}
@keyframes v564-matrix-enter{
  from{opacity:.28;translate:0 12px}
  to{opacity:1;translate:0 0}
}
.v560-service-tab{
  transition:color .26s ease,background-color .26s ease,box-shadow .26s ease!important
}
.v560-service-point{
  transition:background-color .3s ease,translate .38s cubic-bezier(.22,1,.36,1)
}
.v560-service-point>span{
  transition:background-color .32s ease,border-color .32s ease,color .32s ease
}
.v560-service-visual>img,
.v560-advantage-media img,
.v560-company-photo>img,
.v560-company-support-image>img{
  transition:translate .16s linear,scale 1.1s cubic-bezier(.16,1,.3,1),transform .85s cubic-bezier(.16,1,.3,1)!important;
  transform:scale(1)
}
.v560-advantage-media{
  transition:translate .48s cubic-bezier(.22,1,.36,1),box-shadow .48s ease
}
.v560-advantage-num{
  transition:background-color .36s ease,translate .42s cubic-bezier(.22,1,.36,1)
}
.v560-company-link span,.v560-text-link span{
  transition:translate .38s cubic-bezier(.22,1,.36,1)
}
.v560-company-phone{transition:color .28s ease}
@media(hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){
  .v560-service-point:hover:not(.semc-touch-feedback){
    translate:0 -2px;background:rgba(215,235,249,.48)
  }
  .v560-service-point:hover:not(.semc-touch-feedback)>span{
    background:#e8f4fb;border-color:#81b8d9;color:#145b89
  }
  .v560-service-visual:hover:not(.semc-touch-feedback)>img{
    transform:scale(1.025)
  }
  .v560-advantage-row:hover .v560-advantage-media.semc-scroll-motion.semc-reveal-done:not(.semc-touch-feedback){
    translate:0 -4px!important;box-shadow:0 22px 46px rgba(31,79,109,.105)
  }
  .v560-advantage-row:hover .v560-advantage-media:not(.semc-touch-feedback) img{
    transform:scale(1.023)
  }
  .v560-advantage-row:hover .v560-advantage-num{
    background:#257bad;translate:2px 0
  }
  .v560-company-photo:hover:not(.semc-touch-feedback)>img,
  .v560-company-support-image:hover:not(.semc-touch-feedback)>img{
    transform:scale(1.024)
  }
  .v560-text-link:hover:not(.semc-touch-feedback) span,
  .v560-company-link:hover:not(.semc-touch-feedback) span{translate:3px 0}
  .v560-company-phone:hover:not(.semc-touch-feedback){color:#0b83b5}
}
@media(max-width:700px){
  .v560-page-tabs-inner{min-height:49px;scroll-padding-inline:10px}
  .v560-page-tabs-inner>.v560-page-tab:first-child{margin-left:0}
  .v560-page-tab,.v560-page-tab.active{
    min-height:49px;padding:13px 17px!important;font-size:12px
  }
  .v560-page-tab::after,.v560-page-tab.active::after{left:12px;right:12px;height:2px}
  .v560-page-tab+.v560-page-tab::before{height:15px}
  html body [data-module].v564-tabs-next:not(.page-visual-hero-section){
    padding-top:22px!important;--semc-tone-top-depth:22px!important
  }
}
@media(prefers-reduced-motion:reduce){
  .v560-page-tab,.v560-page-tab::after,.v560-page-tab.active::after,.v560-service-panel.active,
  .v560-service-point,.v560-service-point>span,.v560-service-visual>img,
  .v560-advantage-media,.v560-advantage-media img,.v560-advantage-num,
  .v560-company-photo>img,.v560-company-support-image>img,
  .v560-company-link span,.v560-text-link span,.v560-company-phone{
    transition:none!important;animation:none!important;translate:none!important;
    transform:none!important
  }
}




/* V5.6.8 | five focused responsive layout corrections.
   These changes are mobile-only; keep the desktop editorial arrangement,
   module motion, CMS content, and realtime navigation glass untouched. */
@media (max-width:700px){
  /* Center a short page-section strip without breaking horizontal swipe when
     there are too many tabs. Flex auto margins become zero on overflow. */
  .v560-page-tabs-inner>.v560-page-tab:first-child{margin-inline-start:auto}
  .v560-page-tabs-inner>.v560-page-tab:last-child{margin-inline-end:auto}

  /* The matrix image has a constrained aspect ratio and may be narrower
     than its grid track. Center it instead of pinning it to the left edge. */
  .v560-service-panel{grid-template-columns:minmax(0,1fr)}
  .v560-service-panel>.v560-service-visual{
    justify-self:center;margin-inline:auto;min-width:0;max-width:100%;
    box-sizing:border-box;
  }

  /* Keep both images separated by their corresponding copy on phones:
     company introduction -> first photo -> service text -> second photo. */
  .v560-company-bottom>.v560-company-contact{order:0}
  .v560-company-bottom>.v560-company-support-image{order:1}

  /* Every advantage reads number/title/description first, then its photo,
     including rows configured as image-right on desktop. */
  .v560-advantage-row>.v560-advantage-copy,
  .v560-advantage-row.image-right>.v560-advantage-copy{order:0}
  .v560-advantage-row>.v560-advantage-media,
  .v560-advantage-row.image-right>.v560-advantage-media{order:1}
}

/* V5.6.9 | Company portal: the top photo stays in its own grid cell even
   during hover zoom, aligned to the lower 50/50 image split. */
.v560-company-top>.v560-company-photo>img{
  position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  transform-origin:center center;
}
@media(max-width:700px){
  .v560-company-top{grid-template-columns:minmax(0,1fr)}
  .v560-company-bottom{grid-template-columns:minmax(0,1fr)}
}

/* SEMC V5.7.1 · article listings and long-form editorial detail pages. */
.semc-article-list-section{background:linear-gradient(145deg,#f8fbfe,#f2f8fc);padding:clamp(45px,6vw,100px) 0;color:#213f52}
.semc-article-list-heading{max-width:840px;margin-bottom:32px}.semc-article-kicker{display:inline-block;font-size:11px;letter-spacing:.2em;color:#397faa;font-weight:800;text-transform:uppercase}
.semc-article-list-heading h2{font-size:clamp(28px,4.5vw,52px);line-height:1.2;letter-spacing:-.03em;margin:13px 0;color:#203e50}.semc-article-list-heading p{font-size:clamp(14px,1.4vw,18px);color:#7a8e9d;line-height:1.75}
.semc-article-list-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
.semc-article-card{min-width:0;display:flex;flex-direction:column;border:1px solid #d6e5ef;border-radius:19px;overflow:hidden;background:white;text-decoration:none;color:inherit;box-shadow:0 10px 30px rgba(35,80,112,.055);transition:transform .32s ease,border-color .25s ease,box-shadow .32s ease}
.semc-article-card[hidden]{display:none!important}
.semc-article-card-cover{height:210px;overflow:hidden;position:relative;background:#e3eff6}.semc-article-card-cover img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .55s ease;will-change:auto}
.semc-article-cover-empty{width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:5px;background:linear-gradient(135deg,#dae9f3,#f0f7fc);color:#7ca9c3}.semc-article-cover-empty strong{font-size:clamp(36px,5vw,60px);letter-spacing:.2em}.semc-article-cover-empty small{font-size:11px;letter-spacing:.17em}
.semc-article-card-copy{padding:24px;display:flex;flex-direction:column;gap:12px;flex:1;min-width:0}.semc-article-card-meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:12px;color:#6d91a8}.semc-article-card-meta span{color:#2876a5;font-weight:800}.semc-article-card-meta time{color:#8ea2b2}
.semc-article-card h3{font-size:clamp(18px,1.9vw,24px);color:#204459;line-height:1.4;margin:0;overflow-wrap:anywhere}.semc-article-card p{color:#8197a7;font-size:13px;line-height:1.7;margin:0;overflow-wrap:anywhere}.semc-article-card b{font-size:12px;font-weight:800;color:#2b79a7;letter-spacing:.03em;margin-top:auto;padding-top:10px}.semc-article-card b i{display:inline-block;font-style:normal;transition:transform .2s ease}
@media(hover:hover) and (pointer:fine){.semc-article-card:hover{transform:translateY(-5px);border-color:#a8cfe4;box-shadow:0 18px 34px rgba(35,80,112,.1)}.semc-article-card:hover img{transform:scale(1.045)}.semc-article-card:hover b i{transform:translate(3px,-3px)}}
.semc-article-list-grid[data-list-layout=list],.semc-article-list-section[data-list-layout=list] .semc-article-list-grid{grid-template-columns:1fr}.semc-article-list-section[data-list-layout=list] .semc-article-card{flex-direction:row;align-items:stretch}.semc-article-list-section[data-list-layout=list] .semc-article-card-cover{width:32%;min-height:190px;height:auto;flex:0 0 32%}
.semc-article-list-section[data-list-layout=featured] .semc-article-list-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.semc-article-list-section[data-list-layout=featured] .semc-article-card:first-child:not([hidden]){grid-column:span 2;grid-row:span 2}.semc-article-list-section[data-list-layout=featured] .semc-article-card:first-child .semc-article-card-cover{height:330px}
.semc-article-list-section[data-list-layout=timeline] .semc-article-list-grid{grid-template-columns:1fr;border-left:2px solid #b1d5e7;padding-left:22px;margin-left:8px}.semc-article-list-section[data-list-layout=timeline] .semc-article-card{position:relative;flex-direction:row}.semc-article-list-section[data-list-layout=timeline] .semc-article-card::before{content:"";position:absolute;left:-29px;top:30px;width:11px;height:11px;border-radius:50%;background:#2779b3;box-shadow:0 0 0 5px #e6f3fc}.semc-article-list-section[data-list-layout=timeline] .semc-article-card-cover{width:220px;flex:0 0 220px;height:auto;min-height:145px}
.semc-article-list-nav{display:flex;align-items:center;justify-content:center;gap:16px;margin-top:28px;color:#6689a4;font-size:12px}.semc-article-list-nav button{border:1px solid #c5dce9;border-radius:50%;background:white;color:#287cad;cursor:pointer;width:40px;height:40px;transition:transform .2s ease}.semc-article-list-nav button:disabled{opacity:.35;cursor:default}.semc-article-list-nav button:not(:disabled):hover{transform:translateY(-2px)}
.semc-article-list-empty{grid-column:1/-1;padding:50px;text-align:center;color:#879eae;background:#fff;border:1px dashed #cddfeb;border-radius:16px}
.semc-article-detail{padding:clamp(128px,11vw,175px) 0 92px;background:linear-gradient(180deg,#f4f9fc,#fff 520px);min-height:80vh;color:#233f51}.semc-article-detail .container{max-width:1320px}.semc-article-breadcrumb{display:flex;gap:9px;align-items:center;flex-wrap:wrap;font-size:12px;color:#86a0b1;margin-bottom:30px}.semc-article-breadcrumb a{color:#4c84a9;text-decoration:none}.semc-article-breadcrumb a:hover{color:#1d628b}
.semc-article-detail-layout{display:grid;grid-template-columns:minmax(0,7fr) minmax(260px,3fr);align-items:start;gap:25px}.semc-article-main{background:white;border:1px solid #e0eaf1;border-radius:21px;min-width:0;padding:clamp(22px,4vw,55px);box-shadow:0 11px 35px rgba(41,90,120,.045)}
.semc-article-heading{padding-bottom:23px;border-bottom:1px solid #d8e6ed}.semc-article-heading h1{font-size:clamp(26px,3.2vw,43px);letter-spacing:-.025em;line-height:1.36;margin:12px 0 20px;color:#193b50}.semc-article-deck{font-size:clamp(14px,1.3vw,17px);line-height:1.75;color:#718c9e}
.semc-article-metadata{display:flex;flex-wrap:wrap;column-gap:20px;row-gap:8px;margin-top:23px;font-size:12px;color:#849dad}.semc-article-metadata:empty{display:none}
.semc-article-body{font-size:clamp(15px,1.1vw,17px);line-height:1.95;color:#344e5c;overflow-wrap:anywhere;padding:34px 0 15px}.semc-article-body p{margin:0 0 1.15em;white-space:pre-wrap}.semc-article-body h2{font-size:clamp(23px,2.1vw,30px);color:#1b526f;line-height:1.4;margin:2em 0 .75em}.semc-article-body h3{font-size:clamp(19px,1.65vw,24px);color:#235577;margin:1.7em 0 .7em}.semc-article-body ul,.semc-article-body ol{margin:0 0 1.3em;padding-left:1.6em}.semc-article-body a{color:#2576a6;text-decoration:underline;text-underline-offset:4px}
.semc-article-figure{max-width:100%;margin:30px auto 36px;text-align:center}.semc-article-figure img{display:block;max-width:100%;height:auto;max-height:1000px;object-fit:contain;margin:auto;border-radius:12px}.semc-article-figure figcaption{margin-top:13px;color:#8097a4;font-size:12px;line-height:1.6}
.semc-article-tags{display:flex;flex-wrap:wrap;gap:8px;margin:28px 0}.semc-article-tags span{padding:7px 11px;border:1px solid #d5e6ee;border-radius:100px;color:#497e9b;font-size:11px;background:#f7fbfe}
.semc-article-neighbors{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;border-top:1px solid #e1ebf1;padding-top:25px;margin-top:25px}.semc-article-neighbor{display:flex;flex-direction:column;gap:9px;position:relative;min-width:0;text-decoration:none;border:1px solid #dae8ef;border-radius:13px;padding:16px;background:#f8fcff;color:#2a4c60;transition:border-color .2s ease,background .2s ease}.semc-article-neighbor:hover{border-color:#9fc8df;background:#edf8fd}.semc-article-neighbor small{font-size:12px;color:#7b9bad}.semc-article-neighbor strong{font-size:14px;line-height:1.45;overflow-wrap:anywhere}.semc-article-neighbor span{position:absolute;right:13px;top:13px;color:#317aa6}.semc-article-neighbor.is-empty{opacity:.55}
.semc-article-aside{display:flex;flex-direction:column;gap:20px}.semc-article-aside-box{border:1px solid #dde9f1;border-radius:18px;padding:22px;background:white}.semc-article-aside-box h2{margin:0 0 14px;padding-bottom:14px;border-bottom:2px solid #dfebf3;font-size:19px;color:#214860}.semc-article-aside-link{display:flex;flex-direction:column;gap:6px;padding:13px 0;border-bottom:1px solid #e8eef3;text-decoration:none;transition:padding-left .2s ease}.semc-article-aside-link:last-child{border-bottom:0}.semc-article-aside-link:hover{padding-left:5px}.semc-article-aside-link span{font-size:11px;color:#5486a3}.semc-article-aside-link strong{font-size:14px;line-height:1.55;color:#27485b}.semc-article-unavailable{padding:200px 22px;text-align:center;color:#284a63}
@media(max-width:1050px){.semc-article-list-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.semc-article-detail-layout{grid-template-columns:minmax(0,1fr)}.semc-article-aside{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:700px){.semc-article-list-section{padding:48px 0}.semc-article-list-grid,.semc-article-list-section[data-list-layout=featured] .semc-article-list-grid{grid-template-columns:minmax(0,1fr);gap:14px}.semc-article-list-section[data-list-layout=featured] .semc-article-card:first-child:not([hidden]){grid-column:auto;grid-row:auto}.semc-article-list-section[data-list-layout=featured] .semc-article-card:first-child .semc-article-card-cover{height:215px}.semc-article-list-section[data-list-layout=list] .semc-article-card,.semc-article-list-section[data-list-layout=timeline] .semc-article-card{flex-direction:column}.semc-article-list-section[data-list-layout=list] .semc-article-card-cover,.semc-article-list-section[data-list-layout=timeline] .semc-article-card-cover{width:100%;flex-basis:auto;height:190px}.semc-article-card-copy{padding:19px}.semc-article-detail{padding:125px 0 60px}.semc-article-main{padding:23px 18px;border-radius:15px}.semc-article-aside{grid-template-columns:1fr}.semc-article-body{padding-top:24px}.semc-article-neighbors{grid-template-columns:1fr}.semc-article-figure{margin:23px auto}}
@media(hover:none) and (pointer:coarse){.semc-article-card:active{transform:scale(.992);transition:transform .12s ease}.semc-article-neighbor:active{transform:scale(.992)}}
@media(prefers-reduced-motion:reduce){.semc-article-card,.semc-article-card-cover img,.semc-article-card b i,.semc-article-neighbor,.semc-article-aside-link,.semc-article-list-nav button{transition:none!important}}

.semc-article-return{display:inline-block;margin:0 0 24px;padding:10px 17px;border:1px solid #ccdfeb;background:#f7fbff;border-radius:100px;color:#317ba5;text-decoration:none;font-size:12px;font-weight:700}.semc-article-return:hover{border-color:#79b2d5;background:#ebf7ff}

/* SEMC V5.7.2 | Article header matches the established detail-page hero.
   Article styles remain isolated; the existing navbar glass is untouched. */
.semc-article-detail{padding:0 0 88px;background:#fff;min-height:76vh}
.semc-article-hero{padding:clamp(138px,11vw,172px) 0 clamp(52px,6vw,86px);background:radial-gradient(ellipse at 88% 4%,rgba(202,229,246,.72),transparent 53%),linear-gradient(180deg,#eef7fd 0%,#f9fcff 68%,#fff 100%);overflow:hidden;position:relative}
.semc-article-hero::after{content:"";position:absolute;right:-6vw;top:-22%;width:46vw;height:125%;pointer-events:none;transform:skewX(-27deg);background:linear-gradient(105deg,transparent,rgba(255,255,255,.37),transparent);opacity:.45}
.semc-article-hero>.container{position:relative;z-index:1}
.semc-article-breadcrumb{margin-bottom:29px;font-size:14px;color:#7792a5;gap:12px;font-weight:600}
.semc-article-hero-copy{padding-top:14px;max-width:1220px}
.semc-article-kicker{display:flex;align-items:center;gap:14px;color:#356b95;letter-spacing:.19em;font-size:11px;font-weight:800;text-transform:uppercase}
.semc-article-kicker i{display:block;width:48px;height:3px;flex:0 0 48px;border-radius:100px;background:linear-gradient(90deg,#347bb5,#758cac,#cc3d57)}
.semc-article-hero h1{font-size:clamp(43px,5.25vw,77px);letter-spacing:-.048em;line-height:1.08;font-weight:780;color:#173b5b;margin:32px 0 22px;overflow-wrap:anywhere;max-width:20ch}
.semc-article-hero .semc-article-deck{font-size:clamp(16px,1.38vw,20px);line-height:1.83;color:#6b8194;max-width:850px;margin:0 0 12px}
.semc-article-hero .semc-article-metadata{margin-top:26px;font-size:13px;color:#6c89a1;gap:10px 24px}
.semc-article-hero .semc-article-metadata span{display:inline-flex;align-items:center}
.semc-article-detail>.container{max-width:1320px}
.semc-article-detail-layout{padding-top:26px;align-items:start}
.semc-article-main{padding:clamp(24px,3vw,46px);border:1px solid #dbe9f1;border-radius:23px;box-shadow:0 16px 38px rgba(27,77,109,.045)}
.semc-article-body{font-size:var(--art-font-desktop,17px);line-height:var(--art-line-desktop,1.95);padding:8px 0 12px;color:#344e5c}
.semc-article-body p{margin:0 0 var(--art-gap-desktop,1.15em)}
.semc-article-return{display:inline-flex;align-items:center;min-height:41px;margin-bottom:24px;background:#f5faff;border-color:#c6dfef;color:#2c7dab;font-size:13px;transition:border-color .18s,background .18s,transform .18s}
.semc-article-return:hover{background:#e8f6ff;border-color:#8ebfdd;transform:translateX(-2px)}
.detail-return-link{display:inline-flex;align-items:center;min-height:40px;gap:5px;margin:-20px 0 34px;padding:8px 16px;border-radius:999px;border:1px solid #c5deeb;background:rgba(255,255,255,.72);color:#2e79a7;font-size:12px;font-weight:760;text-decoration:none;transition:background .2s,border-color .2s,transform .2s}
.detail-return-link:hover{background:#eaf7ff;border-color:#83b8d8;transform:translateX(-2px)}
.detail-return-no-hero{padding-top:148px;padding-bottom:14px}
.semc-article-aside-box{border-radius:20px;background:#fbfdff;border-color:#d5e6f0;box-shadow:0 7px 26px rgba(37,83,120,.03)}
.semc-article-aside-box h2{color:#214861;border-color:#d9e8f1}
.semc-article-aside-link strong{color:#24516b}
@media(max-width:1050px){.semc-article-hero h1{max-width:none}.semc-article-detail-layout{padding-top:18px}}
@media(max-width:700px){.semc-article-detail{padding-bottom:60px}.semc-article-hero{padding:125px 0 44px}.semc-article-hero h1{font-size:clamp(32px,8.6vw,52px);margin:25px 0 18px;line-height:1.14}.semc-article-hero .semc-article-deck{font-size:15px}.semc-article-breadcrumb{font-size:12px;margin-bottom:23px}.semc-article-hero .semc-article-metadata{font-size:11px;gap:8px 14px}.semc-article-main{padding:24px 18px}.semc-article-body{font-size:var(--art-font-mobile,15px);line-height:var(--art-line-mobile,1.9)}.semc-article-body p{margin-bottom:var(--art-gap-mobile,1.1em)}.semc-article-return{margin-bottom:18px}.detail-return-link{margin:-10px 0 27px}.detail-return-no-hero{padding-top:128px}}
@media(prefers-reduced-motion:reduce){.semc-article-return,.detail-return-link{transition:none!important}}

/* V5.7.3 · Two additional article-list presentations and readable timeline
   dates. All classes are scoped to the article-list module, with existing
   navigation glass, detail pages and animation timing unchanged. */
.semc-article-list-section[data-list-layout=timeline] .semc-article-timeline-date{
  display:inline-flex;align-items:center;gap:9px;align-self:flex-start;
  color:#205c86;font-weight:800;font-size:14px;line-height:1.4;
  padding:7px 12px;border:1px solid #b9daeb;border-radius:9px;
  background:#edf7fd;margin-bottom:4px;
}
.semc-article-timeline-date-icon{font-size:17px;color:#347eaf}
.semc-article-list-section[data-list-layout=timeline] .semc-article-card::before{top:38px}
/* Editorial magazine: cover-dominant first story and supporting alternating
   editorial blocks; not the same three-column card layout as 'featured'. */
.semc-article-list-section[data-list-layout=editorial] .semc-article-list-grid{
  grid-template-columns:repeat(2,minmax(0,1fr));gap:22px;
}
.semc-article-list-section[data-list-layout=editorial] .semc-article-card{
  border-radius:18px;background:#fff;border-color:#d2e5f0;
}
.semc-article-list-section[data-list-layout=editorial] .semc-article-card:first-child:not([hidden]){
  grid-column:1/-1;display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);min-height:340px;
}
.semc-article-list-section[data-list-layout=editorial] .semc-article-card:first-child .semc-article-card-cover{
  height:100%;min-height:340px;
}
.semc-article-list-section[data-list-layout=editorial] .semc-article-card:first-child .semc-article-card-copy{
  padding:clamp(25px,4vw,60px);justify-content:center;
}
.semc-article-list-section[data-list-layout=editorial] .semc-article-card:first-child h3{font-size:clamp(25px,3vw,39px)}
.semc-article-list-section[data-list-layout=editorial] .semc-article-card:not(:first-child) .semc-article-card-cover{height:215px}
/* Brief bulletin: no large photo column, newsrooms can scan many headlines.
   A narrow thumbnail and red/blue hairline replace the conventional cards. */
.semc-article-list-section[data-list-layout=brief] .semc-article-list-grid{grid-template-columns:minmax(0,1fr);gap:11px}
.semc-article-list-section[data-list-layout=brief] .semc-article-card{
  flex-direction:row;align-items:center;min-height:118px;border-radius:13px;
  box-shadow:0 4px 15px rgba(37,88,121,.035);position:relative;
}
.semc-article-list-section[data-list-layout=brief] .semc-article-card::before{
  content:"";position:absolute;inset:13px auto 13px 0;width:3px;
  background:linear-gradient(180deg,#347fb8,#7bb7da 60%,#d95469);border-radius:3px;
}
.semc-article-list-section[data-list-layout=brief] .semc-article-card-cover{
  order:2;flex:0 0 148px;width:148px;height:94px;margin:11px 14px 11px 0;border-radius:9px;
}
.semc-article-list-section[data-list-layout=brief] .semc-article-card-copy{order:1;padding:20px 26px;gap:7px}
.semc-article-list-section[data-list-layout=brief] .semc-article-card h3{font-size:clamp(17px,1.7vw,22px)}
.semc-article-list-section[data-list-layout=brief] .semc-article-card p{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.semc-article-list-section[data-list-layout=brief] .semc-article-card b{margin-top:2px;padding:0}
@media(max-width:900px){
  .semc-article-list-section[data-list-layout=editorial] .semc-article-list-grid{grid-template-columns:minmax(0,1fr)}
}
@media(max-width:700px){
  .semc-article-list-section[data-list-layout=editorial] .semc-article-card:first-child:not([hidden]){display:flex;flex-direction:column;min-height:0}
  .semc-article-list-section[data-list-layout=editorial] .semc-article-card:first-child .semc-article-card-cover{height:220px;min-height:0}
  .semc-article-list-section[data-list-layout=editorial] .semc-article-card:first-child .semc-article-card-copy{padding:19px}
  .semc-article-list-section[data-list-layout=editorial] .semc-article-card:first-child h3{font-size:clamp(21px,6vw,28px)}
  .semc-article-list-section[data-list-layout=brief] .semc-article-card{min-height:100px;flex-direction:row}
  .semc-article-list-section[data-list-layout=brief] .semc-article-card-copy{padding:17px 12px 17px 18px}
  .semc-article-list-section[data-list-layout=brief] .semc-article-card-cover{flex-basis:94px;width:94px;height:86px;margin:10px 10px 10px 0}
  .semc-article-list-section[data-list-layout=brief] .semc-article-card p{display:none}
  .semc-article-list-section[data-list-layout=timeline] .semc-article-timeline-date{font-size:12px}
}
@media(max-width:360px){
  .semc-article-list-section[data-list-layout=brief] .semc-article-card-cover{flex-basis:74px;width:74px;height:78px}
  .semc-article-list-section[data-list-layout=brief] .semc-article-card h3{font-size:16px}
}

/* Magazine lead follows pagination rather than always styling article 01. */
.semc-article-list-section[data-list-layout=editorial] .semc-article-card.is-page-lead:not([hidden]){
  grid-column:1/-1;display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);min-height:340px
}
.semc-article-list-section[data-list-layout=editorial] .semc-article-card.is-page-lead .semc-article-card-cover{height:100%;min-height:340px}
.semc-article-list-section[data-list-layout=editorial] .semc-article-card.is-page-lead .semc-article-card-copy{padding:clamp(25px,4vw,60px);justify-content:center}
.semc-article-list-section[data-list-layout=editorial] .semc-article-card.is-page-lead h3{font-size:clamp(25px,3vw,39px)}
.semc-article-list-section[data-list-layout=timeline] .semc-article-card-meta>time{display:none}
@media(max-width:700px){
 .semc-article-list-section[data-list-layout=editorial] .semc-article-card.is-page-lead:not([hidden]){display:flex;flex-direction:column;min-height:0}
 .semc-article-list-section[data-list-layout=editorial] .semc-article-card.is-page-lead .semc-article-card-cover{height:220px;min-height:0}
 .semc-article-list-section[data-list-layout=editorial] .semc-article-card.is-page-lead .semc-article-card-copy{padding:19px}
 .semc-article-list-section[data-list-layout=editorial] .semc-article-card.is-page-lead h3{font-size:clamp(21px,6vw,28px)}
}

/* SEMC V5.7.5 | Article hero adopts the legacy detail-page PC/phone controls.
   Defaults deliberately reproduce V5.7.4 so older articles do not shift. */
.semc-article-breadcrumb{font-size:var(--art-breadcrumb-desktop,14px)}
.semc-article-hero h1{font-size:var(--art-title-desktop,clamp(43px,5.25vw,77px))}
.semc-article-hero .semc-article-deck{font-size:var(--art-summary-desktop,clamp(16px,1.38vw,20px))}
.semc-article-hero[data-top-spacing="compact"]{padding-top:136px}
.semc-article-hero[data-top-spacing="close"]{padding-top:120px}
.semc-article-hero[data-top-spacing="closer"]{padding-top:108px}
.semc-article-hero[data-next-spacing="compact"]{padding-bottom:42px}
.semc-article-hero[data-next-spacing="close"]{padding-bottom:26px}
.semc-article-hero[data-next-spacing="closer"]{padding-bottom:15px}
@media(max-width:980px){
  .semc-article-hero[data-top-spacing="compact"]{padding-top:116px}
  .semc-article-hero[data-top-spacing="close"]{padding-top:104px}
  .semc-article-hero[data-top-spacing="closer"]{padding-top:94px}
}
@media(max-width:700px){
  .semc-article-breadcrumb{font-size:var(--art-breadcrumb-mobile,12px)}
  .semc-article-hero h1{font-size:var(--art-title-mobile,clamp(32px,8.6vw,52px))}
  .semc-article-hero .semc-article-deck{font-size:var(--art-summary-mobile,15px)}
  .semc-article-hero[data-top-spacing-mobile="default"]{padding-top:125px!important}
  .semc-article-hero[data-top-spacing-mobile="compact"]{padding-top:96px!important}
  .semc-article-hero[data-top-spacing-mobile="close"]{padding-top:84px!important}
  .semc-article-hero[data-top-spacing-mobile="closer"]{padding-top:76px!important}
  .semc-article-hero[data-next-spacing-mobile="default"]{padding-bottom:44px!important}
  .semc-article-hero[data-next-spacing-mobile="compact"]{padding-bottom:32px!important}
  .semc-article-hero[data-next-spacing-mobile="close"]{padding-bottom:22px!important}
  .semc-article-hero[data-next-spacing-mobile="closer"]{padding-bottom:14px!important}
}

/* V5.7.6 | Keep the entry reveal AND animate return-button hover smoothly.
   The original .detail-hero-copy > * rule overrides transition with
   !important, so the link needs a more specific full transition list. */
body[data-page-id="detail"] .detail-hero-copy > .detail-return-link{
  transition:opacity .70s cubic-bezier(.22,1,.36,1),
    translate .98s cubic-bezier(.16,1,.3,1),
    scale 1.08s cubic-bezier(.16,1,.3,1),
    transform .28s cubic-bezier(.22,1,.36,1),
    background-color .25s ease,border-color .25s ease,box-shadow .25s ease!important;
  transition-delay:0s!important;
}
.semc-article-return{transition:background-color .25s ease,border-color .25s ease,transform .28s cubic-bezier(.22,1,.36,1)}
@media(prefers-reduced-motion:reduce){
  body[data-page-id="detail"] .detail-hero-copy > .detail-return-link,
  .detail-return-link,.semc-article-return{transition:none!important;transform:none!important}
}


/* ===== SEMC V5.7.7 · certificate / article entrance and stable navigation ===== */
/* Enter with the site's existing card observer. Its independent translate/scale
   channel must not steal the article card's original hover lift. */
@media (hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){
  .semc-article-card.semc-scroll-motion.visible:hover{
    transform:translateY(-5px)!important;
  }
}
@media (hover:none) and (pointer:coarse) and (prefers-reduced-motion:no-preference){
  .semc-article-card.semc-scroll-motion.visible:active{
    transform:scale(.992)!important;
  }
}
/* Avoid a first-frame horizontal correction when a route's CMS content / scroll
   bar comes and goes. Center the desktop glass bar in viewport (vw) coordinates,
   not in the changing document client width. No transform/backdrop change. */
@media (min-width:981px){
  html body #siteNav{
    --semc-v577-nav-width:min(96vw,1560px);
    width:var(--semc-v577-nav-width)!important;
    left:calc((100vw - var(--semc-v577-nav-width))/2)!important;
    right:auto!important;
    margin-left:0!important;
    margin-right:0!important;
    transform:none!important;
  }
}
@media (min-width:981px) and (max-width:1480px){
  html body #siteNav{--semc-v577-nav-width:calc(100vw - 30px)}
}
@media (min-width:1541px){
  html[data-site-lang="en"] body #siteNav{--semc-v577-nav-width:min(96vw,1740px)}
}

/* ===== SEMC V5.8.1 · restore full hover animation without pointer-edge oscillation =====
   V5.8.0 suppressed the existing hover transform/scale on live controls.
   Restore their original hover CSS intact; it is the moving hit boundary that
   needs stabilizing, not the animation. Extend the *existing clickable element's*
   hit area a few transparent pixels in the direction it retreats. No DOM
   wrappers, JS event rerouting, or change to text/preview click targets.
   The guard only occupies the OUTSIDE strip: text in the button remains the
   original event target for CMS preview jump-to-edit. */
@media (hover:hover) and (pointer:fine){
  :is(.btn,.blue-btn,.cms-module-detail-link,.chip,.v560-service-point,
      .v528-honor-controls button,.semc-article-list-nav button,
      .semc-article-return,.detail-return-link){
    position:relative;
  }
  /* The upward hover lift is 2–3px; retain 7px below the visual button.
     This leaves a margin for frame interpolation and a tiny scale at press. */
  :is(.btn,.blue-btn,.cms-module-detail-link,.chip,.v560-service-point,
      .v528-honor-controls button,.semc-article-list-nav button)::after{
    content:"";
    position:absolute;
    left:0;right:0;top:100%;height:7px;
    z-index:2;
    pointer-events:auto;
    background:transparent;
  }
  /* Article and legacy-detail return buttons slide 2px LEFT, not up. */
  :is(.semc-article-return,.detail-return-link)::after{
    content:"";
    position:absolute;
    top:0;bottom:0;left:100%;width:7px;
    z-index:2;
    pointer-events:auto;
    background:transparent;
  }
  /* .btn/.blue-btn clipped their rotating sweep to a pill, which would also
     clip the transparent outside hit strip. Keep the pill's clipped sheen by
     painting it within a same-radius full-size pseudo-element, rather than
     clipping the entire interactive button. Safari does not support the
     overflow-clip-margin workaround, so do not depend on it. */
  .btn,.blue-btn{overflow:visible!important}
  .btn::before,.blue-btn::before{
    top:0!important;right:0!important;bottom:0!important;left:0!important;
    width:100%!important;
    transform:none!important;
    border-radius:inherit;
    background:linear-gradient(108deg,transparent 43%,rgba(255,255,255,.42) 50%,transparent 57%) no-repeat!important;
    background-size:300% 100%!important;
    background-position:100% 0!important;
    transition:background-position .56s cubic-bezier(.22,1,.36,1)!important;
    pointer-events:none!important;
  }
  .btn:hover::before,.blue-btn:hover::before{
    left:0!important;
    background-position:0% 0!important;
  }
  /* Keep the V5.8.0 blue-button hover shadow; restore its position animation. */
  .blue-btn:hover:not(.semc-pressing){box-shadow:0 16px 34px rgba(47,116,181,.25)}
}


/* SEMC V5.8.5 | Two animation fixes only.
   Company portal: the second row consists of adjoining grid cells. The photo
   used to scale/drift beyond its own unclipped cell, and the entire contact
   panel travelled during reveal, exposing a momentary overlap at the seam.
   Keep both cells anchored and clipped; fade them in with the original stagger.
   Internal copy stagger, image hover zoom and media drift remain unchanged. */
.v560-company-bottom > .v560-company-support-image{
  min-width:0;
  overflow:hidden;
  isolation:isolate;
}
.v560-company-bottom > .v560-company-contact{
  min-width:0;
  isolation:isolate;
}
@media (prefers-reduced-motion:no-preference){
  .v560-company-bottom > :is(.v560-company-support-image,.v560-company-contact).semc-scroll-motion{
    translate:0 0!important;
    scale:1!important;
    transform:none!important;
    transition-property:opacity!important;
    transition-duration:.72s!important;
    transition-timing-function:cubic-bezier(.22,1,.36,1)!important;
  }
  .v560-company-bottom > :is(.v560-company-support-image,.v560-company-contact).semc-scroll-motion.semc-reveal-arming{
    transition:none!important;
  }
}

/* Article list: V5.7.7 restored the -5px hover transform after adding the
   scroll-reveal class, but that class explicitly excluded 'transform' from its
   transition list. Every layout thus snapped in a single frame on hover.
   Restore the original .32s hover easing without touching reveal translate/
   scale or pagination. Apply only once the card has entered the viewport. */
@media (hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){
  .semc-article-list-section .semc-article-card.semc-scroll-motion.visible{
    transition-property:opacity,translate,scale,transform,border-color,box-shadow!important;
    transition-duration:.70s,.94s,1.02s,.32s,.25s,.32s!important;
    transition-timing-function:cubic-bezier(.22,1,.36,1),cubic-bezier(.16,1,.3,1),cubic-bezier(.16,1,.3,1),ease,ease,ease!important;
  }
  .semc-article-list-section .semc-article-card.semc-scroll-motion.semc-reveal-done{
    transition-duration:.32s,.42s,.46s,.32s,.25s,.32s!important;
    transition-delay:0ms!important;
  }
}


/* ================================================================
   V5.8.6 | Text gallery only. Legacy galleries/simpleContent unchanged.
   New desktop = justified smart rows, phone = two-column thumbnails.
   ================================================================ */
.cms-dynamic-textGallery .cms-adaptive-gallery.v586-layout{
  width:100%!important;max-width:1320px!important;
  margin:38px auto 0!important;gap:14px!important;
  box-sizing:border-box;
}
.cms-dynamic-textGallery .cms-adaptive-gallery.v586-layout.v586-desktop-smart{
  display:flex!important;flex-direction:column!important;
  grid-template-columns:none!important;
}
.cms-dynamic-textGallery .v586-justified-row{
  width:100%;min-width:0;display:flex;gap:14px;align-items:stretch;
  margin-left:auto;margin-right:auto;
}
.cms-dynamic-textGallery .cms-adaptive-gallery.v586-layout .v586-justified-row>.v586-tile,
.cms-dynamic-textGallery .cms-adaptive-gallery.v586-layout .v586-justified-row>.v586-tile:last-child{
  position:relative;box-sizing:border-box;flex:var(--v586-grow,1.333) 1 0%;
  min-width:0;grid-column:auto!important;
  height:auto!important;aspect-ratio:var(--v586-aspect,1.333)!important;
  max-height:520px;
  overflow:hidden;
}
.cms-dynamic-textGallery .cms-adaptive-gallery.v586-layout .v586-tile img{
  display:block;position:absolute;inset:0;width:100%;height:100%;
  object-fit:contain!important;max-width:none;max-height:none;
  transition:transform .7s var(--ease),filter .7s var(--ease);
}
.cms-dynamic-textGallery .cms-adaptive-gallery.v586-layout .v586-tile:hover img{
  transform:scale(1.018);
}
/* Uniform grid remains available and uses one frame ratio per module. */
.cms-dynamic-textGallery .cms-adaptive-gallery.v586-layout.v586-desktop-grid{
  display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important;
}
.cms-dynamic-textGallery .cms-adaptive-gallery.v586-layout.v586-desktop-grid>.v586-tile,
.cms-dynamic-textGallery .cms-adaptive-gallery.v586-layout.v586-desktop-grid>.v586-tile:last-child{
  grid-column:auto!important;aspect-ratio:var(--v586-grid-aspect,1.333)!important;
  width:100%;min-width:0;max-height:none;
}
.cms-dynamic-textGallery .cms-adaptive-gallery.v586-layout.v586-desktop-grid.v586-custom-grid{
  display:flex!important;flex-direction:column!important;
}
.cms-dynamic-textGallery .v586-grid-row{
  display:grid;grid-template-columns:repeat(var(--v586-row-cols,3),minmax(0,1fr));
  gap:14px;width:100%;min-width:0;
}
.cms-dynamic-textGallery .cms-adaptive-gallery.v586-layout .v586-grid-row>.v586-tile,
.cms-dynamic-textGallery .cms-adaptive-gallery.v586-layout .v586-grid-row>.v586-tile:last-child{
  grid-column:auto!important;aspect-ratio:var(--v586-grid-aspect,1.333)!important;
  width:100%;min-width:0;
}
@media(min-width:701px) and (max-width:980px){
  .cms-dynamic-textGallery .cms-adaptive-gallery.v586-layout.v586-desktop-grid{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
  }
  .cms-dynamic-textGallery .cms-adaptive-gallery.v586-layout,
  .cms-dynamic-textGallery .v586-justified-row,
  .cms-dynamic-textGallery .v586-grid-row{gap:12px!important}
}
@media(max-width:700px){
  .cms-dynamic-textGallery .cms-adaptive-gallery.v586-layout,
  .cms-dynamic-textGallery .cms-adaptive-gallery.v586-layout.v586-desktop-smart,
  .cms-dynamic-textGallery .cms-adaptive-gallery.v586-layout.v586-desktop-grid,
  .cms-dynamic-textGallery .cms-adaptive-gallery.v586-layout.v586-desktop-grid.v586-custom-grid{
    width:100%!important;max-width:100%!important;margin-top:24px!important;
    gap:9px!important;display:grid!important;
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
  }
  .cms-dynamic-textGallery .cms-adaptive-gallery.v586-layout .v586-justified-row,
  .cms-dynamic-textGallery .cms-adaptive-gallery.v586-layout .v586-grid-row{
    display:contents!important;
  }
  .cms-dynamic-textGallery .cms-adaptive-gallery.v586-layout.v586-mobile-duo .v586-tile,
  .cms-dynamic-textGallery .cms-adaptive-gallery.v586-layout.v586-mobile-duo .v586-tile:last-child{
    min-width:0!important;grid-column:auto!important;width:100%!important;
    aspect-ratio:1/1!important;height:auto!important;max-height:none!important;
    border-radius:15px!important;flex:none!important;
  }
  .cms-dynamic-textGallery .cms-adaptive-gallery.v586-layout.v586-mobile-single{
    grid-template-columns:minmax(0,1fr)!important;
  }
  .cms-dynamic-textGallery .cms-adaptive-gallery.v586-layout.v586-mobile-single .v586-tile,
  .cms-dynamic-textGallery .cms-adaptive-gallery.v586-layout.v586-mobile-single .v586-tile:last-child{
    grid-column:1/-1!important;width:100%!important;
    aspect-ratio:var(--v586-aspect,1.333)!important;
    max-height:min(75svh,600px)!important;
    border-radius:16px!important;flex:none!important;
  }
  /* If phone layout is "legacy", use the original 2-column ratio even when
     desktop adopts the new smart layout. This is an opt-in legacy choice. */
  .cms-dynamic-textGallery .cms-adaptive-gallery.v586-layout.v586-mobile-legacy .v586-tile,
  .cms-dynamic-textGallery .cms-adaptive-gallery.v586-layout.v586-mobile-legacy .v586-tile:last-child{
    grid-column:auto!important;aspect-ratio:4/3!important;width:100%!important;
    max-height:none!important;border-radius:15px!important;flex:none!important;
  }
  .cms-dynamic-textGallery .cms-adaptive-gallery.v586-layout .v586-tile img{object-fit:contain!important}
}
@media(prefers-reduced-motion:reduce){
  .cms-dynamic-textGallery .cms-adaptive-gallery.v586-layout .v586-tile img{transition:none!important}
}

/* V5.8.6: preserve legacy desktop manual rows if only phone layout changes. */
@media(max-width:700px){
  .cms-dynamic-textGallery .cms-adaptive-gallery.v586-layout.v586-desktop-legacy.has-custom-rows{
    display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;
  }
  .cms-dynamic-textGallery .cms-adaptive-gallery.v586-layout.has-custom-rows>.cms-text-gallery-row{
    display:contents!important;
  }
  .cms-dynamic-textGallery .cms-adaptive-gallery.v586-layout.v586-mobile-single.has-custom-rows{
    grid-template-columns:minmax(0,1fr)!important;
  }
  .cms-dynamic-textGallery .cms-adaptive-gallery.v586-layout.v586-mobile-legacy[data-count="3"] .v586-last-tile,
  .cms-dynamic-textGallery .cms-adaptive-gallery.v586-layout.v586-mobile-legacy[data-count="5"] .v586-last-tile,
  .cms-dynamic-textGallery .cms-adaptive-gallery.v586-layout.v586-mobile-legacy[data-count="7"] .v586-last-tile,
  .cms-dynamic-textGallery .cms-adaptive-gallery.v586-layout.v586-mobile-legacy[data-count="9"] .v586-last-tile,
  .cms-dynamic-textGallery .cms-adaptive-gallery.v586-layout.v586-mobile-legacy[data-count="11"] .v586-last-tile{
    grid-column:1/-1!important;aspect-ratio:16/9!important;
  }
}


/* V5.8.7: two-image justified mobile rows instead of square letterboxes.
   Pair shares track actual aspect ratios; the tile keeps its natural frame.
   Older galleries and explicit mobile single / legacy settings are unchanged. */
@media(max-width:700px){
  .cms-dynamic-textGallery .cms-adaptive-gallery.v586-layout.v586-mobile-duo{
    display:grid!important;grid-template-columns:repeat(100,minmax(0,1fr))!important;
    column-gap:0!important;row-gap:10px!important;
  }
  .cms-dynamic-textGallery .cms-adaptive-gallery.v586-layout.v586-mobile-duo .v586-tile,
  .cms-dynamic-textGallery .cms-adaptive-gallery.v586-layout.v586-mobile-duo .v586-tile:last-child{
    grid-column:span var(--v587-mobile-span,50)!important;
    width:calc(100% - 4px)!important;height:auto!important;
    aspect-ratio:var(--v586-aspect,1.333)!important;
    max-height:none!important;align-self:start;justify-self:start;
    min-width:0!important;overflow:hidden;
  }
  .cms-dynamic-textGallery .cms-adaptive-gallery.v586-layout.v586-mobile-duo .v587-mobile-right{
    justify-self:end;
  }
  .cms-dynamic-textGallery .cms-adaptive-gallery.v586-layout.v586-mobile-duo .v586-tile img{
    object-fit:cover!important;
  }
}


/* V5.8.8 · mobile-only entrance budget. The live glass header and all navigation
   rules remain untouched. Desktop animations retain their original timing. */
@media (prefers-reduced-motion:no-preference){
  html.semc-touch-device .semc-scroll-motion{
    transition-duration:.38s,.52s,.58s!important;
  }
  /* When a fast flick reaches an unshown card, paint its final state immediately
     and restore the regular touch transition channel in the following paint. */
  html.semc-touch-device .semc-scroll-motion.semc-mobile-reveal-skip,
  html.semc-touch-device .semc-motion-copy.semc-mobile-reveal-skip > :is(.eyebrow,.section-title,.section-lead,h1,h2,h3,p){
    transition:none!important;
    animation:none!important;
    will-change:auto!important;
  }
}
@media (max-width:980px) and (prefers-reduced-motion:no-preference){
  .semc-scroll-motion{
    transition-duration:.38s,.52s,.58s!important;
  }
  .semc-scroll-motion.semc-mobile-reveal-skip,
  .semc-motion-copy.semc-mobile-reveal-skip > :is(.eyebrow,.section-title,.section-lead,h1,h2,h3,p){
    transition:none!important;
    animation:none!important;
    will-change:auto!important;
  }
}

/* Some legacy card rules override the common scroll transition with a longer,
   seven-property list. Bound that list on touch as well; the last four entries
   are unchanged hover/presentation channels, not additional reveal work. */
@media (prefers-reduced-motion:no-preference){
  html.semc-touch-device body .semc-scroll-motion[data-semc-motion="card"]:not(.semc-reveal-done):not(.semc-reveal-arming){
    transition-duration:.38s,.52s,.58s,.34s,.34s,.34s,.34s!important;
  }
  html.semc-touch-device body .semc-scroll-motion.semc-mobile-reveal-skip.semc-reveal-done{
    transition:none!important;will-change:auto!important;
  }
}
@media (max-width:980px) and (prefers-reduced-motion:no-preference){
  body .semc-scroll-motion[data-semc-motion="card"]:not(.semc-reveal-done):not(.semc-reveal-arming){
    transition-duration:.38s,.52s,.58s,.34s,.34s,.34s,.34s!important;
  }
  body .semc-scroll-motion.semc-mobile-reveal-skip.semc-reveal-done{
    transition:none!important;will-change:auto!important;
  }
}

/* Keep the small text-within-card stagger, but finish it within the mobile
   parent's shorter one-time entrance rather than trailing for a full second. */
@media (prefers-reduced-motion:no-preference){
  html.semc-touch-device .semc-motion-copy > :is(.eyebrow,.section-title,.section-lead,h1,h2,h3,p){
    transition-duration:.40s,.55s!important;
  }
}
@media (max-width:980px) and (prefers-reduced-motion:no-preference){
  .semc-motion-copy > :is(.eyebrow,.section-title,.section-lead,h1,h2,h3,p){
    transition-duration:.40s,.55s!important;
  }
}
/* ===== SEMC V5.9.0 · Android home text compositing (visuals unchanged) =====
   Isolate the existing four headline/follow-up text animations into temporary
   compositor candidates before route-ready. No color, opacity, translate,
   timing, easing, font, shadow, backdrop or navigation rules are changed.
   JS drops the class after the final 1.02s staggered transition completes. */
@media(max-width:700px) and (prefers-reduced-motion:no-preference){
  html.semc-touch-device body[data-page-id="home"].semc-android-hero-prewarm .hero-kicker,
  html.semc-touch-device body[data-page-id="home"].semc-android-hero-prewarm .hero-copy h1,
  html.semc-touch-device body[data-page-id="home"].semc-android-hero-prewarm .hero-copy > p,
  html.semc-touch-device body[data-page-id="home"].semc-android-hero-prewarm .hero-actions{
    will-change:opacity,translate!important;
  }
  /* The unchanged 1.25s hero photograph scale can also be prepared ahead of
     the headline; drop this hint together with the four text hints. */
  html.semc-touch-device body[data-page-id="home"].semc-android-hero-prewarm .hero-media{
    will-change:scale!important;
  }
}

/* V5.9.2 | Article library: bounded rich text, per-image zoom,
   and individually styled article headings. Navbar and motion unchanged. */
.semc-article-body .semc-art-selection{font-size:var(--art-inline-pc,inherit)}
.semc-article-body .semc-article-figure{box-sizing:border-box;width:var(--art-figure-pc,100%);max-width:100%;margin-left:auto;margin-right:auto}
.semc-article-body .semc-article-figure[data-art-width-desktop] img{width:100%;max-width:100%;height:auto;object-fit:contain}
.semc-article-breadcrumb{color:var(--art-breadcrumb-color-pc,#7792a5)}
.semc-article-breadcrumb a{color:inherit}
.semc-article-kicker{color:var(--art-kicker-color-pc,#356b95);font-size:var(--art-kicker-pc,11px)}
.semc-article-hero h1{color:var(--art-title-color-pc,#173b5b)}
.semc-article-hero .semc-article-deck{color:var(--art-summary-color-pc,#6b8194)}
.semc-article-hero .semc-article-metadata{color:var(--art-metadata-color-pc,#6c89a1);font-size:var(--art-metadata-pc,13px)}

.semc-article-hero .semc-article-metadata [data-art-meta="category"]{color:var(--art-category-color-pc,var(--art-metadata-color-pc));font-size:var(--art-category-pc,var(--art-metadata-pc))}
.semc-article-hero .semc-article-metadata [data-art-meta="author"]{color:var(--art-author-color-pc,var(--art-metadata-color-pc));font-size:var(--art-author-pc,var(--art-metadata-pc))}
.semc-article-hero .semc-article-metadata [data-art-meta="source"]{color:var(--art-source-color-pc,var(--art-metadata-color-pc));font-size:var(--art-source-pc,var(--art-metadata-pc))}
.semc-article-hero .semc-article-metadata [data-art-meta="date"]{color:var(--art-date-color-pc,var(--art-metadata-color-pc));font-size:var(--art-date-pc,var(--art-metadata-pc))}
.semc-article-detail[data-custom-next="1"] .semc-article-hero{padding-bottom:0}
.semc-article-detail[data-custom-next="1"] .semc-article-detail-layout{padding-top:var(--art-next-gap-pc,0px)}
@media(max-width:700px){
 .semc-article-body .semc-art-selection{font-size:var(--art-inline-mobile,var(--art-inline-pc,inherit))}
 .semc-article-body .semc-article-figure{width:var(--art-figure-mobile,var(--art-figure-pc,100%))}
 .semc-article-body .semc-article-figure[data-art-width-mobile] img{width:100%;max-width:100%;height:auto;object-fit:contain}
 .semc-article-breadcrumb{color:var(--art-breadcrumb-color-mobile,var(--art-breadcrumb-color-pc,#7792a5))}
 .semc-article-kicker{color:var(--art-kicker-color-mobile,var(--art-kicker-color-pc,#356b95));font-size:var(--art-kicker-mobile,11px)}
 .semc-article-hero h1{color:var(--art-title-color-mobile,var(--art-title-color-pc,#173b5b))}
 .semc-article-hero .semc-article-deck{color:var(--art-summary-color-mobile,var(--art-summary-color-pc,#6b8194))}
 .semc-article-hero .semc-article-metadata{color:var(--art-metadata-color-mobile,var(--art-metadata-color-pc,#6c89a1));font-size:var(--art-metadata-mobile,11px)}
 .semc-article-hero .semc-article-metadata [data-art-meta="category"]{color:var(--art-category-color-mobile,var(--art-metadata-color-mobile));font-size:var(--art-category-mobile,var(--art-metadata-mobile))}
 .semc-article-hero .semc-article-metadata [data-art-meta="author"]{color:var(--art-author-color-mobile,var(--art-metadata-color-mobile));font-size:var(--art-author-mobile,var(--art-metadata-mobile))}
 .semc-article-hero .semc-article-metadata [data-art-meta="source"]{color:var(--art-source-color-mobile,var(--art-metadata-color-mobile));font-size:var(--art-source-mobile,var(--art-metadata-mobile))}
 .semc-article-hero .semc-article-metadata [data-art-meta="date"]{color:var(--art-date-color-mobile,var(--art-metadata-color-mobile));font-size:var(--art-date-mobile,var(--art-metadata-mobile))}
 .semc-article-detail[data-custom-next-mobile="1"] .semc-article-hero{padding-bottom:0!important}
 .semc-article-detail[data-custom-next-mobile="1"] .semc-article-detail-layout{padding-top:var(--art-next-gap-mobile,var(--art-next-gap-pc,0px))}
}

/* V5.9.3 | Per-field article heading styles. Only explicit hero_layout
   settings set vars; otherwise the V5.9.2 typography stays untouched. */
.semc-article-hero h1{font-weight:var(--art-title-weight-pc,780);line-height:var(--art-title-line-pc,1.08);letter-spacing:var(--art-title-letter-pc,-.048em);text-align:var(--art-title-align-pc,start);font-family:var(--art-title-family-pc,inherit)}
.semc-article-hero .semc-article-kicker{font-weight:var(--art-kicker-weight-pc,800);line-height:var(--art-kicker-line-pc,inherit);letter-spacing:var(--art-kicker-letter-pc,.19em);text-align:var(--art-kicker-align-pc,start);font-family:var(--art-kicker-family-pc,inherit)}
.semc-article-hero .semc-article-deck{font-weight:var(--art-summary-weight-pc,inherit);line-height:var(--art-summary-line-pc,1.83);letter-spacing:var(--art-summary-letter-pc,normal);text-align:var(--art-summary-align-pc,start);font-family:var(--art-summary-family-pc,inherit)}
.semc-article-hero .semc-article-breadcrumb{font-weight:var(--art-breadcrumb-weight-pc,600);line-height:var(--art-breadcrumb-line-pc,inherit);letter-spacing:var(--art-breadcrumb-letter-pc,normal);text-align:var(--art-breadcrumb-align-pc,start);font-family:var(--art-breadcrumb-family-pc,inherit)}
.semc-article-hero .semc-article-metadata [data-art-meta="category"],.semc-article-hero .semc-article-metadata [data-art-meta="author"],.semc-article-hero .semc-article-metadata [data-art-meta="source"],.semc-article-hero .semc-article-metadata [data-art-meta="date"]{font-weight:var(--art-metadata-weight-pc,inherit);letter-spacing:var(--art-metadata-letter-pc,normal)}
.semc-article-hero .semc-article-metadata [data-art-meta="category"]{font-weight:var(--art-category-weight-pc,inherit);letter-spacing:var(--art-category-letter-pc,normal);line-height:var(--art-category-line-pc,inherit);font-family:var(--art-category-family-pc,inherit);text-align:var(--art-category-align-pc,start)}
.semc-article-hero .semc-article-metadata [data-art-meta="author"]{font-weight:var(--art-author-weight-pc,inherit);letter-spacing:var(--art-author-letter-pc,normal);line-height:var(--art-author-line-pc,inherit);font-family:var(--art-author-family-pc,inherit);text-align:var(--art-author-align-pc,start)}
.semc-article-hero .semc-article-metadata [data-art-meta="source"]{font-weight:var(--art-source-weight-pc,inherit);letter-spacing:var(--art-source-letter-pc,normal);line-height:var(--art-source-line-pc,inherit);font-family:var(--art-source-family-pc,inherit);text-align:var(--art-source-align-pc,start)}
.semc-article-hero .semc-article-metadata [data-art-meta="date"]{font-weight:var(--art-date-weight-pc,inherit);letter-spacing:var(--art-date-letter-pc,normal);line-height:var(--art-date-line-pc,inherit);font-family:var(--art-date-family-pc,inherit);text-align:var(--art-date-align-pc,start)}
@media(max-width:700px){
 .semc-article-hero h1{font-weight:var(--art-title-weight-mobile,var(--art-title-weight-pc,780));line-height:var(--art-title-line-mobile,var(--art-title-line-pc,1.14));letter-spacing:var(--art-title-letter-mobile,var(--art-title-letter-pc,-.048em));text-align:var(--art-title-align-mobile,var(--art-title-align-pc,start));font-family:var(--art-title-family-mobile,var(--art-title-family-pc,inherit))}
 .semc-article-hero .semc-article-kicker{font-weight:var(--art-kicker-weight-mobile,var(--art-kicker-weight-pc,800));line-height:var(--art-kicker-line-mobile,var(--art-kicker-line-pc,inherit));letter-spacing:var(--art-kicker-letter-mobile,var(--art-kicker-letter-pc,.19em));text-align:var(--art-kicker-align-mobile,var(--art-kicker-align-pc,start));font-family:var(--art-kicker-family-mobile,var(--art-kicker-family-pc,inherit))}
 .semc-article-hero .semc-article-deck{font-weight:var(--art-summary-weight-mobile,var(--art-summary-weight-pc,inherit));line-height:var(--art-summary-line-mobile,var(--art-summary-line-pc,1.83));letter-spacing:var(--art-summary-letter-mobile,var(--art-summary-letter-pc,normal));text-align:var(--art-summary-align-mobile,var(--art-summary-align-pc,start));font-family:var(--art-summary-family-mobile,var(--art-summary-family-pc,inherit))}
 .semc-article-hero .semc-article-breadcrumb{font-weight:var(--art-breadcrumb-weight-mobile,var(--art-breadcrumb-weight-pc,600));line-height:var(--art-breadcrumb-line-mobile,var(--art-breadcrumb-line-pc,inherit));letter-spacing:var(--art-breadcrumb-letter-mobile,var(--art-breadcrumb-letter-pc,normal));text-align:var(--art-breadcrumb-align-mobile,var(--art-breadcrumb-align-pc,start));font-family:var(--art-breadcrumb-family-mobile,var(--art-breadcrumb-family-pc,inherit))}
 .semc-article-hero .semc-article-metadata [data-art-meta="category"]{font-weight:var(--art-category-weight-mobile,var(--art-category-weight-pc,inherit));letter-spacing:var(--art-category-letter-mobile,var(--art-category-letter-pc,normal));line-height:var(--art-category-line-mobile,var(--art-category-line-pc,inherit));font-family:var(--art-category-family-mobile,var(--art-category-family-pc,inherit));text-align:var(--art-category-align-mobile,var(--art-category-align-pc,start))}
 .semc-article-hero .semc-article-metadata [data-art-meta="author"]{font-weight:var(--art-author-weight-mobile,var(--art-author-weight-pc,inherit));letter-spacing:var(--art-author-letter-mobile,var(--art-author-letter-pc,normal));line-height:var(--art-author-line-mobile,var(--art-author-line-pc,inherit));font-family:var(--art-author-family-mobile,var(--art-author-family-pc,inherit));text-align:var(--art-author-align-mobile,var(--art-author-align-pc,start))}
 .semc-article-hero .semc-article-metadata [data-art-meta="source"]{font-weight:var(--art-source-weight-mobile,var(--art-source-weight-pc,inherit));letter-spacing:var(--art-source-letter-mobile,var(--art-source-letter-pc,normal));line-height:var(--art-source-line-mobile,var(--art-source-line-pc,inherit));font-family:var(--art-source-family-mobile,var(--art-source-family-pc,inherit));text-align:var(--art-source-align-mobile,var(--art-source-align-pc,start))}
 .semc-article-hero .semc-article-metadata [data-art-meta="date"]{font-weight:var(--art-date-weight-mobile,var(--art-date-weight-pc,inherit));letter-spacing:var(--art-date-letter-mobile,var(--art-date-letter-pc,normal));line-height:var(--art-date-line-mobile,var(--art-date-line-pc,inherit));font-family:var(--art-date-family-mobile,var(--art-date-family-pc,inherit));text-align:var(--art-date-align-mobile,var(--art-date-align-pc,start))}
}

/* Align the breadcrumb and small kicker as complete flex rows. */
.semc-article-hero .semc-article-kicker{justify-content:var(--art-kicker-justify-pc,flex-start)}
.semc-article-hero .semc-article-breadcrumb{justify-content:var(--art-breadcrumb-justify-pc,flex-start)}
@media(max-width:700px){.semc-article-hero .semc-article-kicker{justify-content:var(--art-kicker-justify-mobile,var(--art-kicker-justify-pc,flex-start))}.semc-article-hero .semc-article-breadcrumb{justify-content:var(--art-breadcrumb-justify-mobile,var(--art-breadcrumb-justify-pc,flex-start))}}

/* Shared article headers use the existing detail-header entrance, including on
   browsers/navigation paths where there is no cross-document snapshot. */
@media(prefers-reduced-motion:no-preference){
  body[data-page-id="detail"] :is(.semc-article-hero-copy>*,.semc-article-breadcrumb,.semc-article-return){
    opacity:0!important;translate:0 18px!important;
    transition:opacity .70s cubic-bezier(.22,1,.36,1),translate .98s cubic-bezier(.16,1,.3,1),scale 1.08s cubic-bezier(.16,1,.3,1)!important;
  }
  body[data-page-id="detail"].semc-route-ready :is(.semc-article-hero-copy>*,.semc-article-breadcrumb,.semc-article-return){opacity:1!important;translate:0 0!important;scale:1!important}
  body[data-page-id="detail"] .semc-article-hero-copy>:nth-child(2){transition-delay:.055s!important}
  body[data-page-id="detail"] .semc-article-hero-copy>:nth-child(3){transition-delay:.11s!important}
  body[data-page-id="detail"] .semc-article-hero-copy>:nth-child(4){transition-delay:.165s!important}
  body[data-page-id="detail"].semc-route-prep:not(.semc-route-ready) :is(.detail-hero-copy>*,.detail-hero-media,.semc-article-hero-copy>*,.semc-article-breadcrumb,.semc-article-return){transition:none!important}
}
