*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#0f1117;--surface:#1a1d27;--border:#2a2d3a;--text:#e1e4ed;--muted:#7a7f94;--primary:#6366f1;--primary-hover:#5457e5;--success:#22c55e;--error:#ef4444;--radius:8px}body{background:var(--bg);color:var(--text);min-height:100vh;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;line-height:1.5}.app{max-width:900px;margin:0 auto;padding:24px 16px 80px}.header{justify-content:space-between;align-items:center;margin-bottom:24px;display:flex}.header h1{font-size:1.5rem;font-weight:700}.badge{background:var(--surface);border:1px solid var(--border);border-radius:20px;padding:4px 10px;font-size:.8rem}.section{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:16px;padding:20px}.section-header{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.section h2{font-size:1.1rem;font-weight:600}.login-form{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:16px;padding:20px}.login-form label{color:var(--muted);margin-bottom:8px;font-size:.85rem;display:block}.login-row{gap:8px;display:flex}.login-row input{border-radius:var(--radius);border:1px solid var(--border);background:var(--bg);color:var(--text);outline:none;flex:1;padding:10px 14px;font-size:.9rem}.login-row input:focus{border-color:var(--primary)}.btn-primary{border-radius:var(--radius);background:var(--primary);color:#fff;cursor:pointer;white-space:nowrap;border:none;padding:10px 20px;font-weight:600}.btn-primary:hover{background:var(--primary-hover)}.btn-secondary{border-radius:var(--radius);border:1px solid var(--border);background:var(--bg);color:var(--text);cursor:pointer;padding:6px 12px;font-size:.85rem;text-decoration:none}.btn-secondary:hover{border-color:var(--muted)}.btn-sm{padding:4px 10px;font-size:.8rem}.btn-danger{border-radius:var(--radius);color:#fca5a5;cursor:pointer;background:#ef44441f;border:1px solid #7f1d1d;padding:6px 12px;font-size:.85rem}.btn-danger:hover{border-color:var(--error);background:#ef444440}.btn-danger:disabled{opacity:.4;cursor:not-allowed}.table-wrap{overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:.85rem}th,td{text-align:left;border-bottom:1px solid var(--border);padding:8px 12px}tr.row-selected{background:#6366f114}th{color:var(--muted);text-transform:uppercase;letter-spacing:.5px;font-size:.8rem;font-weight:500}.hash{color:var(--muted);font-family:SF Mono,Fira Code,monospace;font-size:.8rem}.dropzone{border:2px dashed var(--border);border-radius:var(--radius);text-align:center;cursor:pointer;padding:40px 20px;transition:all .2s}.dropzone:hover{border-color:var(--primary)}.dropzone.dragging{border-color:var(--primary);background:#6366f114}.muted{color:var(--muted)}.error{color:var(--error)}.success{color:var(--success)}.upload-items{margin-top:16px}.upload-item{margin-bottom:12px}.upload-item-info{justify-content:space-between;align-items:center;margin-bottom:4px;display:flex}.upload-item-name{text-overflow:ellipsis;white-space:nowrap;max-width:70%;font-size:.85rem;font-weight:500;overflow:hidden}.upload-item-size{color:var(--muted);flex-shrink:0;font-size:.75rem}.progress-bar-wrap{background:var(--bg);border-radius:3px;width:100%;height:6px;margin-bottom:2px;overflow:hidden}.progress-bar{background:var(--primary);border-radius:3px;height:100%;transition:width .3s}.progress-bar.done{background:var(--success)}.progress-bar.error{background:var(--error)}.upload-item-status{font-size:.8rem}.pagination{justify-content:center;align-items:center;gap:12px;margin-top:16px;display:flex}.pagination button:disabled{opacity:.4;cursor:not-allowed}.page-info{color:var(--muted);font-size:.85rem}.extract-progress{align-items:center;gap:8px;margin-top:6px;display:flex}.extract-label{color:var(--muted);font-size:.8rem}.extract-label.success{color:var(--success)}.extract-label.error{color:var(--error)}.extract-dots{gap:3px;display:inline-flex}.extract-dots .dot{background:var(--primary);border-radius:50%;width:4px;height:4px;animation:1.4s infinite pulse}.extract-dots .dot:nth-child(2){animation-delay:.2s}.extract-dots .dot:nth-child(3){animation-delay:.4s}@keyframes pulse{0%,60%,to{opacity:.3}30%{opacity:1}}.magnet-box{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);margin-top:12px;padding:12px;font-size:.8rem}.magnet-row{align-items:center;gap:8px;margin-bottom:8px;display:flex}.magnet-row:last-child{margin-bottom:0}.magnet-label{color:var(--muted);min-width:80px;font-weight:500}.magnet-hash{color:var(--text);word-break:break-all;flex:1;font-family:SF Mono,Fira Code,monospace;font-size:.75rem}.magnet-input{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);outline:none;flex:1;padding:6px 10px;font-family:SF Mono,Fira Code,monospace;font-size:.7rem}.magnet-input:focus{border-color:var(--primary)}.tracker-log{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);max-height:240px;font-family:SF Mono,Fira Code,monospace;font-size:.75rem;overflow-y:auto}.tracker-event{border-bottom:1px solid var(--border);grid-template-columns:80px 1fr 140px 60px;align-items:center;gap:8px;padding:4px 10px;display:grid}.tracker-event:last-child{border-bottom:none}.tracker-time{color:var(--muted);font-size:.7rem}.tracker-info{color:var(--text);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.tracker-info code{color:var(--primary);background:#6366f11a;border-radius:3px;padding:1px 4px}.tracker-ip{color:var(--muted);text-align:right}.tracker-count{color:var(--success);text-align:right;font-weight:600}.breadcrumb{background:var(--bg);border-radius:var(--radius);border:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:16px;padding:8px 12px;font-size:.85rem;display:flex}.breadcrumb-item{color:var(--primary);cursor:pointer;font-weight:500;text-decoration:none}.breadcrumb-item:hover{color:var(--primary-hover);text-decoration:underline}.breadcrumb-separator{color:var(--muted)}.breadcrumb-current{color:var(--text);font-weight:500}.folder-link{color:var(--primary);cursor:pointer;align-items:center;gap:4px;font-weight:600;display:inline-flex}.folder-link:hover{color:var(--primary-hover);text-decoration:underline}
