/* Construction-specific motion. Every overlay has a complete static state. */
.hero-drawing{opacity:.3}
.hero-plan{position:absolute;z-index:1;right:1%;top:14%;width:min(49vw,720px);height:69%;overflow:visible;pointer-events:none;opacity:.68;filter:drop-shadow(0 0 10px rgba(229,194,132,.3))}
.hero-site-scan{position:absolute;z-index:1;right:1%;top:14%;width:min(49vw,720px);height:69%;overflow:hidden;pointer-events:none;opacity:.78;mask-image:linear-gradient(90deg,transparent,#000 10%,#000 90%,transparent)}
.hero-site-scan::before{content:"";position:absolute;top:4%;bottom:8%;left:8%;width:2px;background:linear-gradient(transparent,#f1d99a 12%,#fff4d0 50%,#f1d99a 88%,transparent);box-shadow:0 0 9px 2px #e8c582af,0 0 30px 5px #e8c58269;opacity:.35}
.hero-site-scan span{position:absolute;right:3%;bottom:5%;color:#f3dfa8;font:9px/1.4 var(--mono);letter-spacing:.15em;text-shadow:0 0 10px #000}
.hero-plan .plan-primary{stroke:#ebd7a1;stroke-width:1.2}
.hero-plan .plan-secondary{stroke:#d7b66e;stroke-width:.9;stroke-dasharray:6 8}
.hero-plan .plan-ticks{stroke:#f4e4b7;stroke-width:1.4}
.hero-plan circle{fill:#e8ce92;stroke:#f9e9be;stroke-width:1}
.scope-overlay{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;stroke:#f2dbab;stroke-width:1.1;opacity:.7;filter:drop-shadow(0 0 6px #000)}
.scope-overlay circle{fill:#f7e1b0;stroke:none}
.scope-callouts{position:absolute;inset:0;pointer-events:none}
.scope-callouts span{position:absolute;left:7%;padding:5px 8px;border-left:1px solid #e8c583;background:#0a0a0ac9;color:#f4e2ba;font:9px/1.2 var(--mono);letter-spacing:.1em}
.scope-callouts span:nth-child(1){top:23%}.scope-callouts span:nth-child(2){top:52%}.scope-callouts span:nth-child(3){top:78%}
.work-card{position:relative;overflow:hidden}
.card-study{position:absolute;top:18px;right:clamp(15px,2vw,30px);width:min(39%,145px);height:auto;pointer-events:none;stroke:#cba866;stroke-width:1.15;opacity:.4}
.card-study path{vector-effect:non-scaling-stroke}
.work-card:hover .card-study,.work-card:focus-visible .card-study{opacity:.72;filter:drop-shadow(0 0 8px #d1ae7145)}
.phase-line span{transform:scaleX(1);transform-origin:left;background:linear-gradient(90deg,#d8b26c,#f2dba7);animation:none}
.field-annotation{position:absolute;right:7%;bottom:16%;width:33%;height:18%;pointer-events:none;color:#e5c784}
.field-annotation i{position:absolute;right:0;bottom:0;left:0;height:1px;background:currentColor;box-shadow:0 0 10px #e7c98a88}
.field-annotation b{position:absolute;right:0;top:0;bottom:0;width:1px;background:currentColor;box-shadow:0 0 10px #e7c98a88}
.field-annotation span{position:absolute;left:0;bottom:10px;padding:4px 7px;background:#090908bf;color:#ebd19c;font:9px/1.2 var(--mono);letter-spacing:.1em;white-space:nowrap}
.section-rule{position:relative;overflow:hidden;height:2px}
.section-rule::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,#ecd29a 45%,#c4a26b);transform:scaleX(1);transform-origin:left}
.management-list article{position:relative}
.management-list article::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;background:linear-gradient(90deg,#ecd19b,transparent 75%);transform:scaleX(1);transform-origin:left}
.contact-rule{transform-origin:left}

html.motion-ready[data-motion="on"] .hero-plan path,
html.motion-ready[data-motion="on"] .scope-overlay path,
html.motion-ready[data-motion="on"] .card-study path{stroke-dasharray:1;stroke-dashoffset:1}
html.motion-ready[data-motion="on"] .hero-plan .plan-primary path{animation:zd-trace 2.3s cubic-bezier(.2,.7,.25,1) .15s forwards}
html.motion-ready[data-motion="on"] .hero-plan .plan-secondary path{animation:zd-trace 2.1s ease .65s forwards}
html.motion-ready[data-motion="on"] .hero-plan .plan-ticks path{animation:zd-trace 1.1s ease 1.3s forwards}
html.motion-ready[data-motion="on"] .hero-plan circle{opacity:0;animation:zd-point .5s ease 1.9s forwards}
html.motion-ready[data-motion="on"] .hero-plan{animation:zd-plan-breathe 7s ease-in-out 2.3s infinite alternate}
html.motion-ready[data-motion="on"] .hero-site-scan::before{animation:zd-survey-sweep 8s linear 1.2s infinite}
html.motion-ready[data-motion="on"] .section:not(.is-built) .section-rule::after{transform:scaleX(0)}
html.motion-ready[data-motion="on"] .section.is-built .section-rule::after{animation:zd-rule 1.4s cubic-bezier(.16,.74,.26,1) both}
html.motion-ready[data-motion="on"] .management-visual.is-built .scope-overlay path{animation:zd-trace 1.5s ease .25s forwards}
html.motion-ready[data-motion="on"] .management-visual.is-built .scope-overlay circle{transform-box:fill-box;transform-origin:center;animation:zd-survey-point 3.6s ease-in-out infinite}
html.motion-ready[data-motion="on"] .management-visual.is-built .scope-overlay circle:nth-last-child(2){animation-delay:1.2s}
html.motion-ready[data-motion="on"] .management-visual.is-built .scope-overlay circle:last-child{animation-delay:2.4s}
html.motion-ready[data-motion="on"] .management-visual .scope-callouts span{opacity:0;transform:translateX(-8px)}
html.motion-ready[data-motion="on"] .management-visual.is-built .scope-callouts span{animation:zd-callout .5s ease forwards}
html.motion-ready[data-motion="on"] .management-visual.is-built .scope-callouts span:nth-child(1){animation-delay:.65s}
html.motion-ready[data-motion="on"] .management-visual.is-built .scope-callouts span:nth-child(2){animation-delay:1s}
html.motion-ready[data-motion="on"] .management-visual.is-built .scope-callouts span:nth-child(3){animation-delay:1.35s}
html.motion-ready[data-motion="on"] .management-list article::after{transform:scaleX(0)}
html.motion-ready[data-motion="on"] .management-list.is-built article::after{animation:zd-rule .9s ease forwards}
html.motion-ready[data-motion="on"] .management-list.is-built article:nth-child(1)::after{animation-delay:.25s}
html.motion-ready[data-motion="on"] .management-list.is-built article:nth-child(2)::after{animation-delay:.55s}
html.motion-ready[data-motion="on"] .management-list.is-built article:nth-child(3)::after{animation-delay:.85s}
html.motion-ready[data-motion="on"] .work-card.is-built .card-study path{animation:zd-trace 1.6s ease forwards}
html.motion-ready[data-motion="on"] .work-card.is-built .card-study{animation:zd-study-breathe 6s ease-in-out 2s infinite alternate}
html.motion-ready[data-motion="on"] .work-card.is-built:nth-child(1) .card-study path{animation-delay:.15s}
html.motion-ready[data-motion="on"] .work-card.is-built:nth-child(2) .card-study path{animation-delay:.35s}
html.motion-ready[data-motion="on"] .work-card.is-built:nth-child(3) .card-study path{animation-delay:.55s}
html.motion-ready[data-motion="on"] .work-card:hover .card-study path,
html.motion-ready[data-motion="on"] .work-card:focus-visible .card-study path{animation:zd-card-retrace .85s ease both!important}
html.motion-ready[data-motion="on"] .phase-track .phase-line span{transform:scaleX(0)}
html.motion-ready[data-motion="on"] .phase-track.is-built .phase-line span{animation:zd-phase-fill 2.4s cubic-bezier(.18,.75,.26,1) .2s both}
html.motion-ready[data-motion="on"] .phase-track.is-built .phase-line::after{animation:zd-phase-survey 6s ease-in-out 2.8s infinite}
html.motion-ready[data-motion="on"] .phase-track .phase-mark{opacity:.45;box-shadow:0 0 0 4px #d6b5700a}
html.motion-ready[data-motion="on"] .phase-track.is-built .phase-mark{animation:zd-phase-mark .55s ease forwards}
html.motion-ready[data-motion="on"] .phase-track.is-built .phase:nth-child(2) .phase-mark{animation-delay:.45s}
html.motion-ready[data-motion="on"] .phase-track.is-built .phase:nth-child(3) .phase-mark{animation-delay:1.2s}
html.motion-ready[data-motion="on"] .phase-track.is-built .phase:nth-child(4) .phase-mark{animation-delay:2s}
html.motion-ready[data-motion="on"] .approach-image .field-annotation i{transform:scaleX(0);transform-origin:right}
html.motion-ready[data-motion="on"] .approach-image .field-annotation b{transform:scaleY(0);transform-origin:bottom}
html.motion-ready[data-motion="on"] .approach-image .field-annotation span{opacity:0}
html.motion-ready[data-motion="on"] .approach-image.is-built .field-annotation i{animation:zd-rule 1.2s ease .35s forwards}
html.motion-ready[data-motion="on"] .approach-image.is-built .field-annotation b{animation:zd-rise .9s ease .85s forwards}
html.motion-ready[data-motion="on"] .approach-image.is-built .field-annotation span{animation:zd-point .6s ease 1.3s forwards}
html.motion-ready[data-motion="on"] .approach-image.is-built .field-annotation i::after{animation:zd-field-point 6s ease-in-out 1.7s infinite}
html.motion-ready[data-motion="on"] .about-monogram span{opacity:.5;transform:scale(.94)}
html.motion-ready[data-motion="on"] .about-monogram.is-built span{animation:zd-monogram 1.3s ease .25s forwards}
html.motion-ready[data-motion="on"] .contact-direct .contact-rule{transform:scaleX(0)}
html.motion-ready[data-motion="on"] .contact-direct.is-built .contact-rule{animation:zd-rule 1.3s ease .45s forwards}
html.motion-ready[data-motion="on"] .contact-direct.is-built{animation:zd-contact-glow 1.6s ease .2s both}
html.motion-ready[data-motion="on"] .contact-direct.is-built::after{animation:zd-contact-scan 8s ease-in-out 1.8s infinite}

.phase-line{overflow:visible}
.phase-line::after{content:"";position:absolute;top:-4px;left:0;width:9px;height:9px;border-radius:50%;background:#f4d69a;box-shadow:0 0 16px 4px #e2b9709c;opacity:0}
.field-annotation i::after{content:"";position:absolute;right:0;top:-4px;width:8px;height:8px;border-radius:50%;background:#f6dc9c;box-shadow:0 0 13px 4px #e6c07d9a;opacity:0}
.contact-direct::after{content:"";position:absolute;top:-1px;left:0;width:30%;height:2px;background:linear-gradient(90deg,transparent,#f1d498,transparent);opacity:0;pointer-events:none}

@keyframes zd-trace{to{stroke-dashoffset:0}}
@keyframes zd-point{to{opacity:1}}
@keyframes zd-rule{to{transform:scaleX(1)}}
@keyframes zd-rise{to{transform:scaleY(1)}}
@keyframes zd-callout{to{opacity:1;transform:translateX(0)}}
@keyframes zd-card-retrace{from{stroke-dashoffset:1}to{stroke-dashoffset:0}}
@keyframes zd-phase-fill{to{transform:scaleX(1)}}
@keyframes zd-phase-mark{to{opacity:1;box-shadow:0 0 0 9px #d6b57014,0 0 19px #dbbd794f}}
@keyframes zd-monogram{to{opacity:1;transform:scale(1)}}
@keyframes zd-contact-glow{from{box-shadow:0 0 0 rgba(211,175,111,0)}to{box-shadow:0 0 44px rgba(211,175,111,.12)}}
@keyframes zd-plan-breathe{from{opacity:.49;filter:drop-shadow(0 0 7px #e5c38430)}to{opacity:.85;filter:drop-shadow(0 0 20px #e5c38479)}}
@keyframes zd-survey-sweep{0%,8%{left:7%;opacity:0}15%,78%{opacity:.78}91%,100%{left:94%;opacity:0}}
@keyframes zd-survey-point{0%,100%{opacity:.55;transform:scale(1)}50%{opacity:1;transform:scale(2.3)}}
@keyframes zd-study-breathe{from{opacity:.3;filter:drop-shadow(0 0 0 #d1ae7100)}to{opacity:.8;filter:drop-shadow(0 0 11px #d1ae7190)}}
@keyframes zd-phase-survey{0%,10%{left:0;opacity:0}20%,75%{opacity:1}90%,100%{left:calc(100% - 9px);opacity:0}}
@keyframes zd-field-point{0%,10%{right:0;opacity:0}20%,75%{opacity:1}90%,100%{right:calc(100% - 8px);opacity:0}}
@keyframes zd-contact-scan{0%,15%{left:0;opacity:0}25%,75%{opacity:.85}90%,100%{left:70%;opacity:0}}
@media(max-width:900px){.hero-plan{right:-7%;width:64vw;opacity:.36}}
@media(max-width:650px){
  .hero-plan{display:block;right:-29%;top:14%;width:102%;height:54%;opacity:.26}
  html.motion-ready[data-motion="on"] .hero-plan{animation-name:zd-plan-breathe-mobile}
  .hero-site-scan{right:-24%;top:14%;width:92%;height:54%;opacity:.48}
  .hero-site-scan span{font-size:7px;right:20%;bottom:4%}
  .scope-callouts span{font-size:7px;padding:4px 5px}
  .card-study{width:105px;top:15px;right:18px;opacity:.25}
  .field-annotation{right:8%;bottom:20%;width:49%}
  .field-annotation span{font-size:7px}
  .phase-line span{transform-origin:top;background:linear-gradient(#d8b26c,#f2dba7)}
  html.motion-ready[data-motion="on"] .phase-track .phase-line span{transform:scaleY(0)}
  html.motion-ready[data-motion="on"] .phase-track.is-built .phase-line span{animation:zd-phase-fill-vertical 2.4s cubic-bezier(.18,.75,.26,1) .2s both}
  .phase-line::after{left:-4px;top:0}
  html.motion-ready[data-motion="on"] .phase-track.is-built .phase-line::after{animation-name:zd-phase-survey-vertical}
}
@keyframes zd-phase-fill-vertical{to{transform:scaleY(1)}}
@keyframes zd-phase-survey-vertical{0%,10%{top:0;opacity:0}20%,75%{opacity:1}90%,100%{top:calc(100% - 9px);opacity:0}}
@keyframes zd-plan-breathe-mobile{from{opacity:.16;filter:drop-shadow(0 0 4px #e5c38430)}to{opacity:.34;filter:drop-shadow(0 0 9px #e5c38470)}}
