/* Optional first-visit intro. CSS also releases the curtain if JS fails. */
html.site-entering::before {
  content:""; position:fixed; inset:0; z-index:9998; background:#0b1014;
  pointer-events:none; animation:intro-curtain 1.65s ease forwards;
}
.site-intro {
  position:fixed; inset:0; z-index:9999; display:flex; flex-direction:column;
  align-items:center; justify-content:center; gap:22px; pointer-events:none;
  color:#e7e3dc; animation:intro-content 1.65s ease forwards;
}
.site-intro-mark { font:600 48px/1 Manrope,sans-serif; letter-spacing:-.1em; padding-right:.1em; }
.site-intro-name { font:12px/1.5 'DM Mono',monospace; letter-spacing:.16em; }
.site-intro-line { width:100px; height:1px; background:rgba(231,227,220,.15); overflow:hidden; }
.site-intro-line::after { content:""; display:block; width:100%; height:100%; background:#d29462; transform-origin:left; animation:intro-line 1.05s cubic-bezier(.2,.7,.2,1) both; }
@keyframes intro-line { from { transform:scaleX(0); } to { transform:scaleX(1); } }
@keyframes intro-content { 0% { opacity:0; transform:translateY(5px); } 20%,65% { opacity:1; transform:translateY(0); } 88%,100% { opacity:0; visibility:hidden; transform:translateY(-4px); } }
@keyframes intro-curtain { 0%,70% { opacity:1; } 100% { opacity:0; visibility:hidden; } }
@media(prefers-reduced-motion:reduce) { html.site-entering::before,.site-intro { display:none; animation:none; } }
