    /* ── donate overlay ── */
    #donate-overlay {
      position: fixed; inset: 0; z-index: 200;
      background: rgba(0,0,0,0.72);
      display: flex; align-items: center; justify-content: center;
      opacity: 0; pointer-events: none; transition: opacity 0.18s;
    }
    #donate-overlay.open { opacity: 1; pointer-events: auto; }
    .donate-card {
      background: #0e0e0e; border: 1px solid #222;
      width: min(420px, calc(100vw - 2rem));
      max-height: calc(100vh - 4rem); overflow-y: auto;
      display: flex; flex-direction: column; gap: 1.6rem;
      padding: 2rem 1.8rem; position: relative;
    }
    .donate-close {
      position: absolute; top: 0.8rem; right: 0.9rem;
      background: none; border: none; color: #444; font-size: 1.1rem;
      cursor: pointer; font-family: inherit; line-height: 1;
      transition: color 0.15s;
    }
    .donate-close:hover { color: #aaa; }
    .donate-pitch { display: flex; flex-direction: column; gap: 0.7rem; }
    .donate-pitch h2 { font-size: 0.65rem; letter-spacing: 0.3em; text-transform: uppercase; color: #c8a84b; margin: 0; }
    .donate-pitch p { font-size: 0.85rem; color: #777; line-height: 1.9; margin: 0; }
    .donate-pitch p strong { color: #bbb; font-weight: normal; }
    .donate-type { display: flex; gap: 0.5rem; }
    .type-btn {
      flex: 1; font-family: monospace; font-size: 0.78rem; letter-spacing: 0.1em;
      text-transform: uppercase; background: #111; border: 1px solid #2a2a2a; color: #555;
      padding: 0.5rem; cursor: pointer; transition: all 0.15s;
    }
    .type-btn:hover { border-color: #888; color: #aaa; }
    .type-btn.selected { border-color: #c8a84b; color: #c8a84b; background: #1a1600; }
    .donate-amounts { display: flex; flex-direction: column; gap: 0.7rem; }
    .donate-amounts h3 { font-size: 0.62rem; letter-spacing: 0.2em; text-transform: uppercase; color: #444; margin: 0; }
    .amount-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 0.5rem; }
    .amt-btn {
      font-family: monospace; font-size: 0.88rem;
      background: #111; border: 1px solid #2a2a2a; color: #777;
      padding: 0.6rem 0; cursor: pointer; transition: all 0.15s; text-align: center;
    }
    .amt-btn:hover { border-color: #c8a84b; color: #c8a84b; }
    .amt-btn.selected { border-color: #c8a84b; color: #c8a84b; background: #1a1600; }
    .custom-row { display: flex; align-items: center; gap: 0.5rem; margin-top: 0.2rem; }
    .custom-symbol { color: #555; font-size: 0.9rem; }
    .custom-row input {
      flex: 1; background: #111; border: 1px solid #2a2a2a; color: #ccc;
      padding: 0.6rem 0.8rem; font-family: monospace; font-size: 0.88rem;
    }
    .custom-row input:focus { outline: none; border-color: #c8a84b; }
    .custom-row input::placeholder { color: #333; }
    .donate-submit {
      font-family: monospace; font-size: 0.9rem; letter-spacing: 0.08em;
      background: #1a1600; border: 1px solid #c8a84b; color: #c8a84b;
      padding: 0.8rem; cursor: not-allowed; opacity: 0.45; transition: all 0.15s;
      text-transform: uppercase; width: 100%;
    }
    .donate-submit.ready { cursor: pointer; opacity: 1; }
    .donate-submit.ready:hover { background: #2a2400; }
    .stripe-note { font-size: 0.68rem; color: #2a2a2a; text-align: center; letter-spacing: 0.05em; margin: 0; }
    /* ── account overlay ── */
    #account-overlay {
      position: fixed; inset: 0; z-index: 200;
      background: rgba(0,0,0,0.72);
      display: flex; align-items: center; justify-content: center;
      opacity: 0; pointer-events: none; transition: opacity 0.18s;
    }
    #account-overlay.open { opacity: 1; pointer-events: auto; }
    #account-overlay.locked { background: #000; }
    .acct-card {
      background: #0e0e0e; border: 1px solid #222;
      width: min(360px, calc(100vw - 2rem));
      max-height: calc(100vh - 4rem); overflow-y: auto;
      display: flex; flex-direction: column; gap: 1.4rem;
      padding: 2rem 1.8rem; position: relative;
    }
    .acct-close {
      position: absolute; top: 0.8rem; right: 0.9rem;
      background: none; border: none; color: #444; font-size: 1.1rem;
      cursor: pointer; font-family: inherit; line-height: 1;
      transition: color 0.15s;
    }
    .acct-close:hover { color: #aaa; }
    .acct-section { display: flex; flex-direction: column; gap: 0.9rem; }
    .acct-title { font-size: 0.62rem; letter-spacing: 0.28em; text-transform: uppercase; color: #555; }
    .acct-field { display: flex; justify-content: space-between; align-items: center; font-size: 0.88rem; }
    .acct-label { color: #555; }
    .acct-value { color: #ccc; }
    .acct-badge { font-size: 0.68rem; letter-spacing: 0.1em; padding: 0.18rem 0.45rem; border: 1px solid #444; color: #888; text-transform: uppercase; }
    .acct-badge.dev   { border-color: #6af; color: #6af; }
    .acct-badge.admin { border-color: #6a3; color: #6a3; }
    .acct-badge.null  { border-color: #633; color: #844; }
    .acct-logout { font-size: 0.78rem; letter-spacing: 0.1em; color: #555; text-decoration: none; text-transform: uppercase; border: 1px solid #2a2a2a; padding: 0.35rem 0.75rem; align-self: flex-start; transition: all 0.15s; }
    .acct-logout:hover { color: #999; border-color: #555; }
    .acct-divider { border: none; border-top: 1px solid #1a1a1a; margin: 0; }
    .acct-pw-form { display: flex; flex-direction: column; gap: 0.6rem; }
    .acct-pw-form input { background: #111; border: 1px solid #2a2a2a; color: #ccc; padding: 0.5rem 0.7rem; font-family: monospace; font-size: 0.85rem; width: 100%; }
    .acct-pw-form input:focus { outline: none; border-color: #555; }
    .acct-pw-form input::placeholder { color: #333; }
    .acct-pw-btn { background: #1a1a1a; border: 1px solid #333; color: #888; padding: 0.5rem; font-family: monospace; font-size: 0.85rem; cursor: pointer; transition: all 0.15s; }
    .acct-pw-btn:hover { border-color: #666; color: #ccc; }
    .acct-msg { font-size: 0.8rem; display: none; }
    .acct-msg.ok  { color: #6a3; display: block; }
    .acct-msg.err { color: #c44; display: block; }
    .acct-null-note { font-size: 0.8rem; color: #555; line-height: 1.7; text-align: center; border-top: 1px solid #1a1a1a; padding-top: 1rem; }
    /* ── agent heat buttons ── */
    button.usage-heat {
      background: none; border: none; padding: 1px 0; cursor: pointer;
      display: flex; flex-direction: column; justify-content: space-between; align-self: stretch;
    }
    .usage-group.clickable {
      cursor: pointer; border: 1px solid transparent;
      padding: 2px 4px; margin: -2px -4px;
      transition: border-color 0.15s, background 0.15s;
    }
    .usage-group.clickable:hover { border-color: #2a2a2a; background: rgba(255,255,255,0.02); }
    .usage-group.clickable:hover .usage-heat span { color: #ccc; }
    /* ── AGNT3 no-agent placeholder ── */
    .usage-group.no-agent { position: relative; opacity: 0.25; pointer-events: none; }
    .usage-group.no-agent::after {
      content: 'NO AGENT'; position: absolute; inset: 0;
      display: flex; align-items: center; justify-content: center;
      font-size: 0.52rem; letter-spacing: 0.18em; color: #666;
      transform: rotate(-30deg); pointer-events: none;
    }
    /* ── agent profile overlay ── */
    #agent-overlay {
      position: fixed; inset: 0; z-index: 200;
      background: rgba(0,0,0,0.78);
      display: flex; align-items: center; justify-content: center;
      opacity: 0; pointer-events: none; transition: opacity 0.18s;
    }
    #agent-overlay.open { opacity: 1; pointer-events: auto; }
    .agent-card {
      background: #0a0a0a; border: 1px solid #1e1e1e;
      width: min(460px, calc(100vw - 2rem));
      max-height: calc(100vh - 4rem);
      display: flex; flex-direction: column;
      position: relative; overflow: hidden;
    }
    .agent-header {
      padding: 1.6rem 1.8rem 1.2rem;
      border-bottom: 1px solid #141414;
      display: flex; flex-direction: column; gap: 0.5rem;
    }
    .agent-header-top { display: flex; align-items: flex-start; justify-content: space-between; }
    .agent-close {
      background: none; border: none; color: #333; font-size: 1rem;
      cursor: pointer; font-family: inherit; line-height: 1; transition: color 0.15s; padding: 0;
    }
    .agent-close:hover { color: #888; }
    .agent-id {
      font-size: 1.1rem; letter-spacing: 0.22em; text-transform: uppercase;
      color: #e8e8e8; font-weight: normal;
    }
    .agent-status-row { display: flex; align-items: center; gap: 0.6rem; }
    .agent-pulse {
      width: 6px; height: 6px; border-radius: 50%; background: #4a7a4a;
      box-shadow: 0 0 6px #4a7a4a; flex-shrink: 0;
      animation: pulse-glow 2.4s ease-in-out infinite;
    }
    .agent-pulse.idle { background: #444; box-shadow: none; animation: none; }
    @keyframes pulse-glow {
      0%, 100% { opacity: 1; box-shadow: 0 0 5px #4a7a4a; }
      50%       { opacity: 0.5; box-shadow: 0 0 2px #4a7a4a; }
    }
    .agent-status-text { font-size: 0.72rem; color: #555; letter-spacing: 0.08em; }
    .agent-model-row { font-size: 0.72rem; color: #383838; letter-spacing: 0.06em; margin-top: 0.1rem; }
    .agent-meters-section {
      padding: 1rem 1.8rem;
      border-bottom: 1px solid #141414;
      display: flex; gap: 1rem;
    }
    .agent-meter-item { flex: 1; display: flex; flex-direction: column; gap: 0.35rem; }
    .agent-meter-label { font-size: 0.58rem; letter-spacing: 0.18em; text-transform: uppercase; color: #383838; }
    .agent-meter-track { height: 2px; background: #181818; }
    .agent-meter-fill { height: 100%; background: #3a5a3a; transition: width 0.4s; }
    .agent-meter-fill.warn { background: #7a6020; }
    .agent-meter-fill.crit { background: #7a3020; }
    .agent-meter-val { font-size: 0.72rem; color: #555; }
    .agent-activity-header {
      padding: 0.9rem 1.8rem 0.5rem;
      display: flex; justify-content: space-between; align-items: baseline;
    }
    .agent-activity-label { font-size: 0.58rem; letter-spacing: 0.22em; text-transform: uppercase; color: #383838; }
    .agent-activity-count { font-size: 0.68rem; color: #333; }
    .agent-log {
      overflow-y: auto; flex: 1;
      min-height: 180px; max-height: 300px;
      padding: 0 1.8rem 1.4rem;
      display: flex; flex-direction: column; gap: 0;
    }
    .agent-log-entry {
      display: grid; grid-template-columns: 3.2rem 1fr;
      gap: 0.6rem; padding: 0.45rem 0;
      border-bottom: 1px solid #0f0f0f;
      align-items: baseline;
    }
    .agent-log-entry:last-child { border-bottom: none; }
    .agent-log-time { font-size: 0.68rem; color: #303030; font-variant-numeric: tabular-nums; }
    .agent-log-text { font-size: 0.8rem; color: #585858; line-height: 1.4; }
    .agent-log-entry.latest .agent-log-time { color: #4a6a4a; }
    .agent-log-entry.latest .agent-log-text { color: #8a8a8a; }
    .agent-log-empty { font-size: 0.78rem; color: #282828; padding: 1rem 0; }

    /* ── tracker overlay ── */
    #tracker-overlay {
      position: fixed; inset: 0; z-index: 200;
      background: rgba(0,0,0,0.72);
      display: flex; align-items: center; justify-content: center;
      opacity: 0; pointer-events: none; transition: opacity 0.18s;
    }
    #tracker-overlay.open { opacity: 1; pointer-events: auto; }
    .tracker-card {
      background: #0e0e0e; border: 1px solid #222;
      width: min(560px, calc(100vw - 2rem));
      max-height: calc(100vh - 4rem); overflow-y: auto;
      display: flex; flex-direction: column; gap: 0;
      padding: 2rem 1.8rem 1.6rem; position: relative;
    }
    .tracker-close {
      position: absolute; top: 0.8rem; right: 0.9rem;
      background: none; border: none; color: #444; font-size: 1.1rem;
      cursor: pointer; font-family: inherit; line-height: 1;
      transition: color 0.15s;
    }
    .tracker-close:hover { color: #aaa; }
    .tracker-title {
      font-size: 0.65rem; letter-spacing: 0.3em; text-transform: uppercase;
      color: #666; margin: 0 0 1.4rem;
    }
    .fetcher-block {
      border: 1px solid #1a1a1a; padding: 1.1rem 1.2rem 1rem;
      display: flex; flex-direction: column; gap: 0.7rem;
      margin-bottom: 0.9rem;
    }
    .fetcher-block:last-child { margin-bottom: 0; }
    .fetcher-header {
      display: flex; align-items: center; gap: 0.7rem; flex-wrap: wrap;
    }
    .fetcher-name {
      font-size: 0.82rem; color: #bbb; letter-spacing: 0.05em;
    }
    .fetcher-type-badge {
      font-size: 0.58rem; letter-spacing: 0.12em; text-transform: uppercase;
      color: #555; border: 1px solid #252525; padding: 0.15rem 0.4rem;
    }
    .fetcher-type-badge.type-b { color: #5a8f6a; border-color: #1e3028; }
    .fetcher-pulse {
      display: inline-block; width: 6px; height: 6px; border-radius: 50%;
      background: #2a2a2a; margin-left: auto; flex-shrink: 0;
    }
    .fetcher-pulse.active { background: var(--accent, #c8a84b); animation: pulse 2s infinite; }
    .fetcher-pulse-b.active { background: #7ecb8f; }
    .fetcher-desc {
      font-size: 0.78rem; color: #444; line-height: 1.7; margin: 0;
    }
    .fetcher-stats {
      display: flex; gap: 1.2rem; flex-wrap: wrap;
    }
    .fetcher-stat {
      display: flex; flex-direction: column; gap: 0.1rem; min-width: 4rem;
    }
    .fetcher-stat-val {
      font-size: 1rem; color: #888; font-variant-numeric: tabular-nums;
    }
    .fetcher-stat-label {
      font-size: 0.62rem; letter-spacing: 0.08em; text-transform: uppercase; color: #333;
    }
    .ftk-add  { color: #7ecb8f !important; }
    .ftk-diff { color: #e0a060 !important; }
    .fetcher-bar-row {
      display: flex; align-items: center; gap: 0.7rem;
    }
    .fetcher-bar-track {
      flex: 1; height: 3px; background: #1a1a1a;
    }
    .fetcher-bar-fill {
      height: 100%; background: #c8a84b; transition: width 0.4s;
    }
    .fetcher-bar-fill-b { background: #7ecb8f; }
    .fetcher-bar-pct {
      font-size: 0.7rem; color: #444; font-variant-numeric: tabular-nums;
      min-width: 2.8rem; text-align: right;
    }
    .fetcher-footer {
      display: flex; align-items: center; gap: 0.8rem;
    }
    .fetcher-status {
      font-size: 0.68rem; letter-spacing: 0.06em; text-transform: uppercase; color: #555;
    }
    .fetcher-status.idle  { color: #333; }
    .fetcher-status.running { color: #7ecb8f; }
    .fetcher-last {
      font-size: 0.68rem; color: #2e2e2e; margin-left: auto;
    }
    .fetcher-current {
      font-size: 0.72rem; color: #3a3a3a; font-style: italic;
      min-height: 1rem; letter-spacing: 0.02em;
    }
    .fetcher-current.confirm { color: #3a5a3a; }
    .fetcher-current.add     { color: #4a6a4a; }
    .fetcher-current.diff    { color: #6a4a2a; }
