/* Content integration only. The original main.css owns the layout and buttons. */
/* Presence uses the same constructed lines, type weight and blue-green hierarchy as the hero. */
.ts-global-presence { border-top: 1px solid #ffffff25; }
#global-presence .ts-map-heading { margin-bottom: 28px; }
#global-presence .ts-map-heading h2 { font-weight: 600; letter-spacing: -.055em; line-height: 1.05; }
.ts-presence-stage { display: grid; grid-template-columns: minmax(0, 1.65fr) minmax(260px, 1fr); border-top: 1px solid #ffffff25; border-bottom: 1px solid #ffffff25; align-items: stretch; }
#global-presence .ts-map-canvas { width: 100%; margin: 0; align-self: center; background: radial-gradient(ellipse at 35% 45%, #3746ff12, transparent 70%); padding: 16px 20px; }
.ts-map-caption { display: flex; justify-content: space-between; border-top: 1px solid #ffffff15; padding: 14px 0 0; color: #aeb2ba; font-size: 10px; letter-spacing: .07em; text-transform: uppercase; }
.ts-map-caption span:last-child { color: var(--brand-green); }
#global-presence .ts-map-detail { display: flex; flex-direction: column; align-items: flex-start; justify-content: center; gap: 14px; min-height: 345px; padding: 30px; border-left: 1px solid #ffffff25; background: #14171e; position: relative; }
#global-presence .ts-map-detail::before { content: ''; position: absolute; top: -1px; left: -1px; width: 45px; height: 3px; background: var(--brand-blue); }
.ts-office-eyebrow { display: flex; align-items: center; gap: 10px; color: #afb5c0; font-size: 11px; letter-spacing: .07em; text-transform: uppercase; }
#global-presence .ts-map-detail > strong { font-size: clamp(26px,3vw,40px); line-height: 1.15; font-weight: 600; letter-spacing: -.045em; }
#global-presence .ts-map-detail [data-map-cities] { font-size: 13px; color: #c7cbd3; line-height: 1.7; }
.ts-office-registration { width: 100%; padding-top: 18px; border-top: 1px solid #ffffff20; display: grid; gap: 5px; }
.ts-office-registration[hidden], [data-map-tax][hidden] { display: none; }
.ts-office-registration [data-map-entity] { font-size: 10px; letter-spacing: .02em; color: #aeb2ba; margin-bottom: 5px; }
.ts-office-registration [data-map-registration-label] { color: #bfc5d0; font-size: 11px; font-weight: 400; }
.ts-office-registration [data-map-registration-number] { font-size: 18px; font-weight: 500; color: var(--brand-green); font-variant-numeric: tabular-nums; letter-spacing: .04em; overflow-wrap: anywhere; }
.ts-office-registration [data-map-tax] { color: #c7cbd3; font-size: 11px; line-height: 1.5; }
#global-presence .ts-map-detail a { margin: 8px 0 0; font-size: 12px; color: #fff; }
#global-presence .ts-map-country.is-reached .ts-map-office-land { fill: #3746ff; }
#global-presence .ts-map-country.is-active .ts-map-office-land { fill: var(--brand-green); }
#global-presence .ts-map-connections [data-route="canada"] { stroke: var(--brand-blue); }
#global-presence .ts-map-locations { border-top: 0; }
#global-presence .ts-location-button { min-height: 90px; padding-top: 18px; padding-bottom: 18px; }
.ts-footer-registration { display: block; border-left: 2px solid var(--brand-blue); padding-left: 10px; margin-top: 12px; font-size: 11px; line-height: 1.7; color: #aeb2ba; }
/* Name and role have separate lines at every size, including long names. */
#people .ts-person-info { display: flex; flex-direction: column; gap: 12px; min-width: 0; }
#people .tp-award-year { display: block; min-width: 0; margin: 0; font-size: 12px; line-height: 1.4; letter-spacing: .08em; color: #aeb2ba; }
#people .tp-award-text { display: block; font-size: clamp(18px,2.1vw,28px); line-height: 1.25; overflow-wrap: anywhere; }
#people .tp-award-box-left { min-width: 0; }
#people .tp-award-box-right { gap: 20px; }
#people .tp-award-position { font-size: 14px; }
@media(max-width: 991px) {
  .ts-presence-stage { grid-template-columns: minmax(0,1fr) minmax(250px,.85fr); }
  #global-presence .ts-map-detail { padding: 24px; }
}
@media(max-width: 767px) {
  .ts-presence-stage { grid-template-columns: 1fr; }
  #global-presence .ts-map-canvas { padding: 18px 8px; }
  #global-presence .ts-map-detail { border-left: 0; border-top: 1px solid #ffffff25; min-height: 0; padding: 25px 20px; }
  #global-presence .ts-map-detail a { flex-basis: auto; }
  #people .ts-person-info { gap: 8px; }
  #people .tp-award-box-right { margin-top: 14px; }
}
section[id], [id="projects"], [id="services"] { scroll-margin-top: 100px; }
.ts-assembly-caption { display: flex; justify-content: space-between; gap: 16px; color: #a8adb7; font-size: 11px; letter-spacing: .06em; padding-bottom: 20px; border-bottom: 1px solid #ffffff25; }
.ts-assembly-caption span:first-child { color: var(--brand-green); }
.ts-brand-hero .ts-brand-disciplines { margin-top: 0; }
.ts-hero-evidence { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; font-size: 12px; color: #aeb2ba; margin-top: 30px; }
.ts-hero-evidence strong { color: #fff; font-weight: 600; }
.ts-hero-evidence > span { width: 1px; height: 14px; background: #ffffff35; margin: 0 8px; }
.ts-project-overview { border-top: 1px solid #ffffff25; margin-top: 18px; padding-top: 18px; }
.ts-project-overview p { color: #bfc2c9; font-size: 14px; line-height: 1.65; min-height: 70px; margin-bottom: 14px; }
.ts-project-enquiry { color: var(--brand-green); font-size: 12px; }
.ts-project-enquiry:hover { color: #fff; }
.ts-project-enquiry:focus-visible, .ts-email-direct:focus-visible { outline: 2px solid var(--brand-green); outline-offset: 6px; }
.ts-enquiry { border-top: 1px solid #ffffff25; padding: 100px 0; }
.ts-enquiry-layout { display: grid; grid-template-columns: 1fr 1fr; gap: 90px; }
.ts-enquiry h2 { font-size: clamp(40px,4.5vw,64px); line-height: 1.1; letter-spacing: -.055em; margin: 25px 0; font-weight: 600; }
.ts-enquiry h2 span { color: var(--brand-green); }
.ts-enquiry-intro p { max-width: 430px; color: #bfc2c9; font-size: 16px; line-height: 1.7; }
.ts-email-direct { display: inline-block; margin-top: 16px; font-size: 16px; color: #fff; }
.ts-enquiry-form label { display: block; color: #fff; font-size: 13px; margin-bottom: 10px; }
.ts-enquiry-form label span { color: #aeb2ba; }
.ts-enquiry-form input,.ts-enquiry-form select,.ts-enquiry-form textarea { display: block; width: 100%; background: #141619; color: #fff; border: 1px solid #ffffff35; border-radius: 0; padding: 14px 16px; margin-bottom: 22px; height: auto; font-family: inherit; font-size: 14px; line-height: 1.5; }
.ts-enquiry-form textarea { resize: vertical; min-height: 120px; }
.ts-enquiry-form input:focus,.ts-enquiry-form select:focus,.ts-enquiry-form textarea:focus { outline: 2px solid var(--brand-green); outline-offset: 2px; }
.ts-enquiry-form textarea::placeholder { color: #aeb2ba; }
.ts-enquiry-note { color: #aeb2ba; font-size: 12px; line-height: 1.6; margin: 18px 0 0; }
@media(max-width: 991px) { .ts-enquiry-layout { grid-template-columns: 1fr; gap: 38px; } .ts-enquiry { padding: 65px 0; } }
@media(prefers-reduced-motion: reduce) { .ts-assembly-piece { opacity: 1 !important; transform: none !important; } }
.ts-hero-canada { display: flex; align-items: center; gap: 12px; margin-bottom: 26px; }
.ts-hero-canada img { width: 32px; height: 16px; border-radius: 1px; }
.ts-hero-canada span { color: #a8adb7; font-size: 11px; letter-spacing: .06em; }
.ts-office-addresses address { font-style: normal; color: #c8c8ca; font-size: 14px; line-height: 1.6; margin: 0 0 20px; }
.ts-office-addresses strong { display: block; color: #fff; font-weight: 500; margin-bottom: 5px; }
.ts-hero-system { max-width: 560px; margin-left: auto; }
.ts-brand-sculpture { display: block; width: 100%; height: auto; overflow: visible; }
.ts-brand-symbol { transform-origin: 50% 42%; animation: ts-brand-hover 7s ease-in-out infinite; }
.ts-brand-glint { animation: ts-brand-light 8s linear infinite; }
.ts-brand-disciplines { display: flex; justify-content: space-between; gap: 18px; border-top: 1px solid #ffffff25; padding-top: 22px; margin-top: 34px; color: #c5c7cd; font-size: 11px; letter-spacing: .07em; text-transform: uppercase; }
.ts-brand-disciplines span::before { content: ''; display: inline-block; width: 4px; height: 4px; margin: 0 9px 2px 0; background: var(--brand-green); }
@keyframes ts-brand-hover { 0%,100% { transform: translateY(0) rotate(0); } 50% { transform: translateY(-13px) rotate(2deg); } }
@keyframes ts-brand-light { to { stroke-dashoffset: -670; } }
.ts-about-counters { border-bottom: 1px solid #ffffff20; }
.ts-about-counters > div { flex: 0 0 50%; width: 50%; }
.ts-about-counters > div:nth-child(n+3) { border-top: 1px solid #ffffff20; padding-top: 28px; }
.ts-project-grid { --bs-gutter-x: 30px; --bs-gutter-y: 42px; }
.ts-project-grid .tp-project-item { margin: 0; }
.ts-project-grid > div:nth-child(2) { padding-top: 0 !important; }
.ts-project-grid .tp-project-title { font-size: clamp(23px, 2vw, 30px); }
.ts-project-grid .tp-project-thumb { margin-bottom: 22px; }
.ts-project-grid .tp-project-thumb img { width: 100%; aspect-ratio: 1260 / 710; object-fit: cover; }
.ts-project-grid .tp-project-content { padding-top: 0; }
.ts-projects-intro { padding: 190px 0 80px; }
.ts-projects-intro h1 { font-size: clamp(48px, 6.5vw, 100px); line-height: 1.05; letter-spacing: -.065em; margin: 28px 0; }
.ts-projects-intro h1 span { color: var(--brand-green); }
.ts-projects-intro p { max-width: 540px; color: #c5c7cd; }
.ts-projects-page { padding: 30px 0 120px; }
@media (max-width: 1199px) { .ts-hero-system { margin: 35px auto 0; max-width: 520px; } }
@media (max-width: 767px) { .ts-hero-system { max-width: 400px; margin-top: 25px; } .ts-projects-intro { padding: 145px 0 45px; } .ts-about-counters .tp-about-funcact-item span { font-size: 54px; } }
.ts-hero .tp-hero-title { font-size: clamp(40px, 3.4vw, 68px); line-height: 1.04; letter-spacing: -.065em; word-spacing: .08em; }
.ts-hero.tp-hero-ptb { padding-top: 190px; padding-bottom: 95px; }
.ts-hero-line { display: block; white-space: nowrap; }
.ts-hero-partner { color: var(--brand-green); }
.ts-hero-row { --bs-gutter-x: 50px; }
.ts-hero-summary { max-width: 550px; margin-top: 35px; }
.ts-hero-summary p { font-size: 18px; line-height: 1.6; color: #c5c7cd; margin-bottom: 25px; }
.ts-hero-actions { margin-top: 10px; }
.ts-hero-proof { padding-top: 12px; }
.ts-hero-proof-label { display: flex; justify-content: space-between; padding-bottom: 16px; margin-bottom: 20px; border-bottom: 1px solid #ffffff40; font-size: 12px; text-transform: uppercase; letter-spacing: .07em; color: #b7bbc3; }
.ts-hero-project { display: block; }
.ts-hero-project > img { width: 100%; height: auto; display: block; }
.ts-hero-project-caption { display: flex; justify-content: space-between; align-items: center; gap: 20px; padding-top: 22px; }
.ts-hero-project-caption strong { display: block; font-size: 22px; font-weight: 500; color: #fff; }
.ts-hero-project-caption span { display: block; font-size: 12px; color: #a8adb7; margin-top: 5px; }
.ts-hero-project-caption svg { flex-shrink: 0; color: #fff; transition: transform .3s, color .3s; }
.ts-hero-project:hover .ts-hero-project-caption svg { color: var(--brand-green); transform: translate(3px,-3px); }
@media (min-width: 1200px) and (max-width: 1399px) {
  .ts-hero .tp-hero-title { font-size: 3.4vw; }
  .ts-hero-row { --bs-gutter-x: 45px; }
}
@media (max-width: 1199px) {
  .ts-hero.tp-hero-ptb { padding-top: 165px; padding-bottom: 75px; }
  .ts-hero .tp-hero-title { font-size: clamp(48px, 6.8vw, 78px); }
  .ts-hero-proof { max-width: 620px; margin-top: 55px; padding-top: 0; }
}
@media (max-width: 767px) {
  .ts-hero.tp-hero-ptb { padding-top: 145px; padding-bottom: 65px; }
  .ts-hero .tp-hero-title { font-size: clamp(38px, 8.5vw, 58px); letter-spacing: -.06em; line-height: 1.05; }
  .ts-hero-line { white-space: normal; }
  .ts-hero-line + .ts-hero-line { margin-top: 12px; }
  .ts-hero-summary { margin-top: 26px; }
  .ts-hero-summary p { font-size: 16px; }
  .ts-hero-row { --bs-gutter-x: 30px; }
  .ts-hero-proof { margin-top: 45px; }
}

/* Keep the desktop hover portrait, with an equivalent keyboard reveal. */
.ts-person-thumb { display: none; }
.ts-person-info { display: contents; }
#people .tp-award-reveal-img { background-position: center 25%; }
#people [data-person="um"] .tp-award-reveal-img { background-size: 120%; background-position: center 12%; }
#people [data-person="zu"] .tp-award-reveal-img { background-size: 125%; background-position: 60% 5%; }
#people .tp-award-item:focus-visible .tp-award-reveal-img {
  opacity: 1; top: 50% !important; left: auto !important; right: 25%;
  margin: 0; transform: translateY(-50%) scale(1) !important;
}
a:focus-visible, button:focus-visible { outline: 2px solid var(--brand-green); outline-offset: 5px; }
#people .tp-award-position, .tp-service-content p { color: #c5c7cd; }
.tp-project-category span { color: #d2d4db; }
@media (max-width: 767px), (hover: none) {
  #people .tp-award-box-left { display: flex; align-items: center; gap: 18px; }
  .ts-person-info { display: block; min-width: 0; }
  #people .ts-person-thumb { display: block; width: 88px; height: 104px; flex: 0 0 88px; object-fit: cover; object-position: center 25%; border-radius: 8px; }
  #people [data-person="um"] .ts-person-thumb { object-position: center 12%; }
  #people [data-person="zu"] .ts-person-thumb { object-position: 60% 5%; }
  #people .tp-award-reveal-img { display: none; }
  #people .tp-award-text { line-height: 1.2; }
  #people .tp-award-box-right { margin-left: 106px; }
  #people .tp-award-item { padding: 24px 18px; }
}

/* Respect the OS preference; the normal GSAP experience is unchanged. */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto !important; }
  *, *::before, *::after { animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; }
  #smooth-wrapper, #smooth-content { position: static !important; overflow: visible !important; height: auto !important; transform: none !important; }
  #magic-cursor, .cursor, #preloader, #loading, .tp-project-thumb canvas { display: none !important; }
  .tp_fade_anim, .tp_text_anim, .tp-char-animation, .tp-text-invert, .tp-text-bounce, .tp-project-thumb img { opacity: 1 !important; visibility: visible !important; transform: none !important; }
  .tp-service-panel, .tp-panel-pin, .tp-funfact-panel, .tp-work-item, .tp-work-wrapper { position: relative !important; transform: none !important; }
  .tp-funfact-panel-wrap { width: 100% !important; height: auto !important; display: block !important; }
  .tp-funfact-panel { height: auto !important; }
  .tp-text-slide-active .swiper-wrapper { transform: none !important; flex-wrap: wrap; justify-content: center; gap: 18px; }
  .tp-text-slide-active .swiper-slide { width: auto !important; }
  .tp-text-slide-active .swiper-slide:nth-child(n+7) { display: none; }
  .tp-text-slide-active { overflow: visible; }
}
.tp-project-thumb .tp--hover-img { position: relative; display: block; }
#about .tp-about-thumb img { height: 615px; object-fit: cover; }
.ts-browser-bar { height: 26px; display: flex; align-items: center; gap: 5px; background: #edf0f3; padding: 0 10px; border-radius: 7px 7px 0 0; }
.ts-browser-bar i { width: 5px; height: 5px; border-radius: 50%; background: #aeb4bf; }
.ts-browser-bar span { flex: 1; font: 9px Poppins,sans-serif; text-align: center; color: #515663; }
.ts-quote-initials { display: grid; place-items: center; width: 50px; height: 50px; border-radius: 50%; background: #25262c; color: #fff; font-size: 17px; }
#people .tp-award-text { font-size: clamp(20px, 2.5vw, 38px); }
#people .tp-award-year { min-width: 90px; }
#contact .tp-footer-widget-info p { color: #c8c8ca; font-size: 15px; line-height: 1.6; }
@media (max-width: 767px) {
  #people .tp-award-year { min-width: 60px; }
  #people .tp-award-text { white-space: normal; }
  #contact .tp-footer-widget-info > a { font-size: 18px; }
}

/* Project wallpaper shares the original banner sizing and parallax. */
.tp-banner-img { position: relative; background: #00dc92; }
.ts-project-logo-wallpaper {
  position: absolute;
  inset: -100px 0;
  background-image: url('../img/brand/project-logo-pattern.svg');
  background-repeat: repeat;
  background-size: clamp(680px, 85vw, 1400px) auto;
  background-position: center center;
}

/* A local SVG world map, using the site's existing brand palette. */
.ts-global-presence { padding: 90px 0 60px; background: var(--brand-ink); border-top: 1px solid #ffffff16; }
.ts-map-heading { display: flex; align-items: flex-end; justify-content: space-between; gap: 28px; margin-bottom: 32px; }
.ts-map-heading .tp-section-subtitle { display: inline-block; color: #b8bec9; margin-bottom: 18px; }
.ts-map-heading h2 { font-size: clamp(38px, 4vw, 68px); letter-spacing: -.055em; line-height: 1.1; margin: 0; color: #fff; }
.ts-map-heading p { font-size: 14px; color: #b8bec9; margin: 0 0 5px; }
.ts-map-canvas { max-width: 1100px; margin: 0 auto 25px; }
.ts-world-map { display: block; width: 100%; height: auto; overflow: visible; }
.ts-map-grid path { fill: none; stroke: #ffffff; stroke-opacity: .06; stroke-width: .6; }
.ts-map-land path { fill: #1a1b1e; stroke: #0e0f11; stroke-width: .65; stroke-linejoin: round; }
.ts-map-connections path { fill: none; stroke: var(--brand-green); stroke-width: 1; stroke-dasharray: 4 6; opacity: .4; }
.ts-map-country { cursor: pointer; outline: none; }
.ts-map-office-land { fill: var(--brand-blue); stroke: #0e0f11; stroke-width: .8; transition: fill .25s ease; }
.ts-map-country.is-active .ts-map-office-land { fill: var(--brand-green); }
.ts-map-hit { fill: transparent; stroke: none; }
.ts-map-halo { fill: var(--brand-blue); fill-opacity: .16; stroke: #8290ff; stroke-width: .8; }
.ts-map-pin { fill: #fff; stroke: var(--brand-blue); stroke-width: 2.5; }
.ts-map-label { fill: #e8edf5; font-size: 14px; font-family: 'Poppins', sans-serif; font-weight: 500; paint-order: stroke; stroke: var(--brand-ink); stroke-width: 4px; stroke-linejoin: round; pointer-events: none; }
.ts-map-country.is-active .ts-map-halo { fill: var(--brand-green); stroke: var(--brand-green); }
.ts-map-country.is-active .ts-map-pin { fill: var(--brand-green); stroke: var(--brand-ink); }
.ts-map-country.is-active .ts-map-label { fill: var(--brand-green); }
.ts-map-country.is-reached .ts-map-office-land { fill: var(--brand-green); }
.ts-map-country.is-reached .ts-map-halo { fill: var(--brand-green); stroke: var(--brand-green); }
.ts-map-country.is-reached .ts-map-pin { fill: var(--brand-green); stroke: var(--brand-ink); }
.ts-map-country.is-reached .ts-map-label { fill: var(--brand-green); }
/* Fit the complete story below the fixed navigation during its short pin. */
.ts-global-presence.has-map-story { padding: 32px 0 20px; }
.has-map-story .ts-map-heading { margin-bottom: 16px; }
.has-map-story .ts-map-canvas { width: min(100%, calc((100vh - 460px) * 1.96)); margin-bottom: 16px; }
.ts-map-country:focus-visible .ts-map-office-land { stroke: #fff; stroke-width: 1.5; }
.ts-map-country:focus-visible .ts-map-halo { stroke: #fff; stroke-width: 2.5; }
.ts-map-locations { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border-top: 1px solid #ffffff25; border-bottom: 1px solid #ffffff25; }
.ts-location-button { display: flex; align-items: center; text-align: left; gap: 20px; min-height: 110px; padding: 25px 24px; border: 0; border-radius: 0; color: #fff; background: transparent; cursor: pointer; position: relative; font-family: 'Poppins', sans-serif; }
.ts-location-button + .ts-location-button { border-left: 1px solid #ffffff25; }
.ts-location-button::before { content: ''; position: absolute; height: 2px; left: 0; right: 0; top: -1px; background: var(--brand-green); transform: scaleX(0); transform-origin: left; transition: transform .25s ease; }
.ts-location-button.is-active::before { transform: scaleX(1); }
.ts-location-button:hover, .ts-location-button.is-active { background: #00dc9207; }
.ts-location-index { color: #8b94a3; font-size: 12px; align-self: flex-start; margin-top: 6px; }
.ts-location-button strong { display: block; font-size: 25px; font-weight: 500; line-height: 1.2; margin-bottom: 9px; color: inherit; }
.ts-location-button > span:nth-child(2) > span { font-size: 13px; color: #b8bec9; }
.ts-location-arrow { margin-left: auto; font-size: 25px; color: #b8bec9; }
.ts-location-button.is-active strong, .ts-location-button.is-active .ts-location-arrow { color: var(--brand-green); }
.ts-map-detail { min-height: 72px; display: flex; align-items: center; gap: 15px; padding: 20px 0; color: #b8bec9; font-size: 14px; }
.ts-map-detail strong { font-weight: 500; color: #fff; }
.ts-location-dot { width: 6px; height: 6px; background: var(--brand-green); border-radius: 50%; flex: 0 0 6px; }
.ts-map-detail a { margin-left: auto; color: #fff; }
.ts-map-detail a span { margin-left: 18px; color: var(--brand-green); }
.ts-map-detail a:hover { color: var(--brand-green); }
@media (max-width: 767px) {
  .ts-global-presence { padding: 65px 0 45px; }
  .ts-map-heading { display: block; margin-bottom: 20px; }
  .ts-map-heading p { margin-top: 18px; }
  .ts-map-canvas { margin: 15px -8px 22px; }
  .ts-map-label { font-size: 22px; }
  .ts-map-locations { grid-template-columns: 1fr; }
  .ts-location-button { min-height: 88px; padding: 20px 12px; gap: 16px; }
  .ts-location-button + .ts-location-button { border-left: 0; border-top: 1px solid #ffffff18; }
  .ts-location-button strong { font-size: 22px; margin-bottom: 5px; }
  .ts-map-detail { flex-wrap: wrap; gap: 10px; }
  .ts-map-detail a { flex-basis: 100%; margin: 8px 0 0 16px; }
}

/* The map follows the same editorial type, dividers and restrained colors as People. */
.ts-map-heading { align-items: center; }
.ts-map-heading h2 { font-size: clamp(38px, 4.5vw, 64px); text-transform: uppercase; line-height: 1; }
.ts-map-heading h2 span { color: var(--brand-green); }
.ts-map-heading .tp-section-subtitle { color: #fff; }
.ts-map-heading p { line-height: 1.7; }
.ts-map-grid path { stroke-opacity: .025; }
.ts-map-connections path { stroke-width: 1.5; }
.ts-location-button:hover, .ts-location-button.is-active { background: transparent; }
.ts-location-button { padding-left: 0; padding-right: 24px; }
.ts-location-button + .ts-location-button { border-left: 0; padding-left: 24px; }
.ts-location-button strong { letter-spacing: -.045em; }
.has-map-story .ts-map-heading h2 { font-size: clamp(36px, 3.5vw, 52px); }
.has-map-story .ts-map-heading .tp-section-subtitle { margin-bottom: 12px; }
.has-map-story .ts-map-canvas { width: min(100%, calc((100vh - 520px) * 1.96)); }
.ts-map-detail [data-map-cities] { line-height: 1.6; }
@media (min-width: 768px) { .ts-map-detail { display: grid; grid-template-columns: 6px 80px minmax(0, 1fr) auto; } .ts-map-detail a { white-space: nowrap; } }
@media (max-width: 767px) {
  .ts-location-button + .ts-location-button { padding-left: 0; }
  .ts-map-heading h2 { font-size: 38px; }
  .ts-map-heading p { font-size: 13px; }
}
/* Compact mobile services, progressively enhanced to scroll stacking. */
@media (max-width: 767px) {
  #services .tp-service-item { padding: 0 15px; border-color: #ffffff26; }
  #services .tp-service-item > .row { display: grid; grid-template-columns: 24px minmax(0, 1fr); column-gap: 12px; margin: 0; }
  #services .tp-service-item > .row > div { width: auto; padding: 0; }
  #services .tp-service-item > .row > div:first-child { grid-column: 1; grid-row: 1; padding-top: 20px; }
  #services .tp-service-item > .row > div:nth-child(2) { grid-column: 2; min-width: 0; }
  #services .tp-service-item > .row > div:nth-child(3) { grid-column: 2; }
  #services .tp-service-number span { font-size: 12px; }
  #services .tp-service-content .tp-section-title { font-size: clamp(18px, 5vw, 24px); line-height: 1.25; letter-spacing: -.7px; margin: 0; }
  #services .tp-service-content .tp-section-title a { display: block; padding: 16px 0; color: #fff; background: none; -webkit-text-fill-color: #fff; }
  #services .tp-service-content p { font-size: 13px; line-height: 1.7; margin: 0 0 18px; padding: 0; }
  #services .tp-service-content .tp-service-btn { margin-bottom: 18px; }
  #services .tp-service-category { margin: 0 0 14px; display: flex; flex-wrap: wrap; gap: 5px; }
  #services .tp-service-category span { margin: 0; padding: 6px 8px; font-size: 9px; border-color: #ffffff30; }
  #services .tp-service-thumb { padding-bottom: 20px; }
  #services .tp-service-thumb img { display: block; width: 100%; height: auto; aspect-ratio: 1.5; object-fit: contain; background: #15171b; opacity: 1 !important; visibility: visible !important; transform: none !important; }
  #services .ts-mobile-service-stage { position: relative; }
  #services .ts-mobile-service-stage .tp-service-item { position: absolute; top: 0; left: 0; width: 100%; background: #0e0f11; }
  #services .tp-service-content .tp-section-title { font-size: clamp(17px, 4.7vw, 22px); }
  #projects .ts-mobile-project-stack { display: block; }
  #projects .ts-mobile-project-stack > .col-lg-4 { position: relative; width: 100%; padding-bottom: 30vh; }
  #projects .ts-mobile-project-stack > .col-lg-4:last-child { padding-bottom: 0; }
  #projects .ts-mobile-project-stack .tp-project-item { background: #14171b; padding: 14px; margin-bottom: 0; border-top: 1px solid #ffffff26; }
  #projects .ts-mobile-project-stack .tp-project-title { font-size: 24px; }
}
