/* Schema Praetor — styles propres à l'outil. La charte commune est dans charte.css.
   Accueil, écran de crawl et fenêtres : mêmes styles que Header Hunter (même structure). */

.tt-brand-tag { background: var(--or); color: var(--violet-nuit); border-color: var(--or); font-family: var(--font-mono); letter-spacing: 0; }
body.bg-active .results-only { display: none !important; }
.bar-group { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; justify-content: flex-end; }
.hidden { display: none !important; }

/* Vues : une seule visible à la fois (le JS change display) */
#welcome { display: flex; flex-direction: column; }
#crawl-progress, #loading { display: none; }
#crawl-progress > .tt-hero-in, #loading > .tt-hero-in { width: 100%; min-height: calc(100vh - 59px); }
#results { display: none; padding: 20px 24px 40px; max-width: 1600px; margin: 0 auto; }

/* ── Accueil : formulaire dans le bandeau ─────────────────────────────── */
.hh-form { width: 100%; max-width: 560px; display: flex; flex-direction: column; gap: 12px; margin-top: 6px; border-radius: var(--r); transition: outline-color .15s; outline: 2px dashed transparent; outline-offset: 8px; }
.hh-form.drag { outline-color: var(--lavande); }
.hh-crawl-row { display: flex; gap: 10px; }
.hh-url { flex: 1; min-width: 0; font-size: 15px; padding: 12px 14px; background: #fff; color: var(--violet-nuit); border-color: #fff; }
.hh-url::placeholder { color: #8a7a98; }
.hh-url:focus { border-color: var(--lavande); }
.hh-staging { display: inline-flex; align-items: center; gap: 8px; font-size: 14px; color: rgba(255,255,255,.85); cursor: pointer; user-select: none; }
.hh-staging input { accent-color: var(--lavande); width: 15px; height: 15px; }
.hh-staging em { font-style: normal; color: rgba(255,255,255,.6); }
.hh-alt { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.hh-or { font-size: 14px; color: rgba(255,255,255,.6); margin-right: 4px; }
.hh-info {
  width: 32px; height: 32px; border-radius: 50%; cursor: pointer; flex: none;
  background: rgba(255,255,255,.08); border: 1.5px solid rgba(255,255,255,.45); color: #fff;
  font-family: var(--font-display); font-weight: 700; font-size: 14px;
}
.hh-info:hover { background: var(--violet); border-color: var(--violet); }
#file-input, #json-input { display: none; }
@media (max-width: 560px) { .hh-crawl-row { flex-direction: column; } }

.hh-checks { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; }
.hh-check { padding: 16px 18px; }
.hh-check b { font-family: var(--font-display); font-size: 16px; display: block; margin-bottom: 4px; }
.hh-check p { font-size: 14px; color: var(--dim); }
@media (max-width: 900px) { .hh-checks { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) { .hh-checks { grid-template-columns: 1fr; } }

/* ── Crawl en cours / analyse ─────────────────────────────────────────── */
.hh-progress { width: 360px; max-width: 100%; padding: 30px 28px 26px; text-align: center; color: var(--text); }
.hh-progress h2 { font-size: 22px; margin: 6px 0 4px; }
.hh-progress .tt-btn.danger { background: var(--red); color: #fff; border-color: var(--red); }
.hh-progress .tt-btn.danger:hover { background: transparent; color: var(--red); border-color: var(--red); }
.hh-spinner { width: 36px; height: 36px; margin: 0 auto 6px; border: 3px solid var(--bg3); border-top-color: var(--accent); border-radius: 50%; animation: spin .8s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }
.crawl-domain { color: var(--dim); margin-bottom: 18px; word-break: break-all; }
.crawl-n { font-family: var(--font-display); font-size: 48px; font-weight: 800; line-height: 1; color: var(--accent); font-variant-numeric: tabular-nums; }
.crawl-n-label { font-size: 12px; text-transform: uppercase; letter-spacing: .08em; color: var(--dim); margin: 6px 0 14px; }
.crawl-sub { font-size: 13px; color: var(--dim); margin-bottom: 10px; min-height: 1em; }
.crawl-sub b { color: var(--text); }
.crawl-bar-wrap { display: none; height: 6px; background: var(--bg3); border-radius: 3px; overflow: hidden; margin-bottom: 6px; }
.crawl-bar { height: 100%; width: 0; background: var(--accent); border-radius: 3px; transition: width .4s ease; }
.crawl-est { display: none; font-size: 12px; color: var(--dim); margin-bottom: 14px; font-variant-numeric: tabular-nums; }
.crawl-banner { display: none; font-size: 13px; line-height: 1.5; text-align: left; color: var(--warn-fg); background: var(--warn-bg); border-radius: 8px; padding: 10px 12px; margin-bottom: 14px; }
/* Carte de crawl à taille FIXE dès le départ : les URL qui défilent, la barre et le
   bandeau « gros site » prennent la place réservée au lieu d'agrandir la carte. */
#crawl-progress .hh-progress { display: flex; flex-direction: column; height: 600px; max-height: calc(100vh - 100px); }
#crawl-progress .hh-progress .tt-btn { margin-top: auto; align-self: center; flex: none; }
#recent-urls { text-align: left; flex: 1 1 118px; min-height: 0; height: 118px; margin-bottom: 16px; overflow: hidden; }
.recent-url { font-family: var(--font-mono); font-size: 11.5px; color: var(--dim); opacity: .6; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; line-height: 1.7; }
.recent-url-latest { opacity: 1; color: var(--text); font-weight: 600; }

/* ── Fenêtres ─────────────────────────────────────────────────────────── */
#confirm-modal:not(.open) { display: none; }
#confirm-modal .tt-modal-actions { flex-direction: column; align-items: stretch; }
.modal-text { color: var(--text); font-size: 15px; }
.modal-text p + p, .modal-text ul + p { margin-top: 10px; }
.modal-text ul { margin: 10px 0 0 20px; }
.modal-text li { margin-bottom: 4px; }
.modal-text b { color: var(--accent); }
.map-field { margin-bottom: 14px; }
.map-req { font-weight: 600; text-transform: none; letter-spacing: 0; color: var(--red); margin-left: 4px; }

/* ── Résultats : avertissements du crawl ──────────────────────────────── */
#crawl-errors { display: none; background: var(--warn-bg); color: var(--warn-fg); border-radius: var(--r); padding: 12px 16px; margin-bottom: 16px; font-size: 14px; line-height: 1.5; }
#crawl-errors a { color: inherit; }
#crawl-errors ul { margin: 6px 0 4px; padding-left: 18px; max-height: 130px; overflow-y: auto; }
#crawl-errors li { margin-bottom: 2px; word-break: break-all; }
#crawl-errors .notice-row + .notice-row { margin-top: 8px; }
.notice-toggle { margin-left: 10px; background: none; border: 1px solid currentColor; color: inherit; border-radius: 6px; padding: 1px 10px; cursor: pointer; font: inherit; font-size: 13px; }


/* Choix de la langue (lignes non reconnues, attribution en masse) */
.lang-picker-wrap { position: relative; display: block; }
.lang-picker-btn {
  font: inherit; font-size: 12px; padding: 2px 6px; width: 100%; cursor: pointer; white-space: nowrap;
  display: inline-flex; align-items: center; justify-content: center; gap: 4px;
  background: var(--bg2); border: 1px solid var(--border); border-radius: 6px; color: var(--text);
}
.lang-picker-btn:hover, .lang-picker-btn.open { border-color: var(--accent); }
.lang-picker-menu {
  position: absolute; top: calc(100% + 4px); left: 0; z-index: 500; display: none;
  background: var(--bg2); border: 1px solid var(--border); border-radius: 8px; box-shadow: 0 8px 24px var(--shadow);
  min-width: 200px; max-height: 240px; overflow-y: auto;
}
.lang-picker-menu.open { display: block; }
.lang-picker-opt { display: flex; align-items: center; gap: 8px; padding: 6px 10px; font-size: 13px; cursor: pointer; color: var(--text); white-space: nowrap; }
.lang-picker-opt:hover { background: var(--bg3); }
.lang-picker-opt.kb-focus { background: var(--bg3); box-shadow: inset 3px 0 0 var(--accent); font-weight: 600; }
.lang-picker-opt .fi { width: 18px; height: 13px; border-radius: 1px; flex: none; }
.bulk-picker-btn { font-size: 13px; padding: 5px 10px; min-width: 140px; }
#bulk-lang-bar, #bulk-filter-bar { display: none; align-items: center; gap: 8px; flex-wrap: wrap; }
.bulk-lang-label { font-size: 13px; color: var(--dim); }
.bulk-lang-apply { font: inherit; font-size: 13px; font-weight: 600; padding: 5px 14px; border-radius: 8px; cursor: pointer; background: var(--cta-bg); color: var(--cta-fg); border: 1.5px solid var(--cta-bg); }
.bulk-lang-apply:hover { background: var(--cta-hover-bg); color: var(--cta-hover-fg); border-color: var(--violet); }


/* ── Couleurs des trois sources d'alerte ──────────────────────────────── */
:root {
  --c-schema: var(--red);
  --c-google: var(--orange);
  --c-reco:   #7e22ce;
  /* Anciens noms encore utilisés par app.js */
  --r-red: var(--red); --r-green: var(--green); --r-muted: var(--dim); --r-text: var(--text);
}
:root[data-theme="dark"] { --c-reco: #d6a4ff; }
.src-dot { display: inline-block; width: 10px; height: 10px; border-radius: 3px; flex: none; margin-right: 8px; vertical-align: 1px; }
.src-schema { background: var(--c-schema); } .src-google { background: var(--c-google); } .src-reco { background: var(--c-reco); }
.c-schema { color: var(--c-schema); } .c-google { color: var(--c-google); } .c-reco { color: var(--c-reco); }
.hh-check .src-dot { margin-right: 6px; }
.hh-check b { display: inline; }
.hh-check p { margin-top: 4px; }

/* ── Fenêtres propres à Schema Praetor ────────────────────────────────── */
.tt-modal.wide { max-width: 780px; }
.alm-row { display: flex; align-items: flex-start; gap: 4px; margin-bottom: 12px; line-height: 1.5; }
.alm-row .src-dot { margin-top: 6px; }
.site-sec { font-family: var(--font-display); font-weight: 700; font-size: 13px; letter-spacing: .06em; text-transform: uppercase; color: var(--dim); margin: 18px 0 10px; }
.site-sec:first-child { margin-top: 0; }
.site-finding { font-size: 14px; line-height: 1.5; padding: 8px 12px; border-radius: 8px; margin-bottom: 6px; border-left: 3px solid var(--orange); background: var(--warn-bg); color: var(--text); }
.site-finding.err { border-left-color: var(--red); background: var(--err-bg); }
.site-biz { border: 1px solid var(--border); border-radius: var(--r); padding: 12px 14px; margin-bottom: 10px; font-size: 14px; color: var(--dim); }
.site-biz-title { font-family: var(--font-display); color: var(--text); font-weight: 700; margin-bottom: 2px; }
.site-biz-id { font-family: var(--font-mono); font-size: 12px; margin-bottom: 8px; word-break: break-all; }
.site-biz details { margin-top: 4px; }
.site-biz summary { cursor: pointer; color: var(--text); }
.site-biz ul { margin: 4px 0 0; padding-left: 18px; max-height: 160px; overflow-y: auto; }
.site-biz li { word-break: break-all; line-height: 1.5; }
.site-biz a { color: var(--link); }
.site-empty { font-size: 14px; color: var(--dim); }
.site-badge { display: none; min-width: 18px; height: 18px; padding: 0 5px; margin-left: 4px; border-radius: 9px; font-size: 11px; line-height: 18px; text-align: center; background: var(--bg3); color: var(--text); }
.site-badge.err { background: var(--red); color: #fff; }
.site-badge.warn { background: var(--orange); color: #fff; }

/* ── Statistiques ─────────────────────────────────────────────────────── */
#stats-bar { display: flex; flex-direction: column; gap: 14px; margin-bottom: 16px; }
.stats-groups { display: flex; flex-wrap: wrap; gap: 16px; align-items: stretch; justify-content: center; }
.stat-group { display: flex; flex-direction: column; gap: 6px; }
.group-head { display: flex; align-items: center; justify-content: center; gap: 7px; font-size: 12px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--dim); }
.group-head .dot { width: 8px; height: 8px; border-radius: 2px; background: var(--accent); }
.group-head.schema .dot { background: var(--c-schema); }
.group-head.rich .dot { background: var(--c-google); }
.group-head.tldr .dot { background: var(--c-reco); }
.group-cards { display: flex; gap: 10px; }
.stat-card {
  font: inherit; color: var(--text); cursor: pointer; user-select: none; text-align: center; align-items: center;
  background: var(--bg2); border: 1px solid var(--border); border-left: 4px solid var(--border); border-radius: var(--r);
  padding: 14px 20px; min-width: 132px; display: flex; flex-direction: column; gap: 4px;
  transition: opacity .15s, background .15s, box-shadow .15s;
}
.stat-card:hover { background: var(--bg3); }
.stat-card[data-filter="all"] { border-left-color: var(--accent); }
.stat-card.good { border-left-color: var(--green); } .stat-card.good .stat-val { color: var(--green); }
.stat-card.red { border-left-color: var(--red); }
.stat-card.warn { border-left-color: var(--orange); }
.stat-card.reco { border-left-color: var(--c-reco); } .stat-card.reco .stat-val { color: var(--c-reco); }
.stat-card.zero-good { border-left-color: var(--green); }
.stat-val { font-family: var(--font-display); font-size: 36px; font-weight: 700; line-height: 1.1; font-variant-numeric: tabular-nums; }
.stat-label { font-size: 12.5px; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; color: var(--dim); }
.stat-card.active-filter { box-shadow: 0 0 0 2px var(--accent) inset; }
#stats-bar.has-filter .stat-card:not(.active-filter),
#stats-bar.has-filter .fpill:not(.active-filter) { opacity: .45; }

/* Format et Validation côte à côte, centrés */
.integrity-rows { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px 28px; }
.integrity-strip { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; justify-content: center; }
.istrip-label { margin-right: 2px; font-size: 12px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--dim); }
.fpill { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; padding: 4px 12px; border: 1px solid var(--border); border-radius: 20px; background: var(--bg2); color: var(--dim); cursor: pointer; user-select: none; transition: border-color .15s, opacity .15s; }
.fpill:hover { border-color: var(--accent); }
.fpill b { font-family: var(--font-display); color: var(--text); font-variant-numeric: tabular-nums; }
.fpill .fdot { width: 7px; height: 7px; border-radius: 50%; background: var(--dim); }
.fpill.zero { opacity: .5; }
.fpill.zero:hover { opacity: 1; }
.fpill.active-filter { border-color: var(--accent); box-shadow: 0 0 0 1px var(--accent) inset; color: var(--text); }

/* ── Filtres ──────────────────────────────────────────────────────────── */
/* Cadre des filtres aussi large que le tableau, contenu centré */
#filter-zone { display: flex; flex-direction: column; gap: 10px; align-items: center; padding: 14px 16px; margin: 0 0 14px; width: 100%; }
#lang-assign-line { display: flex; align-items: center; justify-content: center; gap: 8px; flex-wrap: wrap; }
#lang-assign-line:not(:has(> :not(:empty))) { display: none; }
#lang-tabs { display: none; flex-wrap: wrap; gap: 6px; }
.lang-tab { display: inline-flex; align-items: center; gap: 6px; padding: 5px 12px; border: 1px solid var(--border); border-radius: 20px; background: var(--bg2); color: var(--text); font: inherit; font-size: 13px; cursor: pointer; white-space: nowrap; }
.lang-tab:hover { border-color: var(--accent); }
.lang-tab.active { background: var(--accent); border-color: var(--accent); color: var(--bg2); }
.lang-tab .fi { width: 18px; height: 13px; border-radius: 2px; }
.single-lang-current { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; font-weight: 600; padding: 4px 12px; border: 1px solid var(--border); border-radius: 20px; background: var(--bg3); white-space: nowrap; }
.single-lang-current .fi { width: 18px; height: 13px; border-radius: 2px; }
.single-lang-current.single-lang-none { color: var(--dim); font-weight: 500; }
.single-lang-count { color: var(--dim); font-weight: 500; }
.single-lang-sep { opacity: .7; }
#hide-line { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; justify-content: center; }
.hide-label { font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: var(--dim); margin-right: 4px; }
.hide-btn { font: inherit; background: var(--bg2); border: 1px solid var(--border); color: var(--dim); padding: 4px 10px; border-radius: 20px; cursor: pointer; display: inline-flex; align-items: baseline; gap: 5px; white-space: nowrap; }
.hide-btn-count { font-weight: 700; font-size: 13px; font-variant-numeric: tabular-nums; }
.hide-btn-name { font-size: 12px; }
.hide-btn.has-count { color: var(--text); }
.hide-btn:not(.has-count) { opacity: .6; }
.hide-btn:hover { border-color: var(--accent); }
.hide-btn.active { background: var(--accent); border-color: var(--accent); color: var(--bg2); opacity: 1; }
#schema-filters { display: none; flex-wrap: wrap; gap: 6px; justify-content: center; }
.schema-filter-btn { font: inherit; font-size: 12.5px; font-weight: 600; padding: 3px 11px; border-radius: 20px; cursor: pointer; white-space: nowrap; border: 1px solid transparent; }
.schema-filter-btn:hover { border-color: currentColor; }
.schema-filter-btn.active { background: var(--accent) !important; color: var(--bg2) !important; border-color: var(--accent) !important; }

#toolbar { display: flex; align-items: center; gap: 8px; margin-bottom: 14px; flex-wrap: wrap; }
#filter-mode { width: auto; padding: 7px 10px; font-size: 13px; }
.search-wrap { position: relative; flex: 1; min-width: 160px; max-width: 340px; display: flex; align-items: center; }
#url-search { padding: 7px 30px 7px 12px; font-size: 13px; }
.search-clear { position: absolute; right: 8px; background: none; border: none; color: var(--dim); cursor: pointer; font-size: 13px; display: none; padding: 2px; }
.search-clear:hover { color: var(--text); }
.tt-btn.danger-ghost { background: transparent; color: var(--red); border-color: var(--border); }
.tt-btn.danger-ghost:hover:not(:disabled) { background: var(--red); color: #fff; border-color: var(--red); }

/* ── Tableau ──────────────────────────────────────────────────────────── */
#table-wrap { overflow: visible; }
table { width: 100%; border-collapse: collapse; font-size: 13px; table-layout: fixed; }
col.c-lang { width: 5%; } col.c-url { width: 15%; } col.c-schema { width: 11%; } col.c-data { width: 26%; } col.c-alert { width: 18%; } col.c-tools { width: 13%; } col.c-comment { width: 12%; }
thead th {
  position: sticky; top: 59px; z-index: 2; background: var(--bg3); color: var(--text);
  padding: 10px 12px; text-align: left; font-size: 11px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase;
  border-bottom: 1px solid var(--border);
}
thead th:first-child { text-align: center; border-top-left-radius: var(--r); }
thead th:last-child { border-top-right-radius: var(--r); }
.th-flex { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.th-info { width: 17px; height: 17px; margin-left: 4px; border-radius: 50%; border: 1px solid var(--dim); background: none; color: var(--dim); font: inherit; font-size: 11px; font-weight: 700; line-height: 1; cursor: pointer; vertical-align: middle; text-transform: none; }
.th-info:hover { border-color: var(--accent); color: var(--accent); }
tbody tr { border-bottom: 1px solid var(--border); }
tbody tr:last-child { border-bottom: none; }
tbody tr:hover { background: var(--bg3); }
tbody tr.alert-row { box-shadow: 3px 0 0 var(--red) inset; }
tbody tr.no-schema-row { box-shadow: 3px 0 0 var(--orange) inset; }
td { padding: 10px 12px; vertical-align: top; overflow: hidden; word-break: break-word; color: var(--text); }
td.lang-cell { text-align: center; padding: 10px 6px; overflow: visible; }
td.lang-cell .lang-picker-wrap { display: flex; justify-content: center; }
td.lang-cell .lang-picker-btn { width: auto; min-width: 28px; }
td.lang-cell .fi { width: 22px; height: 16px; border-radius: 2px; display: inline-block; }
td.url-cell a { color: var(--link); text-decoration: none; font-size: 12.5px; word-break: break-all; line-height: 1.55; display: block; }
td.url-cell a:hover { text-decoration: underline; }

.badge { display: inline-block; font-size: 11px; font-weight: 600; padding: 1px 7px; border-radius: 10px; margin: 4px 3px 0 0; white-space: nowrap; }
.badge-noindex, .badge-redirect { background: var(--warn-bg); color: var(--warn-fg); }
.badge-4xx, .badge-5xx, .badge-soft-404 { background: var(--err-bg); color: var(--err-fg); }
.badge-canonical { background: var(--info-bg); color: var(--info-fg); }
.badge-self-canonical, .badge-params { background: var(--mute-bg); color: var(--mute-fg); }

/* Types schema.org : une couleur stable par type */
td.schema-cell { line-height: 1.7; }
.schema-badge { display: inline-block; font-size: 12px; font-weight: 600; padding: 2px 9px; border-radius: 10px; margin: 2px 3px 2px 0; white-space: nowrap; }
.sc0 { background: #f3e8ff; color: #550073; } .sc1 { background: #dcfce7; color: #14532d; }
.sc2 { background: #e0e7ff; color: #312e81; } .sc3 { background: #ffedd5; color: #7c2d12; }
.sc4 { background: #fce7f3; color: #831843; } .sc5 { background: #fef9c3; color: #713f12; }
.sc6 { background: #e0f2fe; color: #0c4a6e; } .sc7 { background: #f1edf4; color: #4b3d57; }
:root[data-theme="dark"] .sc0 { background: rgba(228,184,244,.16); color: #f0d4fa; }
:root[data-theme="dark"] .sc1 { background: rgba(94,224,143,.14); color: #8af0b0; }
:root[data-theme="dark"] .sc2 { background: rgba(138,180,255,.15); color: #b3cdff; }
:root[data-theme="dark"] .sc3 { background: rgba(255,162,92,.15); color: #ffc28f; }
:root[data-theme="dark"] .sc4 { background: rgba(255,140,200,.15); color: #ffb8de; }
:root[data-theme="dark"] .sc5 { background: rgba(245,208,97,.15); color: #f5d061; }
:root[data-theme="dark"] .sc6 { background: rgba(120,200,255,.14); color: #a8dcff; }
:root[data-theme="dark"] .sc7 { background: rgba(255,255,255,.08); color: #d6c9e3; }

/* Données extraites */
td.data-cell { position: relative; padding-right: 34px; }
.data-pre { font-family: var(--font-mono); font-size: 11.5px; color: var(--text); white-space: pre-wrap; word-break: break-word; line-height: 1.6; background: none; border: none; margin: 0; padding: 0; }
tr.row-collapsed .data-pre { max-height: 16em; overflow: hidden; }
tr.row-expanded .data-pre { max-height: none; }
.badge-inline { font-family: var(--font-text); font-size: 10.5px; font-weight: 600; padding: 1px 6px; border-radius: 8px; vertical-align: middle; white-space: nowrap; line-height: 1.3; }
.badge-inline-warn { background: var(--err-bg); color: var(--err-fg); }
.badge-inline-orange { background: var(--warn-bg); color: var(--warn-fg); }
.badge-inline-info { background: var(--mute-bg); color: var(--mute-fg); }
.badge-inline-violet { background: var(--info-bg); color: var(--c-reco); }
.prop-missing { color: var(--dim); font-style: italic; }
.row-toggle {
  position: absolute; top: 8px; right: 8px; width: 20px; height: 20px; padding: 0; cursor: pointer;
  display: flex; align-items: center; justify-content: center; font-size: 10px;
  background: var(--bg2); border: 1px solid var(--border); border-radius: 5px; color: var(--dim);
}
.row-toggle:hover { border-color: var(--accent); color: var(--accent); }
.btn-toggle-all { font: inherit; font-size: 11px; font-weight: 600; text-transform: none; letter-spacing: 0; padding: 3px 8px; border-radius: 6px; cursor: pointer; background: var(--bg2); border: 1px solid var(--border); color: var(--text); white-space: nowrap; }
.btn-toggle-all:hover { border-color: var(--accent); }

/* Alertes, groupées par source */
td.alert-cell { font-size: 12.5px; line-height: 1.6; }
.alert-line { display: block; white-space: pre-line; color: var(--text); }
.alert-line a { color: var(--link); }
.alert-src { display: flex; align-items: center; gap: 6px; font-size: 11px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; margin: 10px 0 3px; }
.alert-src:first-child { margin-top: 0; }
.alert-src::before { content: ''; width: 8px; height: 8px; border-radius: 2px; background: currentColor; flex: none; }
.alert-nostruct { display: block; color: var(--orange); font-weight: 600; }
td.ok-cell { color: var(--green); font-size: 12.5px; font-weight: 600; }

/* Outils de test */
td.tools-cell { padding: 10px; }
.tool-badge { display: block; font-size: 12px; font-weight: 600; padding: 4px 9px; border-radius: 6px; margin-bottom: 6px; text-decoration: none; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: var(--accent); border: 1px solid var(--border); background: var(--bg2); }
.tool-badge:last-child { margin-bottom: 0; }
.tool-badge:hover { border-color: var(--accent); background: var(--bg3); }

/* Commentaires */
td.comment-cell { font-size: 12.5px; color: var(--text); line-height: 1.55; cursor: text; white-space: pre-wrap; outline: none; }
td.comment-cell:focus { box-shadow: inset 0 0 0 2px var(--accent); }
td.comment-cell:empty::before { content: 'Add a note…'; color: var(--dim); opacity: .7; pointer-events: none; }
.bulk-comment-label { display: inline-flex; align-items: center; gap: 5px; font-size: 11px; font-weight: 600; text-transform: none; letter-spacing: 0; color: var(--dim); cursor: pointer; user-select: none; }
#bulk-comment-check { accent-color: var(--violet); }
:root[data-theme="dark"] #bulk-comment-check { accent-color: var(--lavande); }
#bulk-comment-popup { position: fixed; z-index: 600; display: none; flex-direction: column; width: 380px; max-width: calc(100vw - 24px); top: 50%; left: 50%; transform: translate(-50%, -50%); box-shadow: 0 16px 48px var(--shadow); }
#bulk-popup-header { display: flex; align-items: center; justify-content: space-between; padding: 10px 14px; border-bottom: 1px solid var(--border); cursor: move; user-select: none; }
.bulk-popup-title { font-family: var(--font-display); font-weight: 700; }
.bulk-popup-close { background: none; border: none; color: var(--dim); font-size: 14px; cursor: pointer; padding: 2px 4px; }
.bulk-popup-close:hover { color: var(--text); }
#bulk-popup-body { display: flex; flex-direction: column; gap: 10px; padding: 14px; }
.bulk-row { display: flex; align-items: center; gap: 10px; }
.bulk-panel-hint { font-size: 13px; color: var(--dim); }

/* Aucun résultat */
#no-results { display: none; padding: 40px 24px; text-align: center; color: var(--dim); }
.nr-box { display: inline-block; text-align: left; min-width: 300px; }
.nr-title { font-family: var(--font-display); font-size: 20px; font-weight: 700; color: var(--text); text-align: center; margin-bottom: 16px; }
.nr-sub { font-size: 12px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; text-align: center; margin-bottom: 10px; }
.nr-list { list-style: none; display: flex; flex-direction: column; gap: 7px; }
.nr-list li { display: flex; align-items: center; gap: 10px; }
.nr-label { min-width: 90px; text-align: right; font-size: 13px; }
.nr-value { font-size: 13px; color: var(--text); background: var(--bg3); padding: 2px 12px; border-radius: 10px; }
.filter-remove { background: none; border: none; color: var(--dim); cursor: pointer; font-size: 14px; padding: 0 4px; }
.filter-remove:hover { color: var(--red); }

/* ── Mobile ───────────────────────────────────────────────────────────── */
@media (max-width: 700px) {
  body:not(.bg-active) .tt-bar-in { flex-wrap: wrap; row-gap: 8px; }
  body:not(.bg-active) .tt-bar-actions { width: 100%; margin-left: 0; justify-content: space-between; flex-wrap: nowrap; }
  .bar-group { gap: 6px; flex-wrap: wrap; justify-content: flex-start; }
  .bar-group .tt-btn.sm { padding: 7px 9px; font-size: 12px; }
  .bar-group .tt-btn svg { display: none; }
  thead th { top: 0; }
  #results { padding: 12px; }
  #table-wrap { overflow-x: auto; }
  table { min-width: 900px; }
}

/* Ligne « accès client » sous les limites du bandeau */
.tt-access { font-size: 13px; color: rgba(255,255,255,.7); margin-top: -6px; }
.tt-access a { color: #fff; font-weight: 600; }
.tt-access-on { color: var(--or); font-weight: 700; margin-right: 4px; }
.crawl-banner a, .modal-text a { color: inherit; font-weight: 700; }
