:root{--bg:#0b1120;--card:#1f2937;--card2:#111827;--line:#334155;--text:#e5e7eb;--muted:#94a3b8;--green:#34d399;--blue:#60a5fa;--orange:#f59e0b}
*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:var(--bg);color:var(--text)}
.topbar{display:flex;align-items:center;gap:16px;padding:10px 16px;background:#08111f;border-bottom:1px solid var(--line)}.brand{font-weight:800;letter-spacing:.02em}nav{display:flex;flex-wrap:wrap;gap:10px}.nav-group{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.nav-tools{padding-left:10px;border-left:1px solid var(--line)}nav a{color:var(--muted);text-decoration:none;font-size:13px}nav a:hover{color:var(--text)}
.work-notice{max-width:1680px;margin:8px auto 0;padding:9px 12px;border:1px solid var(--line);border-radius:12px;background:rgba(15,23,42,.92);display:flex;align-items:center;justify-content:space-between;gap:12px;color:#dbeafe}.work-notice strong{display:block;font-size:13px}.work-notice span{display:block;color:#cbd5e1;font-size:12px;line-height:1.35}.work-notice small{display:block;color:var(--muted);font-size:11px;margin-top:2px}.work-notice a{white-space:nowrap;color:#bfdbfe;text-decoration:none;border:1px solid rgba(96,165,250,.45);border-radius:999px;padding:6px 10px;font-size:12px}.work-notice.info{border-color:#38bdf8;background:linear-gradient(135deg,rgba(56,189,248,.14),rgba(15,23,42,.96))}.work-notice.warning{border-color:#f59e0b;background:linear-gradient(135deg,rgba(245,158,11,.16),rgba(15,23,42,.96))}
.page{max-width:1680px;margin:0 auto;padding:12px}.hero{background:linear-gradient(135deg,#1f2937,#0f172a);border:1px solid var(--line);border-radius:16px;padding:18px;margin-bottom:10px}.hero.compact{padding:14px 16px}.eyebrow{color:var(--blue);text-transform:uppercase;font-size:11px;letter-spacing:.08em;margin:0 0 6px}h1{margin:0;font-size:clamp(26px,4vw,44px)}h2{margin:0 0 10px;font-size:17px}.lead{max-width:1100px;color:var(--muted);line-height:1.45;margin-bottom:0}
.panel{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:12px;margin-bottom:10px}.button,.tabs a{display:inline-flex;align-items:center;justify-content:center;background:#0b1220;border:1px solid var(--line);border-radius:999px;padding:6px 10px;color:var(--text);text-decoration:none;font-size:12px;line-height:1}.button.small{padding:6px 9px;min-width:68px}.button.ghost{color:var(--muted)}.tabs{display:flex;gap:7px;flex-wrap:wrap;margin-top:10px}.tabs a.active{background:#1d4ed8;border-color:#60a5fa}
.filters{display:grid;grid-template-columns:1.2fr 1.7fr 1fr .75fr .75fr .62fr .62fr minmax(260px,2fr) auto;gap:7px;align-items:end;background:var(--card);border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin-bottom:8px}
.filters label{font-size:12px;color:var(--muted);display:flex;flex-direction:column;gap:4px;min-width:0}.filters input,.filters select,.granularity-control select{width:100%;background:#0b1220;color:var(--text);border:1px solid var(--line);border-radius:7px;padding:9px 8px;min-width:0;font-size:13px}.filter-actions{display:flex;gap:5px;align-items:center;justify-content:flex-end;white-space:nowrap}
.filter-options-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:rgba(15,23,42,.55);border:1px solid var(--line);border-radius:10px;padding:7px 12px;margin:-2px 0 10px}.checkbox-filter{display:inline-flex!important;flex-direction:row!important;align-items:center;gap:7px;color:var(--muted);font-size:12px;white-space:nowrap}.checkbox-filter input{width:auto!important;margin:0;accent-color:#60a5fa}.diagnostic-filters{grid-template-columns:2fr 1.5fr .7fr .7fr auto}
.active-filters{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 10px}.filter-chip{display:inline-flex;align-items:center;border:1px solid #334155;background:#0b1220;border-radius:999px;padding:5px 9px;font-size:12px;color:#cbd5e1}.dashboard-row{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(320px,.75fr);gap:10px;align-items:stretch}.columns{display:grid;grid-template-columns:1fr 1fr;gap:10px}
table{width:100%;border-collapse:collapse}th,td{border-bottom:1px solid var(--line);padding:7px;font-size:12px;text-align:left}th{color:var(--muted)}td{max-width:520px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.right{text-align:right;white-space:nowrap}.center{text-align:center}.data-table a{color:#bfdbfe;text-decoration:none}.data-table a:hover{text-decoration:underline}.icon-button{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:1px solid var(--line);border-radius:8px;background:#0b1220;text-decoration:none}.diagnostic-table td{max-width:280px}.row-warning{background:rgba(245,158,11,.10)}
.data-quality.warning{border-color:#f59e0b;background:linear-gradient(135deg,rgba(245,158,11,.16),rgba(31,41,55,1))}.data-quality.empty{border-color:#64748b}.data-quality.info{border-color:#38bdf8;background:linear-gradient(135deg,rgba(56,189,248,.14),rgba(31,41,55,1))}.dq-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.dq-head p{margin:0;color:#cbd5e1}.dq-badge{white-space:nowrap;border:1px solid #f59e0b;color:#fde68a;background:#291b05;border-radius:999px;padding:6px 10px;font-size:12px}.dq-badge.info{border-color:#38bdf8;color:#bae6fd;background:#082f49}.data-quality summary{cursor:pointer;color:#bfdbfe;margin-top:10px}
.chart-panel{overflow:visible;background:radial-gradient(circle at top left,rgba(96,165,250,.14),transparent 35%),linear-gradient(145deg,#1f2937,#111827)}.chart-header{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.chart-meta{display:flex;gap:12px;flex-wrap:wrap;color:#9ca3af;font-size:11px}.chart-meta strong{color:#f8fafc;font-weight:700}.chart-tools{display:flex;align-items:flex-start;gap:12px}.granularity-control{min-width:135px}.granularity-control label{display:flex;flex-direction:column;gap:5px;color:var(--muted);font-size:11px}
.chart-frame{display:grid;grid-template-columns:72px 1fr;gap:8px;min-height:226px;overflow:visible;position:relative;padding-right:18px}.chart-frame:before{content:"";position:absolute;left:72px;right:18px;top:32px;height:1px;background:rgba(148,163,184,.15);box-shadow:0 38px 0 rgba(148,163,184,.12),0 76px 0 rgba(148,163,184,.12),0 114px 0 rgba(148,163,184,.12)}.y-axis{height:168px;display:flex;flex-direction:column;justify-content:space-between;align-items:flex-end;color:var(--muted);font-size:10px;padding-top:4px;z-index:1;border-right:1px solid rgba(148,163,184,.35);padding-right:8px}.bars{height:214px;display:grid;align-items:end;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:5px;overflow:visible;padding:8px 12px 42px 0;border-bottom:1px solid rgba(148,163,184,.45);z-index:1}.barcol{height:168px;min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;position:relative;overflow:visible}.bars-pair{height:154px;display:flex;align-items:flex-end;gap:3px}.bar{display:block;width:8px;border-radius:5px 5px 0 0}.bar.dl,.dot.dl{background:linear-gradient(180deg,#93c5fd,#2563eb)}.bar.ul,.dot.ul{background:linear-gradient(180deg,#86efac,#16a34a)}.barcol small{position:absolute;bottom:-30px;left:50%;transform:translateX(-50%);font-size:10px;color:var(--muted);white-space:nowrap}.legend{color:var(--muted);font-size:11px;margin-top:21px;white-space:nowrap}.dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin:0 4px 0 12px}.barcol .tooltip,.barcol .chart-tooltip,.barcol .bar-tooltip,.chart-tooltip,.bar-tooltip{display:none!important}
.share-card{display:flex;flex-direction:column;gap:8px;background:linear-gradient(145deg,#1f2937,#111827)}.share-card h2{font-size:22px;margin:0}.period-label{margin:-5px 0 2px;color:var(--muted);font-size:13px}.share-main-flat{display:grid;grid-template-columns:1fr 1fr;gap:12px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:10px 0}.share-main-flat span,.share-grid-flat span{display:block;color:var(--muted);font-size:11px;margin-bottom:4px}.share-main-flat strong{font-size:20px}.share-grid-flat{display:grid;grid-template-columns:1fr 1fr;gap:8px}.share-grid-flat strong{font-size:14px}
#loading-overlay{position:fixed;top:12px;right:12px;z-index:9999;background:#0b1220;border:1px solid #60a5fa;color:#e5e7eb;padding:10px 14px;border-radius:10px;box-shadow:0 10px 30px rgba(0,0,0,.3);font-size:13px;opacity:0;pointer-events:none;transform:translateY(-6px);transition:.15s}#loading-overlay.visible{opacity:1;transform:translateY(0)}
@media(max-width:1500px){.filters{grid-template-columns:repeat(4,minmax(130px,1fr))}.filter-actions{justify-content:flex-start}}@media(max-width:1100px){.dashboard-row{grid-template-columns:1fr}.share-card{order:-1}.chart-tools{width:100%;justify-content:space-between}}@media(max-width:800px){.columns{grid-template-columns:1fr}.page{padding:8px}td{max-width:220px}.filters{grid-template-columns:1fr}.chart-frame{grid-template-columns:56px 1fr;padding-right:6px}.chart-frame:before{left:56px;right:6px}.chart-header{flex-direction:column}.chart-tools{flex-direction:column}.barcol small{display:none}.dashboard-row{grid-template-columns:1fr}.share-main-flat,.share-grid-flat{grid-template-columns:1fr 1fr}.dq-head{flex-direction:column}.filter-options-row{align-items:flex-start;flex-direction:column}}


/* alpha8.17.5 - correctif ciblé filtres : grille compacte sans refonte complète */
@media (min-width: 1251px) {
  .filters {
    grid-template-columns: 1.05fr 1.35fr .85fr .75fr .75fr .58fr .58fr minmax(220px,1.35fr) auto;
    gap: 6px;
    padding: 8px 10px;
  }
}
@media (max-width: 1250px) {
  .filters {
    grid-template-columns: repeat(4, minmax(130px,1fr));
  }
  .filter-actions {
    justify-content: flex-start;
  }
}

/* v4 - options discrètes + filtres supprimables explicites */
.hero-actions{display:flex;justify-content:flex-end;margin-top:8px}.subtle-options{margin:0;padding:6px 10px;background:rgba(15,23,42,.38);border-color:rgba(51,65,85,.75);justify-content:flex-end}.filter-chip{text-decoration:none;gap:6px}.filter-chip:hover{border-color:#60a5fa;background:#111827;text-decoration:none}.filter-chip strong{text-decoration:none}.chip-remove{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:999px;border:1px solid #475569;color:#e2e8f0;font-size:12px;line-height:1;margin-left:2px}.filter-chip:hover .chip-remove{border-color:#93c5fd;color:#fff}
@media(max-width:800px){.hero-actions{justify-content:flex-start}.subtle-options{width:100%;justify-content:flex-start}}

/* v5 - options synthèse alignées avec les filtres rapides */
.quick-filter-row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:10px}.quick-filter-row .tabs{margin-top:0}.quick-options{margin:0;padding:6px 10px;background:rgba(15,23,42,.34);border-color:rgba(51,65,85,.72);justify-content:flex-end}.hero-actions{display:none}
@media(max-width:900px){.quick-filter-row{align-items:flex-start;flex-direction:column}.quick-options{width:100%;justify-content:flex-start}}

/* v8 - champ torrent plus large et écran d'attente premier chargement */
@media (min-width: 1251px) {
  .filters {
    grid-template-columns: 1.05fr 1.25fr .8fr .75fr .75fr .56fr .56fr minmax(360px,2.4fr) auto;
  }
  .table-filters {
    grid-template-columns: .82fr 1.05fr .85fr .75fr .75fr .56fr .56fr minmax(400px,2.7fr) auto;
  }
  .filters .torrent-filter {
    min-width: 340px;
  }
  .filter-actions {
    justify-self: end;
    min-width: max-content;
  }
}
.loading-hero{min-height:340px;display:flex;flex-direction:column;justify-content:center;align-items:flex-start}.loading-card{display:flex;align-items:center;gap:12px;margin-top:18px;padding:14px 16px;border:1px solid var(--line);border-radius:12px;background:rgba(15,23,42,.72);color:#dbeafe}.spinner{width:26px;height:26px;border:3px solid rgba(148,163,184,.35);border-top-color:#60a5fa;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}

/* v9 - grille de filtres homogène : tracker/dates lisibles, torrent contrôlé */
@media (min-width: 1500px) {
  .filters {
    grid-template-columns:
      minmax(170px, 1.05fr)
      minmax(125px, .85fr)
      minmax(110px, .75fr)
      minmax(125px, .85fr)
      minmax(150px, .75fr)
      minmax(150px, .75fr)
      minmax(300px, 1fr)
      max-content;
  }
  .table-filters {
    grid-template-columns:
      minmax(115px, .65fr)
      minmax(170px, 1.05fr)
      minmax(125px, .85fr)
      minmax(110px, .75fr)
      minmax(125px, .85fr)
      minmax(150px, .75fr)
      minmax(150px, .75fr)
      minmax(300px, 1fr)
      max-content;
  }
  .filters .torrent-filter {
    min-width: 0;
  }
  .filter-actions {
    justify-self: end;
  }
}
@media (min-width: 1251px) and (max-width: 1499px) {
  .filters {
    grid-template-columns: repeat(4, minmax(150px, 1fr));
  }
  .table-filters {
    grid-template-columns: repeat(5, minmax(135px, 1fr));
  }
  .filters .torrent-filter {
    min-width: 0;
  }
  .filter-actions {
    justify-self: end;
  }
}
@media (min-width: 1251px) {
  .diagnostic-filters {
    grid-template-columns: 2fr 1.5fr .7fr .7fr max-content;
  }
}

/* v10 - filtres homogènes, cross-filtres et gestion alias */
@media (min-width: 1280px) {
  .filters,
  .table-filters {
    grid-template-columns:
      minmax(180px, 1.05fr)
      minmax(160px, .95fr)
      minmax(140px, .85fr)
      minmax(160px, .95fr)
      minmax(155px, .8fr)
      minmax(155px, .8fr)
      minmax(280px, 1.2fr)
      max-content;
  }
  .table-filters {
    grid-template-columns:
      minmax(130px, .75fr)
      minmax(180px, 1.05fr)
      minmax(160px, .95fr)
      minmax(140px, .85fr)
      minmax(160px, .95fr)
      minmax(155px, .8fr)
      minmax(155px, .8fr)
      minmax(280px, 1.2fr)
      max-content;
  }
  .alias-form {
    grid-template-columns: minmax(320px, 1.3fr) minmax(220px, .9fr) max-content;
  }
}
@media (min-width: 1280px) and (max-width: 1590px) {
  .filters,
  .table-filters {
    grid-template-columns: repeat(4, minmax(160px, 1fr));
  }
}
.cross-link{color:#bfdbfe;text-decoration:none}.cross-link:hover{text-decoration:underline}.raw-tracker-note{display:inline-flex;margin-left:6px;border:1px solid #475569;border-radius:999px;padding:1px 5px;color:#94a3b8;font-size:10px;vertical-align:middle}.notice.success{border-color:#22c55e;background:rgba(34,197,94,.12)}.notice.warning{border-color:#f59e0b;background:rgba(245,158,11,.12)}.inline-form{display:inline}.actions-cell{display:flex;gap:6px;justify-content:flex-end;align-items:center}.button.danger{border-color:#7f1d1d;background:#2a0b0b;color:#fecaca}.alias-form input{font-family:inherit}


/* v10.1 - harmonisation finale des filtres variables */
@media (min-width: 1280px) {
  .filters,
  .table-filters {
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    align-items: end;
  }
  .filters .torrent-filter,
  .table-filters .torrent-filter {
    min-width: 280px;
    grid-column: span 2;
  }
  .filters .filter-actions,
  .table-filters .filter-actions {
    justify-self: end;
    align-self: end;
    min-width: max-content;
  }
  .alias-form {
    grid-template-columns: minmax(320px, 1.3fr) minmax(220px, .9fr) max-content;
  }
}
@media (max-width: 1279px) {
  .filters .torrent-filter,
  .table-filters .torrent-filter {
    grid-column: auto;
    min-width: 0;
  }
}

/* v11 - maintenance stockage et purge prudente */
.maintenance-cards .card{min-height:92px}.subtle{color:var(--muted);font-size:11px;line-height:1.35;margin-top:4px}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono",monospace}.notice{border:1px solid var(--line);border-radius:10px;padding:9px 11px;margin:10px 0 0;color:#dbeafe;background:rgba(15,23,42,.55)}.maintenance-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.maintenance-form{display:flex;gap:10px;align-items:end;flex-wrap:wrap;margin-top:10px}.maintenance-form label{display:flex;flex-direction:column;gap:5px;color:var(--muted);font-size:12px;min-width:220px}.maintenance-form select,.maintenance-form input{background:#0b1220;color:var(--text);border:1px solid var(--line);border-radius:8px;padding:8px 9px;font-size:13px}.small-lead{font-size:13px}.purge-plan{margin-top:12px;border-top:1px solid var(--line);padding-top:12px}.purge-plan h3{margin:0 0 8px;font-size:15px}.danger-zone{background:rgba(127,29,29,.10);border:1px solid rgba(127,29,29,.7);border-radius:12px;padding:10px}

/* v13 - alias trackers : page plus rapide et affichage stabilisé */
.alias-hero .alias-help{margin:8px 0 0;color:#cbd5e1;font-size:13px;line-height:1.45}
.alias-hero code,.alias-help code{background:#0b1220;border:1px solid var(--line);border-radius:6px;padding:1px 5px;color:#e0f2fe}
.alias-form{display:grid;grid-template-columns:minmax(320px,1.4fr) minmax(220px,.8fr) max-content;gap:8px;align-items:end;background:transparent;border:0;border-radius:0;padding:0;margin:0}
.alias-form label{font-size:12px;color:var(--muted);display:flex;flex-direction:column;gap:4px;min-width:0}
.alias-form input{width:100%;background:#0b1220;color:var(--text);border:1px solid var(--line);border-radius:7px;padding:9px 8px;min-width:0;font-size:13px;font-family:inherit}
@media(max-width:900px){.alias-form{grid-template-columns:1fr}.alias-form .filter-actions{justify-content:flex-start}}

/* v15 - diagnostic et filtre local torrents */
.panel-title-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}
.panel-title-row h2{margin:0}
.table-local-filter-input{width:min(420px,45vw);background:#0b1220;color:var(--text);border:1px solid var(--line);border-radius:8px;padding:9px 10px;font-size:13px}
@media(max-width:760px){.panel-title-row{align-items:stretch;flex-direction:column}.table-local-filter-input{width:100%}}
.diagnostic-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:8px}
.diagnostic-actions .lead{margin:0}
.diagnostic-action-buttons{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.diagnostic-active-filters{margin:-2px 0 10px}
.top-explorer{padding-bottom:10px}.top-explorer-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:8px}.top-explorer-head h2{margin-bottom:4px}.top-explorer-head .subtle{margin:0}.top-controls{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}.segmented-control{display:inline-flex;gap:3px;padding:3px;border:1px solid var(--line);border-radius:999px;background:rgba(15,23,42,.55)}.segmented-control a{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;padding:5px 9px;color:#cbd5e1;text-decoration:none;font-size:12px;line-height:1;white-space:nowrap}.segmented-control a.active{background:#1d4ed8;color:#fff}.segmented-control a:hover{text-decoration:none;background:#0f172a}.segmented-control a.active:hover{background:#2563eb}.top-columns article{min-width:0}.top-columns h3{margin:0 0 8px;font-size:14px;color:#e0f2fe}.top-columns table a{color:#bfdbfe;text-decoration:none}.top-columns table a:hover{text-decoration:underline}.top-columns td:first-child{max-width:620px;white-space:normal;overflow-wrap:anywhere;word-break:break-word;line-height:1.25}
@media(max-width:900px){.top-explorer-head{align-items:stretch;flex-direction:column}.top-controls{justify-content:flex-start}.segmented-control{max-width:100%;overflow-x:auto}.segmented-control a{padding:6px 9px}.top-columns{grid-template-columns:1fr}}
@media (min-width: 1280px){.diagnostic-filters{grid-template-columns:minmax(280px,1.5fr) minmax(300px,1.3fr) minmax(190px,.9fr) minmax(190px,.9fr) minmax(140px,.65fr) minmax(110px,.55fr) max-content}}

/* v16 - diagnostic plus confortable */
.diagnostic-quick-actions{grid-column:1/-1;display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:-2px}
.diagnostic-table td.diagnostic-name{max-width:320px;white-space:normal;overflow-wrap:anywhere;word-break:break-word;line-height:1.25}
.diagnostic-table th:nth-child(2),.diagnostic-table td:nth-child(2){max-width:340px;width:24%}
.diagnostic-table th,.diagnostic-table td{vertical-align:top}
@media(max-width:900px){.diagnostic-quick-actions{align-items:flex-start;flex-direction:column}.diagnostic-table td.diagnostic-name{max-width:240px}}

/* v26 - détails de performance discrets */
.perf-detail{display:block;margin-top:4px;color:var(--muted);font-size:11px;line-height:1.35}

/* v40 - pastilles Trackers/Torrents et tables qui restent dans la largeur */
.table-range-row{margin-top:10px;justify-content:flex-start}
.table-scroll-panel{overflow-x:auto}
.wrap-table{table-layout:fixed;min-width:920px}
.wrap-table td{vertical-align:top}
.wrap-table .torrent-name-cell,.wrap-table .tracker-name-cell{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere;word-break:break-word;line-height:1.28}
.wrap-table .torrent-name-cell a,.wrap-table .tracker-name-cell a{overflow-wrap:anywhere;word-break:break-word}
.torrents-table th:nth-child(2),.torrents-table td:nth-child(2){width:34%;max-width:440px}
.torrents-table th:nth-child(3),.torrents-table td:nth-child(3){width:18%;max-width:260px}
.trackers-table th:nth-child(1),.trackers-table td:nth-child(1){width:46%;max-width:520px}
.trackers-table th:nth-child(6),.trackers-table td:nth-child(6){width:96px}
@media(max-width:900px){.wrap-table{min-width:760px}.torrents-table th:nth-child(2),.torrents-table td:nth-child(2){width:30%}.torrents-table th:nth-child(3),.torrents-table td:nth-child(3){width:22%}}

/* v51 - Maintenance épurée : essentiel visible, legacy rangé */
.maintenance-essential{grid-template-columns:repeat(auto-fit,minmax(230px,1fr));margin-bottom:10px}.maintenance-compact-cards{grid-template-columns:repeat(auto-fit,minmax(210px,1fr));margin-top:10px}.maintenance-status-panel .compact-note{margin:0;color:#cbd5e1;font-size:13px;line-height:1.45}.status-pill{display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:999px;padding:5px 9px;font-size:11px;white-space:nowrap;color:#cbd5e1;background:#0b1220}.status-pill.ok{border-color:#22c55e;color:#bbf7d0;background:rgba(34,197,94,.12)}.status-pill.warn{border-color:#f59e0b;color:#fde68a;background:rgba(245,158,11,.12)}.status-pill.neutral{border-color:#475569;color:#cbd5e1;background:rgba(15,23,42,.55)}.compact-kv{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px;margin:10px 0 0}.compact-kv div{border:1px solid var(--line);border-radius:10px;padding:8px 10px;background:rgba(15,23,42,.42)}.compact-kv dt{font-size:11px;color:var(--muted);margin-bottom:3px}.compact-kv dd{margin:0;font-size:13px;color:var(--text);overflow-wrap:anywhere}.maintenance-details{padding:0;overflow:hidden}.maintenance-details summary{cursor:pointer;list-style:none;padding:12px 14px;font-weight:700;color:#dbeafe;background:rgba(15,23,42,.35);border-bottom:1px solid transparent}.maintenance-details summary::-webkit-details-marker{display:none}.maintenance-details summary:before{content:"›";display:inline-block;margin-right:8px;color:#93c5fd;transition:.12s transform}.maintenance-details[open] summary{border-bottom-color:var(--line)}.maintenance-details[open] summary:before{transform:rotate(90deg)}.maintenance-details>table,.maintenance-details>.maintenance-actions,.maintenance-details>.subtle,.maintenance-details>.maintenance-subblock,.maintenance-details>.purge-plan,.maintenance-details>section{margin:12px}.danger-details summary{color:#fecaca}.maintenance-subblock{border-top:1px solid var(--line);padding-top:12px}.maintenance-subblock h3{font-size:15px;margin:0 0 6px}.maintenance-subblock:first-of-type{border-top:0;padding-top:0}@media(max-width:800px){.compact-kv{grid-template-columns:1fr}.maintenance-details>table{margin:8px}}

/* v55 - Diagnostic exploratoire : colonnes ajustables, wrapping et guide */
.diagnostic-guide summary,
.diagnostic-column-panel summary{cursor:pointer;color:#dbeafe;font-weight:700;margin-bottom:8px}
.diagnostic-guide-grid{display:grid;grid-template-columns:minmax(320px,1.2fr) minmax(260px,.8fr);gap:14px;align-items:start}
.diagnostic-guide h3{margin:0 0 8px;font-size:14px;color:#e0f2fe}.diagnostic-help-list{grid-template-columns:1fr}.diagnostic-column-panel{border:1px solid var(--line);border-radius:10px;background:rgba(15,23,42,.35);padding:10px 12px;margin:10px 0 12px}.diagnostic-column-toggles{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.diagnostic-column-toggles label{display:inline-flex;gap:6px;align-items:center;font-size:12px;color:#cbd5e1;white-space:nowrap}.diagnostic-column-toggles input{accent-color:#60a5fa}.diagnostic-view-actions{display:flex;gap:8px;flex-wrap:wrap}.diagnostic-table-scroll{max-width:100%;border:1px solid var(--line);border-radius:12px}.diagnostic-workbench{table-layout:fixed;min-width:1580px}.diagnostic-workbench th,.diagnostic-workbench td{vertical-align:top}.diagnostic-workbench td{max-width:none}.diagnostic-workbench .col-torrent{width:360px}.diagnostic-workbench .col-tracker{width:220px}.diagnostic-workbench .col-anomaly{width:220px}.diagnostic-workbench .col-reason{width:260px}.diagnostic-wide-torrent .col-torrent{width:520px!important}.diagnostic-workbench .diagnostic-name,.diagnostic-workbench .diagnostic-tracker,.diagnostic-workbench .diagnostic-anomaly,.diagnostic-workbench .diagnostic-reason,.diagnostic-workbench .diagnostic-wrap-col{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere;word-break:break-word;line-height:1.28}.diagnostic-workbench .is-hidden-column{display:none!important}.column-resizer{position:absolute;top:0;right:-3px;width:8px;height:100%;cursor:col-resize;user-select:none}.column-resizer:after{content:"";position:absolute;top:20%;right:3px;width:1px;height:60%;background:rgba(148,163,184,.45)}.resizing-columns{cursor:col-resize!important;user-select:none!important}.diagnostic-workbench th:hover .column-resizer:after{background:#93c5fd}.diagnostic-workbench .right{white-space:nowrap}@media(max-width:900px){.diagnostic-guide-grid{grid-template-columns:1fr}.diagnostic-workbench{min-width:1280px}.diagnostic-workbench .col-torrent{width:280px}.diagnostic-workbench .col-tracker{width:180px}}

/* v56 - Diagnostic workbench polish and lightweight observability */
.diagnostic-search-actions{grid-column:1/-1;display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:-2px}.diagnostic-search-actions .filter-actions{margin-left:auto;display:flex;align-items:center;gap:8px}.diagnostic-search-actions .subtle{flex-basis:100%;font-size:12px}.diagnostic-search-actions .diagnostic-quick-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:0}.diagnostic-scroll-sync{max-width:100%}.diagnostic-scrollbar-top{overflow-x:auto;overflow-y:hidden;height:12px;margin:2px 0 6px;border-radius:999px;scrollbar-width:thin;scrollbar-color:rgba(148,163,184,.35) transparent}.diagnostic-scrollbar-top div{height:1px}.diagnostic-table-scroll{overflow-x:auto;scrollbar-width:thin;scrollbar-color:rgba(148,163,184,.35) transparent}.diagnostic-scrollbar-top::-webkit-scrollbar,.diagnostic-table-scroll::-webkit-scrollbar{height:10px}.diagnostic-scrollbar-top::-webkit-scrollbar-track,.diagnostic-table-scroll::-webkit-scrollbar-track{background:transparent}.diagnostic-scrollbar-top::-webkit-scrollbar-thumb,.diagnostic-table-scroll::-webkit-scrollbar-thumb{background:rgba(148,163,184,.35);border-radius:999px}.diagnostic-scrollbar-top::-webkit-scrollbar-thumb:hover,.diagnostic-table-scroll::-webkit-scrollbar-thumb:hover{background:rgba(147,197,253,.55)}.diagnostic-workbench .col-torrent{width:440px}.diagnostic-wide-torrent .col-torrent{width:640px!important}.diagnostic-workbench .col-anomaly{width:260px}.diagnostic-workbench .col-reason{width:320px}.diagnostic-workbench .diagnostic-anomaly,.diagnostic-workbench .diagnostic-reason{white-space:normal!important;overflow-wrap:anywhere;word-break:break-word;line-height:1.3}@media(max-width:900px){.diagnostic-search-actions .filter-actions{margin-left:0}.diagnostic-search-actions{align-items:flex-start;flex-direction:column}.diagnostic-search-actions .subtle{flex-basis:auto}.diagnostic-workbench .col-torrent{width:320px}.diagnostic-wide-torrent .col-torrent{width:460px!important}}

/* v58 - partage image synthèse */
.share-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:10px}.share-image-button{border-color:#38bdf8;background:#082f49}.share-image-button:disabled{opacity:.65;cursor:wait}.share-status{color:#94a3b8;font-size:12px}.share-dashboard{position:relative}.share-card{min-width:0}.share-card strong{overflow-wrap:anywhere}.share-main-flat strong,.share-grid-flat strong{display:block;line-height:1.15}@media(max-width:900px){.share-actions{justify-content:flex-start}}

/* v59 - diagnostic hybride */
.diagnostic-table .col-granularity { min-width: 105px; white-space: nowrap; }
.diagnostic-table .col-source { min-width: 190px; max-width: 280px; white-space: normal; overflow-wrap: anywhere; }
.diagnostic-table .col-period-end { min-width: 145px; white-space: nowrap; }

/* v60 - pagination et rendu léger de l'onglet Torrent */
.torrent-pagination { display: flex; align-items: center; justify-content: center; gap: .75rem; margin: .75rem 0 1rem; }
.torrent-pagination-bottom { margin: 1rem 0 0; }
.torrent-pagination .disabled { opacity: .42; pointer-events: none; }
.torrent-page-summary { margin: .15rem 0 0; }
@media (max-width: 720px) {
  .torrent-pagination { justify-content: space-between; gap: .35rem; }
  .torrent-pagination .subtle { text-align: center; }
}
.share-actions{gap:6px}
#download-synthese-image{border-color:#475569}
.share-dashboard{gap:6px}
.share-card{gap:10px;padding:10px}
.share-card h2{font-size:20px;line-height:1.15}
.share-main-flat{gap:4px;padding:8px 0}
.share-main-flat>div{background:#0b1220;border:1px solid var(--line);border-radius:8px;padding:10px 12px;min-width:0}
.share-main-flat span,.share-grid-flat span{font-size:12px}
.share-main-flat strong{font-size:22px}
.share-grid-flat{gap:7px 8px}
.share-grid-flat strong{font-size:15px}
.bars{gap:3px;padding-right:6px}
.bars-pair{gap:2px}
.bar{width:7px;box-shadow:2px 0 4px rgba(15,23,42,.35)}
.bar.dl{background:linear-gradient(180deg,#bfdbfe 0%,#60a5fa 42%,#2563eb 100%)}
.bar.ul{background:linear-gradient(180deg,#bbf7d0 0%,#34d399 42%,#16a34a 100%)}
@media(max-width:800px){.share-main-flat>div{padding:9px 10px}.share-main-flat strong{font-size:20px}}

/* v63 - synthese compact header and share controls */
.hero-summary-line{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;flex-wrap:wrap}
.hero-summary-line h1{line-height:1.05}
.compact-metrics{margin:0;text-align:right;max-width:980px;font-size:13px}
.quick-filter-row{align-items:flex-start}
.quick-options{margin-left:auto;margin-top:-2px;padding:5px 8px}
.share-actions{margin-top:-2px;gap:6px;align-self:flex-start}
.share-image-button{background:linear-gradient(180deg,#0ea5e9,#0369a1);border-color:#38bdf8;color:#f0f9ff;font-weight:700}
.share-download-button{background:linear-gradient(180deg,#334155,#1e293b);border-color:#64748b;color:#e2e8f0;font-weight:700}
.share-image-button:hover,.share-download-button:hover{filter:brightness(1.08)}
.share-image-button:disabled,.share-download-button:disabled{opacity:.65;cursor:wait}
@media(max-width:1100px){.compact-metrics{text-align:left}.quick-options{margin-left:0}.share-actions{margin-top:0}}

/* v63.1 - baseline chart above labels and tighter chart bottom */
.bars{border-bottom:0;position:relative;padding-bottom:34px}
.bars:after{content:"";position:absolute;left:0;right:6px;bottom:31px;height:1px;background:rgba(148,163,184,.45);z-index:0}
.barcol{z-index:1}
.barcol-clickable{cursor:pointer}
.barcol-clickable:focus-visible{outline:2px solid #60a5fa;outline-offset:4px;border-radius:6px}
.barcol-clickable:hover .bar{filter:brightness(1.18);box-shadow:0 0 0 1px rgba(255,255,255,.22)}
.barcol small{bottom:-26px}

/* v64 - mobile filter comfort */
@media(max-width:720px){
  .topbar{align-items:flex-start;gap:8px;padding:9px 10px}
  .brand{font-size:14px}
  nav{gap:6px}
  nav a{font-size:12px;padding:3px 0}
  .page{padding:6px}
  .hero.compact{padding:10px 11px;border-radius:12px}
  .hero-summary-line{gap:8px}
  .hero-summary-line h1{font-size:26px}
  .compact-metrics{font-size:12px;line-height:1.35}
  .perf-detail{display:block;margin-top:2px}
  .quick-filter-row{gap:8px;margin-top:8px}
  .quick-filter-row .tabs{width:100%;flex-wrap:nowrap;overflow-x:auto;padding-bottom:2px;scrollbar-width:thin}
  .quick-filter-row .tabs a{flex:0 0 auto;padding:8px 10px}
  .quick-options{width:100%;gap:6px;padding:6px 8px;border-radius:9px}
  .checkbox-filter{font-size:11px;white-space:normal}
  .share-actions{width:100%;display:grid;grid-template-columns:1fr 1fr;gap:6px}
  .share-actions .button{width:100%;min-height:34px}
  .share-status{grid-column:1/-1}
  .filters{grid-template-columns:1fr 1fr;gap:6px;padding:8px;border-radius:9px;margin-bottom:7px}
  .filters label{font-size:11px;gap:3px}
  .filters input,.filters select,.granularity-control select{font-size:13px;padding:8px 7px;border-radius:7px}
  .filters label:nth-of-type(1),
  .filters label:nth-of-type(2),
  .filters label:nth-of-type(3),
  .filters .torrent-filter,
  .filters .filter-actions{grid-column:1/-1}
  .filter-actions{display:grid;grid-template-columns:1fr 1fr;gap:6px;width:100%}
  .filter-actions .button{width:100%;min-height:34px}
  .active-filters{gap:5px;margin-bottom:7px}
  .filter-chip{max-width:100%;white-space:normal;line-height:1.25}
  .panel{padding:10px;border-radius:10px}
  .chart-header{gap:6px}
  .chart-meta{gap:7px;font-size:10px}
  .granularity-control{width:100%}
  .granularity-control label{font-size:11px}
  .share-main-flat strong{font-size:18px}
  .share-grid-flat{grid-template-columns:1fr 1fr}
}

/* v67 - suggestions torrent */
.torrent-suggest-field{position:relative}.torrent-suggestions{position:absolute;z-index:50;left:0;right:0;top:100%;margin-top:4px;background:#0b1220;border:1px solid #475569;border-radius:10px;box-shadow:0 16px 38px rgba(0,0,0,.35);overflow:hidden}.torrent-suggestion{display:block;width:100%;border:0;border-bottom:1px solid rgba(71,85,105,.65);background:transparent;color:var(--text);padding:9px 10px;text-align:left;cursor:pointer}.torrent-suggestion:last-child{border-bottom:0}.torrent-suggestion:hover,.torrent-suggestion:focus{background:#172033}.torrent-suggestion-name{display:block;font-size:13px;line-height:1.25;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.torrent-suggestion-tracker{display:block;margin-top:3px;color:var(--muted);font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(max-width:720px){.torrent-suggestions{position:fixed;left:8px;right:8px;top:auto;bottom:12px;max-height:48vh;overflow:auto}.torrent-suggestion{padding:12px 11px}.torrent-suggestion-name{white-space:normal;overflow-wrap:anywhere}}

/* v70 - compact synthese layout and readable mobile ticks */
@media (min-width: 1180px){
  .synthese-filters{
    grid-template-columns:minmax(150px,.9fr) minmax(105px,.5fr) minmax(110px,.52fr) 132px 132px minmax(310px,1.7fr) max-content;
    gap:6px;
    padding:8px 10px;
  }
  .synthese-filters .torrent-filter{grid-column:auto;min-width:300px}
  .synthese-filters .filter-actions{justify-self:end;align-self:end}
}
.share-dashboard .panel{padding-bottom:8px}
.share-card{padding-bottom:8px}
.chart-frame{min-height:212px}
.bars{height:204px;padding-bottom:28px}
.bars:after{bottom:25px}
.barcol small{bottom:-22px}
@media(max-width:720px){
  .chart-frame{min-height:210px}
  .bars{padding-bottom:30px}
  .bars:after{bottom:27px}
  .bars .barcol small{display:block;bottom:-23px;font-size:9px}
  .bars .barcol small:empty{display:none}
}

/* v79 - Diagnostic: tableau stable et ascenseurs horizontaux discrets */
.diagnostic-scroll-sync{max-width:100%;position:relative}
.diagnostic-table-scroll{max-width:100%;overflow-x:auto;overflow-y:visible;border:1px solid var(--line);border-radius:12px;background:rgba(15,23,42,.18);scrollbar-width:thin;scrollbar-color:rgba(96,165,250,.45) rgba(15,23,42,.28)}
.diagnostic-scrollbar-top{overflow-x:auto;overflow-y:hidden;height:14px;margin:2px 0 7px;border-radius:999px;background:rgba(15,23,42,.28);scrollbar-width:thin;scrollbar-color:rgba(96,165,250,.45) rgba(15,23,42,.28)}
.diagnostic-scrollbar-top div{height:1px}
.diagnostic-scrollbar-top::-webkit-scrollbar,.diagnostic-table-scroll::-webkit-scrollbar{height:10px}
.diagnostic-scrollbar-top::-webkit-scrollbar-track,.diagnostic-table-scroll::-webkit-scrollbar-track{background:rgba(15,23,42,.28);border-radius:999px}
.diagnostic-scrollbar-top::-webkit-scrollbar-thumb,.diagnostic-table-scroll::-webkit-scrollbar-thumb{background:linear-gradient(90deg,rgba(59,130,246,.42),rgba(14,165,233,.50));border:2px solid rgba(15,23,42,.28);border-radius:999px}
.diagnostic-scrollbar-top::-webkit-scrollbar-thumb:hover,.diagnostic-table-scroll::-webkit-scrollbar-thumb:hover{background:linear-gradient(90deg,rgba(96,165,250,.72),rgba(56,189,248,.78))}
.diagnostic-workbench{table-layout:fixed;min-width:1900px}
.diagnostic-workbench th,.diagnostic-workbench td{box-sizing:border-box;vertical-align:top}
.diagnostic-workbench td{max-width:none}
.diagnostic-workbench .right{white-space:nowrap}
.diagnostic-workbench .col-detail{width:64px}
.diagnostic-workbench .col-period,.diagnostic-workbench .col-period-end,.diagnostic-workbench .col-prev,.diagnostic-workbench .col-first,.diagnostic-workbench .col-added,.diagnostic-workbench .col-completed{width:150px}
.diagnostic-workbench .col-granularity{width:112px}
.diagnostic-workbench .col-source{width:220px}
.diagnostic-workbench .col-torrent{width:430px}
.diagnostic-workbench .col-tracker{width:240px}
.diagnostic-workbench .col-snapshots,.diagnostic-workbench .col-progress{width:105px}
.diagnostic-workbench .col-downloaded,.diagnostic-workbench .col-uploaded,.diagnostic-workbench .col-dl,.diagnostic-workbench .col-ul,.diagnostic-workbench .col-dlspeed,.diagnostic-workbench .col-ulspeed,.diagnostic-workbench .col-initial-dl,.diagnostic-workbench .col-recover,.diagnostic-workbench .col-size{width:130px}
.diagnostic-workbench .col-state{width:130px}
.diagnostic-workbench .col-anomaly{width:280px}
.diagnostic-workbench .col-reason{width:340px}
.diagnostic-wide-torrent .col-torrent{width:620px!important}
.diagnostic-workbench .diagnostic-name,.diagnostic-workbench .diagnostic-tracker,.diagnostic-workbench .diagnostic-anomaly,.diagnostic-workbench .diagnostic-reason,.diagnostic-workbench .diagnostic-wrap-col{white-space:normal!important;overflow:visible;text-overflow:clip;overflow-wrap:anywhere;word-break:break-word;line-height:1.28}
@media(max-width:900px){.diagnostic-workbench{min-width:1680px}.diagnostic-workbench .col-torrent{width:330px}.diagnostic-workbench .col-tracker{width:210px}.diagnostic-wide-torrent .col-torrent{width:480px!important}}

/* v80 - Diagnostic tablette et liste progressive */
.chart-drilldown-help{margin:7px 0 0;font-size:12px}
.ratio-dot{background:#f59e0b}.ratio-line-layer{position:absolute;left:0;right:6px;top:8px;width:calc(100% - 6px);height:154px;overflow:visible;pointer-events:none;z-index:3}.ratio-line-layer path{fill:none;stroke:#f59e0b;stroke-width:4;vector-effect:non-scaling-stroke}.ratio-line-layer circle{fill:#fbbf24;stroke:#78350f;stroke-width:2;vector-effect:non-scaling-stroke}.barcol{z-index:2}.ratio-axis{position:absolute;right:-2px;top:8px;height:154px;display:flex;flex-direction:column;justify-content:space-between;color:#fbbf24;font-size:9px;z-index:4}
.scale-note{margin-left:10px;padding-left:10px;border-left:1px solid #475569;color:#94a3b8;font-size:10px}
.diagnostic-display-state{margin:6px 0 8px}
.diagnostic-display-actions{display:flex;gap:8px;align-items:center;justify-content:flex-end;flex-wrap:wrap;margin:8px 0 0}
.diagnostic-result-search{width:min(460px,52vw)}
.diagnostic-workbench th{white-space:normal;line-height:1.16}
.diagnostic-workbench .col-detail{width:52px}
.diagnostic-workbench .icon-button{min-width:28px;min-height:28px;padding:3px 5px}
.diagnostic-workbench .col-downloaded,.diagnostic-workbench .col-uploaded,.diagnostic-workbench .col-dl,.diagnostic-workbench .col-ul,.diagnostic-workbench .col-dlspeed,.diagnostic-workbench .col-ulspeed,.diagnostic-workbench .col-initial-dl,.diagnostic-workbench .col-recover,.diagnostic-workbench .col-size{width:116px}
.diagnostic-workbench .col-snapshots,.diagnostic-workbench .col-progress{width:92px}
.diagnostic-workbench .col-torrent{width:470px}
.diagnostic-workbench .col-tracker{width:270px}
@media(max-width:1100px){.diagnostic-workbench{min-width:1760px}.diagnostic-workbench .col-torrent{width:430px}.diagnostic-workbench .col-tracker{width:260px}.diagnostic-result-search{width:100%}.diagnostic-actions{align-items:stretch}.diagnostic-actions .button{margin-left:auto}}

/* v81 - Diagnostic: colonnes plus fiables sur tablette */
.column-resizer{touch-action:none;width:14px;right:-7px}
.column-resizer:after{right:6px}
.diagnostic-workbench{min-width:2050px}
.diagnostic-workbench .col-torrent{width:540px}
.diagnostic-workbench .col-tracker{width:320px}
.diagnostic-wide-torrent .col-torrent{width:720px!important}
.diagnostic-workbench .col-detail{width:48px}
.diagnostic-workbench .col-downloaded,.diagnostic-workbench .col-uploaded,.diagnostic-workbench .col-dl,.diagnostic-workbench .col-ul,.diagnostic-workbench .col-dlspeed,.diagnostic-workbench .col-ulspeed,.diagnostic-workbench .col-initial-dl,.diagnostic-workbench .col-recover,.diagnostic-workbench .col-size{width:108px}
@media(max-width:1100px){.diagnostic-workbench{min-width:2140px}.diagnostic-workbench .col-torrent{width:560px}.diagnostic-workbench .col-tracker{width:330px}.diagnostic-wide-torrent .col-torrent{width:760px!important}}

/* v82 - Diagnostic volumes et signaux */
.diagnostic-color-help{display:flex;align-items:center;gap:7px;margin:4px 0 8px}
.diagnostic-warning-swatch{width:13px;height:13px;border-radius:999px;border:1px solid rgba(245,158,11,.65);background:rgba(245,158,11,.18);box-shadow:0 0 0 2px rgba(245,158,11,.08)}
.diagnostic-workbench .col-activity{width:118px}

/* v83 - Diagnostic: aucun texte ne doit deborder sur la colonne voisine */
.diagnostic-workbench .diagnostic-name,
.diagnostic-workbench .diagnostic-tracker,
.diagnostic-workbench .diagnostic-anomaly,
.diagnostic-workbench .diagnostic-reason,
.diagnostic-workbench .diagnostic-wrap-col{
  display:table-cell;
  overflow:hidden!important;
  text-overflow:clip;
  white-space:normal!important;
  overflow-wrap:anywhere;
  word-break:break-word;
}
.diagnostic-workbench td,
.diagnostic-workbench th{
  min-width:0;
}

/* v84 - Diagnostic: largeur pilotée par colgroup */
.diagnostic-workbench col.col-detail{width:48px}
.diagnostic-workbench col.col-torrent{width:560px}
.diagnostic-workbench col.col-tracker{width:340px}
.diagnostic-workbench col.col-prev,
.diagnostic-workbench col.col-first,
.diagnostic-workbench col.col-added,
.diagnostic-workbench col.col-completed,
.diagnostic-workbench col.col-period,
.diagnostic-workbench col.col-period-end{width:150px}
.diagnostic-workbench col.col-granularity{width:112px}
.diagnostic-workbench col.col-source{width:220px}
.diagnostic-workbench col.col-snapshots,
.diagnostic-workbench col.col-progress{width:92px}
.diagnostic-workbench col.col-downloaded,
.diagnostic-workbench col.col-uploaded,
.diagnostic-workbench col.col-dl,
.diagnostic-workbench col.col-ul,
.diagnostic-workbench col.col-dlspeed,
.diagnostic-workbench col.col-ulspeed,
.diagnostic-workbench col.col-initial-dl,
.diagnostic-workbench col.col-recover,
.diagnostic-workbench col.col-size{width:108px}
.diagnostic-workbench col.col-activity{width:118px}
.diagnostic-workbench col.col-state{width:130px}
.diagnostic-workbench col.col-anomaly{width:280px}
.diagnostic-workbench col.col-reason{width:340px}
.diagnostic-wide-torrent col.col-torrent{width:760px!important}

/* v96 - denser synthesis chart, shared baseline and taller plot */
.chart-panel{padding-bottom:9px}
.chart-header{
  align-items:center;
  gap:8px;
  margin-bottom:2px;
}
.chart-header h2{margin:0}
.chart-help-button{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:18px;
  height:18px;
  margin-left:5px;
  border:1px solid rgba(96,165,250,.45);
  border-radius:999px;
  background:rgba(15,23,42,.65);
  color:#bfdbfe;
  font-size:12px;
  font-weight:800;
  line-height:1;
  vertical-align:middle;
  cursor:help;
}
.chart-help-button:hover,.chart-help-button:focus-visible{
  border-color:#93c5fd;
  color:#fff;
  outline:none;
}
.chart-tools{
  align-items:center;
  gap:10px;
}
.legend{margin-top:0}
.granularity-control label{
  flex-direction:row;
  align-items:center;
  gap:7px;
}
.granularity-control select{padding:7px 28px 7px 9px}
.chart-meta{display:none}
.chart-drilldown-help{display:none}
.share-card{padding-bottom:7px}
.share-main-flat{padding:6px 0}
.share-main-flat>div{padding:8px 10px}
.share-grid-flat{gap:5px 8px}

/* v160 - page statistiques et heatmap moderne */
.statistics-hero .hero-summary-line,.heatmap-head,.heatmap-detail-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.statistics-hero .quick-filter-row{align-items:center}.statistics-metric{margin-top:10px}.statistics-filters{grid-template-columns:repeat(auto-fit,minmax(145px,1fr))}.statistics-filters .torrent-filter{grid-column:span 2}.statistics-active-filters{margin-top:2px}.statistics-overview{padding:8px 12px}.statistics-overview .compact-kv{margin:0;grid-template-columns:repeat(4,minmax(150px,1fr))}.statistics-overview .compact-kv dd{font-size:15px;font-weight:700}.heatmap-panel{overflow:hidden}.heatmap-head p{margin:0}.heatmap-legend{display:flex;align-items:center;gap:4px;color:var(--muted);font-size:11px;white-space:nowrap}.heatmap-legend i{display:block;width:18px;height:18px;border-radius:4px;background:rgba(52,211,153,var(--heat-alpha));border:1px solid rgba(148,163,184,.2)}.heatmap-panel.download .heatmap-legend i{background:rgba(96,165,250,var(--heat-alpha))}.heatmap-scroll{overflow-x:auto;padding:8px 0 4px}.activity-heatmap{display:grid;grid-template-columns:82px repeat(24,minmax(25px,1fr));gap:4px;min-width:790px;align-items:center}.heatmap-corner,.heatmap-hour,.heatmap-day{color:var(--muted);font-size:10px}.heatmap-hour{text-align:center}.heatmap-day{text-align:right;padding-right:7px;font-size:11px}.heatmap-cell{height:29px;border-radius:5px;background:rgba(52,211,153,var(--heat-alpha));border:1px solid rgba(148,163,184,.18);transition:transform .1s ease,border-color .1s ease,filter .1s ease}.heatmap-panel.download .heatmap-cell{background:rgba(96,165,250,var(--heat-alpha))}.heatmap-cell:hover{transform:scale(1.09);border-color:#e2e8f0;filter:brightness(1.18);z-index:2}.heatmap-cell.active{outline:2px solid #f59e0b;outline-offset:1px}.heatmap-cell.empty{background:rgba(15,23,42,.5)}.heatmap-detail-head{align-items:center}.heatmap-detail-head .compact-kv{min-width:min(100%,520px);margin:0}.heatmap-detail .subtle{margin-top:4px}.heatmap-detail td:first-child{white-space:normal;overflow-wrap:anywhere}.heatmap-detail table a{color:#bfdbfe;text-decoration:none}.heatmap-detail table a:hover{text-decoration:underline}
@media(max-width:1100px){.statistics-filters{grid-template-columns:repeat(3,minmax(180px,1fr))}.statistics-overview .compact-kv{grid-template-columns:1fr 1fr}.statistics-hero .hero-summary-line,.heatmap-detail-head{flex-direction:column}.heatmap-detail-head .compact-kv{width:100%}}
@media(max-width:800px){.nav-tools{padding-left:0;border-left:0}.statistics-filters{grid-template-columns:1fr 1fr}.statistics-overview .compact-kv{grid-template-columns:1fr}.heatmap-head{flex-direction:column}.activity-heatmap{grid-template-columns:68px repeat(24,25px)}.heatmap-cell{height:26px}}

/* v94 - chart axis driven by the same ticks as grid lines */
.chart-frame{
  --chart-plot-top:14px;
  --chart-plot-height:190px;
  min-height:216px;
}
.chart-frame:before{display:none}
.chart-grid{
  position:absolute;
  left:72px;
  right:18px;
  top:var(--chart-plot-top);
  height:var(--chart-plot-height);
  pointer-events:none;
  z-index:0;
}
.chart-grid span{
  position:absolute;
  left:0;
  right:0;
  height:1px;
  background:rgba(148,163,184,.16);
  transform:translateY(-50%);
}
.chart-grid span:first-child{background:rgba(148,163,184,.22)}
.chart-grid span:last-child{background:rgba(148,163,184,.45)}
.y-axis{
  display:block;
  position:relative;
  height:var(--chart-plot-height);
  margin-top:var(--chart-plot-top);
  padding-top:0;
}
.y-axis span{
  position:absolute;
  right:8px;
  transform:translateY(-50%);
  white-space:nowrap;
}
.bars:after{
  display:none;
}
.bars{
  height:214px;
  padding-top:var(--chart-plot-top);
  padding-bottom:26px;
}
.barcol{
  height:var(--chart-plot-height);
}
.bars-pair{
  height:var(--chart-plot-height);
}
@media(max-width:800px){
  .chart-grid{left:56px;right:6px}
  .chart-header{align-items:flex-start}
  .chart-header h2{line-height:1.2}
  .chart-tools{width:100%;justify-content:space-between}
  .granularity-control label{flex-direction:column;align-items:flex-start}
}

/* v104 - visible breathing room below X labels without growing the card */
.chart-panel{
  padding-top:10px;
  padding-bottom:13px;
}
.chart-frame{
  min-height:220px;
}

/* v148 - profil 00 h → 23 h issu du cache horaire moderne */
.chart-view-switch{display:flex;align-items:center;justify-content:flex-start;gap:10px;margin:0 0 10px}
.hour-profile-panel{margin-top:0}
.hour-profile-panel .chart-header{align-items:flex-start;margin-bottom:4px}
.hour-profile-panel .chart-header p{margin:4px 0 0}
.hour-profile-bars{gap:3px}
.hour-profile-note{margin:2px 0 0 72px;font-size:12px}
@media(max-width:800px){
  .hour-profile-bars{gap:1px}
  .hour-profile-bars .barcol small{font-size:9px;transform:rotate(-45deg);transform-origin:top center}
  .hour-profile-note{margin-left:56px}
}

/* v124 - notification de traitement lisible sur mobile */
@media(max-width:800px){
  .work-notice{margin:8px 8px 0;align-items:flex-start;flex-direction:column}
  .work-notice a{white-space:normal}
}

/* v165 - gestion et choix du client, indépendants de la grille des filtres */
.filters.client-selector{margin:10px 16px;grid-template-columns:minmax(200px,400px) auto;justify-content:start}
.client-panel{margin:12px 0;overflow-x:auto}
.client-panel p{line-height:1.6;color:var(--muted)}
.client-panel td{white-space:normal;overflow-wrap:anywhere}
.client-notice{padding:12px 16px;margin:12px 0;border:1px solid var(--line);border-radius:10px;background:var(--card)}
.filters.client-form{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.client-form input[type=checkbox]{width:auto;align-self:flex-start}
@media(max-width:800px){
  .filters.client-selector,.filters.client-form{grid-template-columns:1fr}
}
