:root { --primary: #4F46E5; --success: #10B981; --error: #EF4444; --background: #1d283a; --text: #ffffff; } * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Roboto Mono', monospace; } body { min-height: 100vh; display: flex; align-items: center; justify-content: center; background-color: var(--background); color: var(--text); } .content { position: relative; z-index: 10; text-align: center; padding: 2rem; max-width: 400px; width: 100%; } h1 { font-size: 1.5rem; font-weight: 700; margin-bottom: 1rem; color: var(--text); } p { font-size: 0.9rem; line-height: 1.5; margin-bottom: 1.5rem; color: var(--text); opacity: 0.8; } .result-icon { width: 80px; height: 80px; margin: 0 auto 1.5rem; border-radius: 50%; display: flex; align-items: center; justify-content: center; background: var(--success); animation: scaleUp 0.5s ease; } .result-icon.error { background: var(--error); } .result-icon svg { width: 40px; height: 40px; color: white; } @keyframes scaleUp { 0% { transform: scale(0); } 80% { transform: scale(1.1); } 100% { transform: scale(1); } } .hidden { display: none; opacity: 0; transition: opacity 0.5s ease; } .visible { display: block; opacity: 1; transition: opacity 0.5s ease; } .shake { animation: shake 0.4s; } @keyframes shake { 0%, 100% { transform: translateX(0); } 20%, 60% { transform: translateX(-8px); } 40%, 80% { transform: translateX(8px); } } .progress-bar { width: 100%; height: 8px; background: rgba(255, 255, 255, 0.1); border-radius: 4px; overflow: hidden; margin: 0 auto 1.5rem; } .progress-bar-inner { height: 100%; width: 0; background: var(--primary); animation: progress 1.5s linear forwards; } @keyframes progress { 0% { width: 0; } 100% { width: 100%; } } .scanner-container { width: 200px; height: 200px; margin: 0 auto 1.5rem; position: relative; overflow: hidden; border: 2px solid var(--primary); border-radius: 12px; background: linear-gradient(45deg, rgba(79, 70, 229, 0.1), rgba(79, 70, 229, 0.2)); } .scanner-laser { position: absolute; width: 100%; height: 2px; background: linear-gradient(90deg, transparent, var(--primary), transparent); animation: scan 2s infinite linear; box-shadow: 0 0 8px var(--primary); } @keyframes scan { 0% { top: 0; opacity: 0; } 10% { opacity: 1; } 90% { opacity: 1; } 100% { top: 100%; opacity: 0; } } .mobile-svg { width: 120px; height: 120px; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); animation: enter 1s ease forwards, float 3s ease-in-out infinite; } @keyframes enter { 0% { transform: translate(-50%, -200%); opacity: 0; } 100% { transform: translate(-50%, -50%); opacity: 1; } } @keyframes float { 0%, 100% { transform: translate(-50%, -50%); } 50% { transform: translate(-50%, -55%); } }