/* shared modern building blocks */
body{-webkit-font-smoothing:antialiased;overflow-x:hidden}
.wrap{max-width:1200px;margin:0 auto;padding:0 24px}
.btn{border-radius:99px;padding:15px 28px;transition:transform .2s,box-shadow .2s,filter .2s;font-size:15px}
.btn:hover{transform:translateY(-2px);box-shadow:0 12px 28px -8px var(--accent)}
.btn.ghost{border-width:1.5px}

/* floating glass nav */
.nav{position:sticky;top:14px;z-index:50;margin:14px auto 0;max-width:1200px;padding:0 24px}
.nav .in{display:flex;align-items:center;justify-content:space-between;padding:10px 12px 10px 22px;border-radius:99px;backdrop-filter:blur(18px) saturate(1.4);-webkit-backdrop-filter:blur(18px) saturate(1.4);background:var(--navbg,rgba(255,255,255,.7));border:1px solid var(--navbd,rgba(0,0,0,.06));box-shadow:0 8px 30px -12px rgba(0,0,0,.2)}
.nav .logo{font-weight:800;font-size:19px;letter-spacing:-.02em;text-decoration:none}
.nav .links{display:flex;align-items:center;gap:26px;font-size:14px;font-weight:500}
.nav .links a{text-decoration:none;opacity:.75;transition:.2s}.nav .links a:hover{opacity:1}
.nav .links .btn{padding:10px 20px;opacity:1}
@media(max-width:720px){.nav .links a:not(.btn){display:none}}

/* photo slots: drop images/<slot>.jpg to replace the gradient */
.img{position:relative;background-size:cover;background-position:center;overflow:hidden;isolation:isolate}
.img:not(.has)::after{content:attr(data-slot);position:absolute;left:14px;bottom:12px;font:600 10px/1 ui-monospace,monospace;letter-spacing:.08em;text-transform:uppercase;opacity:.45;color:#fff;mix-blend-mode:overlay}
.img .em{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:var(--es,84px);filter:drop-shadow(0 18px 24px rgba(0,0,0,.25));transition:transform .6s cubic-bezier(.2,.8,.2,1)}
.img.has .em{display:none}
.zoom:hover .em,.zoom:hover.img.has{transform:scale(1.07)}

/* reveal on scroll */
.reveal{opacity:0;transform:translateY(34px);transition:opacity .9s cubic-bezier(.2,.8,.2,1),transform .9s cubic-bezier(.2,.8,.2,1)}
.reveal.in{opacity:1;transform:none}
.d1{transition-delay:.1s}.d2{transition-delay:.2s}.d3{transition-delay:.3s}

/* marquee */
.marquee{overflow:hidden;white-space:nowrap;padding:18px 0}
.marquee div{display:inline-block;animation:mq 28s linear infinite}
.marquee span{display:inline-block;margin:0 26px}
@keyframes mq{to{transform:translateX(-50%)}}

/* cursor spotlight */
.spot{position:relative;overflow:hidden}
.spot::before{content:"";position:absolute;inset:0;background:radial-gradient(380px circle at var(--mx,50%) var(--my,50%),var(--spot,rgba(255,255,255,.14)),transparent 60%);opacity:0;transition:opacity .3s;pointer-events:none;z-index:1}
.spot:hover::before{opacity:1}

/* floating blobs */
.blob{position:absolute;border-radius:50%;filter:blur(70px);opacity:.55;pointer-events:none;animation:fl 14s ease-in-out infinite alternate}
@keyframes fl{to{transform:translate(40px,-30px) scale(1.15)}}
.eyebrow{display:inline-block;font-size:12px;font-weight:700;letter-spacing:.14em;text-transform:uppercase}
.pillTag{display:inline-flex;align-items:center;gap:8px;padding:7px 14px;border-radius:99px;font-size:13px;font-weight:600}
.dot{width:8px;height:8px;border-radius:50%;background:#2fd573;box-shadow:0 0 0 4px rgba(47,213,115,.25);animation:pl 2s infinite}
@keyframes pl{50%{box-shadow:0 0 0 8px rgba(47,213,115,0)}}
@media(prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none}*{animation:none!important}}
.img.has{background-size:cover!important;background-repeat:no-repeat!important;background-position:center!important}
