/* TorrentHub — style.css */
:root {
  --bg:      #0d0f12;
  --bg2:     #13161b;
  --bg3:     #1a1e26;
  --bg4:     #1f2430;
  --border:  #2a2f3e;
  --border2: #3a4155;
  --text:    #e2e8f0;
  --text2:   #94a3b8;
  --text3:   #64748b;
  --accent:  #f97316;
  --accent2: #ea580c;
  --green:   #22c55e;
  --red:     #ef4444;
  --blue:    #3b82f6;
  --yellow:  #eab308;
  --purple:  #a855f7;
  --mono:    'JetBrains Mono', monospace;
  --sans:    'Inter', sans-serif;
}
*, *::before, *::after { margin:0; padding:0; box-sizing:border-box; }
html { scroll-behavior:smooth; }
body { background:var(--bg); color:var(--text); font-family:var(--sans); font-size:14px; min-height:100vh; line-height:1.5; }
a { color:inherit; text-decoration:none; }
a:hover { color:var(--accent); }
img { max-width:100%; }

/* ── HEADER ─────────────────────────────────── */
#header {
  background:var(--bg2);
  border-bottom:1px solid var(--border);
  padding:0 1.5rem;
  display:flex;
  align-items:center;
  gap:1.5rem;
  height:56px;
  position:sticky;
  top:0;
  z-index:100;
}
.logo { font-family:var(--mono); font-size:20px; font-weight:700; color:var(--accent); letter-spacing:-1px; white-space:nowrap; }
.logo span { color:var(--text); }
nav { flex:1; overflow:hidden; }
.nav-links { display:flex; gap:2px; list-style:none; flex-wrap:nowrap; overflow-x:auto; scrollbar-width:none; }
.nav-links::-webkit-scrollbar { display:none; }
.nav-links a { padding:6px 10px; border-radius:6px; color:var(--text2); font-size:13px; font-weight:500; white-space:nowrap; transition:all .15s; display:block; }
.nav-links a:hover, .nav-links a.active { background:var(--bg3); color:var(--text); }
.nav-links a.upload-link { color:var(--accent); }
.header-right { flex-shrink:0; }
.btn { display:inline-flex; align-items:center; gap:6px; padding:7px 14px; border-radius:6px; font-size:13px; font-weight:500; cursor:pointer; border:1px solid var(--border); background:transparent; color:var(--text2); transition:all .15s; font-family:var(--sans); text-decoration:none; }
.btn:hover { background:var(--bg3); color:var(--text); }
.btn-accent { background:var(--accent); border-color:var(--accent); color:#fff; }
.btn-accent:hover { background:var(--accent2); border-color:var(--accent2); color:#fff; }
.btn-danger { background:rgba(239,68,68,.1); border-color:rgba(239,68,68,.3); color:var(--red); }
.btn-danger:hover { background:var(--red); color:#fff; }
.btn-success { background:rgba(34,197,94,.1); border-color:rgba(34,197,94,.3); color:var(--green); }
.btn-success:hover { background:var(--green); color:#000; }
.btn-sm { padding:4px 10px; font-size:12px; }

/* ── HERO ─────────────────────────────────────── */
#hero { background:var(--bg2); border-bottom:1px solid var(--border); padding:2.5rem 1.5rem 2rem; text-align:center; }
.hero-title { font-size:2rem; font-weight:700; margin-bottom:.5rem; }
.hero-title span { color:var(--accent); }
.hero-sub { color:var(--text2); font-size:15px; margin-bottom:1.5rem; }
.search-wrap { max-width:720px; margin:0 auto; display:flex; background:var(--bg3); border:1px solid var(--border2); border-radius:10px; overflow:hidden; transition:border-color .2s; }
.search-wrap:focus-within { border-color:var(--accent); }
.search-cat { background:var(--bg4); border:none; border-right:1px solid var(--border); color:var(--text2); padding:0 12px; font-size:13px; cursor:pointer; font-family:var(--sans); outline:none; min-width:130px; }
.search-input { flex:1; background:transparent; border:none; color:var(--text); padding:0 16px; font-size:15px; font-family:var(--sans); outline:none; height:48px; min-width:0; }
.search-input::placeholder { color:var(--text3); }
.search-btn { padding:0 22px; background:var(--accent); border:none; color:#fff; font-weight:600; font-size:14px; cursor:pointer; font-family:var(--sans); transition:background .15s; white-space:nowrap; }
.search-btn:hover { background:var(--accent2); }
.stats-bar { display:flex; justify-content:center; gap:2rem; margin-top:1.25rem; font-size:13px; color:var(--text3); flex-wrap:wrap; }
.stats-bar strong { color:var(--accent); }
.cats-row { display:flex; gap:8px; justify-content:center; flex-wrap:wrap; margin-top:1.25rem; }
.cat-pill { padding:5px 14px; background:var(--bg3); border:1px solid var(--border); border-radius:20px; font-size:12px; color:var(--text2); cursor:pointer; transition:all .15s; display:inline-flex; align-items:center; gap:5px; text-decoration:none; }
.cat-pill:hover, .cat-pill.active { border-color:var(--accent); color:var(--accent); background:rgba(249,115,22,.08); }

/* ── LAYOUT ──────────────────────────────────── */
#main { max-width:1300px; margin:0 auto; padding:1.5rem; display:grid; grid-template-columns:210px 1fr; gap:1.5rem; }
@media(max-width:900px){ #main{grid-template-columns:1fr;} #sidebar{display:none;} }

/* ── SIDEBAR ─────────────────────────────────── */
.sidebar-section { background:var(--bg2); border:1px solid var(--border); border-radius:10px; padding:1rem; margin-bottom:1rem; }
.sidebar-title { font-size:11px; font-weight:600; text-transform:uppercase; letter-spacing:.08em; color:var(--text3); margin-bottom:.75rem; }
.sidebar-link { display:flex; align-items:center; gap:10px; padding:7px 8px; border-radius:6px; color:var(--text2); font-size:13px; cursor:pointer; transition:all .15s; margin-bottom:2px; text-decoration:none; }
.sidebar-link:hover { background:var(--bg3); color:var(--text); }
.sidebar-link.active { background:rgba(249,115,22,.1); color:var(--accent); }
.sidebar-link .ico { width:20px; text-align:center; }
.sidebar-link .count { margin-left:auto; font-size:11px; color:var(--text3); font-family:var(--mono); }

/* ── FILTER ROW ──────────────────────────────── */
.filter-row { display:flex; gap:8px; margin-bottom:1rem; flex-wrap:wrap; align-items:center; }
.filter-label { color:var(--text3); font-size:12px; }
.chip { padding:4px 12px; background:var(--bg3); border:1px solid var(--border); border-radius:20px; font-size:12px; color:var(--text2); cursor:pointer; transition:all .15s; text-decoration:none; display:inline-block; }
.chip:hover { border-color:var(--border2); color:var(--text); }
.chip.active { background:rgba(249,115,22,.1); border-color:var(--accent); color:var(--accent); }

/* ── TABLE ───────────────────────────────────── */
.table-wrap { background:var(--bg2); border:1px solid var(--border); border-radius:10px; overflow:hidden; }
.table-header { display:flex; align-items:center; justify-content:space-between; padding:12px 16px; border-bottom:1px solid var(--border); gap:1rem; flex-wrap:wrap; }
.results-count { color:var(--text3); font-size:13px; }
.results-count strong { color:var(--text); }
.sort-select { background:var(--bg3); border:1px solid var(--border); color:var(--text2); padding:5px 10px; border-radius:6px; font-size:12px; font-family:var(--sans); outline:none; cursor:pointer; }
.table-scroll { overflow-x:auto; }
table { width:100%; border-collapse:collapse; min-width:700px; }
thead th { background:var(--bg3); padding:9px 14px; text-align:left; font-size:11px; font-weight:600; text-transform:uppercase; letter-spacing:.06em; color:var(--text3); border-bottom:1px solid var(--border); white-space:nowrap; }
thead th a { color:inherit; }
thead th a:hover { color:var(--text2); }
tbody tr { border-bottom:1px solid var(--border); transition:background .1s; }
tbody tr:last-child { border-bottom:none; }
tbody tr:hover { background:rgba(255,255,255,.02); }
td { padding:10px 14px; font-size:13px; vertical-align:middle; }

/* Badges catégorie */
.cat-badge { display:inline-flex; align-items:center; gap:4px; padding:3px 8px; border-radius:4px; font-size:11px; font-weight:500; white-space:nowrap; }
.badge-film     { background:rgba(59,130,246,.15); color:#60a5fa; border:1px solid rgba(59,130,246,.2); }
.badge-serie    { background:rgba(168,85,247,.15); color:#c084fc; border:1px solid rgba(168,85,247,.2); }
.badge-jeu      { background:rgba(34,197,94,.15); color:#4ade80; border:1px solid rgba(34,197,94,.2); }
.badge-musique  { background:rgba(234,179,8,.15); color:#fde047; border:1px solid rgba(234,179,8,.2); }
.badge-livre    { background:rgba(249,115,22,.15); color:#fb923c; border:1px solid rgba(249,115,22,.2); }
.badge-logiciel { background:rgba(239,68,68,.15); color:#f87171; border:1px solid rgba(239,68,68,.2); }
.badge-anime    { background:rgba(236,72,153,.15); color:#f472b6; border:1px solid rgba(236,72,153,.2); }
.badge-autre    { background:rgba(100,116,139,.15); color:#94a3b8; border:1px solid rgba(100,116,139,.2); }

/* Nom torrent */
.torrent-name { color:var(--text); font-weight:500; display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; max-width:380px; transition:color .15s; }
.torrent-name:hover { color:var(--accent); }
.torrent-meta { display:flex; gap:8px; margin-top:3px; flex-wrap:wrap; }
.meta-tag { font-size:11px; color:var(--text3); }
.meta-hd   { color:#60a5fa; font-weight:600; }
.meta-vf   { color:#4ade80; font-weight:600; }
.meta-vo   { color:#fb923c; font-weight:600; }
.meta-vost { color:#c084fc; font-weight:600; }

/* Taille / date */
.td-size { text-align:right; font-family:var(--mono); font-size:12px; color:var(--text2); white-space:nowrap; width:80px; }
.td-date { font-size:12px; color:var(--text3); white-space:nowrap; width:100px; }
.td-num  { text-align:center; font-family:var(--mono); font-size:13px; font-weight:600; width:55px; }
.td-dl   { text-align:center; font-family:var(--mono); font-size:12px; color:var(--text3); width:60px; }
.td-act  { text-align:center; width:90px; }

.seed-high { color:var(--green); }
.seed-mid  { color:#86efac; }
.seed-low  { color:var(--yellow); }
.seed-dead { color:var(--text3); }
.leech-c   { color:var(--red); }

/* Action buttons */
.act-btns { display:flex; gap:4px; justify-content:center; }
.dl-btn { display:inline-flex; align-items:center; justify-content:center; width:30px; height:30px; background:rgba(249,115,22,.1); border:1px solid rgba(249,115,22,.3); border-radius:6px; color:var(--accent); cursor:pointer; transition:all .15s; font-size:15px; text-decoration:none; }
.dl-btn:hover { background:var(--accent); color:#fff; }
.mag-btn { display:inline-flex; align-items:center; justify-content:center; width:30px; height:30px; background:rgba(59,130,246,.1); border:1px solid rgba(59,130,246,.3); border-radius:6px; color:#60a5fa; cursor:pointer; transition:all .15s; font-size:14px; text-decoration:none; }
.mag-btn:hover { background:var(--blue); color:#fff; }

/* ── PAGINATION ──────────────────────────────── */
.pagination { display:flex; align-items:center; justify-content:center; gap:6px; padding:1.25rem; border-top:1px solid var(--border); flex-wrap:wrap; }
.page-btn { min-width:34px; height:34px; display:inline-flex; align-items:center; justify-content:center; border-radius:6px; font-size:13px; cursor:pointer; transition:all .15s; background:var(--bg3); border:1px solid var(--border); color:var(--text2); font-family:var(--mono); padding:0 8px; text-decoration:none; }
.page-btn:hover { border-color:var(--border2); color:var(--text); }
.page-btn.active { background:var(--accent); border-color:var(--accent); color:#fff; }
.page-btn.disabled { opacity:.3; pointer-events:none; }
.page-dots { color:var(--text3); font-size:13px; padding:0 2px; }

/* ── DETAIL PAGE ─────────────────────────────── */
.detail-wrap { max-width:900px; margin:2rem auto; padding:0 1.5rem; }
.detail-card { background:var(--bg2); border:1px solid var(--border); border-radius:12px; overflow:hidden; }
.detail-head { padding:1.5rem; border-bottom:1px solid var(--border); }
.detail-title { font-size:1.2rem; font-weight:600; margin-bottom:.75rem; line-height:1.4; }
.detail-meta { display:flex; gap:10px; flex-wrap:wrap; align-items:center; }
.detail-body { padding:1.5rem; }
.stats-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:1rem; margin-bottom:1.5rem; }
@media(max-width:600px){ .stats-grid{grid-template-columns:repeat(2,1fr);} }
.stat-card { background:var(--bg3); border:1px solid var(--border); border-radius:8px; padding:1rem; text-align:center; }
.stat-card .sv { font-family:var(--mono); font-size:22px; font-weight:700; }
.stat-card .sl { font-size:11px; color:var(--text3); text-transform:uppercase; letter-spacing:.06em; margin-top:4px; }
.stat-card.g .sv { color:var(--green); }
.stat-card.r .sv { color:var(--red); }
.stat-card.b .sv { color:#60a5fa; }
.stat-card.o .sv { color:var(--accent); }
.detail-desc { color:var(--text2); font-size:14px; line-height:1.7; margin-bottom:1.5rem; }
.detail-info-table { width:100%; border-collapse:collapse; margin-bottom:1.5rem; }
.detail-info-table td { padding:8px 0; font-size:13px; border-bottom:1px solid var(--border); }
.detail-info-table td:first-child { color:var(--text3); width:160px; }
.detail-actions { display:flex; gap:10px; flex-wrap:wrap; }
.detail-actions .btn { flex:1; min-width:140px; justify-content:center; padding:10px 20px; font-size:14px; }

/* ── UPLOAD FORM ─────────────────────────────── */
.form-wrap { max-width:680px; margin:2rem auto; padding:0 1.5rem; }
.form-card { background:var(--bg2); border:1px solid var(--border); border-radius:12px; padding:2rem; }
.form-title { font-size:1.2rem; font-weight:600; margin-bottom:.25rem; }
.form-sub { color:var(--text2); font-size:14px; margin-bottom:1.75rem; }
.form-group { margin-bottom:1.25rem; }
.form-label { display:block; font-size:13px; font-weight:500; color:var(--text2); margin-bottom:6px; }
.form-label span { color:var(--red); }
.form-control { width:100%; background:var(--bg3); border:1px solid var(--border); border-radius:8px; color:var(--text); padding:10px 14px; font-size:14px; font-family:var(--sans); outline:none; transition:border-color .2s; }
.form-control:focus { border-color:var(--accent); }
.form-control::placeholder { color:var(--text3); }
textarea.form-control { resize:vertical; min-height:100px; }
select.form-control { cursor:pointer; }
.form-hint { font-size:12px; color:var(--text3); margin-top:5px; }
.form-row { display:grid; grid-template-columns:1fr 1fr; gap:1rem; }
@media(max-width:500px){ .form-row{grid-template-columns:1fr;} }
.form-check { display:flex; align-items:flex-start; gap:10px; }
.form-check input { margin-top:2px; }
.alert { padding:12px 16px; border-radius:8px; font-size:14px; margin-bottom:1rem; }
.alert-success { background:rgba(34,197,94,.1); border:1px solid rgba(34,197,94,.3); color:var(--green); }
.alert-error   { background:rgba(239,68,68,.1); border:1px solid rgba(239,68,68,.3); color:var(--red); }
.alert-info    { background:rgba(59,130,246,.1); border:1px solid rgba(59,130,246,.3); color:#60a5fa; }

/* ── ADMIN ───────────────────────────────────── */
.admin-wrap { display:flex; min-height:100vh; }
.admin-sidebar { width:220px; background:var(--bg2); border-right:1px solid var(--border); flex-shrink:0; padding:1rem 0; position:sticky; top:0; height:100vh; overflow-y:auto; }
.admin-logo { font-family:var(--mono); font-size:16px; font-weight:700; color:var(--accent); padding:0 1.25rem 1rem; border-bottom:1px solid var(--border); margin-bottom:.75rem; display:block; }
.admin-logo small { color:var(--text3); font-size:11px; display:block; font-family:var(--sans); font-weight:400; margin-top:2px; }
.admin-nav a { display:flex; align-items:center; gap:10px; padding:9px 1.25rem; color:var(--text2); font-size:13px; transition:all .15s; border-left:3px solid transparent; }
.admin-nav a:hover { background:var(--bg3); color:var(--text); }
.admin-nav a.active { border-left-color:var(--accent); background:rgba(249,115,22,.07); color:var(--accent); }
.admin-nav .nav-section { font-size:10px; text-transform:uppercase; letter-spacing:.1em; color:var(--text3); padding:12px 1.25rem 4px; }
.admin-content { flex:1; padding:1.5rem; overflow-x:auto; }
.admin-topbar { display:flex; align-items:center; justify-content:space-between; margin-bottom:1.5rem; flex-wrap:wrap; gap:1rem; }
.admin-topbar h1 { font-size:1.3rem; font-weight:600; }
.kpi-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(160px,1fr)); gap:1rem; margin-bottom:1.5rem; }
.kpi-card { background:var(--bg2); border:1px solid var(--border); border-radius:10px; padding:1.25rem; }
.kpi-card .kv { font-family:var(--mono); font-size:26px; font-weight:700; }
.kpi-card .kl { font-size:12px; color:var(--text3); margin-top:4px; }
.kpi-card.orange .kv { color:var(--accent); }
.kpi-card.green  .kv { color:var(--green); }
.kpi-card.blue   .kv { color:#60a5fa; }
.kpi-card.red    .kv { color:var(--red); }
.admin-table-wrap { background:var(--bg2); border:1px solid var(--border); border-radius:10px; overflow:hidden; }
.admin-table-wrap table { min-width:600px; }
.admin-table-wrap thead th { background:var(--bg3); padding:9px 14px; font-size:11px; font-weight:600; text-transform:uppercase; letter-spacing:.06em; color:var(--text3); border-bottom:1px solid var(--border); }
.admin-table-wrap tbody td { padding:10px 14px; font-size:13px; border-bottom:1px solid var(--border); vertical-align:middle; }
.admin-table-wrap tbody tr:last-child td { border-bottom:none; }
.admin-table-wrap tbody tr:hover { background:rgba(255,255,255,.02); }
.status-badge { display:inline-flex; align-items:center; gap:5px; padding:3px 10px; border-radius:20px; font-size:11px; font-weight:500; }
.status-pending  { background:rgba(234,179,8,.15); color:#fde047; border:1px solid rgba(234,179,8,.2); }
.status-approved { background:rgba(34,197,94,.15); color:#4ade80; border:1px solid rgba(34,197,94,.2); }
.status-rejected { background:rgba(239,68,68,.15); color:#f87171; border:1px solid rgba(239,68,68,.2); }
.admin-login { min-height:100vh; display:flex; align-items:center; justify-content:center; background:var(--bg); }
.login-card { background:var(--bg2); border:1px solid var(--border); border-radius:12px; padding:2rem; width:100%; max-width:380px; }
.login-logo { font-family:var(--mono); font-size:22px; font-weight:700; color:var(--accent); text-align:center; margin-bottom:1.5rem; }
.login-logo small { display:block; font-family:var(--sans); font-size:12px; font-weight:400; color:var(--text3); margin-top:4px; }

/* ── TRENDING SIDEBAR ────────────────────────── */
.trend-item { display:flex; align-items:center; gap:8px; padding:7px 0; border-bottom:1px solid var(--border); }
.trend-item:last-child { border-bottom:none; }
.trend-rank { font-family:var(--mono); font-size:11px; color:var(--text3); width:16px; text-align:right; }
.trend-name { font-size:12px; color:var(--text2); flex:1; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.trend-seed { font-family:var(--mono); font-size:11px; color:var(--green); }

/* ── FOOTER ──────────────────────────────────── */
#footer { background:var(--bg2); border-top:1px solid var(--border); padding:2rem 1.5rem; text-align:center; color:var(--text3); font-size:12px; margin-top:3rem; }
.footer-links { display:flex; gap:1.5rem; justify-content:center; margin-bottom:1rem; flex-wrap:wrap; }
.footer-links a { color:var(--text3); }
.footer-links a:hover { color:var(--accent); }
.footer-copy { color:var(--text3); }

/* ── MISC ────────────────────────────────────── */
.empty-state { text-align:center; padding:3rem; color:var(--text3); }
.empty-state .es-icon { font-size:3rem; margin-bottom:1rem; }
.empty-state p { font-size:14px; }
.breadcrumb { display:flex; align-items:center; gap:8px; font-size:13px; color:var(--text3); margin-bottom:1.5rem; }
.breadcrumb a { color:var(--text3); }
.breadcrumb a:hover { color:var(--accent); }
.breadcrumb span { color:var(--text3); }
