:root{--intro-bg:#f5f8fc;--intro-glow:#1e90ff47;--logo:#1e90ff}:root.dark{--intro-bg:#070d18;--intro-glow:#1e90ff73}html,body{height:100%;overflow:hidden}body{background:var(--intro-bg)}.intro{cursor:pointer;-webkit-user-select:none;user-select:none;background:radial-gradient(60% 50% at 50% 42%, color-mix(in srgb, var(--logo) 10%, transparent), transparent 70%), var(--intro-bg);flex-direction:column;justify-content:center;align-items:center;gap:6px;padding:24px;display:flex;position:fixed;inset:0}.intro-mark{aspect-ratio:1;width:clamp(130px,34vmin,230px);margin-bottom:18px;position:relative}.intro-mark:before{content:"";background:radial-gradient(circle, var(--intro-glow), transparent 62%);opacity:0;border-radius:50%;position:absolute;inset:-40%;transform:scale(.6)}.intro-svg{width:100%;height:100%;position:relative;overflow:visible}.intro-svg path{fill:var(--logo);fill-opacity:0;stroke:var(--logo);stroke-width:55px;stroke-linejoin:round;stroke-dasharray:1;stroke-dashoffset:1px}.intro-name{font-family:var(--font-display);letter-spacing:.08em;color:var(--fg);margin:0;font-size:clamp(1.8rem,6.5vmin,3rem);font-weight:700;display:flex}.intro-name span{opacity:0;display:inline-block}.intro-presents{letter-spacing:.35em;text-transform:lowercase;color:var(--muted);opacity:0;margin:0;font-size:clamp(.85rem,2.4vmin,1.05rem);font-weight:600}.intro-game{font-family:var(--font-display);color:var(--logo);opacity:0;margin:14px 0 0;font-size:clamp(1.2rem,4.2vmin,1.9rem);font-weight:700}.intro-skip{bottom:max(20px, env(safe-area-inset-bottom));color:var(--muted);opacity:0;margin:0;font-size:.8rem;position:absolute}.play .intro-svg path{animation:draw 1s cubic-bezier(.45, 0, .2, 1) calc(.15s + var(--i) * 4ms) forwards, fill .6s ease-out .95s forwards}.play .intro-mark:before{animation:1.4s ease-out 1s forwards glow}.play .intro-svg{animation:.5s cubic-bezier(.2,1.4,.4,1) 1s both pop}.play .intro-name span{animation:rise .5s cubic-bezier(.2, 1, .3, 1) calc(1.25s + var(--i) * 55ms) forwards}.play .intro-presents{animation:.5s ease-out 1.85s forwards fade-in}.play .intro-game{animation:.6s cubic-bezier(.2,1,.3,1) 2.1s forwards rise}.play .intro-skip{animation:.6s ease-out 1.2s forwards fade-in}.intro.leave{animation:.45s ease-in forwards leave}@keyframes draw{to{stroke-dashoffset:0}}@keyframes fill{to{fill-opacity:1;stroke-width:0}}@keyframes glow{0%{opacity:0;transform:scale(.6)}35%{opacity:1;transform:scale(1.05)}to{opacity:.55;transform:scale(1)}}@keyframes pop{0%{transform:scale(1)}40%{transform:scale(1.06)}to{transform:scale(1)}}@keyframes rise{0%{opacity:0;filter:blur(6px);transform:translateY(14px)}to{opacity:1;filter:none;transform:none}}@keyframes fade-in{to{opacity:1}}@keyframes leave{to{opacity:0;transform:scale(1.08)}}@media (prefers-reduced-motion:reduce){.play .intro-svg path{fill-opacity:1;stroke-width:0;animation:none}.play .intro-mark:before,.play .intro-svg{animation:none}.play .intro-name span,.play .intro-presents,.play .intro-game,.play .intro-skip{animation:.3s ease-out forwards fade-in}.intro.leave{animation:.2s linear forwards fade-out}@keyframes fade-out{to{opacity:0}}}
