:root { color-scheme:light; --ink:#17324d; --muted:#425466; --blue:#1266c5; --cyan:#0b6f75; --line:#d9e4ef; --page:#f7f9fc; --surface:#ffffff; --navy:#17324d; }
* { box-sizing:border-box; }
html { font-size:16px; scroll-behavior:smooth; scroll-padding-top:calc(var(--site-header-height,83px) + 12px); }
body { margin:0; color:var(--ink); background:var(--page); font-family:"Segoe UI","Microsoft YaHei",sans-serif; }
a { color:inherit; text-decoration:none; }
.container { width:min(1180px,calc(100% - 40px)); margin-inline:auto; }
.skip-link { position:fixed; top:8px; left:8px; z-index:100; padding:10px 14px; color:#fff; background:#0c529f; border-radius:4px; transform:translateY(-150%); }
.skip-link:focus { color:#fff; transform:none; outline:2px solid #fff; outline-offset:2px; }
/* Dark chrome has its own contrast tokens; the page content stays light. */
.site-header,.footer-legal { --ink:#f3f7ff; --muted:#b9cbdd; --cyan:#91e0da; --line:rgba(195,215,236,.2); color:var(--ink); }
.site-header { position:sticky; top:0; z-index:40; padding:8px 0; background:var(--navy); border-bottom:1px solid var(--line); box-shadow:0 3px 12px rgb(23 50 77 / 8%); }
.navbar > .container,.carousel-content,.carousel-controls { width:calc(100% - 48px); max-width:1180px; margin-inline:auto; padding-inline:0; }
.navbar { min-height:66px; padding-block:0; }
.navbar-brand { display:flex; align-items:center; min-height:54px; padding-block:0; }
.navbar-brand img { display:block; width:180px; height:54px; object-fit:contain; object-position:left center; }
.primary-navigation { position:relative; display:flex; align-items:center; gap:36px; min-height:48px; padding:0; border:0; background:transparent; box-shadow:none; }
.primary-navigation > .nav-item { position:relative; display:flex; align-items:center; }
.navbar .primary-navigation .nav-link { position:relative; display:flex; align-items:center; min-height:48px; padding:8px 0; color:#d5e2ef; font-size:1rem; font-weight:500; white-space:nowrap; transition:color .18s; }
.navbar .primary-navigation .nav-link::after { content:""; position:absolute; right:0; bottom:0; left:0; height:2px; background:#72d7d2; opacity:0; transform:scaleX(.5); transition:opacity .18s,transform .18s; }
.navbar .primary-navigation .nav-link:hover,.navbar .primary-navigation .is-open > .nav-link,.navbar .primary-navigation .is-current > .nav-link { color:#edf9fb; }
.navbar .primary-navigation .nav-link:hover::after,.navbar .primary-navigation .is-open > .nav-link::after,.navbar .primary-navigation .is-current > .nav-link::after { opacity:1; transform:scaleX(1); }
.nav-panel-toggle { display:grid; place-items:center; width:28px; height:44px; padding:0; border:0; border-radius:4px; color:#b9cbdd; background:transparent; }
.nav-panel-toggle span { width:6px; height:6px; border-right:1px solid currentColor; border-bottom:1px solid currentColor; transform:translateY(-2px) rotate(45deg); transition:transform .18s; }
.nav-panel-toggle[aria-expanded="true"] span { transform:translateY(2px) rotate(225deg); }
.nav-panel-toggle:hover { color:#72d7d2; }
.site-header a:focus-visible,.site-header button:focus-visible { outline:2px solid #72d7d2; outline-offset:3px; border-radius:4px; box-shadow:none; }
.nav-panel { position:absolute; top:calc(100% + 14px); left:0; width:210px; max-width:calc(100vw - 48px); padding:20px; visibility:hidden; opacity:0; pointer-events:none; transform:translateY(5px); border:1px solid #47617a; border-radius:8px; background:#1b3c59; box-shadow:0 12px 26px rgb(23 50 77 / 14%); transition:opacity .16s,transform .16s; }
.nav-panel::before { content:""; position:absolute; top:-15px; left:0; width:100%; height:16px; }
.nav-has-panel.is-open > .nav-panel,.primary-navigation:not(.nav-enhanced) .nav-has-panel:focus-within > .nav-panel { visibility:visible; opacity:1; pointer-events:auto; transform:none; }
@media (hover:hover) and (pointer:fine) { .primary-navigation:not(.nav-enhanced) .nav-has-panel:hover > .nav-panel { visibility:visible; opacity:1; pointer-events:auto; transform:none; } }
.primary-navigation > .nav-item-wide { position:static; }
.nav-panel-wide { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); left:auto; right:0; width:580px; gap:24px; padding:26px; }
.nav-panel-wide > section + section { border-left:1px solid var(--line); padding-left:24px; }
.nav-panel-service { width:650px; }
.nav-panel-end { right:0; left:auto; }
.nav-panel h2 { margin:0 0 12px; color:#b9cbdd; font-size:.75rem; font-weight:500; letter-spacing:.08em; }
.nav-panel a { display:block; padding:9px 8px; border-radius:4px; color:#e1ebf5; font-size:.8125rem; line-height:1.55; overflow-wrap:anywhere; }
.nav-panel a:hover,.nav-panel a:focus-visible,.nav-panel a[aria-current="page"] { color:#92e1dc; background:rgb(114 215 210 / 6%); }
.site-header .navbar-toggler { display:grid; place-items:center; width:44px; height:44px; padding:8px; border:1px solid #607991; border-radius:6px; }
@media (min-width:992px) {
	.site-header .navbar-toggler { display:none; }
	.nav-panel { max-height:calc(100vh - var(--site-header-height,83px) - 24px); max-height:calc(100dvh - var(--site-header-height,83px) - 24px); overflow-y:auto; overscroll-behavior:contain; }
	/* Keep the hover bridge outside the panel's scrolling/clipping box. */
	.primary-navigation > .nav-has-panel.is-open::after { content:""; position:absolute; top:100%; left:0; right:0; height:14px; }
}
.hero-carousel { position:relative; background:radial-gradient(ellipse 600px 430px at calc(50% + 350px) 45%,#deecfa 0%,transparent 100%),linear-gradient(115deg,#f7f9fc,#edf4fb); border-bottom:1px solid var(--line); }
/* The four panels share one grid cell: height follows the tallest copy, not the screen width. */
.carousel-viewport { display:grid; }
.carousel-slide { grid-area:1 / 1; min-width:0; padding:58px 0 44px; visibility:hidden; opacity:0; pointer-events:none; transition:opacity .35s ease; }
.carousel-slide.is-active { visibility:visible; opacity:1; pointer-events:auto; z-index:1; }
.carousel-content { display:grid; grid-template-columns:minmax(0,1.18fr) minmax(0,1fr); gap:64px; align-items:center; min-height:368px; }
.carousel-copy { min-width:0; }
.hero-title { margin:0; color:var(--ink); font-size:3.25rem; line-height:1.24; font-weight:700; letter-spacing:-.025em; }
.hero-title span { display:block; color:var(--blue); }
.hero-description { max-width:560px; margin:24px 0 30px; color:var(--muted); font-size:1.0625rem; line-height:1.95; }
.hero-action { font-size:.9375rem; }
.hero-art { width:100%; max-width:480px; margin:0; justify-self:end; }
.hero-art img { display:block; width:100%; height:auto; aspect-ratio:4 / 3; object-fit:contain; }
.carousel-controls { display:flex; justify-content:center; align-items:center; gap:8px; padding-bottom:22px; }
.carousel-dots { display:flex; align-items:center; }
/* Small visual dots with generous, non-overlapping touch targets. */
.carousel-dots button { display:grid; place-items:center; width:44px; height:44px; padding:0; border:0; border-radius:50%; background:transparent; cursor:pointer; }
.carousel-dots button::before { content:""; width:10px; height:10px; border:1px solid #687f96; border-radius:50%; background:#687f96; transition:background .2s,border-color .2s; }
.carousel-dots button:hover::before { background:#0f7f85; border-color:#0f7f85; }
.carousel-dots button.is-active::before { background:var(--blue); border-color:var(--blue); box-shadow:0 0 0 3px rgb(18 102 197 / 12%); }
.carousel-toggle { display:grid; place-items:center; width:44px; height:44px; padding:0; border:0; border-radius:50%; color:var(--muted); background:transparent; cursor:pointer; }
.carousel-toggle:hover { color:var(--blue); background:rgb(18 102 197 / 7%); }
.carousel-toggle:disabled { color:#687f96; cursor:default; opacity:.7; }
.carousel-toggle span { font-size:1rem; line-height:1; }
.carousel-controls button:focus-visible,.button:focus-visible { outline:2px solid var(--blue); outline-offset:4px; }
.eyebrow,.section-heading span { color:var(--cyan); font-size:.75rem; font-weight:700; letter-spacing:.2em; }
.button { display:inline-flex; align-items:center; justify-content:center; min-height:50px; padding:0 26px; border-radius:6px; font-weight:600; }
.button-primary { color:#fff; background:var(--blue); box-shadow:0 4px 10px rgb(18 102 197 / 12%); transition:background .18s; }
.button-primary:hover { color:#fff; background:#0c529f; }
.button-secondary { color:var(--blue); border:1px solid var(--line); background:var(--surface); }
.capabilities { padding:110px 0; }
.section-heading { max-width:720px; margin-bottom:44px; }
.section-heading h2 { margin:12px 0 0; font-size:clamp(2rem,4vw,3rem); line-height:1.25; }
.card-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:18px; }
.card-grid article { min-height:310px; padding:34px; border:1px solid var(--line); border-radius:10px; background:var(--surface); transition:.25s ease; }
.card-grid article:hover { transform:translateY(-6px); border-color:rgba(66,217,208,.5); }
.card-number { color:var(--blue); font-size:.75rem; letter-spacing:.15em; }
.card-grid h3 { margin:55px 0 14px; font-size:1.4rem; }
.card-grid p { color:var(--muted); line-height:1.8; min-height:88px; }
.card-grid a { color:var(--cyan); font-size:.9rem; }
.proof { padding:28px 0 0; }
.proof .container { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); padding:26px 24px; border:1px solid var(--line); border-radius:10px; background:var(--surface); box-shadow:0 4px 14px rgb(23 50 77 / 4%); }
.proof .container > div { display:flex; flex-direction:column; align-items:center; justify-content:center; min-width:0; gap:8px; padding-inline:16px; text-align:center; border-right:1px solid var(--line); }
.proof .container > div:last-child { border:0; }.proof strong { font-size:2rem; color:var(--blue); }.proof span { color:var(--muted); overflow-wrap:anywhere; }
.cta { margin-block:28px 32px; padding:0 24px; display:flex; justify-content:space-between; align-items:center; gap:24px; border:0; border-radius:0; background:transparent; box-shadow:none; }
.cta > div { min-width:0; }
.cta h2 { margin:8px 0 0; font-size:1.5rem; line-height:1.4; }
.cta span { color:var(--cyan); font-size:.875rem; }
.cta .button { flex-shrink:0; }
.site-footer { padding:38px 0 0; color:var(--muted); border-top:1px solid var(--line); background:#eef3f8; }
.footer-navigation { display:grid; grid-template-columns:repeat(5,max-content); justify-content:space-between; gap:20px; padding-bottom:30px; }
.footer-navigation section { min-width:0; }
.footer-navigation h2 { margin:0 0 16px; color:var(--ink); font-size:.9375rem; font-weight:650; }
.footer-navigation a { display:block; margin:0 0 8px; color:var(--muted); font-size:.8rem; line-height:1.55; white-space:nowrap; transition:color .2s ease; }
.footer-navigation a:last-child { margin-bottom:0; }
.footer-navigation a:hover { color:var(--blue); }
.footer-navigation a:focus-visible { outline:2px solid var(--blue); outline-offset:3px; }
.footer-legal { background:var(--navy); }
.footer-bottom { display:flex; align-items:center; justify-content:space-between; gap:24px; min-height:80px; padding-block:18px; }
.footer-bottom img { width:143px; height:40px; object-fit:contain; object-position:left center; }
.footer-bottom p { margin:0; color:var(--muted); font-size:.82rem; }.footer-bottom a:hover { color:var(--cyan); }
.footer-bottom a:focus-visible { outline:2px solid var(--cyan); outline-offset:3px; }
@media (max-width:1050px) { .footer-navigation { grid-template-columns:repeat(3,max-content); row-gap:42px; } }
@media (max-width:1190px) and (min-width:992px) {
	.primary-navigation { gap:28px; }
	.navbar-brand img { width:170px; height:auto; }
}
@media (max-width:991.98px) {
	.site-header .navbar { position:static; }
	#primary-navigation { position:absolute; top:100%; left:0; width:100%; padding:0 20px; max-height:calc(100vh - var(--site-header-height,83px) - 12px); max-height:calc(100dvh - var(--site-header-height,83px) - 12px); background:var(--navy); border-radius:0 0 8px 8px; box-shadow:0 8px 16px rgb(23 50 77 / 16%); overscroll-behavior:contain; }
	#primary-navigation.show { overflow-y:auto; }
	.primary-navigation { display:block; padding:0; border-top:1px solid var(--line); }
	.primary-navigation > .nav-item { display:flex; flex-wrap:wrap; border-bottom:1px solid var(--line); }
	.navbar .primary-navigation .nav-link { flex:1; min-height:54px; padding:12px 0; }
	.navbar .primary-navigation .nav-link::after { display:none; }
	.navbar .primary-navigation .is-open > .nav-link,.navbar .primary-navigation .is-current > .nav-link { color:#72d7d2; }
	.nav-panel-toggle { width:44px; height:44px; }
	.nav-panel,.nav-panel-wide,.nav-panel-service,.nav-panel-end { position:static; display:none; flex-basis:100%; width:100%; max-width:none; padding:4px 16px 16px; border:0; border-left:1px solid #607991; border-radius:0; box-shadow:none; background:transparent; transition:none; margin-bottom:16px; }
	.nav-panel::before { display:none; }
	.nav-panel-wide { grid-template-columns:minmax(0,1fr); gap:22px; }
	.nav-panel-wide > section + section { border:0; padding-left:0; }
	.nav-has-panel.is-open > .nav-panel,.primary-navigation:not(.nav-enhanced) .nav-has-panel:focus-within > .nav-panel { display:grid; }
	.nav-panel a { min-height:44px; padding:10px 0; }
	.carousel-content { gap:28px; grid-template-columns:minmax(0,1.3fr) minmax(0,1fr); }
	.hero-title { font-size:2.5rem; }
	.hero-description { font-size:1rem; }
	.card-grid { grid-template-columns:1fr; }
}
@media (max-width:767.98px) {
	.navbar > .container,.carousel-content,.carousel-controls { width:calc(100% - 40px); }
	.carousel-slide { padding:36px 0 24px; }
	.carousel-content { grid-template-columns:minmax(0,1fr); gap:20px; min-height:0; }
	.hero-title { font-size:2.125rem; }
	.hero-description { margin:20px 0 24px; }
	.hero-art { width:100%; max-width:280px; justify-self:center; }
	.cta { padding-inline:12px; align-items:flex-start; flex-direction:column; gap:16px; }
	.cta h2 { font-size:1.25rem; }
	.footer-navigation { grid-template-columns:repeat(2,max-content); }
}
@media (max-width:560px) {
	.container { width:min(100% - 28px,1180px); }
	.navbar > .container,.carousel-content,.carousel-controls { width:calc(100% - 40px); }
	.proof .container { grid-template-columns:minmax(0,1fr); padding:8px 24px; }
	.proof .container > div { padding:18px 0; border-right:0; border-bottom:1px solid var(--line); }
	.proof .container > div:last-child { border-bottom:0; }
}
@media (max-width:640px) { .navbar-brand img { width:164px; height:auto; }.footer-navigation { grid-template-columns:1fr; gap:28px; }.footer-bottom { align-items:flex-start; flex-direction:column; gap:18px; padding:25px 0; }.footer-bottom p { line-height:1.7; } }
@media (prefers-reduced-motion:reduce) { html { scroll-behavior:auto; }.carousel-slide,.carousel-dots button::before,.nav-panel,.nav-panel-toggle span,.navbar .primary-navigation .nav-link,.navbar .primary-navigation .nav-link::after { transition:none; } }