@keyframes rotate { to { transform: rotate(360deg); } }
@keyframes score-notification-marquee { from { transform: translate3d(0, 0, 0); } to { transform: translate3d(-50%, 0, 0); } }
@keyframes background-drift { 0%, 100% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } }
@keyframes orb-float { 0%, 100% { transform: translate3d(0, 0, 0) scale(1); } 50% { transform: translate3d(0, -14px, 0) scale(1.04); } }
@keyframes particle-float { 0%, 100% { opacity: .25; transform: translate3d(0, 0, 0); } 50% { opacity: .9; transform: translate3d(8px, -22px, 0); } }
@keyframes brand-shimmer { 0%, 76%, 100% { transform: translateX(-150%); } 86% { transform: translateX(150%); } }
@keyframes button-shine { 0%, 72%, 100% { transform: translateX(-180%) skewX(-18deg); } 84% { transform: translateX(280%) skewX(-18deg); } }
@keyframes notification-glow { 0%, 100% { box-shadow: inset 0 0 0 rgba(214,173,82,0); } 50% { box-shadow: inset 0 0 30px rgba(214,173,82,.07); } }
@keyframes icon-pulse { 0%, 100% { transform: scale(1); filter: drop-shadow(0 0 0 rgba(245,194,66,0)); } 50% { transform: scale(1.08); filter: drop-shadow(0 0 9px rgba(245,194,66,.5)); } }
@keyframes ai-icon-pulse { 0%, 100% { transform: scale(1); filter: drop-shadow(0 0 0 rgba(39,140,255,0)); } 50% { transform: scale(1.08); filter: drop-shadow(0 0 8px rgba(39,140,255,.42)); } }
@keyframes live-status-pulse { 0% { opacity: .72; transform: scale(.7); } 70%, 100% { opacity: 0; transform: scale(1.65); } }
@keyframes hero-title-gold-shimmer { from { background-position: 0% center; } to { background-position: 200% center; } }
@keyframes stroke-orbit { to { --stroke-angle: 360deg; } }
@keyframes visual-glow { 0%, 100% { opacity: .45; transform: scale(.96); } 50% { opacity: .86; transform: scale(1.025); } }
@keyframes hero-enter { from { opacity: 0; transform: translateY(18px); } to { opacity: 1; transform: translateY(0); } }
@keyframes modal-backdrop-enter { from { background: rgba(1,5,15,0); backdrop-filter: blur(0); } to { background: rgba(1,5,15,.82); backdrop-filter: blur(12px); } }
@keyframes modal-enter { from { opacity: 0; transform: translateY(16px) scale(.97); } to { opacity: 1; transform: translateY(0) scale(1); } }
@keyframes loading-scan { 0% { opacity: 0; transform: translateY(-72px); } 18%, 78% { opacity: .75; } 100% { opacity: 0; transform: translateY(72px); } }
@keyframes node-pulse { 0%, 100% { opacity: .35; transform: scale(.75); } 50% { opacity: 1; transform: scale(1.35); box-shadow: 0 0 18px rgba(39,140,255,.65); } }
@keyframes result-sweep { 0%, 18% { transform: translateX(-130%) skewX(-16deg); } 60%, 100% { transform: translateX(230%) skewX(-16deg); } }
@keyframes timeline-grow { from { transform: scaleY(0); } to { transform: scaleY(1); } }
@property --stroke-angle {
  syntax: "<angle>";
  inherits: false;
  initial-value: 0deg;
}

