/* CIS v2.3: shared tokens and scoped components. */
:root {
  --navy:#102e46; --navy-deep:#0c2336; --ink:#182f40; --muted:#52616c;
  --paper:#f7f9fb; --slate:#e9eef0; --line:#ccd4d8; --accent:#21628f;
  --content-width:1280px; --text-width:750px; --gutter:clamp(20px,4vw,48px);
  --section-space:clamp(56px,6vw,88px); --heading-space:36px; --grid-gap:28px;
  --card-padding:24px; --header-height:102px; --button-height:48px;
  --font:Arial,Helvetica,sans-serif;
}
* { box-sizing:border-box; }
html { scroll-padding-top:24px; }
body { margin:0; background:var(--paper); color:var(--ink); font:16px/1.65 var(--font); -webkit-font-smoothing:antialiased; }
a { color:inherit; text-decoration-thickness:1px; text-underline-offset:4px; }
button,input,textarea,select { font:inherit; }
button,a,summary { -webkit-tap-highlight-color:transparent; touch-action:manipulation; }
button,summary { cursor:pointer; }
img { display:block; max-width:100%; height:auto; }
figure { margin:0; }
h1,h2,h3,p { margin-top:0; }
h1,h2,h3 { line-height:1.12; font-weight:600; letter-spacing:-.035em; overflow-wrap:break-word; }
h1 { font-size:clamp(2.35rem,4.4vw,4.4rem); margin-bottom:28px; }
h2 { font-size:clamp(1.9rem,3.2vw,3.1rem); margin-bottom:24px; }
h3 { font-size:1.4rem; margin-bottom:14px; }
p { margin-bottom:20px; }
ul { padding-left:22px; }
li+li { margin-top:8px; }
[hidden] { display:none!important; }
:focus-visible { outline:3px solid #2875aa; outline-offset:5px; }
.dark-band :focus-visible,.v2-cta :focus-visible,.hero-v2 :focus-visible,.contact-primary :focus-visible { outline-color:#fff; }
main:focus { outline:none; }
.wrap,.v2-container { width:min(var(--content-width),calc(100% - var(--gutter)*2)); margin-inline:auto; }
.section,.v2-section { padding-block:var(--section-space); }
.section.top { padding-top:40px; }
.eyebrow { color:#526575; font-size:.75rem; font-weight:700; letter-spacing:.12em; text-transform:uppercase; line-height:1.5; margin-bottom:18px; }
.lead { font-size:clamp(1.1rem,1.5vw,1.25rem); line-height:1.65; max-width:var(--text-width); }
.index { color:#526575; font-size:.75rem; letter-spacing:.08em; }
.slate { background:var(--slate); }
.email { overflow-wrap:anywhere; }
.button { display:inline-flex; align-items:center; justify-content:center; padding:14px 21px; background:var(--navy); color:#fff; border:1px solid var(--navy); border-radius:6px; font-size:.875rem; font-weight:700; line-height:1.5; text-decoration:none; min-height:var(--button-height); transition:background-color .16s ease,border-color .16s ease,box-shadow .16s ease; }
.button:hover { background:#244b67; border-color:#244b67; }
.button.light { background:#fff; border-color:#fff; color:var(--navy); }
.button.light:hover { background:#e5eff7; }
.text-link { display:inline-flex; align-items:center; font-size:.94rem; font-weight:700; text-decoration:none; border-bottom:1px solid currentColor; padding:9px 0; min-height:44px; }
.text-link:hover { color:#18557f; }
.link-list { display:flex; align-items:flex-start; flex-wrap:wrap; gap:12px 24px; }
.skip-link { position:absolute; top:-90px; left:12px; z-index:100; padding:12px; background:#fff; }
.skip-link:focus { top:10px; }
.v2-sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; border:0; }

/* Header and service directory. */
.utility { background:var(--navy-deep); color:#dce5ec; font-size:.75rem; padding:8px 0; }
.utility .wrap { display:flex; justify-content:flex-end; align-items:center; gap:10px 26px; }
.utility .wrap>span { margin-right:auto; }
.utility a { text-decoration:none; }
.utility a:hover { text-decoration:underline; }
.utility a[href^="tel:"] { color:#fff; font-weight:700; white-space:nowrap; }
.site-header { background:#fff; position:relative; z-index:10; }
.header-inner { position:relative; display:flex; align-items:center; justify-content:space-between; gap:24px; min-height:var(--header-height); }
.brand { display:block; flex-shrink:0; width:260px; line-height:0; }
.brand img { width:100%; height:auto; }
.main-nav { display:flex; align-items:center; gap:22px; }
.main-nav>a,.nav-services>summary { display:inline-flex; align-items:center; justify-content:center; min-height:44px; margin:0; padding:0; font-size:.875rem; font-weight:600; line-height:1; text-decoration:none; }
.main-nav > a.button { flex-shrink:0; min-height:46px; padding:11px 18px; font-size:.84rem; font-weight:700; white-space:nowrap; border-radius:6px; background:var(--navy); color:#fff; border-color:var(--navy); }
.main-nav > a.button:hover { color:#fff; background:#244b67; border-color:#244b67; text-decoration:none; box-shadow:0 3px 12px rgba(16,46,70,.16); }
.main-nav>a:not(.button):hover,.main-nav [aria-current=page]:not(.button),.nav-services .is-current { color:#18557f; text-decoration:underline; text-underline-offset:8px; }
.menu-toggle { display:none; }
.nav-services { position:static; margin-right:5px; }
.nav-services>summary { gap:8px; padding:0 12px; cursor:pointer; list-style:none; white-space:nowrap; border-radius:6px; transition:background-color .16s ease,color .16s ease; }
.nav-services>summary::-webkit-details-marker { display:none; }
.nav-services>summary::after { content:'\25BE'; font-size:.72rem; transition:transform .16s ease; }
.nav-services>summary:hover,.nav-services>summary.is-current,.nav-services[open]>summary { background:#eef4f7; color:var(--navy); text-decoration:none; }
.nav-services[open]>summary::after { transform:rotate(180deg); }
.nav-mega { display:none; position:absolute; z-index:30; top:100%; left:auto; right:0; width:min(660px,100%); max-height:min(72vh,540px); overflow-y:auto; grid-template-columns:repeat(2,minmax(0,1fr)); column-gap:14px; background:#fff; border:1px solid var(--line); border-radius:0 0 10px 10px; box-shadow:0 18px 34px rgba(11,31,46,.18); padding:16px 22px 20px; }
.nav-services[open] .nav-mega { display:grid; }
.nav-mega a { display:flex; gap:12px; align-items:center; padding:14px 10px; min-height:60px; text-decoration:none; border-bottom:1px solid #e3e8eb; line-height:1.45; border-radius:4px; }
.nav-mega a:hover,.nav-mega a[aria-current=page] { background:#eef4f7; color:#18557f; text-decoration:none; }
.nav-mega a span { font-size:.72rem; color:#526575; }
.nav-mega .nav-all { grid-column:1/-1; min-height:48px; font-weight:700; color:#18557f; border-bottom:2px solid var(--navy); border-radius:0; }

/* Timelapse and complete poster fallback. */
.hero-v2 { position:relative; isolation:isolate; display:flex; align-items:flex-end; min-height:620px; height:clamp(620px,82svh,880px); overflow:hidden; background:var(--navy) url('/assets/images/cis-field-timelapse-poster.webp') center/cover no-repeat; color:#fff; }
.hero-v2-video,.hero-v2-scrim { position:absolute; inset:0; width:100%; height:100%; }
.hero-v2-video { z-index:0; opacity:1; object-fit:cover; object-position:center; pointer-events:none; }
.hero-v2-video.is-loaded { opacity:1; }
.hero-v2-scrim { z-index:1; pointer-events:none; background:radial-gradient(ellipse at 18% 78%,rgba(7,25,39,.72) 0%,rgba(7,25,39,.46) 34%,rgba(7,25,39,.18) 60%,rgba(7,25,39,.04) 78%,transparent 92%),linear-gradient(90deg,rgba(7,25,39,.28) 0%,rgba(7,25,39,.12) 48%,rgba(7,25,39,.03) 78%,transparent 100%); }
.hero-v2-content { position:relative; z-index:2; width:min(var(--content-width),calc(100% - var(--gutter)*2)); margin-inline:auto; padding:70px 0 92px; }
.hero-v2 h1 { max-width:1100px; font-size:clamp(3.2rem,5.2vw,5.4rem); line-height:1; letter-spacing:-.055em; margin-bottom:26px; }
.hero-v2 h1 span { color:#e0eaf0; }
.hero-v2-rotator { display:grid; align-items:center; min-height:3em; max-width:760px; margin-bottom:20px; }
.hero-v2-message { grid-area:1/1; font-size:clamp(1.15rem,1.6vw,1.55rem); font-weight:700; line-height:1.4; opacity:0; transform:translateY(6px); transition:opacity .4s ease,transform .4s ease; pointer-events:none; }
.hero-v2-message.is-active { opacity:1; transform:translateY(0); }
.hero-v2-actions { display:flex; align-items:center; flex-wrap:wrap; gap:24px; }
.hero-v2-work-link { display:inline-flex; align-items:center; min-height:48px; color:#fff; font-weight:700; text-decoration:none; border-bottom:1px solid #dce5ec; }
.video-control-v2 { position:absolute; z-index:3; right:var(--gutter); bottom:20px; background:rgba(6,25,39,.88); border:1px solid #a6bbc9; color:#fff; min-height:44px; padding:9px 15px; font-size:.8rem; }

/* Editorial rhythm and homepage components. */
.split-copy,.about-split,.solution-detail { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:clamp(32px,6vw,80px); }
.split-copy>p { margin-bottom:0; }
.section-heading,.v2-section-heading { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,.72fr); align-items:end; gap:50px; margin-bottom:var(--heading-space); }
.section-heading h2,.v2-section-heading h2 { margin-bottom:0; }
.section-heading>p,.v2-section-heading>p { color:var(--muted); max-width:520px; margin-bottom:0; }
.positioning { background:#fff; }
/* Home-only spacing: avoid excessive vertical gaps without altering interior pages. */
.homepage .hero-v2 { min-height:540px; height:clamp(540px,68svh,740px); }
.homepage .section,.homepage .v2-section { padding-block:clamp(48px,4vw,70px); }
.homepage .v2-cta { padding-block:clamp(54px,4.5vw,78px); }
.v2-capabilities { background:#eaf0f3; }
.v2-capability-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:28px; }
.v2-capability { display:flex; flex-direction:column; border-top:2px solid var(--accent); color:var(--ink); text-decoration:none; padding:22px 0 10px; min-width:0; }
.v2-capability-number { color:var(--muted); font-size:.75rem; }
.v2-capability h3 { font-size:1.7rem; margin:16px 0 12px; }
.v2-capability p { color:var(--muted); font-size:.94rem; margin-bottom:16px; }
.v2-card-link { font-size:.87rem; font-weight:700; color:#174e73; text-decoration:underline; text-underline-offset:4px; }
.v2-capability .v2-card-link { margin-top:auto; }
.v2-capability:hover h3 { text-decoration:underline; text-underline-offset:4px; }
.v2-section-end { margin-top:30px; }
.v2-project-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:var(--grid-gap); }
.v2-project-card { display:flex; flex-direction:column; color:var(--ink); text-decoration:none; border-bottom:1px solid var(--line); padding-bottom:20px; }
.v2-project-card img { width:100%; aspect-ratio:4/3; object-fit:cover; margin-bottom:20px; }
/* The control-panel photograph is portrait. Fit the whole panel in landscape card slots. */
.v2-project-card img.panel-preview,.work-image img.panel-preview { object-fit:contain; object-position:center; background:#e5ebee; padding:12px; }
.v2-card-label { color:var(--muted); font-size:.7rem; font-weight:700; letter-spacing:.08em; text-transform:uppercase; }
.v2-project-card h3 { font-size:1.3rem; margin:10px 0 12px; }
.v2-project-card:hover h3 { text-decoration:underline; }
.v2-project-card .v2-card-link { margin-top:auto; }
.integration-story { background:#fff; }
.system-flow { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:22px; padding:0; margin:30px 0; list-style:none; }
.system-flow li { margin:0; position:relative; padding-top:18px; border-top:2px solid var(--accent); }
.system-flow li:not(:last-child)::after { content:'\2192'; position:absolute; right:-19px; top:42px; color:var(--accent); }
.system-flow strong { display:block; font-size:1rem; line-height:1.4; margin:16px 0 8px; }
.system-flow li>span:last-child { font-size:.85rem; color:var(--muted); }
.flow-caption { font-size:.9rem; color:var(--muted); }
.dark-band,.v2-cta { background:var(--navy); color:#fff; }
.dark-band .eyebrow,.v2-cta .eyebrow { color:#c6dce8; }
.dark-band p:not(.eyebrow),.v2-cta p:not(.eyebrow) { color:#dbe5eb; }
.dark-band .text-link:hover { color:#c6dce8; }
/* Homepage: soften consecutive navy / stark-white bands; keep the final CTA dark. */
.home-applications {
  background:linear-gradient(180deg,#e8eef2 0%,#f0f4f6 100%);
  color:var(--ink);
  border-top:1px solid #d8e1e6;
}
.home-applications .eyebrow { color:#465e70; }
.home-applications p:not(.eyebrow) { color:var(--muted); }
.home-applications .text-link:hover { color:#18557f; }
.home-applications :focus-visible { outline-color:#2875aa; }
.v2-cta { padding-block:var(--section-space); }
.v2-cta h2 { font-size:clamp(2.4rem,4.4vw,4rem); max-width:950px; }
.v2-cta p:not(.eyebrow) { max-width:680px; }

/* Service, application and solution detail pages. */
.breadcrumb { display:flex; align-items:center; flex-wrap:wrap; gap:8px 12px; padding-top:28px; font-size:.8rem; color:var(--muted); }
.breadcrumb a { display:inline-flex; align-items:center; min-height:32px; }
.intro { max-width:1040px; margin-bottom:48px; }
.intro .lead { color:var(--muted); }
.taxonomy-nav { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; margin:0 0 58px; }
.taxonomy-card { display:flex; flex-direction:column; min-height:168px; padding:22px 24px; background:#fff; border:1px solid var(--line); border-top:3px solid #9aabb6; color:var(--ink); text-decoration:none; }
.taxonomy-card:hover { border-top-color:var(--accent); }
.taxonomy-card.is-current { background:#edf4f8; border-top-color:var(--accent); }
.taxonomy-kicker { color:#526575; font-size:.72rem; font-weight:700; letter-spacing:.11em; text-transform:uppercase; }
.taxonomy-card strong { display:block; margin:14px 0 9px; font-size:1.35rem; line-height:1.15; letter-spacing:-.025em; }
.taxonomy-card>span:last-child { color:var(--muted); font-size:.92rem; line-height:1.5; }
.taxonomy-heading { margin-bottom:24px; }
.taxonomy-heading h2 { font-size:clamp(1.9rem,2.8vw,2.7rem); }
.editorial-section { border-top:1px solid var(--line); padding-top:48px; margin-top:56px; }
.service-list { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; }
.service-list>a { display:grid; grid-template-columns:28px minmax(0,1fr); gap:18px; min-height:188px; padding:26px 24px; background:#fff; border:1px solid var(--line); border-top:3px solid var(--accent); text-decoration:none; }
.service-list h2 { font-size:1.5rem; margin-bottom:12px; }
.service-list p { color:var(--muted); margin:0; max-width:520px; }
.service-list>a:hover h2 { text-decoration:underline; }
.capabilities { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:32px 60px; margin-block:40px 56px; }
.capabilities article { border-top:1px solid var(--line); padding-top:24px; }
.capabilities h2 { font-size:1.45rem; margin-bottom:15px; }
.capabilities p { margin-bottom:0; }
.planning { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:50px; background:var(--slate); padding:40px; margin-top:44px; }
.planning h2 { font-size:2rem; }
.planning ul { margin:0; }
.note { border-left:3px solid var(--accent); padding:18px 22px; background:#edf3f8; margin-top:30px; font-size:.94rem; }
.faq { margin-top:56px; }
.faq>h2 { font-size:1.8rem; }
.faq details { border-top:1px solid var(--line); padding:14px 0; }
.faq summary { font-weight:600; min-height:44px; display:list-item; padding-block:8px; }
.faq details p { margin:16px 0 0; max-width:860px; }
.related { border-top:1px solid var(--line); margin-top:48px; padding-top:28px; display:flex; flex-wrap:wrap; gap:12px 28px; }
.related h2 { width:100%; font-size:1.4rem; margin-bottom:4px; }
.related-services { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); column-gap:36px; margin-top:40px; }
.related-services>a { padding:22px 0; border-top:1px solid var(--line); text-decoration:none; }
.related-services strong,.related-services span { display:block; }
.related-services strong { font-size:1.1rem; margin-bottom:6px; }
.related-services span { color:var(--muted); font-size:.92rem; }
.related-services>a:hover strong { text-decoration:underline; }
.application-directory { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); column-gap:56px; }
.application-directory>a { padding:26px 0; border-top:1px solid var(--line); text-decoration:none; }
.application-directory h3 { font-size:1.3rem; }
.application-directory p { color:var(--muted); margin-bottom:12px; }
.application-directory a>span { font-size:.9rem; font-weight:700; color:#174e73; text-decoration:underline; }
.application-directory a:hover h3 { text-decoration:underline; }
.solution-index { display:flex; flex-wrap:wrap; gap:10px 28px; }
.solution-index a { font-size:.9rem; }
.solution-directory { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:18px; margin:0 0 20px; }
.solution-directory>a { display:flex; flex-direction:column; min-height:218px; padding:26px; background:var(--navy); color:#fff; text-decoration:none; }
.solution-directory>a:hover { background:#244b67; }
.solution-directory .index { color:#c6dce8; }
.solution-directory strong { display:block; margin:22px 0 12px; font-size:1.35rem; line-height:1.18; letter-spacing:-.025em; }
.solution-directory>a>span:last-child { color:#dbe5eb; font-size:.92rem; line-height:1.55; }
.solution-detail h2 { font-size:clamp(1.8rem,2.8vw,2.6rem); }
.solution-detail h3 { font-size:1.2rem; }
.system-path { padding-left:18px; border-left:3px solid var(--accent); color:var(--muted); }
.solution-detail .link-list { margin-top:28px; gap:8px 20px; }
.solution-detail .link-list a { font-size:.86rem; }

/* Explicit image behavior prevents cross-component crop effects. */
.zoom-photo { display:block; position:relative; background:#e5ebee; text-decoration:none; }
.enlarge { position:absolute; bottom:14px; right:14px; background:var(--navy); color:#fff; padding:7px 12px; font-size:.8rem; }
.group-photo,.field-work,.example-photo { margin:28px 0 44px; background:#e5ebee; }
.group-photo img,.field-work img,.example-photo img { width:100%; height:auto; max-height:560px; object-fit:contain; }
.service-banner img { max-height:440px; }
.equipment-photo { background:#fff; }
.equipment-photo img { object-fit:contain; padding:30px; }
.service-photo { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:50px; align-items:center; margin-bottom:48px; }
.service-photo>.zoom-photo { height:500px; }
.service-photo img { height:100%; width:100%; object-fit:cover; }
.project-gallery { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:24px; }
.project-gallery:has(>:only-child) { grid-template-columns:1fr; }
.project-detail-photo { background:#e5ebee; }
.project-detail-photo img { width:100%; height:auto; max-height:620px; object-fit:contain; }
/* The actual panel asset is 3:4 portrait, not the former 1145:1314 crop frame. */
.panel-crop { aspect-ratio:3 / 4; overflow:hidden; }
.group-photo.panel-crop,.example-photo.panel-crop { width:min(100%,560px); margin-inline:auto; }
.project-detail-photo.panel-crop { width:min(100%,700px); margin-inline:auto; }
.panel-crop > .zoom-photo,
.panel-crop > img { display:block; width:100%; height:100%; }
.panel-crop img { width:100%; height:100% !important; max-height:none !important; object-fit:contain !important; object-position:center !important; }

.case-story { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:60px; margin-top:48px; }
.case-story h2 { font-size:1.5rem; margin-top:32px; margin-bottom:16px; }
.case-story h2:first-child { margin-top:0; }
.work-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:40px 28px; }
.work-card { min-width:0; border-bottom:1px solid var(--line); }
.work-image { display:block; background:#dfe7eb; }
.work-image img { width:100%; aspect-ratio:4/3; object-fit:cover; }
.work-copy { padding:var(--card-padding) 0; }
.work-copy .eyebrow { margin-bottom:12px; }
.work-copy h2 { font-size:1.6rem; margin-bottom:14px; }
.work-copy h2 a { text-decoration:none; }
.work-copy h2 a:hover { text-decoration:underline; }
.work-copy p { color:var(--muted); }
.about-split { align-items:center; }
.about-split .field-work { margin:0; }
.about-split .zoom-photo img { width:100%; height:auto; max-height:620px; object-fit:contain; }
.process-list { list-style:none; padding:0; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:32px; counter-reset:process; }
.process-list li { margin:0; border-top:1px solid var(--line); padding-top:20px; counter-increment:process; }
.process-list li::before { content:counter(process,decimal-leading-zero); color:var(--accent); font-size:.8rem; }
.process-list h3 { font-size:1.25rem; margin-top:16px; }
.process-list p { color:var(--muted); }

/* Email inquiries, project options and policies. */
.contact-grid { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:60px; }
.contact-primary { background:var(--navy); color:#fff; padding:40px; overflow-wrap:anywhere; }
.contact-primary .eyebrow { color:#c6dce8; }
.contact-primary h2 { font-size:2rem; }
.contact-primary p { color:#dbe5eb; }
.contact-primary .email { margin-top:22px; }
.contact-details { padding:24px 0; }
.contact-details h2 { font-size:1.5rem; }
.contact-details dl { margin:20px 0; }
.contact-details dl>div { border-top:1px solid var(--line); padding-block:18px; }
.contact-details dt { font-weight:700; margin-bottom:5px; }
.contact-details dd { margin:0; overflow-wrap:anywhere; }
.option-rows { margin-top:40px; }
.option-rows article { display:grid; grid-template-columns:28px minmax(0,1fr); gap:24px; border-top:1px solid var(--line); padding:26px 0; }
.option-rows h2 { font-size:1.4rem; margin-bottom:12px; }
.option-rows p { margin-bottom:0; max-width:900px; }
.legal { display:grid; grid-template-columns:minmax(0,.7fr) minmax(0,1.5fr); gap:70px; }
.legal h1 { font-size:clamp(2.3rem,3.3vw,3rem); }
.legal .lead { font-size:.9rem; }
.legal-nav { display:flex; flex-direction:column; align-items:flex-start; font-size:.9rem; }
.legal-nav a { padding-block:10px; min-height:44px; }
.legal-body h2 { font-size:1.65rem; }
.legal-body section { border-top:1px solid var(--line); padding-top:25px; margin-bottom:38px; }
.legal-body p,.legal-body li { overflow-wrap:anywhere; }
.error-page { min-height:55vh; }

.tracking-consent {
  position:fixed;
  left:50%;
  right:auto;
  bottom:20px;
  transform:translateX(-50%);
  width:min(960px,calc(100vw - 40px));
  max-height:calc(100dvh - 40px);
  overflow-y:auto;
  z-index:1200;
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  align-items:center;
  gap:20px;
  padding:20px 24px;
  background:#fff;
  border:1px solid #b8c5cd;
  border-radius:10px;
  box-shadow:0 14px 38px rgba(5,18,28,.2);
}
.tracking-consent strong { display:block; margin-bottom:5px; }
.tracking-consent p { margin:0; max-width:820px; color:var(--muted); font-size:.88rem; line-height:1.55; }
.tracking-consent-actions { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:10px; }
.tracking-consent .button { border:0; cursor:pointer; white-space:nowrap; }
.tracking-consent .tracking-decline { background:#e7edf0; color:var(--navy); }
.tracking-preferences-button { border:0; cursor:pointer; }

/* Footer and keyboard-friendly photo dialog. */
footer { background:#e4e9ec; border-top:1px solid var(--line); }
.footer-main { display:grid; grid-template-columns:1.35fr 1.3fr .7fr .8fr; gap:40px; padding-block:56px; }
.footer-brand .brand { max-width:100%; background:#fff; padding:7px; }
.footer-brand>p { margin:22px 0 6px; font-size:.9rem; }
.footer-brand>a.email,.footer-brand>a.phone { display:flex; align-items:center; width:fit-content; max-width:100%; min-height:34px; text-decoration:none; line-height:1.5; }
.footer-brand>a.email { font-size:.85rem; overflow-wrap:anywhere; }
.footer-brand>a.phone { margin-top:3px; font-size:.9rem; font-weight:700; white-space:nowrap; }
.footer-brand>a.phone::before { content:"Call"; color:var(--muted); font-size:.72rem; font-weight:600; letter-spacing:.04em; text-transform:uppercase; margin-right:10px; }
.footer-main h2 { font-size:.85rem; margin:5px 0 14px; letter-spacing:0; }
.footer-main>div:not(.footer-brand)>a { display:flex; align-items:center; font-size:.85rem; text-decoration:none; padding-block:9px; min-height:44px; line-height:1.5; }
.footer-main a:hover { text-decoration:underline; }
.footer-bottom { border-top:1px solid #c4d0d8; padding-block:20px; display:flex; justify-content:space-between; flex-wrap:wrap; gap:12px 30px; font-size:.75rem; }
.footer-bottom p { margin:0; }
.footer-bottom nav { display:flex; flex-wrap:wrap; gap:0 22px; }
.footer-bottom a { display:inline-flex; align-items:center; min-height:44px; text-decoration:none; }
.footer-bottom .footer-social { gap:0 16px; }
.footer-social a { gap:8px; font-size:.8rem; font-weight:600; color:var(--navy); white-space:nowrap; }
.footer-social a svg { width:18px; height:18px; flex:none; }
.footer-social a:hover { color:var(--accent); text-decoration:underline; }
dialog { padding:56px 22px 18px; background:var(--navy-deep); color:#fff; border:1px solid #8d9da8; max-width:calc(100vw - 30px); max-height:94svh; }
dialog::backdrop { background:rgba(5,18,28,.87); }
dialog>img { width:auto; height:auto; max-height:70svh; max-width:86vw; object-fit:contain; margin:auto; }
dialog>p { font-size:.9rem; max-width:650px; margin:16px auto 0; }
.dialog-close { position:absolute; right:12px; top:6px; background:transparent; color:#fff; border:0; min-height:44px; padding:8px 14px; }

/* Shared navigation, tablet and mobile breakpoints. */
@media (max-width:1200px) {
  .main-nav { gap:16px; }
  .brand { width:230px; }
  .main-nav>a,.nav-services>summary { font-size:.8rem; }
  .main-nav .button { padding-inline:15px; }
  .footer-main { gap:28px; }
}
@media (max-width:1050px) {
  :root { --header-height:90px; }
  .header-inner { flex-wrap:wrap; gap:0 20px; }
  .menu-toggle { display:block; border:1px solid #aab9c3; background:transparent; padding:10px 17px; min-height:44px; }
  .main-nav { display:none; width:100%; padding-bottom:22px; flex-direction:column; align-items:stretch; gap:0; }
  .main-nav.is-open { display:flex; }
  .main-nav>a { font-size:1rem; padding:12px 0; border-top:1px solid var(--line); }
  .main-nav > a.button { display:flex; width:100%; justify-content:center; padding:13px 18px; margin-top:14px; }
  .nav-services { width:100%; margin-right:0; border-top:1px solid var(--line); }
  .nav-services>summary { width:100%; justify-content:space-between; padding:12px 0; font-size:1rem; min-height:48px; border-radius:0; }
  .nav-services>summary:hover,.nav-services>summary.is-current,.nav-services[open]>summary { background:transparent; color:var(--navy); }
  .nav-mega { position:static; width:100%; max-height:none; overflow:visible; grid-template-columns:1fr; box-shadow:none; border:0; border-radius:0; padding:5px 0 12px; }
  .nav-mega a { padding-inline:5px; }
  .nav-mega .nav-all { grid-column:1; }
  .footer-main { grid-template-columns:1.3fr 1fr 1fr; }
  .footer-brand { grid-column:1/-1; }
  .footer-main>div:last-child { grid-column:auto; }
  .legal { gap:40px; }
}
@media (max-width:900px) {
  .taxonomy-nav { grid-template-columns:1fr; }
  .solution-directory { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .section-heading,.v2-section-heading { grid-template-columns:1fr; gap:18px; }
  .v2-capability-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .system-flow { grid-template-columns:1fr; gap:24px; }
  .system-flow li { display:grid; grid-template-columns:30px minmax(0,1fr); gap:5px 16px; padding-top:14px; }
  .system-flow strong { margin:0; }
  .system-flow li>span:last-child { grid-column:2; }
  .system-flow li:not(:last-child)::after { content:'\2193'; top:auto; right:15px; bottom:-25px; }
  .planning { gap:32px; padding:32px; }
}
@media (max-width:700px) {
  .solution-directory { grid-template-columns:1fr; }
  .taxonomy-card { min-height:0; }
  .tracking-consent { width:calc(100vw - 28px); left:50%; right:auto; bottom:14px; max-height:calc(100dvh - 28px); grid-template-columns:minmax(0,1fr); gap:14px; padding:16px; }
  .tracking-consent-actions { justify-content:flex-start; }
  .tracking-consent-actions .button { flex:1 1 142px; white-space:normal; }
  :root { --gutter:20px; --header-height:82px; --grid-gap:24px; --heading-space:28px; }
  .utility { font-size:.7rem; padding-block:7px; }
  .utility .wrap { justify-content:space-between; gap:8px; }
  .utility .wrap>span { margin-right:0; }
  .utility a[href^="mailto:"] { display:none; }
  .utility a[href^="tel:"] { display:inline-flex; }
  .brand { width:238px; max-width:calc(100% - 106px); }
  .section.top { padding-top:28px; }
  .hero-v2 { height:auto; min-height:max(600px,82svh); background-image:url('/assets/images/cis-field-timelapse-poster-mobile.webp'); }
  .homepage .hero-v2 { height:auto; min-height:max(560px,76svh); }
  .homepage .section,.homepage .v2-section { padding-block:clamp(40px,8vw,56px); }
  .hero-v2-content { padding:64px 0 68px; }
  .hero-v2 h1 { max-width:88%; font-size:clamp(2rem,7vw,2.8rem); line-height:1.02; letter-spacing:-.045em; margin-bottom:20px; }
  .hero-v2-rotator { min-height:2.8em; max-width:92%; margin-bottom:14px; }
  .hero-v2-message { font-size:clamp(.98rem,4.2vw,1.08rem); line-height:1.3; }
  .hero-v2-actions { gap:14px; }
  .hero-v2 .button { min-height:44px; padding:10px 15px; font-size:.92rem; }
  .hero-v2-work-link { min-height:44px; font-size:.92rem; }
  .video-control-v2 { right:20px; bottom:14px; min-height:38px; padding:7px 11px; font-size:.72rem; }
  .v2-project-grid,.service-list,.capabilities,.related-services,.application-directory,.work-grid,.project-gallery,.case-story,.split-copy,.about-split,.solution-detail,.service-photo,.contact-grid,.legal { grid-template-columns:1fr; }
  .v2-project-card img { aspect-ratio:4/3; }
  .v2-capability h3 { font-size:1.5rem; }
  .v2-capability-grid { gap:22px; }
  .process-list { grid-template-columns:1fr; gap:24px; }
  .intro { margin-bottom:32px; }
  .breadcrumb { padding-top:18px; gap:6px 10px; }
  .editorial-section { padding-top:32px; margin-top:40px; }
  .capabilities { gap:28px; margin-block:30px 40px; }
  .planning { grid-template-columns:1fr; padding:28px 24px; gap:16px; }
  .planning h2 { font-size:1.8rem; margin-bottom:0; }
  .service-photo { gap:28px; }
  .service-photo>.zoom-photo { height:420px; }
  .group-photo,.field-work,.example-photo { margin:20px 0 32px; }
  .group-photo img,.field-work img,.example-photo img { max-height:500px; }
  .contact-primary { padding:28px 24px; }
  .contact-grid { gap:28px; }
  .nav-mega { grid-template-columns:1fr; }
  .footer-main { grid-template-columns:1fr 1fr; gap:28px 20px; padding-block:40px; }
  .footer-main>div:last-child { grid-column:1/-1; }
  .legal-nav { margin-bottom:30px; }
}
@media (max-width:360px) {
  :root { --gutter:16px; --header-height:76px; }
  .brand { width:178px; max-width:calc(100% - 82px); }
  .menu-toggle { padding-inline:12px; }
  .v2-capability-grid { grid-template-columns:1fr; }
  .hero-v2 h1 { font-size:2.25rem; }
  .hero-v2-actions { align-items:flex-start; flex-direction:column; }
  .footer-main { grid-template-columns:1fr; }
  .footer-brand,.footer-main>div:last-child { grid-column:auto; }
}
@media (prefers-reduced-motion:reduce) {
  .hero-v2-video,.hero-v2-message { transition:none; }
}


/* CIS website forms */
.form-layout { align-items:start; }
.cis-form { display:grid; gap:20px; }
.form-row { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; }
.form-field { display:grid; gap:7px; }
.form-field label { font-weight:700; }
.form-field .optional { font-weight:400; opacity:.7; }
.form-field input,
.form-field select,
.form-field textarea {
  width:100%;
  min-height:48px;
  padding:12px 14px;
  border:1px solid rgba(16,46,70,.28);
  border-radius:4px;
  background:#fff;
  color:var(--navy);
  font:inherit;
}
.form-field textarea { min-height:160px; resize:vertical; }
.form-field input:focus,
.form-field select:focus,
.form-field textarea:focus {
  outline:3px solid rgba(27,111,157,.22);
  outline-offset:1px;
  border-color:#1b6f9d;
}
.form-help { margin:0; font-size:.9rem; opacity:.78; }
.form-actions { display:flex; align-items:center; flex-wrap:wrap; gap:16px; }
.form-actions .button { border:0; cursor:pointer; }
.form-actions .button:disabled { opacity:.6; cursor:wait; }
.form-status { margin:0; padding:12px 14px; border-left:4px solid #1b6f9d; background:rgba(27,111,157,.08); }
.form-status.success { border-left-color:#287a4b; background:rgba(40,122,75,.09); }
.form-status.error { border-left-color:#a43f36; background:rgba(164,63,54,.09); }
.form-honeypot { position:absolute !important; left:-10000px !important; width:1px !important; height:1px !important; overflow:hidden !important; }
.form-contact-fallback { margin-top:24px; padding-top:20px; border-top:1px solid rgba(16,46,70,.15); }
.cf-turnstile { min-height:65px; }
@media (max-width:700px) { .form-row { grid-template-columns:1fr; } }
