/* Elk & Squirrel: motion and anchor resets on top of site.css. ui-motion (ELK standard, 6 Nov 2026):
   transform and opacity only, ease-out in, ease-in out about 20% shorter, no bounce. */
.es a{color:var(--gold-ink)}
.es a:hover{color:var(--g900)}
.es a.btn,.es a.svc-row,.es a.dd-item,.es a.f-link,.es a.m-link,.es a.m-sub,.es a.nav-link,.es a.text-link,.es a.brand,.es a.proj-card{text-decoration:none}
.es a.svc-row{color:var(--ink)}
.es a.f-link,.es a.m-sub,.es a.nav-link{color:var(--on-dark-soft)}
.es a.m-link,.es a.brand{color:var(--cream)}
.es a.f-link:hover,.es a.m-link:hover,.es a.nav-link:hover,.es a.brand:hover{color:var(--cream)}
.es a.nav-link.is-active{color:var(--gold)}
.es a.dd-item{color:var(--ink)}
.es a.btn-gold,.es a.btn-gold:hover{color:var(--g950)}
.es a.btn-ink,.es a.btn-ink:hover{color:var(--cream)}
.es a.btn-ghost{color:var(--on-dark)}
.es a.btn-line{color:var(--ink)}
.es .text-link{color:inherit}
.quote-mark::before{content:"\201C"}

/* Rule 1, 4: entrances ease-out; press to .97 in 150 ms */
.es .btn,.es .svc-row,.es .proj-card,.es .pair,.es .panel,.es .nav-link,.es .f-link,.es .dd-item,.es .m-link,.es .m-sub,.es .text-link{transition:transform .25s cubic-bezier(.22,1,.36,1),opacity .25s ease-out,background-color .2s ease-out,color .2s ease-out,border-color .2s ease-out,box-shadow .25s ease-out}
.es .btn:active,.es .svc-row:active,.es .dd-item:active,.es .f-link:active,.es .m-link:active,.es .m-sub:active,.es .burger:active,.es .brand:active,.es .text-link:active{transform:scale(.97);transition-duration:.15s}
.es .svc-row:hover,.es .proj-card:hover{transform:translateY(-3px)}

/* Rules 2, 10, 11, 12, 15: dropdown 200 ms from scale(.95) at the trigger, exit 160 ms toward it */
.es .dropdown{display:none;transform-origin:top left}
.es .dropdown.open{display:block;animation:dd-in .2s cubic-bezier(.22,1,.36,1) both}
.es .dropdown.closing{display:block;animation:dd-out .16s ease-in both}
@keyframes dd-in{from{opacity:0;transform:scale(.95) translateY(-4px)}to{opacity:1;transform:none}}
@keyframes dd-out{from{opacity:1;transform:none}to{opacity:0;transform:scale(.95) translateY(-4px)}}
.es .dropdown.open .dd-item{animation:row-in .25s cubic-bezier(.22,1,.36,1) both}
.es .mobile-panel{display:none;transform-origin:top right}
.es .mobile-panel.open{display:block;animation:dd-in .22s cubic-bezier(.22,1,.36,1) both}
.es .mobile-panel.closing{display:block;animation:dd-out .18s ease-in both}
@media (min-width:1061px){.es .mobile-panel.open,.es .mobile-panel.closing{display:none}}
.es .caret{transition:transform .2s cubic-bezier(.22,1,.36,1)}
.es .caret.open{transform:rotate(180deg)}

/* Rule 3: rows and cards reveal with a 30 ms stagger, capped near ten */
.es .page-in{animation:page-in .25s cubic-bezier(.22,1,.36,1) both}
@keyframes page-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes row-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.es .svc-rows>*,.es .steps>li,.es .steps>.step,.es .pair-list>*,.es .cols-2>*,.es .cols-3>*,.es .dropdown.open>*{animation-name:row-in;animation-duration:.25s;animation-timing-function:cubic-bezier(.22,1,.36,1);animation-fill-mode:both}
.es .svc-rows>:nth-child(2),.es .steps>:nth-child(2),.es .pair-list>:nth-child(2),.es .cols-2>:nth-child(2),.es .cols-3>:nth-child(2),.es .dropdown>:nth-child(2){animation-delay:30ms}
.es .svc-rows>:nth-child(3),.es .steps>:nth-child(3),.es .pair-list>:nth-child(3),.es .cols-3>:nth-child(3),.es .dropdown>:nth-child(3){animation-delay:60ms}
.es .svc-rows>:nth-child(4),.es .steps>:nth-child(4),.es .pair-list>:nth-child(4),.es .dropdown>:nth-child(4){animation-delay:90ms}
.es .steps>:nth-child(5),.es .pair-list>:nth-child(5){animation-delay:120ms}
.es .pair-list>:nth-child(6){animation-delay:150ms}
.es .pair-list>:nth-child(7){animation-delay:180ms}
.es .pair-list>:nth-child(8){animation-delay:210ms}
.es .pair-list>:nth-child(9){animation-delay:240ms}
.es .pair-list>:nth-child(10){animation-delay:270ms}
.es .pair-list>:nth-child(n+11){animation-delay:300ms}

/* Rule 8: one pulse on a confirmation */
.es .notice{animation:pulse .3s ease-out 1}
@keyframes pulse{50%{transform:scale(1.02)}}

/* Forms: wiring follows in the Worker task */
.es .form-pending{font-size:14px;color:var(--ink-soft);text-align:center}
.es .btn[disabled]{opacity:.55;cursor:not-allowed;transform:none!important}
.es .hp{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}

@media (prefers-reduced-motion: reduce){
.es *,.es *::before,.es *::after{animation-duration:1ms!important;animation-delay:0ms!important;animation-iteration-count:1!important;transition-duration:1ms!important;scroll-behavior:auto!important}
.es .dropdown.open,.es .mobile-panel.open,.es .page-in{animation:none!important;transition:opacity .15s ease-out!important;transform:none!important}
.es .dropdown.closing,.es .mobile-panel.closing{animation:none!important;display:none}
.es .btn:active,.es .svc-row:hover,.es .proj-card:hover,.es .svc-row:active,.es .dd-item:active{transform:none!important}
}

/* Sticky first column on split sections (Pricing, Redesigns): only when the two columns sit side by side */
@media (min-width: 900px){.es .sticky-col{position:sticky;top:110px}}
