/* R3 Signals — server-arbitrated meeting cues.
 *
 * Extracted from styles.css 2026-05-20 (Phase 7 bucket 3 follow-up)
 * to bring styles.css under the 700-LoC hard cap. Cascade order is
 * preserved: loads last among the styles-*.css module split, then
 * styles-share.css / styles-render-mode.css / styles-ask-ori.css
 * follow.
 */

    /* ── R3 Signals — server-arbitrated meeting cues ────────────────── */
    /* Slot lives just below the toolbar (Classic) or at the top of the
       bubble field (Bubble). Empty slot collapses to zero so the layout
       doesn't reserve space when no Signal is active. */
    .signal-slot { display: contents; }
    .signal-slot.empty { display: none; }

    /* Throttle pill — surfaces gate reasons so the user knows the
       system is rate-limiting, not broken. Sits just below the slot. */
    .signal-throttle {
      padding: 4px 12px;
      background: var(--surface);
      border-bottom: 1px solid var(--border-sub);
      color: var(--text-3);
      font-size: 11px;
      letter-spacing: 0.3px;
      flex-shrink: 0;
    }
    .signal-throttle::before {
      content: "↻ ";
      color: var(--text-2);
    }
    .signal-throttle[data-reason="dismiss_streak"] { color: var(--amber); }
    .signal-throttle[data-reason="account_hour_cap"],
    .signal-throttle[data-reason="meeting_hour_cap"] { color: var(--purple); }

    .signal {
      display: flex; align-items: center; gap: 10px;
      padding: 8px 14px; min-height: 36px;
      background: var(--surface-hi);
      border-bottom: 1px solid var(--border);
      color: var(--text);
      font-size: 13px;
      cursor: default;
      position: relative;
      animation: signalIn 280ms ease-out;
      transition: opacity 220ms ease-out;
      overflow: hidden;
      flex-shrink: 0;
    }
    .signal.fading { opacity: 0; }
    .signal.pinned { box-shadow: 0 0 0 2px var(--purple) inset; }

    @keyframes signalIn {
      from { transform: translateY(-8px); opacity: 0; }
      to   { transform: translateY(0); opacity: 1; }
    }

    .signal::before {
      content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 3px;
    }
    .signal[data-type="risk"]::before          { background: var(--amber); }
    .signal[data-type="recurrence"]::before    { background: var(--purple); }
    .signal[data-type="clarify"]::before       { background: var(--blue); }
    .signal[data-type="meaning_shift"]::before { background: var(--ochre); }
    .signal[data-type="decision"]::before      { background: var(--indigo); }
    .signal[data-type="acceptance"]::before    { background: var(--emerald); }

    .signal .sig-icon {
      width: 18px; height: 18px; border-radius: 50%;
      display: inline-flex; align-items: center; justify-content: center;
      font-size: 11px; font-weight: 700; flex-shrink: 0;
    }
    .signal[data-type="risk"]          .sig-icon { background: var(--amber); color: #000; }
    .signal[data-type="recurrence"]    .sig-icon { background: var(--purple); color: #fff; }
    .signal[data-type="clarify"]       .sig-icon { background: var(--blue); color: #000; }
    .signal[data-type="meaning_shift"] .sig-icon { background: var(--ochre); color: #000; }
    .signal[data-type="decision"]      .sig-icon { background: var(--indigo); color: #fff; }
    .signal[data-type="acceptance"]    .sig-icon { background: var(--emerald); color: #fff; }

    .signal .sig-label {
      font-size: 9px; text-transform: uppercase; letter-spacing: 0.7px;
      color: var(--text-2); margin-right: 2px; flex-shrink: 0;
    }
    .signal .sig-text {
      flex: 1; min-width: 0;
      overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
    }
    .signal .sig-suppress {
      font-size: 10px; color: var(--text-3);
      background: transparent; border: 1px solid var(--border-sub);
      border-radius: 4px; padding: 2px 7px; cursor: pointer;
      flex-shrink: 0; font-family: inherit;
    }
    .signal .sig-suppress:hover { color: var(--text); border-color: var(--border); }
    .signal .sig-close {
      width: 22px; height: 22px;
      display: inline-flex; align-items: center; justify-content: center;
      font-size: 16px; line-height: 1; color: var(--text-3);
      background: transparent; border: 1px solid var(--border-sub);
      border-radius: 50%; padding: 0; cursor: pointer;
      flex-shrink: 0; font-family: inherit;
    }
    .signal .sig-close:hover { color: var(--text); border-color: var(--border); }
    .signal .sig-arrow { color: var(--text-3); flex-shrink: 0; font-size: 14px; }

    .signal .sig-ttl {
      position: absolute; bottom: 0; left: 0; height: 2px;
      background: linear-gradient(90deg, var(--purple), var(--blue));
      transition: width linear;
    }

    /* R3.5 — Signals tab row */
    .signal-row {
      display: flex; align-items: flex-start; gap: 10px;
      padding: 10px 12px; border-bottom: 1px solid var(--border-sub);
      position: relative;
      font-size: var(--fs-sm);
    }
    .signal-row::before {
      content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 3px;
    }
    .signal-row[data-type="risk"]::before          { background: var(--amber); }
    .signal-row[data-type="recurrence"]::before    { background: var(--purple); }
    .signal-row[data-type="clarify"]::before       { background: var(--blue); }
    .signal-row[data-type="meaning_shift"]::before { background: var(--ochre); }
    .signal-row[data-type="decision"]::before      { background: var(--indigo); }
    .signal-row[data-type="acceptance"]::before    { background: var(--emerald); }
    .signal-row .signal-icon {
      width: 20px; height: 20px; border-radius: 50%;
      display: inline-flex; align-items: center; justify-content: center;
      font-size: 11px; font-weight: 700; flex-shrink: 0; margin-top: 1px;
    }
    .signal-row[data-type="risk"]          .signal-icon { background: var(--amber); color: #000; }
    .signal-row[data-type="recurrence"]    .signal-icon { background: var(--purple); color: #fff; }
    .signal-row[data-type="clarify"]       .signal-icon { background: var(--blue); color: #000; }
    .signal-row[data-type="meaning_shift"] .signal-icon { background: var(--ochre); color: #000; }
    .signal-row[data-type="decision"]      .signal-icon { background: var(--indigo); color: #fff; }
    .signal-row[data-type="acceptance"]    .signal-icon { background: var(--emerald); color: #fff; }
    .signal-row .signal-body { flex: 1; min-width: 0; }
    .signal-row .signal-text {
      display: flex; align-items: baseline; gap: 6px; flex-wrap: wrap;
    }
    .signal-row .signal-label {
      font-size: 9px; text-transform: uppercase; letter-spacing: 0.7px;
      color: var(--text-2); flex-shrink: 0;
    }
    .signal-row .signal-text-content {
      flex: 1; min-width: 0; color: var(--text);
    }
    .signal-row .signal-lifecycle {
      font-size: 9px; text-transform: uppercase; letter-spacing: 0.5px;
      color: var(--text-3); border: 1px solid var(--border-sub);
      border-radius: 4px; padding: 1px 5px;
    }
    .signal-row .signal-meta {
      font-size: var(--fs-xs); color: var(--text-3); margin-top: 4px;
    }
    .signal-row .signal-keep-btn {
      font-size: var(--fs-xs); padding: 4px 10px;
      background: transparent; border: 1px solid var(--border-sub);
      border-radius: 4px; color: var(--text-2); cursor: pointer;
      flex-shrink: 0; align-self: flex-start;
    }
    .signal-row .signal-keep-btn:hover {
      color: var(--text); border-color: var(--border); background: var(--surface-hi);
    }
    .signal-row .signal-keep-btn.kept {
      color: var(--text-3); border-color: var(--border-sub); cursor: default;
    }
