/* Interactive effects layer — mouse devices only; disabled for reduced motion */
.fx-progress{position:fixed;top:0;left:0;height:2px;width:100%;transform-origin:0 50%;transform:scaleX(0);background:var(--cedar);z-index:60;pointer-events:none}
.fx-cursor,.fx-ring{position:fixed;top:0;left:0;pointer-events:none;z-index:200;opacity:0;transition:opacity .3s}
.fx-on .fx-cursor,.fx-on .fx-ring{opacity:1}
.fx-cursor{width:6px;height:6px;margin:-3px 0 0 -3px;border-radius:50%;background:var(--cedar)}
.fx-ring{width:38px;height:38px;margin:-19px 0 0 -19px;border:1px solid var(--cedar);border-radius:50%;display:grid;place-items:center;font:500 9px/1 var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--paper);transition:opacity .3s,width .35s cubic-bezier(.2,.8,.2,1),height .35s cubic-bezier(.2,.8,.2,1),margin .35s cubic-bezier(.2,.8,.2,1),background .3s,border-color .3s}
.fx-ring.link{width:60px;height:60px;margin:-30px 0 0 -30px;background:rgba(88,53,31,.1)}
.fx-ring.view{width:92px;height:92px;margin:-46px 0 0 -46px;background:var(--cedar);border-color:var(--cedar)}
.fx-ring.down{width:26px;height:26px;margin:-13px 0 0 -13px}
.fx-on.fx-dark .fx-cursor{background:#f0e9dc}.fx-on.fx-dark .fx-ring{border-color:#f0e9dc}
@media(hover:hover) and (pointer:fine){.fx-on,.fx-on a,.fx-on button,.fx-on img[data-lightbox]{cursor:none}}
.fx-reveal{opacity:0;transform:translateY(34px);transition:opacity .9s cubic-bezier(.2,.7,.2,1),transform .9s cubic-bezier(.2,.7,.2,1);transition-delay:var(--d,0s)}
.fx-reveal.in{opacity:1;transform:none}
.fx-tilt{transform-style:preserve-3d;will-change:transform;transition:transform .5s cubic-bezier(.2,.7,.2,1)}
.fx-tilt.moving{transition:transform .08s linear}
.fx-tilt img{transition:transform .8s cubic-bezier(.2,.7,.2,1)}
.fx-tilt:hover img{transform:scale(1.045)}
.fx-glare{position:absolute;inset:0;pointer-events:none;opacity:0;transition:opacity .4s;background:radial-gradient(circle at var(--gx,50%) var(--gy,50%),rgba(255,250,240,.38),transparent 55%);mix-blend-mode:soft-light;z-index:2}
.fx-tilt:hover .fx-glare{opacity:1}
.fx-mag{display:inline-block;will-change:transform;transition:transform .35s cubic-bezier(.2,.7,.2,1)}
.fx-mag.moving{transition:transform .08s linear}
.fx-spot{position:relative;overflow:hidden}
.fx-spot:after{content:'';position:absolute;inset:0;pointer-events:none;opacity:0;transition:opacity .5s;background:radial-gradient(420px circle at var(--sx,50%) var(--sy,50%),rgba(240,233,220,.16),transparent 65%)}
.fx-spot:hover:after{opacity:1}
.hero h1>span{display:block;will-change:transform;transition:transform .6s cubic-bezier(.2,.7,.2,1)}
.hero-image img{will-change:transform;transition:transform .7s cubic-bezier(.2,.7,.2,1);transform:scale(1.06)}
.fx-trail{position:fixed;top:0;left:0;width:70px;height:92px;pointer-events:none;z-index:15;border-radius:2px;background-size:cover;background-position:center;opacity:0;box-shadow:0 18px 40px rgba(40,30,20,.25)}
@media(prefers-reduced-motion:reduce){.fx-reveal{opacity:1;transform:none}.fx-cursor,.fx-ring,.fx-trail{display:none}}
