@import url(https://fonts.googleapis.com/css2?family=DM+Sans:wght@300;400;500;600&family=DM+Mono:wght@400;500&display=swap);body{-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}*,:after,:before{box-sizing:border-box;margin:0;padding:0}:root{--bg:#f8f9fc;--surface:#fff;--surface-hover:#f1f3f9;--border:#e4e7ef;--border-strong:#c9cfe0;--text-primary:#1a1d2e;--text-secondary:#6b7280;--text-muted:#9ca3af;--accent:#2563eb;--accent-hover:#1d4ed8;--accent-light:#eff6ff;--success:#16a34a;--success-light:#f0fdf4;--danger:#dc2626;--danger-light:#fef2f2;--danger-hover:#b91c1c;--shadow-sm:0 1px 3px #0000000f,0 1px 2px #0000000a;--shadow-md:0 4px 12px #00000014,0 2px 4px #0000000a;--shadow-lg:0 10px 30px #0000001a,0 4px 8px #0000000f;--radius:10px;--radius-sm:6px;--radius-lg:16px}body{-webkit-font-smoothing:antialiased;background-color:#f8f9fc;background-color:var(--bg);color:#1a1d2e;color:var(--text-primary);font-family:DM Sans,sans-serif;line-height:1.5;min-height:100vh}.navbar{background:#fff;background:var(--surface);border-bottom:1px solid #e4e7ef;border-bottom:1px solid var(--border);box-shadow:0 1px 3px #0000000f,0 1px 2px #0000000a;box-shadow:var(--shadow-sm);height:60px;justify-content:space-between;padding:0 32px;position:-webkit-sticky;position:sticky;top:0;z-index:100}.navbar,.navbar-brand{align-items:center;display:flex}.navbar-brand{color:#1a1d2e;color:var(--text-primary);font-size:17px;font-weight:600;gap:10px;letter-spacing:-.3px}.navbar-brand .brand-icon{align-items:center;background:#2563eb;background:var(--accent);border-radius:8px;color:#fff;display:flex;font-size:16px;height:32px;justify-content:center;width:32px}.navbar-right{align-items:center;display:flex;gap:16px}.navbar-user{color:#6b7280;color:var(--text-secondary);font-size:13px;font-weight:500}.navbar-user span{color:#1a1d2e;color:var(--text-primary);font-weight:600}.btn{align-items:center;border:none;border-radius:6px;border-radius:var(--radius-sm);cursor:pointer;display:inline-flex;font-family:DM Sans,sans-serif;font-size:14px;font-weight:500;gap:6px;justify-content:center;line-height:1;padding:8px 16px;transition:all .15s ease;white-space:nowrap}.btn:disabled{cursor:not-allowed;opacity:.5}.btn-primary{background:#2563eb;background:var(--accent);color:#fff}.btn-primary:hover:not(:disabled){background:#1d4ed8;background:var(--accent-hover);box-shadow:0 4px 12px #2563eb4d;transform:translateY(-1px)}.btn-secondary{background:#fff;background:var(--surface);border:1px solid #c9cfe0;border:1px solid var(--border-strong);color:#1a1d2e;color:var(--text-primary)}.btn-secondary:hover:not(:disabled){background:#f1f3f9;background:var(--surface-hover)}.btn-ghost{background:#0000;color:#2563eb;color:var(--accent);padding:8px 12px}.btn-ghost:hover:not(:disabled){background:#eff6ff;background:var(--accent-light)}.btn-danger{background:#fef2f2;background:var(--danger-light);border:1px solid #fecaca;color:#dc2626;color:var(--danger)}.btn-danger:hover:not(:disabled){background:#dc2626;background:var(--danger);border-color:#dc2626;border-color:var(--danger);color:#fff}.btn-success{background:#f0fdf4;background:var(--success-light);border:1px solid #bbf7d0;color:#16a34a;color:var(--success)}.btn-success:hover:not(:disabled){background:#16a34a;background:var(--success);border-color:#16a34a;border-color:var(--success);color:#fff}.btn-sm{font-size:13px;padding:5px 10px}.btn-logout{background:#fff;background:var(--surface);border:1px solid #e4e7ef;border:1px solid var(--border);color:#6b7280;color:var(--text-secondary);font-size:13px;padding:6px 14px}.btn-logout:hover{background:#fef2f2;background:var(--danger-light);border-color:#fecaca;color:#dc2626;color:var(--danger)}.main-content{margin:0 auto;max-width:860px;padding:32px 24px}.card{background:#fff;background:var(--surface);border:1px solid #e4e7ef;border:1px solid var(--border);border-radius:10px;border-radius:var(--radius);box-shadow:0 1px 3px #0000000f,0 1px 2px #0000000a;box-shadow:var(--shadow-sm);overflow:hidden}.card-header{border-bottom:1px solid #e4e7ef;border-bottom:1px solid var(--border);justify-content:space-between;padding:18px 24px}.card-header,.card-title{align-items:center;display:flex}.card-title{color:#1a1d2e;color:var(--text-primary);font-size:15px;font-weight:600;gap:8px}.card-title .icon{font-size:16px}.card-body{padding:20px 24px}.upload-card{margin-bottom:20px}.upload-zone{background:#f8f9fc;background:var(--bg);border:2px dashed #c9cfe0;border:2px dashed var(--border-strong);border-radius:6px;border-radius:var(--radius-sm);padding:24px;text-align:center;transition:all .2s ease}.upload-zone:hover{background:#eff6ff;background:var(--accent-light);border-color:#2563eb;border-color:var(--accent)}.upload-controls{align-items:center;display:flex;flex-wrap:wrap;gap:12px}.file-input-wrapper{position:relative}.file-input-wrapper input[type=file]{cursor:pointer;height:100%;left:0;opacity:0;position:absolute;top:0;width:100%}.file-input-label{align-items:center;background:#fff;background:var(--surface);border:1px solid #c9cfe0;border:1px solid var(--border-strong);border-radius:6px;border-radius:var(--radius-sm);color:#1a1d2e;color:var(--text-primary);cursor:pointer;display:inline-flex;font-size:14px;font-weight:500;gap:6px;padding:8px 16px;transition:all .15s ease}.file-input-label:hover{background:#f1f3f9;background:var(--surface-hover)}.upload-hint{color:#9ca3af;color:var(--text-muted);font-size:12px;margin-top:10px}.file-selected-info{background:#f0fdf4;background:var(--success-light);border:1px solid #bbf7d0;border-radius:6px;border-radius:var(--radius-sm);color:#16a34a;color:var(--success)}.file-error-info,.file-selected-info{align-items:center;display:flex;font-size:13px;font-weight:500;gap:8px;margin-top:12px;padding:8px 12px}.file-error-info{background:#fef2f2;background:var(--danger-light);border:1px solid #fecaca;border-radius:6px;border-radius:var(--radius-sm);color:#dc2626;color:var(--danger)}.file-count{background:#f8f9fc;background:var(--bg);border:1px solid #e4e7ef;border:1px solid var(--border);border-radius:20px;font-size:12px;font-weight:500;padding:3px 8px}.file-count,.files-empty{color:#9ca3af;color:var(--text-muted)}.files-empty{padding:48px 24px;text-align:center}.files-empty .empty-icon{font-size:40px;margin-bottom:12px;opacity:.5}.files-empty p{font-size:14px}.file-list{list-style:none}.file-item{align-items:center;border-bottom:1px solid #e4e7ef;border-bottom:1px solid var(--border);display:flex;gap:12px;justify-content:space-between;padding:12px 24px;transition:background .1s ease}.file-item:last-child{border-bottom:none}.file-item:hover{background:#f1f3f9;background:var(--surface-hover)}.file-info{gap:12px;min-width:0}.file-icon,.file-info{align-items:center;display:flex}.file-icon{background:#eff6ff;background:var(--accent-light);border-radius:6px;border-radius:var(--radius-sm);color:#2563eb;color:var(--accent);flex-shrink:0;font-size:16px;height:36px;justify-content:center;width:36px}.file-details{min-width:0}.file-name{color:#1a1d2e;color:var(--text-primary);font-size:14px;font-weight:500;max-width:400px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-meta{color:#9ca3af;color:var(--text-muted);font-family:DM Mono,monospace;font-size:12px;margin-top:2px}.file-actions{display:flex;flex-shrink:0;gap:8px}.login-page{align-items:center;background:#f8f9fc;background:var(--bg);display:flex;justify-content:center;min-height:100vh;padding:24px}.login-card{animation:fadeUp .3s ease;background:#fff;background:var(--surface);border:1px solid #e4e7ef;border:1px solid var(--border);border-radius:16px;border-radius:var(--radius-lg);box-shadow:0 10px 30px #0000001a,0 4px 8px #0000000f;box-shadow:var(--shadow-lg);max-width:420px;padding:40px;width:100%}@keyframes fadeUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.login-header{margin-bottom:32px;text-align:center}.login-logo{align-items:center;background:#2563eb;background:var(--accent);border-radius:14px;box-shadow:0 4px 14px #2563eb4d;color:#fff;display:flex;font-size:24px;height:52px;justify-content:center;margin:0 auto 16px;width:52px}.login-title{color:#1a1d2e;color:var(--text-primary);font-size:22px;font-weight:700;letter-spacing:-.4px;margin-bottom:4px}.login-subtitle{color:#6b7280;color:var(--text-secondary);font-size:14px}.form-group{margin-bottom:18px}.form-label{display:block;font-size:13px;font-weight:600;letter-spacing:.1px;margin-bottom:6px}.form-input,.form-label{color:#1a1d2e;color:var(--text-primary)}.form-input{background:#fff;background:var(--surface);border:1.5px solid #c9cfe0;border:1.5px solid var(--border-strong);border-radius:6px;border-radius:var(--radius-sm);font-family:DM Sans,sans-serif;font-size:14px;outline:none;padding:10px 14px;transition:all .15s ease;width:100%}.form-input:focus{border-color:#2563eb;border-color:var(--accent);box-shadow:0 0 0 3px #2563eb1a}.form-input.error{border-color:#dc2626;border-color:var(--danger);box-shadow:0 0 0 3px #dc26261a}.form-input:disabled{background:#f8f9fc;background:var(--bg);opacity:.7}.form-hint{font-size:12px;margin-top:5px}.form-hint.success{color:#16a34a;color:var(--success)}.form-hint.error{color:#dc2626;color:var(--danger)}.btn-full{font-size:15px;margin-top:4px;padding:11px;width:100%}.login-toggle{color:#6b7280;color:var(--text-secondary);font-size:13px;margin-top:20px;text-align:center}.login-toggle button{background:none;border:none;color:#2563eb;color:var(--accent);cursor:pointer;font-family:DM Sans,sans-serif;font-size:13px;font-weight:600;margin-left:4px;padding:0}.login-toggle button:hover{text-decoration:underline}.divider{background:#e4e7ef;background:var(--border);height:1px;margin:24px 0}.storage-bar-wrap{background:#f8f9fc;background:var(--bg);border-top:1px solid #e4e7ef;border-top:1px solid var(--border);padding:16px 24px}.storage-label{color:#9ca3af;color:var(--text-muted);font-size:12px;font-weight:500;margin-bottom:6px}.storage-bar{background:#e4e7ef;background:var(--border);border-radius:4px;height:4px;overflow:hidden}.storage-bar-fill{background:#2563eb;background:var(--accent);border-radius:4px;height:100%;transition:width .3s ease}
/*# sourceMappingURL=main.2d0d3e4a.css.map*/