/* ── HISTORY: history tab + AI agent panel ── */

.history-toolbar{
  display:flex;align-items:center;gap:10px;
  margin-bottom:16px;flex-wrap:wrap;
}
.history-filter-select{
  background:var(--surface2);border:1px solid var(--border);
  border-radius:10px;color:var(--text);font-family:inherit;font-size:12px;
  padding:6px 10px;cursor:pointer;
  transition:border-color 0.15s;
}
.history-filter-select:hover,.history-filter-select:focus{border-color:var(--accent);outline:none}
.history-search-input{
  background:var(--surface2);border:1px solid var(--border);
  border-radius:10px;color:var(--text);font-family:inherit;font-size:12px;
  padding:6px 10px;width:180px;
  transition:border-color 0.15s;
}
.history-search-input:focus{outline:none;border-color:var(--accent)}
.history-search-input::placeholder{color:var(--text3)}
.hist-count{font-size:11px;color:var(--text3);margin-left:4px}
.history-table{width:100%;border-collapse:collapse}
.history-table th{
  padding:9px 12px;border-bottom:2px solid var(--border);
  font-size:10px;font-weight:600;text-transform:uppercase;
  letter-spacing:0.06em;color:var(--text3);white-space:nowrap;
  background:var(--surface);text-align:left;
}
.hist-row td{
  padding:9px 12px;border-bottom:1px solid var(--border);
  font-size:12px;color:var(--text2);vertical-align:middle;
}
.hist-row:last-child td{border-bottom:none}
.hist-row:hover td{background:var(--surface2)}
.hist-ts{color:var(--text3);font-family:'DM Mono',monospace;font-size:11px;white-space:nowrap}
.hist-entity{color:var(--text);font-weight:500}
.hist-val{color:var(--text2)}
.hist-val-empty{color:var(--text3);opacity:0.5}
.hist-detail{color:var(--text3);font-size:11px}
.hist-user{color:var(--text2);font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:inline-block;max-width:110px}
.hist-etype{
  display:inline-block;padding:2px 7px;border-radius:6px;
  font-size:10px;font-weight:500;letter-spacing:0.02em;
  background:var(--surface3);color:var(--text3);white-space:nowrap;
}
/* ── type pills ── */
.hist-pill{
  display:inline-block;padding:3px 9px;border-radius:10px;
  font-size:10px;font-weight:600;white-space:nowrap;letter-spacing:0.02em;
}
.hist-pill-green  {background:var(--green-bg);  color:var(--green)}
.hist-pill-red    {background:var(--red-bg);    color:var(--red)}
.hist-pill-blue   {background:var(--blue-bg);   color:var(--blue)}
.hist-pill-purple {background:var(--purple-bg); color:var(--purple)}
.hist-pill-amber  {background:var(--amber-bg);  color:var(--amber)}
.hist-pill-accent {background:var(--accent-bg); color:var(--accent2)}
.hist-pill-orange {background:var(--orange-bg); color:var(--orange)}
.hist-pill-muted  {background:var(--surface3);  color:var(--text3)}
/* ── empty state ── */
.history-empty{
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  padding:80px 20px;gap:12px;
}
.history-empty .empty-icon{font-size:48px;opacity:0.25}
.history-empty .empty-title{font-family:'Bricolage Grotesque',sans-serif;font-size:18px;font-weight:600;color:var(--text2)}
.history-empty .empty-sub{font-size:13px;color:var(--text3);text-align:center;max-width:340px;line-height:1.6}

/* ── OPTIMISER LOGS — budget/target change indicators ── */
.optlog-up    { color: var(--green) }
.optlog-down  { color: var(--red) }
.optlog-flat  { color: var(--text2) }
.optlog-delta { font-size: 10px; opacity: 0.7 }
.optlog-target-label { font-size: 10px; font-weight: 600; color: var(--text3); margin-right: 2px }

/* ── OPTIMISER LOGS — grouped run cards ── */
.optlog-group{
  border:1px solid var(--border);border-radius:var(--radius);
  margin-bottom:8px;overflow:hidden;
  box-shadow:var(--shadow);
  transition:border-color 0.15s,box-shadow 0.15s;
}
.optlog-group:hover{border-color:var(--border2);box-shadow:var(--shadow-lg)}
.optlog-group-expanded{border-color:var(--accent-border)}

