/* ─── FONTS ──────────────────────────────────────────── */
@font-face { font-family: 'PPObjectSans'; src: url('font/PPObjectSans-Light.woff2') format('woff2');   font-weight: 300; font-style: normal; font-display: swap; }
@font-face { font-family: 'PPObjectSans'; src: url('font/PPObjectSans-Regular.woff2') format('woff2'); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: 'PPObjectSans'; src: url('font/PPObjectSans-Medium.woff2') format('woff2');  font-weight: 500; font-style: normal; font-display: swap; }
@font-face { font-family: 'PPObjectSans'; src: url('font/PPObjectSans-Bold.woff2') format('woff2');    font-weight: 700; font-style: normal; font-display: swap; }
@font-face { font-family: 'PPObjectSans'; src: url('font/PPObjectSans-Heavy.woff2') format('woff2');   font-weight: 800; font-style: normal; font-display: swap; }
@font-face { font-family: 'PPObjectSans'; src: url('font/PPObjectSans-Black.woff2') format('woff2');   font-weight: 900; font-style: normal; font-display: swap; }

/* ─── FLUID TYPOGRAPHY ───────────────────────────────── */
.text-display    { font-size: clamp(40px, 5vw, 68px);    line-height: 1.05; letter-spacing: -0.035em; }

/* Hero headline — balanced wrapping, tighter tracking */
.hero-h1 { text-wrap: balance; }
.text-display-sm { font-size: clamp(38px, 5vw, 72px);   line-height: 1.05; letter-spacing: -0.04em; }
.text-h1         { font-size: clamp(30px, 3.5vw, 52px); line-height: 1.1;  letter-spacing: -0.04em; }
.text-h2         { font-size: clamp(22px, 2.5vw, 36px); line-height: 1.2;  letter-spacing: -0.03em; }
.text-h3         { font-size: clamp(18px, 1.8vw, 26px); line-height: 1.2;  letter-spacing: -0.02em; }
.text-section    { font-size: clamp(28px, 2.5vw, 40px); line-height: 1.1;  letter-spacing: -0.03em; }
.text-hero-sub   { font-size: clamp(15px, 1.5vw, 18px); line-height: 1.65; }
.text-cta        { font-size: clamp(28px, 3.5vw, 52px); line-height: 1.05; letter-spacing: -0.04em; }

/* ─── SELECTION ──────────────────────────────────────── */
::selection { background: #d2e823; color: #1e2330; }

/* ─── PAGE-LOAD STAGGER ──────────────────────────────── */
@keyframes revealUp {
  from { opacity: 0; transform: translateY(10px); }
  to   { opacity: 1; transform: translateY(0); }
}
.load-0 { animation: revealUp 0.45s cubic-bezier(0.16,1,0.3,1)   0ms both; }
.load-1 { animation: revealUp 0.45s cubic-bezier(0.16,1,0.3,1)  70ms both; }
.load-2 { animation: revealUp 0.45s cubic-bezier(0.16,1,0.3,1) 140ms both; }
.load-3 { animation: revealUp 0.45s cubic-bezier(0.16,1,0.3,1) 210ms both; }
.load-4 { animation: revealUp 0.45s cubic-bezier(0.16,1,0.3,1) 280ms both; }
.load-5 { animation: revealUp 0.45s cubic-bezier(0.16,1,0.3,1) 370ms both; }

/* ─── SCROLL REVEAL ──────────────────────────────────── */
.sr { opacity: 0; transform: translateY(14px); transition: opacity 0.4s cubic-bezier(0.16,1,0.3,1), transform 0.4s cubic-bezier(0.16,1,0.3,1); }
.sr.in { opacity: 1; transform: none; }
.sr-d1 { transition-delay: 50ms; }
.sr-d2 { transition-delay: 100ms; }
.sr-d3 { transition-delay: 150ms; }
.sr-d4 { transition-delay: 200ms; }

/* ─── BUTTON MICROINTERACTIONS ───────────────────────── */
.btn-retro { transition: transform 0.12s cubic-bezier(0.16,1,0.3,1); }
.btn-retro:hover  { transform: translate(-2px,-2px); box-shadow: 6px 6px 0 0 #1e2330; }
.btn-retro:active { transform: translate(4px,4px); box-shadow: none; }

.btn-lift { transition: transform 0.15s cubic-bezier(0.16,1,0.3,1); }
.btn-lift:hover  { transform: translateY(-1px); box-shadow: 0 2px 8px rgba(30,35,48,0.1), 0 0 0 1px rgba(30,35,48,0.06); }
.btn-lift:active { transform: translateY(0);    box-shadow: none; }

/* ─── REDUCED MOTION ─────────────────────────────────── */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    transition-delay: 0ms !important;
  }
}

/* ─── UTILITIES ──────────────────────────────────────── */
.nums { font-variant-numeric: tabular-nums; }
