/* ╔═══════════════════════════════════════════════════════════════════╗
   ║   NEXUS · R&M · stylesheet                                        ║
   ║   One file. Every component. Uses --nx-* tokens from base.        ║
   ╚═══════════════════════════════════════════════════════════════════╝ */

/* ═══════════════════════ PAGE PRIMITIVES ═══════════════════════ */
.nxrm-page { padding: 18px 14px 80px; max-width: 880px; margin: 0 auto; }
.nxrm-masthead {
  display: flex; justify-content: space-between; align-items: center;
  margin-bottom: 16px; gap: 12px;
}
.nxrm-eyebrow {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 10px; letter-spacing: 0.20em;
  color: var(--nx-gold, #d4a44e); text-transform: uppercase; margin-bottom: 4px;
}
.nxrm-h1 {
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 28px; font-weight: 800;
  color: var(--nx-text-strong, #f5f1e8); letter-spacing: -0.01em;
  margin: 0; line-height: 1;
}
.nxrm-btn-pill {
  background: var(--nx-gold, #d4a44e); color: var(--nx-gold-on, #1c1814);
  border: 1.5px solid var(--nx-gold-deep, #b88830);
  border-radius: 22px; padding: 8px 18px;
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 14px; font-weight: 700; cursor: pointer;
  transition: transform 100ms ease, box-shadow 140ms ease;
}
.nxrm-btn-pill:hover {
  transform: translateY(-1px);
  box-shadow: 0 6px 14px var(--nx-gold-aura, rgba(212,164,78,0.30));
}
.nxrm-back {
  background: transparent; border: none;
  color: var(--nx-gold); font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 12px; letter-spacing: 0.08em; cursor: pointer;
  padding: 0; margin-bottom: 14px;
}
.nxrm-back:hover { text-decoration: underline; }
.nxrm-sep { color: var(--nx-muted, #8a8576); margin: 0 4px; }

/* ═══════════════════════ KPI TILES ═══════════════════════ */
.nxrm-tiles { display: grid; gap: 8px; margin-bottom: 16px; }
.nxrm-tiles.tiles-3 { grid-template-columns: repeat(3, 1fr); }
.nxrm-tiles.tiles-4 { grid-template-columns: repeat(4, 1fr); }
@media (max-width: 520px) {
  .nxrm-tiles.tiles-4 { grid-template-columns: repeat(2, 1fr); }
}
.nxrm-tile {
  background: var(--nx-gold-tint, rgba(212,164,78,0.06));
  border: 1px solid var(--nx-gold-line, rgba(212,164,78,0.20));
  border-radius: 14px; padding: 10px 12px; text-align: center;
  cursor: pointer; transition: border-color 140ms ease;
}
.nxrm-tile:hover { border-color: var(--nx-gold); }
.nxrm-tile.is-alert {
  border-color: rgba(210,75,75,0.45);
  background: rgba(210,75,75,0.06);
}
.nxrm-tile-num {
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 22px; font-weight: 800;
  color: var(--nx-text-strong); line-height: 1.1;
}
.nxrm-tile-lbl {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 9px; letter-spacing: 0.14em; text-transform: uppercase;
  color: var(--nx-muted); margin-top: 2px;
}

/* ═══════════════════════ FILTERS ═══════════════════════ */
.nxrm-filters { display: flex; flex-direction: column; gap: 8px; margin-bottom: 16px; }
.nxrm-chip-row { display: flex; gap: 6px; flex-wrap: wrap; align-items: center; }
.nxrm-chip {
  background: var(--nx-gold-tint); border: 1px solid var(--nx-gold-line);
  border-radius: 20px; padding: 5px 12px;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 11px; letter-spacing: 0.04em;
  color: var(--nx-text, #ede9e0); cursor: pointer;
  transition: all 140ms ease;
}
.nxrm-chip.is-secondary { background: rgba(0,0,0,0.3); }
.nxrm-chip:hover { border-color: var(--nx-gold); }
.nxrm-chip.is-active {
  background: var(--nx-gold); color: var(--nx-gold-on);
  border-color: var(--nx-gold-deep); font-weight: 700;
}
.nxrm-search {
  flex: 1; min-width: 200px;
  background: rgba(0,0,0,0.3); border: 1px solid var(--nx-gold-line);
  border-radius: 12px; padding: 8px 12px;
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 13px; color: var(--nx-text);
}
.nxrm-search:focus { border-color: var(--nx-gold); outline: none; }
.nxrm-sort {
  background: rgba(0,0,0,0.3); border: 1px solid var(--nx-gold-line);
  border-radius: 12px; padding: 8px 12px;
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 13px; color: var(--nx-text); cursor: pointer;
}

/* ═══════════════════════ CARDS (inbox + lists) ═══════════════════════ */
.nxrm-list { display: flex; flex-direction: column; gap: 8px; }
.nxrm-card {
  background: var(--nx-gold-tint); border: 1px solid var(--nx-gold-line);
  border-radius: 16px; padding: 12px 14px;
  cursor: pointer; text-align: left; width: 100%;
  transition: all 140ms ease;
}
.nxrm-card:hover { transform: translateY(-1px); border-color: var(--nx-gold); }
/* Flat cards — the gold hairline border carries the separation. Kills a
   heavy drop shadow that was leaking in from a broader rule and reading badly
   on the light theme. !important so it wins regardless of the source. */
.nxrm-card,
.nxrm-vendor-eq-row,
.nxrm-vendor-eq-row .nxrm-card,
.nxrm-vendor-eq-unassign,
.nxrm-pm-card { box-shadow: none !important; }
.nxrm-card.tone-critical { border-left: 4px solid var(--nx-red); background: rgba(210,75,75,0.06); }
.nxrm-card.tone-high     { border-left: 4px solid #d4744e; background: rgba(212,116,78,0.06); }
.nxrm-card.tone-normal   { border-left: 4px solid var(--nx-gold); }
.nxrm-card.tone-low      { border-left: 4px solid var(--nx-muted); }
.nxrm-card.is-closed     { opacity: 0.55; }

.nxrm-card-row1 {
  display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 10.5px; letter-spacing: 0.06em; text-transform: uppercase;
  margin-bottom: 4px;
}
.nxrm-card-priority { font-weight: 700; color: var(--nx-text-strong); }
.nxrm-card-status { display: inline-flex; align-items: center; gap: 3px; color: var(--nx-muted); }
.nxrm-card-status.tone-ok       { color: var(--nx-green); }
.nxrm-card-status.tone-warn     { color: var(--nx-gold); }
.nxrm-card-status.tone-info     { color: var(--nx-gold); }
.nxrm-card-status.tone-critical { color: var(--nx-red); }
.nxrm-card-age { margin-left: auto; color: var(--nx-muted); }

.nxrm-card-title {
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 15px; font-weight: 600;
  color: var(--nx-text-strong); line-height: 1.3; margin-bottom: 6px;
}
.nxrm-card-row2 {
  display: flex; flex-wrap: wrap; font-size: 12px;
  color: var(--nx-muted); margin-bottom: 6px;
}
.nxrm-card-eq { color: var(--nx-text); }
.nxrm-card-restaurant { color: var(--nx-text); font-weight: 600; }
.nxrm-card-vendor {
  color: var(--nx-gold); font-family: 'JetBrains Mono', ui-monospace, monospace; font-size: 11px;
}
.nxrm-card-cost {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 13px; font-weight: 700; color: var(--nx-gold);
  margin-bottom: 4px;
}
.nxrm-card-open {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 11px; color: var(--nx-red);
}
.nxrm-card-meta {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 11px; color: var(--nx-muted);
}
.nxrm-card-badges { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 4px; }
.nxrm-card-badge {
  display: inline-flex;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 10px; letter-spacing: 0.04em;
  padding: 2px 8px; border-radius: 12px;
  background: rgba(0,0,0,0.35); border: 1px solid var(--nx-gold-line);
  color: var(--nx-text);
}
.nxrm-card-badge.is-alert { background: rgba(210,75,75,0.10); border-color: var(--nx-red); color: var(--nx-red); }
.nxrm-card-badge.is-warn  { background: rgba(212,164,78,0.10); border-color: var(--nx-gold); color: var(--nx-gold); }
.nxrm-rank {
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 16px; font-weight: 800; color: var(--nx-gold);
}

/* ═══════════════════════ EMPTY STATES ═══════════════════════ */
.nxrm-empty {
  text-align: center; padding: 36px 20px;
  background: var(--nx-gold-tint);
  border: 1.5px dashed var(--nx-gold-line);
  border-radius: 18px;
}
.nxrm-empty-glyph { font-size: 36px; color: var(--nx-gold); margin-bottom: 8px; }
.nxrm-empty-title {
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 16px; font-weight: 700;
  color: var(--nx-text-strong); margin-bottom: 6px;
}
.nxrm-empty-body {
  font-size: 13px; color: var(--nx-muted);
  max-width: 380px; margin: 0 auto; line-height: 1.5;
}

/* ═══════════════════════ SECTIONS ═══════════════════════ */
.nxrm-section { margin-bottom: 18px; }
.nxrm-section-title {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 12px; letter-spacing: 0.16em;
  color: var(--nx-gold); text-transform: uppercase;
  margin-bottom: 10px; padding-bottom: 6px;
  border-bottom: 1px solid var(--nx-gold-line);
  display: flex; justify-content: space-between; align-items: center;
}
.nxrm-section-sub { font-size: 12px; color: var(--nx-muted); margin-bottom: 10px; font-style: italic; }
.nxrm-section-count {
  background: var(--nx-gold); color: var(--nx-gold-on); font-weight: 700;
  padding: 1px 8px; border-radius: 14px; font-size: 11px;
}
.nxrm-section-wins .nxrm-section-title { color: var(--nx-green); border-bottom-color: rgba(108,208,154,0.30); }
.nxrm-section-wins .nxrm-section-count { background: var(--nx-green); color: #0a2c18; }
.nxrm-or {
  text-align: center;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 10px; color: var(--nx-muted);
  letter-spacing: 0.12em; margin: 10px 0;
}

/* ═══════════════════════ STALE SECTION ═══════════════════════ */
.nxrm-stale {
  margin-bottom: 16px; padding: 14px;
  background: rgba(212,164,78,0.08);
  border: 1.5px solid rgba(212,164,78,0.35);
  border-left: 4px solid var(--nx-gold);
  border-radius: 16px;
}
.nxrm-stale-title {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 11px; letter-spacing: 0.16em;
  color: var(--nx-gold); text-transform: uppercase; margin-bottom: 10px;
}
.nxrm-stale-list { display: flex; flex-direction: column; gap: 8px; }
.nxrm-stale-card {
  background: rgba(0,0,0,0.3); border: 1px solid rgba(212,164,78,0.25);
  border-radius: 12px; padding: 10px 12px;
}
.nxrm-stale-row1 { display: flex; justify-content: space-between; align-items: center; margin-bottom: 4px; }
.nxrm-stale-cardtitle {
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 14px; font-weight: 600; color: var(--nx-text-strong);
}
.nxrm-stale-age {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 11px; color: var(--nx-gold); font-weight: 700;
}
.nxrm-stale-meta { font-size: 12px; color: var(--nx-muted); margin-bottom: 6px; }
.nxrm-stale-reason {
  font-size: 12px; color: var(--nx-text);
  font-style: italic; margin-bottom: 10px; line-height: 1.5;
}
.nxrm-stale-actions { display: flex; gap: 6px; flex-wrap: wrap; }
.nxrm-stale-btn {
  flex: 1; min-width: 100px; padding: 7px 10px;
  background: rgba(255,254,246,0.05); border: 1px solid var(--nx-gold-line);
  border-radius: 10px;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 10.5px; color: var(--nx-text);
  cursor: pointer; transition: all 140ms ease;
}
.nxrm-stale-btn:hover { border-color: var(--nx-gold); background: var(--nx-gold-mist, rgba(212,164,78,0.10)); }
.nxrm-stale-btn.is-danger { border-color: rgba(210,75,75,0.35); color: var(--nx-red); }
.nxrm-stale-btn.is-danger:hover { background: rgba(210,75,75,0.10); border-color: var(--nx-red); }

/* ═══════════════════════ FINANCIAL WORKFLOW ═══════════════════════ */
.nxrm-finance {
  background: var(--nx-gold-tint);
  border: 1px solid var(--nx-gold-line);
  border-radius: 16px; padding: 14px; margin: 14px 0;
}
.nxrm-finance-title {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 11px; letter-spacing: 0.16em;
  color: var(--nx-gold); text-transform: uppercase; margin-bottom: 12px;
}
.nxrm-finance-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; }
@media (max-width: 520px) { .nxrm-finance-grid { grid-template-columns: 1fr; } }
.nxrm-finance-cell {
  background: rgba(0,0,0,0.3); border: 1px solid var(--nx-gold-line);
  border-radius: 12px; padding: 12px;
}
.nxrm-finance-lbl {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 9.5px; letter-spacing: 0.16em; text-transform: uppercase;
  color: var(--nx-muted); margin-bottom: 4px;
}
.nxrm-finance-val {
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 22px; font-weight: 800;
  color: var(--nx-text-strong); margin-bottom: 4px; line-height: 1.1;
}
.nxrm-finance-meta {
  font-size: 11px; color: var(--nx-muted);
  margin-bottom: 8px; line-height: 1.5;
}
.nxrm-finance-attach { display: inline-block; font-size: 11px; color: var(--nx-gold); margin-bottom: 8px; }
.nxrm-finance-notes {
  font-size: 11px; color: var(--nx-muted); font-style: italic;
  margin-bottom: 8px; line-height: 1.5;
}
.nxrm-finance-actions { display: flex; flex-wrap: wrap; gap: 6px; }
.nxrm-finance-btn {
  flex: 1; min-width: 70px; padding: 6px 10px;
  background: rgba(255,254,246,0.05); border: 1px solid var(--nx-gold-line);
  border-radius: 10px;
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 12px; font-weight: 600; color: var(--nx-text);
  cursor: pointer; transition: all 140ms ease;
}
.nxrm-finance-btn:hover { border-color: var(--nx-gold); background: var(--nx-gold-mist); }
.nxrm-finance-btn.is-primary {
  background: var(--nx-gold); color: var(--nx-gold-on);
  border-color: var(--nx-gold-deep);
}
.nxrm-finance-btn.is-primary:hover { background: var(--nx-gold-deep); }
.nxrm-finance-btn.is-danger {
  background: rgba(210,75,75,0.10); color: var(--nx-red);
  border-color: rgba(210,75,75,0.35);
}
.nxrm-finance-btn.is-danger:hover { background: rgba(210,75,75,0.20); border-color: var(--nx-red); }
.nxrm-finance-breakdown {
  display: flex; flex-wrap: wrap; gap: 12px;
  padding: 10px; margin-top: 10px;
  background: rgba(0,0,0,0.3); border-radius: 10px;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 11px; color: var(--nx-text);
}
.nxrm-finance-total { margin-left: auto; font-weight: 700; color: var(--nx-gold); }
.nxrm-finance-dispatch {
  display: block; width: 100%; margin-top: 12px; padding: 10px 14px;
  background: var(--nx-gold-mist); border: 1px solid var(--nx-gold);
  border-radius: 12px;
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 13px; font-weight: 600; color: var(--nx-gold);
  cursor: pointer; text-align: center;
}
.nxrm-finance-dispatch:hover { background: var(--nx-gold); color: var(--nx-gold-on); }

/* ═══════════════════════ COMMENTS THREAD ═══════════════════════ */
.nxrm-comments {
  background: var(--nx-gold-tint); border: 1px solid var(--nx-gold-line);
  border-radius: 16px; padding: 14px; margin: 14px 0;
}
.nxrm-comments-title {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 11px; letter-spacing: 0.16em;
  color: var(--nx-gold); text-transform: uppercase; margin-bottom: 12px;
}
.nxrm-comments-list {
  display: flex; flex-direction: column-reverse; gap: 8px;
  margin-bottom: 12px; max-height: 400px; overflow-y: auto;
}
.nxrm-comments-empty {
  text-align: center; padding: 18px;
  color: var(--nx-muted); font-size: 12px; font-style: italic;
}
.nxrm-comment { background: rgba(0,0,0,0.3); border-radius: 12px; padding: 10px 12px; }
.nxrm-comment.is-system {
  background: rgba(212,164,78,0.06);
  border-left: 2px solid var(--nx-gold); font-style: italic;
}
.nxrm-comment-meta {
  display: flex; justify-content: space-between;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 10.5px; color: var(--nx-muted); margin-bottom: 4px;
}
.nxrm-comment-author { font-weight: 700; color: var(--nx-text); }
.nxrm-comment-body {
  font-size: 13px; color: var(--nx-text); line-height: 1.5;
  white-space: pre-wrap; word-break: break-word;
}
.nxrm-comment-attach { display: inline-block; margin-top: 6px; font-size: 11px; color: var(--nx-gold); }
.nxrm-comment-composer { display: flex; gap: 6px; align-items: flex-end; }
.nxrm-comment-input {
  flex: 1; background: rgba(0,0,0,0.3); border: 1px solid var(--nx-gold-line);
  border-radius: 12px; padding: 8px 12px;
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 13px; color: var(--nx-text);
  resize: vertical; min-height: 38px;
}
.nxrm-comment-input:focus { border-color: var(--nx-gold); outline: none; }
.nxrm-comment-photo {
  width: 44px; height: 38px;
  background: var(--nx-gold-tint); border: 1px solid var(--nx-gold-line);
  border-radius: 12px; font-size: 18px; cursor: pointer;
  transition: all 140ms ease;
  display: flex; align-items: center; justify-content: center;
}
.nxrm-comment-photo:hover { background: var(--nx-gold-mist); border-color: var(--nx-gold); }
.nxrm-comment-photo.has-attached {
  background: var(--nx-gold); border-color: var(--nx-gold-deep); color: var(--nx-gold-on);
}
.nxrm-comment-photo.is-loading { opacity: 0.6; cursor: wait; }
.nxrm-comment-send {
  background: var(--nx-gold); color: var(--nx-gold-on);
  border: 1.5px solid var(--nx-gold-deep);
  border-radius: 12px; padding: 8px 18px;
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 13px; font-weight: 700; cursor: pointer;
  transition: all 140ms ease;
}
.nxrm-comment-send:hover:not(:disabled) {
  transform: translateY(-1px);
  box-shadow: 0 4px 12px var(--nx-gold-aura);
}
.nxrm-comment-send:disabled { opacity: 0.4; cursor: not-allowed; }
.nxrm-comment-photos { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 8px; }
.nxrm-photo-chip { position: relative; display: inline-block; }
.nxrm-photo-chip img {
  width: 60px; height: 60px; object-fit: cover;
  border-radius: 12px; border: 1.5px solid var(--nx-gold);
}
.nxrm-photo-remove {
  position: absolute; top: -6px; right: -6px;
  width: 22px; height: 22px;
  background: var(--nx-red); color: white;
  border: 2px solid var(--nx-bg, #0e1320);
  border-radius: 50%;
  font-size: 14px; font-weight: 700; line-height: 1;
  cursor: pointer; padding: 0;
  display: flex; align-items: center; justify-content: center;
}

/* ═══════════════════════ COST ANOMALY ═══════════════════════ */
.nxrm-anomaly-warning { margin-bottom: 14px; }
.nxrm-anomaly {
  display: grid; grid-template-columns: 36px 1fr;
  gap: 12px; padding: 12px 14px;
  border-radius: 16px; margin-bottom: 8px;
}
.nxrm-anomaly.anomaly-high {
  background: rgba(212,164,78,0.10);
  border: 1.5px solid rgba(212,164,78,0.45);
  border-left: 4px solid var(--nx-gold);
}
.nxrm-anomaly.anomaly-extreme {
  background: rgba(210,75,75,0.10);
  border: 1.5px solid rgba(210,75,75,0.45);
  border-left: 4px solid var(--nx-red);
  animation: nxrm-anomaly-pulse 2s ease-in-out infinite;
}
@keyframes nxrm-anomaly-pulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(210,75,75,0); }
  50%      { box-shadow: 0 0 16px 0 rgba(210,75,75,0.25); }
}
.nxrm-anomaly-glyph { font-size: 26px; align-self: center; text-align: center; }
.nxrm-anomaly-title {
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 14px; font-weight: 700;
  color: var(--nx-text-strong); margin-bottom: 4px;
}
.nxrm-anomaly.anomaly-extreme .nxrm-anomaly-title { color: var(--nx-red); }
.nxrm-anomaly.anomaly-high    .nxrm-anomaly-title { color: var(--nx-gold); }
.nxrm-anomaly-reason {
  font-size: 12.5px; color: var(--nx-text); line-height: 1.5; margin-bottom: 4px;
}
.nxrm-anomaly-stats {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 10.5px; color: var(--nx-muted);
  letter-spacing: 0.04em; margin-bottom: 10px;
}
.nxrm-anomaly-actions { display: flex; gap: 6px; flex-wrap: wrap; }
.nxrm-anomaly-btn {
  flex: 1; min-width: 120px; padding: 6px 10px;
  background: var(--nx-gold); color: var(--nx-gold-on);
  border: 1.5px solid var(--nx-gold-deep);
  border-radius: 10px;
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 12px; font-weight: 700; cursor: pointer;
}
.nxrm-anomaly-btn:hover { background: var(--nx-gold-deep); }
.nxrm-anomaly-btn.is-secondary {
  background: rgba(255,254,246,0.05); color: var(--nx-text);
  border-color: var(--nx-gold-line);
}
.nxrm-anomaly-btn.is-secondary:hover { background: var(--nx-gold-mist); border-color: var(--nx-gold); }

/* ═══════════════════════ VENDOR CARDS ═══════════════════════ */
.nxrm-vendor-list { display: flex; flex-direction: column; gap: 10px; }
.nxrm-vendor-card {
  display: grid; grid-template-columns: 64px 1fr; gap: 12px;
  background: var(--nx-gold-tint); border: 1px solid var(--nx-gold-line);
  border-radius: 16px; padding: 12px 14px;
  cursor: pointer; text-align: left; width: 100%;
  transition: all 140ms ease;
}
.nxrm-vendor-card:hover { transform: translateY(-1px); border-color: var(--nx-gold); }
.nxrm-vendor-grade {
  align-self: center; width: 56px; height: 56px; border-radius: 16px;
  display: flex; align-items: center; justify-content: center;
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 28px; font-weight: 800; border: 1.5px solid;
}
.nxrm-vendor-grade.tone-ok       { background: rgba(108,208,154,0.12); border-color: var(--nx-green); color: var(--nx-green); }
.nxrm-vendor-grade.tone-good     { background: rgba(168,216,112,0.12); border-color: var(--nx-green); color: var(--nx-green); }
.nxrm-vendor-grade.tone-warn     { background: rgba(212,164,78,0.12); border-color: var(--nx-gold); color: var(--nx-gold); }
.nxrm-vendor-grade.tone-critical { background: rgba(210,75,75,0.12); border-color: var(--nx-red); color: var(--nx-red); }
.nxrm-vendor-grade.tone-mute     { background: rgba(160,160,160,0.10); border-color: var(--nx-muted); color: var(--nx-muted); }
.nxrm-vendor-body { min-width: 0; }
.nxrm-vendor-row1 {
  display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 4px;
}
.nxrm-vendor-name {
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 16px; font-weight: 700; color: var(--nx-text-strong);
}
.nxrm-vendor-badge {
  display: inline-flex; align-items: center;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 9.5px; letter-spacing: 0.10em;
  padding: 2px 7px; border-radius: 12px;
  background: rgba(0,0,0,0.4); border: 1px solid var(--nx-gold-line);
  color: var(--nx-text); text-transform: uppercase;
}
.nxrm-vendor-badge.is-pref { background: var(--nx-gold-mist); border-color: var(--nx-gold); color: var(--nx-gold); }
.nxrm-vendor-badge.is-emerg { background: rgba(210,75,75,0.12); border-color: var(--nx-red); color: var(--nx-red); }
.nxrm-vendor-row2 {
  display: flex; flex-wrap: wrap; gap: 8px;
  font-size: 12px; color: var(--nx-muted); margin-bottom: 8px;
}
.nxrm-vendor-cat {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 10.5px; letter-spacing: 0.06em;
  color: var(--nx-gold); text-transform: uppercase;
}
.nxrm-vendor-phone { font-family: 'JetBrains Mono', ui-monospace, monospace; font-size: 11px; }
.nxrm-vendor-stats {
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px;
  padding-top: 8px; border-top: 1px dashed var(--nx-gold-line);
}
.nxrm-vendor-stat { text-align: center; }
.nxrm-vendor-stat-val {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 13px; font-weight: 700; color: var(--nx-text-strong);
}
.nxrm-vendor-stat-lbl {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 9px; letter-spacing: 0.12em; text-transform: uppercase;
  color: var(--nx-muted); margin-top: 2px;
}

/* Vendor detail */
.nxrm-vendor-header {
  display: flex; gap: 16px; align-items: center;
  margin-bottom: 16px; padding-bottom: 16px;
  border-bottom: 1px solid var(--nx-gold-line);
}
.nxrm-vendor-grade-big {
  width: 80px; height: 80px; border-radius: 20px;
  display: flex; flex-direction: column;
  align-items: center; justify-content: center;
  border: 2px solid; flex-shrink: 0;
}
.nxrm-vendor-grade-big.tone-ok       { background: rgba(108,208,154,0.12); border-color: var(--nx-green); color: var(--nx-green); }
.nxrm-vendor-grade-big.tone-good     { background: rgba(168,216,112,0.12); border-color: var(--nx-green); color: var(--nx-green); }
.nxrm-vendor-grade-big.tone-warn     { background: rgba(212,164,78,0.12); border-color: var(--nx-gold); color: var(--nx-gold); }
.nxrm-vendor-grade-big.tone-critical { background: rgba(210,75,75,0.12); border-color: var(--nx-red); color: var(--nx-red); }
.nxrm-vendor-grade-big.tone-mute     { background: rgba(160,160,160,0.10); border-color: var(--nx-muted); color: var(--nx-muted); }
.nxrm-vendor-grade-letter {
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 36px; font-weight: 800; line-height: 1;
}
.nxrm-vendor-grade-lbl {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 9px; letter-spacing: 0.12em; text-transform: uppercase; margin-top: 4px;
}
.nxrm-vendor-headline { flex: 1; }
.nxrm-vendor-tags { display: flex; gap: 6px; margin-top: 6px; }
.nxrm-vendor-contact { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 16px; }
.nxrm-vendor-action {
  flex: 1; min-width: 100px; text-align: center;
  background: var(--nx-gold-tint); border: 1px solid var(--nx-gold-line);
  border-radius: 12px; padding: 10px 14px;
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 13px; font-weight: 600;
  color: var(--nx-text-strong); text-decoration: none;
  cursor: pointer; transition: all 140ms ease;
}
.nxrm-vendor-action:hover {
  border-color: var(--nx-gold); background: var(--nx-gold-mist); text-decoration: none;
}
.nxrm-vendor-detail-stats {
  display: grid; grid-template-columns: repeat(3, 1fr);
  gap: 8px; margin-bottom: 16px;
}
@media (max-width: 520px) { .nxrm-vendor-detail-stats { grid-template-columns: repeat(2, 1fr); } }
.nxrm-vendor-detail-stat {
  background: var(--nx-gold-tint); border: 1px solid var(--nx-gold-line);
  border-radius: 14px; padding: 10px 12px;
}
.nxrm-vendor-detail-val {
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 20px; font-weight: 800;
  color: var(--nx-text-strong); letter-spacing: -0.01em;
  line-height: 1.1; margin-bottom: 2px;
}
.nxrm-vendor-detail-lbl {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 9px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--nx-muted);
}
.nxrm-vendor-rates {
  display: flex; gap: 16px; padding: 10px 14px;
  background: rgba(0,0,0,0.3); border-radius: 12px;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 12px; color: var(--nx-text); margin-bottom: 14px;
}
.nxrm-vendor-notes {
  padding: 10px 14px; background: var(--nx-gold-tint);
  border-left: 3px solid var(--nx-gold);
  font-style: italic; color: var(--nx-text);
  font-size: 13px; margin-bottom: 14px; line-height: 1.5;
}

/* ═══════════════════════ PM CARDS ═══════════════════════ */
.nxrm-pm-card {
  display: grid; grid-template-columns: 40px 1fr 70px;
  gap: 12px; align-items: center;
  background: var(--nx-gold-tint); border: 1px solid var(--nx-gold-line);
  border-radius: 16px; padding: 12px 14px;
  cursor: pointer; text-align: left; width: 100%;
  transition: all 140ms ease;
}
.nxrm-pm-card:hover { transform: translateY(-1px); border-color: var(--nx-gold); }
.nxrm-pm-card.tone-critical {
  border-left: 4px solid var(--nx-red); background: rgba(210,75,75,0.08);
}
.nxrm-pm-card.tone-warn {
  border-left: 4px solid var(--nx-gold); background: rgba(212,164,78,0.06);
}
.nxrm-pm-card.tone-info { border-left: 4px solid var(--nx-gold); }
.nxrm-pm-card.tone-mute { opacity: 0.65; }
.nxrm-pm-glyph { font-size: 24px; text-align: center; }
.nxrm-pm-body { min-width: 0; }
.nxrm-pm-row1 {
  display: flex; justify-content: space-between; align-items: center;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 10.5px; letter-spacing: 0.08em; text-transform: uppercase;
  margin-bottom: 4px;
}
.nxrm-pm-urgency { font-weight: 700; color: var(--nx-text-strong); }
.nxrm-pm-when { color: var(--nx-muted); }
.nxrm-pm-card.tone-critical .nxrm-pm-urgency,
.nxrm-pm-card.tone-critical .nxrm-pm-when { color: var(--nx-red); }
.nxrm-pm-card.tone-warn .nxrm-pm-urgency,
.nxrm-pm-card.tone-warn .nxrm-pm-when { color: var(--nx-gold); }
/* Overdue but noted — acknowledged, so the alarm quiets to gold */
.nxrm-pm-card.tone-critical.is-noted { border-left-color: var(--nx-gold); background: var(--nx-gold-tint); }
.nxrm-pm-card.tone-critical.is-noted .nxrm-pm-urgency,
.nxrm-pm-card.tone-critical.is-noted .nxrm-pm-when { color: var(--nx-gold); }
.nxrm-pm-notedchip { font-weight: 600; color: var(--nx-gold); text-transform: none; letter-spacing: 0.02em; }
.nxrm-pm-title {
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 15px; font-weight: 600;
  color: var(--nx-text-strong); line-height: 1.3; margin-bottom: 4px;
}
.nxrm-pm-row2 { display: flex; flex-wrap: wrap; gap: 4px; font-size: 12px; color: var(--nx-muted); }
.nxrm-pm-freq { font-family: 'JetBrains Mono', ui-monospace, monospace; font-size: 11px; }
.nxrm-pm-meta {
  font-size: 11px; color: var(--nx-gold); margin-top: 4px;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
}
.nxrm-pm-action { text-align: center; }
.nxrm-pm-done {
  background: var(--nx-gold); color: var(--nx-gold-on);
  border: 1.5px solid var(--nx-gold-deep);
  border-radius: 12px; padding: 6px 8px;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 10px; font-weight: 700; letter-spacing: 0.05em;
  cursor: pointer; line-height: 1.2; width: 70px;
}
.nxrm-pm-done:hover { background: var(--nx-gold-deep); }

/* ═══════════════════════ DAILY BRIEF ═══════════════════════ */
.nxrm-brief-page { padding: 18px 14px 80px; max-width: 720px; margin: 0 auto; }
.nxrm-brief-header {
  margin-bottom: 24px; padding-bottom: 14px;
  border-bottom: 1px solid var(--nx-gold-line);
}
.nxrm-brief-greeting {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 11px; letter-spacing: 0.20em;
  color: var(--nx-gold); text-transform: uppercase; margin-bottom: 4px;
}
.nxrm-brief-date {
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 28px; font-weight: 800;
  color: var(--nx-text-strong); letter-spacing: -0.01em;
  margin-bottom: 8px; line-height: 1;
}
.nxrm-brief-situation {
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 15px; color: var(--nx-text); line-height: 1.5;
}
.nxrm-brief-situation strong { color: var(--nx-text-strong); }
.nxrm-brief-list { display: flex; flex-direction: column; gap: 8px; }
.nxrm-brief-item {
  display: grid; grid-template-columns: 1fr 24px;
  align-items: center; gap: 10px;
  background: var(--nx-gold-tint); border: 1px solid var(--nx-gold-line);
  border-radius: 14px; padding: 10px 14px;
  text-align: left; cursor: pointer; width: 100%;
  transition: all 140ms ease;
}
.nxrm-brief-item:hover { transform: translateX(2px); border-color: var(--nx-gold); }
.nxrm-brief-item.tone-critical { border-left: 4px solid var(--nx-red); background: rgba(210,75,75,0.06); }
.nxrm-brief-item.tone-high     { border-left: 4px solid #d4744e; background: rgba(212,116,78,0.06); }
.nxrm-brief-item.tone-warn     { border-left: 4px solid var(--nx-gold); background: rgba(212,164,78,0.06); }
.nxrm-brief-item.tone-normal   { border-left: 4px solid var(--nx-gold); }
.nxrm-brief-item.tone-ok       { border-left: 4px solid var(--nx-green); }
.nxrm-brief-item.tone-mute     { opacity: 0.7; }
.nxrm-brief-body { min-width: 0; }
.nxrm-brief-itemtitle {
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 15px; font-weight: 600;
  color: var(--nx-text-strong); line-height: 1.3; margin-bottom: 2px;
}
.nxrm-brief-itemmeta { font-size: 12px; color: var(--nx-muted); line-height: 1.4; }
.nxrm-brief-badges { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 4px; }
.nxrm-brief-badge {
  display: inline-flex;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 10px; letter-spacing: 0.05em;
  padding: 2px 8px; border-radius: 12px;
  background: rgba(0,0,0,0.35); border: 1px solid var(--nx-gold-line);
  color: var(--nx-text);
}
.nxrm-brief-badge.is-alert { background: rgba(210,75,75,0.10); border-color: var(--nx-red); color: var(--nx-red); }
.nxrm-brief-cost {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 12px; font-weight: 700; color: var(--nx-gold);
}
.nxrm-brief-arrow { font-size: 16px; color: var(--nx-muted); }
.nxrm-brief-cta {
  display: block; width: 100%; margin-top: 10px; padding: 10px 14px;
  background: rgba(255,254,246,0.04); border: 1px dashed var(--nx-gold-line);
  border-radius: 12px;
  color: var(--nx-gold);
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 12px; letter-spacing: 0.08em;
  text-align: center; cursor: pointer; transition: all 140ms ease;
}
.nxrm-brief-cta:hover {
  background: var(--nx-gold-mist); border-style: solid; border-color: var(--nx-gold);
}
.nxrm-brief-spend-row { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.nxrm-brief-spend-tile {
  background: var(--nx-gold-tint); border: 1px solid var(--nx-gold-line);
  border-radius: 14px; padding: 10px 12px;
}
.nxrm-brief-spend-lbl {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 9px; letter-spacing: 0.14em; text-transform: uppercase;
  color: var(--nx-muted); margin-bottom: 4px;
}
.nxrm-brief-spend-val {
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 18px; font-weight: 700; color: var(--nx-text-strong);
}
.nxrm-brief-win {
  display: flex; align-items: center; gap: 10px; padding: 8px 12px;
  background: rgba(108,208,154,0.08); border-left: 3px solid var(--nx-green);
  border-radius: 10px; font-size: 13px;
}
.nxrm-brief-win-glyph { color: var(--nx-green); font-weight: 700; font-size: 14px; }
.nxrm-brief-win-title { flex: 1; color: var(--nx-text-strong); font-weight: 600; }
.nxrm-brief-win-meta { color: var(--nx-muted); font-size: 12px; }
.nxrm-brief-calm {
  text-align: center; padding: 40px 20px;
  background: var(--nx-gold-tint); border: 1.5px dashed var(--nx-gold-line);
  border-radius: 18px;
}
.nxrm-brief-calm-glyph { font-size: 48px; color: var(--nx-gold); margin-bottom: 12px; }
.nxrm-brief-calm-text {
  font-size: 14px; color: var(--nx-muted);
  max-width: 380px; margin: 0 auto 16px; line-height: 1.5;
}

/* ═══════════════════════ SPEND VIEW ═══════════════════════ */
.nxrm-period-toggle, .nxrm-group-toggle {
  display: flex; gap: 4px;
  background: rgba(0,0,0,0.3); padding: 3px;
  border: 1px solid var(--nx-gold-line); border-radius: 12px;
}
.nxrm-period-btn, .nxrm-group-btn {
  background: transparent; border: none;
  padding: 6px 14px; border-radius: 10px;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 11px; letter-spacing: 0.05em;
  color: var(--nx-muted); cursor: pointer;
  transition: all 140ms ease;
}
.nxrm-period-btn.is-active, .nxrm-group-btn.is-active {
  background: var(--nx-gold); color: var(--nx-gold-on); font-weight: 700;
}
.nxrm-group-toggle { margin-bottom: 10px; }
.nxrm-flag-section {
  background: rgba(210,75,75,0.05);
  border: 1.5px solid rgba(210,75,75,0.30);
  border-radius: 18px; padding: 14px; margin-bottom: 18px;
}
.nxrm-flag-section .nxrm-section-title { color: var(--nx-red); border-bottom-color: rgba(210,75,75,0.20); }
.nxrm-flag-bar {
  height: 6px; background: rgba(0,0,0,0.4);
  border-radius: 3px; margin: 8px 0; overflow: hidden;
}
.nxrm-flag-fill {
  height: 100%;
  background: linear-gradient(90deg, var(--nx-red), var(--nx-red));
  border-radius: 3px;
  transition: width 0.5s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.nxrm-flag-meta {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 11px; color: var(--nx-muted);
}
.nxrm-group-list { display: flex; flex-direction: column; gap: 6px; }
.nxrm-group-row {
  display: grid; grid-template-columns: 140px 1fr 100px;
  align-items: center; gap: 10px;
  padding: 8px 10px; background: var(--nx-gold-tint); border-radius: 12px;
}
.nxrm-group-name {
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 13px; color: var(--nx-text-strong); font-weight: 600;
}
.nxrm-group-bar { height: 6px; background: rgba(0,0,0,0.4); border-radius: 3px; overflow: hidden; }
.nxrm-group-fill {
  height: 100%;
  background: linear-gradient(90deg, var(--nx-gold-deep), var(--nx-gold));
  border-radius: 3px;
}
.nxrm-group-val {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 13px; font-weight: 700; color: var(--nx-gold); text-align: right;
}

/* ═══════════════════════ BUDGET CARDS ═══════════════════════ */
.nxrm-budget-grid {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 10px;
}
.nxrm-budget-card {
  background: var(--nx-gold-tint); border: 1px solid var(--nx-gold-line);
  border-left: 4px solid var(--nx-gold);
  border-radius: 14px; padding: 12px 14px;
  cursor: pointer; transition: all 140ms ease;
}
.nxrm-budget-card:hover { transform: translateY(-1px); border-color: var(--nx-gold); }
.nxrm-budget-card.tone-good     { border-left-color: var(--nx-green); }
.nxrm-budget-card.tone-info     { border-left-color: var(--nx-gold); }
.nxrm-budget-card.tone-warn     { border-left-color: var(--nx-gold); }
.nxrm-budget-card.tone-critical { border-left-color: var(--nx-red); background: rgba(210,75,75,0.06); }
.nxrm-budget-card.tone-mute     { opacity: 0.65; }
.nxrm-budget-head {
  display: flex; justify-content: space-between; align-items: flex-start;
  margin-bottom: 8px;
}
.nxrm-budget-restaurant {
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 15px; font-weight: 700; color: var(--nx-text-strong);
}
.nxrm-budget-year {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 10px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--nx-muted);
}
.nxrm-budget-pct {
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 24px; font-weight: 800; line-height: 1;
  color: var(--nx-text-strong);
}
.nxrm-budget-card.tone-critical .nxrm-budget-pct { color: var(--nx-red); }
.nxrm-budget-card.tone-warn     .nxrm-budget-pct { color: var(--nx-gold); }
.nxrm-budget-card.tone-good     .nxrm-budget-pct { color: var(--nx-green); }
.nxrm-budget-bar {
  position: relative; height: 8px;
  background: rgba(0,0,0,0.4); border-radius: 4px;
  overflow: visible; margin-bottom: 8px;
}
.nxrm-budget-actual {
  height: 100%;
  background: linear-gradient(90deg, var(--nx-gold-deep), var(--nx-gold));
  border-radius: 4px;
  transition: width 0.5s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.nxrm-budget-card.tone-critical .nxrm-budget-actual { background: linear-gradient(90deg, var(--nx-red), var(--nx-red)); }
.nxrm-budget-card.tone-warn     .nxrm-budget-actual { background: linear-gradient(90deg, #d4a44e, var(--nx-gold)); }
.nxrm-budget-card.tone-good     .nxrm-budget-actual { background: linear-gradient(90deg, #4ab078, var(--nx-green)); }
.nxrm-budget-pace {
  position: absolute; top: -2px; bottom: -2px; width: 2px;
  background: var(--nx-text-strong);
  box-shadow: 0 0 4px rgba(255,255,255,0.4);
}
.nxrm-budget-foot {
  display: flex; justify-content: space-between;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 11px; color: var(--nx-muted);
}
.nxrm-budget-var { font-weight: 700; }
.nxrm-budget-card.tone-critical .nxrm-budget-var { color: var(--nx-red); }
.nxrm-budget-card.tone-warn     .nxrm-budget-var { color: var(--nx-gold); }
.nxrm-budget-card.tone-good     .nxrm-budget-var { color: var(--nx-green); }
.nxrm-budget-empty {
  background: rgba(255,254,246,0.04);
  border: 1.5px dashed var(--nx-gold-line);
  border-radius: 14px; padding: 24px;
  color: var(--nx-gold);
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 14px; text-align: center; cursor: pointer; width: 100%;
}
.nxrm-budget-empty:hover {
  border-color: var(--nx-gold); background: var(--nx-gold-mist); border-style: solid;
}

/* ═══════════════════════ COMPLIANCE MODAL ═══════════════════════ */
.nxrm-compliance-body { margin-bottom: 16px; font-size: 13px; color: var(--nx-text); }
.nxrm-compliance-row {
  padding: 6px 0; border-bottom: 1px solid var(--nx-gold-line); line-height: 1.5;
}
.nxrm-compliance-row:last-child { border-bottom: none; }
.nxrm-compliance-row strong { color: var(--nx-gold); font-weight: 600; margin-right: 8px; }
.nxrm-compliance-row .is-alert { color: var(--nx-red); font-weight: 700; }
.nxrm-compliance-row a { color: var(--nx-gold); text-decoration: underline; }
.nxrm-compliance-notes {
  margin-top: 8px; padding: 8px 10px;
  background: rgba(0,0,0,0.3); border-left: 2px solid var(--nx-gold);
  font-style: italic; font-size: 12px; color: var(--nx-muted);
}

/* ═══════════════════════ OVERLAY (modal base) ═══════════════════════ */
.nxrm-overlay {
  position: fixed; inset: 0;
  background: rgba(0,0,0,0.65);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  display: flex; align-items: center; justify-content: center;
  z-index: 2000; padding: 18px;
  opacity: 0; transition: opacity 220ms ease;
}
.nxrm-overlay.is-visible { opacity: 1; }
/* v299 — scope the MODAL card to the overlay. As a bare `.nxrm-card` this
   duplicated (and overrode) the inbox/list card at line ~107, capping list
   cards at 520px with the heavy modal border/shadow. Modal cards are always
   built inside .nxrm-overlay (core.js), so this still matches them. */
.nxrm-overlay .nxrm-card {
  background: var(--nx-bg, #0e1320);
  border: 1.5px solid var(--nx-gold);
  border-radius: 20px; padding: 20px;
  max-width: 520px; width: 100%; max-height: 90vh; overflow-y: auto;
  box-shadow: 0 18px 48px rgba(0,0,0,0.55);
}
.nxrm-card-head {
  position: relative; margin-bottom: 18px; padding-bottom: 14px;
  border-bottom: 1px solid var(--nx-gold-line);
}
.nxrm-close {
  position: absolute; top: -2px; right: -2px;
  background: transparent; border: none; font-size: 22px;
  color: var(--nx-muted); cursor: pointer; padding: 4px 8px; line-height: 1;
}
.nxrm-close:hover { color: var(--nx-text-strong); }

/* ═══════════════════════ QUICK-CREATE TEMPLATES ═══════════════════════ */
.nxrm-template-grid {
  display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px;
  margin-bottom: 14px;
}
.nxrm-template-card {
  background: var(--nx-gold-tint); border: 1px solid var(--nx-gold-line);
  border-radius: 14px; padding: 14px 10px;
  text-align: center; cursor: pointer;
  transition: all 140ms ease; position: relative;
}
.nxrm-template-card:hover {
  transform: translateY(-1px);
  border-color: var(--nx-gold); background: var(--nx-gold-mist);
}
.nxrm-template-glyph { font-size: 28px; margin-bottom: 4px; }
.nxrm-template-title {
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 12px; color: var(--nx-text-strong);
  line-height: 1.3; font-weight: 600;
}
.nxrm-template-pri {
  position: absolute; top: 6px; right: 6px;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 8px; padding: 1px 5px;
  background: rgba(210,75,75,0.15); color: var(--nx-red);
  border-radius: 10px; letter-spacing: 0.06em;
}
.nxrm-template-custom {
  width: 100%;
  background: rgba(255,254,246,0.04);
  border: 1px dashed var(--nx-gold-line);
  border-radius: 14px; padding: 12px;
  color: var(--nx-gold);
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 13px; font-weight: 600; cursor: pointer;
}
.nxrm-template-custom:hover { border-color: var(--nx-gold); background: var(--nx-gold-mist); }

.nxrm-eq-list { max-height: 50vh; overflow-y: auto; }
.nxrm-eq-row {
  display: block; width: 100%; text-align: left;
  padding: 10px 12px;
  background: rgba(255,254,246,0.03); border: 1px solid var(--nx-gold-line);
  border-radius: 12px; margin-bottom: 6px;
  cursor: pointer; transition: border-color 140ms ease;
}
.nxrm-eq-row:hover { border-color: var(--nx-gold); }
.nxrm-eq-name {
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 14px; font-weight: 600; color: var(--nx-text-strong);
}
.nxrm-eq-meta {
  font-size: 11px; color: var(--nx-muted);
  font-family: 'JetBrains Mono', ui-monospace, monospace;
}

/* ═══════════════════════ TROUBLESHOOTING WIZARD ═══════════════════════ */
.nxrm-ts-card { max-width: 560px; }
.nxrm-ts-meta { display: flex; gap: 6px; flex-wrap: wrap; margin-bottom: 12px; }
.nxrm-ts-chip {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 10px; letter-spacing: 0.08em;
  padding: 3px 8px;
  background: rgba(0,0,0,0.4); border: 1px solid var(--nx-gold-line);
  border-radius: 12px; color: var(--nx-text);
}
.nxrm-ts-intro {
  font-size: 13px; color: var(--nx-muted);
  margin-bottom: 14px; line-height: 1.5;
}
.nxrm-ts-steps { list-style: none; padding: 0; margin: 0 0 16px; }
.nxrm-ts-step {
  display: flex; gap: 10px; padding: 10px 12px;
  background: var(--nx-gold-tint); border: 1px solid var(--nx-gold-line);
  border-radius: 12px; margin-bottom: 6px;
  cursor: pointer; align-items: flex-start;
  transition: border-color 140ms ease;
}
.nxrm-ts-step:hover { border-color: var(--nx-gold); }
.nxrm-ts-check {
  margin-top: 2px; width: 18px; height: 18px;
  accent-color: var(--nx-gold); cursor: pointer;
}
.nxrm-ts-label {
  flex: 1;
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 14px; color: var(--nx-text);
  line-height: 1.5; cursor: pointer;
}
.nxrm-ts-check:checked + .nxrm-ts-label {
  color: var(--nx-muted); text-decoration: line-through;
}
.nxrm-ts-step-static {
  padding: 8px 12px; border-left: 2px solid var(--nx-gold);
  margin-bottom: 6px;
  font-size: 13px; color: var(--nx-text); line-height: 1.5;
}
.nxrm-ts-additional {
  background: rgba(0,0,0,0.3); padding: 8px 12px; border-radius: 10px;
  font-size: 11px; color: var(--nx-muted);
  font-style: italic; margin-bottom: 12px;
}
.nxrm-ts-actions { display: flex; flex-direction: column; gap: 6px; }
.nxrm-ts-btn {
  padding: 12px; border-radius: 14px;
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 14px; font-weight: 700; cursor: pointer;
  transition: transform 100ms ease, box-shadow 140ms ease;
  border: 1.5px solid;
}
.nxrm-ts-btn.is-success {
  background: var(--nx-green); color: #0a2c18; border-color: #4ab078;
}
.nxrm-ts-btn.is-success:hover { transform: translateY(-1px); box-shadow: 0 6px 14px rgba(108,208,154,0.30); }
.nxrm-ts-btn.is-fallback {
  background: var(--nx-gold); color: var(--nx-gold-on); border-color: var(--nx-gold-deep);
}
.nxrm-ts-btn.is-fallback:hover { transform: translateY(-1px); box-shadow: 0 6px 14px var(--nx-gold-aura); }
.nxrm-ts-btn.is-skip {
  background: rgba(255,254,246,0.05); color: var(--nx-muted);
  border-color: var(--nx-gold-line);
  font-size: 12px; padding: 8px;
}
.nxrm-ts-library { padding: 0; }
.nxrm-ts-guide {
  background: rgba(255,254,246,0.03); border: 1px solid var(--nx-gold-line);
  border-radius: 14px; padding: 10px 14px; margin-bottom: 8px;
}
.nxrm-ts-guide-summary {
  display: flex; justify-content: space-between; align-items: center;
  cursor: pointer; list-style: none;
}
.nxrm-ts-guide-summary::-webkit-details-marker { display: none; }
.nxrm-ts-guide-summary::before {
  content: '▸'; margin-right: 8px; color: var(--nx-gold);
  transition: transform 200ms ease; display: inline-block;
}
.nxrm-ts-guide[open] .nxrm-ts-guide-summary::before { transform: rotate(90deg); }
.nxrm-ts-guide-title {
  flex: 1;
  font-family: 'Outfit', system-ui, sans-serif;
  font-weight: 600; color: var(--nx-text-strong);
}

/* ═══════════════════════ DISPATCH PICKER ═══════════════════════ */
.nxrm-dispatch-list {
  display: flex; flex-direction: column; gap: 4px;
  max-height: 320px; overflow-y: auto;
}
.nxrm-dispatch-row {
  display: flex; justify-content: space-between; align-items: center;
  gap: 8px; padding: 10px 12px;
  background: rgba(255,254,246,0.03); border: 1px solid var(--nx-gold-line);
  border-radius: 12px; margin-bottom: 4px;
}
.nxrm-dispatch-row.is-assigned {
  background: var(--nx-gold-mist); border-color: var(--nx-gold);
}
.nxrm-dispatch-name {
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 13px; font-weight: 600;
  color: var(--nx-text-strong);
  display: flex; align-items: center; gap: 6px;
  flex: 1; min-width: 0;
}
.nxrm-dispatch-actions { display: flex; gap: 4px; }
.nxrm-dispatch-btn {
  width: 36px; height: 36px;
  display: flex; align-items: center; justify-content: center;
  background: var(--nx-gold-tint); border: 1px solid var(--nx-gold-line);
  border-radius: 12px; font-size: 16px; cursor: pointer;
  transition: all 140ms ease;
}
.nxrm-dispatch-btn:hover { background: var(--nx-gold-mist); border-color: var(--nx-gold); }

/* ═══════════════════════ KEYBOARD HELP ═══════════════════════ */
.nxrm-kb { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
@media (max-width: 480px) { .nxrm-kb { grid-template-columns: 1fr; } }
.nxrm-kb-grouptitle {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 10.5px; letter-spacing: 0.18em;
  color: var(--nx-gold); text-transform: uppercase;
  margin-bottom: 8px; padding-bottom: 4px;
  border-bottom: 1px solid var(--nx-gold-line);
}
.nxrm-kb-row {
  display: flex; align-items: center; gap: 8px;
  padding: 4px 0; font-size: 13px; color: var(--nx-text);
}
.nxrm-kb-row kbd {
  display: inline-block; min-width: 22px; padding: 2px 6px;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 11px; font-weight: 700; text-align: center;
  background: var(--nx-gold-tint); border: 1.5px solid var(--nx-gold-line);
  border-bottom-width: 2.5px; border-radius: 10px;
  color: var(--nx-gold);
}

/* ═══════════════════════ TOAST FALLBACK ═══════════════════════ */
.nxrm-toast {
  position: fixed; bottom: 20px; left: 50%;
  transform: translateX(-50%) translateY(20px);
  background: var(--nx-bg);
  border: 1.5px solid var(--nx-gold);
  border-radius: 16px; padding: 12px 20px;
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 14px; color: var(--nx-text-strong);
  box-shadow: 0 12px 32px rgba(0,0,0,0.4);
  opacity: 0; pointer-events: none;
  transition: all 240ms ease;
  z-index: 3000;
}
.nxrm-toast.is-visible {
  opacity: 1; transform: translateX(-50%) translateY(0);
}

/* ╔═══════════════════════════════════════════════════════════════════╗
   ║   HOME · R&M EXTENSION                                            ║
   ║   Mounted by home-rm.js into the existing #homeView.              ║
   ║   Five widgets: Trajan's read, R&M tiles, Decisions card,         ║
   ║   Work Orders feed, Wins celebration.                             ║
   ╚═══════════════════════════════════════════════════════════════════╝ */

/* ═══════════════════════ TRAJAN'S READ ═══════════════════════ */
.home-rm-read {
  display: flex; align-items: flex-start; gap: 10px;
  margin: 6px 0 14px;
  padding: 8px 14px 8px 12px;
  border-left: 2px solid var(--nx-gold, #d4a44e);
  background: linear-gradient(to right,
              var(--nx-gold-tint, rgba(212,164,78,0.06)) 0%,
              transparent 100%);
}
.home-rm-read-mark {
  font-size: 14px; line-height: 1.5;
  color: var(--nx-gold);
  flex-shrink: 0;
}
.home-rm-read-text {
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 14px; font-style: italic;
  color: var(--nx-text, #ede9e0);
  line-height: 1.5;
  letter-spacing: 0.005em;
}

/* ═══════════════════════ R&M TILES ═══════════════════════ */
.home-rm-tiles {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 6px;
  margin: 6px 0 14px;
}
@media (max-width: 520px) {
  .home-rm-tiles { grid-template-columns: repeat(2, 1fr); gap: 6px; }
}
.home-rm-tile {
  background: var(--nx-gold-tint, rgba(212,164,78,0.06));
  border: 1px solid var(--nx-gold-line, rgba(212,164,78,0.20));
  border-radius: 14px;
  padding: 10px 8px;
  text-align: center;
  cursor: pointer;
  color: var(--nx-text-strong);   /* theme-aware: was unset → text inherited a
                                      fixed dark color, invisible on dark lapis */
  transition: all 140ms ease;
}
.home-rm-tile:hover {
  border-color: var(--nx-gold);
  transform: translateY(-1px);
}
.home-rm-tile.is-warn {
  border-color: var(--nx-gold-line-2);
  background: var(--nx-gold-faint);
}
.home-rm-tile-num {
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 18px; font-weight: 800;
  color: var(--nx-text-strong, #f5f1e8);
  line-height: 1.1;
  letter-spacing: -0.01em;
}
.home-rm-tile-grade {
  font-size: 22px;
  line-height: 1;
}
.home-rm-tile-grade.tone-ok       { color: var(--nx-green); }
.home-rm-tile-grade.tone-good     { color: var(--nx-green); }
.home-rm-tile-grade.tone-warn     { color: var(--nx-gold); }
.home-rm-tile-grade.tone-critical { color: var(--nx-red); }
.home-rm-tile-grade.tone-mute     { color: var(--nx-muted, #8a8576); }
.home-rm-tile-lbl {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 9px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--nx-muted, #8a8576);
  margin-top: 3px;
}

/* ═══════════════════════ DECISIONS CARD ═══════════════════════ */
.home-rm-decisions {
  background: var(--nx-gold-tint, rgba(212,164,78,0.06));
  border: 1.5px solid var(--nx-gold-line, rgba(212,164,78,0.20));
  border-left: 4px solid var(--nx-gold, #d4a44e);
  border-radius: 16px;
  padding: 12px 14px;
  margin-bottom: 16px;
}
.home-rm-decisions-head {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 10.5px;
  letter-spacing: 0.18em;
  color: var(--nx-gold);
  text-transform: uppercase;
  margin-bottom: 10px;
  padding-bottom: 6px;
  border-bottom: 1px dashed var(--nx-gold-line);
}
.home-rm-decision-row {
  display: grid;
  grid-template-columns: 32px 1fr 16px;
  align-items: center;
  gap: 10px;
  width: 100%;
  padding: 10px 8px;
  background: transparent;
  border: none;
  border-radius: 12px;
  cursor: pointer;
  text-align: left;
  transition: background 140ms ease;
}
.home-rm-decision-row:hover {
  background: rgba(255, 254, 246, 0.04);
}
.home-rm-decision-row + .home-rm-decision-row {
  border-top: 1px solid rgba(212, 164, 78, 0.12);
  margin-top: 4px;
  padding-top: 12px;
}
.home-rm-decision-row.is-critical {
  background: rgba(210, 75, 75, 0.05);
}
.home-rm-decision-row.is-critical:hover {
  background: rgba(210, 75, 75, 0.10);
}
.home-rm-decision-glyph {
  font-size: 22px;
  text-align: center;
  line-height: 1;
}
.home-rm-decision-body { min-width: 0; }
.home-rm-decision-title {
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 14px; font-weight: 600;
  color: var(--nx-text-strong);
  line-height: 1.3;
  margin-bottom: 2px;
}
.home-rm-decision-row.is-critical .home-rm-decision-title {
  color: var(--nx-red);
}
.home-rm-decision-meta {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 11px;
  color: var(--nx-muted);
  line-height: 1.4;
}
.home-rm-decision-arrow {
  font-size: 16px;
  color: var(--nx-muted);
  text-align: center;
}
.home-rm-decision-row:hover .home-rm-decision-arrow {
  color: var(--nx-gold);
}

/* — Budget pace bar (embedded in decisions card) */
.home-rm-pace {
  margin-top: 10px;
  padding-top: 10px;
  border-top: 1px dashed var(--nx-gold-line);
}
.home-rm-pace-lbl {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 12px;
  color: var(--nx-text-strong);
  font-weight: 600;
  margin-bottom: 5px;
}
.home-rm-pace-pct {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 12px;
  color: var(--nx-text-strong);
}
.home-rm-pace.tone-critical .home-rm-pace-pct { color: var(--nx-red); }
.home-rm-pace.tone-warn     .home-rm-pace-pct { color: var(--nx-gold); }
.home-rm-pace.tone-ok       .home-rm-pace-pct { color: var(--nx-green); }
.home-rm-pace-bar {
  position: relative;
  height: 7px;
  background: rgba(0, 0, 0, 0.4);
  border-radius: 4px;
  overflow: visible;
  margin-bottom: 6px;
}
.home-rm-pace-fill {
  height: 100%;
  background: linear-gradient(90deg, var(--nx-gold-deep, #b88830), var(--nx-gold));
  border-radius: 4px;
  transition: width 0.5s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.home-rm-pace.tone-critical .home-rm-pace-fill {
  background: linear-gradient(90deg, var(--nx-red), var(--nx-red));
}
.home-rm-pace.tone-warn .home-rm-pace-fill {
  background: linear-gradient(90deg, #d4a44e, var(--nx-gold));
}
.home-rm-pace.tone-ok .home-rm-pace-fill {
  background: linear-gradient(90deg, #4ab078, var(--nx-green));
}
.home-rm-pace-marker {
  position: absolute; top: -2px; bottom: -2px;
  width: 2px;
  background: var(--nx-text-strong);
  box-shadow: 0 0 4px rgba(255, 255, 255, 0.4);
}
.home-rm-pace-legend {
  display: flex;
  justify-content: space-between;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 10.5px;
  color: var(--nx-muted);
}
.home-rm-pace-var { font-weight: 700; }
.home-rm-pace.tone-critical .home-rm-pace-var { color: var(--nx-red); }
.home-rm-pace.tone-warn     .home-rm-pace-var { color: var(--nx-gold); }
.home-rm-pace.tone-ok       .home-rm-pace-var { color: var(--nx-green); }

/* ═══════════════════════ WORK ORDERS FEED ═══════════════════════ */
.home-rm-wo {
  margin: 18px 0;
}
.home-rm-wo .nx-section {
  display: flex;
  justify-content: space-between;
  align-items: center;
}
.home-rm-wo-count {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 10px;
  letter-spacing: 0.10em;
  color: var(--nx-muted);
  text-transform: uppercase;
}
.home-rm-wo-list {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin-bottom: 8px;
}
.home-rm-wo-item {
  display: grid;
  grid-template-columns: 26px 1fr auto;
  align-items: center;
  gap: 10px;
  width: 100%;
  padding: 9px 12px;
  background: var(--nx-gold-tint);
  border: 1px solid var(--nx-gold-line);
  border-radius: 13px;
  cursor: pointer;
  text-align: left;
  transition: all 140ms ease;
}
.home-rm-wo-item:hover {
  border-color: var(--nx-gold);
  transform: translateX(2px);
}
.home-rm-wo-item.tone-critical {
  border-left: 3px solid var(--nx-red);
  background: rgba(210, 75, 75, 0.06);
}
.home-rm-wo-item.tone-high {
  border-left: 3px solid #d4744e;
  background: rgba(212, 116, 78, 0.06);
}
.home-rm-wo-item.tone-normal {
  border-left: 3px solid var(--nx-gold);
}
.home-rm-wo-glyph {
  font-size: 16px;
  text-align: center;
}
.home-rm-wo-body { min-width: 0; }
.home-rm-wo-title {
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 14px; font-weight: 600;
  color: var(--nx-text-strong);
  line-height: 1.3;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.home-rm-wo-meta {
  font-size: 11px;
  color: var(--nx-muted);
  margin-top: 1px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.home-rm-wo-age {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 10.5px;
  color: var(--nx-muted);
}
.home-rm-wo-viewall {
  display: block;
  width: 100%;
  padding: 8px 12px;
  background: transparent;
  border: 1px dashed var(--nx-gold-line);
  border-radius: 12px;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 11px;
  letter-spacing: 0.06em;
  color: var(--nx-gold);
  cursor: pointer;
  text-align: center;
  transition: all 140ms ease;
}
.home-rm-wo-viewall:hover {
  background: var(--nx-gold-mist, rgba(212,164,78,0.10));
  border-style: solid;
  border-color: var(--nx-gold);
}

/* ═══════════════════════ WINS CELEBRATION ═══════════════════════ */
.home-rm-wins {
  background: linear-gradient(135deg,
              rgba(108, 208, 154, 0.06) 0%,
              transparent 60%);
  border: 1px solid rgba(108, 208, 154, 0.25);
  border-left: 3px solid var(--nx-green);
  border-radius: 14px;
  padding: 10px 14px;
  margin-bottom: 16px;
}
.home-rm-wins-head {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 10.5px;
  letter-spacing: 0.16em;
  color: var(--nx-green);
  text-transform: uppercase;
  margin-bottom: 8px;
  padding-bottom: 6px;
  border-bottom: 1px dashed rgba(108, 208, 154, 0.20);
}
.home-rm-wins-glyph {
  font-size: 14px;
  font-weight: 700;
}
.home-rm-wins-pill {
  background: rgba(108, 208, 154, 0.14);
  color: var(--nx-green);
  padding: 1px 8px;
  border-radius: 12px;
  font-weight: 700;
  font-size: 9.5px;
}
.home-rm-wins-pill.is-quiet {
  background: rgba(108, 208, 154, 0.06);
  color: var(--nx-muted);
}
.home-rm-wins-spend {
  margin-left: auto;
  color: var(--nx-muted);
  font-weight: 700;
}
.home-rm-wins-list {
  display: flex;
  flex-direction: column;
  gap: 10px;             /* v259 — Alfredo: "for wins, increase separation" */
  margin-top: 10px;      /* air between the WINS header/divider and the rows */
}
.home-rm-win {
  display: grid;
  grid-template-columns: 18px 1fr auto;
  align-items: center;
  gap: 10px;
  padding: 7px 0;
  border-bottom: 1px solid rgba(255,255,255,.05);  /* quiet rule between wins */
}
.home-rm-win:last-child { border-bottom: 0; padding-bottom: 2px; }
.home-rm-win-glyph {
  color: var(--nx-green);
  font-weight: 700;
  font-size: 14px;
  text-align: center;
}
.home-rm-win-body { min-width: 0; }
.home-rm-win-title {
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 13px; font-weight: 600;
  color: var(--nx-text-strong);
  line-height: 1.3;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.home-rm-win-meta {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 10.5px;
  color: var(--nx-muted);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.home-rm-win-when {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 9.5px;
  letter-spacing: 0.10em;
  text-transform: uppercase;
  color: var(--nx-muted);
}


/* ═══════════════════════════════════════════════════════════════════════
   2026 VISUAL REFRESH + MOBILE SAFETY  (consolidated — was refresh-2026.css)
   ───────────────────────────────────────────────────────────────────────
   Folded into nexus-rm.css (the LAST-loaded stylesheet) so it wins the
   cascade with no extra file. Reversible: delete from here to end-of-file.
   Keeps the NEXUS identity (Roman gold, editorial, dark). Sections:
     1 ambient depth · 2 masthead coin · 3 chrome lift ·
     4 desktop frame · 5 primitive lift · 6 iPhone-Safari overflow safety.
   The PIN/login screen is intentionally left at its ORIGINAL look.
   ═══════════════════════════════════════════════════════════════════════ */

/* ─── 1. AMBIENT DEPTH ─────────────────────────────────────────────────── */
[data-theme="dark"] body {
  background:
    radial-gradient(125% 70% at 50% -8%,  rgba(212, 164, 78, 0.11), rgba(212,164,78,0) 58%),
    radial-gradient(120% 85% at 50% 112%, rgba(28, 40, 68, 0.55),   rgba(28,40,68,0)  55%),
    linear-gradient(180deg, #0c111d 0%, #0e1320 46%, #090d16 100%) !important;
  background-attachment: fixed !important;
}
[data-theme="light"] body {
  background:
    radial-gradient(125% 70% at 50% -8%, rgba(184, 136, 48, 0.10), rgba(184,136,48,0) 58%),
    linear-gradient(180deg, #f3ecdd 0%, #efe7d6 60%, #e9e0cc 100%) !important;
  background-attachment: fixed !important;
}

/* ─── 2. MASTHEAD MINI COIN — ~15% smaller (login hero left original) ──── */
.nx-mast-coin { width: 29px !important; height: 29px !important; }

/* ─── 3. CHROME LIFT (top nav + bottom nav) ────────────────────────────── */
[data-theme="dark"] .nav {
  background: rgba(14, 19, 32, 0.72) !important;
  backdrop-filter: blur(18px) saturate(1.3) !important;
  -webkit-backdrop-filter: blur(18px) saturate(1.3) !important;
  border-bottom: 1px solid var(--nx-gold-line) !important;
  box-shadow: 0 6px 22px rgba(4, 8, 16, 0.45) !important;
}
[data-theme="light"] .nav {
  background: rgba(243, 236, 221, 0.78) !important;
  backdrop-filter: blur(18px) saturate(1.2) !important;
  -webkit-backdrop-filter: blur(18px) saturate(1.2) !important;
  border-bottom: 1px solid var(--nx-gold-line) !important;
  box-shadow: 0 6px 18px rgba(120, 100, 70, 0.12) !important;
}
[data-theme="dark"] .bottom-nav {
  box-shadow: 0 -6px 24px rgba(4, 8, 16, 0.5) !important;
}
.bnav-btn.active::before { box-shadow: 0 0 16px var(--nx-gold-glow); }

/* ─── 4. DESKTOP LAYOUT — defer to the PC sidebar rail (v3) ────────────────
   The desktop layout is the "PC SIDEBAR NAV" media query in index.html: a
   fixed 240px nav rail on the left, with the workspace (.main) shifted right
   to fill the rest of the viewport. v1/v2 here ALSO tried to clamp #appWrap
   into a narrow centered "phone frame" — and the two fought. The clamp boxed
   the whole app into a 720px column in the middle of the screen, and the
   fixed rail (anchored to the clamp, not the viewport) landed ON TOP of the
   content, which was itself squeezed to a ~430px right-shifted sliver. That
   collision IS the "desktop looks very bad" report. Fix: stop clamping so the
   sidebar rail anchors to the viewport and the workspace fills the width;
   calm the backdrop; cap the reading column so content doesn't sprawl on wide
   monitors. Verified by geometry: rail x=0 w=240, workspace x=264 → edge. */
@media (min-width: 900px) {
  /* Quiet, focused backdrop — kill the wide gold wash, keep a faint top tint. */
  [data-theme="dark"] body {
    background:
      radial-gradient(70% 55% at 50% -25%, rgba(212,164,78,0.055), rgba(212,164,78,0) 60%),
      linear-gradient(180deg, #0b0f1a 0%, #090d16 100%) !important;
  }
  [data-theme="light"] body {
    background:
      radial-gradient(70% 55% at 50% -25%, rgba(184,136,48,0.06), rgba(184,136,48,0) 60%),
      linear-gradient(180deg, #efe7d6 0%, #e7ddc9 100%) !important;
  }

  /* Undo the old phone-frame clamp — let the app fill the viewport so the
     index.html sidebar rail + right-shifted workspace read correctly. The
     single-column views (.nxrm-page max-width:880, .nxrm-brief-page 720)
     already cap + `margin:0 auto`-center themselves inside the workspace, so
     content stays a comfortable reading width and the board keeps full width
     for its lanes — nothing more to clamp here. */
  #appWrap {
    max-width: none !important;
    margin: 0 !important;
    background: transparent !important;
    border-left: 0 !important;
    border-right: 0 !important;
    box-shadow: none !important;
  }

  /* Supabase-style section labels in the sidebar rail. `.nav-tabs .x`
     (specificity 0,2,0) beats the default `.nav-group-label{display:none}`
     below, so labels show ONLY in the ≥900px vertical rail — never inline in
     the 769–899px horizontal nav row. */
  .nav-tabs .nav-group-label {
    display: block;
    margin: 15px 12px 5px;
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 10.5px;
    font-weight: 700;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--nx-gold, #d4a44e);   /* was faint --nx-muted 9.5px — low contrast, easy to miss */
    user-select: none;
    pointer-events: none;
  }
  .nav-tabs .nav-group-label:first-child { margin-top: 4px; }
  /* Action tabs route to panes/popups, not a .view, so switchTo never marks
     them .active — a faint tint keeps them from reading as disabled. */
  .nav-tab.nav-tab-action { opacity: 0.94; }
}
/* Default: group labels are a rail-only affordance — hidden everywhere the
   rail isn't a vertical column. */
.nav-group-label { display: none; }

/* ─── 5. PRIMITIVE LIFT (hover-only, so touch never sticks) ─────────────── */
@media (hover: hover) and (pointer: fine) {
  .nx-card, .nx-card--elevated, .home-rm-tile, .home-kpi,
  .home-rm-decision-row, .home-rm-wo-item {
    transition: transform .16s ease, box-shadow .2s ease, border-color .2s ease !important;
  }
  .nx-card:hover, .nx-card--elevated:hover, .home-rm-tile:hover, .home-kpi:hover,
  .home-rm-decision-row:hover, .home-rm-wo-item:hover {
    transform: translateY(-2px);
    border-color: var(--nx-gold-line-2) !important;
    box-shadow: 0 1px 0 rgba(255, 255, 255, 0.05) inset, 0 10px 30px rgba(4, 8, 16, 0.45) !important;
  }
  .nx-pill--primary:hover {
    transform: translateY(-1px);
    box-shadow: 0 6px 22px var(--nx-gold-aura), 0 2px 8px rgba(0, 0, 0, 0.3);
  }
  .nx-pill--secondary:hover {
    border-color: var(--nx-gold) !important;
    background: var(--nx-gold-faint) !important;
  }
}
[data-theme="dark"] .home-rm-tile,
[data-theme="dark"] .home-kpi {
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.04), rgba(255, 255, 255, 0) 42%),
    var(--nx-elevated) !important;
}

/* ─── 6. MOBILE-BROWSER SAFETY (iPhone Safari) ──────────────────────────
   NEXUS runs mostly in mobile browsers, not the installed app. Keep content
   inside the viewport on narrow iPhones (SE = 375px): media never wider than
   the screen; flex rows can shrink+wrap (default min-width:auto refuses to
   shrink and pushes rows past the edge); long unbroken strings wrap. */
@media (max-width: 480px) {
  img, video, iframe { max-width: 100%; }
  .home-rm-wo-item, .home-rm-decision-row,
  .home-rm-wo-body, .home-rm-decision-body,
  .eq-row, .eq-row-main, .nx-listrow, .nx-card { min-width: 0; }
  .home-rm-wo-title, .home-rm-wo-meta,
  .home-rm-decision-title, .home-rm-decision-meta,
  .eq-row-name, .eq-row-sub, .eq-card-title, .eq-card-sub {
    overflow-wrap: anywhere;
  }
}

/* ─── 7. LOGIN → APP HANDOFF — no whole-screen zoom ─────────────────────
   The PIN screen exits with `transform: scale(1.05)` (css/nexus.css) while
   it fades, so right after login the entire login surface visibly zooms up
   ~5% over half a second — which reads as "the whole screen enlarges a
   second after logging in" (the delay is the auth round-trip). Keep the
   opacity fade for a soft reveal, but drop the scale so the app is simply
   uncovered at its true size instead of appearing to grow. */
.pin-screen.hidden { transform: none !important; }

/* ─── 8. TOUCH TARGETS — meet the 44px floor (WCAG 2.5.5 / Apple HIG) ────
   A 375px audit found two controls under 44px tall: the login language
   toggle (34px) and the masthead "more" button (42px). Bump both to 44px;
   center the icon button's contents so the glyph stays put in the taller
   hit area. Everything else (pin keys 62px, bottom-nav 56px) already passes. */
.pin-lang-btn { min-height: 44px; }
.nav-more {
  min-height: 44px;
  min-width: 44px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

/* ─── 9. REDUCED-MOTION BACKSTOP ────────────────────────────────────────
   Many stylesheets (clippy.css spins, coin/anomaly pulses, galaxy, chat,
   ordering, nexus.css) declare `infinite` animations WITHOUT a
   prefers-reduced-motion guard, and the design system's reduced-motion block
   isn't a blanket reset — so perpetual motion leaks through for users who
   asked the OS to reduce motion (a real vestibular-accessibility issue).
   This is a gentle global backstop: it lets one-shot reveals play normally
   but collapses INFINITE loops to a single cycle (no perpetual spin/pulse),
   which is the part that actually causes discomfort. Files that already set
   `animation:none` under their own guard still win — this only catches the
   ungated ones. Deliberately NOT zeroing duration, to avoid breaking
   reveal animations that lack `forwards`. */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-iteration-count: 1 !important;
    scroll-behavior: auto !important;
  }
}

/* ─── 10. DESKTOP POLISH + A11Y (audit Phase 2) ─────────────────────────────
   Sheets/modals are mobile bottom-sheets (slide up from translateY(100%),
   top-rounded, bottom-anchored). On a wide desktop that reads as a stretched
   phone UI — center it as a card with a fade+scale instead. Plus a visible
   keyboard focus ring on the sidebar rail, and two stray sub-44px controls. */
@keyframes nxSheetInDesktop {
  from { opacity: 0; transform: translateY(10px) scale(0.985); }
  to   { opacity: 1; transform: translateY(0) scale(1); }
}
@media (min-width: 900px) {
  .nx-sheet-backdrop { align-items: center !important; }
  .nx-sheet {
    max-height: calc(100dvh - 80px) !important;
    border-radius: 16px !important;
    border-bottom: 1px solid var(--nx-border) !important;
    box-shadow: 0 24px 70px rgba(0, 0, 0, 0.5) !important;
    animation: nxSheetInDesktop var(--nx-flow) !important;
  }
  .nx-sheet-handle { display: none !important; }   /* drag handle is meaningless when centered */

  /* Keyboard focus ring on the sidebar rail (was invisible → silent tab nav). */
  .nav-tab:focus-visible {
    outline: 2px solid var(--nx-gold) !important;
    outline-offset: -2px;
    border-radius: 6px;
  }
}
/* Touch targets to the 44px floor (WCAG 2.5.5) for two stragglers. */
.tc-btn { min-height: 44px; }
.admin-user-del { min-width: 32px; min-height: 32px; }

/* ─── 11. DESKTOP SIDEBAR — Supabase / ResQ-style rail ──────────────────────
   The ≥900px rail (index.html PC-sidebar layout) was functional but flat —
   no hover, active state was just a thin left border. Give it the SaaS feel:
   a slightly-recessed rail surface, calm idle items that brighten on hover,
   and a clear filled + gold-accented active item. Visual only — no width /
   .main-offset changes, so geometry is untouched. */
@media (min-width: 900px) {
  /* #navTabs (id) specificity so these beat the base rail rules. */
  [data-theme="dark"] #navTabs { background: #0d1119 !important; }   /* recessed vs content for depth */
  [data-theme="light"] #navTabs { background: #efe7d6 !important; }
  #navTabs { padding: 14px 10px !important; gap: 3px !important; }

  #navTabs .nav-tab {
    border-radius: 8px !important;
    border-left: 3px solid transparent !important;
    transition: background .12s ease, color .12s ease !important;
  }
  #navTabs .nav-tab .nav-icon { opacity: .72; transition: opacity .12s ease; }
  #navTabs .nav-tab:hover {
    background: var(--nx-gold-tint, rgba(212,164,78,0.07)) !important;
    color: var(--nx-text-strong, #f5f1e8) !important;
  }
  #navTabs .nav-tab:hover .nav-icon { opacity: 1; }
  #navTabs .nav-tab.active {
    background: var(--nx-gold-tint, rgba(212,164,78,0.13)) !important;
    border-left-color: var(--nx-gold, #d4a44e) !important;
    color: var(--nx-gold, #d4a44e) !important;
    font-weight: 600 !important;
  }
  #navTabs .nav-tab.active span { color: var(--nx-gold, #d4a44e) !important; font-weight: 600 !important; }
  #navTabs .nav-tab.active .nav-icon { opacity: 1; }
  /* The active background was being beaten by a higher-specificity rule; a
     2-id selector + background-color longhand wins cleanly. */
  #appWrap #navTabs .nav-tab.active { background-color: rgba(212, 164, 78, 0.13) !important; }
  #appWrap #navTabs .nav-tab:hover { background-color: rgba(212, 164, 78, 0.07) !important; }
}

/* ─── 12. CLEANING ROSTER — "on today" crew header ──────────────────────── */
.clean-roster-today {
  margin: 4px 0 14px; padding: 12px 14px;
  background: var(--nx-gold-tint, rgba(212,164,78,0.06));
  border: 1px solid var(--nx-gold-line, rgba(212,164,78,0.20));
  border-radius: 14px;
}
.clean-roster-today-label {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 10px; letter-spacing: 0.14em; text-transform: uppercase;
  color: var(--nx-gold, #d4a44e); margin-bottom: 8px;
}
.clean-roster-today-crew { display: flex; flex-wrap: wrap; gap: 6px; }
.clean-roster-crew-chip {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 5px 10px; border-radius: 16px;
  background: var(--nx-surface-solid, rgba(255,255,255,0.04));
  border: 1px solid var(--nx-gold-line, rgba(212,164,78,0.20));
  font-size: 12.5px; color: var(--nx-text, #ede9e0);
}
.clean-roster-crew-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--nx-green, #6cd09a); flex-shrink: 0; }
.clean-roster-crew-shift {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 9px; letter-spacing: 0.08em; color: var(--nx-muted, #8a8576);
  border-left: 1px solid var(--nx-gold-line, rgba(212,164,78,0.20)); padding-left: 6px; margin-left: 2px;
}
.clean-roster-crew-empty { font-size: 12.5px; color: var(--nx-muted, #8a8576); font-style: italic; }

/* ─── 13. NOTIFICATION BELL — surface it ────────────────────────────────────
   notifications-bell.js is loaded + fully wired (counts urgent WOs, down units,
   overdue cards, pending PMs, quotes, unpaid invoices → badge + "Needs doing"
   panel that routes to each view), but the bell computed display:none from a
   rule we couldn't locate in any stylesheet. id + !important wins reliably
   (verified). The masthead only shows post-login, so this never leaks onto the
   PIN screen. */
#navBell { display: inline-flex !important; align-items: center; justify-content: center; }

/* ─── 14. CLEANING — weekly schedule calendar ───────────────────────────── */
.clean-sched-fillweek {
  float: right; display: inline-flex; align-items: center; gap: 4px;
  padding: 4px 10px; border-radius: 14px; cursor: pointer;
  background: var(--nx-gold, #d4a44e); color: var(--nx-gold-on, #1c1814);
  border: 1px solid var(--nx-gold-deep, #b88830);
  font-family: inherit; font-size: 11px; font-weight: 700;
}
.clean-sched-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 6px; margin: 8px 0 14px; }
@media (max-width: 560px) { .clean-sched-grid { grid-template-columns: repeat(4, 1fr); } }
.clean-sched-day {
  display: flex; flex-direction: column; gap: 6px; min-width: 0;
  padding: 8px 7px; border-radius: 12px;
  background: var(--nx-surface-solid, rgba(255,255,255,0.03));
  border: 1px solid var(--nx-gold-line, rgba(212,164,78,0.18));
}
.clean-sched-day.is-today { border-color: var(--nx-gold, #d4a44e); background: var(--nx-gold-tint, rgba(212,164,78,0.08)); }
.clean-sched-day-head {
  display: flex; align-items: center; gap: 4px; justify-content: center;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 10px; letter-spacing: 0.08em; text-transform: uppercase;
  color: var(--nx-text-strong, #f5f1e8); font-weight: 700;
}
.clean-sched-today-dot { width: 5px; height: 5px; border-radius: 50%; background: var(--nx-gold, #d4a44e); }
.clean-sched-day-crew { display: flex; flex-direction: column; gap: 3px; min-height: 36px; }
.clean-sched-name {
  display: flex; align-items: center; justify-content: space-between; gap: 4px;
  font-size: 11px; color: var(--nx-text, #ede9e0);
  background: rgba(0,0,0,0.18); border-radius: 8px; padding: 2px 6px; overflow: hidden;
}
.clean-sched-name i { font-style: normal; font-size: 8px; color: var(--nx-muted, #8a8576); font-family: 'JetBrains Mono', monospace; }
.clean-sched-off { font-size: 10px; color: var(--nx-faint, #6b7280); text-align: center; padding: 6px 0; font-style: italic; }
.clean-sched-fill {
  margin-top: auto; padding: 5px 4px; border-radius: 9px; cursor: pointer;
  background: var(--nx-gold-tint, rgba(212,164,78,0.1)); border: 1px solid var(--nx-gold-line, rgba(212,164,78,0.22));
  color: var(--nx-gold, #d4a44e); font-family: inherit; font-size: 10px; font-weight: 600;
}
.clean-sched-fill:hover:not(:disabled) { background: var(--nx-gold, #d4a44e); color: var(--nx-gold-on, #1c1814); }
.clean-sched-fill:disabled { opacity: 0.4; cursor: default; }

/* ─── 15. MASTHEAD — tidy the header into one aligned row ────────────────────
   The header items (NEXUS wordmark, advisor coin, date, bell, ☰) sat on mixed
   baselines/heights (16–59px) — a scattered look, made worse by un-hiding the
   bell. Center everything on one line and give the two icon buttons a matching
   size so the right cluster reads as a pair. */
.nav { align-items: center !important; }
.nav-bell, .nav-more {
  width: 44px !important; height: 44px !important;   /* match each other + the 44px touch floor (§8) */
  min-width: 44px !important; min-height: 44px !important;
  flex-shrink: 0; padding: 0 !important;
  display: inline-flex !important; align-items: center; justify-content: center;
}
.nav-bell .nav-icon, .nav-more .nav-icon { width: 20px; height: 20px; }

/* ─── 16. CLEANING — 2-week schedule + call-out chips (extends §14) ──────── */
.clean-sched-2wk { grid-template-columns: repeat(auto-fill, minmax(116px, 1fr)) !important; }
.clean-sched-2wk .clean-sched-name { flex-wrap: wrap; gap: 3px 5px; }
.clean-sched-nm { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.clean-sched-name.is-off { opacity: 0.5; }
.clean-sched-name.is-off .clean-sched-nm { text-decoration: line-through; }
.clean-sched-callout {
  flex-shrink: 0; width: 16px; height: 16px; line-height: 1; text-align: center;
  border-radius: 50%; border: 1px solid var(--nx-gold-line, rgba(212,164,78,0.25));
  background: transparent; color: var(--nx-muted, #8a8576);
  font-size: 9px; cursor: pointer; padding: 0;
}
.clean-sched-callout:hover { border-color: var(--nx-red, #d24b4b); color: var(--nx-red, #d24b4b); }
.clean-sched-name.is-off .clean-sched-callout { border-color: var(--nx-green, #6cd09a); color: var(--nx-green, #6cd09a); }

/* ─── 17. CLEANING TOOLBAR — Roster button + Learn toggle ────────────────── */
.clean-roster-pill { border-color: var(--nx-gold, #d4a44e) !important; color: var(--nx-gold, #d4a44e) !important; }
.clean-roster-pill:hover { background: var(--nx-gold-tint, rgba(212,164,78,0.12)) !important; }
/* Learn is a real on/off toggle: a little switch that slides + fills gold when on. */
.clean-pill-toggle {
  display: inline-block; width: 22px; height: 13px; border-radius: 999px; flex-shrink: 0;
  background: var(--nx-border-strong, rgba(255,255,255,0.18)); position: relative;
  margin-left: 6px; vertical-align: middle; transition: background .15s;
}
.clean-pill-toggle::after {
  content: ''; position: absolute; top: 1.5px; left: 1.5px; width: 10px; height: 10px;
  border-radius: 50%; background: #fff; transition: transform .15s;
}
.clean-edu-pill.is-active .clean-pill-toggle { background: var(--nx-gold, #d4a44e); }
.clean-edu-pill.is-active .clean-pill-toggle::after { transform: translateX(9px); }

/* ─── 18. DESKTOP SIDEBAR FIX — let the fixed rail fill the viewport ──────────
   §3 (chrome lift) puts a backdrop-filter on .nav. A filtered ancestor becomes
   the CONTAINING BLOCK for position:fixed descendants — so the fixed sidebar
   (#navTabs, top:60/bottom:0) anchored to the 60px .nav instead of the viewport
   and COLLAPSED to ~28px, clipping all 19 nav buttons into a sliver (the "empty
   sidebar"). Drop the filter on .nav at desktop so the rail anchors to the
   viewport and stacks the buttons full-height. Matches §3's specificity. */
@media (min-width: 900px) {
  [data-theme="dark"] .nav, [data-theme="light"] .nav {
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
    overflow: visible !important;
  }
}

/* ─── 19. EQUIPMENT — expanding "AI Create" panel (inline, no modal) ──────────
   The header AI Create button toggles #eqAiExpand. It animates open with a
   max-height/opacity transition and shows the four AI methods as cards. */
.eq-ai-create-btn.expanded {
  background: var(--nx-gold, #d4a44e);
  color: var(--nx-gold-on, #1a1205);
}
.eq-ai-expand {
  overflow: hidden;
  max-height: 0;
  opacity: 0;
  margin: 0;
  transition: max-height .26s ease, opacity .22s ease, margin .26s ease;
}
.eq-ai-expand.open {
  max-height: 420px;
  opacity: 1;
  margin: 8px 0 4px;
}
.eq-ai-expand-title {
  display: flex; align-items: center; gap: 6px;
  font-size: 11.5px; font-weight: 600; letter-spacing: .02em;
  color: var(--muted, #9a8f78); margin: 0 2px 8px;
}
.eq-ai-expand-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
}
@media (min-width: 760px) { .eq-ai-expand-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.eq-ai-x {
  display: flex; align-items: center; gap: 10px; text-align: left;
  padding: 12px; border-radius: 12px; cursor: pointer;
  background: rgba(200,164,78,0.06);
  border: 1px solid rgba(200,164,78,0.22);
  color: var(--text, #ece6d8);
  transition: background .15s, border-color .15s, transform .08s;
}
.eq-ai-x:hover {
  background: rgba(200,164,78,0.13);
  border-color: rgba(200,164,78,0.45);
}
.eq-ai-x:active { transform: scale(.985); }
.eq-ai-x-ic {
  flex-shrink: 0; width: 36px; height: 36px; border-radius: 10px;
  display: flex; align-items: center; justify-content: center;
  background: rgba(200,164,78,0.14); color: var(--nx-gold, #d4a44e);
}
.eq-ai-x-txt { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.eq-ai-x-txt b { font-size: 13px; font-weight: 600; }
.eq-ai-x-txt small { font-size: 10.5px; color: var(--muted, #9a8f78); line-height: 1.35; }

/* ─── 20. CLEANING LITE — simple daily driver, mirrors the Ordering UI ────────
   Gold pill pickers, collapsible-style zone cards, tap-to-fill task rows, round
   avatars, floating CTA. Tokens from nx-system.css; matches .ord-* language. */
.cleanlite { width: 100%; max-width: 680px; align-self: stretch; margin: 0 auto; padding: 8px 14px 120px; box-sizing: border-box; }
.cleanlite-top { display: flex; align-items: center; gap: 10px; margin: 4px 0 12px; flex-wrap: wrap; } /* v260: Today/Crew seg wraps under the locations on phones instead of clipping */
.cleanlite-loc-picker {
  display: inline-flex; gap: 4px; padding: 4px; border-radius: 999px; flex: 1;
  border: 1px solid var(--nx-gold-line, rgba(212,164,78,.22)); background: var(--nx-surface-1, rgba(34,46,70,.42));
}
.cleanlite-loc {
  flex: 1; padding: 8px 10px; border: 0; border-radius: 999px; cursor: pointer;
  background: transparent; color: var(--nx-muted, #9aa3b2); font-weight: 600; font-size: 13px;
  letter-spacing: .02em; transition: background .14s, color .14s, box-shadow .14s;
}
.cleanlite-loc.is-active {
  background: var(--nx-gold, #d4a44e); color: var(--nx-gold-on, #101626);
  box-shadow: 0 0 14px rgba(212,164,78,.32);
}
.cleanlite-adv {
  display: inline-flex; align-items: center; gap: 5px; padding: 8px 12px; border-radius: 999px;
  background: transparent; border: 1px solid var(--nx-gold-line, rgba(212,164,78,.22));
  color: var(--nx-muted, #9aa3b2); font-size: 12px; font-weight: 600; cursor: pointer; white-space: nowrap;
}
.cleanlite-adv:hover { color: var(--nx-gold, #d4a44e); border-color: var(--nx-gold, #d4a44e); }
.cleanlite-weekrow { display: flex; align-items: center; gap: 10px; margin-bottom: 12px; }
.cleanlite-weektoggle {
  display: inline-flex; gap: 4px; padding: 4px; border-radius: 999px;
  border: 1px solid var(--nx-gold-line, rgba(212,164,78,.22)); background: var(--nx-surface-1, rgba(34,46,70,.42));
}
.cleanlite-week {
  padding: 7px 16px; border: 0; border-radius: 999px; cursor: pointer; background: transparent;
  color: var(--nx-muted, #9aa3b2); font-weight: 600; font-size: 12.5px; transition: background .14s, color .14s;
}
.cleanlite-week.is-active { background: var(--nx-gold, #d4a44e); color: var(--nx-gold-on, #101626); }
.cleanlite-mini {
  display: inline-flex; align-items: center; gap: 5px; padding: 7px 11px; border-radius: 999px;
  background: transparent; border: 1px solid var(--nx-gold-line, rgba(212,164,78,.22));
  color: var(--nx-muted, #9aa3b2); font-size: 11.5px; font-weight: 600; cursor: pointer; margin-left: auto; white-space: nowrap;
}
.cleanlite-mini:hover { color: var(--nx-gold, #d4a44e); }
.cleanlite-zones { display: flex; flex-direction: column; gap: 12px; }
.cleanlite-zone {
  border: 1px solid var(--nx-gold-line, rgba(212,164,78,.22)); border-radius: 16px;
  background: var(--nx-surface-1, rgba(34,46,70,.42)); overflow: hidden;
}
.cleanlite-zone-head { display: flex; align-items: center; gap: 11px; padding: 13px 14px; }
.cleanlite-person-btn { border: 0; background: transparent; padding: 0; cursor: pointer; flex: 0 0 auto; }
.cleanlite-av {
  width: 40px; height: 40px; border-radius: 50%; display: flex; align-items: center; justify-content: center;
  font-weight: 700; font-size: 14px; color: #fff;
  background: hsl(var(--av-hue, 40), 42%, 42%); border: 2px solid var(--nx-gold-line, rgba(212,164,78,.3));
}
.cleanlite-av.is-none { background: var(--nx-surface-2, rgba(24,34,54,.62)); color: var(--nx-faint, #6c7585); }
.cleanlite-av.is-add { background: var(--nx-gold-faint, rgba(212,164,78,.12)); color: var(--nx-gold, #d4a44e); border-style: dashed; }
.cleanlite-zone-titles { flex: 1; min-width: 0; }
.cleanlite-zone-name { font-size: 15.5px; font-weight: 700; color: var(--nx-text-strong, #f6f0e2); overflow-wrap: anywhere; }
.cleanlite-zone-person { font-size: 12px; color: var(--nx-muted, #9aa3b2); }
.cleanlite-zone-count {
  font-family: var(--nx-font-mono, "JetBrains Mono", monospace); font-size: 12px; font-weight: 700;
  padding: 3px 9px; border-radius: 999px; color: var(--nx-muted, #9aa3b2);
  background: var(--nx-surface-2, rgba(24,34,54,.62)); flex: 0 0 auto;
}
.cleanlite-zone-count.is-complete { color: var(--nx-gold-on, #101626); background: var(--nx-gold, #d4a44e); }
.cleanlite-guide {
  flex: 0 0 auto; width: 36px; height: 36px; border-radius: 50%; cursor: pointer;
  background: var(--nx-gold-faint, rgba(212,164,78,.1)); border: 1px solid var(--nx-gold-line, rgba(212,164,78,.22));
  color: var(--nx-gold, #d4a44e); display: flex; align-items: center; justify-content: center;
}
.cleanlite-guide:hover { background: var(--nx-gold-soft, rgba(212,164,78,.18)); }
.cleanlite-tasks { border-top: 1px solid var(--nx-gold-line, rgba(212,164,78,.14)); }
.cleanlite-task {
  display: flex; align-items: center; gap: 11px; width: 100%; text-align: left; cursor: pointer;
  padding: 12px 14px; border: 0; border-bottom: 1px solid var(--nx-gold-line, rgba(212,164,78,.1));
  background: transparent; color: var(--nx-text, #ece4d4); font-size: 14px; transition: background .12s;
  position: relative;
}
.cleanlite-task:last-child { border-bottom: 0; }
.cleanlite-task:active { background: var(--nx-gold-faint, rgba(212,164,78,.08)); }
.cleanlite-check {
  flex: 0 0 auto; width: 26px; height: 26px; border-radius: 8px; display: flex; align-items: center; justify-content: center;
  border: 1.5px solid var(--nx-gold-line, rgba(212,164,78,.35)); color: transparent; transition: all .14s;
}
.cleanlite-task-name { flex: 1; min-width: 0; overflow-wrap: anywhere; }
.cleanlite-freq {
  flex: 0 0 auto; font-family: var(--nx-font-mono, monospace); font-size: 9.5px; letter-spacing: .5px;
  text-transform: uppercase; color: var(--nx-faint, #6c7585); padding: 2px 7px; border-radius: 999px;
  background: var(--nx-surface-2, rgba(24,34,54,.62));
}
/* Done = the Ordering "has-qty" gold fill + left accent stripe. */
.cleanlite-task.is-done {
  background: linear-gradient(90deg, var(--nx-gold-soft, rgba(212,164,78,.18)), transparent 80%);
  box-shadow: inset 3px 0 0 0 var(--nx-gold, #d4a44e);
}
.cleanlite-task.is-done .cleanlite-check { background: var(--nx-gold, #d4a44e); border-color: var(--nx-gold, #d4a44e); color: var(--nx-gold-on, #101626); }
.cleanlite-task.is-done .cleanlite-task-name { color: var(--nx-muted, #9aa3b2); text-decoration: line-through; text-decoration-color: var(--nx-gold-line, rgba(212,164,78,.5)); }
.cleanlite-empty { padding: 16px; color: var(--nx-faint, #6c7585); font-style: italic; text-align: center; }
/* Floating CTA — mirrors .ord-entry-cta */
.cleanlite-cta-wrap {
  position: fixed; left: 0; right: 0; bottom: 0; display: flex; gap: 10px; justify-content: center;
  padding: 12px 16px calc(12px + env(safe-area-inset-bottom)); pointer-events: none; z-index: 30;
  /* v366 — no scrim (Alfredo): the fade-to-bg gradient read as a shadow band across the bottom of
     the cleaning list. The Summary button has its own solid background, so it floats fine without it. */
  background: transparent;
}
.cleanlite-cta {
  pointer-events: auto; display: inline-flex; align-items: center; justify-content: center; gap: 7px;
  height: 50px; padding: 0 22px; border: 0; border-radius: 999px; cursor: pointer; font-size: 15px; font-weight: 600;
  color: var(--nx-gold-on, #101626);
  background: linear-gradient(180deg, var(--nx-gold, #d4a44e), var(--nx-gold-deep, #a8821e));
  box-shadow: 0 4px 16px rgba(0,0,0,.45), 0 0 18px var(--nx-gold-soft, rgba(212,164,78,.3)); transition: transform .1s;
}
.cleanlite-cta:active { transform: scale(.985); }
.cleanlite-cta.is-ghost { background: var(--nx-surface-3, rgba(42,56,84,.72)); color: var(--nx-text, #ece4d4); box-shadow: 0 4px 16px rgba(0,0,0,.4); }
/* Person picker sheet */
.cleanlite-sheet-bg {
  position: fixed; inset: 0; z-index: 10060; display: flex; align-items: flex-end; justify-content: center;
  background: rgba(0,0,0,.55); opacity: 0; transition: opacity .18s ease;
}
.cleanlite-sheet-bg.open { opacity: 1; }
.cleanlite-sheet {
  width: 100%; max-width: 520px; max-height: 80dvh; overflow-y: auto;
  background: var(--nx-surface-solid, #161d2e); border: 1px solid var(--nx-gold-line, rgba(212,164,78,.24)); border-bottom: 0;
  border-radius: 22px 22px 0 0; padding: 8px 16px calc(20px + env(safe-area-inset-bottom));
  transform: translateY(16px); transition: transform .2s cubic-bezier(.4,0,.2,1);
}
.cleanlite-sheet-bg.open .cleanlite-sheet { transform: none; }
.cleanlite-sheet-grip { width: 36px; height: 4px; border-radius: 999px; background: rgba(255,255,255,.15); margin: 8px auto 10px; }
.cleanlite-sheet-title { font-size: 15px; color: var(--nx-text-strong, #f6f0e2); margin: 0 4px 12px; }
.cleanlite-people { display: flex; flex-direction: column; gap: 6px; }
.cleanlite-person {
  display: flex; align-items: center; gap: 11px; width: 100%; text-align: left; cursor: pointer;
  padding: 10px 12px; border-radius: 12px; border: 1px solid var(--nx-gold-line, rgba(212,164,78,.16));
  background: var(--nx-surface-1, rgba(34,46,70,.42)); color: var(--nx-text, #ece4d4); font-size: 14px;
}
.cleanlite-person.is-active { border-color: var(--nx-gold, #d4a44e); box-shadow: 0 0 0 1px var(--nx-gold, #d4a44e); }
.cleanlite-person .cleanlite-av { width: 34px; height: 34px; font-size: 12px; }
.cleanlite-person-name { flex: 1; min-width: 0; overflow-wrap: anywhere; }
.cleanlite-tag {
  font-family: var(--nx-font-mono, monospace); font-size: 9px; letter-spacing: .5px; text-transform: uppercase;
  padding: 2px 7px; border-radius: 999px; background: var(--nx-gold-faint, rgba(212,164,78,.14)); color: var(--nx-gold, #d4a44e);
}
.cleanlite-tag.is-muted { background: var(--nx-surface-2, rgba(24,34,54,.62)); color: var(--nx-faint, #6c7585); }
.cleanlite-newemp { border-style: dashed; color: var(--nx-gold, #d4a44e); }
@media (min-width: 900px) { .cleanlite-sheet-bg { align-items: center; } .cleanlite-sheet { border-radius: 22px; border-bottom: 1px solid var(--nx-gold-line, rgba(212,164,78,.24)); } }
/* Per-day crew selector (replaces the week toggle) */
.cleanlite-dayrow { display: flex; align-items: center; gap: 10px; margin-bottom: 12px; flex-wrap: wrap; }
.cleanlite-dayrow-label {
  font-family: var(--nx-font-mono, "JetBrains Mono", monospace); font-size: 10.5px; letter-spacing: .08em;
  text-transform: uppercase; color: var(--nx-gold, #d4a44e); font-weight: 700; flex: 0 0 auto;
}
.cleanlite-days {
  display: inline-flex; gap: 3px; padding: 4px; border-radius: 999px;
  border: 1px solid var(--nx-gold-line, rgba(212,164,78,.22)); background: var(--nx-surface-1, rgba(34,46,70,.42));
}
.cleanlite-day {
  min-width: 30px; height: 32px; padding: 0 9px; border: 0; border-radius: 999px; cursor: pointer;
  background: transparent; color: var(--nx-muted, #9aa3b2); font-weight: 600; font-size: 12.5px;
  position: relative; transition: background .14s, color .14s;
}
.cleanlite-day.is-active { background: var(--nx-gold, #d4a44e); color: var(--nx-gold-on, #101626); }
.cleanlite-day.is-today:not(.is-active)::after {
  content: ""; position: absolute; left: 50%; bottom: 4px; width: 4px; height: 4px; border-radius: 50%;
  background: var(--nx-gold, #d4a44e); transform: translateX(-50%);
}
.cleanlite-av.is-varies { background: var(--nx-surface-3, rgba(42,56,84,.72)); color: var(--nx-gold, #d4a44e); font-size: 17px; }
.cleanlite-sheet-day { color: var(--nx-gold, #d4a44e); font-weight: 600; }

/* ─── 21. DAILY LOG revamp — Lite/Ordering design language ────────────────────
   Pure restyle of the existing .dlog-* form (markup unchanged, persistence
   untouched). The dlog base styles are embedded in index.html and come LATER
   in source, so every rule is scoped under #dailylogView to win specificity.
   Gold pill tabs, rounded gold-line cards, calmer 16px inputs (no iOS zoom),
   gold-gradient primary action. */
#dailylogView .dlog-shell { max-width: 720px; }
#dailylogView .dlog-title { font-size: 21px; font-weight: 700; color: var(--nx-gold, #d4a44e); letter-spacing: .4px; }
#dailylogView .dlog-new-btn { border-radius: 999px; border-color: var(--nx-gold-line, rgba(212,164,78,.22)); }

/* Location tabs — solid gold when active (matches the cleaning loc picker) */
#dailylogView .dlog-loc-pill { border-color: var(--nx-gold-line, rgba(212,164,78,.22)); }
#dailylogView .dlog-loc-pill.is-active {
  background: var(--nx-gold, #d4a44e) !important; color: var(--nx-gold-on, #101626) !important;
  border-color: var(--nx-gold, #d4a44e) !important; box-shadow: 0 0 14px rgba(212,164,78,.3);
}
#dailylogView .dlog-recent-chip.is-active { background: var(--nx-gold, #d4a44e); color: var(--nx-gold-on, #101626); border-color: var(--nx-gold, #d4a44e); }

/* Sections → rounded gold-line cards */
#dailylogView .dlog-section {
  border: 1px solid var(--nx-gold-line, rgba(212,164,78,.22)); border-radius: 16px;
  background: var(--nx-surface-1, rgba(34,46,70,.42)); margin-bottom: 14px;
}
#dailylogView .dlog-section-header { padding: 15px 16px; }
#dailylogView .dlog-section-header::after { color: var(--nx-gold, #d4a44e); font-size: 20px; }
#dailylogView .dlog-section-title { font-size: 15.5px; font-weight: 700; color: var(--nx-text-strong, #f6f0e2); }
#dailylogView .dlog-section-count {
  background: var(--nx-gold-faint, rgba(212,164,78,.12)); border-color: var(--nx-gold-line, rgba(212,164,78,.22));
  color: var(--nx-gold, #d4a44e); font-weight: 700;
}
#dailylogView .dlog-subsection-title { color: var(--nx-gold, #d4a44e); letter-spacing: .12em; font-weight: 600; margin-top: 10px; }
#dailylogView .dlog-subsection-count {
  display: inline-block; min-width: 18px; padding: 0 6px; margin-left: 6px;
  border-radius: 9px; font-size: 11px; font-weight: 700; letter-spacing: 0;
  background: var(--nx-gold-faint, rgba(212,164,78,.14)); color: var(--nx-gold, #d4a44e);
}

/* ─── Ordering / Supplies rollup (read-only mirror of the Ordering board) ── */
#dailylogView .dlog-order-list { display: flex; flex-direction: column; gap: 6px; margin: 6px 0 8px; }
#dailylogView .dlog-order-item {
  display: flex; align-items: center; gap: 8px;
  padding: 8px 10px; border-radius: 8px;
  background: var(--nx-surface-2, rgba(255,255,255,.03));
  border: 1px solid var(--nx-gold-line, rgba(212,164,78,.16));
  font-size: 13px;
}
#dailylogView .dlog-order-dot { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; }
#dailylogView .dlog-order-dot-to_order { background: var(--nx-red, #a83e3e); }
#dailylogView .dlog-order-dot-ordered  { background: var(--nx-gold, #d4a44e); }
#dailylogView .dlog-order-title { flex: 1; color: var(--nx-text, #ece4d4); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
#dailylogView .dlog-order-cost { color: var(--nx-text-dim, #b6ad9a); font-variant-numeric: tabular-nums; }
#dailylogView .dlog-order-lane {
  font-size: 10px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase;
  padding: 2px 7px; border-radius: 6px; flex-shrink: 0;
}
#dailylogView .dlog-order-lane-to_order { background: rgba(168,62,62,.16); color: var(--nx-red, #a83e3e); }
#dailylogView .dlog-order-lane-ordered  { background: var(--nx-gold-faint, rgba(212,164,78,.14)); color: var(--nx-gold, #d4a44e); }
#dailylogView .dlog-open-ordering { margin-top: 4px; }

/* Inputs → calmer, rounded, gold focus ring; 16px avoids iOS zoom */
#dailylogView .dlog-field-label { font-size: 13px; font-weight: 600; color: var(--nx-text, #ece4d4); }
#dailylogView .dlog-field input[type="text"],
#dailylogView .dlog-field input[type="date"],
#dailylogView .dlog-field textarea {
  background: var(--nx-bg, #0e1320); border: 1px solid var(--nx-gold-line, rgba(212,164,78,.2));
  border-radius: 12px; padding: 11px 13px; font-size: 16px; min-height: 44px;
}
#dailylogView .dlog-field textarea { min-height: 70px; }
#dailylogView .dlog-field input:focus,
#dailylogView .dlog-field textarea:focus {
  border-color: var(--nx-gold, #d4a44e); box-shadow: 0 0 0 2px var(--nx-gold-soft, rgba(212,164,78,.18));
}

/* Repeatable rows (vendor calls, other properties) → gold-line cards */
#dailylogView .dlog-vendor-row, #dailylogView .dlog-other-row {
  border: 1px solid var(--nx-gold-line, rgba(212,164,78,.2)); border-radius: 14px;
  background: var(--nx-surface-1, rgba(34,46,70,.42));
}
#dailylogView .dlog-vendor-row input, #dailylogView .dlog-vendor-row textarea,
#dailylogView .dlog-other-row input, #dailylogView .dlog-other-row textarea { border-radius: 10px; border-color: var(--nx-gold-line, rgba(212,164,78,.18)); font-size: 15px; }
#dailylogView .dlog-row-remove { border-color: var(--nx-gold-line, rgba(212,164,78,.25)); }

/* Status/activity/vendor/ticket cards → consistent gold-line rounding */
#dailylogView .dlog-eqstatus-row { border-color: var(--nx-gold-line, rgba(212,164,78,.2)); border-radius: 14px; background: var(--nx-surface-1, rgba(34,46,70,.42)); }
#dailylogView .dlog-vd-row, #dailylogView .dlog-tk-row { border-radius: 12px; }

/* Actions — gold-gradient primary, pill secondaries */
/* Email opener preview + refresh controls (New from Clippy / From the pool) */
#dailylogView .dlog-opener {
  margin-top: 20px; padding: 14px 16px;
  border: 1px solid var(--nx-gold-line, rgba(212,164,78,.18)); border-radius: 14px;
  background: var(--nx-highlight-tint, rgba(255,255,255,.02));
}
#dailylogView .dlog-opener-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 8px; }
#dailylogView .dlog-opener-label { font: 700 10px/1 var(--nx-font-mono, monospace); letter-spacing: .12em; text-transform: uppercase; color: var(--nx-gold, #d4a44e); }
#dailylogView .dlog-opener-src { font: 10px/1 var(--nx-font-mono, monospace); letter-spacing: .04em; color: var(--nx-muted, #8a94a0); }
/* v18.49 — his face + soul-glow sit beside the opener line. The orb's aura
   is --dlog-soul-glow, eased toward his live ANIMA colour by daily-log.js
   (same palette as his shell + node telemetry). The slow filter transition
   makes the colour breathe rather than snap. */
/* Clippy sits centered ABOVE his own line — his orb and his quote read as one
   unit, not an icon off to the side (Alfredo: "center clippy to his quote"). */
#dailylogView .dlog-opener-body { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 10px; margin-bottom: 12px; }
#dailylogView .dlog-clippy-orb {
  flex: 0 0 auto; display: block; line-height: 0;
  --dlog-soul-glow: rgba(92, 176, 255, 0.42);
  filter: drop-shadow(0 0 9px rgba(92, 176, 255, 0.25))
          drop-shadow(0 0 16px var(--dlog-soul-glow));
  transition: filter 1600ms ease;
}
#dailylogView .dlog-opener-text { margin: 0; max-width: 46ch; font-size: 14.5px; line-height: 1.5; color: var(--nx-text, #e7ecf5); font-style: italic; text-align: center; }
#dailylogView .dlog-opener-btns { display: flex; gap: 8px; flex-wrap: wrap; }
#dailylogView .dlog-opener-btns .eq-btn { border-radius: 999px; font-size: 12.5px; }
#dailylogView .dlog-opener-btns .eq-btn[disabled] { opacity: .6; pointer-events: none; }

#dailylogView .dlog-actions { border-top: 1px solid var(--nx-gold-line, rgba(212,164,78,.18)); padding: 18px 0 100px; }
#dailylogView .dlog-actions .eq-btn { border-radius: 999px; }
#dailylogView .dlog-actions .eq-btn-primary {
  background: linear-gradient(180deg, var(--nx-gold, #d4a44e), var(--nx-gold-deep, #a8821e));
  color: var(--nx-gold-on, #101626); border: 0;
  box-shadow: 0 4px 16px rgba(0,0,0,.4), 0 0 16px var(--nx-gold-soft, rgba(212,164,78,.3));
}
#dailylogView .dlog-add-row-btn, #dailylogView .dlog-add-loc-btn { border-radius: 999px; }

/* ─── 22. CLEANING LITE chrome cleanup (fix the screenshots) ──────────────────
   Lite is the only cleaning UI now, but it still rendered INSIDE the old
   "takeover" chrome: the masthead (X · Suerte/Este/Toti · date · +Extra ·
   Archive), the SHIFT-PROGRESS bar (clipped "0%"), and the Finish-Shift footer
   that collided with Lite's own CTA. Hide all three — Lite has its own location
   picker, per-zone progress pills, and Autofill/Print CTA. */
#cleanView .clean-header-takeover,
#cleanView .clean-progress,
#cleanView .clean-footer { display: none !important; }
/* The cleaning list no longer needs the takeover's tall top padding. */
#cleanView .clean-list { padding-top: 6px; }
/* Float Lite's CTA above the mobile bottom-nav (it renders ~79px tall with
   icons+labels); on desktop (>=900px) the bottom-nav is replaced by the side
   rail, so sit at 0. */
.cleanlite { padding-bottom: 172px; }
.cleanlite-cta-wrap { bottom: calc(86px + env(safe-area-inset-bottom, 0px)); }
@media (min-width: 900px) { .cleanlite-cta-wrap { bottom: 0; } .cleanlite { padding-bottom: 110px; } }

/* ─── 23. CLEANING LITE — per-zone actions (kebab menu · note · history) ──────*/
.cleanlite-kebab { font-size: 20px; font-weight: 700; line-height: 1; }
.cleanlite-zone-noterow {
  display: flex; align-items: flex-start; gap: 7px; padding: 8px 14px;
  border-top: 1px solid var(--nx-gold-line, rgba(212,164,78,.12));
  font-size: 12.5px; color: var(--nx-text, #ece4d4); background: var(--nx-gold-faint, rgba(212,164,78,.07));
}
.cleanlite-zone-noterow svg { color: var(--nx-gold, #d4a44e); flex: 0 0 auto; margin-top: 2px; }
.cleanlite-zone-noterow span { overflow-wrap: anywhere; line-height: 1.4; }
/* The ⋮ menu (reuses .clean-card-menu from openMenuNear) */
.clean-card-menu {
  min-width: 188px; padding: 6px; border-radius: 14px;
  background: var(--nx-surface-solid, #161d2e); border: 1px solid var(--nx-gold-line, rgba(212,164,78,.24));
  box-shadow: 0 14px 40px rgba(0,0,0,.5);
}
.clean-card-menu .clean-menu-item {
  display: flex; align-items: center; gap: 10px; width: 100%; text-align: left; cursor: pointer;
  padding: 10px 12px; border: 0; border-radius: 10px; background: transparent;
  color: var(--nx-text, #ece4d4); font-size: 13.5px;
}
.clean-card-menu .clean-menu-item:hover { background: var(--nx-gold-faint, rgba(212,164,78,.12)); }
.clean-card-menu .clean-menu-item svg { color: var(--nx-gold, #d4a44e); flex: 0 0 auto; }
/* History sheet rows */
.cleanlite-hist { display: flex; flex-direction: column; }
.cleanlite-hist-row {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  padding: 11px 4px; border-bottom: 1px solid var(--nx-gold-line, rgba(212,164,78,.1));
}
.cleanlite-hist-row:last-child { border-bottom: 0; }
.cleanlite-hist-task { font-size: 13.5px; color: var(--nx-text, #ece4d4); overflow-wrap: anywhere; }
.cleanlite-hist-when {
  font-family: var(--nx-font-mono, "JetBrains Mono", monospace); font-size: 11px; color: var(--nx-faint, #6c7585);
  white-space: nowrap; flex: 0 0 auto;
}
.cleanlite-hist-when.is-today { color: var(--nx-gold, #d4a44e); font-weight: 700; }

/* Daily-log auto-send toggle (+ cutoff-time input) — gold-filled when ON */
#dailylogView .dlog-autosend-wrap { display: inline-flex; align-items: center; gap: 6px; margin-right: auto; }
#dailylogView .dlog-autosend-toggle.is-on {
  background: var(--nx-gold, #d4a44e) !important; color: var(--nx-gold-on, #101626) !important;
  border-color: var(--nx-gold, #d4a44e) !important;
}
#dailylogView .dlog-autosend-time {
  background: var(--nx-bg, #0e1320); border: 1px solid var(--nx-gold-line, rgba(212,164,78,.25));
  border-radius: 10px; color: var(--nx-text, #ece4d4); padding: 6px 8px; font: inherit; font-size: 13px;
}

/* ─── 24. CLEANING LITE — Overview (all locations) ───────────────────────────*/
.cleanlite-ovhead {
  font-family: var(--nx-font-mono, "JetBrains Mono", monospace); font-size: 11px; letter-spacing: .08em;
  text-transform: uppercase; color: var(--nx-gold, #d4a44e); font-weight: 700; margin: 4px 2px 12px;
}
.cleanlite-ovgrid { display: flex; flex-direction: column; gap: 12px; }
.cleanlite-ovcard {
  display: block; width: 100%; text-align: left; cursor: pointer; padding: 16px; border-radius: 16px;
  border: 1px solid var(--nx-gold-line, rgba(212,164,78,.22)); background: var(--nx-surface-1, rgba(34,46,70,.42));
  color: var(--nx-text, #ece4d4); transition: border-color .15s, transform .08s;
}
.cleanlite-ovcard:hover { border-color: var(--nx-gold, #d4a44e); }
.cleanlite-ovcard:active { transform: scale(.99); }
.cleanlite-ovcard-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 10px; }
.cleanlite-ovcard-name { font-size: 17px; font-weight: 700; color: var(--nx-text-strong, #f6f0e2); }
.cleanlite-ovcard-pct { font-family: var(--nx-font-mono, monospace); font-size: 15px; font-weight: 700; color: var(--nx-gold, #d4a44e); }
.cleanlite-ovcard-pct.is-complete { color: #67c08c; }
.cleanlite-ovbar { height: 8px; border-radius: 999px; background: var(--nx-surface-2, rgba(24,34,54,.62)); overflow: hidden; }
.cleanlite-ovbar-fill { height: 100%; border-radius: 999px; background: linear-gradient(90deg, var(--nx-gold, #d4a44e), var(--nx-gold-deep, #a8821e)); transition: width .3s ease; }
.cleanlite-ovcard-sub { font-size: 11.5px; color: var(--nx-muted, #9aa3b2); margin-top: 8px; }

/* ─── 25. BIWEEKLY review — match the Daily-Log gold/Lite restyle ─────────────
   Scoped under #biweeklyView so it wins over the embedded .bw-* base styles. */
#biweeklyView .bw-card {
  border: 1px solid var(--nx-gold-line, rgba(212,164,78,.22)) !important; border-radius: 16px !important;
  background: var(--nx-surface-1, rgba(34,46,70,.42)) !important;
}
#biweeklyView .bw-card-title { font-size: 15px; font-weight: 700; color: var(--nx-text-strong, #f6f0e2); }
#biweeklyView .bw-window-label { color: var(--nx-muted, #9aa3b2); }
#biweeklyView textarea,
#biweeklyView input[type="text"],
#biweeklyView .bw-checklist-edit-input {
  background: var(--nx-bg, #0e1320); border: 1px solid var(--nx-gold-line, rgba(212,164,78,.2));
  border-radius: 12px; color: var(--nx-text, #ece4d4); font-size: 16px; padding: 11px 13px;
}
#biweeklyView textarea:focus,
#biweeklyView input[type="text"]:focus {
  outline: none; border-color: var(--nx-gold, #d4a44e); box-shadow: 0 0 0 2px var(--nx-gold-soft, rgba(212,164,78,.18));
}
#biweeklyView .eq-btn { border-radius: 999px; }
#biweeklyView .eq-btn-primary {
  background: linear-gradient(180deg, var(--nx-gold, #d4a44e), var(--nx-gold-deep, #a8821e)); color: var(--nx-gold-on, #101626);
  border: 0; box-shadow: 0 4px 16px rgba(0,0,0,.4), 0 0 16px var(--nx-gold-soft, rgba(212,164,78,.3));
}

/* ─── 26. CLEANING LITE — Summary sheet + 3-button CTA fit ────────────────────*/
.cleanlite-cta-wrap { flex-wrap: wrap; }
.cleanlite-cta { height: 48px; padding: 0 16px; font-size: 14px; }
.cleanlite-summary {
  white-space: pre-wrap; word-break: break-word; font-family: var(--nx-font-mono, "JetBrains Mono", monospace);
  font-size: 12px; line-height: 1.5; color: var(--nx-text, #ece4d4); background: var(--nx-bg, #0e1320);
  border: 1px solid var(--nx-gold-line, rgba(212,164,78,.22)); border-radius: 12px; padding: 12px;
  max-height: 48vh; overflow-y: auto; margin: 0 0 12px;
}
.cleanlite-summary-actions { display: flex; gap: 10px; }
.cleanlite-summary-actions .cleanlite-cta { position: static; flex: 1; }

/* ─── 27. DAILY LOG — weather refresh + older-logs dropdown ───────────────────*/
#dailylogView .dlog-weather-row { display: flex; gap: 8px; align-items: center; }
#dailylogView .dlog-weather-row input { flex: 1; min-width: 0; }
#dailylogView .dlog-weather-refresh {
  flex: 0 0 auto; width: 42px; height: 42px; border-radius: 12px; cursor: pointer; font-size: 18px; line-height: 1;
  background: var(--nx-gold-faint, rgba(212,164,78,.1)); border: 1px solid var(--nx-gold-line, rgba(212,164,78,.25));
  color: var(--nx-gold, #d4a44e); display: flex; align-items: center; justify-content: center;
}
#dailylogView .dlog-weather-refresh:hover { background: var(--nx-gold-soft, rgba(212,164,78,.18)); }
#dailylogView .dlog-weather-refresh:active { transform: rotate(180deg); transition: transform .3s; }
#dailylogView .dlog-recent-select {
  flex: 0 0 auto; background: var(--nx-bg, #0e1320); border: 1px solid var(--nx-gold-line, rgba(212,164,78,.25));
  border-radius: 10px; color: var(--nx-text, #ece4d4); padding: 7px 10px; font: inherit; font-size: 13px; max-width: 170px;
}
/* Card detail line (description / latest comment) under a ticket row */
#dailylogView .dlog-tk-detail {
  font-size: 12px; color: var(--nx-muted, #9aa3b2); line-height: 1.4; margin-top: 4px;
  border-left: 2px solid var(--nx-gold-line, rgba(212,164,78,.25)); padding-left: 8px; overflow-wrap: anywhere;
}
/* Auto-send master day-control pills (which days auto-send is allowed) */
#dailylogView .dlog-autosend-days { display: inline-flex; gap: 3px; flex-wrap: wrap; }
#dailylogView .dlog-day-pill {
  width: 27px; height: 30px; border-radius: 8px; cursor: pointer; font-size: 11px; font-weight: 700;
  background: var(--nx-bg, #0e1320); border: 1px solid var(--nx-gold-line, rgba(212,164,78,.25)); color: var(--nx-muted, #9aa3b2);
}
#dailylogView .dlog-day-pill.is-on { background: var(--nx-gold, #d4a44e); color: var(--nx-gold-on, #101626); border-color: var(--nx-gold, #d4a44e); }

/* ═══════════════════════════════════════════════════════════════════════
   v18.30 — UI polish for the new equipment surfaces (health-bars · parts ·
   QR tab · public-PM landing + stepper). Appended to the last-loaded sheet
   so it wins the cascade. Reversible: delete this block to revert. Pure
   accessibility/tap-comfort — no layout or color-identity changes.
   Geometry already verified clean at 375px (docOverflow 0, 0 offenders).
   ═══════════════════════════════════════════════════════════════════════ */

/* Keyboard focus rings — these controls shipped with outline:none. */
.eq-hb-toggle:focus-visible,
.eq-part-buybtn:focus-visible,
.eq-qr-actions .eq-btn:focus-visible,
.pm-step:focus-visible,
.nx-ps-health a:focus-visible {
  outline: 2px solid var(--nx-gold, #d4a44e);
  outline-offset: 2px;
  border-radius: 6px;
}

/* The Buy button is a real CTA but shipped ~25px tall — give it a comfier
   tap height (≈34px) without changing its gold-pill look. */
.eq-part-buybtn { padding-top: 7px; padding-bottom: 7px; }

/* Respect prefers-reduced-motion for the NEW beacon states + bar fills.
   The flicker/flash defines the state, so pin each to a clearly-lit frame
   rather than leaving the dot dark when motion is off. */
@media (prefers-reduced-motion: reduce) {
  .eq-row-beacon .eq-lc-dot.is-down,
  .eq-row-beacon .eq-lc-dot.is-broken {
    animation: none !important;
    background: #d24b4b !important;
    box-shadow: 0 0 0 2px rgba(28,20,8,.85), 0 0 6px rgba(210,75,75,.7) !important;
  }
  .eq-row-beacon .eq-lc-dot.is-called {
    animation: none !important;
    background: #c89a48 !important;
    box-shadow: 0 0 0 2px rgba(28,20,8,.85), 0 0 6px rgba(212,164,78,.55) !important;
  }
  .eq-hb-fill, .eq-part-repl-fill, .pm-steps-fill,
  .pm-pub-hb-fl { transition: none !important; }
}

/* ═══════════════════════════════════════════════════════════════════════
   v18.31 — NEXUS navy: a cool sapphire complement to the Roman gold, plus
   the warranty shield on equipment cards. Reversible. Navy is a SECONDARY
   accent (trust/coverage/info) — gold stays the hero.
   ═══════════════════════════════════════════════════════════════════════ */
:root {
  --nx-navy:        #3f74b3;   /* primary navy accent */
  --nx-navy-bright: #6aa0e0;   /* glyphs/text on dark */
  --nx-navy-deep:   #294f7a;
  --nx-navy-soft:   rgba(63, 116, 179, 0.16);
  --nx-navy-line:   rgba(63, 116, 179, 0.42);
}
[data-theme="light"] {
  --nx-navy:        #2f5f9a;
  --nx-navy-bright: #2f5f9a;
  --nx-navy-soft:   rgba(47, 95, 154, 0.12);
  --nx-navy-line:   rgba(47, 95, 154, 0.30);
}

/* Warranty shield — outline = out of warranty (faint), filled navy = covered. */
.eq-warranty {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  line-height: 0;
  color: var(--nx-faintest, #4e5666);
  cursor: help;
}
.eq-warranty.is-active { color: var(--nx-navy, #3f74b3); }

/* List row: sits just left of the PM-date pill. */
.eq-row-top .eq-warranty { flex-shrink: 0; align-self: center; margin-right: 1px; }

/* Grid card: a small chip overlaid top-left of the photo area. */
.eq-card-top { position: relative; }
.eq-card-top .eq-warranty {
  position: absolute;
  top: 8px;
  left: 8px;
  z-index: 2;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background: rgba(14, 19, 32, 0.62);
  box-shadow: 0 0 0 1px var(--nx-navy-line, rgba(63, 116, 179, 0.42));
}
.eq-card-top .eq-warranty.is-active {
  background: var(--nx-navy-soft, rgba(63, 116, 179, 0.16));
  box-shadow: 0 0 0 1px var(--nx-navy, #3f74b3), 0 0 8px rgba(63, 116, 179, 0.4);
}

/* Public scan card: inline shield before the warranty date. */
.nx-ps-warranty {
  display: inline-flex;
  align-items: center;
  vertical-align: -2px;
  margin-right: 4px;
  line-height: 0;
  color: var(--nx-faintest, #6c7585);
}
.nx-ps-warranty.is-active { color: var(--nx-navy-bright, #6aa0e0); }

/* ═══════════════════════════════════════════════════════════════════════
   v18.33 — Cleaning "Periodic / Deep-clean" cards + the lightweight editor /
   assignee overlay. Reversible. Mirrors the .cleanlite-* gold aesthetic.
   ═══════════════════════════════════════════════════════════════════════ */
.cleanlite-periodic { margin: 4px 14px 0; }
.cleanlite-periodic-title {
  display: flex; align-items: center; justify-content: space-between;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 10px; letter-spacing: 0.14em; text-transform: uppercase;
  color: var(--nx-gold, #d4a44e); margin: 14px 2px 8px;
}
.cleanlite-periodic-title > span { display: inline-flex; align-items: center; gap: 6px; }
.cleanlite-pnewcard {
  display: inline-flex; align-items: center; gap: 4px;
  background: var(--nx-gold-faint, rgba(212,164,78,.08));
  border: 1px solid var(--nx-gold-line, rgba(212,164,78,.22));
  color: var(--nx-gold, #d4a44e); border-radius: 999px; padding: 4px 10px;
  font-family: 'Outfit', system-ui, sans-serif; font-size: 11px; font-weight: 500; cursor: pointer;
}
.cleanlite-pnewcard:active { transform: scale(.97); }
.cleanlite-pcard {
  background: var(--nx-surface-1, rgba(34,46,70,.42));
  border: 1px solid var(--nx-gold-line, rgba(212,164,78,.22));
  border-radius: 16px; overflow: hidden; margin-bottom: 11px;
}
.cleanlite-pcard-head {
  display: flex; align-items: center; justify-content: space-between;
  padding: 11px 13px; background: var(--nx-gold-faint, rgba(212,164,78,.08));
  border-bottom: 1px solid var(--nx-gold-line, rgba(212,164,78,.22));
}
.cleanlite-pcard-name { font-family: 'Outfit', system-ui, sans-serif; font-size: 14px; font-weight: 600; color: var(--nx-text-strong, #f6f0e2); }
.cleanlite-padd {
  width: 28px; height: 28px; border-radius: 8px;
  display: inline-flex; align-items: center; justify-content: center;
  background: transparent; border: 1px solid var(--nx-gold-line, rgba(212,164,78,.22));
  color: var(--nx-gold, #d4a44e); cursor: pointer;
}
.cleanlite-padd:active { transform: scale(.95); }
.cleanlite-ptasks { padding: 4px 6px 6px; }
.cleanlite-ptask {
  display: flex; align-items: center; gap: 10px; padding: 9px 8px;
  border-radius: 12px;
}
.cleanlite-ptask + .cleanlite-ptask { border-top: 1px solid rgba(212,164,78,.10); }
.cleanlite-pcheck {
  flex-shrink: 0; width: 26px; height: 26px; border-radius: 50%;
  display: inline-flex; align-items: center; justify-content: center;
  background: transparent; border: 1.5px solid var(--nx-gold-line, rgba(212,164,78,.30));
  color: transparent; cursor: pointer; transition: all .15s;
}
.cleanlite-ptask.is-done .cleanlite-pcheck { background: var(--nx-gold, #d4a44e); border-color: var(--nx-gold, #d4a44e); color: #101626; }
.cleanlite-ptask-main { flex: 1 1 auto; min-width: 0; }
.cleanlite-ptask-top { display: flex; align-items: baseline; gap: 8px; }
.cleanlite-ptask-name { flex: 1; min-width: 0; font-size: 14px; color: var(--nx-text, #ece4d4); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cleanlite-ptask.is-done .cleanlite-ptask-name { color: var(--nx-faint, #6c7585); text-decoration: line-through; }
.cleanlite-pfreq {
  flex-shrink: 0; font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 8.5px; text-transform: uppercase; letter-spacing: .06em;
  color: var(--nx-gold, #d4a44e); background: var(--nx-gold-faint, rgba(212,164,78,.08));
  border-radius: 999px; padding: 2px 7px;
}
.cleanlite-pbar { height: 4px; border-radius: 2px; background: rgba(212,164,78,.12); overflow: hidden; margin: 6px 0 4px; }
.cleanlite-pbar-fill { height: 100%; border-radius: 2px; transition: width .3s ease; }
.cleanlite-pbar-fill.is-fresh { background: #6fa853; }
.cleanlite-pbar-fill.is-aging { background: #d99c3d; }
.cleanlite-pbar-fill.is-stale { background: #cf5959; }
.cleanlite-ptask-sub { font-family: 'JetBrains Mono', ui-monospace, monospace; font-size: 9.5px; color: var(--nx-faint, #6c7585); }
.cleanlite-ptask-sub.is-overdue { color: #e58a8a; }
.cleanlite-ppeople, .cleanlite-pkebab {
  flex-shrink: 0; background: transparent; border: none; cursor: pointer;
  display: inline-flex; align-items: center; justify-content: center;
}
.cleanlite-ppeople { gap: -6px; padding: 2px; }
.cleanlite-pkebab { width: 26px; height: 26px; border-radius: 8px; color: var(--nx-faint, #6c7585); }
.cleanlite-pkebab:active { transform: scale(.95); }
.cleanlite-pav {
  width: 24px; height: 24px; border-radius: 50%; margin-left: -6px;
  display: inline-flex; align-items: center; justify-content: center;
  background: hsl(var(--av-hue, 35), 32%, 38%); border: 1.5px solid var(--nx-bg, #0e1320);
  color: #f5ecd6; font-family: 'Outfit', sans-serif; font-size: 10px; font-weight: 600;
}
.cleanlite-pav:first-child { margin-left: 0; }
.cleanlite-pav.is-none { background: rgba(212,164,78,.10); color: var(--nx-faint, #6c7585); border-color: var(--nx-gold-line, rgba(212,164,78,.22)); }
.cleanlite-pav.is-more { background: var(--nx-surface-2, rgba(24,34,54,.62)); color: var(--nx-gold, #d4a44e); }

/* Lightweight overlay (assignee picker + task editor) */
.cleanlite-ov {
  position: fixed; inset: 0; z-index: 10002;
  display: flex; align-items: flex-end; justify-content: center;
  background: rgba(0,0,0,.5); padding: 0;
}
.cleanlite-ov-card {
  width: 100%; max-width: 480px;
  background: var(--nx-surface-solid, #161d2e);
  border: 1px solid var(--nx-gold-line, rgba(212,164,78,.24)); border-bottom: none;
  border-radius: 22px 22px 0 0; padding: 20px 18px calc(18px + env(safe-area-inset-bottom, 0px));
  max-height: 84vh; overflow-y: auto;
}
.cleanlite-ov-title { font-family: 'Outfit', sans-serif; font-size: 18px; font-weight: 600; color: var(--nx-text-strong, #f6f0e2); }
.cleanlite-ov-sub { font-size: 12.5px; color: var(--nx-muted, #9aa3b2); margin: 2px 0 14px; }
.cleanlite-ov-list { display: flex; flex-direction: column; gap: 4px; margin-bottom: 6px; }
.cleanlite-ov-row { display: flex; align-items: center; gap: 10px; padding: 9px 10px; border-radius: 12px; cursor: pointer; }
.cleanlite-ov-row:active { background: var(--nx-gold-faint, rgba(212,164,78,.08)); }
.cleanlite-ov-row input { width: 18px; height: 18px; accent-color: var(--nx-gold, #d4a44e); flex-shrink: 0; }
.cleanlite-ov-rowname { font-size: 14px; color: var(--nx-text, #ece4d4); }
.cleanlite-ov-lbl { display: block; font-family: 'JetBrains Mono', ui-monospace, monospace; font-size: 9px; text-transform: uppercase; letter-spacing: .12em; color: var(--nx-gold, #d4a44e); margin: 13px 0 6px; }
.cleanlite-ov-input {
  width: 100%; box-sizing: border-box; background: var(--nx-surface-2, rgba(24,34,54,.62));
  border: 1px solid var(--nx-gold-line, rgba(212,164,78,.22)); border-radius: 12px;
  padding: 11px 13px; color: var(--nx-text, #ece4d4); font-family: 'Outfit', sans-serif; font-size: 14px;
}
.cleanlite-ov-input:focus { outline: none; border-color: var(--nx-gold, #d4a44e); }
.cleanlite-ov-actions { display: flex; gap: 8px; justify-content: flex-end; margin-top: 18px; }
.cleanlite-ov-btn {
  padding: 10px 16px; border-radius: 999px; cursor: pointer;
  font-family: 'Outfit', sans-serif; font-size: 13px; font-weight: 600;
  background: transparent; border: 1px solid var(--nx-gold-line, rgba(212,164,78,.3)); color: var(--nx-text, #ece4d4);
}
.cleanlite-ov-btn.is-primary { background: var(--nx-gold, #d4a44e); border-color: var(--nx-gold, #d4a44e); color: #101626; }
.cleanlite-ov-del { margin-right: auto; border-color: rgba(210,75,75,.4); color: #e58a8a; }

/* v179 — per-location weather chip in the daily-log location sections.
   Filled async by maybeAutoWeather; hidden until it has content. */
.dlog-loc-weather { font-family: 'JetBrains Mono', monospace; font-size: 11px; letter-spacing: .02em; color: var(--nx-faint, #8a93a3); margin: 0 0 10px; }
.dlog-loc-weather::before { content: '\2601\FE0F  '; opacity: .8; }
.dlog-loc-weather:empty { display: none; }

/* ─── Cleaning Lite v18.37 additions: week strip, overdue chip, shift seg ── */
/* v260: .cleanlite-week → .cleanlite-weekstrip (the old name collided with a
   pill-button style above and dressed the strip as a capsule). */
.cleanlite-weekstrip {
  display: flex; align-items: flex-end; gap: 8px;
  padding: 8px 12px 5px; margin: 8px 0 2px;
  background: var(--nx-surface-2, rgba(255,255,255,.03));
  border: 1px solid var(--nx-gold-line, rgba(212,164,78,.16));
  border-radius: 12px;
}
#cleanView .cleanlite-wk-day { display: flex; flex-direction: column; align-items: center; gap: 3px; flex: 1; }
#cleanView .cleanlite-wk-bar { width: 100%; max-width: 26px; height: 34px; border-radius: 5px; background: rgba(255,255,255,.05); display: flex; align-items: flex-end; overflow: hidden; }
#cleanView .cleanlite-wk-fill { width: 100%; border-radius: 5px 5px 0 0; }
#cleanView .cleanlite-wk-fill.is-good { background: var(--nx-green, #7a9b6c); }
#cleanView .cleanlite-wk-fill.is-mid  { background: var(--nx-gold, #d4a44e); }
#cleanView .cleanlite-wk-fill.is-low  { background: rgba(168,62,62,.55); }
#cleanView .cleanlite-wk-lbl { font-size: 9px; color: var(--nx-text-dim, #b6ad9a); font-family: 'JetBrains Mono', monospace; }
#cleanView .cleanlite-wk-streak { flex: 0 0 auto; align-self: center; font-size: 13px; font-weight: 700; color: var(--nx-gold, #d4a44e); padding-left: 6px; }
/* v260 — the overdue chip screamed red; NEXUS speaks urgency in gold.
   Same tap-through, calmer voice (matches the email ladder + home cards). */
#cleanView .cleanlite-overdue {
  display: block; width: 100%; text-align: left;
  margin: 8px 0 2px; padding: 10px 12px; border-radius: 999px;
  background: var(--nx-gold-faint, rgba(212,164,78,.10));
  border: 1px solid var(--nx-gold, #d4a44e);
  color: var(--nx-gold, #d4a44e); font: inherit; font-size: 12.5px; font-weight: 700; cursor: pointer;
  letter-spacing: .02em;
}
/* v279 — Clippy's counsel: cleaning ↔ equipment finally talk. Down units
   announce themselves atop the checklist so nobody scrubs a dead machine.
   Gold ladder voice, not alarm-red (house rule). */
#cleanView .cleanlite-eqdown {
  margin: 8px 0 2px; padding: 10px 12px; border-radius: 12px;
  background: var(--nx-gold-faint, rgba(212,164,78,.10));
  border: 1px dashed var(--nx-gold, #d4a44e);
  color: var(--text); font-size: 12.5px; line-height: 1.5;
}
#cleanView .cleanlite-eqdown b { color: var(--nx-gold, #d4a44e); }
#cleanView .cleanlite-eqdown-st { color: var(--muted); font-size: 11.5px; }

/* v260 — Today/Crew mode segment (mirrors the board tabs) */
#cleanView .cleanlite-mode {
  display: inline-flex; gap: 0; margin-top: 8px;
  border: 1px solid var(--nx-gold-line, rgba(212,164,78,.25));
  border-radius: 999px; overflow: hidden; align-self: flex-start;
}
#cleanView .cleanlite-mode-btn {
  padding: 7px 18px; font: inherit; font-size: 12.5px; font-weight: 700;
  background: transparent; border: 0; color: var(--nx-muted, #9aa3b2); cursor: pointer;
  letter-spacing: .03em;
}
#cleanView .cleanlite-mode-btn.is-active { background: var(--nx-gold, #d4a44e); color: var(--nx-gold-on, #101626); }
/* v260 — the CTA dock wrapped its five pills over the zone list; per-mode
   it now holds at most four, wraps safely, and backs them fully. */
.cleanlite-cta-wrap { flex-wrap: wrap; background: transparent; }   /* v366 — scrim removed (see base rule) */
#cleanView .cleanlite-shift { display: inline-flex; gap: 0; border: 1px solid var(--nx-gold-line, rgba(212,164,78,.25)); border-radius: 9px; overflow: hidden; }
#cleanView .cleanlite-shift-btn {
  padding: 6px 14px; font: inherit; font-size: 12px; font-weight: 600;
  background: transparent; border: 0; color: var(--nx-text-dim, #b6ad9a); cursor: pointer;
}
#cleanView .cleanlite-shift-btn.is-active { background: var(--nx-gold-faint, rgba(212,164,78,.16)); color: var(--nx-gold, #d4a44e); }
#cleanView .cleanlite-task-by {
  margin-left: auto; flex: 0 0 auto; font-size: 10px; padding: 2px 7px; border-radius: 7px;
  background: var(--nx-gold-faint, rgba(212,164,78,.12)); color: var(--nx-gold, #d4a44e); font-weight: 600;
}
#cleanView .cleanlite-task-cam { flex: 0 0 auto; font-size: 11px; opacity: .75; margin-left: 6px; }

/* ═══ Cleaning Lite v18.38 — multi-person zone crews + autofill ═══ */
#cleanView .cleanlite-person-btn { display: inline-flex; align-items: center; }
#cleanView .cleanlite-person-btn .cleanlite-av { box-shadow: 0 0 0 2px var(--nx-bg, #101626); }
#cleanView .cleanlite-person-btn .cleanlite-av + .cleanlite-av { margin-left: -16px; }
.cleanlite-sheet-hint { font-size: 12px; color: var(--nx-muted, #9aa3b2); margin: -6px 4px 10px; }
.cleanlite-person .cleanlite-psel { display: none; flex: 0 0 auto; color: var(--nx-gold, #d4a44e); }
.cleanlite-person.is-active .cleanlite-psel { display: inline-flex; }
.cleanlite-sheet-actions { display: flex; gap: 10px; margin-top: 14px; }
.cleanlite-sheet-clear {
  flex: 0 0 auto; padding: 11px 16px; border-radius: 999px; cursor: pointer;
  border: 1px solid var(--nx-gold-line, rgba(212,164,78,.22)); background: transparent;
  color: var(--nx-muted, #9aa3b2); font-weight: 600; font-size: 13px;
}
.cleanlite-sheet-save {
  flex: 1; padding: 11px 16px; border-radius: 999px; border: 0; cursor: pointer;
  background: var(--nx-gold, #d4a44e); color: var(--nx-gold-on, #101626);
  font-weight: 700; font-size: 13.5px;
}
#cleanView .cleanlite-mini.is-accent { border-color: var(--nx-gold, #d4a44e); color: var(--nx-gold, #d4a44e); }
#cleanView .cleanlite-mini + .cleanlite-mini { margin-left: 8px; }

/* ═══ Daily notes revamp (v209) — NEXUS urgency ladder + glance + arrows ═══
   Alfredo's rule: no reds, no greens anywhere. Severity is FILL WEIGHT in
   the brand palette, matching the styled email's ladder exactly:
     down/urgent → solid ink pill (renders cream-on-dark in dark theme,
                    ink-on-light in light theme via --nx-text-strong/bg)
     overdue     → solid gold
     due/attn    → hollow gold
     info        → sand */
#dailylogView .dlog-eqstatus-pill-down {
  background: var(--nx-text-strong, #f6f0e2); color: var(--nx-bg, #0e1320);
}
#dailylogView .dlog-eqstatus-pill-service {
  background: transparent; border: 1.5px solid var(--nx-gold, #d4a44e);
  color: var(--nx-gold, #d4a44e); padding: 2px 7px;
}
#dailylogView .bw-pri-urgent {
  background: var(--nx-text-strong, #f6f0e2); color: var(--nx-bg, #0e1320);
  border: 1px solid var(--nx-text-strong, #f6f0e2);
}
#dailylogView .dlog-act-pill-status.to-down,
#dailylogView .dlog-act-pill-status.to-broken,
#dailylogView .dlog-act-pill-issue { background: var(--nx-text-strong, #f6f0e2); }
#dailylogView .dlog-act-pill-status.to-operational,
#dailylogView .dlog-act-pill-create,
#dailylogView .dlog-act-pill-paid { background: var(--nx-gold, #d4a44e); }
#dailylogView .dlog-tk-lane-working { color: var(--nx-gold, #d4a44e); }

/* Section headers speak the email's language: gold eyebrow over a rule. */
#dailylogView .dlog-section-title {
  text-transform: uppercase; letter-spacing: .09em;
  font-size: 12.5px; color: var(--nx-gold, #d4a44e);
}
#dailylogView details[open] > .dlog-section-header {
  border-bottom: 1px solid var(--nx-gold-line, rgba(212,164,78,.18));
}
/* Severity edge — gold tiers only. Hot = something is down/urgent inside;
   warm = open work inside. */
#dailylogView .dlog-section.sev-hot  { border-left: 3px solid var(--nx-gold, #d4a44e); }
#dailylogView .dlog-section.sev-warm { border-left: 3px solid var(--nx-gold-line-2, rgba(212,164,78,.45)); }

/* At-a-glance strip — the day's headline, chips scroll to their section. */
#dailylogView .dlog-glance { display: flex; flex-wrap: wrap; gap: 8px; margin: 2px 0 14px; }
#dailylogView .dlog-glance-chip {
  border-radius: 999px; padding: 7px 14px;
  font-family: inherit; font-size: 12.5px; font-weight: 700; cursor: pointer;
  border: 1px solid var(--nx-gold-line, rgba(212,164,78,.22));
  background: var(--nx-gold-faint, rgba(212,164,78,.10)); color: var(--nx-muted, #9aa3b2);
}
#dailylogView .dlog-glance-chip.g-down {
  background: var(--nx-text-strong, #f6f0e2); color: var(--nx-bg, #0e1320);
  border-color: var(--nx-text-strong, #f6f0e2);
}
#dailylogView .dlog-glance-chip.g-od {
  background: var(--nx-gold, #d4a44e); color: var(--nx-gold-on, #101626);
  border-color: var(--nx-gold, #d4a44e);
}

/* Row arrows — the minimalist › door into the real thing. */
#dailylogView .dlog-row-go {
  flex-shrink: 0; margin-left: auto; width: 30px; height: 30px;
  display: inline-flex; align-items: center; justify-content: center;
  border-radius: 999px; border: 1px solid var(--nx-gold-line, rgba(212,164,78,.25));
  background: transparent; color: var(--nx-gold, #d4a44e);
  font-size: 17px; font-weight: 700; line-height: 1; cursor: pointer; padding: 0;
}
#dailylogView .dlog-row-go:hover { background: var(--nx-gold-faint, rgba(212,164,78,.12)); }

/* Live work-order line on Equipment Status rows — the current truth,
   distinct from the manager's sticky status_note above it. */
#dailylogView .dlog-eqstatus-wo {
  display: block; margin-top: 3px;
  font-size: 11.5px; line-height: 1.45;
  color: var(--nx-gold, #d4a44e);
  font-family: 'JetBrains Mono', monospace;
}
#dailylogView .dlog-eqstatus-wo.is-none { color: var(--nx-faint, #857f75); }
#dailylogView .dlog-eqstatus-issue {
  margin-top: 6px; padding: 9px 11px;
  background: var(--nx-surface-2, rgba(255,255,255,.03));
  border: 1px solid var(--nx-gold-line, rgba(212,164,78,.16));
  border-radius: 8px;
}
#dailylogView .dlog-eqstatus-issue-title {
  font-size: 13px; font-weight: 600; color: var(--nx-text-strong, #f0e9dd); line-height: 1.35;
}
#dailylogView .dlog-eqstatus-issue-desc {
  margin-top: 3px; font-size: 12px; line-height: 1.5; color: var(--nx-muted, #9aa3b2);
}

/* "NEW TODAY" chip on Board Tickets rows — hollow gold, ladder-consistent. */
#dailylogView .dlog-tk-new {
  display: inline-block; padding: 0 6px;
  border: 1px solid var(--nx-gold, #d4a44e); border-radius: 999px;
  color: var(--nx-gold, #d4a44e);
  font-size: 9.5px; font-weight: 700; letter-spacing: .06em;
}

/* "moved today: From → To" chip on Board Tickets rows. */
#dailylogView .dlog-tk-moved {
  display: inline-block; padding: 0 6px;
  border: 1px solid var(--nx-gold-line, rgba(212,164,78,.35)); border-radius: 999px;
  color: var(--nx-gold, #d4a44e);
  font-size: 9.5px; font-weight: 700; letter-spacing: .04em;
  text-transform: none;
}

/* ─── v269 — Maintenance due ON the daily notes screen ─────────────────
   The same PM/inspection items the daily email reports, with the 📝 note
   visible in gold. Read-only rows; › jumps to the unit. */
#dailylogView .dlog-maint-kind {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 10px; font-weight: 500; color: var(--nx-muted, #9aa3b2);
  letter-spacing: .04em;
}
#dailylogView .dlog-maint-note {
  margin-top: 4px; padding: 4px 8px;
  border-left: 2px solid var(--nx-gold, #d4a44e);
  border-radius: 0 7px 7px 0;
  background: var(--nx-gold-faint, rgba(212,164,78,.08));
  font-size: 12px; line-height: 1.45; color: var(--nx-gold, #d4a44e);
  overflow-wrap: anywhere;
}

/* "↻ weekly" repeat chip — same quiet outline as the Board's repeat face chip. */
#dailylogView .dlog-tk-repeat {
  display: inline-block; padding: 0 6px;
  border: 1px dashed var(--nx-gold-line, rgba(212,164,78,.35)); border-radius: 999px;
  color: var(--nx-muted, #9aa3b2);
  font-size: 9.5px; font-weight: 600; letter-spacing: .04em;
  text-transform: none;
}

/* "ON ORDER" chip on Board Tickets rows — a right-side notification, filled
   gold so it reads at a glance next to the › arrow. Mirrors the Board face. */
#dailylogView .dlog-tk-onorder {
  flex-shrink: 0; margin-left: auto; align-self: center; white-space: nowrap;
  display: inline-block; padding: 3px 9px; border-radius: 999px;
  background: var(--nx-gold-faint, rgba(212,164,78,.14));
  border: 1px solid var(--nx-gold, #d4a44e); color: var(--nx-gold, #d4a44e);
  font-size: 9.5px; font-weight: 700; letter-spacing: .06em;
}
/* keep the › arrow adjacent to the chip instead of also grabbing the auto margin */
#dailylogView .dlog-tk-onorder + .dlog-row-go { margin-left: 8px; }

/* ─── v261 — Crew day planner + profiles (plan a whole day on one sheet) ── */
#cleanView .cleanlite-planner, .cleanlite-planner { max-height: 88dvh; }
.cleanlite-pl-profiles {
  display: flex; align-items: center; gap: 7px; flex-wrap: wrap; margin: 2px 0 10px;
}
.cleanlite-pl-profiles-lbl {
  font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: .08em;
  text-transform: uppercase; color: var(--nx-faint, #6c7585);
}
.cleanlite-pl-profile {
  display: inline-flex; align-items: center; gap: 6px; padding: 5px 6px 5px 12px;
  border-radius: 999px; cursor: pointer; font-size: 12px; font-weight: 700;
  background: var(--nx-gold-faint, rgba(212,164,78,.10));
  border: 1px solid var(--nx-gold-line, rgba(212,164,78,.35)); color: var(--nx-gold, #d4a44e);
}
.cleanlite-pl-profile-x {
  border: 0; background: transparent; color: var(--nx-faint, #6c7585);
  font-size: 13px; cursor: pointer; padding: 0 4px; line-height: 1;
}
.cleanlite-pl-profile-x:hover { color: var(--nx-gold, #d4a44e); }
.cleanlite-pl-zones { display: flex; flex-direction: column; gap: 12px; }
.cleanlite-pl-zone {
  border: 1px solid var(--nx-gold-line, rgba(212,164,78,.16)); border-radius: 12px;
  padding: 10px 11px; background: var(--nx-surface-2, rgba(24,34,54,.4));
}
.cleanlite-pl-zonename {
  font-size: 12px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase;
  color: var(--nx-text-strong, #f6f0e2); margin-bottom: 8px;
}
.cleanlite-pl-count { color: var(--nx-gold, #d4a44e); font-family: 'JetBrains Mono', monospace; font-size: 11px; }
.cleanlite-pl-people { display: flex; flex-wrap: wrap; gap: 6px; }
.cleanlite-pl-chip {
  display: inline-flex; align-items: center; gap: 6px; padding: 4px 10px 4px 4px;
  border-radius: 999px; cursor: pointer; font-size: 12px; font-weight: 600;
  background: transparent; border: 1px solid rgba(255,255,255,.10);
  color: var(--nx-muted, #9aa3b2); font-family: inherit; transition: all .12s;
}
.cleanlite-pl-chip.is-active {
  background: var(--nx-gold-faint, rgba(212,164,78,.14));
  border-color: var(--nx-gold, #d4a44e); color: var(--nx-gold, #d4a44e);
}
.cleanlite-pl-chip .cleanlite-av.is-sm { width: 24px; height: 24px; font-size: 10px; border-width: 1px; }
.cleanlite-pl-saveprofile { display: flex; gap: 8px; margin-top: 12px; align-items: center; }
.cleanlite-pl-saveprofile .cleanlite-ov-input { flex: 1; }
.cleanlite-pl-actions { flex-wrap: wrap; }

/* ─── v262 — hidden crew users (tucked, not gone) ───────────────────── */
/* Planner: hidden chips collapse behind the "+N" chip; revealed = dimmed */
.cleanlite-pl-chip.is-hidden { display: none; }
.cleanlite-planner.show-hidden .cleanlite-pl-chip.is-hidden { display: inline-flex; opacity: .55; border-style: dashed; }
.cleanlite-pl-more { border-style: dashed; color: var(--nx-faint, #6c7585); }
.cleanlite-pl-more:hover { color: var(--nx-gold, #d4a44e); }
/* Person picker: dimmed hidden section + the eye toggle */
.cleanlite-person.is-hidden { opacity: .5; }
.cleanlite-person .cleanlite-eye {
  flex: 0 0 auto; font-size: 13px; padding: 4px 6px; border-radius: 8px;
  opacity: .5; cursor: pointer; margin-left: 4px;
}
.cleanlite-person .cleanlite-eye:hover { opacity: 1; background: rgba(255,255,255,.06); }
.cleanlite-hiddenlbl {
  font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: .08em;
  text-transform: uppercase; color: var(--nx-faint, #6c7585);
  padding: 10px 2px 4px; border-top: 1px dashed rgba(255,255,255,.08); margin-top: 8px;
}

/* v266 — Board-ticket rows: explicit, crush-proof layout. Inside the new
   per-location tickets block a long title collapsed to one character per
   line (the PARTS ORDERED chip + arrow starved the flex column). The title
   column now keeps a real minimum and right-side chips wrap below on
   narrow rows instead of squeezing the text. */
#dailylogView .dlog-tk-row {
  display: flex; align-items: flex-start; gap: 9px; flex-wrap: wrap;
  padding: 10px 12px; background: var(--nx-surface-1, rgba(34,46,70,.35));
  border: 1px solid rgba(255,255,255,.05); margin-bottom: 8px;
}
#dailylogView .dlog-tk-main { flex: 1 1 200px; min-width: 0; }
#dailylogView .dlog-tk-title { overflow-wrap: anywhere; }

/* ─── v267 — PM status notes: the human word on late/booked PMs ───────── */
.nxrm-pm-note {
  margin-top: 5px; font-size: 12px; line-height: 1.45;
  color: var(--nx-gold, #d4a44e);
  background: var(--nx-gold-faint, rgba(212,164,78,.08));
  border-left: 2px solid var(--nx-gold, #d4a44e);
  border-radius: 0 8px 8px 0; padding: 5px 9px;
  overflow-wrap: anywhere;
}
.nxrm-pm-note-by { color: var(--nx-muted, #9aa3b2); font-size: 11px; }
/* v269 — the note itself is the editor: tap it (✎ hints at that). */
.nxrm-pm-note[data-note] { cursor: pointer; }
.nxrm-pm-note-edit { float: right; margin-left: 6px; opacity: .55; font-size: 11px; }
.nxrm-pm-addnote {
  display: inline-block; margin-top: 5px; padding: 2px 0;
  background: none; border: none; cursor: pointer;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 10.5px; letter-spacing: .05em;
  color: var(--nx-gold, #d4a44e); opacity: .7;
}
.nxrm-pm-addnote:hover { opacity: 1; }

/* v269 — PM screen simplification: the KPI tiles ARE the filter */
.nxrm-tile.is-active {
  border-color: var(--nx-gold, #d4a44e);
  box-shadow: inset 0 0 0 1px var(--nx-gold, #d4a44e);
}

/* v269 — schedule edit sheet (replaces the numeric prompt menu) */
.nxrm-sheet-form { display: flex; flex-direction: column; gap: 12px; margin-top: 14px; }
.nxrm-sheet-2col { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.nxrm-sheet-field { display: flex; flex-direction: column; gap: 5px; min-width: 0; }
.nxrm-sheet-field > span {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 9.5px; letter-spacing: .12em; text-transform: uppercase;
  color: var(--nx-muted, #9aa3b2);
}
.nxrm-sheet-field > input {
  width: 100%; min-width: 0; background: rgba(0,0,0,0.3);
  border: 1px solid var(--nx-gold-line, rgba(212,164,78,.24));
  border-radius: 12px; padding: 10px 12px;
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 15px; color: var(--nx-text, #ede9e0);
}
.nxrm-sheet-field > input:focus { border-color: var(--nx-gold, #d4a44e); outline: none; }
.nxrm-sheet-save { width: 100%; padding: 12px 0; font-size: 14px; }
.nxrm-sheet-row { display: flex; gap: 8px; }
.nxrm-sheet-minor {
  flex: 1; padding: 9px 0; border-radius: 12px;
  background: transparent; border: 1px solid var(--nx-gold-line, rgba(212,164,78,.24));
  color: var(--nx-muted, #9aa3b2); font-size: 12.5px; cursor: pointer;
}
.nxrm-sheet-minor:hover { border-color: var(--nx-gold, #d4a44e); color: var(--nx-text, #ede9e0); }
.nxrm-sheet-minor.is-danger { color: var(--nx-red, #d24b4b); border-color: rgba(210,75,75,.35); }
.nxrm-sheet-minor.is-danger:hover { border-color: var(--nx-red, #d24b4b); }

/* v381 — Upcoming PMs on the daily notes (heads-up, muted vs "due") */
.bw-pri-pill.dlog-pri-upcoming{background:rgba(255,255,255,.06);color:var(--nx-faint,#8a8a90);border:1px solid rgba(255,255,255,.12)}
.dlog-maint-row.is-upcoming{opacity:.82}
.dlog-subsection-title.dlog-sub-upcoming{color:var(--nx-faint,#8a8a90);font-weight:600;margin-top:12px}

/* ═══ v404 — DAILY LOG polish (Alfredo: "improve the UI over at daily log,
   it's a mess") ═══════════════════════════════════════════════════════════
   The log was mostly sound; two things read as broken/ragged:
   (1) the Weather "Refresh" button was styled as a 42px icon square but held
       the WORD "Refresh", which overflowed off the card's right edge. JS now
       renders a ⟳ glyph; this just makes the square read as a proper control.
   (2) the action bar right-justified-wrapped into a ragged 2 rows with one
       orphaned button. Restructure: auto-send owns its own row, the
       secondaries form an even 2-up grid, the primary spans full width. */
#dailylogView .dlog-weather-refresh {
  font-size: 19px;            /* the glyph, optically centered in the 42px box */
  font-weight: 400;
  transition: background .15s, border-color .15s, transform .3s;
}
#dailylogView .dlog-weather-refresh:hover { border-color: var(--nx-gold, #d4a44e); }

/* Action bar — tidy footer grid instead of a ragged right-justified wrap. */
#dailylogView .dlog-actions {
  display: flex; flex-wrap: wrap; gap: 9px;
  justify-content: stretch; align-items: center;
}
#dailylogView .dlog-autosend-wrap {
  flex: 1 1 100%;             /* auto-send controls get their own row */
  margin-right: 0;
  flex-wrap: wrap;
}
#dailylogView .dlog-actions .eq-btn {
  flex: 1 1 calc(50% - 5px);  /* even 2-up grid of secondaries */
  min-width: 0;
  white-space: nowrap;
}
#dailylogView .dlog-actions .eq-btn-primary {
  flex-basis: 100%;           /* the commit action spans the full width */
  order: 99;                  /* and always sits last, under the grid */
}

/* ═══ v405 — bottom nav matches the masthead color (Alfredo: "match the
   bottom masthead and top masthead color wise") ══════════════════════════
   The masthead (.nav) and bottom nav had drifted apart: the masthead is a
   translucent warm-linen/deep-navy pane (nexus-rm 1636/1643), the bottom nav
   was an opaque #fbf8f1 / --nx-bottom-nav-bg with a heavier blur. Mirror the
   masthead's exact background + backdrop so top and bottom read as one frame.
   The upward shadow is the masthead's downward one, reflected. The bottom
   nav keeps its own fading-gold ::before hairline (the masthead's ::after). */
[data-theme="dark"] .bottom-nav {
  background: rgba(14, 19, 32, 0.72) !important;
  backdrop-filter: blur(18px) saturate(1.3) !important;
  -webkit-backdrop-filter: blur(18px) saturate(1.3) !important;
  box-shadow: 0 -6px 22px rgba(4, 8, 16, 0.45) !important;
}
[data-theme="light"] .bottom-nav {
  background: rgba(243, 236, 221, 0.78) !important;
  backdrop-filter: blur(18px) saturate(1.2) !important;
  -webkit-backdrop-filter: blur(18px) saturate(1.2) !important;
  box-shadow: 0 -6px 18px rgba(120, 100, 70, 0.12) !important;
}
