:root{
  --bg:#0e1117;--panel:#161b22;--panel2:#1c2330;--bd:#272e3b;
  --tx:#d6dee8;--mut:#8794a6;--ac:#1AA3B0;--ac2:#8A23C0;
  --up:#3fb950;--down:#f85149;--warn:#d29922;
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--tx);
  font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,system-ui,sans-serif;font-size:14px}
a{color:inherit;text-decoration:none}

/* topbar */
.topbar{display:flex;align-items:center;gap:1.4rem;background:var(--panel);
  border-bottom:1px solid var(--bd);padding:.6rem 1.1rem;position:sticky;top:0;z-index:5}
.brand{font-weight:700;color:#fff;letter-spacing:.02em;white-space:nowrap}
.brand::first-letter{color:var(--ac)}
.tabs{display:flex;gap:.2rem;flex-wrap:wrap;flex:1}
.tab{padding:.45rem .8rem;border-radius:8px;color:var(--mut);font-weight:600;font-size:.86rem}
.tab:hover{color:var(--tx);background:var(--panel2)}
.tab.on{color:#fff;background:var(--ac)}
.logout{color:var(--mut);font-size:.84rem}
.logout:hover{color:var(--down)}

.wrap{max-width:1180px;margin:0 auto;padding:1.4rem 1.1rem}
.head{display:flex;align-items:baseline;gap:.8rem;flex-wrap:wrap;margin-bottom:1.1rem}
.head h1{font-size:1.4rem;margin:0;color:#fff}
.muted{color:var(--mut);font-size:.85rem}

/* cards */
.cards{display:grid;grid-template-columns:repeat(5,1fr);gap:.8rem;margin-bottom:1.3rem}
.card{background:var(--panel);border:1px solid var(--bd);border-radius:12px;padding:1rem}
.card span{color:var(--mut);font-size:.78rem;text-transform:uppercase;letter-spacing:.04em}
.card b{display:block;font-size:1.6rem;margin-top:.3rem;color:#fff}
.card.alert b{color:var(--warn)}

/* table */
table{width:100%;border-collapse:collapse;background:var(--panel);
  border:1px solid var(--bd);border-radius:12px;overflow:hidden}
th,td{text-align:left;padding:.6rem .8rem;border-bottom:1px solid var(--bd);font-size:.85rem;vertical-align:top}
thead th{background:var(--panel2);color:var(--mut);text-transform:uppercase;font-size:.74rem;letter-spacing:.04em}
tbody tr:hover{background:var(--panel2)}
tbody tr:last-child td{border-bottom:0}
.up{color:var(--up);font-weight:600}
.down{color:var(--down);font-weight:600}
.warn{color:var(--warn);font-weight:600}
.trunc{max-width:340px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.urlcell{max-width:560px;word-break:break-all}
.urlcell a{color:var(--ac)}
.urlcell a:hover{text-decoration:underline}
.issues{color:var(--warn);font-size:.8rem}

/* bouton télécharger CSV */
.dl{margin-left:auto;background:var(--panel2);border:1px solid var(--bd);color:var(--tx);
  padding:.42rem .8rem;border-radius:8px;font-size:.8rem;font-weight:600;white-space:nowrap}
.dl:hover{border-color:var(--ac);color:var(--ac)}

/* toolbar (picker + actions) */
.toolbar{display:flex;align-items:center;gap:.8rem;flex-wrap:wrap;margin-bottom:1rem}
.toolbar .picker{margin-bottom:0}
.btn-recrawl{background:var(--ac);color:#fff;border:0;border-radius:8px;padding:.55rem .9rem;
  font-size:.85rem;font-weight:700;cursor:pointer;white-space:nowrap}
.btn-recrawl:hover{background:#1591a0}

/* picker / chips */
.picker{margin-bottom:1rem}
.picker select{background:var(--panel);color:var(--tx);border:1px solid var(--bd);
  border-radius:8px;padding:.5rem .7rem;font-size:.9rem;min-width:260px}
.chips{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:1rem}
.chip{background:var(--panel);border:1px solid var(--bd);border-radius:999px;padding:.3rem .8rem;font-size:.8rem;color:var(--mut)}
.chip.bad{color:var(--down);border-color:var(--down)}
.chip.warn{color:var(--warn);border-color:var(--warn)}

.badge{padding:.15rem .55rem;border-radius:999px;font-size:.72rem;font-weight:700;text-transform:uppercase}
.badge.danger{background:rgba(248,81,73,.15);color:var(--down)}
.badge.warning{background:rgba(210,153,34,.15);color:var(--warn)}
.badge.info{background:rgba(26,163,176,.15);color:var(--ac)}

.empty{background:var(--panel);border:1px dashed var(--bd);border-radius:12px;
  padding:2rem;text-align:center;color:var(--mut)}
.empty code{color:var(--ac)}
.flash{background:rgba(248,81,73,.12);border:1px solid var(--down);color:#ffb4ae;
  padding:.6rem .9rem;border-radius:8px;margin-bottom:1rem}

/* login */
.login-body{display:grid;place-items:center;min-height:100vh}
.login-card{background:var(--panel);border:1px solid var(--bd);border-radius:16px;
  padding:2rem;width:320px;display:flex;flex-direction:column;gap:.4rem}
.login-card .brand{font-size:1.2rem;margin-bottom:1rem;text-align:center}
.login-card label{color:var(--mut);font-size:.8rem;margin-top:.6rem}
.login-card input{background:var(--bg);border:1px solid var(--bd);border-radius:8px;
  padding:.6rem;color:var(--tx);font-size:.95rem}
.login-card button{margin-top:1.2rem;background:var(--ac);color:#fff;border:0;
  border-radius:8px;padding:.7rem;font-weight:700;cursor:pointer}
.login-card button:hover{background:#1591a0}

@media(max-width:760px){.cards{grid-template-columns:repeat(2,1fr)}.trunc{max-width:160px}}
