/* Section-specific motion layer. */
@keyframes fl-float-note{0%,100%{translate:0 0}50%{translate:0 -7px}}
@keyframes fl-press{0%{scale:1}45%{scale:.94}100%{scale:1}}
@keyframes fl-gallery-in{from{opacity:0;transform:translateY(18px) scale(.985)}to{opacity:1;transform:none}}
@keyframes fl-image-in{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
.fl-note-hire{animation:fl-float-note 4.6s ease-in-out infinite}
.fl-note-year{animation:fl-float-note 5.2s ease-in-out .7s infinite}
.fl-motion-press,.fl-page .fl-click-wobble{animation:fl-press .32s cubic-bezier(.22,1,.36,1)!important}
.fl-split-parent{overflow:hidden}
.fl-split-char{display:inline-block;will-change:transform,opacity}
.motion-ready .fl-section .fl-wide-head>p,.motion-ready .fl-about-card,.motion-ready .fl-id-card{opacity:0;transform:translateY(24px)}
.motion-ready .fl-section.fl-motion-in .fl-wide-head>p,.motion-ready .fl-section.fl-motion-in .fl-about-card,.motion-ready .fl-section.fl-motion-in .fl-id-card{opacity:1;transform:none;transition:opacity .7s ease,transform .8s cubic-bezier(.22,1,.36,1)}
.motion-ready .fl-section.fl-motion-in .fl-wide-head>p{transition-delay:.12s}
.gsap-motion-ready .fl-reveal,.gsap-motion-ready .fl-reveal.is-visible{opacity:1!important;transform:none!important;animation:none!important}
.fl-about-card{transition:opacity .7s ease,transform .8s cubic-bezier(.22,1,.36,1),box-shadow .35s ease!important}
.fl-about-card:hover{transform:translateY(-4px)!important;box-shadow:0 18px 45px rgba(0,0,0,.06)}
.fl-tags span{transition:transform .25s ease,background .25s ease}
.fl-tags span:hover{transform:translateY(-2px);background:#fff}
.fl-id-card{transition:transform .4s cubic-bezier(.22,1,.36,1)}
.fl-id-card:hover{transform:translateY(-4px) rotate(-.35deg)}
.fl-id-card img{transition:filter .45s ease}
.fl-id-card:hover img{filter:saturate(1)}
.motion-ready .fl-work .fl-route{opacity:0;clip-path:inset(0 100% 0 0)}
.motion-ready .fl-work.fl-motion-in .fl-route{opacity:1;clip-path:inset(0);transition:opacity .3s ease,clip-path 1.5s cubic-bezier(.22,1,.36,1)}
.motion-ready .fl-work .fl-job{opacity:0;translate:0 40px}
.motion-ready .fl-work.fl-motion-in .fl-job{opacity:1;translate:0 0;transition:opacity 1.25s ease,translate 1.25s cubic-bezier(.215,.61,.355,1),min-height .65s cubic-bezier(.22,1,.36,1),height .65s cubic-bezier(.22,1,.36,1),padding .65s cubic-bezier(.22,1,.36,1),transform .65s cubic-bezier(.22,1,.36,1),box-shadow .65s ease!important}
.motion-ready .fl-work.fl-motion-in .fl-job:nth-of-type(2){transition-delay:.1s}
.motion-ready .fl-work.fl-motion-in .fl-job:nth-of-type(3){transition-delay:.2s}
.motion-ready .fl-work.fl-motion-in .fl-job:nth-of-type(4){transition-delay:.3s}
.motion-ready .fl-work.fl-motion-in .fl-job:nth-of-type(5){transition-delay:.4s}
.motion-ready .fl-map.fl-jobs-gsap .fl-job,
.motion-ready .fl-work.fl-motion-in .fl-map.fl-jobs-gsap .fl-job{translate:none!important;transition:min-height .65s cubic-bezier(.22,1,.36,1),height .65s cubic-bezier(.22,1,.36,1),padding .65s cubic-bezier(.22,1,.36,1),transform .65s cubic-bezier(.22,1,.36,1),box-shadow .65s ease!important}
.motion-ready .fl-data-grid article,.motion-ready .fl-work-card,.motion-ready .fl-metrics>*{opacity:0;translate:0 24px}
.motion-ready .fl-motion-in .fl-data-grid article,.motion-ready .fl-motion-in .fl-work-card,.motion-ready .fl-motion-in .fl-metrics>*{opacity:1;translate:0 0;transition:opacity .58s ease,translate .7s cubic-bezier(.22,1,.36,1),transform .4s cubic-bezier(.22,1,.36,1),box-shadow .35s ease}
.motion-ready .fl-motion-in :is(.fl-data-grid article,.fl-work-card,.fl-metrics>*):nth-child(2){transition-delay:.1s}
.motion-ready .fl-motion-in :is(.fl-data-grid article,.fl-work-card,.fl-metrics>*):nth-child(3){transition-delay:.2s}
.motion-ready .fl-motion-in :is(.fl-data-grid article,.fl-work-card,.fl-metrics>*):nth-child(4){transition-delay:.3s}
.fl-work-card{transition:transform .38s cubic-bezier(.22,1,.36,1),box-shadow .35s ease!important}
.fl-work-card:hover{transform:translateY(-5px) rotate(-.25deg);box-shadow:0 16px 38px rgba(0,0,0,.09)}
.fl-cover img{transition:transform .65s cubic-bezier(.22,1,.36,1),filter .45s ease!important}
.fl-cover{overflow:hidden!important}
.fl-work-card:hover .fl-cover img{transform:scale(1.035);filter:saturate(1.04)}
.fl-data-grid article{transition:transform .38s cubic-bezier(.22,1,.36,1)!important}
.fl-data-grid article:hover{transform:translateY(-4px) rotate(-.35deg)!important;z-index:5}
.motion-ready .fl-contact-grid article{opacity:0;translate:0 20px}
.motion-ready .fl-contact.fl-motion-in .fl-contact-grid article{opacity:1;translate:0 0;transition:opacity .55s ease,translate .65s cubic-bezier(.22,1,.36,1)}
.motion-ready .fl-contact.fl-motion-in .fl-contact-grid article:nth-child(2){transition-delay:.12s}
.motion-ready .fl-contact.fl-motion-in .fl-contact-grid article:nth-child(3){transition-delay:.24s}
.fl-contact-grid article:hover strong{transform:translateX(4px)}
.fl-contact-grid strong{transition:transform .3s ease}
.fl-dock a{transition:transform .28s cubic-bezier(.22,1,.36,1),background .25s ease}
.fl-dock a:hover{transform:translateY(-5px) scale(1.04)}
#portfolio-gallery-modal:not([hidden]) .portfolio-gallery-panel{animation:fl-gallery-in .42s cubic-bezier(.22,1,.36,1) both}
.portfolio-gallery-grid img{animation:fl-image-in .5s ease both}
.portfolio-gallery-grid img:nth-child(-n+4){animation-delay:.08s}
