@import "https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap";:root{--bg:#0a0a0f;--surface:#12121a;--surface2:#1a1a28;--border:#ffffff14;--border-hover:#ffffff2e;--accent:#6c63ff;--accent2:#a855f7;--accent-glow:#6c63ff59;--success:#22d3a0;--danger:#f87171;--danger-dim:#f8717126;--text:#f0f0fa;--text-muted:#88a;--radius:14px;--radius-sm:8px;--shadow:0 8px 32px #0006;--shadow-lg:0 20px 60px #0009}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{background:var(--bg);height:100%;color:var(--text);-webkit-font-smoothing:antialiased;font-family:Inter,sans-serif}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:var(--surface2);border-radius:99px}.glass{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:1px solid var(--border);background:#12121acc}.scan-page{background:#fff;justify-content:center;align-items:center;min-height:100vh;display:flex}.scan-spinner-green{border:4px solid #e0e0e0;border-top-color:#22c55e;border-radius:50%;width:52px;height:52px;animation:.85s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.login-page{background:radial-gradient(ellipse at 50% 0%, #6c63ff26 0%, transparent 65%), var(--bg);justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.login-card{background:var(--surface);border:1px solid var(--border);width:100%;max-width:400px;box-shadow:var(--shadow-lg);border-radius:20px;padding:40px}.login-icon{background:linear-gradient(135deg, var(--accent), var(--accent2));width:60px;height:60px;box-shadow:0 0 30px var(--accent-glow);border-radius:16px;justify-content:center;align-items:center;margin:0 auto 24px;font-size:26px;display:flex}.login-card h1{text-align:center;margin-bottom:6px;font-size:1.5rem;font-weight:700}.login-card p{color:var(--text-muted);text-align:center;margin-bottom:28px;font-size:.875rem}.form-group{margin-bottom:18px}.form-group label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:8px;font-size:.8rem;font-weight:600;display:block}.form-input{background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius-sm);width:100%;color:var(--text);outline:none;padding:12px 16px;font-family:inherit;font-size:.95rem;transition:border-color .2s,box-shadow .2s}.form-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px #6c63ff33}.form-input::placeholder{color:var(--text-muted)}.btn-primary{background:linear-gradient(135deg, var(--accent), var(--accent2));border-radius:var(--radius-sm);color:#fff;cursor:pointer;width:100%;box-shadow:0 4px 20px var(--accent-glow);border:none;padding:13px;font-family:inherit;font-size:.95rem;font-weight:600;transition:opacity .2s,transform .15s,box-shadow .2s}.btn-primary:hover{opacity:.9;box-shadow:0 6px 28px var(--accent-glow);transform:translateY(-1px)}.btn-primary:active{transform:translateY(0)}.login-error{background:var(--danger-dim);border:1px solid var(--danger);border-radius:var(--radius-sm);color:var(--danger);text-align:center;margin-top:14px;padding:10px 14px;font-size:.85rem}.admin-layout{background:radial-gradient(ellipse at 70% -10%, #a855f71f 0%, transparent 55%), radial-gradient(ellipse at 10% 80%, #6c63ff1a 0%, transparent 50%), var(--bg);min-height:100vh}.admin-header{z-index:100;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-bottom:1px solid var(--border);background:#0a0a0fd9;justify-content:space-between;align-items:center;height:64px;padding:0 32px;display:flex;position:sticky;top:0}.header-brand{align-items:center;gap:12px;display:flex}.header-logo{background:linear-gradient(135deg, var(--accent), var(--accent2));width:36px;height:36px;box-shadow:0 0 16px var(--accent-glow);border-radius:10px;justify-content:center;align-items:center;font-size:18px;display:flex}.header-brand h2{background:linear-gradient(135deg, #fff, var(--accent2));-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:1rem;font-weight:700}.header-actions{align-items:center;gap:12px;display:flex}.btn-logout{border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-muted);cursor:pointer;background:0 0;padding:7px 16px;font-family:inherit;font-size:.82rem;transition:border-color .2s,color .2s}.btn-logout:hover{border-color:var(--danger);color:var(--danger)}.admin-content{max-width:1200px;margin:0 auto;padding:36px 32px}.stats-bar{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px;margin-bottom:32px;display:grid}.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px 24px;transition:border-color .2s}.stat-card:hover{border-color:var(--border-hover)}.stat-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.07em;margin-bottom:8px;font-size:.75rem;font-weight:600}.stat-value{background:linear-gradient(135deg, var(--accent), var(--accent2));-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:2rem;font-weight:800}.section-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px;display:flex}.section-header h3{font-size:1.1rem;font-weight:700}.btn-create{background:linear-gradient(135deg, var(--accent), var(--accent2));border-radius:var(--radius-sm);color:#fff;cursor:pointer;box-shadow:0 4px 20px var(--accent-glow);border:none;align-items:center;gap:8px;padding:10px 20px;font-family:inherit;font-size:.88rem;font-weight:600;transition:opacity .2s,transform .15s;display:flex}.btn-create:hover{opacity:.9;transform:translateY(-1px)}.qr-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:20px;display:grid}.empty-state{text-align:center;color:var(--text-muted);grid-column:1/-1;padding:60px 20px}.empty-state .empty-icon{opacity:.4;margin-bottom:16px;font-size:56px}.empty-state p{font-size:1rem;font-weight:500}.empty-state span{opacity:.6;margin-top:6px;font-size:.85rem;display:block}.qr-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:16px;padding:24px;transition:border-color .2s,transform .2s,box-shadow .2s;animation:.35s both card-in;display:flex}@keyframes card-in{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.qr-card:hover{border-color:var(--border-hover);box-shadow:var(--shadow);transform:translateY(-2px)}.qr-card-header{justify-content:space-between;align-items:flex-start;gap:8px;display:flex}.qr-label{word-break:break-word;font-size:1rem;font-weight:700}.qr-id-badge{color:var(--accent);white-space:nowrap;background:#6c63ff26;border:1px solid #6c63ff4d;border-radius:99px;align-items:center;padding:3px 10px;font-size:.72rem;font-weight:600;display:inline-flex}.qr-preview{border-radius:var(--radius-sm);background:#fff;justify-content:center;align-items:center;padding:16px;display:flex}.qr-stats{align-items:center;gap:8px;display:flex}.qr-scan-count{background:linear-gradient(135deg, var(--accent), var(--accent2));-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:1.6rem;font-weight:800}.qr-scan-label{color:var(--text-muted);font-size:.8rem}.qr-url{color:var(--text-muted);word-break:break-all;background:var(--surface2);border-radius:var(--radius-sm);padding:8px 10px;font-family:monospace;font-size:.72rem}.qr-card-footer{gap:8px;display:flex}.btn-download{border-radius:var(--radius-sm);color:var(--accent);cursor:pointer;background:#6c63ff26;border:1px solid #6c63ff4d;flex:1;justify-content:center;align-items:center;gap:6px;padding:9px;font-family:inherit;font-size:.82rem;font-weight:600;transition:background .2s,transform .15s;display:flex}.btn-download:hover{background:#6c63ff47;transform:translateY(-1px)}.btn-delete{background:var(--danger-dim);border-radius:var(--radius-sm);color:var(--danger);cursor:pointer;border:1px solid #f8717140;justify-content:center;align-items:center;padding:9px 14px;font-family:inherit;font-size:.82rem;transition:background .2s;display:flex}.btn-delete:hover{background:#f8717140}.modal-overlay{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:200;background:#000000b3;justify-content:center;align-items:center;padding:24px;animation:.2s fade-in;display:flex;position:fixed;inset:0}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.modal-card{background:var(--surface);border:1px solid var(--border);width:100%;max-width:460px;box-shadow:var(--shadow-lg);border-radius:20px;padding:32px;animation:.25s slide-up}@keyframes slide-up{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}.modal-header{justify-content:space-between;align-items:center;margin-bottom:24px;display:flex}.modal-header h3{font-size:1.15rem;font-weight:700}.btn-close{background:var(--surface2);border:1px solid var(--border);width:32px;height:32px;color:var(--text-muted);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;font-size:1rem;transition:background .2s;display:flex}.btn-close:hover{background:var(--border);color:var(--text)}.modal-hint{color:var(--text-muted);margin-top:6px;font-size:.8rem}.modal-preview{background:var(--surface2);border-radius:var(--radius-sm);color:var(--text-muted);word-break:break-all;align-items:center;gap:10px;margin-bottom:20px;padding:10px 14px;font-family:monospace;font-size:.78rem;display:flex}.modal-preview span{color:var(--accent)}.modal-footer{gap:10px;margin-top:24px;display:flex}.btn-cancel{border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-muted);cursor:pointer;background:0 0;flex:1;padding:12px;font-family:inherit;font-size:.9rem;transition:border-color .2s,color .2s}.btn-cancel:hover{border-color:var(--border-hover);color:var(--text)}.btn-submit{background:linear-gradient(135deg, var(--accent), var(--accent2));border-radius:var(--radius-sm);color:#fff;cursor:pointer;box-shadow:0 4px 20px var(--accent-glow);border:none;flex:2;padding:12px;font-family:inherit;font-size:.9rem;font-weight:600;transition:opacity .2s}.btn-submit:hover{opacity:.9}.btn-submit:disabled{opacity:.5;cursor:not-allowed}.skeleton{background:linear-gradient(90deg, var(--surface2) 25%, #ffffff0a 50%, var(--surface2) 75%);border-radius:var(--radius-sm);background-size:200% 100%;animation:1.4s infinite shimmer}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media (width<=600px){.admin-header{padding:0 16px}.admin-content{padding:24px 16px}.stats-bar{grid-template-columns:1fr 1fr}}
