:root {
  --bg:#0a0a0a;
  --panel:#0d1b2a;
  --panel-alt:#111111;
  --panel-soft:#1a1a1a;
  --line:#333333;
  --txt:#d7d7d7;
  --muted:#8c8c8c;
  --accent:#ff9500;
  --accent-soft:#cd853f;
  --accent-warm:#ffb347;
  --ok:#00ff00;
  --focus:#ff9500;
  --danger:#ac7f89;
  --filing-date-col-width:100px;
  --submitted-col-width:98px;
  --lag-col-width:112px;
  --source-col-width:138px;
  --src-dd-rgb:0, 212, 255;
  --src-vad-rgb:255, 68, 255;
  --src-spde-rgb:85, 153, 255;
  --src-dd-text:#9beeff;
  --src-vad-text:#ffb6ff;
  --src-spde-text:#b9d4ff;
  --src-dd-border:rgba(var(--src-dd-rgb), 0.40);
  --src-vad-border:rgba(var(--src-vad-rgb), 0.40);
  --src-spde-border:rgba(var(--src-spde-rgb), 0.40);
  --src-dd-summary-border:rgba(var(--src-dd-rgb), 0.32);
  --src-vad-summary-border:rgba(var(--src-vad-rgb), 0.32);
  --src-spde-summary-border:rgba(var(--src-spde-rgb), 0.32);
}
* { box-sizing:border-box; }
html,body { margin:0; height:100%; background:var(--bg); color:var(--txt); }
body {
  font-family:"Roboto Mono", ui-monospace, "SFMono-Regular", Menlo, monospace;
  font-size:13.5px;
  overflow:hidden;
}
.wrap {
  width:min(98vw, 1800px);
  height:100vh;
  max-height:100vh;
  margin:0 auto;
  padding:10px;
  display:flex;
  flex-direction:column;
  min-height:0;
}
.status { display:flex; gap:10px; flex-wrap:wrap; align-items:center; margin-bottom:8px; }
.status-right {
  margin-left:auto;
  display:flex;
  gap:8px;
  align-items:center;
}
.mobile-disclaimer {
  display:none;
}
.pill {
  border:1px solid var(--line);
  background:var(--panel);
  color:#d8b06a;
  border-radius:8px;
  padding:4px 9px;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,0.02);
}
/* Masthead: brand + version + tagline */
.brand {
  display:flex;
  flex-direction:column;
  justify-content:center;
  line-height:1.18;
  margin-right:8px;
}
.brand-name {
  font-size:21px;
  font-weight:700;
  color:#d8b06a;
  letter-spacing:0.3px;
  white-space:nowrap;
}
.brand-link {
  color:inherit;
  text-decoration:none;
  cursor:pointer;
}
.brand-link:hover { text-decoration:underline; }
.brand-ver {
  font-size:0.55em;
  vertical-align:super;
  opacity:0.75;
  margin-left:4px;
  font-weight:600;
  letter-spacing:0.5px;
}
.brand-tag {
  font-size:14px;
  color:#9aa0ac;
  font-weight:400;
  letter-spacing:0.2px;
  white-space:nowrap;
}
.brand-row {
  display:flex;
  align-items:center;
  gap:8px;
}
/* dot + label grouped so they stay aligned */
.conn-status {
  display:inline-flex;
  align-items:center;
  gap:6px;
  line-height:1;
}
.conn-status .status-led { flex:none; position:relative; top:0.5px; }
.status-text {
  font-size:12px;
  line-height:1;
  color:#8a8f99;
  font-weight:400;
  white-space:nowrap;
}
@media (max-width:520px) {
  .brand-name { font-size:18px; }
  .brand-tag { font-size:12px; white-space:normal; }
  /* keep the status label on mobile (it fits beside the title) */
  .status-text { font-size:11px; }
}
.status-led {
  display:inline-block;
  width:8px;
  height:8px;
  border-radius:50%;
  background:#888;
}
.status-led.led-connected {
  background:#3fb950;
  box-shadow:0 0 4px rgba(63,185,80,0.55);
}
.status-led.led-amber {
  background:#d29922;
}
.status-led.led-offline {
  background:#f85149;
  box-shadow:0 0 4px rgba(248,81,73,0.45);
}
.hidden { display:none; }
.loader-pill {
  display:inline-flex;
  align-items:center;
  gap:10px;
  color:#f2d2a2;
  border-color:#5d4521;
  background:
    linear-gradient(135deg, rgba(255,149,0,0.12), rgba(255,179,71,0.04)),
    var(--panel);
  position:fixed;
  right:12px;
  top:10px;
  z-index:72;
  pointer-events:none;
}
.loader-pill.hidden {
  display:none;
}
.loader-brand {
  display:inline-flex;
  gap:0.03em;
  font-weight:700;
  letter-spacing:0.06em;
  text-transform:lowercase;
}
.loader-brand span {
  color:#8f7652;
  transform:translateY(0);
}
.loader-copy {
  color:#d7c3a5;
  font-size:0.96em;
  white-space:nowrap;
}
body.is-loading .loader-pill {
  display:inline-flex;
}
body.is-loading .loader-brand span {
  animation:corbeille-wave 1.1s ease-in-out infinite;
}
body.is-loading .loader-brand span:nth-child(1) { animation-delay:0s; }
body.is-loading .loader-brand span:nth-child(2) { animation-delay:0.06s; }
body.is-loading .loader-brand span:nth-child(3) { animation-delay:0.12s; }
body.is-loading .loader-brand span:nth-child(4) { animation-delay:0.18s; }
body.is-loading .loader-brand span:nth-child(5) { animation-delay:0.24s; }
body.is-loading .loader-brand span:nth-child(6) { animation-delay:0.30s; }
body.is-loading .loader-brand span:nth-child(7) { animation-delay:0.36s; }
body.is-loading .loader-brand span:nth-child(8) { animation-delay:0.42s; }
body.is-loading .loader-brand span:nth-child(9) { animation-delay:0.48s; }
body.is-loading .feed-summary,
body.is-loading .hotbar,
body.is-loading #rowsWrap {
  opacity:0.74;
  transition:opacity 140ms ease;
}
body.is-loading #rowsWrap {
  position:relative;
}
body.is-loading #rowsWrap::before {
  content:"";
  position:absolute;
  inset:0 auto auto 0;
  width:100%;
  height:2px;
  background:linear-gradient(90deg, transparent, rgba(255,149,0,0.92), transparent);
  animation:corbeille-scan 1.2s linear infinite;
  z-index:3;
  pointer-events:none;
}
@keyframes corbeille-wave {
  0%, 100% {
    color:#8f7652;
    transform:translateY(0);
    text-shadow:none;
  }
  35% {
    color:#ffd28a;
    transform:translateY(-1px);
    text-shadow:0 0 10px rgba(255,149,0,0.35);
  }
}
@keyframes corbeille-scan {
  0% { transform:translateX(-55%); opacity:0.15; }
  50% { opacity:0.95; }
  100% { transform:translateX(55%); opacity:0.15; }
}
.row { display:flex; gap:8px; align-items:center; flex-wrap:wrap; margin-bottom:8px; }
.controls-row {
  display:flex;
  flex-direction:column;
  align-items:stretch;
  gap:6px;
  border:1px solid var(--line);
  background:var(--panel);
  border-radius:8px;
  padding:6px 8px;
}
.controls-line {
  display:flex;
  gap:8px;
  align-items:center;
  flex-wrap:wrap;
  min-width:0;
}
.group {
  display:flex;
  align-items:center;
  gap:6px;
  flex-wrap:wrap;
  min-width:0;
}
.group-title {
  color:var(--accent-soft);
  font-weight:700;
  margin-right:4px;
  letter-spacing:0.03em;
  /* Desktop: keep PÉRIODE / TYPE at the base size — they're primary controls
     and there's room on one line. The mobile @media shrinks them to fit. */
}
.spark-strip {
  margin-left:auto;
  min-width:300px;
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:14px;
  color:var(--muted);
  white-space:nowrap;
  overflow:hidden;
}
.spark-chip {
  display:inline-flex;
  align-items:center;
  gap:6px;
  min-width:0;
}
.spark-src {
  font-weight:700;
}
.spark-count {
  color:var(--muted);
}
.spark-glyph {
  letter-spacing:0.04em;
  overflow:hidden;
  text-overflow:ellipsis;
}
.spark-scope {
  color:var(--accent);
  font-style:italic;
  max-width:180px;
  overflow:hidden;
  text-overflow:ellipsis;
}
.tf, .src {
  border:none;
  background:transparent;
  color:#8f96a3;
  padding:3px 6px;
  border-radius:6px;
  cursor:pointer;
  font:inherit;
}
.tf:hover, .src:hover { color:#aaaaaa; background:rgba(255,149,0,0.06); }
.tf.on, .src.on { color:var(--ok); font-weight:700; }
.src.beta { color:#555555; cursor:not-allowed; }
.all-btn { margin-left:auto; }
.table-tools {
  padding:8px 10px;
  border-bottom:1px solid var(--line);
  background:var(--panel-soft);
}
.feed-summary {
  padding:7px 10px;
  border-bottom:1px solid var(--line);
  background:var(--panel);
  color:var(--accent-soft);
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.summary-term { color:var(--accent-warm); }
.summary-count { color:#ffffff; font-weight:700; }
.summary-sep { color:var(--muted); }
.summary-src-count { color:var(--muted); }
#q {
  background:#111111;
  color:#ffffff;
  border:none;
  border-bottom:1px solid var(--line);
  padding:7px 9px;
  min-width:340px;
  width:100%;
  font:inherit;
}
#q:focus {
  outline:none;
  border-bottom-color:var(--focus);
  background:#2a2a2a;
}
#refresh {
  border:1px solid var(--line);
  background:#111111;
  color:#d9b06d;
  border-radius:6px;
  padding:4px 10px;
  cursor:pointer;
  font:inherit;
}
#refresh:hover { border-color:var(--focus); color:#fff3d1; background:#1a1a1a; }
.options-wrap {
  position:relative;
}
.options-btn {
  border:1px solid var(--line);
  background:#111111;
  color:#d9b06d;
  border-radius:6px;
  padding:4px 10px;
  cursor:pointer;
  font:inherit;
}
.options-btn:hover, .options-btn.open {
  border-color:var(--focus);
  color:#fff3d1;
  background:#1a1a1a;
}
.view-mode-btn {
  width:170px;
  text-align:center;
  white-space:nowrap;
}
.runtime-btn {
  color:#9bc8ff;
}
.runtime-btn:hover, .runtime-btn.open {
  color:#e0f0ff;
}
.options-panel {
  position: absolute;
  right: 0;
  top: calc(100% + 6px);
  min-width: 420px;
  max-width: min(760px, 92vw);
  border: 1px solid var(--line);
  background: #101010;
  border-radius: 8px;
  box-shadow: 0 10px 24px rgba(0,0,0,0.35);
  padding: 8px;
  z-index: 40;
  font-size: 15px;
  max-height:min(62vh, 560px);
  overflow:auto;
}
.options-panel.hidden {
  display:none;
}
.options-title {
  color:var(--accent-soft);
  font-size:0.95em;
  margin:0 0 6px 0;
  letter-spacing:0.03em;
  text-transform:uppercase;
}
/* block removed */

.runtime-panel {
  min-width:240px;
}
.runtime-meta {
  display:flex;
  flex-direction:column;
  gap:6px;
  margin-bottom:8px;
}
.runtime-row {
  display:flex;
  justify-content:space-between;
  gap:12px;
  color:#d5d5d5;
}
.runtime-label {
  color:var(--muted);
}
.runtime-value {
  color:#f0e2c2;
  text-align:right;
}
.runtime-action {
  width:100%;
  border:1px solid var(--line);
  background:#111111;
  color:#d9b06d;
  border-radius:6px;
  padding:6px 8px;
  cursor:pointer;
  font:inherit;
}
.runtime-action:hover {
  border-color:var(--focus);
  color:#fff3d1;
  background:#1a1a1a;
}
.hotbar {
  border:1px solid var(--line);
  background:var(--panel);
  border-radius:8px;
  padding:7px 10px;
  margin-bottom:8px;
  min-height:34px;
  line-height:1.45;
}
.data-wrap {
  position:relative;
}
.data-btn {
  min-width:62px;
}
.data-disclosure-panel {
  position:absolute;
  right:0;
  top:calc(100% + 6px);
  width:min(420px, 82vw);
  border:1px solid var(--line);
  border-radius:8px;
  padding:8px 10px;
  background:var(--panel-alt);
  color:#b7b7b7;
  font-size:12px;
  line-height:1.45;
  z-index:45;
  box-shadow:0 10px 24px rgba(0,0,0,0.32);
  max-height:min(62vh, 500px);
  overflow:auto;
}
.action-glossary {
  margin-top:8px;
  border-top:1px solid var(--line);
  padding-top:8px;
}
.glossary-title {
  color:#e3e3e3;
  font-weight:700;
  margin-bottom:6px;
}
.glossary-source {
  margin-bottom:8px;
}
.glossary-source-title {
  color:#c8d9ff;
  font-weight:700;
  margin-bottom:4px;
}
.glossary-row {
  display:grid;
  grid-template-columns:84px 1fr;
  gap:8px;
  margin:2px 0;
}
.glossary-key {
  color:#8fc6ff;
  font-weight:700;
}
.glossary-val {
  color:#b7b7b7;
}
.glossary-empty {
  color:#9a9a9a;
}
.new-toast {
  position:fixed;
  right:18px;
  top:84px;
  z-index:40;
  padding:8px 11px;
  border-radius:8px;
  border:1px solid #3d5a29;
  background:linear-gradient(135deg, rgba(92, 170, 70, 0.2), rgba(56, 92, 45, 0.2)), #101810;
  color:#d7ffd1;
  font-weight:700;
  box-shadow:0 10px 24px rgba(0,0,0,0.32);
}
.new-toast.show {
  animation:new-toast-in 220ms ease-out;
}
@keyframes new-toast-in {
  from { opacity:0; transform:translateY(-6px) scale(0.98); }
  to { opacity:1; transform:translateY(0) scale(1); }
}
.hot-line { white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.hot-line + .hot-line { margin-top:2px; }
.hot-top-label { color:var(--accent-soft); display:inline-block; min-width:17ch; }

/* Option: hide the entire hotbar (Top overall + per-source lines) when user disables it */
.hide-top-overall #hotline { display: none; }
.hide-sparklines #feedSpark { display: none; }
.hot-bullet { color:var(--accent-warm); }
.hot-company { color:#ffffff; font-weight:400; }
.hot-count { color:var(--muted); }
.hot-source-label { font-weight:400; display:inline-block; min-width:17ch; }
.hot-sep { color:var(--muted); }
.layout { display:grid; grid-template-columns:minmax(0, 1fr) minmax(320px, 36vw); gap:10px; flex:1; min-height:0; }
.panel {
  border:1px solid var(--line);
  background:var(--panel-alt);
  border-radius:8px;
  overflow:hidden;
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.02);
  min-height:0;
  display:flex;
  flex-direction:column;
}
#detailPanel {
  display:flex;
  flex-direction:column;
  min-height:0;
}
#mobileDetailPanel { display:none; }
body.hide-detail-panel .layout {
  grid-template-columns:minmax(0, 1fr);
}
body.hide-detail-panel #detailPanel {
  display:none;
}
.head {
  background:var(--panel);
  color:var(--accent);
  padding:7px 10px;
  border-bottom:1px solid var(--line);
  font-weight:700;
  letter-spacing:0.04em;
}
.panel-head {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
}
.panel-close {
  border:none;
  background:transparent;
  color:#888888;
  cursor:pointer;
  font:inherit;
  padding:0;
}
.panel-close:hover { color:#ffffff; }
#detail {
  flex:1;
  min-height:0;
  overflow-y:auto;
  overflow-x:hidden;
  overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch;
  scrollbar-gutter:stable both-edges;
  background:#0f0f0f;
}
#mobileDetail {
  flex:1;
  min-height:0;
  overflow-y:auto;
  overflow-x:hidden;
  overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch;
  scrollbar-gutter:stable both-edges;
  background:#0f0f0f;
}
table { width:100%; border-collapse:collapse; table-layout:fixed; }
col.published-col { width:210px; }
col.filing-date-col { width:var(--filing-date-col-width); }
col.submitted-col { width:var(--submitted-col-width); }
col.lag-col { width:var(--lag-col-width); }
col.type-col { width:72px; }
col.source-col { width:var(--source-col-width); }
col.action-col { width:110px; }
col.company-col { width:240px; }
/* 730px ≈ fixed-width cols (published 210 + type 72 + action 110 + company 240 = 632) plus ~98px buffer for borders/scrollbar inherited from prior layout. Var-driven cols are subtracted separately so hide-X toggles reclaim space. */
col.detail-col { width:calc(100% - 730px - var(--filing-date-col-width) - var(--source-col-width) - var(--lag-col-width) - var(--submitted-col-width)); }
td.company-cell, td.detail-cell {
  overflow-wrap:anywhere;
  word-break:break-word;
}
/* FEAT-13 PoC: company logo next to the name, monochrome by default to fit Flux. */
.co-logo {
  width:16px;
  height:16px;
  object-fit:contain;
  vertical-align:-3px;
  margin-right:6px;
  filter:var(--company-logo-filter, none);
}
/* FEAT-13: company logos are colour by default; the admin "Monochrome company logos"
   toggle adds body.logos-mono to render them black & white. */
