/* Survey marks, measured rules and one restrained family of interactions. */
:root{--craft-ink:#142d3e;--craft-blue:#299fdf;--craft-line:#d4e3eb;--craft-ease:cubic-bezier(.22,.7,.2,1)}
::selection{background:#c9eafc;color:#142d3e}
:where(a,button,summary,input,select,textarea):focus-visible{outline:2px solid #278ec7;outline-offset:5px}
:where(a,button){-webkit-tap-highlight-color:#41b5fa25}
button:disabled{cursor:default}
.text-link .ui-icon,.service-more .ui-icon,.service-row-link .ui-icon,.job-inquiry .ui-icon{transition:transform .35s var(--craft-ease)}
:is(.text-link,.service-card,.service-row,.job-inquiry):is(:hover,:focus-visible) .ui-icon{transform:translateX(5px)}
.text-link{font-weight:500}
.page-breadcrumb{margin:0 0 27px;font-size:10px;letter-spacing:.045em}
.page-title>.page-breadcrumb{margin-bottom:40px}
.company-overview-copy>.page-breadcrumb{margin-bottom:23px}
.section-label>span:first-child:before{box-shadow:0 0 0 3px #41b5fa10}
.civil-callouts text{font:500 12px 'Noto','Yu Gothic',sans-serif;stroke-width:3.2px;fill:#2d5c74}
.civil-callouts path{stroke:#6591a7;stroke-width:.8}
.civil-callouts circle{fill:#3c95bd}
.infrastructure-world:not([data-focus=overview]) .infra-window{height:clamp(360px,calc(100svh - 325px),510px);max-height:510px}
.infrastructure-world .infra-viewbar{scroll-margin-top:20px}
.infrastructure-world .infra-active-heading{min-height:82px;padding-top:18px;padding-bottom:8px}

/* Photo registers borrow their angle from the corporate symbol. */
.service-photo{position:relative;isolation:isolate;overflow:hidden}
.service-photo:after{content:"";position:absolute;inset:10px;z-index:1;pointer-events:none;opacity:0;border:1px solid #ffffffc9;clip-path:polygon(0 0,34px 0,34px 1px,1px 1px,1px 34px,0 34px,0 0,100% 100%,calc(100% - 34px) 100%,calc(100% - 34px) calc(100% - 1px),calc(100% - 1px) calc(100% - 1px),calc(100% - 1px) calc(100% - 34px),100% calc(100% - 34px),100% 100%);transition:opacity .3s}
.service-card:is(:hover,:focus-visible) .service-photo:after{opacity:1}
.service-photo img{transition:transform .8s var(--craft-ease)}
.service-card:focus-visible .service-photo img{transform:scale(1.025)}
.service-photo-index{position:absolute;left:13px;bottom:13px;display:flex;align-items:center;gap:9px;color:#fff;font:500 10px/1 Arial,sans-serif;letter-spacing:.1em;filter:drop-shadow(0 1px 3px #142d3e88)}
.service-photo-index i{display:block;width:29px;height:6px;border-left:1px solid currentColor;border-right:1px solid currentColor;background:repeating-linear-gradient(90deg,transparent 0,transparent 6px,#fff 6px,#fff 7px);opacity:.85}
.service-inventory .service-row{grid-template-columns:104px minmax(0,1fr) auto;column-gap:28px}
.service-row .service-row-no{display:flex;align-items:center;gap:13px;align-self:start;padding-top:5px;color:#319fd7}
.service-row-no>small{font:500 11px/1 Arial,sans-serif;align-self:flex-start;padding-top:6px}
.service-symbol{width:72px;height:54px;flex:none;transition:transform .4s var(--craft-ease)}
.service-row:is(:hover,:focus-visible) .service-symbol{transform:translateY(-3px)}
.service-row h3{letter-spacing:.025em}
.home-record{position:relative;transition:background .25s}
.home-record:before{content:"";position:absolute;left:-13px;top:50%;width:5px;height:5px;background:var(--craft-blue);opacity:0;transform:translateY(-50%);transition:opacity .2s}
.home-record:is(:hover,:focus-visible):before{opacity:1}
.home-record-client{font-weight:550}

/* A functional closing panel, rather than a generic rounded call to action. */
.contact-band.contact-ledger{position:relative;isolation:isolate;overflow:hidden;display:grid;grid-template-columns:minmax(0,1fr) minmax(340px,.86fr);gap:7vw;align-items:center;margin:0 14px;padding:76px calc(var(--pad) - 14px);border-top:1px solid var(--craft-line);background:#fff}
.contact-contours{position:absolute;pointer-events:none;z-index:-1;left:calc(var(--pad) - 10px);bottom:-14px;width:clamp(300px,35vw,500px);color:#a7d3e9;opacity:.31}
.contact-contours>svg{display:block;width:100%;stroke:currentColor;stroke-width:.85}
.contact-contours .contour-axis{stroke-dasharray:3 6;opacity:.65}
.contact-contours .contour-datum{stroke:#2e9dd6;stroke-width:1.6;opacity:1}
.contact-ledger-copy{padding:0 0 16px}
.contact-ledger-copy>.eyebrow{font:500 10px/1.7 Arial,sans-serif;letter-spacing:.13em;color:#3d7e9f;margin-bottom:18px}
.contact-ledger-copy>h2{font-size:34px;line-height:1.6;letter-spacing:.04em;margin:0 0 18px}
.contact-ledger-copy>p:last-child{font-size:14px;line-height:2;color:#567285;margin:0}
.contact-band.contact-ledger .contact-ledger-copy{color:var(--craft-ink)}
.contact-band.contact-ledger .contact-ledger-copy>h2{color:var(--craft-ink)}
.contact-band.contact-ledger .contact-ledger-copy>p:not(.eyebrow){color:#526f82}
.contact-ledger-actions{width:100%;max-width:490px;justify-self:end}
.contact-ledger-form{position:relative;display:flex;align-items:center;justify-content:space-between;gap:24px;min-height:96px;padding:24px 29px;background:var(--craft-ink);color:#fff;clip-path:polygon(0 0,calc(100% - 12px) 0,100% 12px,100% 100%,12px 100%,0 calc(100% - 12px));transition:background .3s}
.contact-ledger-form>span{display:grid;gap:6px}
.contact-ledger-form small{font:500 9px/1.5 Arial,sans-serif;letter-spacing:.13em;color:#8cb9ce}
.contact-ledger-form b{font-size:16px;font-weight:500;letter-spacing:.025em;line-height:1.7}
.contact-ledger-form>.ui-icon{flex:none;width:32px;height:26px;color:#62c5fc;transition:transform .4s var(--craft-ease)}
.contact-ledger-form:is(:hover,:focus-visible){background:#20536d}
.contact-ledger-form:is(:hover,:focus-visible)>.ui-icon{transform:translateX(6px)}
.contact-ledger-form:focus-visible{outline:0;box-shadow:inset 0 0 0 3px #41b5fa}
.contact-ledger-phone{display:flex;gap:18px;align-items:center;justify-content:flex-end;padding:18px 0 0;color:#224b62}
.contact-ledger-phone>svg{color:#4096bf;flex:none}
.contact-ledger-phone>span{display:flex;align-items:baseline;gap:15px}
.contact-ledger-phone small{font-size:10px;font-weight:400;letter-spacing:.015em;color:#6b8697}
.contact-ledger-phone b{font:400 23px/1.5 Arial,sans-serif;letter-spacing:.025em;white-space:nowrap}
.contact-ledger-phone:hover b{text-decoration:underline;text-underline-offset:5px;text-decoration-thickness:1px}
.contact-ledger-phone small{color:#557184}
.footer .footer-tel{font:400 18px/1.6 Arial,sans-serif;letter-spacing:.025em;display:inline-flex;align-items:center;min-height:44px;margin-right:20px}
.footer .footer-tel+small{display:inline-block;font:400 11px/1.6 Arial,sans-serif;color:#567285;white-space:nowrap}

/* Each question and job retains a clear route to the next page. */
.recruit-anchor{position:sticky;top:90px;z-index:35;display:flex;justify-content:space-between;gap:24px;min-height:70px;box-shadow:0 6px 15px #142d3e03}
.recruit-anchor>a{position:relative;display:flex;gap:20px;align-items:center;justify-content:space-between;padding:23px 0;color:#537083;white-space:nowrap}
.recruit-anchor>a:last-child{color:#246d95}
.recruit-anchor>a[aria-current="location"]{color:#193f55}
.anchor-tick{width:6px;height:6px;border:1px solid #77bce1;border-radius:50%;transition:background .25s,box-shadow .25s}
.recruit-anchor>a[aria-current="location"] .anchor-tick{background:#299fdf;border-color:#299fdf;box-shadow:0 0 0 3px #41b5fa1c}
.recruit-anchor>a:after{content:"";height:2px;position:absolute;bottom:0;left:0;right:0;background:#299fdf;transform:scaleX(0);transform-origin:left;transition:transform .3s var(--craft-ease)}
.recruit-anchor>a[aria-current="location"]:after,.recruit-anchor>a:hover:after{transform:scaleX(1)}
.page-recruit :is(#jobs,#team,#requirements,#questions,#entry){scroll-margin-top:100px}
.job-card{display:flex;flex-direction:column}
.job-card>.job-inquiry{display:flex;align-items:center;justify-content:space-between;gap:15px;border-top:1px solid #dce7ed;padding:18px 0 3px;margin:24px 24px 20px;color:#27546c;font-size:12px;font-weight:500;line-height:1.7}
.job-inquiry>.ui-icon{width:25px;flex:none;color:#329dd5}
.faq-list{counter-reset:faq}
.faq-list details{counter-increment:faq}
.faq-list summary{position:relative;padding-left:47px;padding-right:45px;font-weight:500}
.faq-list summary:before{content:counter(faq,decimal-leading-zero);position:absolute;left:0;top:50%;transform:translateY(-50%);font:400 13px/1 Arial,sans-serif;color:#349bd2;letter-spacing:.045em}
.faq-list summary>.faq-icon{transition:transform .3s var(--craft-ease);flex:none}
.faq-list details[open] summary>.faq-icon{transform:rotate(45deg)}
.faq-list details>p,.faq-list details>a{margin-left:47px}
.faq-list details[open]{background:linear-gradient(90deg,#f2f8fc,transparent 80%)}

/* Client names and project information share a deliberate reading order. */
.records-toolbar{flex-wrap:wrap;align-items:flex-end;gap:22px}
.records-toolbar .result-count{margin-left:auto;display:flex;align-items:baseline;gap:7px;font-variant-numeric:tabular-nums;color:#486c83}
.result-count .records-total{font-size:11px;letter-spacing:.025em;color:#7792a2}
.filter-reset{display:inline-flex;align-items:center;gap:16px;min-height:40px;padding:8px 0;border-bottom:1px solid #9dc6db;font-size:11px;color:#39728f;line-height:1.7}
.filter-reset[hidden]{display:none}
.filter-reset>span{font-size:19px;font-weight:300;color:#559fc6}
.filter-reset:hover{color:#17658f;border-color:#299fdf}
.project-table thead{border-top:1px solid #a3becd}
.project-table th{background:#f1f7fa;font-weight:500;font-size:12px;padding-top:19px;padding-bottom:19px;border-bottom-color:#c8dce7}
.project-table .record-title{font-size:15px;line-height:1.85;letter-spacing:.01em}
.project-table .record-client{font-size:14px;font-weight:550;color:#244e66}
.project-table .project-record{transition:background .25s}
.project-table .project-record:has(.record-title:is(:hover,:focus-visible)){background:#f5fafc}
.project-table .record-location{color:#6a8798;margin-top:7px}
.project-table .record-category{font-size:10px;color:#3b88af;letter-spacing:.05em}
.project-table .record-period{font-variant-numeric:tabular-nums}
.records-empty{padding:34px;border-top:1px solid var(--craft-line);background:#f5fafc;color:#537487}
.records-empty p{font-size:14px;margin:0 0 12px}
.records-empty[hidden]{display:none}
.project-pagination{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:16px;border-top:1px solid var(--craft-line);padding-top:20px;margin-top:28px}
.project-pagination button{display:flex;gap:10px;align-items:center;color:#285d79;font-size:12px;line-height:1.6;padding:8px 0;min-height:40px;text-align:left}
.project-pagination button:last-child{justify-content:flex-end;text-align:right}
.project-pagination button:disabled{opacity:.3;cursor:default}
.project-pagination .ui-icon{width:22px;flex:none}
.project-pagination button:first-child .ui-icon{transform:rotate(180deg)}
.project-pagination>span{font:400 12px/1.5 Arial,sans-serif;color:#7b98aa;letter-spacing:.1em}
.dialog .detail-list{margin-bottom:22px}
.dialog .detail-list dt{color:#6a8595;font-weight:400}
.dialog .detail-list dd{color:#254d65}
.dialog .detail-client{font-weight:550}
.dialog .eyebrow{color:#3b96c4}

/* Form details: readable choices, useful errors and a calm confirmation. */
.inquiry-main{scroll-margin-top:30px}
.form-row input:not([type=radio]),.form-row textarea,.form-row select{font-family:inherit;border-radius:0;background:#f7fafc;transition:border-color .2s,background .2s}
.form-row>label,.form-purpose>legend{font-weight:500;font-size:14px}
.form-required{font-size:10px;color:#147cae}
.form-optional{font-size:10px;color:#5b7486}
.form-row>div>small,.inquiry-aside>p.form-demo-notice,.form-demo-notice{color:#5b7486}
.infrastructure-world .infra-description>p{color:#547287}
.infrastructure-world .infra-operation li{color:#557284}
.infrastructure-world .infra-operation li.is-current{color:#214f6b}
.form-choice{min-height:38px;padding:8px 11px;border:1px solid #dae6ed;font-size:12px;line-height:1.7;transition:border-color .2s,background .2s}
.form-choice:has(input:checked){border-color:#7db9d8;background:#eef7fc;color:#244f68}
.form-choice:has(input:focus-visible){outline:2px solid #278ec7;outline-offset:3px}
.form-choice input{width:16px;height:16px}
.form-purpose .form-choices{gap:10px;padding-top:4px}
.form-row>div{position:relative}
.form-character-count{display:block;font:400 10px/1.5 Arial,sans-serif;color:#7b96a6;text-align:right;margin-top:7px;letter-spacing:.025em;font-variant-numeric:tabular-nums}
.form-row.has-error :is(input:not([type=radio]),textarea,select){border-color:#b36b60;background:#fffaf8}
.form-row.has-error>.form-choices,.form-row.has-error .form-choices{border-color:#b36b60}
.form-field-error{font-size:12px;line-height:1.8;color:#9b483d;margin:8px 0 0}
.form-errors{padding:21px 23px;margin:0 0 26px;border:1px solid #d8b8b0;border-left:3px solid #b56a5b;background:#fffaf8;scroll-margin-top:25px}
.form-errors[hidden]{display:none}
.form-errors h2{font-size:15px;font-weight:600;line-height:1.8;margin-bottom:10px;color:#73443c}
.form-errors ul{margin:0;padding-left:20px;font-size:12px;line-height:1.9;color:#92534a}
.form-errors a{text-decoration:underline;text-underline-offset:3px}
.form-confirm dl dt{font-weight:500}
.form-back{min-height:44px}
.form-submit,.form-confirm-actions>.button,.form-complete>.button{border-radius:0;padding-top:21px;padding-bottom:21px;font-weight:500;clip-path:polygon(0 0,calc(100% - 9px) 0,100% 9px,100% 100%,9px 100%,0 calc(100% - 9px))}
.form-submit:focus-visible,.form-confirm-actions>.button:focus-visible,.form-complete>.button:focus-visible{outline:0;box-shadow:inset 0 0 0 3px #41b5fa}
.entry-topic{font-size:13px;line-height:1.8;padding:14px 18px;border-left:2px solid #41b5fa;background:#f0f8fc;color:#326481;margin:0 0 24px}
.entry-topic[hidden]{display:none}
.dialog-close{width:44px;height:44px}
.project-pagination button{min-height:44px}

@media(max-width:1100px){
 .contact-band.contact-ledger{grid-template-columns:minmax(0,1fr) minmax(320px,.95fr);gap:5vw;padding-top:65px;padding-bottom:65px}
 .contact-ledger-copy>h2{font-size:30px}.contact-ledger-copy>p:last-child{font-size:13px}
 .contact-ledger-form{padding:23px;min-height:90px}.contact-ledger-form b{font-size:15px}
 .contact-ledger-phone>span{display:grid;gap:2px}.contact-ledger-phone{padding-top:17px}
 .recruit-anchor{gap:20px;top:82px}.recruit-anchor>a{font-size:11px;gap:12px}.recruit-anchor>a:last-child{font-size:11px}.anchor-tick{width:5px;height:5px}
 .page-recruit :is(#jobs,#team,#requirements,#questions,#entry){scroll-margin-top:90px}
 .service-inventory .service-row{grid-template-columns:93px minmax(0,1fr) auto;column-gap:20px}
 .service-symbol{width:64px}
}
@media(max-width:700px){
 .page-home .scene-slide:nth-child(2) img{object-position:100% 50%}
 .scene-controls>button{min-width:44px;min-height:44px}
 .page-breadcrumb{font-size:9px;margin-bottom:22px}.page-title>.page-breadcrumb{margin-bottom:26px}
 .civil-callouts text{font-size:20px;stroke-width:3.8px}
 .infrastructure-world[data-focus="2"] .civil-callouts text{font-size:22px}
 .infrastructure-world:is([data-focus="3"],[data-focus="5"]) .civil-callouts text{font-size:18px}
 .infrastructure-world:not([data-focus=overview]) .infra-window{height:290px;max-height:none}
 .service-inventory .service-row{grid-template-columns:62px minmax(0,1fr);gap:13px 17px}
 .service-row .service-row-no{display:block;padding-top:0}.service-row-no>small{display:block;padding:0;margin-bottom:5px;font-size:10px}.service-symbol{width:62px;height:47px}
 .service-row .service-row-link{grid-column:2;justify-self:start}.service-photo-index{left:11px;bottom:11px;font-size:9px}
 .contact-band.contact-ledger{display:block;margin:0 7px;padding:53px 17px 49px;border-top-color:#d9e8f0}
 .contact-contours{width:330px;left:-35px;top:-3px;bottom:auto;opacity:.22}
 .contact-ledger-copy{padding:0;margin-bottom:27px}.contact-ledger-copy>.eyebrow{font-size:9px;letter-spacing:.12em;margin-bottom:14px}
 .contact-ledger-copy>h2{font-size:27px;line-height:1.6;margin-bottom:13px}.contact-ledger-copy>p:last-child{font-size:12px;line-height:1.95}
 .contact-ledger-actions{max-width:none}.contact-ledger-form{min-height:85px;padding:21px 24px}.contact-ledger-form b{font-size:14px}.contact-ledger-form small{font-size:8px}.contact-ledger-form>.ui-icon{width:29px}
 .contact-ledger-phone{justify-content:flex-start;gap:14px;padding:20px 0 0}.contact-ledger-phone>span{display:flex;gap:14px;align-items:baseline;flex-wrap:wrap}.contact-ledger-phone small{font-size:9px}.contact-ledger-phone b{font-size:21px}
 .recruit-anchor{top:74px;display:flex;justify-content:flex-start;overflow-x:auto;scrollbar-width:none;gap:24px;min-height:57px;padding:0 24px;border-bottom:1px solid #d8e6ee}
 .recruit-anchor::-webkit-scrollbar{display:none}.recruit-anchor>a,.recruit-anchor>a:last-child{flex:none;font-size:11px;gap:9px;min-height:57px;padding:15px 0}
 .page-recruit :is(#jobs,#team,#requirements,#questions,#entry){scroll-margin-top:65px}
 .job-card>.job-inquiry{margin:20px 21px 18px;padding-top:16px;font-size:11px}
 .faq-list summary{padding-left:34px;padding-right:31px;font-size:13px;line-height:1.85}.faq-list summary:before{font-size:11px}
 .faq-list details>p,.faq-list details>a{margin-left:34px}.faq-list summary>.faq-icon{width:22px}
 .records-toolbar{gap:16px}.records-toolbar .filter-reset{order:3;font-size:10px;min-height:30px;padding-top:0;padding-bottom:5px}
 .records-toolbar .result-count{gap:4px}.result-count .records-total{font-size:10px}
 .project-table .record-title{font-size:15px}.project-table .record-client{font-size:13px}.project-table .record-category{font-size:10px}
 .records-empty{padding:23px 19px}.records-empty p{font-size:12px}.project-pagination{gap:8px;margin-top:23px;padding-top:15px}.project-pagination button{font-size:11px;gap:6px}.project-pagination .ui-icon{width:18px}.project-pagination>span{font-size:10px}
 .inquiry-main,.form-errors{scroll-margin-top:15px}.form-row>label,.form-purpose>legend{font-size:13px}.form-choice{font-size:12px;padding:8px 10px;min-height:40px}.form-purpose .form-choices{gap:10px 8px}
 .form-top-demo{font-size:11px;color:#5b7486}
 .infrastructure-world .infra-viewbar{scroll-margin-top:6px}
 .infrastructure-world .infra-active-heading{min-height:78px;padding-top:16px;padding-bottom:9px}
 .form-errors{padding:18px;margin-bottom:23px}.form-errors h2{font-size:14px}.form-errors ul,.form-field-error{font-size:11px}.form-character-count{font-size:10px}
 .form-consent{font-size:12px;text-align:left;align-items:flex-start}.form-consent input{margin-top:3px}
 .site-header .menu-toggle{min-height:44px;position:relative}.site-header .menu-toggle:before{content:"";position:absolute;inset:0 -10px}
 .infrastructure-world .infra-tools>button{min-height:44px}
 .form-choice{min-height:44px}
 .dialog-close{width:44px;height:44px}
 .entry-topic{font-size:12px;padding:12px 15px}
}
@media(prefers-reduced-motion:reduce){
 *,*:before,*:after{scroll-behavior:auto!important}
 .service-photo img,.service-photo:after,.service-symbol,.contact-ledger-form,.contact-ledger-form>.ui-icon,.recruit-anchor>a:after,.anchor-tick,.faq-icon,.text-link .ui-icon,.service-more .ui-icon,.service-row-link .ui-icon,.job-inquiry .ui-icon{transition:none!important}
}
