﻿  .fv-docx-preview th,.fv-docx-preview td { border: 1px solid var(--border); padding: 6px 10px; }

  /* ── Admin Panel ── */
  .admin-overlay { position: fixed; inset: 0; z-index: 2000; background: rgba(0,0,0,0.55); display: none; align-items: center; justify-content: center; }
  .admin-overlay.visible { display: flex; }
  .admin-panel { background: var(--bg-card); border: 1px solid var(--border); border-radius: 12px; width: min(700px, 94vw); max-height: 82vh; display: flex; flex-direction: column; box-shadow: 0 12px 40px rgba(0,0,0,0.4); overflow: hidden; }
  .admin-panel-header { display: flex; align-items: center; justify-content: space-between; padding: 14px 20px; border-bottom: 1px solid var(--border); flex-shrink: 0; }
  .admin-panel-header h3 { margin: 0; font-size: 15px; font-weight: 600; }
  .admin-panel-header .close-btn { background: none; border: none; color: var(--text-muted); cursor: pointer; font-size: 18px; padding: 2px 6px; border-radius: 4px; }
  .admin-panel-header .close-btn:hover { background: var(--bg-hover); color: var(--text); }
  .admin-tabs { display: flex; border-bottom: 1px solid var(--border); padding: 0 16px; flex-shrink: 0; background: var(--bg-secondary, var(--bg-card)); }
  .admin-tab { padding: 10px 16px; font-size: 12px; font-weight: 500; color: var(--text-muted); background: none; border: none; border-bottom: 2px solid transparent; cursor: pointer; transition: color .15s, border-color .15s; margin-bottom: -1px; }
  .admin-tab:hover { color: var(--text); }
  .admin-tab.active { color: var(--accent); border-bottom-color: var(--accent); }
  .admin-pane { display: none; flex: 1; overflow-y: auto; padding: 16px 20px; flex-direction: column; gap: 10px; }
  .admin-pane.active { display: flex; }
  .admin-create-form { display: flex; gap: 8px; align-items: center; background: var(--bg-input); border: 1px solid var(--border); border-radius: 8px; padding: 10px 14px; flex-shrink: 0; flex-wrap: wrap; }
  .admin-create-form input { flex: 1; min-width: 140px; padding: 6px 10px; background: var(--bg-card); border: 1px solid var(--border); border-radius: 6px; color: var(--text); font-size: 12px; font-family: var(--font); outline: none; }
  .admin-create-form input:focus { border-color: var(--accent); }
  .admin-error { font-size: 12px; color: var(--error, #ef4444); min-height: 16px; margin-top: -4px; }
  .admin-user-table { width: 100%; border-collapse: collapse; font-size: 12px; }
  .admin-user-table th { text-align: left; padding: 8px 10px; font-size: 10px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.4px; color: var(--text-muted); border-bottom: 1px solid var(--border); white-space: nowrap; }
  .admin-user-table td { padding: 9px 10px; border-bottom: 1px solid var(--border); color: var(--text); vertical-align: middle; }
  .admin-user-table tr:last-child td { border-bottom: none; }
  .admin-user-table tr:hover td { background: var(--bg-hover); }
  .admin-badge { display: inline-block; font-size: 10px; font-weight: 600; padding: 1px 7px; border-radius: 8px; white-space: nowrap; margin-right: 3px; }
  .admin-badge.admin { background: #6366f120; color: #818cf8; border: 1px solid #6366f130; }
  .admin-badge.user { background: var(--bg-input); color: var(--text-muted); border: 1px solid var(--border); }
  .admin-badge.federated { background: #22c55e15; color: #4ade80; border: 1px solid #22c55e30; }
  .admin-badge.inactive { background: #ef444415; color: #f87171; border: 1px solid #ef444425; }
  .admin-actions { display: flex; gap: 5px; }
  .admin-btn { padding: 3px 10px; border-radius: 5px; font-size: 11px; cursor: pointer; transition: background 0.15s, opacity 0.15s; border: 1px solid var(--border); background: transparent; color: var(--text-muted); }
  .admin-btn:hover { background: var(--bg-hover); color: var(--text); }
  .admin-btn.promote { border-color: #6366f130; color: #818cf8; }
  .admin-btn.promote:hover { background: #6366f115; color: #818cf8; }
  .admin-btn.demote { border-color: #f59e0b30; color: #fbbf24; }
  .admin-btn.demote:hover { background: #f59e0b15; color: #fbbf24; }
  .admin-btn.del { border-color: #ef444430; color: #f87171; }
  .admin-btn.del:hover { background: #ef444415; color: #f87171; }
  .admin-loading { color: var(--text-muted); font-size: 12px; text-align: center; padding: 24px; }
  .admin-daemon-row { display: flex; align-items: center; gap: 10px; padding: 9px 12px; border: 1px solid var(--border); border-radius: 7px; background: var(--bg-input); font-size: 12px; }
  .admin-daemon-row .daemon-id { flex: 1; font-family: var(--mono); color: var(--text-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .admin-daemon-row .daemon-owner { font-size: 11px; color: var(--text); white-space: nowrap; }
  /* Provider admin */
  .admin-provider-card { padding: 12px 14px; border: 1px solid var(--border); border-radius: 8px; background: var(--bg-input); display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
  .admin-provider-card .prov-name { font-weight: 600; font-size: 13px; min-width: 90px; text-transform: capitalize; }
  .admin-provider-card .prov-meta { flex: 1; font-size: 11px; color: var(--text-muted); display: flex; gap: 12px; align-items: center; flex-wrap: wrap; }
  .admin-provider-card .prov-meta .dot { display: inline-block; width: 7px; height: 7px; border-radius: 50%; }
  .admin-provider-card .prov-meta .dot.on { background: #4ade80; }
  .admin-provider-card .prov-meta .dot.off { background: #f87171; }
  .admin-provider-form { display: flex; flex-direction: column; gap: 8px; padding: 14px; border: 1px solid var(--accent); border-radius: 8px; background: var(--bg-card); }
  .admin-provider-form .form-row { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
  .admin-provider-form .form-row label { font-size: 11px; font-weight: 600; min-width: 70px; color: var(--text-muted); }
  .admin-provider-form .form-row input { flex: 1; min-width: 180px; padding: 6px 10px; background: var(--bg-input); border: 1px solid var(--border); border-radius: 6px; color: var(--text); font-size: 12px; font-family: var(--font); outline: none; }
  .admin-provider-form .form-row input:focus { border-color: var(--accent); }
  .admin-provider-form .form-actions { display: flex; gap: 6px; justify-content: flex-end; margin-top: 4px; }
  /* Services admin tab */
  .svc-section { border: 1px solid var(--border); border-radius: 10px; overflow: hidden; }
  .svc-section-header { display: flex; align-items: center; gap: 10px; padding: 12px 16px; background: var(--bg-input); border-bottom: 1px solid var(--border); }
  .svc-section-header .svc-icon { font-size: 16px; line-height: 1; }
  .svc-section-header h4 { margin: 0; font-size: 13px; font-weight: 600; flex: 1; }
  .svc-section-header .svc-section-hint { font-size: 11px; color: var(--text-muted); }
  .svc-sub-title { font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.5px; color: var(--text-muted); padding: 10px 16px 5px; border-top: 1px solid var(--border); }
  .svc-sub-note { font-size: 11px; color: var(--text-muted); padding: 3px 16px 9px; font-style: italic; }
  .svc-row { display: flex; align-items: center; gap: 10px; padding: 8px 16px; border-top: 1px solid var(--border); flex-wrap: wrap; }
  .svc-row label { font-size: 12px; font-weight: 500; min-width: 130px; flex-shrink: 0; color: var(--text-muted); cursor: help; }
  .svc-row .svc-ctrl { flex: 1; display: flex; align-items: center; gap: 7px; flex-wrap: wrap; }
  .svc-row input[type=text], .svc-row input[type=password], .svc-row select { flex: 1; min-width: 180px; max-width: 300px; padding: 6px 10px; background: var(--bg-secondary); border: 1px solid var(--border); border-radius: 6px; color: var(--text); font-size: 12px; font-family: var(--font); outline: none; transition: border-color .15s; }
  .svc-row input:focus, .svc-row select:focus { border-color: var(--accent); }
  .svc-key-badge { font-size: 11px; white-space: nowrap; padding: 2px 8px; border-radius: 10px; }
  .svc-key-badge.set { color: #4ade80; background: #4ade8015; border: 1px solid #4ade8030; }
  .svc-key-badge.unset { color: #f87171; background: #ef444415; border: 1px solid #ef444430; }
  .svc-source { font-size: 10px; white-space: nowrap; padding: 2px 7px; border-radius: 8px; }
  .svc-source.src-db  { color: #4ade80; background: #4ade8010; border: 1px solid #4ade8025; }
  .svc-source.src-env { color: #fbbf24; background: #f59e0b10; border: 1px solid #f59e0b25; }
  .svc-source.src-default { color: var(--text-muted); }
  .svc-section-footer { font-size: 11px; color: var(--text-muted); padding: 8px 16px; border-top: 1px solid var(--border); background: var(--bg-input); font-style: italic; }
  /* Stores admin tab */
  .store-empty { color: var(--text-muted); font-size: 12px; text-align: center; padding: 32px 24px; border: 1px dashed var(--border); border-radius: 10px; }
  .store-add-form { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; background: var(--bg-input); border: 1px solid var(--border); border-radius: 8px; padding: 10px 14px; flex-shrink: 0; }
  .store-add-form input { flex: 1; min-width: 160px; padding: 6px 10px; background: var(--bg-card); border: 1px solid var(--border); border-radius: 6px; color: var(--text); font-size: 12px; outline: none; }
  .store-add-form input:focus { border-color: var(--accent); }
  .store-row { display: flex; align-items: center; gap: 10px; padding: 10px 14px; border: 1px solid var(--border); border-radius: 8px; background: var(--bg-input); flex-wrap: wrap; }
  .store-row .store-dot { width: 7px; height: 7px; border-radius: 50%; flex-shrink: 0; }
  .store-row .store-dot.on { background: #4ade80; }
  .store-row .store-dot.off { background: #f87171; }
  .store-row .store-name { font-size: 12px; font-weight: 600; min-width: 80px; }
  .store-row .store-url  { flex: 1; font-size: 11px; color: var(--text-muted); font-family: var(--mono); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .store-add-error { font-size: 12px; color: var(--error, #ef4444); min-height: 16px; }

  /* Debug Console (admin only) */
  .debug-console { position: fixed; bottom: 0; left: 0; right: 0; z-index: 9999; display: flex; flex-direction: column; height: 35vh; max-height: 45vh; background: #0d1117; border-top: 2px solid #f59e0b; font-family: var(--mono, 'Fira Code', 'Consolas', monospace); font-size: 11px; transition: transform .2s ease; }
  .debug-console.collapsed { transform: translateY(calc(100% - 28px)); }
  .debug-console-header { display: flex; align-items: center; gap: 8px; padding: 4px 12px; background: #161b22; border-bottom: 1px solid #30363d; cursor: pointer; flex-shrink: 0; user-select: none; }
  .debug-console-header .debug-title { font-size: 11px; font-weight: 700; color: #f59e0b; letter-spacing: 0.5px; flex-shrink: 0; }
  .debug-console-header .debug-badge { font-size: 9px; background: #f59e0b20; color: #f59e0b; padding: 1px 6px; border-radius: 8px; font-weight: 600; flex-shrink: 0; }
  .debug-tabs { display: flex; gap: 2px; margin-left: 8px; }
  .debug-tab { background: none; border: 1px solid #30363d; color: #8b949e; cursor: pointer; font-size: 10px; padding: 1px 8px; border-radius: 4px; font-family: inherit; }
  .debug-tab:hover { color: #f0f6fc; border-color: #8b949e; }
  .debug-tab.active { background: #f59e0b20; color: #f59e0b; border-color: #f59e0b60; }
  .debug-tab-select { display: none; background: #0d1117; color: #f0f6fc; border: 1px solid #30363d; border-radius: 4px; font-size: 11px; padding: 3px 6px; font-family: inherit; outline: none; max-width: 140px; }
  @media (max-width: 768px) {
    .debug-console-header { flex-wrap: wrap; gap: 6px; }
    .debug-tabs { display: none; }
    .debug-tab-select { display: inline-block; }
  }
  .debug-console-header .debug-actions { margin-left: auto; display: flex; gap: 6px; }
  .debug-console-header .debug-actions button { background: none; border: none; color: #8b949e; cursor: pointer; font-size: 11px; padding: 2px 5px; font-family: inherit; border-radius: 3px; }
  .debug-console-header .debug-actions button:hover { color: #f0f6fc; background: #21262d; }
  .debug-console-log { flex: 1; overflow-y: auto; padding: 6px 12px; color: #c9d1d9; line-height: 1.6; }
  .debug-console-log:empty::after { content: 'Waiting for events…'; color: #484f58; font-style: italic; }
  .debug-placeholder { color: #484f58; font-style: italic; padding: 10px 0; }
  .debug-json-viewer { white-space: pre-wrap; word-break: break-all; color: #c9d1d9; font-size: 11px; }
  .debug-json-key { color: #79c0ff; }
  .debug-json-str { color: #a5d6ff; }
  .debug-json-num { color: #f0883e; }
  .debug-json-bool { color: #ff7b72; }
  .debug-json-null { color: #8b949e; }
  .debug-entry { display: flex; gap: 8px; padding: 1px 0; border-bottom: 1px solid #21262d; }
  .debug-entry:last-child { border-bottom: none; }
  .debug-ts { color: #484f58; flex-shrink: 0; min-width: 80px; }
  .debug-ev { color: #58a6ff; font-weight: 600; flex-shrink: 0; min-width: 110px; }
  .debug-msg { color: #c9d1d9; word-break: break-word; flex: 1; }
  .debug-entry.error .debug-ev { color: #f85149; }
  .debug-entry.error .debug-msg { color: #f85149; }
  .debug-entry.done .debug-ev { color: #3fb950; }
  .debug-entry.warn .debug-ev { color: #d29922; }


/* ── Snapshots ── */
.snapshots-header { display: flex; align-items: center; justify-content: space-between; padding: 8px 12px 4px; font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.4px; color: var(--text-muted); border-top: 1px solid var(--border); margin-top: 8px; }
.snapshots-loading, .snapshots-empty, .snapshots-error { padding: 16px 12px; font-size: 12px; color: var(--text-muted); text-align: center; }
.snapshots-error { color: var(--error); }
.snapshot-item { display: flex; align-items: center; gap: 8px; padding: 7px 10px; border-radius: 6px; margin: 2px 6px; transition: background 0.1s; }
.snapshot-item:hover { background: var(--bg-hover); }
.snap-icon { font-size: 14px; flex-shrink: 0; }
.snap-info { flex: 1; min-width: 0; }
.snap-tool { display: block; font-size: 12px; font-weight: 500; color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.snap-meta { font-size: 10px; color: var(--text-muted); }
.snap-actions { display: flex; gap: 4px; flex-shrink: 0; }
.snap-btn { padding: 3px 8px; font-size: 10px; font-weight: 500; border-radius: 4px; cursor: pointer; border: 1px solid var(--border); background: var(--bg-input); color: var(--text-muted); transition: all 0.12s; }
.snap-btn:hover { color: var(--text); border-color: var(--accent); }
.snap-restore-btn:hover { background: color-mix(in srgb, var(--warning) 15%, var(--bg-card)); border-color: var(--warning); color: var(--warning); }
.snap-record-label { font-size: 10px; color: var(--text-muted); padding: 3px 6px; }
.snap-mismatch-label { font-size: 10px; color: var(--text-muted); padding: 3px 6px; cursor: default; }
.snap-reverted-label { font-size: 10px; color: var(--success, #3fb950); padding: 3px 6px; }
.snap-failed-label { font-size: 10px; color: var(--error, #f85149); padding: 3px 6px; font-weight: 500; }
.snap-reverted-badge { font-size: 10px; color: var(--success, #3fb950); margin-left: 6px; }
.snapshot-item.snap-foreign { opacity: 0.55; }
/* Turn grouping */
.snap-turn-group { margin: 4px 0; }
.snap-turn-header { display: flex; align-items: center; gap: 6px; padding: 6px 12px; font-size: 11px; color: var(--text-muted); cursor: pointer; user-select: none; border-radius: 4px; }
.snap-turn-header:hover { background: var(--bg-hover); }
.snap-turn-arrow { font-size: 10px; transition: transform 0.15s; }
.snap-turn-group.collapsed .snap-turn-arrow { transform: rotate(-90deg); }
.snap-turn-group.collapsed .snap-turn-body { display: none; }
.snap-restore-turn-btn { display: block; margin: 4px 10px 8px; width: calc(100% - 20px); padding: 5px 10px; font-size: 11px; font-weight: 500; border-radius: 4px; cursor: pointer; border: 1px solid var(--border); background: var(--bg-input); color: var(--text-muted); transition: all 0.12s; }
.snap-restore-turn-btn:hover:not(:disabled) { color: var(--warning); border-color: var(--warning); background: color-mix(in srgb, var(--warning) 10%, var(--bg-card)); }
.snap-restore-turn-btn:disabled { opacity: 0.4; cursor: default; }
/* Recovery banner */
.snap-recovery-banner { display: flex; align-items: center; gap: 8px; padding: 8px 12px; margin: 4px 6px; border-radius: 6px; font-size: 11px; background: color-mix(in srgb, var(--warning) 12%, var(--bg-card)); border: 1px solid var(--warning); color: var(--text); }
.snap-recovery-banner.snap-recovery-error { border-color: var(--error, #f85149); background: color-mix(in srgb, var(--error, #f85149) 12%, var(--bg-card)); }
.fv-diff-header { color: var(--text-muted); }
.fv-diff-hunk { color: var(--accent); }

/* ── Context & Costs graph tab ── */
.debug-costs-pane { display: flex; flex-direction: column; gap: 0; overflow-y: auto; padding: 8px 12px !important; }
.costs-header { display: flex; gap: 16px; align-items: center; flex-wrap: wrap; padding-bottom: 6px; border-bottom: 1px solid #21262d; margin-bottom: 4px; flex-shrink: 0; }
.costs-stat { font-size: 11px; color: #8b949e; }
.costs-stat:first-child { color: #f59e0b; font-weight: 600; }
.costs-chart { display: block; width: 100%; flex-shrink: 0; border-radius: 4px; }
.costs-legend { display: flex; gap: 16px; padding: 4px 0 6px; font-size: 10px; color: #8b949e; flex-shrink: 0; }
.costs-legend-item { display: flex; align-items: center; gap: 5px; cursor: default; }
.costs-legend-dot { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; }
.costs-breakdown-title { font-size: 10px; text-transform: uppercase; letter-spacing: 0.5px; color: #484f58; font-weight: 600; padding: 6px 0 4px; flex-shrink: 0; }
.costs-breakdown-table { width: 100%; border-collapse: collapse; font-size: 11px; flex-shrink: 0; }
.costs-breakdown-table th { text-align: right; color: #484f58; font-weight: 600; font-size: 10px; padding: 2px 8px 4px; border-bottom: 1px solid #21262d; }
.costs-breakdown-table th:first-child { text-align: left; }
.costs-breakdown-table td { text-align: right; padding: 3px 8px; border-bottom: 1px solid #1a1f27; color: #c9d1d9; }
.costs-td-label { text-align: left !important; color: #79c0ff; font-weight: 600; }
.costs-td-sub { color: #484f58; font-size: 9px; }
.costs-td-money { color: #8b949e; font-family: var(--mono); }
.costs-td-total { color: #f59e0b !important; font-weight: 600; }
.costs-tr-sum td { border-top: 1px solid #30363d; border-bottom: none !important; color: #f0f6fc; font-weight: 600; }
.costs-tr-sum .costs-td-money { color: #f59e0b !important; }
.costs-turns-breakdown { flex-shrink: 0; }

/* ── Triggers admin tab ── */
.triggers-admin-wrap { display: flex; flex-direction: column; gap: 14px; }
.trig-section { border: 1px solid var(--border); border-radius: 10px; overflow: hidden; }
.trig-section-header { display: flex; align-items: center; gap: 10px; padding: 11px 16px; background: var(--bg-input); border-bottom: 1px solid var(--border); }
.trig-section-header .trig-icon { font-size: 15px; line-height: 1; }
.trig-section-header h4 { margin: 0; font-size: 13px; font-weight: 600; flex: 1; }
.trig-section-header .trig-hint { font-size: 11px; color: var(--text-muted); }
.trig-badge { display: inline-block; font-size: 10px; font-weight: 700; padding: 0 6px; border-radius: 8px; background: var(--bg-card); border: 1px solid var(--border); color: var(--text-muted); margin-left: 5px; vertical-align: middle; }
.trig-table-wrap { overflow-x: auto; }
.trig-table { width: 100%; border-collapse: collapse; font-size: 11px; }
.trig-table th { text-align: left; padding: 7px 10px; font-size: 10px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.4px; color: var(--text-muted); border-bottom: 1px solid var(--border); white-space: nowrap; }
.trig-table td { padding: 8px 10px; border-bottom: 1px solid var(--border); color: var(--text); vertical-align: middle; }
.trig-table tr:last-child td { border-bottom: none; }
.trig-table tr:hover td { background: var(--bg-hover); }
.trig-owner { max-width: 140px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--text-muted) !important; font-size: 11px; }
.trig-mono { font-family: var(--mono, monospace); font-size: 11px; white-space: nowrap; }
.trig-prompt { max-width: 200px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--text-muted) !important; }
.trig-name { font-weight: 500; }
.trig-stat { text-align: right; white-space: nowrap; color: var(--text-muted) !important; }
.trig-date { white-space: nowrap; font-size: 10px; color: var(--text-muted) !important; }
.trig-url { font-family: var(--mono, monospace); font-size: 10px; color: var(--accent); }
.trig-copy-btn { background: none; border: none; color: var(--text-muted); cursor: pointer; padding: 1px 3px; border-radius: 3px; font-size: 12px; vertical-align: middle; }
.trig-copy-btn:hover { color: var(--text); background: var(--bg-hover); }
.trig-sig-badge { font-size: 10px; color: #4ade80; margin-left: 4px; }
.trig-llm-badge { font-size: 10px; font-family: var(--mono, monospace); background: rgba(99,102,241,0.15); color: #818cf8; border: 1px solid rgba(99,102,241,0.3); border-radius: 4px; padding: 1px 5px; }
.trig-status-on  { display: inline-block; padding: 2px 7px; border-radius: 8px; font-size: 10px; font-weight: 600; background: #22c55e20; color: #4ade80; border: 1px solid #22c55e30; }
.trig-status-off { display: inline-block; padding: 2px 7px; border-radius: 8px; font-size: 10px; font-weight: 600; background: #ef444415; color: #f87171; border: 1px solid #ef444425; }

/* ── User Triggers Panel ── */
.triggers-overlay { position: fixed; inset: 0; z-index: 2000; background: rgba(0,0,0,0.55); display: none; align-items: center; justify-content: center; }
.triggers-overlay.visible { display: flex; }
.triggers-panel { background: var(--bg-card); border: 1px solid var(--border); border-radius: 12px; width: min(680px, 94vw); max-height: 86vh; display: flex; flex-direction: column; box-shadow: 0 12px 40px rgba(0,0,0,0.4); overflow: hidden; }
.triggers-panel-header { display: flex; align-items: center; justify-content: space-between; padding: 14px 20px; border-bottom: 1px solid var(--border); flex-shrink: 0; }
.triggers-panel-header h3 { margin: 0; font-size: 15px; font-weight: 600; }
.triggers-panel-header .close-btn { background: none; border: none; color: var(--text-muted); cursor: pointer; font-size: 18px; padding: 2px 6px; border-radius: 4px; }
.triggers-panel-header .close-btn:hover { background: var(--bg-hover); color: var(--text); }
.triggers-tabs { display: flex; border-bottom: 1px solid var(--border); padding: 0 16px; flex-shrink: 0; background: var(--bg-secondary, var(--bg-card)); }
.triggers-tab { padding: 10px 18px; font-size: 13px; font-weight: 500; color: var(--text-muted); background: none; border: none; border-bottom: 2px solid transparent; cursor: pointer; transition: color .15s, border-color .15s; margin-bottom: -1px; }
.triggers-tab:hover { color: var(--text); }
.triggers-tab.active { color: var(--accent); border-bottom-color: var(--accent); }
.triggers-pane { display: none; flex: 1; overflow-y: auto; padding: 16px 20px; flex-direction: column; gap: 12px; }
.triggers-pane.active { display: flex; }
/* Create form */
.trig-create-form { border: 1px solid var(--border); border-radius: 10px; padding: 14px 16px; background: var(--bg-input); display: flex; flex-direction: column; gap: 10px; flex-shrink: 0; }
.trig-create-title { font-size: 12px; font-weight: 600; color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.4px; }
.trig-form-row { display: flex; gap: 8px; align-items: flex-start; }
.trig-form-row label { font-size: 11px; font-weight: 600; min-width: 110px; padding-top: 7px; color: var(--text-muted); flex-shrink: 0; }
.trig-form-row.trig-form-row-full { flex-direction: column; gap: 4px; }
.trig-form-row.trig-form-row-full label { padding-top: 0; }
.trig-form-hint { font-weight: 400; font-size: 10px; color: var(--text-muted); }
.trig-form-hint code { font-family: var(--mono, monospace); background: var(--bg-card); padding: 0 3px; border-radius: 3px; }
.trig-create-form input[type="text"],
.trig-create-form input[type="password"],
.trig-create-form select,
.trig-create-form textarea { flex: 1; padding: 6px 10px; background: var(--bg-card); border: 1px solid var(--border); border-radius: 6px; color: var(--text); font-size: 12px; font-family: var(--font); outline: none; resize: vertical; }
.trig-form-row-full .trig-create-form textarea,
.trig-form-row-full textarea { width: 100%; box-sizing: border-box; }
.trig-create-form input:focus,
.trig-create-form select:focus,
.trig-create-form textarea:focus { border-color: var(--accent); }
.trig-form-error { font-size: 12px; color: var(--error, #ef4444); min-height: 14px; }
.trig-form-actions { display: flex; justify-content: flex-end; }
/* Trigger rows (existing triggers list) */
.trig-row { border: 1px solid var(--border); border-radius: 8px; padding: 10px 14px; background: var(--bg-input); display: flex; flex-direction: column; gap: 5px; }
.trig-row-main { display: flex; align-items: center; justify-content: space-between; gap: 8px; flex-wrap: wrap; }
.trig-row-left { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; font-size: 12px; }
.trig-row-schedule { font-family: var(--mono, monospace); font-size: 11px; color: var(--accent); font-weight: 600; }
.trig-row-name { font-size: 13px; }
.trig-row-fires { font-size: 11px; color: var(--text-muted); }
.trig-row-date { font-size: 11px; color: var(--text-muted); }
.trig-row-prompt { font-size: 11px; color: var(--text-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.trig-row-url { display: flex; align-items: center; gap: 8px; font-size: 11px; }
.trig-row-url code { font-family: var(--mono, monospace); color: var(--accent); font-size: 11px; }
.trig-copy-btn { background: none; border: 1px solid var(--border); color: var(--text-muted); cursor: pointer; padding: 2px 7px; border-radius: 4px; font-size: 11px; white-space: nowrap; }
.trig-copy-btn:hover { color: var(--text); background: var(--bg-hover); }
.trig-empty { color: var(--text-muted); font-size: 12px; text-align: center; padding: 20px; }

/* ── Cron schedule designer ────────────────────────────────────────────── */
.cron-designer { display: flex; flex-direction: column; gap: 8px; }
.cron-designer-row { display: flex; align-items: center; gap: 8px; }
/* Highlighted / editable controls inside the designer */
.cron-preset,
.cron-select {
  background: #2d3245;
  border: 1px solid var(--accent);
  border-radius: 6px;
  color: var(--text);
  padding: 5px 8px;
  font-size: 12px;
  font-family: inherit;
  outline: none;
  cursor: pointer;
  box-shadow: 0 0 0 2px rgba(99,102,241,0.12);
}
.cron-preset:focus, .cron-select:focus { border-color: var(--accent-hover); box-shadow: 0 0 0 3px rgba(99,102,241,0.22); }
.cron-sub { display: flex; flex-direction: column; gap: 4px; background: transparent; }
.cron-sub-row { display: flex; align-items: center; gap: 6px; font-size: 12px; color: var(--text-muted); flex-wrap: wrap; }
.cron-num {
  background: #2d3245;
  border: 1px solid var(--accent);
  border-radius: 5px;
  color: var(--text);
  padding: 3px 6px;
  font-size: 12px;
  font-family: inherit;
  outline: none;
  width: 65px;
  text-align: center;
  box-shadow: 0 0 0 2px rgba(99,102,241,0.12);
}
.cron-num:focus { border-color: var(--accent-hover); box-shadow: 0 0 0 3px rgba(99,102,241,0.22); }
.cron-time {
  border: 1px solid var(--accent);
  border-radius: 5px;
  color: var(--text);
  padding: 3px 6px;
  font-size: 12px;
  font-family: inherit;
  outline: none;
  box-shadow: 0 0 0 2px rgba(99,102,241,0.12);
}
.cron-time:focus { border-color: var(--accent-hover); box-shadow: 0 0 0 3px rgba(99,102,241,0.22); }
.cron-time::-webkit-calendar-picker-indicator { filter: invert(0.7) sepia(1) saturate(3) hue-rotate(200deg); cursor: pointer; opacity: 0.8; }
/* Raw expression input (custom mode only) */
.cron-raw-input { background: #2d3245; border: 1px solid var(--accent); border-radius: 6px; color: var(--text); padding: 6px 10px; font-size: 13px; font-family: 'Fira Mono', 'Consolas', monospace; outline: none; width: 100%; box-sizing: border-box; letter-spacing: 0.05em; box-shadow: 0 0 0 2px rgba(99,102,241,0.12); }
.cron-raw-input:focus { border-color: var(--accent-hover); box-shadow: 0 0 0 3px rgba(99,102,241,0.22); }
/* Expression badge row */
.cron-expr-row { display: flex; align-items: center; gap: 8px; }
.cron-expr-label { font-size: 10px; color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.5px; flex-shrink: 0; }
.cron-expr-code { background: rgba(99,102,241,0.1); border: 1px solid rgba(99,102,241,0.25); border-radius: 5px; color: #a5b4fc; font-family: 'Fira Mono', 'Consolas', monospace; font-size: 13px; padding: 3px 10px; letter-spacing: 0.08em; user-select: all; }
/* Human-readable description — crontab.guru style */
.cron-desc { font-size: 12px; color: #8b9fc7; font-style: italic; min-height: 16px; }
/* Heartbeat fire inline flash */
.hb-fire-flash { font-size: 11px; color: #4ade80; background: rgba(34,197,94,0.08); border: 1px solid rgba(34,197,94,0.25); border-radius: 5px; padding: 4px 10px; margin-top: 4px; animation: fadeOut 3s forwards; }
@keyframes fadeOut { 0%,70%{opacity:1} 100%{opacity:0} }
/* Prompt row grows to fill available space, full width */
.trig-form-row-grow { flex: 1; }
.trig-form-row-grow textarea { flex: 1; min-height: 120px; resize: vertical; width: 100%; box-sizing: border-box; }



/* ── Webhook Edit / Simulate modals ── */
.wh-modal-overlay { position: fixed; inset: 0; z-index: 2400; background: rgba(0,0,0,0.55); display: flex; align-items: center; justify-content: center; }
.wh-modal { background: var(--bg-card, var(--bg-secondary, #1e1e2e)); border: 1px solid var(--border); border-radius: 12px; width: 520px; max-width: 95vw; max-height: 90vh; display: flex; flex-direction: column; box-shadow: 0 8px 40px rgba(0,0,0,0.45); }
.wh-modal-wide { width: 680px; }
.wh-modal-header { display: flex; align-items: center; justify-content: space-between; padding: 14px 18px 12px; border-bottom: 1px solid var(--border); flex-shrink: 0; }
.wh-modal-title { font-size: 14px; font-weight: 600; color: var(--text); }
.wh-modal-close { background: none; border: none; cursor: pointer; color: var(--text-muted); font-size: 16px; padding: 2px 6px; border-radius: 4px; line-height: 1; }
.wh-modal-close:hover { color: var(--text); background: var(--bg-hover); }
.wh-modal-body { padding: 16px 18px; overflow-y: auto; flex: 1; display: flex; flex-direction: column; gap: 12px; }
/* Override trig-form-row inside modal to be full-width vertical */
.wh-modal-body .trig-form-row { display: flex; flex-direction: column; gap: 5px; }
.wh-modal-body .trig-form-row label { font-size: 11px; font-weight: 600; color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.4px; }
.wh-modal-body .trig-form-row input[type=text],
.wh-modal-body .trig-form-row input[type=password],
.wh-modal-body .trig-form-row select,
.wh-modal-body .trig-form-row textarea { width: 100%; box-sizing: border-box; background: var(--bg-input, var(--bg)); border: 1px solid var(--border); border-radius: 6px; color: var(--text); padding: 7px 10px; font-size: 13px; font-family: inherit; outline: none; resize: vertical; }
.wh-modal-body .trig-form-row input:focus,
.wh-modal-body .trig-form-row select:focus,
.wh-modal-body .trig-form-row textarea:focus { border-color: var(--accent); }
.wh-modal-body .trig-form-row label:has(input[type=checkbox]) { display: flex; align-items: center; gap: 7px; text-transform: none; font-size: 13px; font-weight: 400; color: var(--text); cursor: pointer; }
.wh-modal-footer { display: flex; align-items: center; justify-content: flex-end; gap: 8px; padding: 12px 18px; border-top: 1px solid var(--border); flex-shrink: 0; }
/* Simulate designer */
.wh-sim-no-vars { font-size: 12px; color: var(--text-muted); padding: 6px 0; }
.wh-sim-vars-hint { font-size: 11px; color: var(--text-muted); margin-bottom: 4px; }
.wh-sim-var-row { display: flex; align-items: center; gap: 10px; padding: 3px 0; }
.wh-sim-var-label { font-size: 11px; flex: 0 0 200px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.wh-sim-var-input { flex: 1; background: var(--bg-input); border: 1px solid var(--border); border-radius: 5px; color: var(--text); padding: 4px 8px; font-size: 12px; outline: none; }
.wh-sim-var-input:focus { border-color: var(--accent); }
.wh-sim-preview-wrap { margin-top: 8px; }
.wh-sim-preview-label { font-size: 11px; color: var(--text-muted); margin-bottom: 4px; text-transform: uppercase; letter-spacing: 0.4px; }
.wh-sim-preview { background: var(--bg-input); border: 1px solid var(--border); border-radius: 6px; padding: 10px 12px; font-size: 12px; white-space: pre-wrap; word-break: break-word; color: var(--text); max-height: 140px; overflow-y: auto; margin: 0; }
.wh-sim-result { background: rgba(34,197,94,0.07); border: 1px solid rgba(34,197,94,0.25); border-radius: 8px; padding: 12px 14px; display: flex; flex-direction: column; gap: 8px; }
.wh-sim-result-ok { font-size: 13px; color: #4ade80; font-weight: 600; }
.wh-sim-result-label { font-size: 11px; color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.4px; }
.wh-sim-rendered { background: var(--bg-input); border: 1px solid var(--border); border-radius: 6px; padding: 8px 10px; font-size: 12px; white-space: pre-wrap; word-break: break-word; color: var(--text); max-height: 120px; overflow-y: auto; margin: 0; }
/* Code examples block */
.wh-sim-code-section { display: flex; flex-direction: column; gap: 6px; }
.wh-sim-code-header { display: flex; align-items: center; gap: 8px; }
.wh-sim-code-header .wh-sim-preview-label { flex: 1; }
.wh-sim-code-tabs { display: flex; gap: 2px; }
.wh-sim-code-tab { background: var(--bg-input); border: 1px solid var(--border); border-radius: 5px; color: var(--text-muted); font-size: 11px; font-weight: 600; padding: 2px 10px; cursor: pointer; transition: background 0.1s, color 0.1s; font-family: inherit; }
.wh-sim-code-tab:hover { color: var(--text); background: var(--bg-hover); }
.wh-sim-code-tab.active { background: var(--accent); color: var(--bg); border-color: var(--accent); }
.wh-sim-code { background: var(--bg-input); border: 1px solid var(--border); border-radius: 6px; padding: 10px 12px; font-size: 11.5px; font-family: var(--mono, 'Consolas', monospace); white-space: pre; overflow-x: auto; color: var(--text); max-height: 200px; overflow-y: auto; margin: 0; }

/* ── Webhook Executions panel ──────────────────────────────────────────── */
.wh-exec-panel { margin-top: 6px; border-top: 1px solid var(--border); padding-top: 8px; }
.wh-exec-loading { font-size: 11px; color: var(--text-muted); padding: 4px 0; }
.wh-exec-empty { font-size: 12px; color: var(--text-muted); padding: 4px 0; font-style: italic; }
.wh-exec-error { font-size: 12px; color: #f87171; padding: 4px 0; }
.wh-exec-list { display: flex; flex-direction: column; gap: 6px; }
.wh-exec-row { background: var(--bg-secondary, var(--bg-input)); border: 1px solid var(--border); border-radius: 6px; padding: 8px 10px; display: flex; flex-direction: column; gap: 4px; }
.wh-exec-meta { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; font-size: 11px; }
.wh-exec-status-done { color: #4ade80; font-weight: 600; }
.wh-exec-status-active { color: var(--accent); font-weight: 600; }
.wh-exec-ts { color: var(--text-muted); }
.wh-exec-dur { color: var(--text-muted); font-family: var(--mono, monospace); }
.wh-exec-tools { color: var(--text-muted); }
.wh-exec-sim-badge { background: rgba(168,85,247,0.15); color: #a855f7; border: 1px solid rgba(168,85,247,0.35); border-radius: 4px; padding: 1px 5px; font-size: 10px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.4px; }
.wh-exec-preview { font-size: 11px; color: var(--text-muted); background: var(--bg-input); border: 1px solid var(--border); border-radius: 4px; padding: 5px 8px; white-space: pre-wrap; word-break: break-word; max-height: 60px; overflow: hidden; }
.wh-exec-open-btn { font-size: 11px; padding: 2px 8px; }
.admin-btn.active { background: var(--accent); color: var(--bg); border-color: var(--accent); }
