/* Progressive section entrance; visible when motion is reduced. */
.reveal-pending{opacity:0;translate:0 14px}
.reveal-entered{animation:section-enter 560ms cubic-bezier(.2,.7,.2,1) both}
@keyframes section-enter{from{opacity:0;translate:0 14px}to{opacity:1;translate:0 0}}
@media(prefers-reduced-motion:reduce){.reveal-pending{opacity:1;translate:none}.reveal-entered{animation:none}}

/* Closing sequence: staggered arrival, then quiet, deliberate interaction. */
.closing-pending:not(.section-route):not(.footer-rule){opacity:0}
.closing-entered:not(.section-route):not(.footer-rule){animation:closing-arrive 600ms cubic-bezier(.22,1,.36,1) var(--entrance-delay,0ms) backwards}
.section-route.closing-pending path{stroke-dasharray:100;stroke-dashoffset:100}
.footer-rule.closing-pending .footer-route-trace{stroke-dasharray:none;stroke-dashoffset:0;clip-path:inset(0 100% 0 0);opacity:1}
.section-route.closing-entered path{animation:closing-route-draw 1150ms cubic-bezier(.4,0,.2,1) both}
.footer-rule path{stroke-linecap:round;stroke-linejoin:round;shape-rendering:geometricPrecision}
.footer-rule .footer-route-trace{stroke-dasharray:none;stroke-dashoffset:0;will-change:clip-path}
.footer-rule.closing-entered .footer-route-trace{animation:footer-route-draw 2800ms cubic-bezier(.4,0,.2,1) both}
@keyframes closing-arrive{from{opacity:0;translate:0 16px}to{opacity:1;translate:0 0}}
@keyframes closing-route-draw{from{stroke-dasharray:0 100;stroke-dashoffset:0}to{stroke-dasharray:100 0;stroke-dashoffset:0}}
@keyframes footer-route-draw{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}
/* Section 04: one precise route that enters, crosses the control system, then exits the frame. */
.sequence-ready .ai-section:not(.ai-sequence-active) .ai-route-line{stroke-dasharray:100;stroke-dashoffset:100}
.sequence-ready .ai-section:not(.ai-sequence-active) .ai-route-terminal{opacity:0}
.sequence-ready .ai-section:not(.ai-sequence-active) .section-intro,
.sequence-ready .ai-section:not(.ai-sequence-active) .ai-control-head,
.sequence-ready .ai-section:not(.ai-sequence-active) .ai-flow li,
.sequence-ready .ai-section:not(.ai-sequence-active) .ai-principles>div{opacity:0;transform:translateY(14px)}
.ai-section.ai-sequence-active .section-intro{animation:ai-heading-arrive 760ms cubic-bezier(.22,1,.36,1) both}
.ai-section.ai-sequence-active .ai-control-head{animation:ai-copy-arrive 620ms cubic-bezier(.22,1,.36,1) 150ms both}
.ai-section.ai-sequence-active .ai-route-line{stroke-dasharray:100;animation:ai-route-draw 3400ms cubic-bezier(.35,0,.2,1) 180ms both}
.ai-section.ai-sequence-active .ai-route-terminal{animation:ai-terminal-arrive 300ms cubic-bezier(.22,1,.36,1) 1550ms both}
.ai-section.ai-sequence-active .ai-flow li{animation:ai-node-arrive 680ms cubic-bezier(.16,1,.3,1) calc(920ms + var(--flow-step)*390ms) both}
.ai-section.ai-sequence-active .ai-flow__decision .ai-icon{animation:ai-decision-confirm 720ms cubic-bezier(.22,1,.36,1) 2400ms both}
.ai-section.ai-sequence-active .ai-principles>div{animation:ai-principle-arrive 620ms cubic-bezier(.22,1,.36,1) calc(3000ms + var(--flow-step,0)*120ms) both}
.sequence-ready .ai-section:not(.ai-sequence-active) .ai-flow:after{transform:scaleX(0)}
.ai-section.ai-sequence-active .ai-flow:after{animation:ai-tablet-rail 2700ms cubic-bezier(.35,0,.2,1) 520ms both}
.ai-principles>div{--flow-step:0}.ai-principles>div:nth-child(2){--flow-step:1}.ai-principles>div:nth-child(3){--flow-step:2}
@keyframes ai-heading-arrive{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}
@keyframes ai-route-draw{from{stroke-dashoffset:100}to{stroke-dashoffset:0}}
@keyframes ai-node-arrive{0%{opacity:0;transform:translateY(14px)}72%{opacity:1;transform:translateY(-2px)}100%{opacity:1;transform:translateY(0)}}
@keyframes ai-copy-arrive{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
@keyframes ai-terminal-arrive{from{opacity:0;transform:scale(.4)}to{opacity:1;transform:scale(1)}}
@keyframes ai-decision-confirm{0%,100%{border-color:#d9753d;background:#fff8f3;box-shadow:0 0 0 5px #fdfcfb,0 0 0 1px #f5d7c2}48%{border-color:#b94b0c;background:#fff2e8;box-shadow:0 0 0 5px #fdfcfb,0 0 0 4px #f3d0b9}}
@keyframes ai-principle-arrive{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
@keyframes ai-tablet-rail{from{transform:scaleX(0)}to{transform:scaleX(1)}}
.ai-flow .ai-icon{transition:transform 260ms var(--motion-ease),border-color 240ms,background-color 240ms}
.ai-flow .ai-icon svg{transition:transform 260ms var(--motion-ease)}
.ai-flow .icon-accent{transition:stroke 220ms}
.ai-flow h3,.ai-principles h3,.delivery-stages h3{transition:color 220ms}
.ai-flow p,.ai-principles p,.delivery-stages p{transition:color 220ms}
.ai-principles>div{position:relative}
.ai-principles>div:after{content:"";display:block;position:absolute;left:0;bottom:-10px;width:26px;height:2px;background:#df6a10;transform:scaleX(0);transform-origin:left;transition:transform 240ms var(--motion-ease)}
.ai-principles>div+div:after{left:40px}
.delivery-stages li>span{transition:color 220ms,transform 240ms var(--motion-ease)}
.delivery-stages li:before{transition:transform 240ms var(--motion-ease),box-shadow 240ms}
.global-delivery .dubai-pin{transition:transform 420ms cubic-bezier(.22,1,.36,1)}
.project-action .cta-bolt{transition:transform 320ms var(--motion-ease)}
.project-action .cta-label>span{transition:transform 220ms var(--motion-ease)}
@media(hover:hover) and (pointer:fine){
 .ai-flow li:hover .ai-icon{transform:translateY(-4px);border-color:#dc8b5c;background:#fff7f0;box-shadow:0 0 0 5px #fdfcfb}
 .ai-flow li:hover .ai-icon svg{transform:scale(1.055)}
 .ai-flow li:hover .icon-accent{stroke:#b75100}
 .ai-flow li:hover h3,.ai-principles>div:hover h3,.delivery-stages li:hover h3{color:#a64c0c}
 .ai-flow li:hover p,.ai-principles>div:hover p,.delivery-stages li:hover p{color:#343c3f}
 .ai-principles>div:hover:after{transform:scaleX(1)}
 .delivery-stages li:hover:before{transform:scale(1.12);box-shadow:0 0 0 5px #ff790017}
 .delivery-stages li:hover>span{transform:translateY(-3px);color:#b2530d}
 .global-delivery:hover .dubai-pin{transform:translate(4px,-6px) rotate(2deg)}
 .project-action:has(.cta-orb:hover) .cta-bolt{transform:translate(5px,-4px) rotate(2deg)}
 .project-action .cta-orb:hover .cta-label>span{transform:translate(3px,-3px)}
}
.project-action:has(.cta-orb:focus-visible) .cta-bolt{transform:translate(5px,-4px)}
.project-action .cta-orb:focus-visible .cta-label>span{transform:translate(3px,-3px)}
.project-action .cta-orb:active{transform:scale(.98)}
@media(max-width:700px){.ai-principles>div+div:after{left:0}
 .sequence-ready .ai-section:not(.ai-sequence-active) .ai-flow li:not(:last-child):after{opacity:0;transform:scaleY(0)}
 .ai-section.ai-sequence-active .ai-flow li:not(:last-child):after{animation:ai-mobile-connector 440ms cubic-bezier(.35,0,.2,1) calc(1280ms + var(--flow-step)*390ms) both}
 .sequence-ready .stages-section:not(.stages-sequence-active) .section-intro,
 .sequence-ready .stages-section:not(.stages-sequence-active) .delivery-stages li{opacity:0;transform:translateY(14px)}
 .stages-section.stages-sequence-active .section-intro{animation:ai-heading-arrive 650ms cubic-bezier(.22,1,.36,1) both}
 .stages-section.stages-sequence-active .delivery-stages li{animation:ai-copy-arrive 580ms cubic-bezier(.22,1,.36,1) calc(130ms + var(--step)*105ms) both}
 .stages-section.stages-sequence-active .delivery-stages li:nth-child(4):before{animation:stage-four-confirm 760ms cubic-bezier(.22,1,.36,1) 980ms both}
 .stages-section.stages-sequence-active .delivery-stages li:nth-child(4)>span{animation:stage-four-label 720ms cubic-bezier(.22,1,.36,1) 720ms both}
}
@keyframes ai-mobile-connector{from{opacity:0;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}
@media(prefers-reduced-motion:reduce){
 .closing-pending:not(.section-route):not(.footer-rule){opacity:1}
 .closing-entered:not(.section-route):not(.footer-rule),.section-route.closing-entered path,.footer-rule.closing-entered path{animation:none}
 .section-route.closing-pending path,.footer-rule.closing-pending path{stroke-dasharray:none;stroke-dashoffset:0;clip-path:none}
 .ai-flow .ai-icon,.ai-flow .ai-icon svg,.ai-flow .icon-accent,.ai-flow h3,.ai-flow p,.ai-principles h3,.ai-principles p,.ai-principles>div:after,.delivery-stages h3,.delivery-stages p,.delivery-stages li>span,.delivery-stages li:before,.global-delivery .dubai-pin,.project-action .cta-bolt,.project-action .cta-label>span{transition:none}
 .ai-flow li:hover .ai-icon,.ai-flow li:hover .ai-icon svg,.delivery-stages li:hover:before,.delivery-stages li:hover>span,.global-delivery:hover .dubai-pin,.project-action:has(.cta-orb:hover) .cta-bolt,.project-action:has(.cta-orb:focus-visible) .cta-bolt,.project-action .cta-orb:hover .cta-label>span,.project-action .cta-orb:focus-visible .cta-label>span,.project-action .cta-orb:active{transform:none}
}
