.login-card{width:100%;max-width:400px;padding:2rem}.login-title{margin:0 0 .25rem;font-size:1.5rem;font-weight:600}.login-sub{margin:0 0 1.5rem;font-size:.9rem}.login-form{display:flex;flex-direction:column;gap:1rem}.field{display:flex;flex-direction:column;gap:.35rem}.field span{font-size:.85rem;color:var(--muted)}.field input{padding:.65rem .75rem;border-radius:var(--radius);border:1px solid var(--border);background:var(--bg);color:var(--text)}.field input:focus{outline:none;border-color:var(--accent)}.error-msg{margin:0;font-size:.9rem;color:var(--danger)}.layout{padding:1.5rem}.layout--center{min-height:100vh;display:flex;align-items:center;justify-content:center}.layout--wide{max-width:960px;margin:0 auto}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem 1.5rem}.muted{color:var(--muted)}.small{font-size:.85rem}.topbar{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:1.25rem}.topbar-title{margin:0;font-size:1.35rem}.topbar-path{margin:.15rem 0 0;font-size:.85rem}.btn{border:none;border-radius:var(--radius);padding:.55rem 1rem;font-size:.95rem;font-weight:500}.btn--primary{background:var(--accent);color:#fff}.btn--primary:hover:not(:disabled){background:var(--accent-hover)}.btn--ghost{background:transparent;color:var(--muted);border:1px solid var(--border)}.btn--ghost:hover{color:var(--text)}.btn--danger{background:transparent;color:var(--danger);border:1px solid var(--danger)}.btn--danger:hover:not(:disabled){background:#e85d6c1f;color:var(--danger-hover)}.btn--small{padding:.35rem .65rem;font-size:.8rem}.btn:disabled{opacity:.55;cursor:not-allowed}.banner{margin:0 0 1rem;padding:.65rem 1rem;border-radius:var(--radius);background:#3d8bfd26;border:1px solid var(--border);font-size:.9rem}.banner--err{background:#e85d6c1f;border-color:var(--danger);color:var(--danger)}.upload-card{margin-bottom:1.25rem}.section-title{margin:0 0 .5rem;font-size:1.1rem}.section-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:.75rem}.section-head .section-title{margin:0}.upload-zone{display:flex;align-items:center;justify-content:center;margin-top:1rem;padding:2rem 1rem;border:2px dashed var(--border);border-radius:var(--radius);cursor:pointer;color:var(--muted);position:relative}.upload-zone:hover{border-color:var(--accent);color:var(--text)}.upload-zone input{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;cursor:pointer}.upload-zone--busy{pointer-events:none;opacity:.7}.upload-progress{margin-top:1rem;padding:1rem;border:1px solid var(--border);border-radius:var(--radius);background:#3d8bfd0f}.upload-progress__head{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:.65rem}.upload-progress__name{font-size:.9rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.upload-progress__bar{height:8px;border-radius:999px;background:var(--border);overflow:hidden}.upload-progress__fill{height:100%;border-radius:999px;background:var(--accent);transition:width .15s ease}.upload-progress__stats{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin:.5rem 0 0}.upload-progress__speed{white-space:nowrap;color:var(--text);font-variant-numeric:tabular-nums}.upload-error{margin-top:.75rem;margin-bottom:0}.table-wrap{overflow-x:auto}.file-table{width:100%;border-collapse:collapse;font-size:.9rem}.file-table th,.file-table td{text-align:left;padding:.6rem .5rem;border-bottom:1px solid var(--border)}.file-table th{color:var(--muted);font-weight:500}.name-cell a{word-break:break-all}.actions{text-align:right;white-space:nowrap}.error-msg{color:var(--danger);margin:0 0 .75rem;font-size:.9rem}:root{--bg: #0f1419;--surface: #1a2332;--border: #2d3a4f;--text: #e7ecf3;--muted: #8b9cb3;--accent: #3d8bfd;--accent-hover: #5ba3ff;--danger: #e85d6c;--danger-hover: #ff7a88;--radius: 10px;--font: "Segoe UI", system-ui, -apple-system, sans-serif}*,*:before,*:after{box-sizing:border-box}body{margin:0;min-height:100vh;font-family:var(--font);background:var(--bg);color:var(--text);line-height:1.5}#root{min-height:100vh}a{color:var(--accent)}button{font-family:inherit;cursor:pointer}input[type=password],input[type=text]{font-family:inherit}
