:root{--primary: #6366f1;--primary-dark: #4f46e5;--success: #10b981;--success-dark: #059669;--error: #ef4444;--error-dark: #dc2626;--warning: #f59e0b;--bg-dark: #0f172a;--bg-card: #1e293b;--bg-hover: #334155;--text-primary: #f1f5f9;--text-secondary: #cbd5e1;--text-muted: #94a3b8;--border: #334155}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;background:var(--bg-dark);color:var(--text-primary);line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{min-height:100vh}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:1rem;background:linear-gradient(135deg,#1e293b,#0f172a)}.login-container{background:var(--bg-card);border-radius:1.5rem;padding:2.5rem;width:100%;max-width:420px;box-shadow:0 20px 25px -5px #00000080,0 8px 10px -6px #0006;border:1px solid var(--border)}.login-header{text-align:center;margin-bottom:2rem}.login-header h1{font-size:2rem;font-weight:700;background:linear-gradient(135deg,#6366f1,#8b5cf6);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin-bottom:.5rem}.login-header p{color:var(--text-muted);font-size:.95rem}.login-form{display:flex;flex-direction:column;gap:1.25rem}.form-group{display:flex;flex-direction:column;gap:.5rem}.form-group label{font-size:.875rem;font-weight:600;color:var(--text-secondary)}.form-group input{padding:.875rem 1rem;background:var(--bg-dark);border:1.5px solid var(--border);border-radius:.75rem;color:var(--text-primary);font-size:1rem;transition:all .2s}.form-group input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #6366f11a}.login-button{background:linear-gradient(135deg,var(--primary) 0%,#8b5cf6 100%);color:#fff;padding:1rem;border:none;border-radius:.75rem;font-size:1rem;font-weight:600;cursor:pointer;transition:transform .2s,box-shadow .2s;margin-top:.5rem}.login-button:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 10px 20px -5px #6366f166}.login-button:active:not(:disabled){transform:translateY(0)}.login-button:disabled{opacity:.6;cursor:not-allowed}.event-select-page{min-height:100vh;padding:2rem 1rem;max-width:1200px;margin:0 auto}.event-select-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem}.event-select-header h1{font-size:1.875rem;font-weight:700}.logout-button{background:var(--bg-card);color:var(--text-primary);padding:.75rem 1.5rem;border:1px solid var(--border);border-radius:.75rem;font-weight:600;cursor:pointer;transition:all .2s}.logout-button:hover{background:var(--bg-hover);border-color:var(--error);color:var(--error)}.events-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1.5rem}.event-card{background:var(--bg-card);border:1px solid var(--border);border-radius:1rem;padding:1.5rem;cursor:pointer;transition:all .3s}.event-card:hover{transform:translateY(-4px);box-shadow:0 20px 25px -5px #6366f14d;border-color:var(--primary)}.event-title{font-size:1.25rem;font-weight:600;margin-bottom:.75rem;color:var(--text-primary)}.event-details{color:var(--text-muted);font-size:.875rem}.event-date{margin-bottom:.25rem;text-transform:capitalize}.event-venue{color:var(--primary)}.no-events{text-align:center;padding:4rem 1rem;color:var(--text-muted)}.no-events p{font-size:1.125rem;margin-bottom:.5rem}.no-events .subtitle{font-size:.875rem}.scanner-page{min-height:100vh;padding:1rem;max-width:800px;margin:0 auto}.scanner-header{display:flex;align-items:center;gap:1rem;margin-bottom:1.5rem}.back-button{background:var(--bg-card);color:var(--text-primary);padding:.75rem 1rem;border:1px solid var(--border);border-radius:.75rem;font-weight:600;cursor:pointer;transition:all .2s}.back-button:hover{background:var(--bg-hover);border-color:var(--primary)}.scanner-header h1{font-size:1.5rem;font-weight:700}.attendance-stats{background:var(--bg-card);border:1px solid var(--border);border-radius:1rem;padding:1.5rem;margin-bottom:1.5rem}.stats-title{font-size:1.125rem;font-weight:600;margin-bottom:1rem;color:var(--text-secondary)}.stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;margin-bottom:1rem}.stat-card{text-align:center;padding:1rem;background:var(--bg-dark);border-radius:.75rem}.stat-value{font-size:2rem;font-weight:700;color:var(--primary);margin-bottom:.25rem}.stat-label{font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em}.progress-bar{background:var(--bg-dark);border-radius:.5rem;height:8px;overflow:hidden}.progress-fill{height:100%;background:linear-gradient(90deg,var(--primary) 0%,#8b5cf6 100%);transition:width .5s ease}.qr-scanner{margin-bottom:1.5rem}.scanner-container{position:relative;border-radius:1rem;overflow:hidden;background:#000;aspect-ratio:4/3}.scanner-video{width:100%;height:100%;object-fit:cover}.scanner-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none}.scanner-frame{width:280px;height:280px;border:3px solid var(--primary);border-radius:1rem;box-shadow:0 0 0 9999px #00000080;animation:pulse 2s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1;box-shadow:0 0 0 9999px #00000080,0 0 20px var(--primary)}50%{opacity:.8;box-shadow:0 0 0 9999px #00000080,0 0 30px var(--primary)}}.scanner-status{display:flex;align-items:center;justify-content:center;gap:.75rem;padding:1rem;background:var(--bg-card);border-radius:.75rem;margin-top:1rem;border:1px solid var(--border)}.scanner-status.paused{background:#0f172ab3;border-color:#94a3b833}.pulse{width:12px;height:12px;border-radius:50%;background:var(--primary);animation:pulse-dot 1.5s ease-in-out infinite}.pulse.paused{background:var(--text-muted);animation:none;opacity:.6}@keyframes pulse-dot{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.5);opacity:.5}}.scanner-error{background:#ef44441a;border:1px solid var(--error);border-radius:.75rem;padding:1rem;margin-top:1rem;color:var(--error);text-align:center}.ticket-status{background:var(--bg-card);border-radius:1rem;padding:1.5rem;border:2px solid;animation:slideIn .3s ease-out}.ticket-status.used-alert{border-color:var(--error);box-shadow:0 0 30px #ef444459;animation:alertPulse 1s ease-in-out infinite}.scanner-page.overlay-active .scanner-header,.scanner-page.overlay-active .attendance-stats,.scanner-page.overlay-active .scanner-section{filter:blur(4px);opacity:.15;pointer-events:none}.checkin-overlay{position:fixed;inset:0;background:#05070cbf;display:flex;align-items:center;justify-content:center;z-index:100;animation:fadeIn .2s ease-out}.checkin-overlay .overlay-panel{position:relative;width:min(90vw,600px);z-index:1;animation:popIn .25s ease-out}.overlay-spotlight{position:absolute;width:min(80vw,500px);height:min(80vw,500px);border-radius:50%;background:radial-gradient(circle,#3b82f666,#05070c00 70%);filter:blur(5px);pointer-events:none;animation:spotlightGlow 2s ease-in-out infinite}.checkin-overlay.warning .overlay-panel .ticket-status{border-color:var(--error);box-shadow:0 0 30px #ef444480}.checkin-overlay.warning .overlay-spotlight{background:radial-gradient(circle,#ef444473,#05070c00 70%)}@keyframes spotlightGlow{0%{transform:scale(.95);opacity:.9}50%{transform:scale(1.05);opacity:1}to{transform:scale(.95);opacity:.9}}@keyframes popIn{0%{transform:scale(.9) translateY(10px);opacity:0}to{transform:scale(1) translateY(0);opacity:1}}@keyframes alertPulse{0%,to{box-shadow:0 0 20px #ef444433}50%{box-shadow:0 0 30px #ef444473}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideIn{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.ticket-status.valid{border-color:var(--success);background:linear-gradient(135deg,rgba(16,185,129,.05) 0%,transparent 100%)}.ticket-status.used,.ticket-status.invalid{border-color:var(--error);background:linear-gradient(135deg,rgba(239,68,68,.05) 0%,transparent 100%)}.status-icon{width:64px;height:64px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:2rem;font-weight:700;margin:0 auto 1rem}.ticket-status.valid .status-icon{background:var(--success);color:#fff;box-shadow:0 10px 20px -5px #10b98180}.ticket-status.used .status-icon,.ticket-status.invalid .status-icon{background:var(--error);color:#fff;box-shadow:0 10px 20px -5px #ef444480}.status-title{text-align:center;font-size:1.5rem;font-weight:700;margin-bottom:1.5rem}.ticket-details{display:flex;flex-direction:column;gap:.75rem;margin-bottom:1.5rem}.detail-row{display:flex;justify-content:space-between;padding:.75rem;background:var(--bg-dark);border-radius:.5rem}.detail-row .label{color:var(--text-muted);font-weight:600;font-size:.875rem}.detail-row .value{color:var(--text-primary);font-weight:500;text-align:right}.detail-row.used-at{background:#ef44441a;border:1px solid var(--error)}.detail-row.error{background:#ef44441a;border:1px solid var(--error);justify-content:center}.detail-row.error .value{color:var(--error);font-weight:600}.check-in-button{width:100%;background:linear-gradient(135deg,var(--success) 0%,var(--success-dark) 100%);color:#fff;padding:1rem;border:none;border-radius:.75rem;font-size:1.125rem;font-weight:600;cursor:pointer;transition:all .2s}.check-in-button:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 10px 20px -5px #10b98180}.check-in-button:active:not(:disabled){transform:translateY(0)}.check-in-button:disabled{opacity:.6;cursor:not-allowed}.status-message{padding:1rem;border-radius:.75rem;text-align:center;font-weight:600;margin:1rem 0;animation:slideIn .3s ease-out}.status-message.success{background:#10b9811a;border:1px solid var(--success);color:var(--success)}.status-message.error{background:#ef44441a;border:1px solid var(--error);color:var(--error)}.status-message.info{background:#6366f11a;border:1px solid var(--primary);color:var(--primary)}.error-message{background:#ef44441a;border:1px solid var(--error);border-radius:.75rem;padding:1rem;color:var(--error);font-weight:500;text-align:center}.loading{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:300px;gap:1rem}.spinner{width:48px;height:48px;border:4px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:640px){.stats-grid{grid-template-columns:1fr}.stat-card{display:flex;align-items:center;justify-content:space-between;text-align:left}.stat-value{font-size:1.5rem}.scanner-frame{width:220px;height:220px}.event-select-header{flex-direction:column;align-items:flex-start;gap:1rem}.events-grid{grid-template-columns:1fr}}
