:root{--background:#09090b;--foreground:#fafafa;--card:#0a0a0c;--card-foreground:#fafafa;--popover:#0a0a0c;--popover-foreground:#fafafa;--primary:#fafafa;--primary-foreground:#18181b;--secondary:#27272a;--secondary-foreground:#fafafa;--muted:#27272a;--muted-foreground:#a1a1aa;--accent:#27272a;--accent-foreground:#fafafa;--destructive:#ef4444;--destructive-foreground:#fafafa;--border:#27272a;--input:#27272a;--ring:#d4d4d8;--success:#22c55e;--warning:#eab308;--radius-sm:.375rem;--radius-md:.5rem;--radius-lg:.75rem;--radius-xl:1rem;--radius-pill:9999px;--sidebar-width:260px;--shadow-sm:0 1px 2px #0006;--shadow-md:0 4px 12px #0006;--shadow-lg:0 8px 24px #00000080;--transition-fast:.15s cubic-bezier(.4,0,.2,1);--transition:.2s cubic-bezier(.4,0,.2,1)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--background);height:100%;color:var(--foreground);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"cv02","cv03","cv04","cv11";font-family:Poppins,Kanit,-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;overflow-x:hidden}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#3f3f46}a{color:var(--foreground);transition:opacity var(--transition-fast);text-decoration:none}a:hover{opacity:.8}.btn{border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);white-space:nowrap;border:none;justify-content:center;align-items:center;gap:.5rem;padding:.5rem 1rem;font-family:inherit;font-size:.875rem;font-weight:500;line-height:1.25rem;display:inline-flex}.btn:focus-visible{outline:2px solid var(--ring);outline-offset:2px}.btn:disabled{opacity:.5;pointer-events:none}.btn-primary{background:var(--primary);color:var(--primary-foreground)}.btn-primary:hover{opacity:.9}.btn-secondary{background:var(--secondary);color:var(--secondary-foreground);border:1px solid var(--border)}.btn-secondary:hover{background:#3f3f46}.btn-destructive{background:var(--destructive);color:var(--destructive-foreground)}.btn-destructive:hover{opacity:.9}.btn-outline{color:var(--foreground);border:1px solid var(--border);background:0 0}.btn-outline:hover{background:var(--accent)}.btn-ghost{color:var(--muted-foreground);background:0 0}.btn-ghost:hover{background:var(--accent);color:var(--foreground)}.btn-sm{border-radius:var(--radius-sm);padding:.375rem .75rem;font-size:.8125rem}.btn-icon{justify-content:center;align-items:center;padding:.5rem;display:inline-flex}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1.5rem}.input-group{flex-direction:column;gap:.375rem;display:flex}.input-group label{color:var(--foreground);font-size:.875rem;font-weight:500}.input-wrapper{align-items:center;display:flex;position:relative}.input-wrapper .input{width:100%;padding-right:2.75rem}.input-wrapper .input-icon{color:var(--muted-foreground);cursor:pointer;border-radius:var(--radius-sm);transition:color var(--transition-fast);align-items:center;padding:.125rem;display:flex;position:absolute;right:.75rem}.input-wrapper .input-icon:hover{color:var(--foreground)}.input{border-radius:var(--radius-md);border:1px solid var(--border);background:var(--background);width:100%;height:2.5rem;color:var(--foreground);transition:border-color var(--transition-fast);outline:none;padding:0 .75rem;font-family:inherit;font-size:.875rem}.input::placeholder{color:var(--muted-foreground)}.input:focus{border-color:var(--ring);box-shadow:0 0 0 1px var(--ring)}.page-container{min-height:100vh;display:flex}.sidebar{width:var(--sidebar-width);background:var(--card);border-right:1px solid var(--border);z-index:200;height:100vh;transition:transform var(--transition);flex-direction:column;gap:.125rem;padding:1.5rem .75rem;display:flex;position:fixed;top:0;left:0}.sidebar-logo{align-items:center;gap:.625rem;margin-bottom:1.5rem;padding:.25rem .75rem;display:flex}.sidebar-logo .logo-icon{border-radius:var(--radius-md);background:var(--foreground);width:32px;height:32px;color:var(--background);flex-shrink:0;justify-content:center;align-items:center;display:flex}.sidebar-logo h1{letter-spacing:-.025em;font-size:1rem;font-weight:600}.nav-link{border-radius:var(--radius-md);color:var(--muted-foreground);transition:all var(--transition-fast);cursor:pointer;align-items:center;gap:.75rem;padding:.5rem .75rem;font-size:.875rem;text-decoration:none;display:flex}.nav-link:hover{background:var(--accent);color:var(--foreground);opacity:1}.nav-link.active{background:var(--accent);color:var(--foreground);font-weight:500}.nav-link .nav-icon{flex-shrink:0;justify-content:center;align-items:center;width:18px;display:flex}.sidebar-bottom{flex-direction:column;gap:.625rem;margin-top:auto;display:flex}.sidebar-quota{color:var(--muted-foreground);padding:.75rem;font-size:.8125rem}.sidebar-quota .quota-header{justify-content:space-between;align-items:center;margin-bottom:.5rem;display:flex}.sidebar-user{border-top:1px solid var(--border);align-items:center;gap:.625rem;padding:.75rem;display:flex}.sidebar-user .user-avatar{background:var(--secondary);border:1px solid var(--border);width:32px;height:32px;color:var(--foreground);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:.75rem;font-weight:600;display:flex}.sidebar-user .user-info{flex:1;min-width:0}.sidebar-user .user-name{white-space:nowrap;text-overflow:ellipsis;font-size:.8125rem;font-weight:500;overflow:hidden}.sidebar-user .user-role{margin-top:.125rem}.main-content{margin-left:var(--sidebar-width);flex:1;min-height:100vh;padding:2rem}.page-header{justify-content:space-between;align-items:center;margin-bottom:1.5rem;display:flex}.page-header h2{letter-spacing:-.025em;align-items:center;gap:.625rem;font-size:1.5rem;font-weight:600;display:flex}.page-header h2 .header-icon{color:var(--muted-foreground);align-items:center;display:flex}.mobile-topbar{background:var(--card);border-bottom:1px solid var(--border);z-index:300;justify-content:space-between;align-items:center;height:48px;padding:0 1rem;display:none;position:fixed;top:0;left:0;right:0}.mobile-topbar .logo-text{letter-spacing:-.025em;font-size:.9375rem;font-weight:600}.hamburger-btn{color:var(--foreground);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;justify-content:center;align-items:center;padding:.375rem;display:flex}.hamburger-btn:hover{background:var(--accent)}.sidebar-overlay{z-index:199;background:#00000080;display:none;position:fixed;inset:0}.sidebar-overlay.active{display:block}.auth-container{background:var(--background);justify-content:center;align-items:center;min-height:100vh;padding:1rem;display:flex}.auth-card{width:100%;max-width:360px;animation:.3s fadeIn}.auth-logo-section{text-align:center;margin-bottom:1.5rem}.auth-logo-section .logo-shield{border-radius:var(--radius-lg);background:var(--foreground);width:40px;height:40px;color:var(--background);justify-content:center;align-items:center;margin-bottom:1rem;display:inline-flex}.auth-card h1{letter-spacing:-.025em;text-align:center;margin-bottom:.25rem;font-size:1.5rem;font-weight:600}.auth-card .subtitle{text-align:center;color:var(--muted-foreground);font-size:.875rem}.auth-form{flex-direction:column;gap:1rem;display:flex}.auth-form .btn-primary{width:100%;height:2.5rem;margin-top:.25rem;font-size:.875rem}.auth-footer{text-align:center;color:var(--muted-foreground);margin-top:1.5rem;font-size:.875rem}.auth-footer a{text-underline-offset:4px;text-decoration:underline}.auth-footer a:hover{color:var(--foreground);opacity:1}.error-msg{color:var(--destructive);border-radius:var(--radius-md);background:#ef44441a;border:1px solid #ef444433;align-items:center;gap:.5rem;padding:.5rem .75rem;font-size:.8125rem;display:flex}.password-strength{gap:3px;margin-top:.375rem;display:flex}.password-strength .bar{background:var(--border);height:2px;transition:background var(--transition);border-radius:1px;flex:1}.password-strength .bar.weak{background:var(--destructive)}.password-strength .bar.medium{background:var(--warning)}.password-strength .bar.strong{background:var(--success)}.auth-bg-orbs{display:none}.file-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:1rem;display:grid}.file-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);transition:border-color var(--transition-fast);cursor:pointer;overflow:hidden}.file-card:hover{border-color:#3f3f46}.file-card .thumb{aspect-ratio:1;background:var(--secondary);width:100%;color:var(--muted-foreground);justify-content:center;align-items:center;display:flex;overflow:hidden}.file-card .thumb img{object-fit:cover;width:100%;height:100%}.file-card .thumb .file-type-icon{opacity:.4}.file-card .info{padding:.75rem}.file-card .info .name{white-space:nowrap;text-overflow:ellipsis;font-size:.8125rem;font-weight:500;overflow:hidden}.file-card .info .meta{color:var(--muted-foreground);margin-top:.25rem;font-size:.75rem}.file-card .info .actions{gap:.375rem;margin-top:.5rem;display:flex}.upload-zone{border:1px dashed var(--border);border-radius:var(--radius-xl);text-align:center;cursor:pointer;transition:all var(--transition-fast);padding:3rem 2rem}.upload-zone:hover,.upload-zone.dragover{border-color:var(--muted-foreground);background:var(--secondary)}.upload-zone .upload-icon{color:var(--muted-foreground);justify-content:center;margin-bottom:.75rem;display:flex}.upload-zone h3{margin-bottom:.375rem;font-size:.9375rem;font-weight:500}.upload-zone p{color:var(--muted-foreground);font-size:.8125rem}.upload-list{flex-direction:column;gap:.5rem;margin-top:1.25rem;display:flex}.upload-item{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-md);align-items:center;gap:.75rem;padding:.75rem;display:flex}.upload-item .file-icon{border-radius:var(--radius-sm);flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;display:flex}.upload-item .file-icon.complete{color:var(--success);background:#22c55e1a}.upload-item .file-icon.error{color:var(--destructive);background:#ef44441a}.upload-item .file-icon.uploading,.upload-item .file-icon.pending{background:var(--secondary);color:var(--muted-foreground)}.upload-item .file-info{flex:1;min-width:0}.upload-item .file-info .name{white-space:nowrap;text-overflow:ellipsis;font-size:.8125rem;font-weight:500;overflow:hidden}.upload-item .progress-bar{background:var(--border);border-radius:1px;height:2px;margin-top:.5rem;overflow:hidden}.upload-item .progress-bar .fill{background:var(--foreground);border-radius:1px;height:100%;transition:width .3s}.upload-item .file-size{color:var(--muted-foreground);white-space:nowrap;font-size:.75rem}.upload-item .status{border-radius:var(--radius-pill);white-space:nowrap;padding:.125rem .5rem;font-size:.75rem;font-weight:500}.upload-item .status.complete{color:var(--success);background:#22c55e1a}.upload-item .status.error{color:var(--destructive);background:#ef44441a}.upload-item .status.uploading{color:var(--foreground);background:var(--secondary)}.upload-item .status.pending{color:var(--muted-foreground);background:var(--secondary)}.upload-item .error-detail{color:var(--destructive);margin-top:.25rem;font-size:.75rem}.table-container{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}.data-table{border-collapse:collapse;width:100%}.data-table th,.data-table td{text-align:left;border-bottom:1px solid var(--border);padding:.75rem 1rem}.data-table th{color:var(--muted-foreground);background:var(--card);font-size:.75rem;font-weight:500}.data-table td{font-size:.8125rem}.data-table tbody tr:hover td{background:var(--secondary)}.data-table tbody tr:last-child td{border-bottom:none}.badge{border-radius:var(--radius-pill);border:1px solid #0000;align-items:center;padding:.125rem .5rem;font-size:.6875rem;font-weight:500;display:inline-flex}.badge.admin{background:var(--secondary);color:var(--foreground);border-color:var(--border)}.badge.user,.badge.active{color:var(--success);background:#22c55e1a}.badge.trashed{color:var(--warning);background:#eab3081a}.empty-state{text-align:center;color:var(--muted-foreground);padding:4rem 2rem}.empty-state .empty-icon{opacity:.3;justify-content:center;margin-bottom:1rem;display:flex}.empty-state h3{color:var(--foreground);margin-bottom:.375rem;font-size:1rem;font-weight:500}.quota-bar{background:var(--secondary);border-radius:var(--radius-pill);height:4px;overflow:hidden}.quota-bar .fill{background:var(--foreground);border-radius:var(--radius-pill);height:100%;transition:width .4s}.filters{flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:1.25rem;display:flex}.filters .input{flex:1;min-width:200px;max-width:320px}.filter-pills{gap:.25rem;display:flex}.filter-pill{border-radius:var(--radius-md);cursor:pointer;border:1px solid var(--border);color:var(--muted-foreground);transition:all var(--transition-fast);background:0 0;padding:.375rem .875rem;font-family:inherit;font-size:.8125rem;font-weight:500}.filter-pill:hover{background:var(--secondary);color:var(--foreground)}.filter-pill.active{background:var(--foreground);color:var(--background);border-color:var(--foreground)}.pagination{justify-content:center;align-items:center;gap:.5rem;margin-top:1.5rem;display:flex}.pagination .page-info{color:var(--muted-foreground);padding:0 .5rem;font-size:.8125rem}.spinner{border:2px solid var(--border);border-top-color:var(--foreground);border-radius:50%;width:20px;height:20px;animation:.6s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.loading-overlay{justify-content:center;align-items:center;min-height:200px;display:flex}.skeleton{background:var(--secondary);border-radius:var(--radius-md);animation:2s ease-in-out infinite shimmer}@keyframes shimmer{0%,to{opacity:1}50%{opacity:.5}}.modal-overlay{z-index:1000;background:#0009;justify-content:center;align-items:center;padding:1rem;animation:.15s fadeIn;display:flex;position:fixed;inset:0}.modal-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);width:100%;max-width:400px;box-shadow:var(--shadow-lg);padding:1.5rem}.modal-card h3{margin-bottom:.375rem;font-size:1rem;font-weight:600}.modal-card p{color:var(--muted-foreground);margin-bottom:1.25rem;font-size:.875rem}.modal-actions{justify-content:flex-end;gap:.5rem;display:flex}.stats-bar{color:var(--muted-foreground);align-items:center;gap:1rem;font-size:.8125rem;display:flex}.stats-bar .stat-item{align-items:center;gap:.375rem;display:flex}.stats-bar .stat-dot{border-radius:50%;width:6px;height:6px}.stats-bar .stat-dot.complete{background:var(--success)}.stats-bar .stat-dot.uploading{background:var(--foreground)}.stats-bar .stat-dot.error{background:var(--destructive)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@media (max-width:768px){.mobile-topbar{display:flex}.sidebar{width:280px;transform:translate(-100%)}.sidebar.open{transform:translate(0)}.main-content{margin-left:0;padding:calc(48px + 1rem) 1rem 1rem}.page-header{flex-direction:column;align-items:flex-start;gap:.5rem}.file-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.75rem}.filters{flex-direction:column;align-items:stretch}.filters .input{min-width:unset;max-width:unset}.upload-zone{padding:2rem 1.25rem}.data-table th,.data-table td{padding:.625rem .75rem;font-size:.8125rem}}@media (max-width:480px){.file-grid{grid-template-columns:repeat(2,1fr)}}
