@import url("https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700;800&family=Plus+Jakarta+Sans:wght@300;400;500;600;700;800&display=swap");:root{--bg-deep:#07090e;--bg-panel:#111420;--bg-panel-hover:#171b2c;--border-glow:rgba(67,97,238,.15);--border-light:hsla(0,0%,100%,.06);--primary:#4361ee;--primary-glow:rgba(67,97,238,.35);--secondary:#7209b7;--accent:#4cc9f0;--text-main:#f3f4f6;--text-muted:#9ca3af;--text-dark:#6b7280;--success:#10b981;--success-glow:rgba(16,185,129,.15);--warning:#f59e0b;--danger:#ef4444;--danger-glow:rgba(239,68,68,.15);--font-display:"Outfit",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;--font-body:"Plus Jakarta Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;--sidebar-width:280px;--border-radius-lg:16px;--border-radius-md:12px;--border-radius-sm:8px;--transition:all 0.3s cubic-bezier(0.4,0,0.2,1);--shadow:0 10px 30px -10px rgba(0,0,0,.7)}*{box-sizing:border-box;margin:0;padding:0}body{background-color:var(--bg-deep);color:var(--text-main);font-family:var(--font-body);font-size:.95rem;line-height:1.6;overflow-x:hidden;min-height:100vh}h1,h2,h3,h4,h5,h6{font-family:var(--font-display);font-weight:600;letter-spacing:-.02em;color:#fff}.dashboard-container{display:flex;min-height:100vh}.sidebar{width:var(--sidebar-width);background-color:var(--bg-panel);border-right:1px solid var(--border-light);display:flex;flex-direction:column;height:100vh;position:fixed;left:0;top:0;z-index:100;padding:1.5rem;transition:var(--transition)}.sidebar-logo{gap:.75rem;padding:.5rem .5rem 2rem;border-bottom:1px solid var(--border-light);margin-bottom:1.5rem}.logo-glow,.sidebar-logo{display:flex;align-items:center}.logo-glow{width:32px;height:32px;border-radius:var(--border-radius-sm);background:linear-gradient(135deg,var(--primary),var(--secondary));box-shadow:0 0 15px var(--primary-glow);justify-content:center}.logo-text{font-family:var(--font-display);font-size:1.25rem;font-weight:800;background:linear-gradient(135deg,#fff,var(--accent));-webkit-background-clip:text;-webkit-text-fill-color:transparent}.sidebar-menu{list-style:none;display:flex;flex-direction:column;gap:.5rem;flex-grow:1}.menu-item a{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;color:var(--text-muted);text-decoration:none;border-radius:var(--border-radius-sm);font-weight:500;transition:var(--transition)}.menu-item a:hover{background-color:var(--bg-panel-hover);color:#fff}.menu-item.active a{background:linear-gradient(90deg,rgba(67,97,238,.15),transparent);border-left:3px solid var(--primary);color:#fff}.sidebar-footer{margin-top:auto;border-top:1px solid var(--border-light);padding-top:1rem}.user-profile-badge{display:flex;align-items:center;gap:.75rem;padding:.75rem .5rem;background-color:hsla(0,0%,100%,.02);border-radius:var(--border-radius-md);margin-bottom:.75rem}.profile-avatar{width:40px;height:40px;border-radius:50%;background:linear-gradient(135deg,var(--accent),var(--primary));display:flex;align-items:center;justify-content:center;font-weight:700;color:#fff;font-family:var(--font-display)}.profile-info{display:flex;flex-direction:column;overflow:hidden;max-width:140px}.profile-name{font-weight:600;color:#fff;font-size:.85rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.profile-role{font-size:.75rem;color:var(--primary);font-weight:600;text-transform:uppercase;letter-spacing:.05em}.btn-logout{width:100%;display:flex;align-items:center;justify-content:center;gap:.5rem;background-color:transparent;border:1px solid rgba(239,68,68,.3);color:var(--danger);padding:.6rem;border-radius:var(--border-radius-sm);cursor:pointer;font-weight:600;font-family:var(--font-body);transition:var(--transition)}.btn-logout:hover{background-color:var(--danger);color:#fff;box-shadow:0 0 15px rgba(239,68,68,.3)}.main-content{flex-grow:1;margin-left:var(--sidebar-width);padding:2.5rem;min-height:100vh;position:relative}.bg-glow{position:absolute;width:600px;height:600px;background:radial-gradient(circle,rgba(67,97,238,.08) 0,transparent 70%);top:-200px;right:-200px;z-index:-1;pointer-events:none}.page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem}.page-title{font-size:2rem;font-weight:800}.page-subtitle{color:var(--text-muted);font-size:.95rem;margin-top:.25rem}.grid-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));grid-gap:1.5rem;gap:1.5rem;margin-bottom:2.5rem}.stat-card{background-color:var(--bg-panel);border:1px solid var(--border-light);border-radius:var(--border-radius-lg);padding:1.5rem;display:flex;align-items:center;gap:1.25rem;box-shadow:var(--shadow);transition:var(--transition);position:relative;overflow:hidden}.stat-card:hover{transform:translateY(-4px);border-color:var(--primary);box-shadow:0 10px 25px -5px rgba(67,97,238,.15)}.stat-card:after{content:"";position:absolute;top:0;left:0;width:4px;height:100%;background:var(--primary);opacity:0;transition:var(--transition)}.stat-card:hover:after{opacity:1}.stat-icon{width:50px;height:50px;border-radius:var(--border-radius-md);background-color:rgba(67,97,238,.1);color:var(--primary);display:flex;align-items:center;justify-content:center}.stat-info{display:flex;flex-direction:column}.stat-label{color:var(--text-muted);font-size:.85rem;font-weight:500}.stat-value{font-family:var(--font-display);font-size:1.75rem;font-weight:700;color:#fff;line-height:1.2;margin-top:.25rem}.panel{background-color:var(--bg-panel);border:1px solid var(--border-light);border-radius:var(--border-radius-lg);padding:1.75rem;box-shadow:var(--shadow);margin-bottom:2rem;transition:var(--transition)}.panel-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem;padding-bottom:1rem;border-bottom:1px solid var(--border-light)}.panel-title{font-size:1.25rem;font-weight:700}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;font-family:var(--font-body);font-weight:600;padding:.6rem 1.25rem;border-radius:var(--border-radius-sm);cursor:pointer;transition:var(--transition);font-size:.9rem}.btn-primary{background-color:var(--primary);color:#fff;border:none;box-shadow:0 4px 15px rgba(67,97,238,.3)}.btn-primary:hover{background-color:#3b54d6;box-shadow:0 4px 20px rgba(67,97,238,.45);transform:translateY(-1px)}.btn-secondary{background-color:hsla(0,0%,100%,.05);color:var(--text-main);border:1px solid var(--border-light)}.btn-secondary:hover{background-color:hsla(0,0%,100%,.1);border-color:var(--text-muted)}.btn-danger{background-color:var(--danger);color:#fff;border:none;box-shadow:0 4px 15px rgba(239,68,68,.3)}.btn-danger:hover{background-color:#dc2626;box-shadow:0 4px 20px rgba(239,68,68,.45)}.btn-success{background-color:var(--success);color:#fff;border:none;box-shadow:0 4px 15px rgba(16,185,129,.3)}.btn-success:hover{background-color:#059669}.table-wrapper{overflow-x:auto;border-radius:var(--border-radius-md);border:1px solid var(--border-light)}.premium-table{width:100%;border-collapse:collapse;text-align:left;background-color:hsla(0,0%,100%,.01)}.premium-table th{background-color:hsla(0,0%,100%,.02);color:var(--text-muted);font-weight:600;font-size:.8rem;text-transform:uppercase;letter-spacing:.05em}.premium-table td,.premium-table th{padding:1rem 1.25rem;border-bottom:1px solid var(--border-light)}.premium-table td{color:var(--text-main);font-size:.9rem}.premium-table tr:last-child td{border-bottom:none}.premium-table tr:hover td{background-color:hsla(0,0%,100%,.02)}.badge{display:inline-flex;padding:.25rem .6rem;border-radius:50px;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em}.badge-admin{background-color:rgba(67,97,238,.15);color:var(--accent)}.badge-user{background-color:hsla(0,0%,100%,.05);color:var(--text-muted)}.badge-active{background-color:var(--success-glow);color:var(--success)}.badge-expired{background-color:var(--danger-glow);color:var(--danger)}.login-wrapper{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:2rem;position:relative;background:radial-gradient(circle at 10% 20%,rgba(67,97,238,.05) 0,transparent 50%),radial-gradient(circle at 90% 80%,rgba(114,9,183,.05) 0,transparent 50%)}.login-card{width:100%;max-width:440px;background-color:var(--bg-panel);border:1px solid var(--border-light);border-radius:var(--border-radius-lg);padding:2.5rem;box-shadow:0 20px 50px rgba(0,0,0,.6);position:relative;overflow:hidden;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.login-card:before{content:"";position:absolute;top:0;left:0;width:100%;height:4px;background:linear-gradient(90deg,var(--primary),var(--secondary),var(--accent))}.login-header{text-align:center;margin-bottom:2rem}.login-logo{display:inline-flex;margin-bottom:1rem}.login-title{font-size:1.75rem;font-weight:800}.login-subtitle{color:var(--text-muted);font-size:.9rem;margin-top:.5rem}.form-group{margin-bottom:1.5rem}.form-label{display:block;color:var(--text-muted);font-size:.85rem;font-weight:600;margin-bottom:.5rem}.form-input{width:100%;background-color:var(--bg-deep);border:1px solid var(--border-light);color:#fff;padding:.8rem 1rem;border-radius:var(--border-radius-sm);font-family:var(--font-body);font-size:.95rem;transition:var(--transition)}.form-input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 10px rgba(67,97,238,.2)}.otp-container{display:flex;justify-content:space-between;gap:.5rem;margin:1.5rem 0}.otp-cell{width:48px;height:52px;text-align:center;font-family:var(--font-display);font-size:1.5rem;font-weight:700;background-color:var(--bg-deep);border:1px solid var(--border-light);color:#fff;border-radius:var(--border-radius-sm);transition:var(--transition)}.otp-cell:focus{outline:none;border-color:var(--accent);box-shadow:0 0 10px rgba(76,201,240,.2)}.dev-otp-toast{background-color:rgba(67,97,238,.1);border:1px dashed var(--primary);border-radius:var(--border-radius-md);padding:1rem;margin-top:1.5rem;display:flex;align-items:center;gap:.75rem;font-size:.85rem}.dev-otp-label{color:var(--accent);font-weight:700;text-transform:uppercase}.dev-otp-code{font-family:monospace;font-size:1.1rem;font-weight:800;color:#fff;background-color:var(--bg-deep);padding:.25rem .5rem;border-radius:var(--border-radius-sm);letter-spacing:.05em}.jwt-playground{display:grid;grid-template-columns:1fr 1fr;grid-gap:2rem;gap:2rem}@media (max-width:1024px){.jwt-playground{grid-template-columns:1fr}}.jwt-input-panel,.jwt-output-panel{display:flex;flex-direction:column;gap:1.5rem}.jwt-colorized-box{border:1px solid var(--border-light);border-radius:var(--border-radius-md);overflow:hidden;font-family:monospace;font-size:.9rem}.jwt-part{padding:1rem;word-break:break-all}.jwt-part-header{color:#ef4444;background-color:rgba(239,68,68,.03)}.jwt-part-payload{color:#3b82f6;background-color:rgba(59,130,246,.03);border-top:1px solid var(--border-light);border-bottom:1px solid var(--border-light)}.jwt-part-signature{color:#10b981;background-color:rgba(16,185,129,.03)}.jwt-inspect-json{background-color:#07090e;border-radius:var(--border-radius-sm);font-size:.85rem;color:#a78bfa;overflow-x:auto;max-height:250px}.jwt-inspect-json,.keypair-box{padding:1rem;font-family:monospace;border:1px solid var(--border-light)}.keypair-box{background-color:var(--bg-deep);border-radius:var(--border-radius-sm);font-size:.75rem;color:var(--text-muted);max-height:120px;overflow-y:auto;white-space:pre-wrap;word-break:break-all}.apps-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));grid-gap:1.5rem;gap:1.5rem}.app-card{background-color:var(--bg-panel);border:1px solid var(--border-light);border-radius:var(--border-radius-lg);padding:1.75rem;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:1rem;transition:var(--transition);position:relative}.app-card:hover{transform:translateY(-4px);border-color:var(--primary)}.app-card-header{display:flex;justify-content:space-between;align-items:flex-start}.app-os-badge{padding:.25rem .5rem;font-size:.75rem;border-radius:var(--border-radius-sm);font-weight:700;background-color:hsla(0,0%,100%,.05)}.app-os-badge.iOS{color:#ffb703;background-color:rgba(255,183,3,.1)}.app-os-badge.Android{color:#a3b18a;background-color:hsla(82,20%,62%,.1)}.app-title{font-size:1.15rem;font-weight:700}.app-desc{color:var(--text-muted);font-size:.85rem;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;height:54px}.app-price-row{display:flex;align-items:baseline;gap:.5rem;margin-top:auto;border-top:1px solid var(--border-light);padding-top:1rem}.app-price{font-family:var(--font-display);font-size:1.5rem;font-weight:800;color:#fff}.app-discount{font-size:.8rem;color:var(--danger);text-decoration:line-through}.modal-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:rgba(0,0,0,.75);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:1000;display:flex;align-items:center;justify-content:center;padding:2rem}.modal{background-color:var(--bg-panel);border:1px solid var(--border-light);border-radius:var(--border-radius-lg);width:100%;max-width:600px;max-height:90vh;overflow-y:auto;box-shadow:0 25px 50px -12px rgba(0,0,0,.8);display:flex;flex-direction:column}.modal-header{padding:1.5rem;border-bottom:1px solid var(--border-light);display:flex;justify-content:space-between;align-items:center}.modal-body{padding:1.5rem;flex-grow:1}.modal-footer{padding:1.25rem 1.5rem;border-top:1px solid var(--border-light);display:flex;justify-content:flex-end;gap:.75rem}.close-btn{background:transparent;border:none;color:var(--text-muted);cursor:pointer;font-size:1.25rem;transition:var(--transition)}.close-btn:hover{color:#fff}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.animate-fade-in{animation:fadeInUp .4s ease forwards}.search-container{position:relative;max-width:400px;width:100%}.search-input{width:100%;background-color:var(--bg-panel);border:1px solid var(--border-light);border-radius:var(--border-radius-sm);color:#fff;padding:.6rem 1rem .6rem 2.5rem;font-family:var(--font-body);font-size:.9rem;transition:var(--transition)}.search-input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 10px var(--primary-glow)}.search-icon{position:absolute;left:.75rem;top:50%;transform:translateY(-50%);color:var(--text-muted)}