/* Approved Engineered Assembly motion, scoped to enabled marketing pages. */
.motion-enabled { --assembly-ease: cubic-bezier(.2,.7,.2,1); }
.motion-enabled .assembly-sr-only { position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap; }
.motion-enabled .assembly-controls { display:flex;align-items:center;flex-wrap:wrap;gap:10px 16px;min-height:64px;margin-top:20px; }
.motion-enabled .assembly-controls button { background:transparent;border:1px solid #616860;border-radius:2px;color:#f3f2ec;padding:10px 13px;min-height:44px;font:500 11px/1.4 Inter,sans-serif; }
.motion-enabled .assembly-controls button:hover:not(:disabled) { border-color:#d9f56b;color:#d9f56b; }
.motion-enabled .assembly-controls button:disabled { opacity:.6;cursor:default; }
.motion-enabled .assembly-controls a { color:#aeb8b0;font:11px/1.5 Inter,sans-serif;text-underline-offset:4px; }
.motion-enabled .hero-copy { animation:none;opacity:1;transform:none; }
.motion-enabled .hero h1 > .assembly-line { display:block;color:#f3f2ec;opacity:1;transform:none; }
.motion-enabled .hero h1 > .assembly-line--accent { color:#d9f56b; }
/* Replace the selected components' previous animation ownership, not their design. */
.motion-enabled .hero-art .structure-upper,
.motion-enabled .hero-art .structure-lower,
.motion-enabled .hero-art .structure-markers,
.motion-enabled .hero-art .structure-foundation,
.motion-enabled .hero-art .structure-direction,
.motion-enabled .hero-art .art-caption span,
.motion-enabled .intro.intro-animated h2,
.motion-enabled .intro.intro-animated .intro-body,
.motion-enabled .intro.intro-animated .small-cross,
.motion-enabled .thinking-animation .thinking-map *,
.motion-enabled .thinking-animation .steps li,
.motion-enabled .thinking-animation .steps li::before { animation:none; }
.motion-enabled .hero-art .structure-foundation,
.motion-enabled .hero-art .structure-direction { fill:#f3f2ec;opacity:1; }
.motion-enabled .thinking-animation .thinking-paths path,
.motion-enabled .thinking-animation .thinking-arrow { stroke-dasharray:none;stroke-dashoffset:0;opacity:1; }
.motion-enabled .thinking-animation .steps li::before { transform:scaleX(1); }
.motion-enabled .sculpture-glow-bounds::before,
.motion-enabled .thinking-glow::before { animation:none; }
.motion-enabled .assembly-signals { display:none;fill:#d9f56b;pointer-events:none; }
/* Layer lighting fades via opacity; no continuously animated shadow or blur. */
.motion-enabled .assembly-card { isolation:isolate; }
.motion-enabled .assembly-card::after { content:"";position:absolute;inset:-1px;border:1px solid #d9f56b;border-radius:3px;background:linear-gradient(125deg,rgba(217,245,107,.09),transparent 55%);opacity:0;pointer-events:none;z-index:0; }
.motion-enabled .assembly-card > :not(.service-icon) { position:relative;z-index:1; }
.motion-enabled .assembly-card > .service-icon { z-index:1; }
.motion-enabled .assembly-card:focus-within::after { opacity:1; }
.motion-enabled .assembly-card:focus-within .text-link .ui-icon { transform:translate(2px,-2px); }
.motion-enabled .assembly-card .text-link .ui-icon { transition:transform 180ms ease; }
/* A single vocabulary for the study's entrances. Content is never pre-hidden. */
@media(prefers-reduced-motion:no-preference) {
 .motion-enabled.assembly-ready .assembly-intro .assembly-line { animation:assembly-line-settle 600ms var(--assembly-ease) both; }
 .motion-enabled.assembly-ready .assembly-intro .assembly-line:nth-child(2) { animation-delay:65ms; }
 .motion-enabled.assembly-ready .assembly-intro .assembly-line:nth-child(3) { animation-delay:130ms; }
 .motion-enabled.assembly-ready .assembly-intro .structure-upper { animation:assembly-upper-settle 850ms var(--assembly-ease) both; }
 .motion-enabled.assembly-ready .assembly-intro .structure-lower { animation:assembly-lower-settle 850ms 80ms var(--assembly-ease) both; }
 .motion-enabled.assembly-ready .sculpture-glow-bounds::before { animation:sculpture-glow-breathe 8s cubic-bezier(.45,0,.55,1) infinite; }
 .motion-enabled.assembly-ready .assembly-entered:is(.intro,.section-heading,.service,.approach-heading,.steps li,.principles,.client-logo-study) { animation:assembly-entrance 440ms var(--assembly-ease) both; }
 .motion-enabled.assembly-ready .assembly-connected .steps li:nth-child(2) { animation-delay:45ms; }
 .motion-enabled.assembly-ready .assembly-connected .steps li:nth-child(3) { animation-delay:90ms; }
 .motion-enabled.assembly-ready .assembly-connected .steps li:nth-child(4) { animation-delay:135ms; }
 .motion-enabled.assembly-ready .assembly-connected .assembly-signals { display:block; }
 .motion-enabled.assembly-ready .assembly-connected .assembly-signal--one { animation:assembly-signal-top 1400ms var(--assembly-ease) both; }
 .motion-enabled.assembly-ready .assembly-connected .assembly-signal--two { animation:assembly-signal-middle 1400ms 100ms var(--assembly-ease) both; }
 .motion-enabled.assembly-ready .assembly-connected .assembly-signal--three { animation:assembly-signal-bottom 1400ms 200ms var(--assembly-ease) both; }
 .motion-enabled.assembly-ready .assembly-connected .thinking-core { animation:assembly-core-settle 550ms 900ms var(--assembly-ease) both; }
 .motion-enabled.assembly-ready .assembly-connected .steps li::before { animation:assembly-rule 600ms var(--assembly-ease) both; }
 .motion-enabled .assembly-card::after { transition:opacity 200ms ease; }
}
@media(hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference) {
 .motion-enabled .assembly-card { transition:translate 200ms var(--assembly-ease); }
 .motion-enabled .assembly-card:hover { translate:0 -2px; }
 .motion-enabled .assembly-card:hover::after { opacity:1; }
 .motion-enabled .assembly-card:hover .text-link .ui-icon { transform:translate(2px,-2px); }
}
/* A surface's child animations stop when off screen or when the tab is hidden. */
.motion-enabled .assembly-surface[data-assembly-active="false"] *,
.motion-enabled .assembly-surface[data-assembly-active="false"]::before,
.motion-enabled .assembly-surface[data-assembly-active="false"] .sculpture-glow-bounds::before { animation-play-state:paused !important; }
.motion-enabled[data-assembly-paused] .hero *,
.motion-enabled[data-assembly-paused] .hero *::before,
.motion-enabled[data-assembly-paused] #approach *,
.motion-enabled[data-assembly-paused] #approach *::before,
.motion-enabled[data-assembly-paused] .assembly-entered { animation-play-state:paused !important; }
.motion-enabled[data-assembly-paused] .assembly-card,
.motion-enabled[data-assembly-paused] .assembly-card .ui-icon { translate:none;transform:none;transition:none; }
.motion-enabled[data-assembly-reduced] .hero .assembly-line,
.motion-enabled[data-assembly-reduced] .hero-art *,
.motion-enabled[data-assembly-reduced] .hero-art *::before,
.motion-enabled[data-assembly-reduced] #approach *,
.motion-enabled[data-assembly-reduced] #approach *::before,
.motion-enabled[data-assembly-reduced] .assembly-entered { animation:none !important; }
.motion-enabled[data-assembly-reduced] .assembly-signals { display:none !important; }
@media(max-width:700px) {
 .motion-enabled .hero-art .structure-direction { animation:none !important;transform:translateY(-90px); }
 .motion-enabled .assembly-controls { gap:8px 12px; }
 .motion-enabled .assembly-controls a { flex-basis:100%; }
 .motion-enabled .assembly-intro .assembly-line { --assembly-travel:4px; }
 .motion-enabled .assembly-intro .structure-upper,
 .motion-enabled .assembly-intro .structure-lower { --assembly-art-travel:6px; }
 .motion-enabled.assembly-ready .assembly-connected .assembly-signal--two,
 .motion-enabled.assembly-ready .assembly-connected .assembly-signal--three { display:none; }
 .motion-enabled .assembly-entered { --assembly-travel:4px; }
}
@media(prefers-reduced-motion:reduce) {
 .motion-enabled .assembly-card { translate:none; }
 .motion-enabled .assembly-card .ui-icon { transform:none; }
 .motion-enabled .assembly-signals { display:none; }
}
@media print { .motion-enabled .assembly-controls { display:none; } .motion-enabled * { animation:none !important; } }




@keyframes assembly-signal-top { 0% { opacity:0;transform:translate(0,0); } 15% { opacity:1; } 40% { transform:translate(58px,0); } 75% { transform:translate(108px,56px); } 90% { opacity:1; } 100% { opacity:0;transform:translate(168px,56px); } }
@keyframes assembly-signal-middle { 0% { opacity:0;transform:translate(0,0); } 15%,90% { opacity:1; } 100% { opacity:0;transform:translate(168px,0); } }
@keyframes assembly-signal-bottom { 0% { opacity:0;transform:translate(0,0); } 15% { opacity:1; } 40% { transform:translate(58px,0); } 75% { transform:translate(108px,-56px); } 90% { opacity:1; } 100% { opacity:0;transform:translate(168px,-56px); } }
@keyframes assembly-core-settle { from { transform:scale(.94); } to { transform:scale(1); } }
@keyframes assembly-rule { from { transform:scaleX(.5); } to { transform:scaleX(1); } }

.motion-enabled .assembly-entered:focus-within { animation:none !important;opacity:1;transform:none; }

/* Study revision: more visible choreography, with the approved scroll fades restored. */
@media(prefers-reduced-motion:no-preference) {
 .motion-enabled.assembly-ready .assembly-pending { opacity:0;transform:translateY(18px); }
 .motion-enabled.assembly-ready .assembly-entered:is(.intro,.section-heading,.service,.approach-heading,.steps li,.principles,.questions > div,.client-logo-heading,.client-logo-grid li) {
   animation:assembly-entrance 800ms var(--assembly-ease) both;
   animation-delay:var(--assembly-stagger,0ms);
 }
 .motion-enabled.assembly-ready .assembly-connected .steps li.assembly-entered {
   animation-delay:var(--assembly-stagger,0ms);
 }
 .motion-enabled.assembly-ready .assembly-intro .assembly-line { animation-duration:850ms; }
 .motion-enabled.assembly-ready .assembly-intro .assembly-line:nth-child(2) { animation-delay:120ms; }
 .motion-enabled.assembly-ready .assembly-intro .assembly-line:nth-child(3) { animation-delay:240ms; }
 .motion-enabled.assembly-ready .assembly-intro .structure-upper { animation-duration:1250ms; }
 .motion-enabled.assembly-ready .assembly-intro .structure-lower { animation-duration:1250ms;animation-delay:140ms; }
 .motion-enabled.assembly-ready .assembly-intro .hero-intro { animation:assembly-support-arrive 850ms 120ms var(--assembly-ease) both; }
 .motion-enabled.assembly-ready .assembly-intro .hero-copy > .button { animation:assembly-support-arrive 750ms 200ms var(--assembly-ease) both; }
 .motion-enabled.assembly-ready .assembly-intro .structure-markers { animation:assembly-marker 1400ms ease both; }
 .motion-enabled.assembly-ready .assembly-connected .assembly-signal { animation-duration:1800ms; }
 .motion-enabled.assembly-ready .assembly-connected .thinking-core { animation-delay:1200ms; }
 .motion-enabled.assembly-ready .assembly-connected .steps li::before { animation-duration:850ms;animation-delay:var(--assembly-stagger,0ms); }
}
.motion-enabled .assembly-card::after { border-color:#758c3c; }
.motion-enabled .assembly-card:first-child::after,
.motion-enabled .assembly-card.service--automation::after { border-color:#d9f56b; }
@media(hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference) {
 .motion-enabled .assembly-card:hover { translate:0 -3px; }
 .motion-enabled .assembly-card:hover .text-link .ui-icon { transform:translate(4px,-4px); }
}
.motion-enabled[data-assembly-paused] .assembly-pending,
.motion-enabled[data-assembly-paused] .assembly-entered,
.motion-enabled[data-assembly-reduced] .assembly-pending,
.motion-enabled[data-assembly-reduced] .assembly-entered {
 opacity:1 !important;transform:none !important;animation:none !important;
}
.motion-enabled[data-assembly-reduced] .hero-intro,
.motion-enabled[data-assembly-reduced] .hero-copy > .button { animation:none !important;opacity:1;transform:none; }
@media(max-width:700px) {
 .motion-enabled .assembly-intro .assembly-line { --assembly-travel:10px; }
 .motion-enabled .assembly-intro .structure-upper,
 .motion-enabled .assembly-intro .structure-lower { --assembly-art-travel:12px; }
 .motion-enabled .assembly-entered { --assembly-travel:10px; }
}
@media(prefers-reduced-motion:reduce) {
 .motion-enabled .assembly-pending { opacity:1 !important;transform:none !important; }
}
@media print { .motion-enabled .assembly-pending { opacity:1 !important;transform:none !important; } }
@keyframes assembly-line-settle {
 from { opacity:.75;transform:translateY(var(--assembly-travel,20px)); }
 to { opacity:1;transform:none; }
}
@keyframes assembly-upper-settle {
 from { transform:translateY(calc(-1 * var(--assembly-art-travel,28px))); }
 to { transform:none; }
}
@keyframes assembly-lower-settle {
 from { transform:translateY(var(--assembly-art-travel,28px)); }
 to { transform:none; }
}
@keyframes assembly-entrance {
 from { opacity:0;transform:translateY(var(--assembly-travel,18px)); }
 to { opacity:1;transform:none; }
}
@keyframes assembly-support-arrive {
 from { opacity:.55;transform:translateY(12px); }
 to { opacity:1;transform:none; }
}
@keyframes assembly-marker { 0% { opacity:.4; } 55% { opacity:1; } 100% { opacity:.7; } }

/* Calm continuous workflow signals, controlled by the existing surface lifecycle. */
@media(prefers-reduced-motion:no-preference) {
 .motion-enabled.assembly-ready .assembly-connected .assembly-signal {
   animation-duration:4200ms;
   animation-iteration-count:infinite;
   animation-timing-function:linear;
 }
 .motion-enabled.assembly-ready .assembly-connected .assembly-signal--two { animation-delay:700ms; }
 .motion-enabled.assembly-ready .assembly-connected .assembly-signal--three { animation-delay:1400ms; }
}

/* Adapt the approved homepage treatment to secondary page heroes and cards. */
.motion-enabled .assembly-card { position:relative; }
.motion-enabled .service-hero h1 > .assembly-line { display:block;color:var(--paper);opacity:1; }
.motion-enabled .service-hero h1 > .assembly-line--accent,
.motion-enabled .service-hero h1 .assembly-line > span { color:var(--lime); }
.motion-enabled .service-graphic svg text { animation:none;fill:var(--paper);opacity:1; }
.motion-enabled .service-hero .assembly-controls { margin-top:24px; }
.motion-enabled .service-graphic .concept-main { animation:none; }
.motion-enabled .project-card.assembly-card > .project-identity { position:relative; }
@media(prefers-reduced-motion:no-preference) {
 .motion-enabled.assembly-ready .service-hero.assembly-intro .assembly-line { animation:assembly-line-settle 850ms var(--assembly-ease) both; }
 .motion-enabled.assembly-ready .service-hero.assembly-intro .assembly-line:nth-child(2) { animation-delay:120ms; }
 .motion-enabled.assembly-ready .service-hero.assembly-intro .assembly-line:nth-child(3) { animation-delay:240ms; }
 .motion-enabled.assembly-ready .service-hero.assembly-intro .page-intro { animation:assembly-support-arrive 850ms 120ms var(--assembly-ease) both; }
 .motion-enabled.assembly-ready .service-hero.assembly-intro .concept-main { animation:assembly-lower-settle 1100ms var(--assembly-ease) both; }
 .motion-enabled.assembly-ready .assembly-entered:is(.service-overview > div,.service-detail > h2,.detail-grid article,.service-directory article,.team-profile,.about-collaboration,.project-card,.project-facts > div,.scope-section > div,.project-credits,.project-browse,.page-cta) {
   animation:assembly-entrance 800ms var(--assembly-ease) both;animation-delay:var(--assembly-stagger,0ms);
 }
}
/* Apply lifecycle controls to secondary heroes and their pseudo-element glows. */
.motion-enabled[data-assembly-paused] .service-hero *,
.motion-enabled[data-assembly-paused] .service-hero *::before { animation-play-state:paused !important; }
.motion-enabled[data-assembly-reduced] .service-hero *,
.motion-enabled[data-assembly-reduced] .service-hero *::before { animation:none !important; }
@media(prefers-reduced-motion:reduce) {
 .motion-enabled .service-hero .assembly-line { opacity:1;transform:none; }
}
@media(max-width:700px) {
 .motion-enabled .service-hero .assembly-line { --assembly-travel:10px; }
 .motion-enabled .service-graphic { --assembly-art-travel:12px; }
}