.optlog-group-header{
  display:flex;align-items:center;gap:10px;
  padding:10px 14px;cursor:pointer;
  background:var(--surface);
  transition:background-color 0.1s;
  user-select:none;
}
.optlog-group-header:hover{background:var(--surface2)}
.optlog-group-expanded .optlog-group-header{
  background:var(--surface2);
  border-bottom:1px solid var(--border);
}

.optlog-chevron{
  flex-shrink:0;width:16px;height:16px;
  display:flex;align-items:center;justify-content:center;
  color:var(--text3);transition:color 0.15s, transform 0.22s ease;
}
.optlog-group-expanded .optlog-chevron{transform:rotate(90deg)}
.optlog-group-header:hover .optlog-chevron{color:var(--text)}

.optlog-header-ts{
  font-family:'DM Mono',monospace;font-size:11px;
  color:var(--text3);white-space:nowrap;min-width:100px;
}
.optlog-header-port{
  font-weight:500;color:var(--text);font-size:12px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  max-width:200px;
}
.optlog-header-count{
  font-size:11px;color:var(--text3);white-space:nowrap;
}
.optlog-header-budget{
  font-size:12px;white-space:nowrap;margin-left:auto;
}

/* Pacing badge on group header */
.optlog-pace{
  display:inline-block;padding:2px 8px;border-radius:10px;
  font-size:10px;font-weight:600;white-space:nowrap;
  letter-spacing:0.02em;flex-shrink:0;
}
.optlog-pace-on             {background:color-mix(in srgb,var(--green) 15%,transparent);color:var(--green)}
.optlog-pace-slightly-ahead {background:color-mix(in srgb,var(--amber) 15%,transparent);color:var(--amber)}
.optlog-pace-ahead          {background:color-mix(in srgb,var(--red) 15%,transparent);  color:var(--red)}
.optlog-pace-slightly-behind{background:color-mix(in srgb,var(--amber) 15%,transparent);color:var(--amber)}
.optlog-pace-behind         {background:color-mix(in srgb,var(--red) 15%,transparent);  color:var(--red)}

/* Expanded body — spring-animated like portfolio cards */
.optlog-group-body{
  overflow:hidden;height:0;
  background:var(--surface);
}

