/* React Bits / MXA DOM adaptations. Copyright (c) 2026 David Haz.
 * Original components: https://github.com/DavidHDev/react-bits
 * MIT + Commons Clause notice: /licenses/react-bits.txt */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.craft-ribbon.marquee{position:relative;display:block;padding:0;background:#0d1d22;border-block:1px solid #c7ded328;overflow:hidden}
.marquee-window{width:100%;overflow:hidden;padding:12px 0;mask-image:linear-gradient(90deg,transparent,#000 3%,#000 92%,transparent)}
.marquee-track{display:flex;align-items:center;width:max-content;will-change:transform}
.marquee-lap{display:flex;align-items:center;gap:34px;flex-shrink:0;padding-right:34px;font-family:var(--serif);font-size:36px;line-height:1.1;letter-spacing:-.025em;color:var(--muted);white-space:nowrap}
.marquee-lap i{font-family:var(--sans);font-style:normal;font-size:23px;color:var(--olive)}
.marquee-pause{position:absolute;right:var(--page-pad);top:50%;transform:translateY(-50%);width:44px;height:44px;display:grid;place-items:center;border:1px solid #c7ded366;background:#0d1d22;color:var(--ink);font-size:20px;box-shadow:0 0 25px 12px #0d1d22;z-index:1}
.marquee-pause:hover{background:var(--accent);color:var(--paper)}
/* Default and pending content stay readable, including before observation. */
.motion-item{opacity:1;transform:none;filter:none}
.motion-on .motion-item:not(.motion-entered){opacity:.35;transform:translateY(28px) scale(.985);filter:blur(4px)}
.motion-on .motion-item.motion-entered{animation:ew-content-in .78s cubic-bezier(.16,1,.3,1) both;animation-delay:var(--enter-delay,0ms)}
.motion-on .motion-item:focus-within{opacity:1!important;transform:none!important;filter:none!important;animation:none!important}
@keyframes ew-content-in{0%{opacity:.35;filter:blur(4px);transform:translateY(28px) scale(.985)}100%{opacity:1;filter:none;transform:none}}
.motion-item.motion-settled{opacity:1!important;transform:none!important;filter:none!important;animation:none!important}
.hero-title-enter{animation:ew-heading-in .85s cubic-bezier(.2,.75,.25,1) both}
@keyframes ew-heading-in{from{opacity:.85;filter:blur(2px);transform:translateY(9px)}to{opacity:1;filter:none;transform:none}}
.work-photo.motion-photo>img,.hero-image-frame.motion-photo>img{transform:perspective(1100px) rotateX(var(--tilt-x,0deg)) rotateY(var(--tilt-y,0deg));transform-origin:center;transition:transform .38s cubic-bezier(.2,.8,.2,1),filter .3s}
.motion-photo::after{content:'';position:absolute;inset:0;pointer-events:none;z-index:1;opacity:0;background:linear-gradient(115deg,transparent 33%,#fff0d531 48%,transparent 64%);background-size:240% 100%;background-position:140% 0;transition:opacity .35s,background-position .9s cubic-bezier(.2,.8,.2,1)}
.motion-photo .photo-open,.motion-photo .photo-views,.motion-photo .hero-photo-count{z-index:2}
@media(hover:hover) and (pointer:fine){.motion-on .motion-photo:hover::after{opacity:1;background-position:-45% 0}}
.motion-photo.motion-touch-glare::after{opacity:1;background-position:-45% 0}
.magnet-label{display:inline-flex;justify-content:space-between;align-items:center;gap:inherit;width:100%;transform:translate(var(--magnet-x,0px),var(--magnet-y,0px));transition:transform .3s cubic-bezier(.2,.8,.2,1);font:inherit}
.magnet-label>span{font-size:20px;line-height:1;font-weight:400}
.primary-button>.magnet-label,.header .nav-contact>.magnet-label{font:inherit;line-height:inherit}
.disclosure-body{min-width:0}.disclosure-animating{overflow:hidden}
.lightbox[open]{animation:ew-dialog-in .34s cubic-bezier(.16,1,.3,1)}
.lightbox[open]::backdrop{animation:ew-backdrop-in .34s ease-out both}
.lightbox[open] .lightbox-visual{animation:ew-dialog-photo-in .36s cubic-bezier(.16,1,.3,1) .04s both}
.lightbox[open] .lightbox-detail{animation:ew-dialog-detail-in .38s cubic-bezier(.16,1,.3,1) .075s both}
@keyframes ew-dialog-in{from{opacity:.82;transform:translateY(12px) scale(.99)}to{opacity:1;transform:none}}
@keyframes ew-backdrop-in{from{opacity:0}to{opacity:1}}
@keyframes ew-dialog-photo-in{from{opacity:.76;transform:translateY(10px)}to{opacity:1;transform:none}}
@keyframes ew-dialog-detail-in{from{opacity:.8;transform:translateY(8px)}to{opacity:1;transform:none}}
@media(max-width:760px){.marquee-window{padding:17px 0}.marquee-lap{font-size:38px;gap:23px;padding-right:23px}.marquee-lap i{font-size:25px}.marquee-pause{right:16px}.motion-on .motion-item:not(.motion-entered){opacity:.5;filter:blur(2px);transform:translateY(18px)}.motion-on .motion-item.motion-entered{animation-name:ew-mobile-content-in;animation-duration:.62s}}
@keyframes ew-mobile-content-in{from{opacity:.5;filter:blur(2px);transform:translateY(18px)}to{opacity:1;filter:none;transform:none}}
@media(prefers-reduced-motion:reduce){.motion-item,.hero-title-enter,.motion-photo>img,.magnet-label{opacity:1!important;transform:none!important;filter:none!important;animation:none!important}.motion-photo::after{display:none}.craft-ribbon.marquee{background:#0d1d22}.marquee-window{mask-image:none;padding:17px var(--page-pad)}.marquee-track{width:100%;transform:none!important}.marquee-lap{flex-wrap:wrap;gap:8px 18px;padding:0;font-family:var(--sans);font-size:14px;letter-spacing:0;line-height:1.8;white-space:normal;color:var(--muted)}.marquee-lap i{font-size:19px;color:var(--accent)}.marquee-lap:nth-child(2){display:none}.marquee-lap i:last-child{display:none}.marquee-pause{display:none}.lightbox[open],.lightbox[open]::backdrop,.lightbox[open] .lightbox-visual,.lightbox[open] .lightbox-detail{animation:none}}

/* Product hit targets stay fixed during entrance and keyboard focus. */
.motion-on .work-card.motion-item:not(.motion-entered){transform:none}
.motion-on .work-card.motion-item.motion-entered{animation-name:ew-card-visible}
@keyframes ew-card-visible{from{opacity:.4;filter:blur(3px)}to{opacity:1;filter:none}}
