:root{--bg-primary: #101114;--bg-secondary: #17181d;--bg-card: #1f2128;--bg-input: #0c0d10;--text-primary: #efebe2;--text-secondary: #ffb56b;--text-dim: #979aa3;--text-muted: #6b6e78;--border-color: #ff5a1f;--border-dim: #2a2c34;--accent: #ff5a1f;--accent-dim: #c97e45;--danger: #e5484d;--warning: #e4b95b;--success: #6fcf8e;--grad-fuego: linear-gradient(100deg, #ff5a1f, #ffb56b 55%, #fff3df);--font-heading: "Syne", sans-serif;--font-body: "Archivo", system-ui, sans-serif;--font-mono: "JetBrains Mono", monospace;--radius: 4px;--shadow: 0 0 20px rgba(255, 90, 31, .25)}*{margin:0;padding:0;box-sizing:border-box}body{background-color:var(--bg-primary);color:var(--text-primary);font-family:var(--font-body);min-height:100vh;line-height:1.5}.app{min-height:100vh;display:flex;flex-direction:column}h1,h2,h3{font-family:var(--font-heading);font-weight:700;text-transform:uppercase;letter-spacing:1px}h1{font-size:1.6rem;border-bottom:1px solid var(--border-dim);padding-bottom:.5rem;margin-bottom:1.5rem}h2{font-size:1.2rem;margin-bottom:1rem}a{color:var(--text-primary);text-decoration:none;transition:color .2s}a:hover{color:var(--accent);text-shadow:0 0 8px rgba(255,90,31,.5)}.container{max-width:1200px;margin:0 auto;padding:2rem}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;margin-bottom:2rem}.stat-card{background:var(--bg-card);border:1px solid var(--border-dim);padding:1.5rem;border-radius:var(--radius)}.stat-card .label{font-family:var(--font-mono);font-size:.75rem;text-transform:uppercase;letter-spacing:1px;color:var(--text-dim);margin-bottom:.5rem}.stat-card .value{font-family:var(--font-heading);font-size:2rem;color:var(--text-primary);text-shadow:0 0 10px rgba(255,90,31,.45)}button{background:var(--grad-fuego);color:var(--bg-primary);border:1px solid transparent;padding:.5rem 1.2rem;font-family:var(--font-heading);font-weight:700;font-size:.85rem;text-transform:uppercase;letter-spacing:.5px;cursor:pointer;border-radius:var(--radius);transition:transform .18s ease,box-shadow .18s ease}button:hover{transform:translateY(-1px);box-shadow:0 8px 24px #ff5a1f59}button.danger{background:none;border-color:var(--danger);color:var(--danger)}button.danger:hover{background:var(--danger);color:var(--bg-primary);box-shadow:0 0 15px #e5484d66}button.secondary{background:none;border-color:var(--border-dim);color:var(--text-dim)}button.secondary:hover{border-color:var(--accent-dim);color:var(--text-primary);transform:none;box-shadow:none}button:disabled{opacity:.4;cursor:not-allowed;transform:none}button:disabled:hover{box-shadow:none}.form-group{margin-bottom:1rem}label{display:block;font-family:var(--font-mono);font-size:.75rem;text-transform:uppercase;letter-spacing:1px;color:var(--text-dim);margin-bottom:.3rem}input,select{width:100%;background:var(--bg-input);color:var(--text-primary);border:1px solid var(--border-dim);padding:.6rem .8rem;font-family:var(--font-body);font-size:.9rem;border-radius:var(--radius);outline:none}input:focus,select:focus{border-color:var(--accent);box-shadow:0 0 8px #ff5a1f59}select option{background:var(--bg-primary);color:var(--text-primary)}table{width:100%;border-collapse:collapse;margin:1rem 0}th,td{text-align:left;padding:.6rem .8rem;border-bottom:1px solid var(--border-dim)}th{font-family:var(--font-mono);font-size:.7rem;text-transform:uppercase;letter-spacing:1px;color:var(--text-dim)}td{font-size:.85rem}tr:hover td{background:#ff5a1f0a}.badge{display:inline-block;padding:.15rem .5rem;font-family:var(--font-mono);font-size:.7rem;text-transform:uppercase;letter-spacing:1px;border:1px solid;border-radius:var(--radius)}.badge.active{border-color:var(--success);color:var(--success)}.badge.expired{border-color:var(--danger);color:var(--danger)}.badge.revoked{border-color:var(--warning);color:var(--warning)}.login-container{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem}.login-box{background:var(--bg-card);border:1px solid var(--border-dim);padding:2.5rem;border-radius:var(--radius);width:100%;max-width:400px;box-shadow:var(--shadow)}.login-box h1{text-align:center;border-bottom:none;margin-bottom:2rem}.login-box .error{color:var(--danger);font-size:.8rem;margin-bottom:1rem;text-align:center}.navbar{background:var(--bg-secondary);border-bottom:1px solid var(--border-dim);padding:.8rem 2rem;display:flex;align-items:center;justify-content:space-between}.navbar h2{margin:0;font-size:1rem}.navbar .nav-links{display:flex;gap:1.5rem;align-items:center}.navbar .nav-links a.active{color:var(--accent);text-shadow:0 0 8px rgba(255,90,31,.5)}.navbar .user-info{font-family:var(--font-mono);font-size:.75rem;color:var(--text-dim)}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000d9;display:flex;align-items:center;justify-content:center;z-index:100}.modal{background:var(--bg-card);border:1px solid var(--border-color);padding:2rem;border-radius:var(--radius);width:100%;max-width:500px;box-shadow:0 0 30px #ff5a1f40}.modal h2{margin-bottom:1.5rem}.modal-actions{display:flex;gap:.8rem;margin-top:1.5rem;justify-content:flex-end}.key-display{background:var(--bg-input);border:1px solid var(--accent);padding:1rem;text-align:center;font-family:var(--font-mono);font-size:1.1rem;letter-spacing:2px;margin:1rem 0;text-shadow:0 0 8px rgba(255,90,31,.5);word-break:break-all}.empty-state{text-align:center;padding:3rem;color:var(--text-dim)}.loading{text-align:center;padding:2rem;color:var(--text-dim)}body:after{content:"";position:fixed;top:0;left:0;right:0;bottom:0;background:repeating-linear-gradient(0deg,transparent,transparent 2px,rgba(255,90,31,.012) 2px,rgba(255,90,31,.012) 4px);pointer-events:none;z-index:9999}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:var(--bg-primary)}::-webkit-scrollbar-thumb{background:var(--border-dim)}::-webkit-scrollbar-thumb:hover{background:var(--accent)}.toast{position:fixed;top:1rem;right:1rem;background:var(--bg-card);border:1px solid var(--success);padding:1rem 1.5rem;border-radius:var(--radius);z-index:1000;animation:fadeIn .3s;box-shadow:0 0 20px #6fcf8e4d}.toast.error{border-color:var(--danger);box-shadow:0 0 20px #e5484d4d}@keyframes fadeIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:reduce){button,a,.toast{transition:none;animation:none}}