.brand::after { position: absolute; inset: auto 0 0; height: 1px; background: linear-gradient(90deg, transparent, var(--color-gold), transparent); content: ""; transform: translateX(-150%); animation: brand-shimmer 5.2s ease-in-out infinite; }
.hero-orb { animation: orb-float 15s var(--ease-out) infinite; }
.hero-orb-two { animation-delay: -6s; animation-duration: 18s; }
.hero-particles i { animation: particle-float 10s ease-in-out infinite; }
.hero-particles i:nth-child(2) { animation-delay: -3s; animation-duration: 12s; }
.hero-particles i:nth-child(3) { animation-delay: -6s; animation-duration: 14s; }
.btn-generate, .generate-game { position: relative; overflow: hidden; isolation: isolate; }
.btn-generate::before, .generate-game::before { position: absolute; inset: -35% auto -35% -35%; z-index: 1; width: 24%; background: linear-gradient(90deg, transparent, rgba(255,255,255,.30), transparent); content: ""; pointer-events: none; transform: translateX(-180%) skewX(-18deg); animation: button-shine 4.8s ease-in-out infinite; mix-blend-mode: soft-light; }
[data-theme="navy_gold"] .btn-generate::before,
[data-theme="navy_gold"] .generate-game::before { background: linear-gradient(90deg, transparent, rgba(214,173,82,.24), rgba(240,207,120,.16), transparent); }
[data-theme="black_red"] .btn-generate::before,
[data-theme="black_red"] .generate-game::before { background: linear-gradient(90deg, transparent, rgba(220,38,38,.22), rgba(153,27,27,.18), transparent); }
[data-theme="red_gold"] .btn-generate::before,
[data-theme="red_gold"] .generate-game::before { background: linear-gradient(90deg, transparent, rgba(214,173,82,.18), rgba(159,114,33,.12), transparent); }
[data-theme="cyber_green"] .btn-generate::before,
[data-theme="cyber_green"] .generate-game::before { background: linear-gradient(90deg, transparent, rgba(0,255,42,.20), rgba(57,255,90,.14), transparent); }
[data-theme="grey_orange"] .btn-generate::before,
[data-theme="grey_orange"] .generate-game::before { background: linear-gradient(90deg, transparent, rgba(255,150,0,.24), rgba(255,179,71,.16), transparent); }
.score-notification { background-size: 180% 180%; animation: background-drift 12s ease-in-out infinite, notification-glow 4s ease-in-out infinite; }
.score-notification__icon { animation: icon-pulse 2.4s ease-in-out infinite; }

.js-animations .hero-grid > .hero-live-status, .js-animations .hero-copy > *, .js-animations .ai-visual { opacity: 0; animation: hero-enter .68s var(--ease-out) forwards; }
.js-animations .hero-copy > h1 { animation: hero-enter .68s var(--ease-out) 0s 1 forwards, hero-title-gold-shimmer 5.4s linear .68s infinite both; }
.js-animations .hero-copy > :nth-child(2) { animation-delay: 80ms; }
.js-animations .hero-copy > :nth-child(3) { animation-delay: 150ms; }
.js-animations .hero-copy > :nth-child(4) { animation-delay: 220ms; }
.js-animations .generator-card { animation-delay: 290ms; }
.js-animations .ai-visual { animation-delay: 380ms; }
.js-animations .reveal { opacity: 0; transform: translateY(20px); transition: opacity .62s var(--ease-out), transform .62s var(--ease-out); }
.js-animations .reveal.is-visible { opacity: 1; transform: translateY(0); }
.js-animations .card-enter { opacity: 0; transform: translateY(16px) scale(.985); transition: opacity .46s var(--ease-out), transform .46s var(--ease-out); transition-delay: calc(var(--card-order, 0) * 38ms); }
.js-animations .card-enter.is-visible { opacity: 1; transform: translateY(0) scale(1); }
.js-animations .card-enter.is-visible:hover { transform: translateY(-4px) scale(1); }
.js-animations .card-enter .status-pill { opacity: 0; transform: translateY(5px); transition: opacity .38s ease 170ms, transform .38s var(--ease-out) 170ms; }
.js-animations .card-enter.is-visible .status-pill { opacity: 1; transform: translateY(0); }
.js-animations .game-percentage__track.is-animated .game-percentage__fill { transform: scaleX(0); }
.js-animations .game-percentage__track.is-animated.is-visible .game-percentage__fill { transform: scaleX(var(--progress-ratio, 0)); }

