:root {
  --navy-950: #032534;
  --navy-900: #063446;
  --navy-800: #0a4258;
  --navy-700: #135b73;
  --blue: #2f9fc6;
  --cyan: #52c2e4;
  --ice: #eef7fb;
  --ice-2: #f7fbfd;
  --line: #d9e7ed;
  --ink: #0b3447;
  --muted: #6c8490;
  --white: #fff;
  --container: 1740px;
  --ease: cubic-bezier(.22, .61, .36, 1);
}

* { box-sizing: border-box; }
html { width: 100%; max-width: 100%; overflow-x: hidden; overflow-x: clip; scroll-behavior: smooth; scrollbar-gutter: stable; background: #cad8de; }
body { width: 100%; max-width: 100%; margin: 0; overflow-x: hidden; overflow-x: clip; color: var(--ink); background: #fff; font-family: "Segoe UI", Arial, sans-serif; font-size: 17px; line-height: 1.48; -webkit-font-smoothing: antialiased; }
body.nav-open { overflow: hidden; }
a { color: inherit; text-decoration: none; }
button, input, textarea { font: inherit; }
button { cursor: pointer; }
img { display: block; width: 100%; }
svg { display: block; }
.container { width: min(calc(100% - 150px), var(--container)); margin-inline: auto; }
.svg-sprite { position: absolute; width: 0; height: 0; overflow: hidden; }
.visually-hidden { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
.project-section { position: relative; overflow: hidden; padding: 82px 0; }
.eyebrow { margin: 0 0 13px; color: var(--cyan); font-size: 14px; font-weight: 800; letter-spacing: .17em; text-transform: uppercase; }
h1, h2, h3, p { margin-top: 0; }
h1, h2, h3 { letter-spacing: -.035em; }
h1 { margin-bottom: 28px; color: #fff; font-size: 72px; font-weight: 800; line-height: .98; text-transform: uppercase; }
h2 { margin-bottom: 0; font-size: 54px; font-weight: 800; line-height: 1; text-transform: uppercase; }
h3 { margin-bottom: 0; font-size: 27px; line-height: 1.08; }
.section-head { margin-bottom: 44px; }
.split-head { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(360px, .65fr); align-items: end; gap: 90px; }
.head-copy { max-width: 620px; margin: 0 0 2px auto; color: var(--muted); font-size: 18px; line-height: 1.6; }
.light h2, .light .head-copy { color: #fff; }

.button { display: inline-flex; min-height: 56px; align-items: center; justify-content: center; padding: 0 32px; border: 1px solid var(--blue); background: var(--blue); color: #fff; font-size: 14px; font-weight: 800; transition: transform .25s var(--ease), background-color .25s, border-color .25s, box-shadow .25s; }
.button:hover { transform: translateY(-2px); background: #248fb5; border-color: #248fb5; box-shadow: 0 12px 28px rgba(47,159,198,.24); }
.button-outline { border-color: rgba(255,255,255,.75); background: rgba(3,37,52,.35); }
.button-outline:hover { border-color: #fff; background: rgba(3,37,52,.72); }
.button-small { min-height: 42px; padding-inline: 22px; font-size: 12px; }

.site-header { position: fixed; z-index: 50; top: 0; right: 0; left: 0; min-height: 76px; border-bottom: 1px solid rgba(255,255,255,.1); background: rgba(3,37,52,.94); backdrop-filter: blur(12px); transition: min-height .25s, background-color .25s, box-shadow .25s; }
.site-header.is-scrolled { min-height: 66px; background: rgba(3,37,52,.985); box-shadow: 0 10px 35px rgba(0,0,0,.18); }
.header-inner { display: flex; min-height: 76px; align-items: center; gap: 28px; transition: min-height .25s; }
.site-header.is-scrolled .header-inner { min-height: 66px; }
.brand { display:inline-flex; width:205px; height:50px; align-items:center; padding:0; flex:0 0 auto; background:transparent; }
.brand img { display:block; object-fit:contain; }
.brand .brand-logo { width:198px; height:auto; flex:0 0 auto; }
.main-nav { display: flex; align-items: center; gap: 24px; margin-left: auto; color: rgba(255,255,255,.76); font-size: 11px; font-weight: 700; white-space: nowrap; }
.main-nav a { position: relative; transition: color .2s; }
.main-nav a:hover, .main-nav .active { color: #fff; }
.main-nav .active::after { position: absolute; right: 0; bottom: -12px; left: 0; height: 2px; background: var(--cyan); content: ""; }
.header-contact { display: grid; line-height: 1.3; white-space: nowrap; }
.header-contact a:first-child { color:#fff; font-size: 13px; font-weight: 700; }
.header-contact a:last-child { color: rgba(255,255,255,.62); font-size: 11px; }
.menu-toggle { display: none; width: 45px; height: 42px; place-items: center; padding: 9px; border: 1px solid rgba(255,255,255,.2); background: transparent; }
.menu-toggle > span:not(.visually-hidden) { display: block; width: 24px; height: 2px; margin: 4px auto; background: #fff; transition: transform .25s, opacity .25s; }

.projecting-hero { position: relative; min-height: 920px; overflow: hidden; color: #fff; background: var(--navy-950); }
.projecting-hero__photo { position: absolute; z-index: 0; top: 76px; right: 0; bottom: 0; width: 63%; background: url("assets/proektirovanie-hero-engineers.png") center 64% / cover no-repeat; animation: heroBreath 16s ease-in-out infinite alternate; }
.projecting-hero__photo::after { position: absolute; inset: 0; background: linear-gradient(90deg, var(--navy-950) 0%, rgba(3,37,52,.94) 18%, rgba(3,37,52,.52) 54%, rgba(3,37,52,.11) 82%), linear-gradient(0deg, rgba(3,37,52,.68), transparent 48%); content: ""; }
.projecting-hero__grid { position: absolute; z-index: 1; inset: 76px 0 0; opacity: .11; background-image: linear-gradient(rgba(92,195,228,.36) 1px, transparent 1px), linear-gradient(90deg, rgba(92,195,228,.36) 1px, transparent 1px); background-size: 56px 56px; mask-image: linear-gradient(90deg,#000,transparent 63%); animation: gridDrift 22s linear infinite; }
.projecting-hero__content { position: relative; z-index: 2; display: grid; min-height: 920px; grid-template-columns: minmax(0, 970px) 1fr; align-items: center; gap: 80px; padding-top: 118px; }
.projecting-hero__copy { align-self: center; }
.breadcrumbs { display: flex; gap: 10px; margin-bottom: 44px; color: rgba(255,255,255,.55); font-size: 13px; }
.breadcrumbs a:hover { color: #fff; }
.projecting-hero__copy .eyebrow { margin-bottom: 18px; }
.projecting-hero__lead { max-width: 790px; margin-bottom: 16px; font-size: 25px; font-weight: 650; line-height: 1.3; }
.projecting-hero__text { max-width: 720px; margin-bottom: 30px; color: rgba(255,255,255,.76); font-size: 18px; }
.projecting-hero__actions { display: flex; gap: 16px; }
.projecting-hero__metrics { display: grid; width: 810px; grid-template-columns: repeat(3,1fr); margin-top: 56px; border-top: 1px solid rgba(255,255,255,.2); }
.projecting-hero__metrics div { min-height: 106px; padding: 22px 30px 0 0; border-right: 1px solid rgba(255,255,255,.18); }
.projecting-hero__metrics div + div { padding-left: 30px; }
.projecting-hero__metrics strong, .projecting-hero__metrics span { display: block; }
.projecting-hero__metrics strong { margin-bottom: 7px; color: #fff; font-size: 24px; }
.projecting-hero__metrics span { max-width: 180px; color: rgba(255,255,255,.64); font-size: 13px; line-height: 1.35; }
.projecting-hero__note { position: absolute; right: 0; top: 196px; width: 320px; padding: 30px 32px 34px; border-left: 1px solid rgba(82,194,228,.5); background: rgba(4,46,62,.8); backdrop-filter: blur(9px); }
.projecting-hero__note span, .projecting-hero__note strong { display: block; }
.projecting-hero__note span { margin-bottom: 9px; color: var(--cyan); font-size: 13px; letter-spacing: .12em; text-transform: uppercase; }
.projecting-hero__note strong { font-size: 22px; line-height: 1.2; text-transform: uppercase; }
.projecting-hero__note i { display: block; width: 62px; height: 2px; margin-top: 28px; background: var(--cyan); animation: pulseLine 2.8s ease-in-out infinite; }

.responsibility { min-height: 820px; background: #fff; }
.responsibility-layout { display: grid; grid-template-columns: minmax(0,1.45fr) minmax(440px,.55fr); gap: 28px; }
.project-service-grid { display: grid; grid-template-columns: repeat(3,1fr); border-top: 1px solid var(--line); border-left: 1px solid var(--line); }
.project-service-card { position: relative; min-height: 230px; padding: 34px 32px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); background: #fff; transition: z-index 0s, transform .32s var(--ease), box-shadow .32s, background-color .32s; }
.project-service-card:hover { z-index: 2; transform: translateY(-5px); background: #fbfeff; box-shadow: 0 18px 44px rgba(6,52,70,.12); }
.project-service-card svg { width: 35px; height: 35px; margin-bottom: 23px; fill: none; stroke: var(--blue); stroke-width: 1.6; transition: transform .35s var(--ease); }
.project-service-card:hover svg { transform: rotate(-7deg) scale(1.08); }
.project-service-card b { display: block; max-width: 235px; margin-bottom: 11px; font-size: 19px; line-height: 1.2; }
.project-service-card p { max-width: 270px; margin: 0; color: var(--muted); font-size: 14px; line-height: 1.45; }
.project-service-card > span { position: absolute; top: 24px; right: 26px; color: #bad2dd; font-size: 13px; font-weight: 700; }
.responsibility-visual { position: relative; min-height: 460px; overflow: hidden; background: var(--ice); }
.responsibility-visual > img { height: 100%; object-fit: cover; object-position: 58% center; filter: grayscale(.25) contrast(1.04); transform: scale(1.24); transition: transform 1s var(--ease); }
.responsibility-visual:hover > img { transform: scale(1.29); }
.responsibility-visual::after { position: absolute; inset: 0; background: linear-gradient(0deg,rgba(3,37,52,.45),transparent 60%); content:""; }
.visual-card { position: absolute; z-index: 1; right: 0; bottom: 0; width: 68%; padding: 30px 34px 34px; background: rgba(4,48,64,.94); color: #fff; }
.visual-card span, .visual-card strong { display:block; }
.visual-card span { margin-bottom: 8px; color: var(--cyan); font-size: 12px; letter-spacing:.12em; text-transform:uppercase; }
.visual-card strong { margin-bottom: 18px; font-size: 21px; line-height:1.2; text-transform:uppercase; }
.visual-card ul { display:grid; gap:8px; padding:0; margin:0; list-style:none; color:rgba(255,255,255,.75); font-size:13px; }
.visual-card li::before { margin-right:9px; color:var(--cyan); content:"✓"; }

.composition { min-height: 930px; background: var(--ice); }
.composition-head { display:grid; grid-template-columns:1.1fr .9fr; align-items:end; gap:80px; }
.composition-layout { display:grid; grid-template-columns:minmax(0,1.06fr) minmax(620px,.94fr); gap:30px; }
.plan-board { position:relative; height:600px; overflow:hidden; border:1px solid #cedfe6; background:#fff; box-shadow:0 24px 60px rgba(6,52,70,.08); }
.plan-board > img { height:100%; object-fit:cover; object-position:center; transform:scale(1.12); transition: transform 1.4s var(--ease); }
.plan-board:hover > img { transform: scale(1.16); }
.plan-label { position:absolute; right:0; bottom:0; width:55%; padding:25px 30px 28px; background:rgba(3,37,52,.93); color:#fff; }
.plan-label span, .plan-label strong { display:block; }
.plan-label span { margin-bottom:7px; color:var(--cyan); font-size:12px; letter-spacing:.1em; text-transform:uppercase; }
.plan-label strong { font-size:17px; line-height:1.35; }
.discipline-grid { display:grid; grid-template-columns:repeat(3,1fr); border-top:1px solid #cddde4; border-left:1px solid #cddde4; background:#fff; }
.discipline-grid article { position:relative; min-height:200px; padding:31px 25px; border-right:1px solid #cddde4; border-bottom:1px solid #cddde4; transition: transform .3s var(--ease), background-color .3s, box-shadow .3s; }
.discipline-grid article:hover { z-index: 2; transform: translateY(-4px); background: #f9fdff; box-shadow: 0 16px 34px rgba(6,52,70,.1); }
.discipline-grid article::before { position:absolute; top:0; left:0; width:54px; height:3px; background:var(--blue); content:""; transition: width .35s var(--ease); }
.discipline-grid article:hover::before { width: 100%; }
.discipline-grid b { display:block; margin-bottom:20px; color:var(--blue); font-size:31px; line-height:1; }
.discipline-grid span { display:block; font-size:14px; font-weight:650; line-height:1.35; }

.workflow { min-height:680px; color:#fff; background:var(--navy-950) url("assets/18_process_section_background.jpg") center / cover no-repeat; }
.workflow::before { position:absolute; inset:0; background:rgba(3,37,52,.91); content:""; }
.workflow::after { position:absolute; inset:0; opacity:.14; background-image:linear-gradient(rgba(82,194,228,.32) 1px,transparent 1px),linear-gradient(90deg,rgba(82,194,228,.32) 1px,transparent 1px); background-size:64px 64px; content:""; }
.workflow .container { position:relative; z-index:1; }
.workflow-track { position:relative; display:grid; grid-template-columns:repeat(7,1fr); gap:22px; padding-top:24px; }
.track-line { position:absolute; top:65px; right:7%; left:7%; height:2px; background:linear-gradient(90deg,var(--cyan),rgba(82,194,228,.3),var(--cyan)); transform-origin: left center; }
.track-line i { position:absolute; top:-4px; left:0; width:100px; height:10px; background:linear-gradient(90deg,transparent,var(--cyan),transparent); filter:blur(1px); animation: lineRunner 3.7s ease-in-out infinite; }
.workflow-track article { position:relative; text-align:center; }
.node { position:relative; z-index:1; display:grid; width:84px; height:84px; place-items:center; margin:0 auto 25px; border:0; background:#07384a; color:#fff; font-size:19px; font-weight:800; clip-path:polygon(25% 7%,75% 7%,100% 50%,75% 93%,25% 93%,0 50%); transition: transform .3s var(--ease), background-color .3s; }
.node::after { display:none; }
.workflow-track article:hover .node { transform: translateY(-5px) scale(1.05); background:#0b4c63; }
.workflow-track b { display:block; min-height:45px; font-size:15px; line-height:1.25; }
.workflow-track span { display:block; color:rgba(255,255,255,.59); font-size:12px; line-height:1.35; }
.workflow-result { display:flex; width:880px; min-height:86px; align-items:center; gap:28px; margin:54px auto 0; padding:18px 26px; border:1px solid rgba(82,194,228,.28); background:rgba(5,57,75,.62); }
.workflow-result span { color:var(--cyan); font-size:12px; letter-spacing:.12em; text-transform:uppercase; }
.workflow-result strong { flex:1; font-size:17px; }
.workflow-result svg { width:26px; height:26px; fill:none; stroke:var(--cyan); stroke-width:1.7; }

.timing { min-height:760px; background:#fff; }
.timing-layout { display:grid; grid-template-columns:minmax(0,.75fr) minmax(800px,1.25fr); align-items:start; gap:90px; }
.timing-intro { padding-top:14px; }
.timing-intro h2 { max-width:700px; margin-bottom:28px; }
.timing-intro > p:not(.eyebrow) { max-width:650px; color:var(--muted); font-size:19px; line-height:1.6; }
.timing-rule { display:flex; align-items:center; gap:16px; margin-top:42px; color:var(--navy-700); font-size:14px; font-weight:700; }
.timing-rule i { width:58px; height:2px; flex: 0 0 auto; background:var(--cyan); }
.timing-cards { display:grid; grid-template-columns:1fr 1fr; border:1px solid var(--line); }
.time-card { min-height:390px; padding:44px 40px; background:var(--ice-2); transition: transform .32s var(--ease), box-shadow .32s; }
.time-card:hover { z-index:2; transform:translateY(-5px); box-shadow:0 18px 44px rgba(6,52,70,.12); }
.time-card + .time-card { border-left:1px solid var(--line); }
.time-card > span { color:var(--blue); font-size:14px; font-weight:800; letter-spacing:.08em; text-transform:uppercase; }
.time-card > div { display:flex; align-items:flex-end; gap:17px; margin:48px 0 30px; }
.time-card b { font-size:78px; line-height:.85; letter-spacing:-.06em; }
.time-card b i { font-size:.56em; font-style:normal; letter-spacing:-.02em; }
.time-card strong { max-width:110px; color:var(--muted); font-size:16px; line-height:1.2; text-transform:uppercase; }
.time-card p { margin:0; color:var(--muted); font-size:15px; line-height:1.55; }
.time-card.primary { color:#fff; background:var(--navy-800); }
.time-card.primary > span { color:var(--cyan); }
.time-card.primary p,.time-card.primary strong { color:rgba(255,255,255,.67); }
.factors { display:grid; grid-template-columns:repeat(4,1fr); margin-top:38px; border-top:1px solid var(--line); border-left:1px solid var(--line); }
.factors > div { display:grid; min-height:145px; grid-template-columns:44px 1fr; grid-template-rows:auto auto; column-gap:18px; align-content:center; padding:24px 28px; border-right:1px solid var(--line); border-bottom:1px solid var(--line); transition:background-color .25s; }
.factors > div:hover { background:var(--ice-2); }
.factors svg { grid-row:1/3; width:35px; height:35px; fill:none; stroke:var(--blue); stroke-width:1.6; }
.factors b { font-size:15px; }
.factors span { color:var(--muted); font-size:12px; line-height:1.35; }

.cases { min-height:960px; background:var(--ice-2); }
.cases .split-head { grid-template-columns:1.2fr .8fr; }
.case-grid { display:grid; height:610px; grid-template-columns:1.7fr 1fr; grid-template-rows:1fr 1fr; gap:8px; }
.case-card { position:relative; overflow:hidden; background:var(--navy-800); }
.case-featured { grid-row:1/3; }
.case-card > img { height:100%; object-fit:cover; transition: transform 1s var(--ease); }
.case-card:hover > img { transform:scale(1.04); }
.case-featured > img { object-position:center; transform:scale(1.22) translateY(-6%); }
.case-featured:hover > img { transform:scale(1.27) translateY(-6%); }
.case-card::after { position:absolute; inset:0; background:linear-gradient(0deg,rgba(2,32,45,.93),rgba(2,32,45,.04) 66%); content:""; }
.case-overlay { position:absolute; z-index:1; right:0; bottom:0; left:0; padding:32px 34px; color:#fff; }
.case-featured .case-overlay { padding:44px 48px; }
.case-overlay > span { display:block; margin-bottom:9px; color:var(--cyan); font-size:12px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; }
.case-featured h3 { font-size:34px; }
.case-meta { display:flex; flex-wrap:wrap; gap:12px 30px; margin-top:22px; color:rgba(255,255,255,.72); font-size:13px; }
.case-meta b { font-weight:650; }
.cases-bottom { display:flex; align-items:center; justify-content:space-between; gap:30px; margin-top:30px; color:var(--muted); font-size:13px; }
.cases-bottom a { color:var(--blue); font-size:14px; font-weight:700; text-transform:uppercase; }

.project-faq { min-height:700px; background:#fff; }
.project-faq-grid { display:grid; grid-template-columns:1fr 1fr; align-items:start; gap:12px; }
.project-faq-item { min-height:80px; overflow:hidden; border:1px solid var(--line); background:var(--ice-2); transition: border-color .3s, background-color .3s, box-shadow .3s; }
.project-faq-item:hover { border-color:#bfd7e1; }
.project-faq-item[open] { border-color:var(--navy-800); background:var(--navy-800); color:#fff; box-shadow:0 16px 38px rgba(6,52,70,.12); }
.project-faq-item summary { display:flex; min-height:80px; align-items:center; justify-content:space-between; gap:20px; padding:0 28px; list-style:none; cursor:pointer; }
.project-faq-item summary::-webkit-details-marker { display:none; }
.project-faq-item summary b { font-size:16px; }
.project-faq-item summary > span { display:grid; width:34px; height:34px; flex:0 0 auto; place-items:center; border:1px solid #c9dfe7; color:var(--blue); font-size:12px; transition:transform .32s var(--ease), border-color .3s, color .3s; }
.project-faq-item summary svg { width:18px; height:18px; fill:none; stroke:currentColor; stroke-width:1.7; }
.project-faq-item[open] summary > span { transform:rotate(45deg); border-color:rgba(82,194,228,.5); color:var(--cyan); }
.faq-answer { height:0; overflow:hidden; opacity:0; transition:height .42s var(--ease), opacity .28s ease; }
.project-faq-item[open] .faq-answer { height:auto; opacity:1; }
.project-faq-item .faq-answer p { margin:0; padding:0 90px 28px 28px; color:var(--muted); font-size:14px; line-height:1.55; }
.project-faq-item[open] .faq-answer p { color:rgba(255,255,255,.72); }

.project-contact { position:relative; overflow:hidden; min-height:610px; color:#fff; background:var(--navy-950); }
.project-contact__pattern { position:absolute; inset:0; opacity:.15; background-image:linear-gradient(rgba(82,194,228,.35) 1px,transparent 1px),linear-gradient(90deg,rgba(82,194,228,.35) 1px,transparent 1px); background-size:58px 58px; mask-image:linear-gradient(90deg,transparent,#000 55%); }
.project-contact__layout { position:relative; display:grid; min-height:610px; grid-template-columns:.82fr 1.18fr; align-items:center; gap:120px; padding-block:80px; }
.project-contact__copy h2 { max-width:690px; margin-bottom:28px; color:#fff; }
.project-contact__copy > p:not(.eyebrow) { max-width:620px; color:rgba(255,255,255,.68); font-size:18px; line-height:1.6; }
.project-contact__direct { display:grid; margin-top:42px; }
.project-contact__direct span { margin-bottom:8px; color:var(--cyan); font-size:12px; letter-spacing:.1em; text-transform:uppercase; }
.project-contact__direct a:first-of-type { font-size:22px; font-weight:700; }
.project-contact__direct a:last-of-type { color:rgba(255,255,255,.62); font-size:14px; }
.project-form { padding:43px 46px; background:#fff; color:var(--ink); box-shadow:0 28px 70px rgba(0,0,0,.18); }
.project-form__title { display:flex; align-items:flex-end; justify-content:space-between; gap:20px; margin-bottom:27px; }
.project-form__title b { font-size:24px; text-transform:uppercase; }
.project-form__title span { color:var(--muted); font-size:13px; }
.project-form__grid { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.project-form__grid label { position:relative; display:flex; min-height:56px; align-items:center; border:1px solid var(--line); }
.project-form__grid label > span { position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0,0,0,0); }
.project-form__grid input, .project-form__grid textarea { width:100%; border:0; outline:0; background:transparent; color:var(--ink); }
.project-form__grid input { height:54px; padding:0 18px; }
.project-form__grid textarea { min-height:76px; padding:18px; resize:vertical; }
.project-form__grid input::placeholder, .project-form__grid textarea::placeholder { color:#91a1a9; }
.project-form__grid label:focus-within { border-color:var(--blue); box-shadow:0 0 0 2px rgba(47,159,198,.1); }
.project-form__grid .wide { grid-column:1/3; }
.project-form__bottom { display:flex; align-items:center; gap:24px; margin-top:18px; }
.form-consent { display:flex; max-width:280px; align-items:flex-start; gap:9px; color:var(--muted); font-size:11px; line-height:1.35; }
.form-consent input { accent-color:var(--blue); }
.form-status { min-height:20px; margin:12px 0 0; color:var(--navy-700); font-size:12px; }

.site-footer { color:#fff; background:#021d28; }
.footer-main { display:flex; min-height:122px; align-items:center; gap:42px; }
.footer-brand { width:198px; }
.footer-main nav { display:flex; gap:24px; margin-left:auto; color:rgba(255,255,255,.65); font-size:11px; font-weight:650; }
.footer-main nav a:hover { color:#fff; }
.footer-contact { display:grid; min-width:190px; line-height:1.35; }
.footer-contact a:first-child { font-size:13px; font-weight:700; }
.footer-contact a:last-child { color:rgba(255,255,255,.58); font-size:11px; }
.footer-bottom { display:flex; min-height:68px; align-items:center; gap:60px; border-top:1px solid rgba(255,255,255,.08); color:rgba(255,255,255,.4); font-size:10px; }
.footer-bottom span:first-child { margin-right:auto; }

[data-reveal], [data-flow-reveal] { opacity:1; transform:none; }
.has-js [data-reveal], .has-js [data-flow-reveal] { opacity:0; transform:translateY(28px); transition:opacity .72s var(--ease) var(--reveal-delay, 0ms), transform .72s var(--ease) var(--reveal-delay, 0ms); }
.has-js [data-reveal="left"] { transform:translateX(-34px); }
.has-js [data-reveal="right"] { transform:translateX(34px); }
.has-js [data-reveal="scale"] { transform:scale(.97); }
.has-js [data-reveal].is-visible, .has-js [data-flow-reveal].is-visible { opacity:1; transform:none; }
.has-js .discipline-grid article { opacity:0; transform:translateY(18px); }
.has-js .discipline-grid.is-visible article { opacity:1; transform:none; transition:opacity .55s var(--ease) var(--card-delay), transform .55s var(--ease) var(--card-delay); }
.has-js [data-flow-reveal] .track-line { transform:scaleX(0); }
.has-js [data-flow-reveal] article { opacity:0; transform:translateY(18px); }
.has-js [data-flow-reveal].is-visible .track-line { transform:scaleX(1); transition:transform 1.3s var(--ease); }
.has-js [data-flow-reveal].is-visible article { opacity:1; transform:none; transition:opacity .55s var(--ease) var(--step-delay), transform .55s var(--ease) var(--step-delay); }

@keyframes heroBreath { from { transform:scale(1.01); } to { transform:scale(1.055); } }
@keyframes gridDrift { to { background-position:56px 56px; } }
@keyframes lineRunner { 0% { transform:translateX(-60px); opacity:0; } 15% { opacity:1; } 85% { opacity:1; } 100% { transform:translateX(min(1300px, 75vw)); opacity:0; } }
@keyframes pulseLine { 0%,100% { transform:scaleX(.75); transform-origin:left; opacity:.55; } 50% { transform:scaleX(1); opacity:1; } }

:focus-visible { outline:3px solid var(--cyan); outline-offset:3px; }

@media (max-width: 1500px) {
  .container { width:min(calc(100% - 70px),var(--container)); }
  .main-nav { gap:15px; font-size:10px; }
  .header-contact { display:none; }
  h1 { font-size:58px; }
  h2 { font-size:44px; }
  .projecting-hero__content { grid-template-columns:minmax(0,760px) 1fr; }
  .projecting-hero__note { width:270px; }
  .responsibility-layout,.composition-layout { grid-template-columns:1fr; }
  .responsibility-visual { min-height:420px; }
  .composition { min-height:auto; }
  .timing-layout { grid-template-columns:1fr; gap:35px; }
  .workflow-track { gap:8px; }
  .project-contact__layout { gap:60px; }
}

@media (max-width: 1100px) {
  .site-header .button-small { display:none; }
  .brand, .footer-brand { width:174px; height:43px; }
  .brand .brand-logo { width:170px; }
  .projecting-hero__content { grid-template-columns:1fr; }
  .projecting-hero__copy { max-width:760px; }
  .projecting-hero__note { display:none; }
  .projecting-hero__photo { width:76%; }
  .split-head,.composition-head { grid-template-columns:1fr; gap:24px; }
  .head-copy { max-width:750px; margin-left:0; }
  .project-service-grid { grid-template-columns:repeat(2,1fr); }
  .discipline-grid { grid-template-columns:repeat(3,1fr); }
  .workflow-track { grid-template-columns:repeat(4,1fr); row-gap:36px; }
  .track-line { display:none; }
  .workflow-result { width:min(100%,880px); }
  .case-grid { height:720px; grid-template-columns:1.3fr 1fr; }
  .project-contact__layout { grid-template-columns:1fr; gap:42px; }
  .footer-main nav { display:none; }
  .footer-contact { margin-left:auto; }
}

@media (max-width: 880px) {
  .container { width:min(calc(100% - 40px),var(--container)); }
  .site-header,.header-inner { min-height:68px; }
  .site-header.is-scrolled .header-inner { min-height:62px; }
  .menu-toggle { display:block; order:3; margin-left:auto; }
  .main-nav { position:absolute; top:100%; right:0; left:0; z-index:60; display:flex; height:calc(100vh - 68px); flex-direction:column; align-items:flex-start; gap:0; padding:24px 20px 40px; margin:0; overflow:auto; visibility:hidden; opacity:0; background:rgba(3,37,52,.985); transform:translateY(-12px); transition:opacity .25s,transform .25s,visibility .25s; }
  .main-nav.is-open { visibility:visible; opacity:1; transform:none; }
  .main-nav a { width:100%; padding:17px 8px; border-bottom:1px solid rgba(255,255,255,.1); font-size:15px; }
  .main-nav .active::after { display:none; }
  .menu-toggle[aria-expanded="true"] > span:nth-child(1) { transform:translateY(6px) rotate(45deg); }
  .menu-toggle[aria-expanded="true"] > span:nth-child(2) { opacity:0; }
  .menu-toggle[aria-expanded="true"] > span:nth-child(3) { transform:translateY(-6px) rotate(-45deg); }
  h1 { font-size:48px; }
  h2 { font-size:38px; }
  .project-section { padding:68px 0; }
  .projecting-hero { min-height:820px; }
  .projecting-hero__content { min-height:820px; padding-top:100px; }
  .projecting-hero__photo { top:68px; width:100%; opacity:.74; }
  .projecting-hero__grid { inset:68px 0 0; }
  .projecting-hero__metrics { width:100%; }
  .projecting-hero__metrics div { padding-right:16px; }
  .projecting-hero__metrics div + div { padding-left:16px; }
  .composition-layout { gap:22px; }
  .plan-board { height:480px; }
  .workflow-track { grid-template-columns:repeat(3,1fr); }
  .timing-cards { grid-template-columns:1fr 1fr; }
  .time-card { padding:36px 28px; }
  .time-card b { font-size:64px; }
  .factors { grid-template-columns:repeat(2,1fr); }
  .project-faq-grid { grid-template-columns:1fr; }
  .case-grid { height:auto; grid-template-columns:1fr 1fr; grid-template-rows:500px 310px; }
  .case-featured { grid-row:auto; grid-column:1/3; }
  .footer-main { flex-wrap:wrap; padding-block:25px; }
  .footer-bottom { flex-wrap:wrap; gap:12px 24px; padding-block:18px; }
  .footer-bottom span:first-child { width:100%; }
}

@media (max-width: 620px) {
  body { font-size:16px; }
  .container { width:min(calc(100% - 32px),var(--container)); }
  .brand, .footer-brand { width:164px; height:42px; }
  .brand .brand-logo { width:160px; }
  h1 { margin-bottom:22px; font-size:38px; }
  h2 { font-size:31px; }
  h3 { font-size:22px; }
  .eyebrow { font-size:11px; }
  .project-section { padding:56px 0; }
  .section-head { margin-bottom:30px; }
  .head-copy { font-size:15px; }
  .projecting-hero { min-height:780px; }
  .projecting-hero__content { min-height:780px; padding-top:96px; }
  .breadcrumbs { margin-bottom:26px; }
  .projecting-hero__lead { font-size:20px; }
  .projecting-hero__text { font-size:15px; }
  .projecting-hero__actions { flex-direction:column; }
  .projecting-hero__actions .button { width:100%; }
  .projecting-hero__metrics { margin-top:34px; }
  .projecting-hero__metrics div { min-height:92px; padding-top:17px; }
  .projecting-hero__metrics strong { font-size:18px; }
  .projecting-hero__metrics span { font-size:10px; }
  .project-service-grid { grid-template-columns:1fr; }
  .project-service-card { min-height:195px; padding:28px 25px; }
  .responsibility-visual { min-height:410px; }
  .visual-card { width:88%; }
  .plan-board { height:420px; }
  .plan-label { width:85%; padding:20px 22px; }
  .discipline-grid { grid-template-columns:repeat(2,1fr); }
  .discipline-grid article { min-height:155px; padding:24px 18px; }
  .discipline-grid b { margin-bottom:14px; font-size:25px; }
  .discipline-grid span { font-size:12px; }
  .workflow-track { grid-template-columns:1fr 1fr; gap:28px 12px; }
  .node { width:70px; height:70px; }
  .workflow-result { align-items:flex-start; gap:14px; margin-top:38px; }
  .workflow-result span { display:none; }
  .workflow-result strong { font-size:14px; }
  .timing-intro > p:not(.eyebrow) { font-size:16px; }
  .timing-cards { grid-template-columns:1fr; }
  .time-card { min-height:300px; }
  .time-card + .time-card { border-top:1px solid var(--line); border-left:0; }
  .time-card > div { margin:35px 0 24px; }
  .factors { grid-template-columns:1fr; }
  .factors > div { min-height:115px; }
  .case-grid { display:block; height:auto; }
  .case-card { min-height:300px; margin-bottom:8px; }
  .case-featured { min-height:430px; }
  .case-overlay,.case-featured .case-overlay { padding:26px 22px; }
  .case-featured h3 { font-size:28px; }
  .cases-bottom { align-items:flex-start; flex-direction:column; }
  .project-faq-item summary { min-height:72px; padding:14px 18px; }
  .project-faq-item summary b { font-size:14px; }
  .project-faq-item .faq-answer p { padding:0 56px 22px 18px; font-size:13px; }
  .project-contact__layout { padding-block:58px; }
  .project-contact__copy > p:not(.eyebrow) { font-size:16px; }
  .project-form { padding:28px 20px; }
  .project-form__title { align-items:flex-start; flex-direction:column; }
  .project-form__title b { font-size:20px; }
  .project-form__grid { grid-template-columns:1fr; }
  .project-form__grid .wide { grid-column:auto; }
  .project-form__bottom { align-items:stretch; flex-direction:column; }
  .footer-main { align-items:flex-start; flex-direction:column; gap:18px; }
  .footer-contact { margin-left:0; }
  .footer-main .button { display:inline-flex; }
  .footer-bottom { align-items:flex-start; flex-direction:column; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior:auto; }
  *, *::before, *::after { animation-duration:.01ms !important; animation-iteration-count:1 !important; scroll-behavior:auto !important; transition-duration:.01ms !important; }
  .has-js [data-reveal], .has-js [data-flow-reveal], .has-js .discipline-grid article, .has-js [data-flow-reveal] article { opacity:1; transform:none; }
  .has-js [data-flow-reveal] .track-line { transform:none; }
}
