*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--color-bg:#0a0a0f;--color-surface:#13131a;--color-surface-2:#1c1c27;--color-border:#2a2a3d;--color-border-hover:#3d3d5c;--color-primary:#7c6bff;--color-primary-dim:#7c6bff22;--color-primary-hover:#9585ff;--color-success:#34d399;--color-warning:#fbbf24;--color-danger:#f87171;--color-text:#e8e8f0;--color-text-muted:#88a;--color-text-faint:#44445a;--font-sans:"Inter", system-ui, -apple-system, sans-serif;--font-mono:"JetBrains Mono", "Fira Code", monospace;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-lg:1.125rem;--text-xl:1.25rem;--text-2xl:1.5rem;--text-3xl:1.875rem;--weight-normal:400;--weight-medium:500;--weight-semibold:600;--weight-bold:700;--leading-tight:1.25;--leading-normal:1.5;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--space-10:2.5rem;--space-12:3rem;--space-16:4rem;--radius-sm:.375rem;--radius-md:.625rem;--radius-lg:.875rem;--radius-xl:1.25rem;--radius-full:9999px;--shadow-sm:0 1px 3px #00000040;--shadow-md:0 4px 16px #00000060;--shadow-lg:0 8px 32px #00000080;--shadow-glow:0 0 24px #7c6bff30;--ease:cubic-bezier(.4, 0, .2, 1);--duration-fast:.12s;--duration-base:.2s;--sidebar-width:220px;--content-max:960px}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px}body{font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--leading-normal);background:var(--color-bg);color:var(--color-text);min-height:100dvh}a{color:var(--color-primary);transition:color var(--duration-fast) var(--ease);text-decoration:none}a:hover{color:var(--color-primary-hover)}.text-xs{font-size:var(--text-xs)}.text-sm{font-size:var(--text-sm)}.text-lg{font-size:var(--text-lg)}.text-xl{font-size:var(--text-xl)}.text-2xl{font-size:var(--text-2xl)}.text-3xl{font-size:var(--text-3xl)}.text-muted{color:var(--color-text-muted)}.text-faint{color:var(--color-text-faint)}.text-primary{color:var(--color-primary)}.text-success{color:var(--color-success)}.text-danger{color:var(--color-danger)}.font-medium{font-weight:var(--weight-medium)}.font-semibold{font-weight:var(--weight-semibold)}.font-bold{font-weight:var(--weight-bold)}.font-mono{font-family:var(--font-mono)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.flex{display:flex}.flex-col{flex-direction:column;display:flex}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-1{gap:var(--space-1)}.gap-2{gap:var(--space-2)}.gap-3{gap:var(--space-3)}.gap-4{gap:var(--space-4)}.gap-6{gap:var(--space-6)}.gap-8{gap:var(--space-8)}.flex-1{flex:1}.flex-wrap{flex-wrap:wrap}.grid{display:grid}.w-full{width:100%}.h-full{height:100%}.min-h-screen{min-height:100dvh}.p-2{padding:var(--space-2)}.p-3{padding:var(--space-3)}.p-4{padding:var(--space-4)}.p-6{padding:var(--space-6)}.p-8{padding:var(--space-8)}.px-3{padding-inline:var(--space-3)}.px-4{padding-inline:var(--space-4)}.px-6{padding-inline:var(--space-6)}.py-2{padding-block:var(--space-2)}.py-3{padding-block:var(--space-3)}.py-4{padding-block:var(--space-4)}.mt-1{margin-top:var(--space-1)}.mt-2{margin-top:var(--space-2)}.mt-4{margin-top:var(--space-4)}.mt-6{margin-top:var(--space-6)}.mt-8{margin-top:var(--space-8)}.mb-2{margin-bottom:var(--space-2)}.mb-4{margin-bottom:var(--space-4)}.mb-6{margin-bottom:var(--space-6)}.ml-auto{margin-left:auto}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-6);transition:border-color var(--duration-base) var(--ease)}.card:hover{border-color:var(--color-border-hover)}.card-sm{padding:var(--space-4);border-radius:var(--radius-md)}.btn{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:var(--weight-medium);cursor:pointer;transition:background var(--duration-fast) var(--ease), border-color var(--duration-fast) var(--ease), opacity var(--duration-fast) var(--ease);white-space:nowrap;border:1px solid #0000;font-family:inherit;line-height:1;text-decoration:none;display:inline-flex}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--color-primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--color-primary-hover);color:#fff}.btn-ghost{border-color:var(--color-border);color:var(--color-text);background:0 0}.btn-ghost:hover:not(:disabled){background:var(--color-surface-2);border-color:var(--color-border-hover);color:var(--color-text)}.btn-danger{border-color:var(--color-danger);color:var(--color-danger);background:0 0}.btn-danger:hover:not(:disabled){background:#f8717120}.btn-sm{padding:var(--space-1) var(--space-3);font-size:var(--text-xs)}.btn-lg{padding:var(--space-3) var(--space-6);font-size:var(--text-base)}.form-group{gap:var(--space-2);flex-direction:column;display:flex}label{font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-text-muted)}input[type=text],input[type=email],input[type=password],input[type=number],input[type=date],input[type=datetime-local],textarea,select{width:100%;padding:var(--space-2) var(--space-3);background:var(--color-surface-2);border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text);font-size:var(--text-sm);transition:border-color var(--duration-fast) var(--ease), box-shadow var(--duration-fast) var(--ease);outline:none;font-family:inherit}input:focus,textarea:focus,select:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-dim)}input::placeholder,textarea::placeholder{color:var(--color-text-faint)}textarea{resize:vertical;min-height:80px}.badge{padding:2px var(--space-2);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:var(--weight-medium);background:var(--color-surface-2);color:var(--color-text-muted);border:1px solid var(--color-border);align-items:center;display:inline-flex}.badge-primary{background:var(--color-primary-dim);color:var(--color-primary);border-color:var(--color-primary)}.badge-success{color:var(--color-success);border-color:var(--color-success);background:#34d39922}hr.divider{background:var(--color-border);height:1px;margin-block:var(--space-4);border:none}.alert{padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);font-size:var(--text-sm);border:1px solid #0000}.alert-danger{color:var(--color-danger);background:#f8717118;border-color:#f8717140}.alert-success{color:var(--color-success);background:#34d39918;border-color:#34d39940}.skeleton{background:linear-gradient(90deg, var(--color-surface) 25%, var(--color-surface-2) 50%, var(--color-surface) 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}}.app-shell{grid-template-columns:var(--sidebar-width) 1fr;min-height:100dvh;display:grid}.sidebar{background:var(--color-surface);border-right:1px solid var(--color-border);padding:var(--space-5) 0 var(--space-4);flex-direction:column;height:100dvh;display:flex;position:sticky;top:0;overflow-y:auto}.sidebar-logo{padding:0 var(--space-5) var(--space-5);font-size:var(--text-xl);font-weight:var(--weight-bold);letter-spacing:-.03em;margin-bottom:var(--space-2)}.sidebar-logo span{color:var(--color-primary)}.sidebar-nav{padding:0 var(--space-3);flex-direction:column;flex:1;gap:2px;display:flex}.sidebar-section-label{padding:var(--space-3) var(--space-3) var(--space-1);font-size:10px;font-weight:var(--weight-semibold);letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-faint)}.nav-item{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-text-muted);cursor:pointer;transition:color var(--duration-fast) var(--ease), background var(--duration-fast) var(--ease);text-decoration:none;display:flex;position:relative}.nav-item:hover{color:var(--color-text);background:var(--color-surface-2)}.nav-item.active{color:var(--color-primary);background:var(--color-primary-dim);font-weight:var(--weight-semibold)}.nav-item.active:before{content:"";background:var(--color-primary);border-radius:0 2px 2px 0;width:3px;height:60%;position:absolute;top:20%;left:0}.sidebar-footer{padding:var(--space-3) var(--space-3) 0;border-top:1px solid var(--color-border);margin-top:var(--space-3)}.sidebar-user{align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-2);border-radius:var(--radius-md);margin-bottom:var(--space-2);display:flex}.sidebar-avatar{border-radius:var(--radius-full);background:var(--color-primary-dim);border:1px solid var(--color-primary);width:30px;height:30px;color:var(--color-primary);font-size:var(--text-xs);font-weight:var(--weight-bold);letter-spacing:0;flex-shrink:0;justify-content:center;align-items:center;display:flex}.sidebar-username{font-size:var(--text-xs);font-weight:var(--weight-medium);color:var(--color-text-muted);text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.main-content{padding:var(--space-8) var(--space-10);overflow-y:auto}.auth-layout{min-height:100dvh;padding:var(--space-4);background:radial-gradient(ellipse at top, #1a1a2e 0%, var(--color-bg) 60%);justify-content:center;align-items:center;display:flex}.auth-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-xl);width:100%;max-width:400px;padding:var(--space-8);box-shadow:var(--shadow-lg), var(--shadow-glow)}.page-header{margin-bottom:var(--space-8);justify-content:space-between;align-items:center;display:flex}.page-title{font-size:var(--text-2xl);font-weight:var(--weight-bold);letter-spacing:-.02em}.page-subtitle{font-size:var(--text-sm);color:var(--color-text-muted);margin-top:var(--space-1)}.empty-state{padding:var(--space-16) var(--space-8);text-align:center;color:var(--color-text-muted);justify-content:center;align-items:center;gap:var(--space-4);flex-direction:column;display:flex}.empty-icon{opacity:.3;font-size:3rem}.grid-2col{gap:var(--space-4);grid-template-columns:1fr 1fr;display:grid}.form-actions{gap:var(--space-3);padding-top:var(--space-2);border-top:1px solid var(--color-border);justify-content:flex-end;display:flex}.form-group-narrow{max-width:280px}.break-all{word-break:break-all}.min-w-0{min-width:0}.progress-bar{background:var(--color-border);height:6px;margin-bottom:var(--space-6);border-radius:3px;overflow:hidden}.progress-fill{background:var(--color-success);border-radius:3px;height:100%;transition:width .3s}.overlay{z-index:999;background:#0006;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.qr-image{border-radius:var(--radius-md);padding:var(--space-2);background:#fff}.mobile-menu-btn{top:var(--space-3);left:var(--space-3);z-index:1001;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);width:40px;height:40px;color:var(--color-text);font-size:var(--text-lg);cursor:pointer;justify-content:center;align-items:center;display:none;position:fixed}.sidebar-overlay{display:none}@media (width<=768px){.mobile-menu-btn{display:flex}.app-shell{grid-template-columns:1fr}.sidebar{width:var(--sidebar-width);z-index:1000;height:100dvh;transition:transform var(--duration-base) var(--ease);position:fixed;top:0;left:0;transform:translate(-100%)}.sidebar.sidebar-open{transform:translate(0)}.sidebar-overlay{z-index:999;background:#0006;display:block;position:fixed;inset:0}.main-content{padding:var(--space-16) var(--space-4) var(--space-4)}.page-header{align-items:flex-start;gap:var(--space-3);flex-direction:column}.grid-2col{grid-template-columns:1fr}.flex.gap-4{flex-direction:column}.auth-card{padding:var(--space-6)}.form-group-narrow{max-width:none}.btn{min-height:44px;padding:var(--space-3) var(--space-4)}.btn-sm{min-height:36px;padding:var(--space-2) var(--space-3)}}.modal-overlay{z-index:100;padding:var(--space-4);background:#000000b3;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--color-surface);border:1px solid var(--color-border);border-radius:16px;width:100%;max-width:400px;overflow:hidden}.modal-header{padding:var(--space-5) var(--space-5) var(--space-3)}.modal-title{color:var(--color-text-primary);font-size:17px;font-weight:600}.modal-body{padding:var(--space-3) var(--space-5)}.modal-footer{padding:var(--space-3) var(--space-5) var(--space-5)}
