:root,:root[lang=zh],[data-lang=zh],.lang-zh{--font-retro:"FusionPixelZh", "Fusion Pixel 12px Proportional SC", "Press Start 2P", monospace, sans-serif;--font-retro-mono:"VT323", "FusionPixelZh", monospace}:root[lang=en],[data-lang=en],.lang-en{--font-retro:"Press Start 2P", "FusionPixel", monospace, sans-serif;--font-retro-mono:"VT323", "Press Start 2P", monospace}.retro{font-family:var(--font-retro,"FusionPixel", "Press Start 2P", monospace, sans-serif);letter-spacing:.5px;line-height:1.5}.retro-mono{font-family:var(--font-retro-mono,"VT323", "FusionPixel", monospace);letter-spacing:1px}.retro-line{vertical-align:middle;align-items:center;line-height:1;display:inline-flex}.pixelated{image-rendering:pixelated;image-rendering:crisp-edges}.crt-screen{position:relative;overflow:hidden}.crt-screen:before{content:" ";z-index:20;pointer-events:none;background:linear-gradient(#12101000 50%,#00000040 50%) 0 0/100% 3px,linear-gradient(90deg,#ff000008,#00ff0003,#0000ff08) 0 0/6px 100%;display:block;position:absolute;inset:0}@keyframes pixel-shake{0%{transform:translate(0)}20%{transform:translate(-3px,2px)}40%{transform:translate(3px,-2px)}60%{transform:translate(-2px,-3px)}80%{transform:translate(2px,3px)}to{transform:translate(0)}}.animate-pixel-shake{animation:.35s ease-in-out infinite pixel-shake}@keyframes glitch-anim{0%{clip-path:inset(40% 0 61%);transform:skew(.3deg)}20%{clip-path:inset(92% 0 1%);transform:skew(-.5deg)}40%{clip-path:inset(10% 0 85%);transform:skew(.8deg)}60%{clip-path:inset(70% 0 15%);transform:skew(-.2deg)}80%{clip-path:inset(25% 0 58%);transform:skew(.5deg)}to{clip-path:inset(58% 0 35%);transform:skew(0deg)}}.glitch-text{display:inline-block;position:relative}.glitch-text:before,.glitch-text:after{content:attr(data-text);width:100%;height:100%;position:absolute;top:0;left:0}.glitch-text:before{text-shadow:-2px 0 #ef4444;clip-path:inset(0);animation:2s linear infinite alternate-reverse glitch-anim;left:2px}.glitch-text:after{text-shadow:-2px 0 #06b6d4;clip-path:inset(0);animation:2.5s linear infinite alternate-reverse glitch-anim;left:-2px}@keyframes flash-inverted{0%{filter:invert(0)}15%{filter:invert()}30%{filter:invert(0)}45%{filter:invert()}60%{filter:invert(0)}to{filter:invert(0)}}.animate-model-break-flash{animation:.6s ease-out flash-inverted}
