.page-loader { position: fixed; inset: 0; z-index: 10000; display: grid; place-items: center; background: var(--charcoal); transition: opacity .55s ease, visibility .55s ease; }
.page-loader.loaded { opacity: 0; visibility: hidden; }
.loader-mark { width: 78px; height: 78px; display: grid; place-items: center; border-radius: 24px; color: var(--gold); border: 1px solid rgba(216,168,89,.45); background: linear-gradient(145deg, rgba(255,255,255,.08), rgba(255,255,255,.02)); animation: loaderPulse 1.2s ease-in-out infinite; }
.loader-mark span { font-family: var(--font-display); font-weight: 800; font-size: 2.4rem; }
@keyframes loaderPulse { 0%,100% { transform: scale(1); box-shadow: 0 0 0 rgba(216,168,89,0); } 50% { transform: scale(1.06); box-shadow: 0 0 44px rgba(216,168,89,.28); } }
@keyframes floatSlow { 0%,100% { transform: translate3d(0,0,0) rotate(0deg); } 50% { transform: translate3d(0,-18px,0) rotate(2deg); } }
@keyframes shimmer { 0% { transform: translateX(-120%); } 100% { transform: translateX(120%); } }
@keyframes scrollCue { 0% { transform: translateY(0); opacity: 1; } 80% { transform: translateY(18px); opacity: .15; } 100% { transform: translateY(0); opacity: 1; } }
.reveal-mask { overflow: hidden; }
.reveal-mask > * { animation: revealUp .9s cubic-bezier(.2,.8,.2,1) both; }
@keyframes revealUp { from { transform: translateY(110%); opacity: 0; } to { transform: translateY(0); opacity: 1; } }
.hover-lift { transition: transform var(--transition), box-shadow var(--transition); }
.hover-lift:hover { transform: translateY(-8px); box-shadow: var(--shadow-md); }
.image-zoom { overflow: hidden; border-radius: inherit; }
.image-zoom img { transition: transform 900ms cubic-bezier(.2,.7,.2,1); }
.image-zoom:hover img { transform: scale(1.06); }