/* Campaign detail table — direct child of body, naturally full-width */
.optlog-cam-table{
  width:100%;border-collapse:collapse;
  table-layout:fixed;
}
.optlog-cam-table th{
  padding:6px 10px;font-size:10px;font-weight:600;
  text-transform:uppercase;letter-spacing:0.06em;
  color:var(--text3);text-align:left;white-space:nowrap;
  border-bottom:1px solid var(--border);
}
/* Inset content from card edge */
.optlog-cam-table th:first-child,.optlog-cam-table td:first-child{padding-left:14px}
.optlog-cam-table th:last-child,.optlog-cam-table td:last-child{padding-right:14px}
/* Fixed column proportions */
.optlog-cam-table th:nth-child(1),
.optlog-cam-table td:nth-child(1){width:28%}    /* Campaign */
.optlog-cam-table th:nth-child(2),
.optlog-cam-table td:nth-child(2){width:10%}    /* Type */
.optlog-cam-table th:nth-child(3),
.optlog-cam-table td:nth-child(3){width:26%}    /* Budget */
.optlog-cam-table th:nth-child(4),
.optlog-cam-table td:nth-child(4){width:16%}    /* Target */
.optlog-cam-table th:nth-child(5),
.optlog-cam-table td:nth-child(5){width:20%}    /* Reason */
.optlog-cam-row td{
  padding:7px 10px;font-size:12px;color:var(--text2);
  border-bottom:1px solid color-mix(in srgb, var(--border) 50%, transparent);
  vertical-align:middle;
}
.optlog-cam-row:last-child td{border-bottom:none}
.optlog-cam-row:hover td{background:var(--surface2)}
.optlog-cam-name{font-weight:500;color:var(--text);max-width:240px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.optlog-cam-type{color:var(--text3);font-size:11px;white-space:nowrap}

/* Reason tags */
.optlog-cam-tags{display:flex;gap:4px;flex-wrap:wrap}
.optlog-tag{
  display:inline-block;padding:2px 7px;border-radius:8px;
  font-size:9.5px;font-weight:600;white-space:nowrap;
  letter-spacing:0.02em;cursor:default;
  position:relative;
}
.optlog-tag[data-tip]:not([data-tip=""]):hover::after{
  content:attr(data-tip);
  position:absolute;top:calc(100% + 6px);right:0;
  background:var(--surface);color:var(--text);border:1px solid var(--border);
  padding:6px 10px;border-radius:8px;font-size:11px;font-weight:400;
  white-space:normal;width:max-content;max-width:260px;line-height:1.4;
  z-index:100;pointer-events:none;
  box-shadow:0 4px 16px rgba(0,0,0,0.12);
}
.optlog-tag[data-tip]:not([data-tip=""]):hover::before{
  content:'';position:absolute;top:calc(100% + 2px);right:8px;
  border:4px solid transparent;border-bottom-color:var(--border);z-index:100;
}
/* Allow tooltips to escape the group boundary when expanded */
.optlog-group-expanded{overflow:visible}
.optlog-group-expanded .optlog-group-body{overflow:visible}
/* Primary drivers — increase */
.optlog-tag-growth_tilt       {background:var(--green-bg);  color:var(--green)}
.optlog-tag-budget_headroom   {background:var(--green-bg);  color:var(--green)}
.optlog-tag-high_efficiency   {background:var(--green-bg);  color:var(--green)}
.optlog-tag-momentum          {background:var(--green-bg);  color:var(--green)}
/* Primary drivers — decrease */
.optlog-tag-diminishing_returns{background:var(--red-bg);   color:var(--red)}
.optlog-tag-low_efficiency    {background:var(--red-bg);    color:var(--red)}
.optlog-tag-saturated         {background:var(--red-bg);    color:var(--red)}
.optlog-tag-declining         {background:var(--red-bg);    color:var(--red)}
/* Primary drivers — neutral */
.optlog-tag-rebalance         {background:var(--surface3);  color:var(--text2)}
.optlog-tag-steady            {background:var(--surface3);  color:var(--text3)}
.optlog-tag-learning          {background:var(--blue-bg);   color:var(--blue)}
.optlog-tag-post_learning     {background:var(--surface3);  color:var(--text3)}
/* Modifiers — constraints */
.optlog-tag-spend_ceiling     {background:var(--amber-bg);  color:var(--amber)}
.optlog-tag-step_limited      {background:var(--amber-bg);  color:var(--amber)}
.optlog-tag-cumulative_throttle{background:var(--amber-bg); color:var(--amber)}
.optlog-tag-cumulative_throttled{background:var(--amber-bg); color:var(--amber)}
.optlog-tag-budget_target_mismatch{background:var(--amber-bg); color:var(--amber)}
.optlog-tag-budget_floor_applied{background:var(--amber-bg); color:var(--amber)}
.optlog-tag-anomaly_10x_increase{background:var(--red-bg);  color:var(--red)}
.optlog-tag-ghost_budget      {background:var(--amber-bg);  color:var(--amber)}
.optlog-tag-pmax_spend_ceiling {background:var(--amber-bg);  color:var(--amber)}
.optlog-tag-learning_phase     {background:var(--blue-bg);   color:var(--blue)}
.optlog-tag-context_bypass     {background:var(--green-bg);  color:var(--green)}
.optlog-tag-asc_dwell_lock     {background:var(--amber-bg);  color:var(--amber)}
.optlog-tag-creative_quality_dampened{background:var(--amber-bg); color:var(--amber)}
.optlog-tag-creative_quality   {background:var(--amber-bg);  color:var(--amber)}
.optlog-tag-audience_saturated {background:var(--red-bg);    color:var(--red)}
.optlog-tag-audience_saturation{background:var(--red-bg);    color:var(--red)}
.optlog-tag-velocity_limited   {background:var(--amber-bg);  color:var(--amber)}
.optlog-tag-learning_limited   {background:var(--amber-bg);  color:var(--amber)}
.optlog-tag-asc_learning_phase {background:var(--blue-bg);   color:var(--blue)}
.optlog-tag-synthetic_is       {background:var(--surface3);  color:var(--text3)}
.optlog-tag-unexplained_large_delta{background:var(--red-bg); color:var(--red)}
/* Modifiers — context */
.optlog-tag-rank_pressure     {background:var(--purple-bg); color:var(--purple)}
.optlog-tag-reserve_grant     {background:var(--accent-bg); color:var(--accent2)}
.optlog-tag-anomaly           {background:var(--red-bg);    color:var(--red)}
.optlog-tag-default           {background:var(--surface3);  color:var(--text3)}

/* Reasoning collapsible — padded separately since table is full-bleed */
.optlog-reasoning{margin:8px 14px 14px}
.optlog-reasoning-toggle{
  font-size:11px;color:var(--text3);cursor:pointer;
  padding:4px 0;user-select:none;
  transition:color 0.15s;
}
.optlog-reasoning-toggle:hover{color:var(--text)}
.optlog-reasoning-body{
  margin-top:8px;padding:12px;
  background:var(--surface2);border-radius:var(--radius);
  font-size:12px;color:var(--text2);line-height:1.6;
}
.optlog-reasoning-body p{margin:0 0 8px}
.optlog-reasoning-body p:last-child{margin-bottom:0}
.optlog-reasoning-body strong{color:var(--text);font-weight:500}

/* Legacy section */
.optlog-legacy-section{margin-top:20px}
.optlog-legacy-label{
  font-size:11px;font-weight:600;text-transform:uppercase;
  letter-spacing:0.06em;color:var(--text3);margin-bottom:8px;
}
.optlog-legacy-table{border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}

/* ═══════════════════════════════════════════════════════════════════════════
   AI AGENT — floating button + chat panel
═══════════════════════════════════════════════════════════════════════════ */

/* ── Agent tab — full-screen layout ─────────────────────────────── */

/* Flume nav icon — gentle flame flicker */
.nav-icon-flume{display:inline-flex;transform-origin:center bottom;animation:flumeFlicker 2.5s ease-in-out infinite}
@media(prefers-reduced-motion:reduce){.nav-icon-flume{animation:none}}
@keyframes flumeFlicker{
  0%,100%{transform:scaleY(1)    rotate(0deg)}
  20%    {transform:scaleY(1.07) rotate(-2deg)}
  40%    {transform:scaleY(0.95) rotate(2deg)}
  60%    {transform:scaleY(1.05) rotate(-1.5deg)}
  80%    {transform:scaleY(0.97) rotate(1.5deg)}
}

/* Panel override — agent fills viewport, no page scroll */
#panel-agent.active{
  display:flex;flex-direction:column;overflow:hidden;
  /* Undo <main> padding gaps so panel fills edge-to-edge */
  margin:-28px -32px -28px;padding:0;
  height:calc(100dvh - 56px);
  animation:panelIn 0.22s cubic-bezier(0.22,1,0.36,1);
}
/* Skip fade-out transition — negative margins cause layout shift during the 100ms fade */
#panel-agent.panel-switching-out{display:none!important}
/* Clip negative side margins so they don't widen <main> and cause scrollbar shift */
main:has(#panel-agent.active){overflow:hidden}
.agent-tab{
  display:flex;flex-direction:column;
  flex:1;min-height:0;overflow:hidden;
}
.agent-tab-header{
  display:flex;align-items:center;justify-content:space-between;
  padding:12px 24px;border-bottom:1px solid var(--border);flex-shrink:0;
}
.agent-tab-header-title{
  font-size:14px;font-weight:600;color:var(--text);
  display:flex;align-items:center;gap:5px;
}
.agent-tab-header-actions{display:flex;align-items:center;gap:8px}
.agent-tab-clear-btn{
  font-size:12px;color:var(--text3);background:none;
  border:1px solid var(--border);border-radius:6px;
  padding:5px 12px;cursor:pointer;font-family:inherit;
  transition:color 0.15s,background 0.15s;
}
.agent-tab-clear-btn:hover{color:var(--text);background:var(--surface2)}

.agent-tab-body{display:flex;flex:1;min-height:0;overflow:hidden}
.agent-tab-main{flex:1;display:flex;flex-direction:column;min-width:0}
.agent-tab-messages{
  flex:1;overflow-y:auto;padding:24px 24px 16px;
}
/* Centered message column — fixed-width container for all messages.
   When the sidebar opens, this column shifts left naturally via flex shrink. */
.agent-tab-column{
  max-width:720px;width:100%;margin:0 auto;
  display:flex;flex-direction:column;gap:10px;
  min-height:100%;
}
.agent-tab-sidebar{
  width:0;flex-shrink:0;border-left:1px solid transparent;
  overflow:hidden;display:flex;flex-direction:column;padding:0;
  transition:width 0.45s cubic-bezier(0.34,1.18,0.64,1),
             border-color 0.2s ease;
}
.agent-tab-body.sidebar-open .agent-tab-sidebar{
  width:280px;border-left-color:var(--border);overflow-y:auto;
}
.agent-tab-clear-btn.active{background:color-mix(in srgb, var(--accent) 12%, transparent);color:var(--accent)}

/* ── Sidebar internals ── */
.agent-tab-sidebar>*{min-width:280px}
.ats-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--border);flex-shrink:0}
.ats-header-title{font-size:13px;font-weight:600;color:var(--text)}
.ats-close-btn{background:none;border:none;color:var(--text3);font-size:18px;cursor:pointer;padding:0 2px;line-height:1;transition:color 0.15s}
.ats-close-btn:hover{color:var(--text)}

