:root{--color-primary: #FF2E63;--color-secondary: #08D9D6;--color-accent: #FFD93D;--color-success: #6BCF7F;--color-warning: #FF6B35;--color-danger: #E63946;--bg-dark-1: #0A0E27;--bg-dark-2: #16213E;--bg-dark-3: #1A1A2E;--bg-overlay: rgba(10, 14, 39, .95);--text-primary: #FFFFFF;--text-secondary: #B8C5D6;--text-muted: #6B7A8F;--text-glow: #08D9D6;--gradient-primary: linear-gradient(135deg, #FF2E63 0%, #FF6B9D 100%);--gradient-secondary: linear-gradient(135deg, #08D9D6 0%, #0BC9BF 100%);--gradient-dark: linear-gradient(135deg, #0A0E27 0%, #16213E 50%, #1A1A2E 100%);--gradient-glow: linear-gradient(90deg, transparent, rgba(8, 217, 214, .3), transparent);--shadow-sm: 0 2px 8px rgba(0, 0, 0, .3);--shadow-md: 0 4px 16px rgba(0, 0, 0, .4);--shadow-lg: 0 8px 32px rgba(0, 0, 0, .5);--glow-primary: 0 0 20px rgba(255, 46, 99, .5);--glow-secondary: 0 0 20px rgba(8, 217, 214, .5);--glow-accent: 0 0 20px rgba(255, 217, 61, .5);--font-display: "Orbitron", "Rajdhani", sans-serif;--font-body: "Noto Sans TC", "Microsoft JhengHei", sans-serif;--font-mono: "JetBrains Mono", "Fira Code", monospace;--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 16px;--spacing-lg: 24px;--spacing-xl: 32px;--spacing-2xl: 48px;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--radius-full: 9999px;--transition-fast: .15s cubic-bezier(.4, 0, .2, 1);--transition-base: .25s cubic-bezier(.4, 0, .2, 1);--transition-slow: .4s cubic-bezier(.4, 0, .2, 1)}@media (min-width: 700px) and (orientation: landscape){html[data-rpg-language=zh-CN]{--font-body: "Microsoft YaHei", "Noto Sans SC", sans-serif}}*{margin:0;padding:0;box-sizing:border-box}html,body{width:100%;height:100%;min-height:100vh;min-height:100dvh;overscroll-behavior:none;touch-action:none}body{font-family:var(--font-body);background:var(--gradient-dark);color:var(--text-primary);overflow:hidden;position:relative}body:before{content:"";position:fixed;top:0;left:0;width:100%;height:100%;background-image:repeating-linear-gradient(0deg,transparent,transparent 2px,rgba(8,217,214,.03) 2px,rgba(8,217,214,.03) 4px);pointer-events:none;z-index:1;animation:scanlines 8s linear infinite}@keyframes scanlines{0%{transform:translateY(0)}to{transform:translateY(4px)}}body:after{content:"";position:fixed;top:0;left:0;width:100%;height:100%;background-image:linear-gradient(rgba(8,217,214,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(8,217,214,.05) 1px,transparent 1px);background-size:50px 50px;pointer-events:none;z-index:0}#loading{position:fixed;top:0;left:0;width:100vw;height:100vh;background:var(--gradient-dark);display:flex;flex-direction:column;justify-content:center;align-items:center;z-index:9999;animation:fadeIn .3s ease-in}#loading.fade-out{animation:fadeOut .5s ease-out forwards}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}.loading-content{text-align:center;position:relative;z-index:2}.loading-logo{font-family:var(--font-display);font-size:48px;font-weight:700;background:var(--gradient-secondary);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin-bottom:var(--spacing-xl);animation:glowPulse 2s ease-in-out infinite}@keyframes glowPulse{0%,to{filter:drop-shadow(0 0 10px rgba(8,217,214,.5))}50%{filter:drop-shadow(0 0 20px rgba(8,217,214,.8))}}.spinner-container{position:relative;width:120px;height:120px;margin:0 auto var(--spacing-lg)}.spinner{position:absolute;width:100%;height:100%;border:3px solid transparent;border-top-color:var(--color-primary);border-right-color:var(--color-secondary);border-radius:50%;animation:spin 1.5s cubic-bezier(.68,-.55,.265,1.55) infinite}.spinner-inner{position:absolute;top:10px;left:10px;right:10px;bottom:10px;border:3px solid transparent;border-bottom-color:var(--color-accent);border-left-color:var(--color-secondary);border-radius:50%;animation:spin 1s cubic-bezier(.68,-.55,.265,1.55) infinite reverse}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.loading-text{font-family:var(--font-display);font-size:20px;color:var(--text-secondary);letter-spacing:2px;animation:pulse 1.5s ease-in-out infinite}.loading-progress{margin-top:var(--spacing-lg);width:300px;height:4px;background:#ffffff1a;border-radius:var(--radius-full);overflow:hidden;position:relative}.loading-progress-bar{height:100%;background:var(--gradient-secondary);border-radius:var(--radius-full);transition:width var(--transition-base);box-shadow:var(--glow-secondary)}.loading-progress:after{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:var(--gradient-glow);animation:shimmer 2s infinite}@keyframes shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}#game-container{position:fixed;top:0;right:0;bottom:0;left:0;width:100vw;height:100vh;height:100dvh;display:flex;justify-content:center;align-items:center;z-index:2;overflow:hidden;touch-action:none}#game-container canvas{display:block;max-width:100vw;max-height:100vh;max-height:100dvh;margin:0 auto;border-radius:var(--radius-lg);box-shadow:var(--shadow-lg),var(--glow-secondary);border:2px solid rgba(8,217,214,.3);touch-action:none}.text-glow{text-shadow:var(--glow-secondary)}.text-primary{color:var(--color-primary)}.text-secondary{color:var(--color-secondary)}.text-accent{color:var(--color-accent)}.bg-glass{background:#ffffff0d;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.1)}.button-glow{box-shadow:var(--shadow-md),var(--glow-primary);transition:all var(--transition-base)}.button-glow:hover{box-shadow:var(--shadow-lg),var(--glow-primary);transform:translateY(-2px)}@media (max-width: 768px),(pointer: coarse){:root{--spacing-xl: 24px;--spacing-2xl: 32px}.loading-logo{font-size:36px}.loading-progress{width:250px}#game-container canvas{width:100%!important;height:100%!important;border:none;border-radius:0;box-shadow:none}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@media print{body:before,body:after,#loading{display:none}}
