@font-face{font-family:Manrope;src:url('/assets/manrope-latin.woff2') format('woff2');font-style:normal;font-weight:400 800;font-display:swap}
:root{--navy:#071b33;--navy-light:#0c2947;--blue:#176fe5;--bright:#65acff;--text:#112a43;--muted:#5b6c7c;--line:#dce3e9;--neutral:#f3f5f7;--white:#fff;--gutter:clamp(24px,5.55vw,96px);--wrap:1440px}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:24px}
body{margin:0;background:var(--white);color:var(--text);font-family:Manrope,Arial,Helvetica,sans-serif;font-size:16px;line-height:1.65;-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none;text-underline-offset:6px}
button{font:inherit}
img{display:block;max-width:100%;height:auto}
h1,h2,h3,p{margin:0}
h1,h2,h3{text-wrap:balance}
h1,h2{font-weight:500;letter-spacing:-.052em;line-height:1.12}
h2{font-size:clamp(36px,4.05vw,58px)}
h3{font-weight:600;letter-spacing:-.025em;line-height:1.3;font-size:22px}
p{color:var(--muted)}
a,button,summary{-webkit-tap-highlight-color:transparent}
:focus-visible{outline:3px solid #1b72e7;outline-offset:6px}
.site-header :focus-visible,.hero :focus-visible,.contact :focus-visible,.site-footer :focus-visible{outline-color:#9bccff}
::selection{color:#fff;background:#176fe5}
.wrap{max-width:var(--wrap);padding-inline:var(--gutter);margin-inline:auto}
.section-space{padding-block:112px}
.eyebrow{font-size:14px;line-height:1.5;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#1b65c2;margin-bottom:26px}
.muted-heading{color:#738395}
.skip-link{position:fixed;left:20px;top:-80px;z-index:10;background:white;padding:12px 20px;color:var(--navy)}
.skip-link:focus{top:16px}
.site-header{background:var(--navy);color:white;position:relative;z-index:5}
.navigation{height:112px;display:flex;align-items:center;justify-content:space-between;gap:40px}
.brand{display:block;flex-shrink:0}
.logo{width:168px;height:auto;max-height:88px;object-fit:contain}
.navlinks{display:flex;align-items:center;gap:clamp(22px,3vw,44px);font-size:14px;font-weight:500}
.navlinks>a:not(.button){padding:12px 0;color:#e0e7ef;position:relative}
.navlinks>a:not(.button):hover{color:var(--bright)}
.button{display:inline-flex;justify-content:center;align-items:center;gap:12px;min-height:56px;padding:16px 26px;background:var(--blue);border:1px solid var(--blue);color:#fff;border-radius:3px;font-size:15px;line-height:1.4;font-weight:700;transition:background-color .16s ease,border-color .16s ease}
.button:hover{background:#0d58bd;border-color:#0d58bd}
.button:active{background:#0a489c}
.button-small{min-height:48px;padding:13px 23px;font-size:14px}
.icon{fill:currentColor;width:19px;height:19px;flex-shrink:0}
.menu-toggle{display:none}
.hero{background:var(--navy);color:#fff;position:relative;isolation:isolate;overflow:hidden}
.hero-visual{position:absolute;inset:0 0 0 38%;z-index:-2}
.hero-visual img{width:100%;height:100%;object-fit:cover;object-position:65% center}
.hero:after{content:'';position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,var(--navy) 0%,var(--navy) 39%,rgba(7,27,51,.88) 47%,rgba(7,27,51,.17) 66%,rgba(7,27,51,.04) 100%)}
.hero-inner{min-height:690px;display:flex;align-items:center;padding-block:60px 74px}
.hero-copy{width:63%;max-width:760px}
.hero .eyebrow{color:#c4d4e7;margin-bottom:28px}
h1{font-size:clamp(52px,5.72vw,83px);line-height:1.06;letter-spacing:-.055em;margin-bottom:28px}
h1 span{color:var(--bright)}
.small-break{display:none}
.hero-description{font-size:17px;line-height:1.7;color:#d5deeb;margin-bottom:30px;max-width:440px}
.hero-note{font-size:13px;color:#bfccdd;margin-top:20px}
.audience-nav{background:#fff;border-bottom:1px solid var(--line)}
.audience-inner{display:grid;grid-template-columns:1fr 1fr;padding-block:30px}
.audience-inner>a{display:grid;grid-template-columns:1fr auto;align-items:center;column-gap:24px;padding:8px 38px 8px 0}
.audience-inner>a+ a{border-left:1px solid var(--line);padding-left:48px;padding-right:0}
.audience-inner>a>span:first-child{font-size:13px;color:var(--muted);margin-bottom:5px}
.audience-inner strong{font-size:23px;font-weight:600;letter-spacing:-.025em;grid-column:1}
.audience-action{grid-column:2;grid-row:1/3;font-size:13px;border-bottom:1px solid #9aaabc;padding-block:7px}
.audience-inner>a:hover strong,.audience-inner>a:hover .audience-action{color:#1763c6}
.business-grid{display:grid;grid-template-columns:1.1fr 1fr;gap:12%}
.section-intro>p:not(.eyebrow){font-size:17px;max-width:400px;margin-block:30px}
.text-link{display:inline-block;color:#135ebd;font-size:15px;font-weight:700;text-decoration:underline;text-decoration-thickness:1px;line-height:1.8;padding-block:5px}
.text-link:hover{text-decoration-thickness:2px;color:#073f85}
.service-list{padding-top:2px}
.service-list article{border-top:1px solid var(--line);padding:29px 0 30px}
.service-list article:first-child{border-top:2px solid var(--blue)}
.service-list h3{margin-bottom:12px}
.service-list p{max-width:410px;line-height:1.75}
.construction{display:grid;grid-template-columns:1fr 1fr;background:var(--neutral)}
.construction-visual{min-height:680px;overflow:hidden}
.construction-visual img{width:100%;height:100%;object-fit:cover;object-position:80% center}
.construction-copy{padding:78px clamp(36px,5.55vw,96px) 78px clamp(40px,6.1vw,88px);align-self:center;max-width:720px}
.construction-copy>p:not(.eyebrow){font-size:17px;line-height:1.75;margin-block:24px;max-width:430px}
.plain-list{list-style:none;padding:0;margin:0 0 30px;font-size:15px}
.plain-list li{padding-block:6px;padding-left:18px;position:relative}
.plain-list li:before{content:'';width:5px;height:5px;background:var(--blue);position:absolute;left:0;top:17px}
.split-heading{display:grid;grid-template-columns:1fr 2fr;gap:50px;align-items:start}
.split-heading .eyebrow{padding-top:8px}
.steps{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6%;margin-top:64px}
.steps article{padding-top:25px;border-top:1px solid #a8bdd2}
.steps h3{font-size:21px;margin-bottom:14px}
.steps p{max-width:330px}
.coverage{background:var(--neutral)}
.coverage-grid{display:grid;grid-template-columns:1fr 1fr;gap:11%}
.coverage-copy{padding-top:3px}
.lead{font-size:21px;line-height:1.6;color:var(--text);max-width:470px}
.coverage-locations{margin-block:32px}
.coverage-locations>div+div{margin-top:26px}
.coverage-locations h3{font-size:19px;margin-bottom:10px}
.coverage-locations p{max-width:440px}
.faq-grid{display:grid;grid-template-columns:1fr 1.6fr;gap:9%}
.questions{border-top:1px solid var(--line)}
details{border-bottom:1px solid var(--line)}
summary{display:flex;justify-content:space-between;align-items:center;gap:20px;cursor:pointer;list-style:none;font-size:17px;font-weight:600;padding:25px 0}
summary::-webkit-details-marker{display:none}
summary:after{content:'+';font-size:25px;line-height:1;color:#2269c0;flex-shrink:0;font-weight:400}
details[open] summary:after{content:'−'}
summary:hover{color:#1763c6}
details p{padding:0 38px 25px 0;line-height:1.8}
.contact{background:var(--navy);padding:92px 0 100px;color:white}
.contact-grid{display:grid;grid-template-columns:1.3fr 1fr;align-items:center;gap:12%}
.contact .eyebrow{color:#b0c5de}
.contact h2{font-size:clamp(45px,4.75vw,69px);line-height:1.12}
.contact h2 span{color:var(--bright)}
.contact-action{padding-top:38px}
.contact-action p{font-size:19px;color:#cbd8e8;line-height:1.65;margin-bottom:30px}
.phone{display:block;width:fit-content;font-size:16px;color:#b4c9e1;margin-top:20px;padding:7px 0}
.phone:hover{color:white;text-decoration:underline}
.site-footer{background:var(--navy);color:#fff}
.footer-top{padding-block:40px;display:flex;align-items:center;gap:8%;border-top:1px solid #263b52}
.footer-top .logo{width:150px;max-height:80px}
.footer-top p{color:#b8c6d6;font-size:14px}
.back-top{margin-left:auto;font-size:14px;color:#c7d3e1;padding-block:12px}
.back-top:hover{color:white;text-decoration:underline}
.footer-bottom{display:flex;justify-content:space-between;gap:25px;padding-block:24px;border-top:1px solid #263b52}
.footer-bottom p{font-size:12px;color:#9eafc3}
@media(min-width:1600px){.hero-visual{left:38%}.construction-copy{padding-left:100px}}
@media(max-width:1100px){.navlinks{gap:22px}.hero-copy{width:68%}.hero-inner{min-height:650px}.audience-inner>a{padding-right:28px}.audience-inner>a+a{padding-left:30px}.audience-inner strong{font-size:21px}.audience-action{grid-column:1;grid-row:3;justify-self:start;margin-top:8px}.business-grid{gap:8%}.construction-copy{padding:64px 40px}.construction-visual{min-height:640px}.section-space{padding-block:88px}.steps h3{font-size:19px}.contact-grid{gap:7%}}
@media(max-width:850px){.navigation{height:96px;gap:20px}.logo{width:145px;max-height:72px}.menu-toggle{display:flex;align-items:center;gap:14px;min-height:48px;padding:10px 0 10px 15px;border:0;background:transparent;color:white;cursor:pointer}.menu-label{font-size:14px}.menu-icon{display:flex;flex-direction:column;justify-content:center;gap:6px;width:23px;height:23px}.menu-icon i{height:1.5px;width:23px;display:block;background:currentColor;transition:transform .15s}.menu-toggle[aria-expanded=true] .menu-icon i:first-child{transform:translateY(3.75px) rotate(45deg)}.menu-toggle[aria-expanded=true] .menu-icon i:last-child{transform:translateY(-3.75px) rotate(-45deg)}.navlinks{display:none;position:absolute;top:100%;left:0;right:0;background:var(--navy);padding:16px var(--gutter) 30px;border-top:1px solid #33455b;flex-direction:column;align-items:stretch;gap:6px;box-shadow:0 20px 28px #071b3333}.navlinks.is-open{display:flex}.navlinks>a:not(.button){padding:14px 0;font-size:17px}.navlinks>.button{align-self:start;margin-top:12px}.hero-copy{width:76%}.hero-inner{min-height:650px}.hero-visual{left:32%}.hero:after{background:linear-gradient(90deg,var(--navy) 0%,rgba(7,27,51,.97) 34%,rgba(7,27,51,.65) 61%,rgba(7,27,51,.12) 100%)}h1{font-size:64px}.business-grid{gap:7%}h2{font-size:39px}.construction-copy{padding:48px 32px}.construction-visual{min-height:635px}.construction-copy h2{font-size:43px}.construction-copy .button{padding:16px 18px;font-size:14px}.split-heading{grid-template-columns:1fr 2fr;gap:20px}.steps{gap:30px;margin-top:44px}.steps p{font-size:15px}.coverage-grid{gap:8%}.faq-grid{grid-template-columns:1fr 1.45fr;gap:6%}.contact h2{font-size:48px}.contact-action p{font-size:17px}.footer-top{gap:35px}}
@media(max-width:600px){:root{--gutter:24px}.section-space{padding-block:64px}.navigation{height:88px}.logo{width:128px;max-height:68px}.eyebrow{font-size:12px;letter-spacing:.075em;margin-bottom:20px}.hero{display:flex;flex-direction:column}.hero-inner{min-height:0;width:100%;padding-block:42px 34px}.hero-copy{width:100%;max-width:none}.hero-visual{position:relative;inset:auto;order:2;display:block;height:225px;z-index:0}.hero-visual img{object-position:65% 57%}.hero:after{display:none}h1{font-size:clamp(43px,10.5vw,62px);letter-spacing:-.052em;line-height:1.1;margin-bottom:24px}.hero-description{font-size:16px;line-height:1.7;margin-bottom:25px}.hero-note{font-size:12px;line-height:1.6;max-width:295px;margin-top:17px}.button{min-height:54px;padding:16px 22px;font-size:14px}.audience-inner{grid-template-columns:1fr;padding-block:5px}.audience-inner>a,.audience-inner>a+a{border-left:0;padding:23px 0;grid-template-columns:1fr auto;column-gap:18px}.audience-inner>a+a{border-top:1px solid var(--line)}.audience-inner strong{font-size:21px}.audience-action{font-size:12px;grid-column:2;grid-row:1/3;max-width:74px;line-height:1.6;margin-top:0;padding-bottom:5px}.audience-inner>a>span:first-child{font-size:12px;margin-bottom:4px}.business-grid{grid-template-columns:1fr;gap:42px}h2{font-size:clamp(35px,8.7vw,47px)}.section-intro>p:not(.eyebrow){font-size:16px;margin-block:24px}.text-link{font-size:14px}.service-list article{padding:24px 0}.service-list article:last-child{padding-bottom:0}.service-list h3{font-size:21px;margin-bottom:10px}.service-list p{font-size:15px}.construction{grid-template-columns:1fr}.construction-visual{min-height:0;height:300px}.construction-visual img{object-position:70% 70%}.construction-copy{padding:48px var(--gutter) 56px}.construction-copy h2{font-size:44px}.construction-copy>p:not(.eyebrow){font-size:16px}.plain-list{font-size:14px;margin-bottom:27px}.construction-copy .button{font-size:14px;padding:16px 20px}.split-heading{display:block}.split-heading .eyebrow{padding-top:0}.steps{grid-template-columns:1fr;gap:28px;margin-top:36px}.steps article{padding-top:22px}.steps h3{font-size:20px;margin-bottom:10px}.steps p{max-width:none;font-size:16px}.coverage-grid{grid-template-columns:1fr;gap:32px}.coverage-copy{padding-top:0}.lead{font-size:19px}.coverage-locations{margin-block:28px}.coverage-locations h3{font-size:18px}.coverage-locations p{font-size:15px}.faq-grid{grid-template-columns:1fr;gap:32px}.faq h2 br{display:none}summary{font-size:16px;padding:23px 0}details p{font-size:15px;padding-right:15px}.contact{padding:62px 0}.contact-grid{grid-template-columns:1fr;gap:32px}.contact h2{font-size:clamp(40px,10.1vw,56px)}.contact-action{padding-top:0}.contact-action p{font-size:17px;margin-bottom:24px}.phone{font-size:15px;margin-top:16px}.footer-top{padding-block:30px;display:grid;grid-template-columns:1fr auto;gap:24px}.footer-top .logo{width:124px;max-height:70px}.footer-top p{font-size:13px;grid-row:2;grid-column:1/3}.back-top{font-size:12px}.footer-bottom{display:block;padding-block:24px 30px}.footer-bottom p{font-size:12px}.footer-bottom p+p{margin-top:12px;max-width:310px}}
/* Keep every pixel of the original mark. Lighten compositing eliminates its
   dark photographic backdrop without redrawing or clipping the lettering. */
.brand{position:relative;width:168px;height:86px;overflow:hidden}
.logo,.footer-top .logo{position:absolute;left:50%;top:50%;width:330px;max-width:none;max-height:none;height:auto;transform:translate(-50%,-50%);filter:contrast(1.3);mix-blend-mode:lighten;pointer-events:none}
.site-header,.site-footer{isolation:isolate}
.footer-top .brand{width:150px;height:80px}
.footer-top .logo{width:295px}
@media(max-width:850px){.brand{width:145px;height:72px}.logo{width:285px}}
@media(max-width:600px){.brand,.footer-top .brand{width:128px;height:68px}.logo,.footer-top .logo{width:250px}}
@media(max-width:360px){.small-break{display:block}h1{font-size:43px}.hero .eyebrow{max-width:240px}}


/* Content is visible by default, including without JavaScript. */
:root {
  --motion-ease: cubic-bezier(.22, .68, .15, 1);
}

.button {
  transition: background-color 180ms ease, border-color 180ms ease,
    transform 240ms var(--motion-ease);
}

.text-link, summary, .back-top, .phone {
  transition: color 180ms ease, text-decoration-color 180ms ease;
}

.navlinks > a:not(.button)::after {
  content: '';
  position: absolute;
  left: 0;
  right: 0;
  bottom: 7px;
  height: 1px;
  background: var(--bright);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 260ms var(--motion-ease);
}

.navlinks > a:not(.button):focus-visible::after {
  transform: scaleX(1);
}

.audience-inner strong {
  transition: color 180ms ease, transform 260ms var(--motion-ease);
}

.construction-visual {
  position: relative;
  isolation: isolate;
}

@media (hover: hover) and (pointer: fine) {
  .button:hover { transform: translateY(-2px); }
  .button:active { transform: translateY(0); }
  .navlinks > a:not(.button):hover::after { transform: scaleX(1); }
  .audience-inner > a:hover strong { transform: translateX(3px); }
}

@media (min-width: 851px) {
  .construction-visual.image-revealing::after {
    content: '';
    position: absolute;
    inset: 0;
    z-index: 1;
    pointer-events: none;
    background: var(--neutral);
    transform-origin: right center;
    animation: image-unveil 880ms var(--motion-ease) both;
  }

  .construction-visual.image-revealing img {
    animation: image-settle 900ms var(--motion-ease) both;
  }
}

/* Native scroll timelines keep the small desktop drift off the JS thread.
   Unsupported browsers keep the original, static image. */
@supports (animation-timeline: scroll()) {
  @media (min-width: 851px) and (hover: hover) and (pointer: fine) {
    .hero-visual img {
      animation: hero-drift linear both;
      animation-timeline: scroll(root block);
      animation-range: 0px 850px;
    }
  }
}

@media (max-width: 850px) {
  .navlinks.is-open {
    animation: menu-enter 200ms var(--motion-ease);
  }
}

@keyframes image-unveil {
  from { transform: scaleX(1); }
  to { transform: scaleX(0); }
}

@keyframes image-settle {
  from { transform: scale(1.035); }
  to { transform: scale(1); }
}

@keyframes hero-drift {
  from { transform: translate3d(0, -8px, 0) scale(1.06); }
  to { transform: translate3d(0, 14px, 0) scale(1.06); }
}

@keyframes menu-enter {
  from { opacity: 0; transform: translateY(-5px); }
  to { opacity: 1; transform: translateY(0); }
}


/* Circular totals: decorative rings, not percentage/progress indicators. */
.metrics {
  --metrics-space: 84px;
  --arc-depth: clamp(160px, 16vw, 260px);
  --arc-reveal: 24px;
  position: relative;
  isolation: isolate;
  padding-block: var(--metrics-space) calc(var(--metrics-space) + var(--arc-depth) + var(--arc-reveal));
  /* A solid upper field joins the oversized ellipse beneath all the copy. */
  background: linear-gradient(to bottom,
    var(--neutral) 0,
    var(--neutral) calc(100% - var(--arc-depth) - var(--arc-reveal) - 24px),
    transparent calc(100% - var(--arc-depth) - var(--arc-reveal) - 24px));
}

.metrics::before,
.metrics::after {
  content: "";
  position: absolute;
  inset-inline: 0;
  bottom: var(--arc-reveal);
  height: calc(2 * var(--arc-depth));
  border-radius: 0 0 50% 50% / 0 0 var(--arc-depth) var(--arc-depth);
  pointer-events: none;
}

.metrics::before {
  z-index: 1;
  background: var(--neutral);
}

.metrics::after {
  z-index: 0;
  bottom: 0;
  background: #e9eef3;
}

.metrics-layout {
  position: relative;
  z-index: 2;
  display: grid;
  grid-template-columns: .95fr 1.6fr;
  align-items: center;
  gap: 8%;
}

.metrics-intro h2 {
  font-size: clamp(34px, 3.3vw, 48px);
}

.metrics-intro > p:last-child {
  margin-top: 24px;
  max-width: 350px;
}

.metric-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 48px;
  list-style: none;
  padding: 0;
  margin: 0;
}

.metric {
  min-width: 0;
  text-align: center;
}

.metric-circle {
  display: grid;
  place-items: center;
  width: min(100%, 216px);
  aspect-ratio: 1;
  margin: 0 auto 24px;
  position: relative;
}

.metric-circle svg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  fill: none;
  transform: rotate(-90deg);
}

.metric-track { stroke: #dce5ee; stroke-width: 1.2; }
.metric-ring { stroke: var(--blue); stroke-width: 1.8; stroke-linecap: round; }

.metric-value {
  color: var(--navy);
  font-size: clamp(56px, 5.5vw, 78px);
  font-weight: 500;
  font-variant-numeric: tabular-nums;
  letter-spacing: -.065em;
  line-height: 1;
}

.metric-number { display: inline-flex; align-items: baseline; gap: 3px; }
.metric-suffix { font-size: 38px; line-height: 1; font-weight: 400; color: var(--blue); }

.metric h3 { font-size: 20px; }
.metric-description { font-size: 14px; margin: 10px auto 0; max-width: 250px; }

.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
  border: 0;
}

@media (max-width: 1000px) {
  .metrics-layout { gap: 6%; }
  .metric-list { gap: 28px; }
  .metric h3 { font-size: 18px; }
}

@media (max-width: 850px) {
  .metrics {
    --arc-depth: clamp(70px, 11vw, 100px);
    --arc-reveal: 14px;
  }
}

@media (max-width: 700px) {
  .metrics { --metrics-space: 56px; }
  .metrics-layout { grid-template-columns: 1fr; gap: 36px; }
  .metrics-intro h2 { font-size: 36px; }
  .metrics-intro > p:last-child { margin-top: 18px; max-width: 440px; }
  .metric-list { gap: 22px; }
  .metric-circle { width: min(100%, 166px); margin-bottom: 20px; }
  .metric-value { font-size: clamp(48px, 14vw, 66px); }
  .metric-suffix { font-size: 28px; }
  .metric h3 { font-size: 17px; line-height: 1.4; }
  .metric-description { font-size: 13px; line-height: 1.65; }
}

@media (max-width: 360px) {
  .metric-list { gap: 16px; }
  .metric h3 { font-size: 16px; }
}

/* Static by default. Only the decorative bottom bands follow scroll progress;
   using their own view timelines keeps motion visible as the arc enters view. */
@supports (animation-timeline: view()) and (animation-range: entry 50% entry 100%) {
  @media (min-width: 851px) {
    .metrics::before {
      animation: metrics-main-arc linear both;
      animation-duration: auto;
      animation-timeline: view(block);
      animation-range: entry 50% entry 100%;
    }

    .metrics::after {
      animation: metrics-soft-arc linear both;
      animation-duration: auto;
      animation-timeline: view(block);
      animation-range: entry 50% cover 50%;
    }
  }
}

@keyframes metrics-main-arc {
  from { transform: translateY(-22px); }
  to { transform: translateY(0); }
}

@keyframes metrics-soft-arc {
  from { transform: translateY(-10px); }
  to { transform: translateY(0); }
}

/* Original inline SVG illustrations. All strokes are visible without JS. */
.service-art {
  display: block;
  width: 100%;
  max-width: 420px;
  height: auto;
  overflow: visible;
  fill: none;
  stroke: #34516d;
  stroke-width: 1.5;
  stroke-linecap: round;
  stroke-linejoin: round;
  --line-duration: 460ms;
  --icon-duration: 420ms;
  --sequence-gap: 60ms;
}

.service-art-business { margin-top: 44px; }
.service-art-construction { margin: 30px 0 32px; }
.service-art-line { stroke: #7f9ebd; stroke-width: 1; }
.art-detail { stroke: var(--blue); stroke-width: 1.35; }

.service-art.is-drawing .service-art-line,
.service-art.is-drawing .art-stroke {
  stroke-dasharray: 100;
  animation: tec-line-draw var(--line-duration) ease-out both;
}

.service-art.is-drawing .service-art-line {
  /* Each disconnected segment continues the same left-to-right reveal. */
  animation-duration: calc(var(--line-duration) * var(--line-span));
  animation-delay: calc(var(--line-duration) * var(--line-start));
  animation-timing-function: linear;
}

.service-art.is-drawing .art-stroke {
  animation-name: tec-icon-draw;
  animation-duration: var(--icon-duration);
  animation-delay: calc(var(--line-duration) + var(--draw-step) * (var(--icon-duration) + var(--sequence-gap)));
  animation-timing-function: cubic-bezier(.3, .1, .25, 1);
}

@keyframes tec-line-draw {
  from { stroke-dashoffset: 100; }
  to { stroke-dashoffset: 0; }
}

@keyframes tec-icon-draw {
  from { stroke-dashoffset: 100; }
  to { stroke-dashoffset: 0; }
}

@media (max-width: 850px) {
  .service-art {
    --line-duration: 300ms;
    --icon-duration: 300ms;
    --sequence-gap: 40ms;
  }
  .service-art-business { margin-top: 32px; }
}


/* Review patch: preserve TEC's established visual identity and motion. */
.service-list .text-link { margin-top: 10px; min-height: 44px; display: inline-flex; align-items: center; }
.mobile-contact { display: none; }
.hero-note { font-size: .875rem; }
.audience-inner > a > span:first-child, .audience-action { font-size: .875rem; }
.audience-inner > a { min-width: 0; }
.audience-inner strong { min-width: 0; }
@media (max-width: 850px) {
  /* Native links remain available if the navigation script cannot run. */
  html:not(.nav-ready) .navigation { height: auto; min-height: 96px; flex-wrap: wrap; }
  html:not(.nav-ready) .menu-toggle { display: none; }
  html:not(.nav-ready) .navlinks { display: flex; position: static; width: 100%; box-shadow: none; padding-inline: 0; }
  body { padding-bottom: calc(76px + env(safe-area-inset-bottom, 0px)); }
  html { scroll-padding-bottom: 90px; }
  .mobile-contact { display: flex; position: fixed; inset: auto 0 0; z-index: 8; padding: 10px var(--gutter) calc(10px + env(safe-area-inset-bottom, 0px)); background: var(--navy); border-top: 1px solid #33455b; }
  .mobile-contact[hidden] { display: none; }
  .mobile-contact .button { width: 100%; min-height: 54px; }
}
@media (max-width: 600px) {
  .eyebrow { font-size: .875rem; }
  .service-list p, .coverage-locations p, details p, .plain-list { font-size: 1rem; }
  .metric-description { font-size: .875rem; }
  .audience-action { max-width: 88px; }
  .text-link, .back-top { font-size: .875rem; }
  .construction-copy .button { max-width: 100%; }
}

/* Contact details verified against TEC's WhatsApp Business profile. */
.contact-action{padding:32px;border:1px solid #344c68;border-radius:12px;background:var(--navy-light);min-width:0}
.contact-action>p{font-size:17px;margin-bottom:24px}
.contact-action>.button{width:100%}
.contact-details{margin-top:26px}
.contact-detail{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:3px 16px;padding:17px 0;border-top:1px solid #344c68}
.contact-label{grid-column:1;color:#b0c5de;font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}
.contact-detail strong{grid-column:1;color:#fff;font-size:15px;font-weight:600;overflow-wrap:anywhere}
.contact-arrow{grid-column:2;grid-row:1/3;align-self:center;color:var(--bright);font-size:22px}
.contact-note{grid-column:1/-1;color:#b0c5de;font-size:12px}
a.contact-detail:hover strong{color:var(--bright);text-decoration:underline}
.contact-grid{grid-template-columns:1fr 1fr;gap:8%}
@media(max-width:850px){.contact-grid{gap:5%}.contact-action{padding:24px}}
@media(max-width:600px){.contact-grid{grid-template-columns:1fr;gap:32px}.contact-action{padding:24px 20px}.contact h2{font-size:clamp(40px,10.1vw,56px)}}

/* Client logos supplied and confirmed by TEC, kept as the original artwork. */
.clients { background:#d5f3fa; padding:46px 0 24px; overflow:hidden; }
.clients-heading { display:flex; align-items:baseline; justify-content:space-between; gap:24px; }
.clients-heading .eyebrow { margin:0; color:#32546c; }
.clients-heading h2 { font-size:clamp(25px,2.5vw,36px); letter-spacing:-.04em; }
.clients-window { overflow-x:auto; scrollbar-width:thin; margin-top:16px; }
.clients-track { display:flex; width:max-content; }
.clients-strip { display:block; width:max(1100px,100vw); max-width:none; height:180px; object-fit:cover; object-position:50% 46%; flex:none; }
.clients-strip[aria-hidden=true] { display:none; }
.motion-enabled .clients-strip[aria-hidden=true] { display:block; }
.motion-enabled .clients-track { animation:clients-pass 36s linear infinite; }
.motion-enabled .clients-window { overflow:hidden; }
.clients-window:hover .clients-track, .clients-window:focus-within .clients-track { animation-play-state:paused; }
@keyframes clients-pass { to { transform:translateX(-50%); } }
.construction-visual { margin:0; }
.construction-visual img { object-position:100% 50%; }
@media (min-width:851px) {
  .construction-visual { min-height:740px; }
}
@media (max-width:850px) {
  .clients-heading { display:block; }
  .clients-heading .eyebrow { margin-bottom:10px; }
  .clients { padding-top:32px; }
  .clients-strip { width:1100px; height:148px; }
}
@media (max-width:600px) {
  .construction-visual { height:470px; }
  .construction-visual img { object-position:50% 45%; }
}
html:not(.motion-enabled) { scroll-behavior:auto; }
html:not(.motion-enabled) *, html:not(.motion-enabled) *::before, html:not(.motion-enabled) *::after { animation:none !important; transition:none !important; }

/* Shared editorial rhythm and persistent, direct contact. */
:root { --header-height:92px; --section-space:clamp(96px,8vw,140px); }
html { scroll-padding-top:calc(var(--header-height) + 24px); }
body { font-family:Arial,Helvetica,sans-serif; }
h1,h2,h3,.eyebrow,.button,.audience-inner strong,.metric-number,.technology-brands li { font-family:Manrope,Arial,Helvetica,sans-serif; }
.section-space { padding-block:var(--section-space); }
.site-header { position:sticky; top:0; z-index:20; border-bottom:1px solid #ffffff12; }
.navigation { height:var(--header-height); gap:32px; }
.navigation .brand { margin-right:auto; }
.navlinks { gap:clamp(18px,2.5vw,36px); }
.header-contact { flex-shrink:0; }
.header-contact-short { display:none; }
.skip-link { z-index:30; }
.hero-visual { inset:0; }
.hero-visual img { object-position:65% center; }
.hero::after { background:linear-gradient(90deg,rgba(7,27,51,.98) 0%,rgba(7,27,51,.91) 32%,rgba(7,27,51,.62) 52%,rgba(7,27,51,.12) 78%); }
.hero-inner { min-height:clamp(620px,calc(100svh - var(--header-height)),900px); padding-block:72px; }
.hero-description { max-width:46ch; font-size:18px; }
.hero-note { max-width:60ch; }
.audience-inner { grid-template-columns:repeat(3,minmax(0,1fr)); padding-block:22px; }
.audience-inner > a, .audience-inner > a + a { padding:8px 28px; grid-template-columns:1fr auto; column-gap:12px; }
.audience-inner > a:first-child { padding-left:0; }
.audience-inner > a:last-child { padding-right:0; }
.audience-inner strong { font-size:clamp(17px,1.7vw,23px); }
.audience-inner > a > span:first-child { font-size:13px; margin-bottom:6px; }
.audience-action { grid-column:2; grid-row:1/3; font-size:24px; line-height:1; color:var(--blue); border:0; margin:0; }
.business-grid { gap:10%; }
.section-intro > p:not(.eyebrow), .service-list p { max-width:60ch; }
.construction { background:var(--navy); color:#fff; }
.construction-copy { padding-block:96px; }
.construction-copy .eyebrow { color:var(--bright); }
.construction-copy > p:not(.eyebrow) { color:#cfdaea; max-width:48ch; }
.construction .plain-list { color:#d9e3ef; }
.construction .plain-list li::before { background:var(--bright); }
.construction .service-art { stroke:#c3d4e7; }
.construction .service-art-line { stroke:#809fbe; }
.construction .art-detail { stroke:var(--bright); }
.construction :focus-visible { outline-color:#9bccff; }
.construction-visual.image-revealing::after { background:var(--navy); animation-duration:600ms; }
.construction-visual.image-revealing img { animation-duration:700ms; }
.technology-brands { padding-block:38px; background:#f3f6f9; border-bottom:1px solid #dce5ee; }
.technology-brands-inner { display:flex; align-items:center; gap:48px; }
.technology-brands p { font-size:14px; line-height:1.5; flex-shrink:0; }
.technology-brands ul { display:flex; justify-content:space-between; align-items:center; gap:32px; width:100%; list-style:none; margin:0; padding:0; }
.technology-brands li { font-size:clamp(21px,2.2vw,30px); font-weight:700; letter-spacing:-.04em; color:#29465f; }
.clients { padding-top:56px; padding-bottom:36px; }
.metrics { --metrics-space:96px; --arc-depth:clamp(100px,11vw,170px); }
.motion-enabled .hero-visual img { animation:hero-arrive 1800ms cubic-bezier(.22,.68,.15,1) both; animation-timeline:auto; }
@keyframes hero-arrive { from { transform:scale(1.04); } to { transform:scale(1); } }
@media (max-width:1100px) {
  .navigation { gap:24px; }
  .audience-inner > a, .audience-inner > a + a { padding-inline:24px; }
  .audience-inner > a:first-child { padding-left:0; }
  .audience-inner > a:last-child { padding-right:0; }
  .construction-copy { padding:72px 40px; }
  .technology-brands-inner { gap:32px; }
}
@media (max-width:850px) {
  :root { --header-height:80px; }
  .navigation { gap:20px; }
  .navigation .brand { order:1; }
  .header-contact { order:2; min-height:44px; padding:10px 16px; font-size:13px; }
  .header-contact-full { display:none; }
  .header-contact-short { display:inline; }
  .menu-toggle { order:3; min-width:44px; justify-content:center; padding:10px; }
  .menu-label { display:none; }
  .navlinks { order:4; }
  html:not(.nav-ready) .navigation { min-height:var(--header-height); }
  .hero-copy { width:90%; }
  .hero-inner { min-height:650px; }
  .hero::after { background:linear-gradient(90deg,rgba(7,27,51,.96),rgba(7,27,51,.80) 45%,rgba(7,27,51,.34)); }
  .audience-inner > a, .audience-inner > a + a { padding-inline:18px; }
  .audience-inner > a:first-child { padding-left:0; }
  .audience-inner > a:last-child { padding-right:0; }
  .audience-inner strong { font-size:18px; }
  .construction-copy { padding:64px 32px; }
  .technology-brands-inner { display:block; }
  .technology-brands p { margin-bottom:24px; }
  .technology-brands p br { display:none; }
  .technology-brands ul { gap:24px; }
  .metrics { --metrics-space:72px; --arc-depth:90px; }
}
@media (max-width:600px) {
  :root { --section-space:64px; }
  .navigation { gap:10px; }
  .header-contact { padding-inline:12px; }
  .hero { display:block; }
  .hero-visual { position:absolute; inset:0; height:auto; z-index:-2; }
  .hero-visual img { object-position:62% center; }
  .hero::after { display:block; background:linear-gradient(90deg,rgba(7,27,51,.96),rgba(7,27,51,.82) 55%,rgba(7,27,51,.60)); }
  .hero-inner { min-height:clamp(580px,calc(100svh - 156px),780px); padding-block:56px; }
  .hero-copy { width:100%; }
  .hero-description { font-size:17px; }
  .hero .eyebrow { max-width:30ch; }
  .audience-inner { grid-template-columns:1fr; padding-block:0; }
  .audience-inner > a, .audience-inner > a + a { padding:20px 0; border-left:0; }
  .audience-inner strong { font-size:20px; }
  .audience-action { font-size:25px; }
  .business-grid { gap:40px; }
  .construction-copy { padding:64px var(--gutter); }
  .construction-visual { height:470px; }
  .technology-brands { padding-block:32px; }
  .technology-brands ul { display:grid; grid-template-columns:1fr 1fr; gap:20px 32px; }
  .technology-brands li { font-size:25px; }
  .clients { padding-top:40px; padding-bottom:24px; }
  .metrics { --metrics-space:64px; --arc-depth:70px; }
}
@media (max-width:360px) {
  .navigation { gap:8px; }
  .navigation .brand { width:112px; }
  .navigation .logo { width:220px; }
  .header-contact { padding-inline:10px; font-size:12px; }
}

.products { background:#fff; }
.products-heading { display:grid; grid-template-columns:1.2fr 1fr; align-items:end; gap:10%; margin-bottom:40px; }
.products-heading > p { font-size:18px; max-width:42ch; }
.product-index { display:flex; flex-wrap:wrap; gap:10px; padding-bottom:40px; }
.product-index a { display:flex; align-items:center; gap:24px; padding:11px 17px; min-height:44px; border:1px solid #d5e0eb; border-radius:3px; font-size:14px; color:#34516d; }
.product-index a span { color:var(--blue); }
.product-index a:hover { background:#f2f7fc; border-color:#8eafd5; }
.product-row { display:grid; grid-template-columns:1.15fr 1fr; align-items:center; gap:clamp(40px,6vw,88px); padding-block:56px; border-top:1px solid var(--line); }
.product-row:nth-of-type(even) { grid-template-columns:1fr 1.15fr; }
.product-row:nth-of-type(even) .product-visual { order:2; }
.product-row:nth-of-type(even) .product-copy { order:1; }
.product-visual { margin:0; padding:24px; min-width:0; background:#edf5fc; border-radius:4px; }
.product-image-surface { display:grid; place-items:center; min-height:420px; background:#fff; padding:24px; border-radius:2px; }
.product-visual img { width:auto; height:auto; max-width:min(100%,440px); max-height:390px; object-fit:contain; }
.product-visual-idclass-bio img { width:100%; max-width:min(100%,440px); }
.product-visual-idface img { clip-path:inset(2px 0 0); }
.product-copy { min-width:0; }
.product-category { color:#28629e; font-size:13px; font-weight:700; letter-spacing:.075em; text-transform:uppercase; margin-bottom:18px; }
.product-copy h3 { font-size:clamp(31px,3.3vw,46px); font-weight:500; letter-spacing:-.045em; line-height:1.16; margin-bottom:24px; }
.product-copy h3 > span { display:block; color:#647a8f; font-size:17px; font-weight:600; letter-spacing:0; margin-bottom:7px; }
.product-description { font-size:17px; line-height:1.7; max-width:48ch; }
.product-features { list-style:none; padding:0; margin:24px 0 28px; }
.product-features li { position:relative; padding:7px 0 7px 17px; color:#34516d; font-size:15px; }
.product-features li::before { content:''; position:absolute; top:17px; left:0; width:5px; height:5px; background:var(--blue); }
.product-note { font-size:13px; line-height:1.6; margin-top:18px; max-width:48ch; }
.products-help { border-top:1px solid var(--line); padding-top:32px; display:flex; align-items:center; justify-content:space-between; gap:24px; }
.products-help p { font-size:20px; color:var(--text); }
.business { background:var(--neutral); }
@supports (animation-timeline:view()) {
  @media (min-width:851px) and (hover:hover) and (pointer:fine) {
    .motion-enabled .product-image-surface img { animation:product-drift linear both; animation-timeline:view(block); animation-range:entry 0% exit 100%; }
  }
}
@keyframes product-drift { from { transform:translateY(12px); } to { transform:translateY(-12px); } }
@media (max-width:1000px) {
  .product-row, .product-row:nth-of-type(even) { gap:40px; }
  .product-visual { padding:18px; }
  .product-image-surface { min-height:360px; padding:18px; }
  .product-visual img { max-height:325px; }
}
@media (max-width:700px) {
  .products-heading { grid-template-columns:1fr; gap:24px; margin-bottom:28px; }
  .products-heading > p { font-size:17px; }
  .product-index { display:grid; grid-template-columns:1fr 1fr; gap:8px; padding-bottom:28px; }
  .product-index a { justify-content:space-between; gap:12px; padding:11px 12px; font-size:13px; }
  .product-row, .product-row:nth-of-type(even) { grid-template-columns:1fr; gap:32px; padding-block:40px; }
  .product-row:nth-of-type(even) .product-visual, .product-row:nth-of-type(even) .product-copy { order:initial; }
  .product-visual { padding:16px; }
  .product-image-surface { min-height:340px; padding:18px; }
  .product-visual img { max-height:310px; }
  .product-copy h3 { font-size:36px; margin-bottom:20px; }
  .product-category { font-size:12px; margin-bottom:14px; }
  .product-features li { font-size:16px; }
  .product-note { font-size:14px; }
  .products-help { align-items:start; flex-direction:column; gap:8px; }
}

/* Requested final review: manual, full-size product carousel. */
.hero-audiences { display:grid; grid-template-columns:1fr 1fr; gap:16px; margin:28px 0; max-width:530px; }
.hero-audiences a { padding:12px 0; border-top:1px solid #ffffff55; color:#cfddeb; font-size:13px; line-height:1.5; }
.hero-audiences strong { display:block; color:#fff; font-weight:600; font-size:15px; }
.hero-audiences a:hover strong { color:#8bc8ff; }
.hero-audiences span { margin-left:5px; color:#8bc8ff; }
.product-carousel { min-width:0; }
.product-track { position:relative; display:flex; gap:24px; overflow-x:auto; overflow-y:hidden; scroll-snap-type:x mandatory; scrollbar-width:thin; scrollbar-color:#9db4ca #edf5fc; padding:6px 0 18px; }
.product-track:focus-visible { outline-offset:4px; }
.product-track .product-row { flex:0 0 100%; grid-template-columns:minmax(0,1.15fr) minmax(0,1fr); gap:clamp(32px,5vw,72px); scroll-snap-align:start; scroll-snap-stop:always; align-items:center; padding:0; border:0; min-width:0; }
.product-track .product-row .product-visual,.product-track .product-row .product-copy { order:initial; }
.product-track .product-visual { align-self:stretch; display:grid; align-items:center; }
.product-track .product-image-surface { height:100%; min-height:480px; border:0; box-shadow:none; }
.product-track .product-visual img { border:0; box-shadow:none; animation:none; }
.product-track .product-visual-idclass-bio img { clip-path:inset(0 0 3px 0); }
.product-track .product-visual::after,.product-track .product-image-surface::after { content:none; }
.product-track .product-copy { padding-block:24px; }
.product-track .product-cta { max-width:100%; text-align:center; }
.product-controls { display:flex; align-items:center; justify-content:space-between; gap:20px; padding:22px 0 28px; }
.product-controls[hidden] { display:none; }
.product-status { font-size:14px; color:#34516d; }
.product-navigation { display:flex; gap:14px; align-items:center; }
.product-navigation button { font:inherit; background:transparent; cursor:pointer; border:0; }
.product-navigation > button { width:44px; height:44px; border:1px solid #b9cbdd; border-radius:50%; color:var(--navy); font-size:22px; }
.product-navigation > button:hover:not(:disabled) { background:#edf5fc; border-color:var(--blue); }
.product-navigation > button:disabled { opacity:.3; cursor:default; }
.product-dots { display:flex; align-items:center; }
.product-dots button { width:28px; height:44px; display:grid; place-items:center; padding:0; }
.product-dots span { width:7px; height:7px; border-radius:50%; background:#b9cbdd; }
.product-dots [aria-current=true] span { width:9px; height:9px; background:var(--blue); }
.software-visual { min-height:480px; }
.software-wordmark { background:white; min-height:420px; height:100%; padding:40px; display:flex; justify-content:center; flex-direction:column; align-items:flex-start; color:#43627b; gap:32px; }
.software-badge { color:#21639f; border:1px solid #bdd3e7; border-radius:30px; padding:6px 14px; font-size:13px; }
.software-wordmark-name { font-family:Manrope,Arial,sans-serif; font-size:clamp(32px,3.5vw,48px); font-weight:600; letter-spacing:-.04em; line-height:1.15; color:var(--navy); }
.software-wordmark-name strong { color:var(--blue); font-weight:500; }
.software-detail-link { margin-right:24px; }
.secullum-highlight { background:#fff; padding-block:64px; border-bottom:1px solid var(--line); }
.secullum-highlight-inner { display:flex; align-items:center; justify-content:space-between; gap:48px; }
.secullum-highlight h2 { font-size:clamp(27px,3vw,38px); max-width:24ch; margin-bottom:18px; }
.secullum-highlight p:not(.eyebrow) { max-width:58ch; }
.secullum-highlight .button { flex-shrink:0; }
.metric-list-single { grid-template-columns:1fr; }
.metric-list-single .metric-description { max-width:35ch; }
.motion-enabled .metric.is-counting .metric-circle svg { animation:metric-turn 1600ms cubic-bezier(.2,.65,.3,1) both; }
@keyframes metric-turn { from { transform:rotate(-90deg); } to { transform:rotate(270deg); } }
.software-hero { background:var(--navy); color:#fff; }
.software-back { display:inline-block; color:#b6d8f6; margin-bottom:48px; font-size:14px; }
.software-hero .eyebrow { color:#8bc8ff; }
.software-hero h1 { font-size:clamp(40px,6vw,76px); line-height:1.12; letter-spacing:-.05em; }
.software-hero h1 span { color:#9ab7d1; }
.software-lead { font-size:20px; line-height:1.65; color:#d4e0ed; max-width:46ch; margin:28px 0 32px; }
.footer-legal { display:block; margin-top:10px; font-size:12px; line-height:1.7; }
@media(max-width:850px) { .product-track .product-row { gap:28px; } .product-track .product-image-surface { min-height:420px; } .motion-enabled .metric.is-counting .metric-circle svg { animation-duration:1200ms; } }
@media(max-width:700px) {
 .hero-audiences { gap:12px; }
 .hero-audiences strong { font-size:14px; }
 .product-track { gap:16px; padding-bottom:10px; }
 .product-track::after { content:''; flex:0 0 8px; }
 .product-track .product-row { flex-basis:calc(100% - 24px); grid-template-columns:minmax(0,1fr); align-content:start; gap:24px; }
 .product-track .product-copy { padding:0 4px 16px; }
 .product-track .product-visual { padding:14px; }
 .product-track .product-image-surface { min-height:310px; height:310px; padding:12px; }
 .product-track .product-visual img { max-height:285px; max-width:100%; }
 .product-copy h3 { font-size:32px; }
 .product-description { font-size:16px; }
 .product-features li { font-size:15px; }
 .product-controls { flex-direction:column; gap:10px; padding:18px 0 24px; }
 .product-navigation { gap:12px; }
 .software-visual { min-height:338px; }
 .software-wordmark { min-height:310px; height:310px; padding:24px; gap:24px; }
 .software-wordmark-name { font-size:34px; }
 .software-wordmark > span:last-child { font-size:14px; }
 .secullum-highlight-inner { flex-direction:column; align-items:flex-start; gap:28px; }
 .secullum-highlight { padding-block:48px; }
 .software-lead { font-size:18px; }
}
