.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#0f172a,#1e293b,#0f172a);padding:20px}.auth-container{width:100%;max-width:420px;display:flex;flex-direction:column;gap:24px}.auth-header{text-align:center;margin-bottom:12px}.auth-header h1{margin:0;font-size:32px;font-weight:700;background:linear-gradient(135deg,#8b5cf6,#a78bfa);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;letter-spacing:-.01em}.auth-header p{margin:8px 0 0;font-size:14px;color:#94a3b8;letter-spacing:.03em}.auth-topbar{width:100%;display:flex;justify-content:flex-end}.auth-home{background:#94a3b81f;border:1px solid rgba(148,163,184,.2);color:#e2e8f0;border-radius:999px;padding:8px 16px;font-size:13px;font-weight:600;cursor:pointer;transition:all .2s ease}.auth-home:hover{border-color:#a78bfa80;color:#ddd6fe}.auth-card{background:linear-gradient(135deg,#1e293be6,#0f172af2);border:1px solid rgba(148,163,184,.1);border-radius:20px;padding:32px 28px;box-shadow:0 20px 60px #0009,inset 0 1px #ffffff0d;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.auth-tabs{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:28px;border-bottom:1px solid rgba(148,163,184,.1);padding-bottom:12px}.auth-tab{padding:10px 16px;background:transparent;border:none;color:#94a3b8;font-size:14px;font-weight:600;cursor:pointer;border-bottom:2px solid transparent;transition:all .2s ease;text-transform:uppercase;letter-spacing:.05em}.auth-tab:hover{color:#cbd5e1}.auth-tab.active{color:#a78bfa;border-bottom-color:#a78bfa}.auth-tab.disabled{opacity:.5;cursor:not-allowed}.auth-form{display:flex;flex-direction:column;gap:16px}.form-group{display:flex;flex-direction:column;gap:6px}.form-group label{font-size:13px;font-weight:600;color:#cbd5e1;text-transform:uppercase;letter-spacing:.05em}.form-group input{padding:12px 14px;background:#0f172a80;border:1px solid rgba(148,163,184,.2);border-radius:10px;color:#e2e8f0;font-size:14px;transition:all .2s ease;font-family:inherit}.form-group input::placeholder{color:#64748b}.form-group input:focus{outline:none;background:#0f172acc;border-color:#a78bfa66;box-shadow:0 0 0 3px #a78bfa1a}.form-group input:disabled{opacity:.6;cursor:not-allowed}.auth-error{padding:12px 14px;background:#f871711a;border:1px solid rgba(248,113,113,.3);border-radius:8px;color:#fecdd3;font-size:13px;font-weight:500}.auth-notice{padding:12px 14px;background:#94a3b81a;border:1px solid rgba(148,163,184,.2);border-radius:8px;color:#e2e8f0;font-size:13px;font-weight:500}.auth-submit-btn{padding:12px 16px;background:linear-gradient(135deg,#8b5cf6,#a78bfa);color:#fff;border:none;border-radius:10px;font-size:14px;font-weight:600;cursor:pointer;transition:all .2s ease;text-transform:uppercase;letter-spacing:.05em;margin-top:8px}.auth-submit-btn:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 8px 20px #8b5cf666}.auth-submit-btn:active:not(:disabled){transform:translateY(0)}.auth-submit-btn:disabled{opacity:.7;cursor:not-allowed}.auth-footer{text-align:center;margin-top:8px}.auth-footer p{margin:0;font-size:13px;color:#94a3b8}.auth-toggle{background:none;border:none;color:#a78bfa;font-weight:600;cursor:pointer;text-decoration:underline;text-decoration-style:dotted;text-underline-offset:2px;transition:color .2s ease;font-size:13px}.auth-toggle:disabled{opacity:.5;cursor:not-allowed}.auth-toggle:hover{color:#c4b5fd}.auth-info{text-align:center;padding:20px;background:#1e293b80;border:1px solid rgba(148,163,184,.1);border-radius:12px}.auth-info p{margin:0;font-size:13px;color:#94a3b8;line-height:1.6}@media(max-width:480px){.auth-card{padding:24px 20px}.auth-header h1{font-size:28px}.auth-container{gap:16px}}:root{--frameworks-bg: #0b1021;--frameworks-card: rgba(15, 23, 42, .7);--frameworks-border: rgba(148, 163, 184, .2);--frameworks-text: #e2e8f0;--frameworks-muted: #94a3b8}.frameworks-page{min-height:100vh;background:radial-gradient(circle at 15% 20%,rgba(124,58,237,.2),transparent 40%),radial-gradient(circle at 80% 10%,rgba(59,130,246,.2),transparent 35%),radial-gradient(circle at 50% 80%,rgba(34,197,94,.12),transparent 35%),var(--frameworks-bg);color:var(--frameworks-text);display:flex;flex-direction:column;padding:24px 24px 60px}.frameworks-header{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap}.frameworks-brand{display:flex;align-items:center;gap:10px}.frameworks-logo{width:40px;height:40px;object-fit:contain;border-radius:8px}.frameworks-title{font-size:20px;font-weight:700}.frameworks-logout{border:1px solid rgba(255,255,255,.2);background:#ffffff14;color:#e2e8f0;border-radius:999px;padding:8px 16px;font-weight:600;cursor:pointer}.frameworks-admin-toggle{border:1px solid rgba(124,58,237,.35);background:#7c3aed29;color:#e2e8f0;border-radius:999px;padding:8px 14px;font-weight:600;cursor:pointer}.frameworks-actions{display:flex;align-items:center;gap:10px}.frameworks-user{display:inline-flex;align-items:center;gap:8px;background:#7c3aed24;border:1px solid rgba(124,58,237,.35);color:#d8b4fe;padding:8px 12px;border-radius:14px;font-weight:600;letter-spacing:.02em;font-size:13px}.frameworks-admin{background:#f871712e;color:#fecdd3;border:1px solid rgba(248,113,113,.35);padding:2px 8px;border-radius:999px;font-size:11px;font-weight:700}.frameworks-content{max-width:960px;margin:50px auto 0;width:100%}.frameworks-content h1{margin:0 0 8px;font-size:32px}.frameworks-content p{margin:0 0 24px;color:var(--frameworks-muted)}.frameworks-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px}.framework-card{background:var(--frameworks-card);border:1px solid var(--frameworks-border);border-radius:16px;padding:20px;text-align:left;color:inherit;cursor:pointer;display:flex;flex-direction:column;gap:10px;box-shadow:0 16px 40px #00000059}.framework-card h2{margin:0;font-size:18px}.framework-card.placeholder{cursor:default;opacity:.7}.framework-pill{align-self:flex-start;padding:6px 10px;border-radius:999px;background:#7c3aed2e;border:1px solid rgba(124,58,237,.35);font-size:12px;font-weight:600}.framework-pill.muted{background:#94a3b81f;border-color:#94a3b84d;color:var(--frameworks-muted)}@media(max-width:600px){.frameworks-content{margin-top:32px}}:root{--landing-bg: #0b1021;--landing-card: rgba(15, 23, 42, .6);--landing-border: rgba(148, 163, 184, .2);--landing-text: #e2e8f0;--landing-muted: #94a3b8;--landing-accent: #8b5cf6}.landing-page{min-height:100vh;background:radial-gradient(circle at 15% 15%,rgba(124,58,237,.15),transparent 30%),radial-gradient(circle at 85% 10%,rgba(59,130,246,.2),transparent 35%),radial-gradient(circle at 50% 80%,rgba(34,197,94,.12),transparent 40%),var(--landing-bg);color:var(--landing-text);display:flex;flex-direction:column;padding:28px 24px 60px}.landing-header{display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap;margin-bottom:60px}.landing-brand{display:flex;align-items:center;flex-direction:row;gap:10px}.landing-logo{width:48px;height:48px;object-fit:contain;border-radius:8px}.landing-title{font-size:24px;font-weight:700;letter-spacing:-.02em}.landing-subtitle{font-size:14px;color:var(--landing-muted)}.landing-nav{display:flex;gap:12px}.landing-link{background:#ffffff14;border:1px solid rgba(255,255,255,.15);border-radius:999px;color:var(--landing-text);padding:10px 18px;font-weight:600;cursor:pointer;transition:all .2s ease}.landing-link.secondary{background:transparent;border-color:#fff3;color:var(--landing-muted)}.landing-link:hover{transform:translateY(-1px);border-color:#8b5cf699;color:#ddd6fe}.landing-hero{display:flex;justify-content:center}.landing-hero-content{max-width:900px;text-align:left}.landing-pill{display:inline-flex;align-items:center;gap:8px;padding:8px 14px;border-radius:999px;background:#8b5cf633;border:1px solid rgba(139,92,246,.4);color:#e9d5ff;font-size:13px;font-weight:600;margin-bottom:18px}.landing-hero h1{margin:0 0 16px;font-size:40px;letter-spacing:-.02em}.landing-hero p{margin:0 0 28px;font-size:16px;line-height:1.7;color:var(--landing-muted)}.landing-actions{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:32px}.landing-cta{padding:12px 22px;border-radius:12px;border:none;font-weight:700;font-size:14px;cursor:pointer;background:linear-gradient(135deg,#8b5cf6,#a78bfa);color:#fff;box-shadow:0 12px 30px #8b5cf64d;transition:transform .2s ease,box-shadow .2s ease}.landing-cta.outline{background:transparent;border:1px solid rgba(139,92,246,.5);color:#ddd6fe;box-shadow:none}.landing-cta:hover{transform:translateY(-1px);box-shadow:0 16px 32px #8b5cf659}.landing-features{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.landing-feature{background:var(--landing-card);border:1px solid var(--landing-border);border-radius:16px;padding:18px;box-shadow:0 16px 40px #00000059}.landing-feature h3{margin:0 0 8px;font-size:16px}.landing-feature p{margin:0;font-size:14px;color:var(--landing-muted);line-height:1.6}@media(max-width:720px){.landing-header{margin-bottom:40px}.landing-hero h1{font-size:32px}.landing-actions{flex-direction:column;align-items:stretch}.landing-features{grid-template-columns:1fr}}:root{--bg: #0b1021;--card: #0f172a;--muted: #94a3b8;--primary: #7c3aed;--primary-dark: #6d28d9;--border: rgba(255, 255, 255, .06)}*{box-sizing:border-box}body{margin:0;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:radial-gradient(circle at 20% 20%,rgba(124,58,237,.12),transparent 25%),radial-gradient(circle at 80% 0%,rgba(59,130,246,.18),transparent 30%),radial-gradient(circle at 50% 80%,rgba(34,197,94,.12),transparent 30%),var(--bg);color:#fff;min-height:100vh}.app-shell{max-width:1200px;margin:0 auto;padding:28px 20px 60px}.header{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:20px}.title{display:flex;flex-direction:column;gap:4px}.title h1{margin:0;font-size:28px;letter-spacing:-.02em}.title span{color:var(--muted);font-size:15px}.badge{display:inline-flex;align-items:center;gap:8px;background:#7c3aed24;border:1px solid rgba(124,58,237,.35);color:#d8b4fe;padding:10px 14px;border-radius:14px;font-weight:600;letter-spacing:.02em}.grid{display:grid;grid-template-columns:1.1fr .9fr;gap:16px}.layout{display:flex;flex-direction:column;gap:16px}.sub-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,4fr);gap:16px}.card{background:var(--card);border:1px solid var(--border);border-radius:18px;padding:18px 18px 16px;box-shadow:0 20px 60px #00000059}.card h2{margin:0 0 12px;font-size:18px;letter-spacing:-.01em}.form-group{display:flex;flex-direction:column;gap:6px;margin-bottom:12px}.form-group label{color:#cbd5e1;font-weight:600;font-size:13px}.input,textarea,select{width:100%;background:#ffffff0a;border:1px solid rgba(255,255,255,.08);border-radius:12px;padding:10px 12px;color:#fff;font-size:14px;font-family:Inter,system-ui}textarea{min-height:110px;resize:vertical;font-family:JetBrains Mono,SFMono-Regular,ui-monospace,monospace;font-size:13px;line-height:1.5}.button-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px}.btn{border:none;border-radius:12px;padding:12px;font-weight:700;font-size:14px;color:#fff;cursor:pointer;transition:transform .12s ease,box-shadow .12s ease,background .15s ease}.btn.primary{background:linear-gradient(120deg,#7c3aed,#6366f1);box-shadow:0 10px 30px #6366f140}.btn.secondary{background:#ffffff0f;border:1px solid rgba(255,255,255,.12);color:#e2e8f0}.btn:hover{transform:translateY(-1px)}.btn:active{transform:translateY(0)}.preset-row{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.pill{padding:8px 11px;border-radius:24px;background:#ffffff0f;color:#e2e8f0;border:1px solid rgba(255,255,255,.1);cursor:pointer;font-weight:600;font-size:13px}.pill:hover{border-color:#7c3aed80;color:#c4b5fd}.error{background:#f8717124;border:1px solid rgba(248,113,113,.35);color:#fecdd3;padding:10px 12px;border-radius:12px;margin-bottom:12px}.canvas-box{background:#ffffff05;border:1px dashed rgba(255,255,255,.08);border-radius:14px;padding:10px;height:240px}.graph-box,.no-inner-box{border:none;padding:0;background:transparent}.canvas-box canvas{display:block;width:100%;height:auto}.chart-box{height:360px}.chart-box canvas{height:100%}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px}.stat{background:#ffffff0a;border:1px solid rgba(255,255,255,.06);border-radius:12px;padding:10px}.stat .label{color:var(--muted);font-size:12px}.stat .value{font-size:20px;font-weight:700;margin-top:4px}.badge-row{display:flex;gap:8px;flex-wrap:wrap;margin-top:6px}.badge-pill{padding:6px 10px;border-radius:10px;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);font-size:12px;color:#cbd5e1}.loading{display:inline-flex;align-items:center;gap:8px;color:#cbd5e1}.spinner{width:16px;height:16px;border-radius:50%;border:2px solid rgba(255,255,255,.2);border-top-color:#fff;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.tabs{display:inline-flex;gap:6px;margin:8px 0 12px}.tabs.sub-tabs{margin:12px 0 10px;border-top:1px solid rgba(255,255,255,.06);padding-top:12px}.tab{padding:8px 12px;border-radius:10px;border:1px solid var(--border);background:#ffffff0a;color:#cbd5e1;cursor:pointer;font-weight:600}.tab.active{background:#7c3aed2e;border-color:#7c3aed73;color:#fff}.tab-panel{margin-top:8px}.panel-section{background:#ffffff05;border:1px solid var(--border);border-radius:12px;padding:12px;margin-bottom:10px}.section-header{display:flex;align-items:baseline;gap:8px;margin-bottom:10px}.section-header .muted{color:var(--muted);font-size:12px}.list{display:flex;flex-direction:column;gap:8px}.list-row{display:grid;grid-template-columns:1fr 130px auto;gap:10px;align-items:center;padding:8px;border:1px solid rgba(255,255,255,.06);border-radius:10px;background:#ffffff05}.list-col.grow{display:flex;flex-direction:column;gap:6px}.list-col.narrow{width:120px}.label{color:#cbd5e1;font-size:12px;margin-bottom:4px}.muted{color:var(--muted)}.inline-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px;margin-top:8px}.form-grid-3{display:grid;grid-template-columns:repeat(3,minmax(120px,1fr));gap:10px}.pill.danger{border-color:#f8717166;color:#fecdd3}@media(max-width:900px){.grid,.sub-grid{grid-template-columns:1fr}.header{flex-direction:column;align-items:flex-start}.list-col.grow{grid-template-columns:1fr}}.info-box{background:#ffffff08;border:1px solid rgba(255,255,255,.08);border-radius:10px;padding:12px;margin-top:12px}.info-box p{margin:6px 0;color:#cbd5e1;font-size:14px}.info-box.helper-text p{font-size:12px;color:#94a3b8}.info-box strong{color:#e2e8f0}.defaults-grid{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:16px}.defaults-left{display:flex;flex-direction:column;gap:8px}.defaults-left .panel-section{margin-bottom:0}.defaults-left .info-box{margin-top:8px}.defaults-summary{height:fit-content}@media(max-width:900px){.defaults-grid{grid-template-columns:1fr}}.user-section{display:flex;align-items:center;gap:12px}.user-badge{display:inline-flex;align-items:center;gap:8px;background:#7c3aed24;border:1px solid rgba(124,58,237,.35);color:#d8b4fe;padding:10px 14px;border-radius:14px;font-weight:600;letter-spacing:.02em;cursor:pointer;border:none;transition:all .2s}.user-badge:hover{background:#7c3aed3d;border-color:#7c3aed80}.btn-logout{padding:8px 14px;background:#f8717124;border:1px solid rgba(248,113,113,.35);color:#fecdd3;border-radius:10px;font-weight:600;font-size:12px;cursor:pointer;transition:all .2s}.btn-logout:hover{background:#f871713d;border-color:#f8717180}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1000}.modal-content{background:var(--card);border:1px solid var(--border);border-radius:18px;padding:24px;box-shadow:0 20px 60px #00000080;width:90%;max-width:400px}.modal-content h2{margin:0 0 16px;font-size:20px;letter-spacing:-.01em}.btn-admin{padding:8px 14px;background:linear-gradient(135deg,#06b6d4,#0891b2);border:none;color:#fff;border-radius:10px;font-weight:600;font-size:12px;cursor:pointer;transition:all .2s;text-transform:uppercase;letter-spacing:.05em}.btn-admin:hover{transform:translateY(-2px);box-shadow:0 8px 20px #06b6d44d}.admin-badge{display:inline-block;margin-left:8px;padding:2px 8px;background:#06b6d433;border:1px solid rgba(6,182,212,.4);border-radius:4px;font-size:10px;font-weight:700;color:#06b6d4;text-transform:uppercase;letter-spacing:.05em}.admin-panel{padding:24px;max-width:1200px;margin:0 auto}.admin-header{margin-bottom:24px}.admin-header h2{margin:0 0 8px;font-size:24px;background:linear-gradient(135deg,#06b6d4,#0891b2);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.admin-header p{margin:0;color:#94a3b8;font-size:14px}.admin-table-wrapper{overflow-x:auto;background:var(--card);border:1px solid var(--border);border-radius:12px;padding:0}.admin-table{width:100%;border-collapse:collapse;font-size:13px}.admin-table thead{background:#06b6d40d;border-bottom:1px solid var(--border)}.admin-table th{padding:12px 16px;text-align:left;font-weight:600;color:#06b6d4;text-transform:uppercase;letter-spacing:.05em;font-size:11px}.admin-table td{padding:12px 16px;border-bottom:1px solid var(--border);color:#cbd5e1}.admin-table tbody tr:hover{background:#06b6d40d}.admin-table tbody tr.current-user{background:#22c55e0d}.badge-self{display:inline-block;margin-left:8px;padding:2px 8px;background:#22c55e33;border:1px solid rgba(34,197,94,.4);border-radius:4px;font-size:10px;color:#22c55e;text-transform:uppercase}.role-badge{display:inline-block;padding:4px 10px;border-radius:6px;font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.05em}.role-badge.admin{background:#06b6d433;border:1px solid rgba(6,182,212,.4);color:#06b6d4}.role-badge.user{background:#a855f733;border:1px solid rgba(168,85,247,.4);color:#d8b4fe}.role-select{padding:6px 10px;background:#0f172acc;border:1px solid rgba(6,182,212,.4);color:#cbd5e1;border-radius:6px;font-size:12px;font-weight:600;cursor:pointer}.role-select:focus{outline:none;border-color:#06b6d499;box-shadow:0 0 0 3px #06b6d41a}.actions{display:flex;gap:8px;flex-wrap:wrap}.btn-sm{padding:6px 10px;border:none;border-radius:6px;font-size:11px;font-weight:600;cursor:pointer;transition:all .2s;white-space:nowrap}.btn-role{background:#a855f733;border:1px solid rgba(168,85,247,.4);color:#d8b4fe}.btn-role:hover{background:#a855f74d;border-color:#a855f799}.btn-password{background:#22c55e33;border:1px solid rgba(34,197,94,.4);color:#86efac}.btn-password:hover{background:#22c55e4d;border-color:#22c55e99}.btn-delete{background:#f8717133;border:1px solid rgba(248,113,113,.4);color:#fecdd3}.btn-delete:hover{background:#f871714d;border-color:#f8717199}.admin-modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000}.admin-modal{background:var(--card);border:1px solid var(--border);border-radius:16px;padding:24px;max-width:400px;width:90%;box-shadow:0 20px 60px #0009}.admin-modal h3{margin:0 0 12px;font-size:18px;color:#e2e8f0}.admin-modal p{margin:0 0 16px;color:#94a3b8;font-size:13px}.modal-input{width:100%;padding:10px 12px;background:#0f172a80;border:1px solid rgba(6,182,212,.3);color:#e2e8f0;border-radius:8px;font-size:13px;margin-bottom:16px;box-sizing:border-box}.modal-input:focus{outline:none;border-color:#06b6d499;box-shadow:0 0 0 3px #06b6d41a}.modal-buttons{display:grid;grid-template-columns:1fr 1fr;gap:10px}.admin-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.stat-item{padding:12px 16px;background:var(--card);border:1px solid var(--border);border-radius:10px;display:flex;flex-direction:column;gap:6px}.stat-item span{color:#94a3b8;font-size:12px;text-transform:uppercase;letter-spacing:.05em}.stat-item strong{color:#06b6d4;font-size:18px}@media(max-width:768px){.admin-stats{grid-template-columns:1fr}.actions{flex-direction:column}.btn-sm{width:100%}.admin-table{font-size:12px}.admin-table th,.admin-table td{padding:10px 8px}}
