/* Shared base for all site templates (pairs with motion.js). */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%;text-rendering:optimizeLegibility}
html.lenis,html.lenis body{height:auto}
.lenis.lenis-smooth{scroll-behavior:auto!important}
img{display:block;max-width:100%;height:auto}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
:focus-visible{outline:2px solid currentColor;outline-offset:4px}

/* split words */
.mx-w{display:inline-block;overflow:hidden;vertical-align:top;padding-bottom:.08em;margin-bottom:-.08em}
.mx-wi{display:inline-block;will-change:transform}
.mx-wc{display:inline-block;white-space:nowrap}
.mx-ch{display:inline-block;will-change:transform,filter}

/* hide until animated (only when motion.js is running) */
html.motion [data-reveal],html.motion [data-stagger]>*{visibility:hidden}

/* clip images need a box */
[data-clip]{overflow:hidden;position:relative}
[data-clip] img{width:100%;height:100%;object-fit:cover;will-change:transform}
.fill{overflow:hidden;position:relative}.fill>img{width:100%;height:100%;object-fit:cover;display:block}

/* marquee */
[data-marquee]{display:flex;overflow:hidden;white-space:nowrap;user-select:none;--speed:38s}
[data-marquee]>*{flex:none;display:flex;align-items:center;animation:mq var(--speed) linear infinite}
@keyframes mq{to{transform:translateX(-100%)}}

/* floating cursor image */
.hover-float{position:fixed;left:0;top:0;width:280px;height:200px;margin:-100px 0 0 -140px;pointer-events:none;z-index:90;border-radius:14px;overflow:hidden;box-shadow:0 30px 60px -20px rgba(0,0,0,.5)}
.hover-float img{width:100%;height:100%;object-fit:cover}

/* accordions */
details[data-acc] .acc-body{overflow:hidden;transition:height .38s cubic-bezier(.2,.7,.2,1)}
details[data-acc] summary{list-style:none;cursor:pointer}
details[data-acc] summary::-webkit-details-marker{display:none}

/* nav show/hide */
[data-nav]{transition:transform .5s cubic-bezier(.2,.7,.2,1),background .3s,box-shadow .3s}
[data-nav].is-hidden{transform:translateY(-120%)}

/* demo ribbon */
.demo-tag{position:fixed;left:16px;bottom:16px;z-index:80;font:600 12px/1 system-ui,sans-serif;letter-spacing:.02em;background:#111;color:#fff;padding:9px 12px;border-radius:999px;opacity:.85}

@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