dialog[open]::backdrop { animation: modal-backdrop-enter .28s ease-out both; }
dialog[open] .modal-shell { animation: modal-enter .34s var(--ease-out) both; }
#result-modal[open] .result-analysis-message, #result-modal[open] .result-summary, #result-modal[open] .pattern-steps li, #result-modal[open] .result-disclaimer, #result-modal[open] .result-actions { opacity: 0; animation: hero-enter .46s var(--ease-out) forwards; }
#result-modal[open] .result-summary { animation-delay: 80ms; }
#result-modal[open] .pattern-steps li:nth-child(1) { animation-delay: 130ms; }
#result-modal[open] .pattern-steps li:nth-child(2) { animation-delay: 180ms; }
#result-modal[open] .pattern-steps li:nth-child(3) { animation-delay: 230ms; }
#result-modal[open] .pattern-steps li:nth-child(4) { animation-delay: 280ms; }
#result-modal[open] .result-disclaimer { animation-delay: 330ms; }
#result-modal[open] .result-actions { animation-delay: 380ms; }
#result-modal[open] .result-analysis-message::after { animation: result-sweep 1.4s ease-out 120ms 1 both; }
#result-modal[open] .result-analysis-message__icon { animation: ai-icon-pulse 1.4s ease-in-out 2; }
#result-modal[open] .pattern-steps::before { animation: timeline-grow .72s var(--ease-out) 110ms 1 forwards; }

@media (max-width: 800px) {
  .js-animations .hero-copy > :nth-child(1) { animation-delay: 160ms; }
  .js-animations .hero-copy > :nth-child(2) { animation-delay: 230ms; }
  .js-animations .hero-copy > :nth-child(3) { animation-delay: 300ms; }
  .js-animations .hero-copy > h1 { animation-delay: 160ms, 840ms; }
  .js-animations .generator-card { animation-delay: 370ms; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; animation-delay: 0ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
  .brand::after, .hero h1, .hero-live-status__dot::after, .ai-powered-status__icon::after, .ai-powered-status__text, .provider-selection__title, .hero-orb, .hero-particles i, .btn-generate::before, .generate-game::before, .score-notification, .score-notification__icon, .ai-visual::before, .ai-visual::after, .loader-orbit, .loader-orbit span, .loading-scan, .loading-node, dialog[open]::backdrop, dialog[open] .modal-shell, #result-modal[open] .result-analysis-message::after, #result-modal[open] .result-analysis-message__icon, #result-modal[open] .pattern-steps::before { animation: none !important; }
  .provider-button:hover { transform: none; }
  .provider-button .provider-logo, .provider-button:hover .provider-logo { transform: scale(var(--provider-logo-scale, 1)); }
  .provider-carousel__nav:hover:not(:disabled), .provider-carousel__nav:active:not(:disabled) { transform: none; }
  .provider-carousel::before, .provider-button::before, .provider-carousel__nav::before, .filter-bar::before, .game-results::before { animation: none !important; }
  .score-notification { height: auto; min-height: 42px; }
  .score-notification__viewport { flex: 1 1 0; width: 0; }
  .score-notification__content { position: static; left: auto; display: block; width: auto; padding: 8px 12px; white-space: normal; animation: none !important; transform: none !important; }
  .score-notification__message { display: flex; flex-wrap: wrap; min-height: 0; }
  .score-notification__duplicate { display: none; }
  .js-animations .game-percentage__track.is-animated .game-percentage__fill { transform: scaleX(var(--progress-ratio, 0)); }
  .js-animations .reveal, .js-animations .card-enter, .js-animations .hero-grid > .hero-live-status, .js-animations .hero-copy > *, .js-animations .ai-visual, .js-animations .card-enter .status-pill, #result-modal[open] .result-analysis-message, #result-modal[open] .result-summary, #result-modal[open] .pattern-steps li, #result-modal[open] .result-disclaimer, #result-modal[open] .result-actions { opacity: 1 !important; transform: none !important; translate: none !important; }
  .pattern-steps::before { transform: scaleY(1) !important; }
  .loader-orbit { border-color: var(--color-gold-primary) var(--color-border-gold) var(--color-border-gold); }
}
