html, body { background: #FFFFFF; color: #0A0E1A; font-family: 'Geist', system-ui, sans-serif; }
html { overflow-x: hidden; overflow-y: auto; }
body { overflow: visible; }
body { -webkit-font-smoothing: antialiased; }
::selection { background: #F40F41; color: #FFFFFF; }
html { scroll-behavior: smooth; }

/* Marquee */
@keyframes marquee { from { transform: translate3d(0,0,0); } to { transform: translate3d(-50%,0,0); } }
.marquee { animation: marquee 50s linear infinite; }
.marquee-rev { animation: marquee 60s linear infinite reverse; }

/* Subtle paper grain */
.grain::before {
  content: ''; position: absolute; inset: 0; pointer-events: none;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  opacity: 0.4; mix-blend-mode: overlay;
}

/* Reveal */
.reveal { opacity: 0; transform: translateY(28px); transition: opacity .9s cubic-bezier(.2,.8,.2,1), transform .9s cubic-bezier(.2,.8,.2,1); }
.reveal.in { opacity: 1; transform: none; }
.reveal-d1 { transition-delay: .08s; }
.reveal-d2 { transition-delay: .16s; }
.reveal-d3 { transition-delay: .24s; }
.reveal-d4 { transition-delay: .32s; }

/* Grids */
.grid-bg-light {
  background-image: linear-gradient(rgba(10,14,26,0.045) 1px, transparent 1px), linear-gradient(90deg, rgba(10,14,26,0.045) 1px, transparent 1px);
  background-size: 56px 56px;
  mask-image: radial-gradient(ellipse 80% 60% at 50% 40%, #000 40%, transparent 80%);
}
.grid-bg-dark {
  background-image: linear-gradient(rgba(255,255,255,0.06) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,0.06) 1px, transparent 1px);
  background-size: 56px 56px;
  mask-image: radial-gradient(ellipse 80% 60% at 50% 40%, #000 40%, transparent 80%);
}

/* Aurora */
@keyframes float1 { 0%,100% { transform: translate(0,0) scale(1); } 50% { transform: translate(40px,-30px) scale(1.1);} }
@keyframes float2 { 0%,100% { transform: translate(0,0) scale(1); } 50% { transform: translate(-50px,40px) scale(1.15);} }
.blob1 { animation: float1 14s ease-in-out infinite; }
.blob2 { animation: float2 18s ease-in-out infinite; }

/* Pulse / scroll dot */
@keyframes pulseRing { 0% { transform: scale(.5); opacity: .8; } 100% { transform: scale(2.4); opacity: 0; } }
.pulse-ring { animation: pulseRing 2.2s cubic-bezier(.2,.8,.2,1) infinite; }
@keyframes scrollDown { 0% { transform: translateY(-6px); opacity: 0;} 50% { opacity: 1;} 100% { transform: translateY(8px); opacity: 0;} }
.scroll-dot { animation: scrollDown 1.8s ease-in-out infinite; }

/* Display */
.stretch-text { font-family: 'Instrument Serif', serif; letter-spacing: -0.02em; }

/* Button shine */
.btn-shine { position: relative; overflow: hidden; }
.btn-shine::after { content: ''; position: absolute; top: 0; left: -100%; width: 60%; height: 100%; background: linear-gradient(90deg, transparent, rgba(255,255,255,0.4), transparent); transition: left .8s; }
.btn-shine:hover::after { left: 130%; }

/* Edge fade */
.fade-x { mask-image: linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent); }

/* Card lift */
.card-lift { transition: transform .5s cubic-bezier(.2,.8,.2,1), box-shadow .5s; }
.card-lift:hover { transform: translateY(-6px); box-shadow: 0 24px 48px -24px rgba(10,14,26,0.18); }

/* Mobile menu */
.mobile-menu { transform: translateY(-100%); transition: transform .5s cubic-bezier(.2,.8,.2,1); }
.mobile-menu.open { transform: translateY(0); }

/* Number gradient */
.num-glow-light { background: linear-gradient(180deg, #0A0E1A 0%, #6E7180 100%); -webkit-background-clip: text; background-clip: text; color: transparent; }
.num-glow-dark { background: linear-gradient(180deg, #FFFFFF 0%, #B7BDD9 100%); -webkit-background-clip: text; background-clip: text; color: transparent; }

/* Ticker */
@keyframes ticker { from { transform: translateX(0); } to { transform: translateX(-50%); } }
.ticker { animation: ticker 40s linear infinite; }

/* Spin */
@keyframes spin { to { transform: rotate(360deg); } }
.spin-slow { animation: spin 30s linear infinite; }

/* Misc */
.no-scrollbar::-webkit-scrollbar { display: none; }
.no-scrollbar { -ms-overflow-style: none; scrollbar-width: none; }
.img-zoom { transition: transform 1.2s cubic-bezier(.2,.8,.2,1); }
.group:hover .img-zoom { transform: scale(1.06); }
.link-underline { background-image: linear-gradient(currentColor, currentColor); background-size: 0 1px; background-repeat: no-repeat; background-position: 0 100%; transition: background-size .35s; }
.link-underline:hover { background-size: 100% 1px; }
.svc-img { background: linear-gradient(135deg, #F7F6F2 0%, #E8E6DF 100%); }

/* Active nav */
.nav-link { position: relative; }
.nav-link.active { background: #FFE4EA; color: #C20A33; }
.nav-link.active::after { content: ''; position: absolute; left: 50%; bottom: -2px; width: 16px; height: 2px; background: #F40F41; border-radius: 2px; transform: translateX(-50%); }

/* Announcement bar */
.ann-bar { position: relative; isolation: isolate; }
.ann-bar::before { content: ''; position: absolute; inset: 0; background-image: radial-gradient(circle at 20% 50%, rgba(244,15,65,0.07), transparent 35%), radial-gradient(circle at 80% 50%, rgba(167,139,250,0.05), transparent 40%); pointer-events: none; z-index: 0; }
.ann-bar > * { position: relative; z-index: 1; }
.ticker { animation: ticker 55s linear infinite; will-change: transform; }
.ann-bar:hover .ticker { animation-play-state: paused; }

/* BankGothic — matches the Qualitas wordmark.
   Falls back gracefully when not installed. */
.font-bank {
  font-family: 'BankGothic Md BT', 'BankGothicBT-Medium', 'Bank Gothic', 'Geist Mono', ui-monospace, monospace;
  letter-spacing: 0.06em;
  font-weight: 500;
}