.ats-empty{padding:32px 16px;text-align:center}
.ats-empty-title{font-size:13px;font-weight:500;color:var(--text2);margin-bottom:6px}
.ats-empty-hint{font-size:12px;color:var(--text3);line-height:1.5}
.ats-empty-filtered{padding-top:24px}
.ats-clear-filters-btn{
  margin-top:12px;border:1px solid var(--border);background:var(--surface);
  color:var(--text2);border-radius:999px;padding:6px 12px;font-size:12px;
  cursor:pointer;font-family:inherit;transition:border-color 0.15s,color 0.15s,background 0.15s;
}
.ats-clear-filters-btn:hover{border-color:var(--accent-border);color:var(--text);background:var(--surface2)}

.ats-controls{padding:12px 12px 8px;border-bottom:1px solid var(--border);display:flex;flex-direction:column;gap:8px}
.ats-search-input,.ats-filter-select{
  width:100%;font-size:12px;color:var(--text);background:var(--surface);
  border:1px solid var(--border);border-radius:8px;font-family:inherit;
}
.ats-search-input{padding:9px 11px}
.ats-search-input:focus,.ats-filter-select:focus{outline:none;border-color:var(--accent-border)}
.ats-filter-row{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.ats-filter-select{padding:8px 10px}

.ats-list{flex:1;overflow-y:auto;padding:10px 8px 8px}
.ats-group + .ats-group{margin-top:8px}
.ats-group-label{
  padding:6px 8px 8px;font-size:10px;font-weight:700;letter-spacing:0.06em;
  text-transform:uppercase;color:var(--text3);
}
.ats-item{
  padding:10px 12px;border-radius:8px;cursor:pointer;
  transition:background 0.15s;position:relative;
}
.ats-item:hover{background:var(--surface2)}
.ats-item.selected{background:var(--surface2)}
.ats-item-title{
  font-size:13px;font-weight:500;color:var(--text);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  padding-right:40px;
}
.ats-item-summary{
  margin-top:4px;font-size:11.5px;line-height:1.45;color:var(--text3);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}
.ats-item-meta{display:flex;align-items:center;gap:6px;margin-top:4px}
.ats-type-badge{
  font-size:10px;padding:1px 6px;border-radius:4px;font-weight:500;
  background:color-mix(in srgb, var(--accent) 15%, transparent);
  color:var(--accent);
}
.ats-item-time{font-size:11px;color:var(--text3)}
.ats-item-context{display:flex;flex-wrap:wrap;gap:5px;margin-top:8px;padding-right:34px}
.ats-context-pill{
  font-size:10px;line-height:1.2;padding:3px 6px;border-radius:999px;
  background:var(--surface2);color:var(--text3);border:1px solid var(--border);
}

.ats-item-actions{
  position:absolute;top:8px;right:8px;display:flex;gap:2px;
  opacity:0;transition:opacity 0.15s;
}
.ats-item:hover .ats-item-actions{opacity:1}
.ats-action-btn{
  background:none;border:none;color:var(--text3);font-size:14px;
  cursor:pointer;padding:2px 4px;border-radius:4px;line-height:1;
  transition:color 0.15s,background 0.15s;
}
.ats-action-btn:hover{color:var(--text);background:var(--surface3)}
.ats-delete-btn:hover{color:var(--red)}

.ats-rename-input{
  width:100%;font-size:13px;font-weight:500;
  background:var(--surface2);border:1px solid var(--accent);
  border-radius:4px;padding:2px 6px;color:var(--text);
  font-family:inherit;outline:none;
}

/* ── Input bar ── */
.agent-tab-input-bar{flex-shrink:0;padding:12px 24px 20px;border-top:1px solid var(--border)}
.agent-tab-input-wrap{
  max-width:720px;margin:0 auto;display:flex;gap:8px;align-items:flex-end;
}
.agent-tab-input{
  flex:1;resize:none;font-size:13px;line-height:1.5;
  padding:10px 14px;border:1px solid var(--border);border-radius:10px;
  background:var(--surface);color:var(--text);font-family:inherit;
  outline:none;max-height:160px;overflow-y:auto;
  transition:border-color 0.15s;
}
.agent-tab-input:focus{border-color:var(--accent-border)}
.agent-tab-input::placeholder{color:var(--text3)}
.agent-tab-input:disabled{opacity:0.5;cursor:not-allowed}
.agent-tab-send-btn{
  width:42px;height:42px;border-radius:10px;border:none;
  background:var(--accent);color:white;cursor:pointer;
  display:flex;align-items:center;justify-content:center;flex-shrink:0;
  transition:opacity 0.15s;
}
.agent-tab-send-btn:hover{opacity:0.85}
.agent-tab-send-btn:disabled{opacity:0.4;cursor:not-allowed}
.agent-tab-upload-btn{
  width:42px;height:42px;border-radius:10px;border:1px solid var(--border);
  background:transparent;color:var(--text3);cursor:pointer;flex-shrink:0;
  display:flex;align-items:center;justify-content:center;
  transition:color 0.15s,border-color 0.15s;
}
.agent-tab-upload-btn:hover{color:var(--accent);border-color:var(--accent-border)}
.agent-tab-upload-btn:disabled{opacity:0.4;cursor:not-allowed}
.agent-tab-input-bar-drag{border-top-color:var(--accent)!important;background:color-mix(in srgb,var(--accent) 4%,transparent)}
.agent-tab-input-bar-drag .agent-tab-input-wrap{opacity:0.6}

/* ── Upload preview card ── */
.agent-tab-upload-preview-wrap{padding:0 24px 10px;max-width:720px;margin:0 auto;width:100%;box-sizing:border-box}
.agent-upload-card{
  border:1px solid var(--border2);border-radius:var(--radius-lg);
  background:var(--surface);overflow:hidden;
  box-shadow:var(--shadow);
}
.agent-upload-header{
  display:flex;align-items:center;gap:10px;padding:12px 16px 10px;
  border-bottom:1px solid var(--border);
}
.agent-upload-filename{font-size:12px;font-weight:600;color:var(--text);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.agent-upload-summary{display:flex;gap:6px;align-items:center;flex-shrink:0}
.agent-upload-count{font-size:11px;padding:2px 7px;border-radius:20px;font-weight:500}
.agent-upload-count-ok{background:color-mix(in srgb,var(--green) 14%,transparent);color:var(--green)}
.agent-upload-count-warn{background:color-mix(in srgb,var(--amber) 14%,transparent);color:var(--amber)}
.agent-upload-count-total{background:var(--bg3);color:var(--text3)}
.agent-upload-table-wrap{max-height:280px;overflow-y:auto}
.agent-upload-table{width:100%;border-collapse:collapse;font-size:12px}
.agent-upload-table thead tr{border-bottom:1px solid var(--border)}
.agent-upload-table th{padding:7px 16px;text-align:left;font-size:11px;color:var(--text3);font-weight:500;position:sticky;top:0;background:var(--surface)}
.agent-upload-table th:last-child{width:28px;padding-right:12px}
.agent-upload-table td{padding:6px 16px;border-bottom:1px solid var(--border);color:var(--text2)}
.agent-upload-table td:last-child{padding-right:12px}
.agent-upload-row-ok td{color:var(--text2)}
.agent-upload-row-warn td{color:var(--text3);font-style:italic}
.agent-upload-empty{color:var(--text3)}
.agent-upload-badge{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;font-size:11px;font-weight:700;font-style:normal}
.agent-upload-badge-ok{background:color-mix(in srgb,var(--green) 15%,transparent);color:var(--green)}
.agent-upload-badge-warn{background:color-mix(in srgb,var(--amber) 15%,transparent);color:var(--amber);cursor:default}
.agent-upload-expander{width:100%;padding:8px;background:none;border:none;border-top:1px solid var(--border);font-size:11px;color:var(--accent);cursor:pointer;transition:opacity 0.15s}
.agent-upload-expander:hover{opacity:0.75}
.agent-upload-note{padding:8px 16px;font-size:11px;color:var(--text3);border-top:1px solid var(--border);background:color-mix(in srgb,var(--amber) 6%,transparent)}
.agent-upload-actions{padding:10px 16px 12px;display:flex;gap:8px;border-top:1px solid var(--border)}
.agent-upload-actions .btn{font-size:12px;padding:6px 14px}

/* ── Welcome state ── */
.agent-welcome{
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  text-align:center;padding:24px;max-width:720px!important;
  min-height:100%;box-sizing:border-box;
}
.agent-welcome-icon{display:flex;align-items:center;justify-content:center;color:var(--accent);margin-bottom:12px}
.agent-welcome-title{font-size:22px;font-weight:700;color:var(--text);margin:0 0 8px}
.agent-welcome-sub{font-size:13px;color:var(--text3);margin:0 0 32px;line-height:1.5}
.agent-welcome-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;width:100%}
.agent-preset-card{
  display:flex;flex-direction:column;align-items:flex-start;gap:4px;
  padding:14px 16px;border:1px solid var(--border);border-radius:10px;
  background:var(--surface);cursor:pointer;text-align:left;font-family:inherit;
  transition:border-color 0.15s,background 0.15s;
}
.agent-preset-card:hover{border-color:var(--accent-border);background:var(--surface2)}
.agent-preset-icon{font-size:18px}
.agent-preset-title{font-size:13px;font-weight:600;color:var(--text)}
.agent-preset-desc{font-size:11.5px;color:var(--text3);line-height:1.4}

/* ── Report preset section ── */
.agent-welcome-reports-divider{
  display:flex;align-items:center;gap:12px;
  margin:28px 0 16px;
  font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:0.06em;
  color:var(--text3);
}
.agent-welcome-reports-divider::before,.agent-welcome-reports-divider::after{
  content:'';flex:1;height:1px;background:var(--border);
}
.agent-report-card,.agent-audit-card{
  flex-direction:row;align-items:center;gap:10px;
  padding:10px 14px 10px 13px;min-height:74px;
}
.agent-report-card{border-left:3px solid var(--accent)}
.agent-report-card:hover{border-left-color:var(--accent);background:color-mix(in srgb, var(--accent) 6%, transparent)}
.agent-report-card-icon{color:var(--accent);flex-shrink:0}
.agent-report-card-text{display:flex;flex-direction:column;gap:2px;min-width:0;overflow:hidden}
.agent-report-card .agent-preset-desc,.agent-audit-card .agent-preset-desc{
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}
.agent-audit-card{border-left:3px solid var(--amber)}
.agent-audit-card:hover{border-left-color:var(--amber);background:color-mix(in srgb, var(--amber) 6%, transparent)}
.agent-audit-card .agent-report-card-icon{color:var(--amber)}

/* ── Message styles ── */
.agent-msg{word-break:break-word;font-size:13px;line-height:1.6;animation:msgIn 0.4s cubic-bezier(0.22,1,0.36,1)}
.agent-confirm-card{animation:msgIn 0.4s cubic-bezier(0.22,1,0.36,1)}
.agent-chart-wrap{animation:msgIn 0.5s cubic-bezier(0.22,1,0.36,1)}
@keyframes msgIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
.agent-msg-user{
  align-self:flex-end;max-width:85%;width:fit-content;
  background:var(--accent-bg);border:1px solid var(--accent-border);
  border-radius:var(--radius) var(--radius) 4px var(--radius);
  padding:10px 14px;color:var(--text);
}
.agent-msg-agent{
  align-self:flex-start;
  background:var(--surface2);border:1px solid var(--border);
  border-radius:4px var(--radius) var(--radius) var(--radius);
  padding:10px 14px;color:var(--text);
}
.agent-msg-icon{display:inline-flex;align-items:center;color:var(--accent);margin-right:4px;vertical-align:middle;flex-shrink:0}
.agent-msg-body{flex:1;min-width:0}

/* Typing indicator */
.agent-typing{
  align-self:flex-start;
  background:var(--surface2);border:1px solid var(--border);
  border-radius:4px var(--radius) var(--radius) var(--radius);
  padding:10px 14px;display:flex;align-items:center;gap:4px;flex-shrink:0;
}
.agent-typing-dot{
  width:5px;height:5px;border-radius:50%;background:var(--text3);
  animation:agent-bounce 1.2s ease-in-out infinite;
}
.agent-typing-dot:nth-child(2){animation-delay:0.2s}
.agent-typing-dot:nth-child(3){animation-delay:0.4s}
@keyframes agent-bounce{
  0%,80%,100%{transform:translateY(0);opacity:0.4}
  40%{transform:translateY(-4px);opacity:1}
}

/* Confirmation card */
.agent-confirm-card{
  margin-top:4px;
  background:var(--surface3);
  border-left:3px solid var(--accent-border);
  border-radius:0 8px 8px 0;
  padding:10px 12px;font-size:12px;
}
.agent-confirm-desc{color:var(--text2);margin-bottom:8px;line-height:1.55}
.agent-confirm-list{margin:0 0 10px;padding-left:18px;font-size:12px;color:var(--text2);line-height:1.6}
.agent-confirm-list li{margin-bottom:2px}
.agent-confirm-btns{display:flex;gap:6px}
.agent-confirm-btns .btn{font-size:11px;padding:5px 12px;transition:opacity 0.15s ease,background-color 0.2s ease}
.agent-confirm-btns .btn.btn-confirmed{background:var(--green-confirmed)!important;border-color:var(--green-confirmed)!important;color:white!important;opacity:1!important;pointer-events:none}

/* ── Agent chart artifacts ─────────────────────────────────────────── */
.agent-chart-wrap{
  position:relative;margin:8px 0 4px;padding:12px;
  background:var(--surface2);border:1px solid var(--border);border-radius:8px;
  max-width:100%;
}
.agent-chart-title{font-size:12px;font-weight:600;color:var(--text);margin-bottom:8px}
.agent-chart-wrap svg{display:block;width:100%}
.agent-chart-copy{
  position:absolute;top:8px;right:8px;opacity:0;transition:opacity 0.15s;
  background:var(--surface);border:1px solid var(--border);border-radius:5px;
  padding:4px 8px;cursor:pointer;font-size:10px;color:var(--text2);font-family:inherit;
}
.agent-chart-wrap:hover .agent-chart-copy{opacity:1}
.agent-chart-copy.copied{color:var(--green)}
.agent-chart-error{
  font-size:11px;color:var(--amber);padding:6px 8px;margin:6px 0;
  background:color-mix(in srgb,var(--amber) 10%,transparent);border-radius:6px;
}

/* Donut */
.agent-donut-container{text-align:center}
.agent-donut-legend{
  display:grid;grid-template-columns:1fr 1fr;gap:2px 8px;
  font-size:10.5px;color:var(--text2);margin-top:8px;text-align:left;
}
.agent-donut-legend-item{display:flex;align-items:center;gap:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.agent-donut-legend-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}
.agent-donut-legend-label{flex:1;overflow:hidden;text-overflow:ellipsis}
.agent-donut-legend-val{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--text);flex-shrink:0}

/* Table */
.agent-chart-table-wrap{max-height:320px;overflow-y:auto}
.agent-chart-table{width:100%;border-collapse:collapse;font-size:11px}
.agent-chart-table th{
  font-weight:600;text-align:left;padding:5px 8px;
  border-bottom:1px solid var(--border);color:var(--text2);font-size:10.5px;
}
.agent-chart-table td{padding:4px 8px;border-bottom:1px solid color-mix(in srgb,var(--border) 50%,transparent);color:var(--text)}
.agent-chart-table td.num{text-align:right;font-variant-numeric:tabular-nums;font-family:var(--font-mono)}
.agent-chart-table th.highlight,.agent-chart-table td.highlight{background:color-mix(in srgb,var(--accent) 8%,transparent)}

/* ── Responsive ── */
@media(max-width:640px){
  .agent-welcome-grid{grid-template-columns:1fr}
  .agent-tab-messages{padding:16px 12px}
  .agent-tab-input-bar{padding:8px 12px 12px}
}