body.logos-mono { --company-logo-filter:grayscale(1) contrast(1.1); }
th, td {
  border-bottom:1px solid #232323;
  padding:6px 7px;
  text-align:left;
  vertical-align:top;
}
td.published-cell, td.filing-date-cell, td.action-cell, td.type-cell {
  white-space:nowrap;
}
td.action-cell {
  white-space:normal;
}
td.lag-cell {
  white-space:normal;
}
td.source-cell {
  white-space:normal;
  vertical-align:middle;
}
th {
  color:var(--accent-soft);
  background:var(--panel);
  position:sticky;
  top:0;
  z-index:1;
  font-size:14px;
  /* Headers display in capitals; CSS uppercasing preserves French accents
     (e.g. "Société" -> "SOCIÉTÉ"). Catalog keeps natural case for reuse. */
  text-transform:uppercase;
}
tr:hover { background:#1a1a1a; cursor:pointer; }
tr.selected-row { background:#1f242b; }
tr.favorite-row td {
  background:
    linear-gradient(90deg, rgba(255, 171, 64, 0.12), rgba(255, 171, 64, 0.03) 38%, rgba(34, 158, 217, 0.03));
  border-bottom-color:#3f3324;
}
tr.favorite-row td:first-child {
  border-left:3px solid #ffab40;
  padding-left:4px;
}
tr.favorite-row:hover td {
  background:
    linear-gradient(90deg, rgba(255, 171, 64, 0.18), rgba(255, 171, 64, 0.06) 42%, rgba(34, 158, 217, 0.05));
}
tr.favorite-row.selected-row td {
  background:
    linear-gradient(90deg, rgba(255, 171, 64, 0.22), rgba(102, 151, 255, 0.11) 52%, rgba(102, 151, 255, 0.05));
  border-bottom-color:#5a4a35;
}
tr.favorite-row td.company-cell {
  color:#ffd79a;
  font-weight:700;
  text-shadow:0 0 8px rgba(255, 171, 64, 0.15);
}
tr.favorite-row td.company-cell .hl-search {
  font-weight:700;
}
tr.cluster-member-row { background:rgba(255, 149, 0, 0.055); }
tr.cluster-member-row:hover { background:rgba(255, 149, 0, 0.085); }
tr.cluster-member-row.selected-row { background:rgba(255, 149, 0, 0.12); }
tr.cluster-member-row.cluster-source-vad { background:rgba(var(--src-vad-rgb), 0.062); }
tr.cluster-member-row.cluster-source-vad:hover { background:rgba(var(--src-vad-rgb), 0.094); }
tr.cluster-member-row.cluster-source-vad.selected-row { background:rgba(var(--src-vad-rgb), 0.13); }
tr.cluster-member-row.cluster-source-vad td { background:rgba(var(--src-vad-rgb), 0.062); }
tr.cluster-member-row.cluster-source-vad:hover td { background:rgba(var(--src-vad-rgb), 0.094); }
tr.cluster-member-row.cluster-source-vad.selected-row td { background:rgba(var(--src-vad-rgb), 0.13); }
tr.cluster-member-row.cluster-source-dd,
tr.dd-cluster-member-row { background:rgba(var(--src-dd-rgb), 0.062); }
tr.cluster-member-row.cluster-source-dd:hover,
tr.dd-cluster-member-row:hover { background:rgba(var(--src-dd-rgb), 0.094); }
tr.cluster-member-row.cluster-source-dd.selected-row,
tr.dd-cluster-member-row.selected-row { background:rgba(var(--src-dd-rgb), 0.13); }
tr.cluster-member-row.cluster-source-spde { background:rgba(var(--src-spde-rgb), 0.062); }
tr.cluster-member-row.cluster-source-spde:hover { background:rgba(var(--src-spde-rgb), 0.094); }
tr.cluster-member-row.cluster-source-spde.selected-row { background:rgba(var(--src-spde-rgb), 0.13); }
tr.cluster-member-row.cluster-source-dd td,
tr.dd-cluster-member-row td { background:rgba(var(--src-dd-rgb), 0.062); }
tr.cluster-member-row.cluster-source-dd:hover td,
tr.dd-cluster-member-row:hover td { background:rgba(var(--src-dd-rgb), 0.094); }
tr.cluster-member-row.cluster-source-dd.selected-row td,
tr.dd-cluster-member-row.selected-row td { background:rgba(var(--src-dd-rgb), 0.13); }
tr.cluster-member-row.cluster-source-spde td { background:rgba(var(--src-spde-rgb), 0.062); }
tr.cluster-member-row.cluster-source-spde:hover td { background:rgba(var(--src-spde-rgb), 0.094); }
tr.cluster-member-row.cluster-source-spde.selected-row td { background:rgba(var(--src-spde-rgb), 0.13); }
tr.same-filing-row { background:rgba(var(--src-dd-rgb), 0.052); }
tr.same-filing-row:hover { background:rgba(var(--src-dd-rgb), 0.084); }
tr.same-filing-row.selected-row { background:rgba(var(--src-dd-rgb), 0.12); }
tr.same-filing-row.same-filing-source-spde { background:rgba(var(--src-spde-rgb), 0.052); }
tr.same-filing-row.same-filing-source-spde:hover { background:rgba(var(--src-spde-rgb), 0.084); }
tr.same-filing-row.same-filing-source-spde.selected-row { background:rgba(var(--src-spde-rgb), 0.12); }
tr.same-filing-row.same-filing-source-dd td:first-child {
  border-left:2px solid var(--src-dd-border);
  padding-left:5px;
}
tr.same-filing-row.same-filing-source-spde td:first-child {
  border-left:2px solid var(--src-spde-border);
  padding-left:5px;
}
body.hide-lag { --lag-col-width:0px; }
body.hide-source { --source-col-width:0px; }
body.hide-submitted { --submitted-col-width:0px; }
body.hide-event-date { --filing-date-col-width:0px; }
body.hide-lag th.lag-head,
body.hide-lag td.lag-cell {
  width:0;
  min-width:0;
  max-width:0;
  padding:0;
  border:0;
  font-size:0;
  line-height:0;
  visibility:hidden;
  overflow:hidden;
}
body.hide-submitted th.submitted-head,
body.hide-submitted td.submitted-cell {
  width:0;
  min-width:0;
  max-width:0;
  padding:0;
  border:0;
  font-size:0;
  line-height:0;
  visibility:hidden;
  overflow:hidden;
}
body.hide-event-date th.filing-date-head,
body.hide-event-date td.filing-date-cell {
  width:0;
  min-width:0;
  max-width:0;
  padding:0;
  border:0;
  font-size:0;
  line-height:0;
  visibility:hidden;
  overflow:hidden;
}
body.hide-source th.source-head,
body.hide-source td.source-cell {
  width:0;
  min-width:0;
  max-width:0;
  padding:0;
  border:0;
  font-size:0;
  line-height:0;
  visibility:hidden;
  overflow:hidden;
}
tr.cluster-summary-row { background:rgba(255, 149, 0, 0.03); }
tr.cluster-summary-row:hover { background:rgba(255, 149, 0, 0.03); cursor:default; }
tr.cluster-summary-row.summary-source-vad { background:rgba(var(--src-vad-rgb), 0.044); }
tr.cluster-summary-row.summary-source-vad:hover { background:rgba(var(--src-vad-rgb), 0.044); }
tr.cluster-summary-row.summary-source-vad td { background:rgba(var(--src-vad-rgb), 0.044); }
tr.cluster-summary-row.summary-source-vad .cluster-summary-cell {
  color:var(--src-vad-text);
  border-bottom-color:var(--src-vad-summary-border);
}
tr.cluster-summary-row.summary-source-dd,
tr.dd-cluster-summary-row { background:rgba(var(--src-dd-rgb), 0.044); }
tr.cluster-summary-row.summary-source-dd:hover,
tr.dd-cluster-summary-row:hover { background:rgba(var(--src-dd-rgb), 0.044); cursor:default; }
tr.cluster-summary-row.summary-source-spde { background:rgba(var(--src-spde-rgb), 0.044); }
tr.cluster-summary-row.summary-source-spde:hover { background:rgba(var(--src-spde-rgb), 0.044); cursor:default; }
tr.cluster-summary-row.summary-source-dd td,
tr.dd-cluster-summary-row td { background:rgba(var(--src-dd-rgb), 0.044); }
tr.cluster-summary-row.summary-source-spde td { background:rgba(var(--src-spde-rgb), 0.044); }
tr.pair-note-row { background:rgba(var(--src-dd-rgb), 0.04); }
tr.pair-note-row:hover { background:rgba(var(--src-dd-rgb), 0.04); cursor:default; }
tr.pair-note-row.summary-source-dd { background:rgba(var(--src-dd-rgb), 0.04); }
tr.pair-note-row.summary-source-dd:hover { background:rgba(var(--src-dd-rgb), 0.04); }
tr.pair-note-row.summary-source-spde { background:rgba(var(--src-spde-rgb), 0.04); }
tr.pair-note-row.summary-source-spde:hover { background:rgba(var(--src-spde-rgb), 0.04); }
.src-chip, .type-chip { font-weight:700; }
.action-split {
  display:inline-flex;
  flex-direction:column;
  align-items:flex-start;
  line-height:1.05;
  gap:1px;
}
.action-split .action-main,
.action-split .action-sub {
  display:block;
  white-space:nowrap;
}
.source-text {
  display:inline-flex;
  flex-direction:column;
  align-items:flex-start;
  gap:1px;
  line-height:1;
  min-height:1.45em; /* Reserve 2-line SOURCE slot so all rows keep consistent height */
  justify-content:center;
}
.source-line {
  display:block;
  color:#9fb2cf;
  font-size:0.72em;
  font-weight:600;
  letter-spacing:0.01em;
  line-height:0.82em;
}
.concert-chip {
  display:inline-flex;
  align-items:center;
  margin-right:6px;
  padding:1px 6px;
  border-radius:999px;
  border:1px solid rgba(102, 224, 255, 0.45);
  background:rgba(102, 224, 255, 0.12);
  color:#bfefff;
  font-size:0.75em;
  font-weight:700;
  letter-spacing:0.01em;
}
.concert-entities {
  color:#9ddcff;
  font-weight:600;
}
.cancel-tag {
  color:#ff6666;
  font-weight:700;
}
.lag-split {
  display:inline-flex;
  flex-direction:column;
  align-items:flex-start;
  gap:1px;
  line-height:1.05;
}
.lag-line {
  display:block;
  font-size:0.78em;
  letter-spacing:0.01em;
  white-space:nowrap;
}
.featured { color:#ffaa00; font-weight:700; }
.cancelled { color:var(--danger); text-decoration:line-through; }
.new-chip {
  display:inline-flex;
  align-items:center;
  gap:5px;
  margin-left:7px;
  padding:1px 6px;
  border-radius:999px;
  border:1px solid #3f6a2b;
  background:rgba(88, 151, 62, 0.14);
  color:#bfff9f;
  font-size:0.82em;
  letter-spacing:0.01em;
}
.new-chip.pulse {
  animation:new-chip-pulse 1s ease-in-out infinite;
}
tr.fresh-row td {
  background-image:linear-gradient(90deg, rgba(113, 201, 77, 0.08), transparent 42%);
}
@keyframes new-chip-pulse {
  0%, 100% {
    box-shadow:0 0 0 0 rgba(100, 194, 73, 0.1);
    border-color:#3f6a2b;
  }
  50% {
    box-shadow:0 0 0 7px rgba(100, 194, 73, 0);
    border-color:#7fb85c;
  }
}
.muted { opacity:0.72; }
.strike { text-decoration:line-through; }
.hl-entity { font-weight:700; }
.hl-entity.hl-source-dd { color:rgb(var(--src-dd-rgb)); }
.hl-entity.hl-source-vad { color:rgb(var(--src-vad-rgb)); }
.hl-entity.hl-source-spde { color:rgb(var(--src-spde-rgb)); }
.hl-entity.hl-source-sanc { color:#ff7f7f; }
.hl-search { font-weight:700; background:#3a3000; color:#fff3bd; padding:0 1px; }
.state-flag { margin-right:3px; }
/* Data-quality warning shown beside an insight (e.g. impossible source dates).
   Visually distinct from the sentence: italic, amber, slightly smaller. */
.data-issue {
  margin-left:6px;
  font-style:italic;
  font-size:0.92em;
  color:var(--accent-warm);
  white-space:nowrap;
  cursor:help;
}
.data-note {
  margin-left:6px;
  font-size:0.9em;
  color:var(--muted);
  white-space:nowrap;
  cursor:help;
}
.dd-corr--del,
.dd-corr--add {
  /* no font-weight: bold collides with role-tier emphasis; colour + decoration carry it */
  text-decoration-thickness:2px;
  text-decoration-skip-ink:none;
  cursor:help;
}
.dd-corr--del {
  color:#ff7b7b;
  text-decoration-line:line-through;
}
.dd-corr--add {
  color:#7fda7f;
  text-decoration-line:underline;
}
.dd-corr-tag {
  color:#7fda7f;
  font-size:0.82em;
  letter-spacing:0.3px;
  white-space:nowrap;
}
.mobile-link-pill {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:46px;
  max-width:64px;
  padding:0 6px;
  height:1.45em;
  border-radius:999px;
  border:1px solid var(--src-dd-border);
  background:rgba(var(--src-dd-rgb), 0.12);
  color:var(--src-dd-text);
  font-size:0.75em;
  font-weight:700;
  letter-spacing:0.01em;
  line-height:1;
  white-space:nowrap;
}
.mobile-link-pill.source-vad {
  border-color:var(--src-vad-border);
  background:rgba(var(--src-vad-rgb), 0.12);
  color:var(--src-vad-text);
}
.mobile-link-pill.source-spde {
  border-color:var(--src-spde-border);
  background:rgba(var(--src-spde-rgb), 0.12);
  color:var(--src-spde-text);
}
.same-filing-link.source-dd { color:var(--src-dd-text); }
.same-filing-link.source-vad { color:var(--src-vad-text); }
.same-filing-link.source-spde { color:var(--src-spde-text); }
.favorite-marker {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:2.65em;
  height:1.45em;
  padding:0 0.44em;
  margin-right:7px;
  border-radius:5px;
  border:1px solid rgba(255, 171, 64, 0.7);
  background:linear-gradient(180deg, rgba(255, 171, 64, 0.2), rgba(255, 171, 64, 0.08));
  color:#ffd79a;
  font-size:0.78em;
  font-weight:700;
  letter-spacing:0.06em;
  text-transform:uppercase;
  box-shadow:none;
}
#rowsWrap {
  flex:1;
  min-height:0;
  overflow-y:auto;
  overflow-x:auto;
  scrollbar-gutter:stable both-edges;
}

@media (min-width:861px) {
  body {
    font-size:13px;
  }
  .wrap {
    padding:8px;
  }
  .status {
    gap:8px;
    margin-bottom:6px;
  }
  .status-right,
  .brand-row,
  .loader-pill,
  .row,
  .controls-line,
  .group,
  .layout {
    gap:6px;
  }
  .row {
    margin-bottom:6px;
  }
  .pill {
    padding:3px 8px;
  }
  .brand-tag {
    font-size:13px;
  }
  .controls-row {
    gap:5px;
    padding:5px 7px;
  }
  th, td {
    padding:5px 6px;
  }
  th {
    font-size:13px;
  }
  .detail-card,
  .table-tools,
  .feed-summary {
    font-size:0.96em;
  }
  .co-logo {
    margin-right:5px;
  }
}
/* Mobile feed: hidden by default; shown only inside @media (max-width:860px) */
#mobileFeed { display:none; }
#detail pre,
#mobileDetail pre {
  margin:0;
  padding:10px;
  overflow-x:auto;
  overflow-y:visible;
  color:#d0d0d0;
  white-space:pre-wrap;
  word-break:break-word;
  background:#0f0f0f;
  border:1px solid #1d1d1d;
  border-radius:6px;
}
/* block removed */

/* ═══════════════════════════════════════════════════════════════════════════
   MOBILE LAYOUT  ≤ 860px
   ──────────────────────────────────────────────────────────────────────────
   Single authoritative block. All mobile rules live here only.
   Approach: hide the 9-col desktop table entirely; show a dedicated 4-col
   mobile table inside #mobileFeed. No nth-child, no display:none on cells,
   no !important width overrides — the table is born with 4 columns.
   ═══════════════════════════════════════════════════════════════════════════ */
@media (max-width:860px) {
  /* ── Global / scroll ── */
  body { overflow:auto; }
  /* Natural document scroll + reserved bottom space for fixed drawer */
  .wrap {
    display:block;
    height:auto;
    min-height:100dvh;
    width:100%;
    padding:8px 8px calc(min(40vh, 300px) + 8px);
    overflow:visible;
  }

  /* ── Header bar ── */
  #viewModeToggle { display:none; }
  .status { position:sticky; top:0; z-index:26; background:var(--bg); padding-top:4px; }
  .status-right { width:100%; margin-left:0; justify-content:flex-start; }
  .controls-line { gap:6px; }
  .group { gap:4px; }
  .group-title,
  .tf,
  .src,
  .feed-summary,
  #q {
    font-size:12px;
  }
  .group-title { margin-right:2px; font-size:12px; }
  .tf, .src { padding:2px 5px; }
  .mobile-disclaimer {
    display:block;
    margin:0;
    color:var(--muted);
    font-size:11px;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
  }
  .mobile-disclaimer-panel {
    margin:0;
    padding:6px 8px calc(6px + env(safe-area-inset-bottom));
    text-align:center;
    border-top:1px solid var(--line);
    /* Bottom panel disclaimer: full text, no single-line ellipsis clipping, and
       the same size as the empty-detail prompt (.detail-empty-mobile). */
    font-size:0.78em;
    white-space:normal;
    overflow:visible;
    text-overflow:clip;
    line-height:1.3;
  }

  /* ── Strips hidden on mobile (no room) ── */
  .spark-strip, .hotbar { display:none; }
  /* ── Options / Data / Glossary: hidden on mobile to save header space ── */
  .options-wrap, #dataWrap, #glossaryWrap { display:none; }

  /* ── Layout container: natural flow on mobile ── */
  .layout {
    display:block;
    min-height:auto;
    overflow:visible;
    flex:initial;
  }
  .panel {
    display:block;
    min-height:auto;
    overflow:visible;
    flex:initial;
  }

  /* ── Desktop table: completely hidden on mobile ── */
  #rowsWrap { display:none; }

  /* ── Mobile table: part of document flow (page scrolls) ── */
  #mobileFeed {
    display:block;
    flex:initial;
    min-height:auto;
    overflow:visible;
  }

  /* ── Mobile table base styles ── */
  .mobile-rows {
    width:100%;
    table-layout:fixed;
    border-collapse:collapse;
    font-size:12px;
  }
  .mobile-rows col.m-pub    { width:92px; }
  .mobile-rows col.m-type   { width:48px; }
  .mobile-rows col.m-action { width:88px; }
  .mobile-rows col.m-co     { width:auto; }
  .mobile-rows thead th {
    position:sticky;
    top:0;
    z-index:5;
    background:var(--header-bg, #1a1f2e);
    color:var(--th-color, #8ca0bf);
    font-size:12px;
    font-weight:600;
    letter-spacing:0.04em;
    text-transform:uppercase;
    padding:6px 4px;
    text-align:left;
    border-bottom:1px solid var(--border, #2a3040);
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
  }
  .mobile-rows tbody tr {
    border-bottom:1px solid var(--row-border, #1e2435);
    cursor:pointer;
  }
  .mobile-rows tbody tr:hover { background:var(--row-hover, #1d2235); }
  .mobile-rows tbody tr.fresh-row {
    background:
      linear-gradient(90deg, rgba(113, 201, 77, 0.16), rgba(113, 201, 77, 0.04) 38%, transparent 78%),
      rgba(113, 201, 77, 0.025);
  }
  .mobile-rows tbody tr.fresh-row-pulse {
    animation:mobile-new-row-heartbeat 1.15s ease-in-out infinite;
  }
  .mobile-rows tbody tr.fresh-row-pulse td:first-child {
    box-shadow:
      inset 3px 0 0 rgba(113, 201, 77, 0.98),
      inset 0 0 0 1px rgba(113, 201, 77, 0.08);
  }
  .mobile-rows tbody tr.fresh-row.selected-row {
    background:
      linear-gradient(90deg, rgba(113, 201, 77, 0.22), rgba(70, 110, 82, 0.09) 42%, rgba(31, 36, 43, 0.35) 84%),
      #1f242b;
  }
  .mobile-rows tbody td {
    padding:6px 4px;
    vertical-align:middle;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
    font-size:12px;
  }
  .mobile-rows .mobile-link-pill {
    min-width:40px;
    max-width:56px;
    padding:0 5px;
    font-size:0.72em;
  }
  /* cluster summary row spans all 4 cols */
  .mobile-rows tr.cluster-summary-row td {
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
    font-size:12px;
    padding:4px 6px;
  }
  .mobile-rows tr.pair-note-row td {
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
    font-size:12px;
    padding:4px 6px;
  }

  /* ── Bottom detail drawer: fixed overlay, auto-sizes to content ── */
  #detailPanel { display:none !important; }
  #mobileDetailPanel {
    display:flex;
    position:fixed;
    left:0;
    right:0;
    bottom:0;
    z-index:34;
    height:auto;
    max-height:min(40vh, 300px);
    overflow-y:auto;
    border-left:none;
    border-right:none;
    border-bottom:none;
    border-radius:12px 12px 0 0;
    box-shadow:0 -4px 20px rgba(0,0,0,0.28);
  }
  /* compact empty state when no row selected */
.detail-empty-mobile {
    display:flex;
    align-items:center;
    justify-content:center;
    width:100%;
    padding:10px 16px;
    color:var(--muted, #5a6580);
    font-size:0.78em;
    font-style:italic;
    text-align:center;
  }
  /* Mobile Filing Details text matches the main feed (12px).
     Keep OUTSIDE @flux-admin-only so the public bundle keeps it. */
  #mobileDetail { font-size:12px; }
  .detail-card .detail-title { font-size:12px; margin-bottom:2px; }
  .detail-card .detail-summary { font-size:12px; line-height:1.35; }
/* block removed */

  /* ── Dropdown panels: full-width, fixed position ── */
  .options-panel, .data-disclosure-panel {
    position:fixed;
    left:8px;
    right:8px;
    top:66px;
    width:auto;
    min-width:0;
    max-width:none;
    max-height:min(70vh, 520px);
  }

}
@keyframes mobile-new-row-heartbeat {
  0%, 100% {
    filter:brightness(1);
    box-shadow:none;
  }
  45% {
    filter:brightness(1.18);
    box-shadow:0 0 0 1px rgba(113, 201, 77, 0.22), 0 0 18px rgba(113, 201, 77, 0.14);
  }
}

/* ── Toast: hidden by JS on mobile; kept positioned safely if triggered manually ── */
.new-toast { top:auto; bottom:calc(min(40vh,300px) + 16px); right:8px; max-width:80vw; }
@media (max-width:380px) {
  .mobile-rows col.m-pub { width:84px; }
  .mobile-rows .mobile-link-pill {
    min-width:36px;
    max-width:48px;
    padding:0 4px;
    font-size:0.68em;
  }
}
@media (max-width:980px) {
  body { overflow:auto; }
  .wrap {
    height:auto;
    max-height:none;
  }
  .layout { grid-template-columns:1fr; }
  #rowsWrap {
    flex:none;
    height:45vh;
  }
  #rowsWrap table {
    min-width:1120px;
  }
  #rowsWrap td.company-cell,
  #rowsWrap td.detail-cell {
    overflow-wrap:break-word;
    word-break:normal;
  }
  #q { min-width:100%; width:100%; }
  .status-right {
    margin-left:0;
  }
  .data-disclosure-panel {
    right:auto;
    left:0;
    width:min(560px, 90vw);
  }
  .spark-strip {
    min-width:100%;
    width:100%;
    justify-content:flex-start;
    order:4;
    overflow-x:auto;
  }
  .all-btn { margin-left:0; }
  .new-toast {
    right:10px;
    top:74px;
    max-width:70vw;
  }
}

@media (max-width:980px) {
  .loader-pill {
    right:8px;
    top:8px;
  }
}

/* Mobile scroll mode is defined in the main 860px block above */
