/* ═══ Reset ═══ */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}

/* ═══ Design Tokens ═══ */
:root{
  /* Spacing (4px base, prefer 8px multiples) */
  --s1:4px;--s2:8px;--s3:12px;--s4:16px;--s6:24px;--s8:32px;
  /* Border radius */
  --r-sm:6px;--r-md:10px;--r-lg:14px;
  /* Typography */
  --f-sm:12px;--f-base:14px;--f-md:15px;--f-lg:18px;--f-xl:22px;
  /* Timing */
  --t-fast:.1s;--t-norm:.15s;
  /* Colors — blue-tinted dark theme */
  --bg:#0a0a0c;
  --bg-card:#13131a;
  --bg-input:#16161e;
  --bg-hover:#1c1c28;
  --bg-user:rgba(124,109,245,.14);
  --bg-sidebar:#0c0c10;
  --bg-topbar:#0b0b0f;
  --text:#e2e2ec;
  --text-dim:#8a8a9e;
  --text-muted:#484860;
  --accent:#7c6df5;
  --accent-dim:rgba(124,109,245,.1);
  --accent-glow:rgba(124,109,245,.25);
  --green:#34d399;
  --red:#f87171;
  --border:#1e1e2a;
  --border-subtle:#161620;
  --shadow-lg:0 8px 32px rgba(0,0,0,.55);
  --shadow-md:0 4px 16px rgba(0,0,0,.4);
  /* Layout */
  --font:'Inter',system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;
  --font-mono:'JetBrains Mono','Fira Code','SF Mono','Cascadia Code',monospace;
  --sidebar-left:200px;--sidebar-right:260px;--topbar:52px;
}

/* ═══ Base ═══ */
html,body{height:100%;font-family:var(--font);background:var(--bg);color:var(--text);overflow:hidden;font-size:var(--f-md);line-height:1.55;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;letter-spacing:-.01em}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit;transition:all var(--t-norm)}
input,textarea,select{font-family:inherit;border:none;outline:none;background:none;color:inherit}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}

/* ═══ Scrollbar ═══ */
::-webkit-scrollbar{width:var(--s1)}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--border);border-radius:var(--s1)}
::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}
*{scrollbar-width:thin;scrollbar-color:var(--border) transparent}

/* ═══ Auth Screen ═══ */
.auth-overlay{position:fixed;inset:0;z-index:1000;background:var(--bg);display:flex;align-items:center;justify-content:center;transition:opacity .3s}
.auth-overlay--hidden{opacity:0;pointer-events:none}
.auth-card{width:380px;max-width:90vw;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--r-lg);padding:40px var(--s8);text-align:center;box-shadow:var(--shadow-lg)}
.auth-card__logo{font-size:36px;margin-bottom:var(--s2)}
.auth-card__title{font-size:var(--f-xl);font-weight:700;margin-bottom:var(--s1)}
.auth-card__subtitle{font-size:var(--f-base);color:var(--text-dim);margin-bottom:28px}
.auth-field{margin-bottom:var(--s4);text-align:left}
.auth-field label{display:block;font-size:var(--f-sm);font-weight:600;color:var(--text-dim);margin-bottom:var(--s1);text-transform:uppercase;letter-spacing:.4px}
.auth-field input{width:100%;background:var(--bg-input);border:1px solid var(--border);border-radius:var(--r-sm);padding:var(--s3) var(--s4);font-size:var(--f-base);color:var(--text);transition:border-color var(--t-norm),box-shadow var(--t-norm)}
.auth-field input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow)}
.auth-field input::placeholder{color:var(--text-muted)}
.auth-btn{width:100%;padding:var(--s3);font-size:var(--f-md);font-weight:600;border-radius:var(--r-sm);background:var(--accent);color:#fff;transition:opacity var(--t-norm),transform var(--t-norm);margin-top:var(--s2)}
.auth-btn:hover{opacity:.88;transform:translateY(-1px)}
.auth-btn:active{transform:translateY(0)}
.auth-btn:disabled{opacity:.4;cursor:not-allowed;transform:none}
.auth-error{font-size:var(--f-sm);color:var(--red);margin-top:var(--s3);min-height:20px}
.auth-loading{font-size:var(--f-sm);color:var(--text-dim);margin-top:var(--s3)}

/* ═══ Layout ═══ */
.app{display:grid;grid-template-columns:var(--sidebar-left) 1fr var(--sidebar-right);grid-template-rows:var(--topbar) auto 1fr auto;height:100vh;width:100vw}
.sidebar-left{grid-row:1/5;grid-column:1;background:var(--bg-sidebar);border-right:1px solid var(--border-subtle);display:flex;flex-direction:column}
.topbar{grid-row:1;grid-column:2/4;background:var(--bg-topbar);border-bottom:1px solid var(--border-subtle);display:flex;align-items:center;padding:0 var(--s6);gap:var(--s2)}
.chat-tabs-bar{grid-row:2;grid-column:2;background:var(--bg-topbar);border-bottom:1px solid var(--border-subtle);display:none;align-items:center;padding:0 var(--s3);gap:0;min-height:36px;overflow-x:auto}
.chat-tabs-bar--visible{display:flex}
.chat-tabs-list{display:flex;align-items:center;gap:0;overflow-x:auto;scrollbar-width:none}
.chat-tabs-list::-webkit-scrollbar{display:none}
.chat-panel{display:none;flex-direction:column;flex:1;position:relative;overflow:hidden;min-height:0}
.chat-panel--visible{display:flex}
.main-area{grid-row:3/5;grid-column:2;display:flex;flex-direction:column;position:relative;overflow:hidden;min-height:0}
.sidebar-right{grid-row:1/5;grid-column:3;background:var(--bg-sidebar);border-left:1px solid var(--border-subtle);display:flex;flex-direction:column}

/* ═══ Chat Tab Chips ═══ */
.chat-tab{display:flex;align-items:center;gap:var(--s1);padding:var(--s1) var(--s3);font-size:var(--f-sm);font-weight:500;color:var(--text-dim);border-radius:var(--r-sm) var(--r-sm) 0 0;cursor:pointer;transition:all var(--t-norm);white-space:nowrap;border:1px solid transparent;border-bottom:none;position:relative;background:none}
.chat-tab:hover{color:var(--text);background:var(--bg-hover)}
.chat-tab--active{color:var(--text);background:var(--bg-card);border-color:var(--border)}
.chat-tab__dot{width:var(--s1);height:var(--s1);border-radius:50%;flex-shrink:0}
.chat-tab__title{max-width:120px;overflow:hidden;text-overflow:ellipsis}
.chat-tab__close{width:var(--s4);height:var(--s4);border-radius:var(--s1);display:flex;align-items:center;justify-content:center;font-size:11px;color:var(--text-muted);background:none;border:none;cursor:pointer;opacity:0;transition:all var(--t-fast);flex-shrink:0}
.chat-tab:hover .chat-tab__close{opacity:1}
.chat-tab__close:hover{color:var(--red);background:rgba(248,113,113,.15)}
.chat-tab-add{width:28px;height:28px;border-radius:var(--r-sm);display:flex;align-items:center;justify-content:center;font-size:var(--s4);color:var(--text-muted);cursor:pointer;transition:all var(--t-norm);background:none;border:none;margin-left:var(--s1)}
.chat-tab-add:hover{color:var(--accent);background:var(--accent-dim)}

/* ═══ Tab Context Menu ═══ */
.tab-ctx{position:fixed;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--r-md);padding:var(--s1);min-width:160px;z-index:2000;box-shadow:var(--shadow-lg);animation:agentFadeIn var(--t-fast)}
.tab-ctx__item{display:flex;align-items:center;gap:var(--s2);padding:7px var(--s3);font-size:var(--f-sm);color:var(--text);border-radius:var(--r-sm);cursor:pointer;transition:background var(--t-fast);border:none;background:none;width:100%;text-align:left;font-family:inherit}
.tab-ctx__item:hover{background:var(--bg-hover)}
.tab-ctx__item--danger{color:var(--red)}
.tab-ctx__item--danger:hover{background:rgba(248,113,113,.1)}
.tab-ctx__sep{height:1px;background:var(--border);margin:var(--s1) var(--s2)}
.tab-ctx__colors{display:flex;gap:var(--s1);padding:var(--s1) var(--s3)}
.tab-ctx__color{width:18px;height:18px;border-radius:50%;cursor:pointer;border:2px solid transparent;transition:all var(--t-fast)}
.tab-ctx__color:hover{transform:scale(1.2)}
.tab-ctx__color--active{border-color:#fff}

/* ═══ Agents Page ═══ */
.agents-page{display:none;flex:1;overflow-y:auto;padding:var(--s6) var(--s8);flex-direction:column;gap:var(--s4)}
.agents-page--visible{display:flex}
.agents-page__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--s2)}
.agents-page__title{font-size:20px;font-weight:700}
.agents-page__subtitle{font-size:var(--f-sm);color:var(--text-dim);margin-top:2px}
.agents-page__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--s3)}
.agent-full-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--r-md);padding:var(--s4) 18px;transition:all var(--t-norm);position:relative}
.agent-full-card:hover{border-color:rgba(124,109,245,.3);background:var(--bg-hover);box-shadow:0 2px 12px rgba(124,109,245,.06)}
.agent-full-card__header{display:flex;align-items:center;gap:var(--s3);margin-bottom:var(--s3)}
.agent-full-card__avatar{width:42px;height:42px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:20px;font-weight:600;color:#fff;flex-shrink:0;box-shadow:0 2px 8px rgba(0,0,0,.3)}
.agent-full-card__title{flex:1;min-width:0}
.agent-full-card__name{font-size:var(--f-md);font-weight:600;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.agent-full-card__slug{font-size:11px;color:var(--text-muted);margin-top:1px}
.agent-full-card__status{display:flex;align-items:center;gap:5px;font-size:11px;font-weight:500;color:var(--green)}
.agent-full-card__status-dot{width:7px;height:7px;border-radius:50%;background:var(--green)}
.agent-full-card__desc{font-size:var(--f-sm);color:var(--text-dim);line-height:1.5;margin-bottom:var(--s3);min-height:36px}
.agent-full-card__footer{display:flex;align-items:center;justify-content:space-between;padding-top:var(--s3);border-top:1px solid var(--border)}
.agent-full-card__model{font-size:var(--f-sm);color:var(--text-dim)}
.agent-full-card__actions{display:flex;gap:var(--s1)}
.agent-full-card__btn{width:var(--s8);height:var(--s8);border-radius:var(--r-sm);display:flex;align-items:center;justify-content:center;font-size:var(--f-base);color:var(--text-dim);border:1px solid var(--border);background:none;cursor:pointer;transition:all var(--t-norm)}
.agent-full-card__btn:hover{background:var(--bg-hover);color:var(--text);border-color:var(--text-muted)}
.agent-full-card__btn--danger:hover{color:var(--red);border-color:var(--red);background:rgba(248,113,113,.08)}

/* ═══ Scheduler Task Embedded Chat ═══ */
.task-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--r-md);transition:all var(--t-norm);position:relative;overflow:hidden}
.task-card:hover{border-color:rgba(124,109,245,.3)}
.task-card--expanded{border-color:var(--accent)}
.task-card__header{display:flex;align-items:center;gap:var(--s3);padding:var(--s4) 18px;cursor:pointer}
.task-card__avatar{width:42px;height:42px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:20px;font-weight:600;color:#fff;flex-shrink:0;box-shadow:0 2px 8px rgba(0,0,0,.3)}
.task-card__info{flex:1;min-width:0}
.task-card__name{font-size:var(--f-md);font-weight:600;color:var(--text)}
.task-card__meta{font-size:11px;color:var(--text-muted);margin-top:1px}
.task-card__status{display:flex;align-items:center;gap:5px;font-size:11px;font-weight:500}
.task-card__status-dot{width:7px;height:7px;border-radius:50%}
.task-card__preview{padding:0 18px var(--s3);font-size:var(--f-sm);color:var(--text-dim);line-height:1.5;max-height:100px;overflow:hidden;cursor:pointer}
.task-card__preview-line{padding:2px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.task-card__preview-empty{color:var(--text-muted);font-style:italic}
.task-card__body{border-top:1px solid var(--border);display:none}
.task-card--expanded .task-card__body{display:flex;flex-direction:column}
.task-card__controls{display:flex;align-items:center;gap:var(--s2);padding:var(--s2) 18px;border-bottom:1px solid var(--border);background:var(--bg-input)}
.task-card__controls-info{flex:1;font-size:var(--f-sm);color:var(--text-dim)}
.task-card__chat{height:360px;overflow-y:auto;padding:var(--s3) 18px;display:flex;flex-direction:column;gap:var(--s2)}
.task-card__chat-msg{font-size:var(--f-sm);line-height:1.5}
.task-card__chat-msg--system{color:var(--text-muted);font-style:italic}
.task-card__chat-msg--agent .task-card__chat-sender{color:var(--accent);font-weight:600;margin-right:var(--s1)}
.task-card__chat-msg--user .task-card__chat-sender{color:var(--green);font-weight:600;margin-right:var(--s1)}
.task-card__chat-text{color:var(--text-dim)}
.task-card__chat-text p{margin:0}
.task-card__chat-loading{text-align:center;padding:var(--s6);color:var(--text-muted)}
#schedulerGrid{grid-template-columns:1fr}
.wf-subview{display:none}
.wf-subview--active{display:block}

/* ═══ Settings Page ═══ */
.settings-page{display:none;flex:1;overflow-y:auto;padding:var(--s6) var(--s8);flex-direction:column;gap:var(--s6)}
.settings-page--visible{display:flex}
.settings-section{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--r-md);padding:var(--s6)}
.settings-section__title{font-size:var(--f-base);font-weight:600;margin-bottom:var(--s3);color:var(--text)}
.settings-row{display:flex;align-items:center;justify-content:space-between;padding:var(--s2) 0;border-bottom:1px solid var(--border)}
.settings-row:last-child{border-bottom:none}
.settings-row__label{font-size:var(--f-base);color:var(--text-dim)}
.settings-row__value{font-size:var(--f-base);color:var(--text);font-weight:500}
.settings-input{background:var(--bg-input);border:1px solid var(--border);border-radius:var(--r-sm);padding:var(--s2) var(--s3);font-size:var(--f-base);color:var(--text);font-family:inherit;transition:border-color var(--t-norm),box-shadow var(--t-norm)}
.settings-input:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px var(--accent-glow)}
.settings-btn{padding:var(--s1) var(--s3);border-radius:var(--r-sm);font-size:var(--f-sm);font-weight:500;cursor:pointer;transition:all var(--t-norm);font-family:inherit;border:none}
.settings-btn--primary{background:var(--accent);color:#fff}
.settings-btn--primary:hover{opacity:.85}
.btn-spinner{display:inline-block;width:12px;height:12px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:btnSpin .6s linear infinite;margin-right:6px;vertical-align:middle}
@keyframes btnSpin{to{transform:rotate(360deg)}}
.toggle-switch{position:relative;display:inline-block;width:40px;height:22px;flex-shrink:0}
.toggle-switch input{opacity:0;width:0;height:0}
.toggle-switch__slider{position:absolute;cursor:pointer;inset:0;background:var(--surface-2);border-radius:22px;transition:background var(--t-norm)}
.toggle-switch__slider::before{content:'';position:absolute;width:16px;height:16px;left:3px;bottom:3px;background:#fff;border-radius:50%;transition:transform var(--t-norm)}
.toggle-switch input:checked+.toggle-switch__slider{background:var(--accent)}
.toggle-switch input:checked+.toggle-switch__slider::before{transform:translateX(18px)}
.settings-btn--danger{background:none;color:var(--red);border:1px solid rgba(248,113,113,.3)}
.settings-btn--danger:hover{background:rgba(248,113,113,.1)}
.user-table{width:100%;border-collapse:collapse;font-size:var(--f-base)}
.user-table th{text-align:left;padding:var(--s2);color:var(--text-dim);font-weight:500;border-bottom:1px solid var(--border)}
.user-table td{padding:var(--s2);border-bottom:1px solid var(--border)}

/* ═══ Instance Items (Left Sidebar) ═══ */
.instance-list{flex:1;overflow-y:auto;padding:var(--s2)}
.instance-item{position:relative;padding:var(--s2) var(--s3);padding-right:var(--s6);border-radius:var(--r-md);cursor:pointer;transition:all var(--t-norm);margin-bottom:var(--s1);border:1px solid transparent}
.instance-item:hover{background:var(--bg-hover)}
.instance-item--active{background:var(--bg-card);border-color:var(--border);box-shadow:inset 2px 0 0 var(--accent)}
.instance-item__name{font-size:var(--f-sm);font-weight:600;margin-bottom:var(--s1)}
.instance-item__meta{font-size:11px;color:var(--text-dim)}
.instance-item__agents{display:flex;flex-wrap:wrap;gap:var(--s1);margin-top:var(--s1)}
.instance-item__agent-dot{width:20px;height:20px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:10px;color:#fff;border:1px solid var(--border)}
.instance-item__gear{position:absolute;top:8px;right:6px;opacity:0;background:none;border:none;cursor:pointer;color:var(--text-dim);font-size:13px;padding:2px;transition:opacity var(--t-norm);line-height:1}
.instance-item:hover .instance-item__gear{opacity:.7}
.instance-item__gear:hover{opacity:1!important;color:var(--text)}
.instance-item--skeleton{animation:skeletonPulse 1.5s ease-in-out infinite;pointer-events:none}
@keyframes skeletonPulse{0%,100%{opacity:1}50%{opacity:.4}}
.inst-status{display:flex;align-items:center;gap:var(--s2)}
.inst-status__dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.inst-status__text{font-size:var(--f-sm);color:var(--text-dim)}

/* ═══ Left Sidebar ═══ */
.sidebar-left__header{padding:var(--s4) var(--s3) var(--s2);font-size:10px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:1.2px}
.sidebar-left__user{display:flex;align-items:center;gap:var(--s2);padding:var(--s2) var(--s3)}
.sidebar-left__avatar{width:var(--s8);height:var(--s8);border-radius:50%;background:linear-gradient(135deg,var(--accent),#a78bfa);display:flex;align-items:center;justify-content:center;font-size:var(--f-base);font-weight:700;color:#fff;flex-shrink:0;box-shadow:0 2px 8px rgba(124,109,245,.25)}
.sidebar-left__username{font-size:var(--f-sm);font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sidebar-left__role{font-size:9px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.3px}
.sidebar-left__spacer{flex:1}
.sidebar-left__footer{padding:var(--s4);border-top:1px solid var(--border)}
.sidebar-left__logout{display:block;width:100%;padding:9px 0;font-size:var(--f-sm);font-weight:500;color:var(--text-dim);border-radius:var(--r-sm);background:var(--bg-card);border:1px solid var(--border);transition:all var(--t-norm);text-align:center}
.sidebar-left__logout:hover{color:var(--red);border-color:var(--red);background:rgba(239,68,68,.08)}
.sidebar-left__reset{display:block;width:100%;padding:9px 0;font-size:var(--f-sm);font-weight:500;color:var(--text-dim);border-radius:var(--r-sm);background:var(--bg-card);border:1px solid var(--border);transition:all var(--t-norm);text-align:center;margin-bottom:var(--s2)}
.sidebar-left__reset:hover{color:var(--red);border-color:var(--red);background:rgba(239,68,68,.08)}

/* ═══ Topbar ═══ */
/* Narrow windows (Safari quarter-screen): tabs must stay reachable.
   Horizontal scroll preserves single-row layout; momentum scroll on touch; */
/* hide the scrollbar so the bar looks identical to desktop when it fits. */
.topbar__tabs{display:flex;gap:var(--s1);flex:1;min-width:0;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.topbar__tabs::-webkit-scrollbar{display:none}
.topbar__tab{padding:7px var(--s4);font-size:var(--f-base);font-weight:500;color:var(--text-dim);border-radius:var(--r-sm);transition:all var(--t-norm);white-space:nowrap;flex-shrink:0;position:relative}
.topbar__tab-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:#4f8cff;margin-left:6px;vertical-align:middle;animation:eventsDotPulse 1.4s ease-in-out infinite}
@keyframes eventsDotPulse{0%,100%{opacity:.5}50%{opacity:1}}
.event-card:hover{border-color:var(--accent) !important}
/* Sub-tab containers (settings sub-nav, workflow/library/guide sub-tabs).
   Safari in quarter-screen would clip overflowing tabs — make the row scroll
   horizontally so every tab stays reachable. :has() is supported in Safari 15.4+. */
*:has(> .topbar__tab){min-width:0;overflow-x:auto;scrollbar-width:none}
*:has(> .topbar__tab)::-webkit-scrollbar{display:none}
.topbar__tab:hover{color:var(--text);background:var(--bg-hover)}
.topbar__tab--active{color:var(--accent);background:var(--accent-dim)}
.topbar__right{display:flex;align-items:center;gap:var(--s3)}
.env-selector-wrap{display:flex;align-items:center;gap:var(--s2)}
.env-selector{display:flex;align-items:center;gap:var(--s1);font-size:var(--f-sm);color:var(--text-dim);padding:3px var(--s2);background:var(--bg-card);border:1px solid var(--border);border-radius:var(--r-sm);cursor:pointer;transition:border-color var(--t-norm)}
.env-selector:hover{border-color:var(--accent)}
.env-selector select{background:transparent;border:none;color:var(--text);font-size:var(--f-sm);font-family:inherit;cursor:pointer;outline:none;padding:0 2px}
.env-selector select option{background:var(--bg-card);color:var(--text)}
.env-dot{width:7px;height:7px;border-radius:50%;background:var(--green);flex-shrink:0}
.env-note{font-size:11px;color:var(--text-muted);max-width:240px;line-height:1.2}
@media (max-width:1100px){.env-note{display:none}}
@media (max-width:900px){.env-selector-wrap{display:none !important}}
.conn-status{display:flex;align-items:center;gap:var(--s1);font-size:var(--f-sm);color:var(--text-dim)}
.conn-dot{width:var(--s2);height:var(--s2);border-radius:50%;background:var(--red);transition:background .3s}
.conn-dot--connected{background:var(--green)}
.user-display{display:flex;align-items:center;gap:var(--s2);font-size:var(--f-sm);color:var(--text-dim);padding:var(--s1) var(--s3);background:var(--bg-card);border-radius:var(--r-sm);border:1px solid var(--border)}
.user-display__name{color:var(--text);font-weight:500}
.user-display__role{font-size:11px;color:var(--text-muted)}

/* ═══ Chat Feed ═══ */
.chat-feed{flex:1;overflow-y:auto;padding:var(--s6) var(--s6);display:flex;flex-direction:column;gap:var(--s2);min-height:0}
@media (min-width:1400px){.chat-feed{padding:var(--s6) 40px}}

/* Agent message (left-aligned) */
.chat-msg{display:flex;gap:var(--s2);max-width:82%;animation:msgIn .2s ease}
.chat-msg--user{align-self:flex-end;flex-direction:row-reverse}
@keyframes msgIn{from{opacity:0;transform:translateY(var(--s1))}to{opacity:1;transform:none}}

.msg-avatar{width:34px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:var(--f-base);font-weight:600;color:#fff;flex-shrink:0;margin-top:3px;box-shadow:0 2px 6px rgba(0,0,0,.3)}

.msg-body{display:flex;flex-direction:column;gap:3px;min-width:0}

.msg-meta{display:flex;align-items:center;gap:var(--s2);font-size:var(--f-sm);font-weight:600}
.msg-meta span:first-child{color:var(--accent)}
.chat-msg--user .msg-meta{flex-direction:row-reverse}
.chat-msg--user .msg-meta span:first-child{color:var(--text-dim)}

/* Agent bubble — dark card with subtle border */
.msg-bubble{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--r-md);padding:var(--s3) var(--s4);font-size:var(--f-md);line-height:1.65;word-break:break-word;color:var(--text)}
.msg-bubble p{margin:0 0 .5em}
.msg-bubble p:last-child{margin-bottom:0}
.msg-bubble pre{background:#08080e;border:1px solid var(--border);border-radius:var(--r-sm);padding:var(--s3) var(--s4);overflow-x:auto;font-size:var(--f-sm);line-height:1.5;margin:var(--s2) 0}
.msg-bubble code{font-family:var(--font-mono);font-size:0.88em;background:rgba(124,109,245,.1);padding:2px var(--s1);border-radius:var(--s1);color:#c4b5fd}
.msg-bubble pre code{background:none;padding:0;border-radius:0;color:var(--text)}
.msg-bubble ul,.msg-bubble ol{margin:var(--s2) 0;padding-left:22px}
.msg-bubble li{margin:3px 0}
.msg-bubble h1,.msg-bubble h2,.msg-bubble h3{margin:var(--s4) 0 var(--s2);font-weight:600;color:#fff}
.msg-bubble h1{font-size:1.35em}.msg-bubble h2{font-size:1.2em}.msg-bubble h3{font-size:1.08em}
.msg-bubble blockquote{border-left:3px solid var(--accent);padding:var(--s1) var(--s3);margin:var(--s2) 0;color:var(--text-dim);background:var(--accent-dim);border-radius:0 var(--r-sm) var(--r-sm) 0}
.msg-bubble strong{font-weight:700;color:#fff}
.msg-bubble em{font-style:italic}
.msg-bubble a{color:var(--accent);text-decoration:none}
.msg-bubble a:hover{text-decoration:underline}
.msg-bubble hr{border:none;border-top:1px solid var(--border);margin:var(--s3) 0}
.msg-bubble table{border-collapse:collapse;margin:var(--s2) 0;font-size:var(--f-base)}
.msg-bubble th,.msg-bubble td{border:1px solid var(--border);padding:var(--s1) var(--s2);text-align:left}
.msg-bubble th{background:var(--bg-hover);font-weight:600}

/* User bubble — accent-tinted, right-aligned */
.chat-msg--user .msg-bubble{background:var(--bg-user);border-color:rgba(124,109,245,.25)}

.mention{color:var(--accent);font-weight:600;background:var(--accent-dim);padding:1px var(--s1);border-radius:var(--s1)}
.msg-time{font-size:11px;color:var(--text-muted);margin-top:2px}
.msg-footer{display:flex;align-items:center;gap:var(--s2);font-size:11px;color:var(--text-muted);margin-top:var(--s1)}
.msg-footer__name{font-weight:500;color:var(--text-dim)}
.chat-msg--user .msg-time{text-align:right}
.chat-msg--user .msg-footer{flex-direction:row-reverse}

/* Consecutive grouping — collapsed avatar/name */
.chat-msg--cont{margin-top:calc(var(--s1) * -1)}
.chat-msg--cont .msg-avatar{visibility:hidden}
.chat-msg--cont .msg-meta{display:none}
.chat-msg--cont .msg-time{display:none}

/* System messages — centered, subtle */
.chat-msg--system{align-self:center;max-width:70%}
.chat-msg--system .msg-body{align-items:center}
.chat-msg--system .msg-bubble{background:rgba(124,109,245,.05);border-color:rgba(124,109,245,.12);color:var(--text-muted);font-size:var(--f-sm);text-align:center}
.chat-msg--system .msg-meta{display:none}
.chat-msg--system .msg-avatar{display:none}

/* Warning banners — prominent centered plates */
.chat-msg--warning{align-self:center;max-width:80%;margin:var(--s4) auto}
.chat-msg--warning .msg-body{align-items:center}
.chat-msg--warning .msg-bubble{background:rgba(245,158,11,.08);border:1px solid rgba(245,158,11,.25);color:var(--text-base);font-size:var(--f-sm);text-align:center;padding:var(--s4) var(--s5);border-radius:var(--r-lg);line-height:1.6}
.chat-msg--warning .msg-bubble .warning-icon{font-size:20px;display:block;margin-bottom:var(--s2)}
.chat-msg--warning .msg-bubble .warning-title{font-weight:600;color:rgba(245,158,11,.9);margin-bottom:var(--s1);display:block}
.chat-msg--warning .msg-bubble .warning-hint{color:var(--text-muted);font-size:var(--f-xs);margin-top:var(--s2);display:block}
.chat-msg--warning .msg-meta{display:none}
.chat-msg--warning .msg-avatar{display:none}
.chat-msg--warning .msg-footer{display:none}

/* Streaming */
.msg-bubble--streaming{white-space:pre-wrap;color:var(--text-dim);min-height:20px}
.msg-bubble--streaming::after{content:'|';animation:blink 1s infinite;color:var(--accent);font-weight:300}

/* Empty state */
.chat-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1;gap:var(--s4);color:var(--text-muted);text-align:center;padding:var(--s8)}
.chat-empty__icon{font-size:48px;opacity:.35}
.chat-empty__text{font-size:var(--f-lg);font-weight:500;color:var(--text-dim)}
.chat-empty__sub{font-size:var(--f-base);max-width:360px;line-height:1.5}
.chat-empty__btn{padding:var(--s3) var(--s6);border-radius:var(--r-md);background:var(--accent);color:#fff;font-size:var(--f-base);font-weight:500;cursor:pointer;transition:opacity var(--t-norm),transform var(--t-norm);border:none;font-family:inherit}
.chat-empty__btn:hover{opacity:.88;transform:translateY(-1px)}
.chat-empty__btn:active{transform:translateY(0)}

/* File links & drop overlay */
.file-link{display:inline-flex;align-items:center;gap:var(--s1);padding:2px var(--s2);background:var(--accent-dim);border:1px solid rgba(124,109,245,.2);border-radius:var(--r-sm);color:var(--accent);text-decoration:none;font-size:var(--f-sm);font-weight:500;transition:all var(--t-norm)}
.file-link:hover{background:rgba(124,109,245,.2);border-color:var(--accent);text-decoration:none}
.drop-overlay{position:fixed;inset:0;background:rgba(124,109,245,.12);border:3px dashed var(--accent);z-index:5000;display:none;align-items:center;justify-content:center;pointer-events:none}
.drop-overlay--active{display:flex}
.drop-overlay__text{font-size:var(--f-xl);font-weight:600;color:var(--accent);background:var(--bg-card);padding:var(--s4) var(--s8);border-radius:var(--r-lg)}

/* ═══ Typing Indicator ═══ */
.typing-indicator{display:flex;align-items:center;gap:var(--s2);padding:var(--s1) 0;font-size:var(--f-sm);color:var(--text-dim);min-height:var(--s6)}
.typing-dots{display:flex;gap:3px}
.typing-dots span{width:var(--s1);height:var(--s1);border-radius:50%;background:var(--text-dim);animation:blink 1.4s infinite both}
.typing-dots span:nth-child(2){animation-delay:.2s}
.typing-dots span:nth-child(3){animation-delay:.4s}
@keyframes blink{0%,80%,100%{opacity:.3}40%{opacity:1}}

/* ═══ Input Bar ═══ */
.input-bar{background:var(--bg);border-top:1px solid var(--border);display:flex;align-items:flex-end;padding:var(--s3) var(--s6);gap:var(--s2);position:relative;flex-shrink:0;flex-wrap:wrap}
@media (min-width:1400px){.input-bar{padding:var(--s3) 40px}}
.input-bar textarea{flex:1;min-width:120px;background:var(--bg-input);border:1px solid var(--border);border-radius:var(--r-lg);padding:var(--s3) var(--s4);font-size:var(--f-md);color:var(--text);transition:border-color .2s,box-shadow .2s,background .2s;font-family:var(--font);resize:none;line-height:1.5;max-height:160px;overflow-y:auto;min-height:42px}
.input-bar textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow);background:var(--bg-hover)}
.input-bar textarea::placeholder{color:var(--text-muted)}
.send-btn{width:42px;height:42px;border-radius:var(--r-md);background:var(--accent);display:flex;align-items:center;justify-content:center;transition:all .2s;box-shadow:0 2px 8px rgba(124,109,245,.3);flex-shrink:0;margin-bottom:1px}
.send-btn:hover{transform:translateY(-1px);box-shadow:0 4px 14px rgba(124,109,245,.4)}
.send-btn:active{transform:translateY(0);box-shadow:0 1px 4px rgba(124,109,245,.3)}
.send-btn svg{width:18px;height:18px;fill:#fff}

/* ═══ Attachment UI ═══ */
.attach-btn{width:36px;height:36px;border-radius:var(--r-sm);display:flex;align-items:center;justify-content:center;transition:all var(--t-norm);color:var(--text-dim);flex-shrink:0}
.attach-btn:hover{background:var(--bg-hover);color:var(--accent)}
.attach-btn svg{width:20px;height:20px;fill:currentColor}
.attach-btn--active{color:var(--accent);background:var(--accent-dim)}
.pending-attachment{display:none;align-items:center;gap:var(--s1);padding:var(--s1) var(--s2);margin:var(--s1) var(--s6) 0;background:var(--accent-dim);border:1px solid rgba(99,102,241,.3);border-radius:var(--r-sm);font-size:var(--f-sm);color:var(--accent);max-width:calc(100% - 40px)}
.pending-attachment--visible{display:flex}
.pending-attachment__list{display:flex;flex-wrap:wrap;gap:var(--s1);flex:1;overflow:hidden}
.pending-attachment__chip{display:inline-flex;align-items:center;gap:2px;padding:1px var(--s1);background:rgba(99,102,241,.15);border-radius:var(--r-sm);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px}
.pending-attachment__chip-remove{cursor:pointer;opacity:.6;margin-left:2px;font-size:11px}
.pending-attachment__chip-remove:hover{opacity:1;color:var(--red)}
.pending-attachment__remove{width:20px;height:20px;border-radius:var(--s1);display:flex;align-items:center;justify-content:center;font-size:var(--f-base);color:var(--text-dim);background:none;border:none;cursor:pointer;transition:all var(--t-norm);flex-shrink:0}
.pending-attachment__remove:hover{color:var(--red);background:rgba(239,68,68,.15)}
.attach-error{display:none;padding:var(--s1) var(--s6);font-size:var(--f-sm);color:var(--red);max-width:calc(100% - 40px)}
.attach-error--visible{display:block}

/* ═══ Message Attachment Chip ═══ */
.msg-attachment{display:inline-flex;align-items:center;gap:var(--s1);padding:var(--s1) var(--s2);margin-top:var(--s1);background:rgba(99,102,241,.1);border:1px solid rgba(99,102,241,.2);border-radius:var(--r-sm);font-size:var(--f-sm);color:var(--accent)}
.msg-attachment__icon{font-size:var(--f-base)}
.msg-attachment__name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:220px}

/* ═══ Agent Constructor ═══ */
.constructor-overlay{position:fixed;inset:0;background:rgba(0,0,0,.6);z-index:6000;display:flex;align-items:center;justify-content:center}
.constructor-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--r-lg);padding:var(--s6);width:min(640px,90vw);max-height:85vh;display:flex;flex-direction:column;gap:var(--s4)}
.constructor-card__title{font-size:var(--f-lg);font-weight:600;color:var(--text-hi)}
.constructor-card__label{font-size:var(--f-sm);color:var(--text-dim);margin-bottom:var(--s1)}
.constructor-card__input{width:100%;padding:var(--s2) var(--s3);border:1px solid var(--border);border-radius:var(--r-sm);background:var(--bg-input);color:var(--text-hi);font-family:inherit;font-size:var(--f-base);resize:vertical}
.constructor-card__result{flex:1;overflow-y:auto;padding:var(--s3);border:1px solid var(--border);border-radius:var(--r-sm);background:var(--bg-input);font-family:'JetBrains Mono',monospace;font-size:var(--f-sm);white-space:pre-wrap;color:var(--text-mid);max-height:50vh;min-height:200px}
.constructor-card__btns{display:flex;gap:var(--s2);justify-content:flex-end;flex-wrap:wrap}
.constructor-card__loading{display:flex;align-items:center;gap:var(--s2);color:var(--text-dim);font-size:var(--f-sm);padding:var(--s4) 0}
.constructor-card__loading::before{content:'';width:16px;height:16px;border:2px solid var(--accent);border-top-color:transparent;border-radius:50%;animation:spin .8s linear infinite}

/* ═══ Global Loading Overlay ═══ */
.global-loading{display:none;position:fixed;inset:0;z-index:9000;background:rgba(0,0,0,.55);align-items:center;justify-content:center;flex-direction:column;gap:var(--s3)}
.global-loading--visible{display:flex}
.global-loading__spinner{width:36px;height:36px;border:3px solid rgba(255,255,255,.2);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}
.global-loading__text{color:#fff;font-size:var(--f-base);font-weight:500}
@keyframes spin{to{transform:rotate(360deg)}}

/* ═══ @ Autocomplete ═══ */
.autocomplete{position:absolute;bottom:100%;left:var(--s6);right:var(--s6);background:var(--bg-card);border:1px solid var(--border);border-radius:var(--r-sm);margin-bottom:var(--s1);max-height:200px;overflow-y:auto;display:none;z-index:100;box-shadow:0 -4px 20px rgba(0,0,0,.45)}
.autocomplete--visible{display:block}
.ac-item{display:flex;align-items:center;gap:var(--s2);padding:var(--s2) var(--s3);cursor:pointer;transition:background var(--t-fast)}
.ac-item:hover,.ac-item--active{background:var(--bg-hover)}
.ac-avatar{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:var(--f-sm);font-weight:700;color:#fff;flex-shrink:0}
.ac-info{display:flex;flex-direction:column}
.ac-name{font-size:var(--f-sm);font-weight:500}
.ac-role{font-size:11px;color:var(--text-dim)}

/* ═══ Right Sidebar ═══ */
.sidebar-right__title{padding:var(--s4) var(--s3) var(--s2);font-size:11px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:1px}
.sidebar-right__list{flex:1;overflow-y:auto;padding:0 var(--s2)}
.agent-card{display:flex;align-items:flex-start;gap:var(--s2);padding:var(--s2) var(--s2);border-radius:var(--r-md);transition:all var(--t-norm);cursor:pointer;border:1px solid transparent}
.agent-card--orchestrator{border-left:2px solid var(--accent);padding-left:var(--s1)}
.agent-card:hover{background:var(--bg-hover);border-color:var(--border)}
.agent-avatar{width:36px;height:36px;border-radius:var(--r-md);display:flex;align-items:center;justify-content:center;font-size:var(--s4);font-weight:700;color:#fff;position:relative;flex-shrink:0;box-shadow:0 2px 6px rgba(0,0,0,.25)}
.agent-dot{position:absolute;bottom:-2px;right:-2px;width:var(--s2);height:var(--s2);border-radius:50%;border:2px solid var(--bg-sidebar);background:var(--text-muted)}
.agent-dot--online{background:var(--green)}
.agent-dot--pulse{animation:dotPulse 1.4s infinite}
@keyframes dotPulse{0%,80%,100%{opacity:.5;transform:scale(1)}40%{opacity:1;transform:scale(1.3)}}
.agent-info{min-width:0;flex:1}
.agent-name{font-size:var(--f-base);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.agent-role{font-size:11px;color:var(--text-dim);line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin-top:2px}
.agent-model{display:flex;align-items:center;gap:var(--s1);font-size:10px;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:3px}
.agent-model__badge{font-size:9px;font-weight:700;padding:1px var(--s1);border-radius:3px;background:rgba(255,255,255,.06);color:var(--text-dim);letter-spacing:.3px;text-transform:uppercase;flex-shrink:0}
.agent-model__name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.agent-actions{display:flex;gap:var(--s1);opacity:0;transition:opacity var(--t-norm);flex-shrink:0;margin-top:2px}
.agent-card:hover .agent-actions{opacity:1}
.agent-del-btn,.agent-edit-btn{width:var(--s6);height:var(--s6);border-radius:var(--r-sm);display:flex;align-items:center;justify-content:center;font-size:var(--f-sm);color:var(--text-dim);transition:all var(--t-norm);background:none;border:none;cursor:pointer}
.agent-edit-btn:hover{background:var(--accent-dim);color:var(--accent)}
.agent-del-btn:hover{background:rgba(239,68,68,.15);color:var(--red)}
.create-agent-btn{display:flex;align-items:center;gap:var(--s2);margin:var(--s2);padding:var(--s2) var(--s3);border-radius:var(--r-md);border:1px dashed var(--border);color:var(--text-dim);font-size:var(--f-sm);font-weight:500;cursor:pointer;transition:all var(--t-norm);background:none;width:calc(100% - var(--s4))}
.create-agent-btn:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-dim)}
.create-agent-btn svg{width:var(--s4);height:var(--s4);fill:currentColor}

/* ═══ Agent Modal (Create / Edit) ═══ */
.agent-modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.6);display:flex;align-items:center;justify-content:center;z-index:1100;animation:agentFadeIn var(--t-norm) ease}
.agent-modal{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--r-lg);width:580px;max-width:92vw;max-height:90vh;overflow-y:auto;box-shadow:var(--shadow-lg);animation:agentSlideUp .2s ease}
.agent-modal__header{display:flex;align-items:center;justify-content:space-between;padding:var(--s4) var(--s6);border-bottom:1px solid var(--border);position:sticky;top:0;background:var(--bg-card);z-index:1;border-radius:var(--r-lg) var(--r-lg) 0 0}
.agent-modal__title{font-size:var(--s4);font-weight:600}
.agent-modal__close{width:28px;height:28px;border-radius:var(--r-sm);display:flex;align-items:center;justify-content:center;font-size:var(--f-lg);color:var(--text-dim);transition:all var(--t-norm);background:none;border:none;cursor:pointer}
.agent-modal__close:hover{background:var(--bg-hover);color:var(--text)}
.agent-modal__body{padding:var(--s6);display:flex;flex-direction:column;gap:var(--s4)}
.agent-modal__section{display:flex;flex-direction:column;gap:var(--s1)}
.agent-modal__section-title{font-size:11px;font-weight:600;color:var(--text-dim);text-transform:uppercase;letter-spacing:.5px;margin-bottom:var(--s1)}
.agent-modal__field{display:flex;flex-direction:column;gap:5px}
.agent-modal__label{font-size:var(--f-sm);font-weight:500;color:var(--text-dim)}
.agent-modal__input{background:var(--bg-input);border:1px solid var(--border);border-radius:var(--r-sm);padding:9px var(--s3);font-size:var(--f-base);color:var(--text);transition:border-color var(--t-norm),box-shadow var(--t-norm);font-family:inherit;width:100%;box-sizing:border-box}
.agent-modal__input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow)}
.agent-modal__textarea{background:var(--bg-input);border:1px solid var(--border);border-radius:var(--r-sm);padding:var(--s2) var(--s3);font-size:var(--f-sm);color:var(--text);transition:border-color var(--t-norm),box-shadow var(--t-norm);font-family:var(--font-mono);resize:vertical;min-height:120px;line-height:1.5;width:100%;box-sizing:border-box;display:block}
.agent-modal__textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow)}
.agent-modal__row{display:flex;gap:var(--s3)}
.agent-modal__row .agent-modal__field{flex:1}
.agent-modal__footer{display:flex;justify-content:flex-end;gap:var(--s2);padding:var(--s3) var(--s6) var(--s4);position:sticky;bottom:0;background:var(--bg-card);border-top:1px solid var(--border);border-radius:0 0 var(--r-lg) var(--r-lg)}
.agent-modal__btn{padding:var(--s2) 18px;border-radius:var(--r-sm);font-size:var(--f-sm);font-weight:500;transition:all var(--t-norm);cursor:pointer;font-family:inherit}
.agent-modal__btn--cancel{color:var(--text-dim);background:none;border:none}
.agent-modal__btn--cancel:hover{background:var(--bg-hover);color:var(--text)}
.agent-modal__btn--danger{color:var(--red);background:none;border:none;margin-right:auto}
.agent-modal__btn--danger:hover{background:rgba(239,68,68,.15)}
.agent-modal__btn--primary{background:var(--accent);color:#fff;border:none}
.agent-modal__btn--primary:hover{opacity:.88;transform:translateY(-1px)}
.agent-modal__btn--primary:active{transform:translateY(0)}
.agent-modal__btn--primary:disabled{opacity:.5;cursor:not-allowed;transform:none}
.color-input-wrap{display:flex;align-items:center;gap:var(--s2)}
.color-input-wrap input[type=color]{width:36px;height:36px;border:none;border-radius:var(--r-sm);cursor:pointer;background:none;padding:0}
.color-input-wrap input[type=color]::-webkit-color-swatch-wrapper{padding:2px}
.color-input-wrap input[type=color]::-webkit-color-swatch{border:1px solid var(--border);border-radius:var(--r-sm)}
.color-hex{font-size:var(--f-sm);color:var(--text-dim);font-family:var(--font-mono)}

/* ═══ Archetype Picker (Hire flow) ═══ */
.arch-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--s2)}
.arch-card{display:flex;align-items:flex-start;gap:var(--s2);padding:var(--s2) var(--s3);border-radius:var(--r-md);border:1px solid var(--border);cursor:pointer;transition:all var(--t-norm);background:none}
.arch-card:hover{border-color:var(--accent);background:var(--accent-dim)}
.arch-card--selected{border-color:var(--accent);background:var(--accent-dim);box-shadow:0 0 0 1px var(--accent)}
.arch-card__emoji{font-size:var(--f-xl);flex-shrink:0;margin-top:2px}
.arch-card__info{min-width:0}
.arch-card__title{font-size:var(--f-sm);font-weight:600;color:var(--text)}
.arch-card__desc{font-size:11px;color:var(--text-dim);line-height:1.3;margin-top:2px}
.arch-card__actions{display:flex;gap:2px;flex-shrink:0;margin-left:auto;opacity:0;transition:opacity var(--t-norm)}
.arch-card:hover .arch-card__actions{opacity:1}
.arch-card__btn{width:24px;height:24px;border:none;background:none;cursor:pointer;border-radius:var(--r-sm);display:flex;align-items:center;justify-content:center;font-size:14px;color:var(--text-dim);transition:all var(--t-norm)}
.arch-card__btn--edit:hover{background:var(--accent-dim);color:var(--accent)}
.arch-card__btn--delete:hover{background:rgba(239,68,68,.15);color:var(--red)}

/* ═══ Modal tabs ═══ */
.modal-tabs{display:flex;gap:2px;padding:0 var(--s6);border-bottom:1px solid var(--border);background:var(--bg-card)}
.modal-tab{padding:var(--s2) var(--s3);font-size:var(--f-sm);font-weight:500;color:var(--text-dim);cursor:pointer;border:none;background:none;border-bottom:2px solid transparent;transition:all var(--t-norm);font-family:inherit}
.modal-tab:hover{color:var(--text)}
.modal-tab--active{color:var(--accent);border-bottom-color:var(--accent)}
.modal-tab-content{display:none}
.modal-tab-content--active{display:flex;flex-direction:column;gap:var(--s3)}

/* ═══ Animations ═══ */
@keyframes agentFadeIn{from{opacity:0}to{opacity:1}}
@keyframes agentSlideUp{from{opacity:0;transform:translateY(var(--s3))}to{opacity:1;transform:none}}

/* ═══ Toast Notifications ═══ */
.toast-container{position:fixed;top:var(--s4);right:var(--s4);display:flex;flex-direction:column;gap:var(--s2);z-index:10000;pointer-events:none}
/* Solid background by default so text is always readable. Per-status hue
   layered on top. callers in app.js use 'ok' and 'success' interchangeably
   — both go green; only 'error' gets red. 'info' (rare) also green by
   request 2026-05-16. */
.toast{padding:var(--s3) var(--s4);border-radius:var(--r-md);font-size:var(--f-base);color:#fff;background:#16a34a;pointer-events:auto;animation:toastIn .25s ease,toastOut .3s ease 3.7s forwards;max-width:360px;box-shadow:var(--shadow-md);font-weight:500}
.toast--ok,.toast--success,.toast--info{background:#16a34a}
.toast--error{background:#dc2626}
@keyframes toastIn{from{transform:translateX(100%);opacity:0}to{transform:none;opacity:1}}
@keyframes toastOut{to{transform:translateX(100%);opacity:0}}

/* ═══ Confirm/Prompt Dialog ═══ */
.dialog-overlay{position:fixed;inset:0;background:rgba(0,0,0,.6);display:flex;align-items:center;justify-content:center;z-index:9000;animation:agentFadeIn var(--t-norm)}
.dialog-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--r-lg);width:400px;max-width:90vw;padding:var(--s6);box-shadow:var(--shadow-lg);animation:agentSlideUp .2s ease}
.dialog-card__msg{font-size:var(--f-md);margin-bottom:var(--s4);line-height:1.5;color:var(--text)}
.dialog-card__input{width:100%;background:var(--bg-input);border:1px solid var(--border);border-radius:var(--r-sm);padding:var(--s2) var(--s3);font-size:var(--f-base);color:var(--text);margin-bottom:var(--s4);font-family:inherit;transition:border-color var(--t-norm),box-shadow var(--t-norm)}
.dialog-card__input:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px var(--accent-glow)}
.dialog-card__btns{display:flex;justify-content:flex-end;gap:var(--s2)}
.dialog-card__btn{padding:var(--s2) var(--s4);border-radius:var(--r-sm);font-size:var(--f-base);font-weight:500;cursor:pointer;transition:all var(--t-norm);font-family:inherit;border:none}
.dialog-card__btn--cancel{color:var(--text-dim);background:none}
.dialog-card__btn--cancel:hover{background:var(--bg-hover)}
.dialog-card__btn--ok{background:var(--accent);color:#fff}
.dialog-card__btn--ok:hover{opacity:.88}
.dialog-card__btn--danger{background:var(--red);color:#fff}
.dialog-card__btn--danger:hover{opacity:.88}

/* ═══ Inline Editable ═══ */
.inline-edit{cursor:pointer;border:1px solid transparent;border-radius:var(--r-sm);padding:1px var(--s1);transition:border-color var(--t-norm)}
.inline-edit:hover{border-color:var(--border)}
.inline-edit[contenteditable="true"]{border-color:var(--accent);background:var(--bg-input);outline:none;cursor:text}

/* ═══ Knowledge Base ═══ */
.kb-panel{display:none;flex:1;overflow-y:auto;padding:var(--s6);flex-direction:column;gap:var(--s4)}
.kb-panel--visible{display:flex}
.kb-header{display:flex;align-items:center;justify-content:space-between;gap:var(--s3)}
.kb-header__title{font-size:20px;font-weight:700;color:var(--text)}
.kb-header__actions{display:flex;gap:var(--s2);align-items:center}
.kb-search{background:var(--bg-input);border:1px solid var(--border);border-radius:var(--r-sm);padding:var(--s2) var(--s3);font-size:var(--f-sm);color:var(--text);width:220px;transition:border-color var(--t-norm),box-shadow var(--t-norm)}
.kb-search:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow)}
.kb-search::placeholder{color:var(--text-muted)}
.kb-add-btn{display:flex;align-items:center;gap:var(--s1);padding:var(--s2) var(--s3);border-radius:var(--r-sm);background:var(--accent);color:#fff;font-size:var(--f-sm);font-weight:500;cursor:pointer;transition:opacity var(--t-norm),transform var(--t-norm);border:none}
.kb-add-btn:hover{opacity:.88;transform:translateY(-1px)}
.kb-add-btn:active{transform:translateY(0)}
.kb-add-btn svg{width:var(--f-base);height:var(--f-base);fill:#fff}

.kb-categories{display:flex;gap:var(--s1);flex-wrap:wrap}
.kb-cat{padding:var(--s1) var(--s3);font-size:var(--f-sm);font-weight:500;border-radius:var(--r-sm);cursor:pointer;transition:all var(--t-norm);border:1px solid var(--border);color:var(--text-dim);background:none}
.kb-cat:hover{border-color:var(--accent);color:var(--accent)}
.kb-cat--active{background:var(--accent-dim);border-color:var(--accent);color:var(--accent)}
.kb-cat__count{font-size:10px;color:var(--text-muted);margin-left:var(--s1)}

.kb-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--s3);flex:1;align-content:start}
.kb-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--r-md);padding:var(--s4);cursor:pointer;transition:all var(--t-norm);display:flex;flex-direction:column;gap:var(--s2)}
.kb-card:hover{border-color:rgba(124,109,245,.3);background:var(--bg-hover);box-shadow:0 2px 12px rgba(124,109,245,.06)}
.kb-card__header{display:flex;align-items:center;justify-content:space-between;gap:var(--s2)}
.kb-card__title{font-size:var(--f-base);font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1}
.kb-card__actions{display:flex;gap:var(--s1);opacity:0;transition:opacity var(--t-norm)}
.kb-card:hover .kb-card__actions{opacity:1}
.kb-card__action{width:var(--s6);height:var(--s6);border-radius:var(--r-sm);display:flex;align-items:center;justify-content:center;font-size:var(--f-sm);color:var(--text-dim);background:none;border:none;cursor:pointer;transition:all var(--t-norm)}
.kb-card__action:hover{background:var(--bg-hover);color:var(--text)}
.kb-card__action--delete:hover{background:rgba(239,68,68,.15);color:var(--red)}
.kb-card__preview{font-size:var(--f-sm);color:var(--text-dim);line-height:1.45;max-height:60px;overflow:hidden;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical}
.kb-card__tags{display:flex;gap:var(--s1);flex-wrap:wrap;margin-top:auto}
.kb-tag{font-size:10px;font-weight:500;padding:2px var(--s2);border-radius:var(--s1);background:var(--accent-dim);color:var(--accent)}
.kb-card__meta{font-size:11px;color:var(--text-muted);display:flex;justify-content:space-between}

.kb-empty{text-align:center;padding:60px var(--s6);color:var(--text-dim)}
.kb-empty__icon{font-size:48px;margin-bottom:var(--s3);opacity:.35}
.kb-empty__text{font-size:var(--f-base);margin-bottom:var(--s1)}
.kb-empty__hint{font-size:var(--f-sm);color:var(--text-muted)}

/* ═══ KB Editor Modal ═══ */
.kb-modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.6);display:flex;align-items:center;justify-content:center;z-index:1100;animation:agentFadeIn var(--t-norm) ease}
.kb-modal{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--r-lg);width:600px;max-width:90vw;max-height:85vh;display:flex;flex-direction:column;box-shadow:var(--shadow-lg);animation:agentSlideUp .2s ease}
.kb-modal__header{display:flex;align-items:center;justify-content:space-between;padding:var(--s4) var(--s6);border-bottom:1px solid var(--border);flex-shrink:0}
.kb-modal__title{font-size:var(--s4);font-weight:600}
.kb-modal__close{width:28px;height:28px;border-radius:var(--r-sm);display:flex;align-items:center;justify-content:center;font-size:var(--f-lg);color:var(--text-dim);transition:all var(--t-norm);background:none;border:none;cursor:pointer}
.kb-modal__close:hover{background:var(--bg-hover);color:var(--text)}
.kb-modal__body{padding:var(--s6);display:flex;flex-direction:column;gap:var(--s3);overflow-y:auto;flex:1}
.kb-modal__field{display:flex;flex-direction:column;gap:5px}
.kb-modal__label{font-size:var(--f-sm);font-weight:500;color:var(--text-dim);text-transform:uppercase;letter-spacing:.3px}
.kb-modal__input{background:var(--bg-input);border:1px solid var(--border);border-radius:var(--r-sm);padding:9px var(--s3);font-size:var(--f-base);color:var(--text);transition:border-color var(--t-norm),box-shadow var(--t-norm);font-family:inherit}
.kb-modal__input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow)}
.kb-modal__input--area{resize:vertical;min-height:120px;line-height:1.5}
.kb-modal__row{display:flex;gap:var(--s3)}
.kb-modal__row .kb-modal__field{flex:1}
.kb-modal__footer{display:flex;justify-content:flex-end;gap:var(--s2);padding:var(--s3) var(--s6) var(--s4);flex-shrink:0;border-top:1px solid var(--border)}
.kb-modal__btn{padding:var(--s2) 18px;border-radius:var(--r-sm);font-size:var(--f-sm);font-weight:500;transition:all var(--t-norm);cursor:pointer;font-family:inherit}
.kb-modal__btn--cancel{color:var(--text-dim);background:none;border:none}
.kb-modal__btn--cancel:hover{background:var(--bg-hover);color:var(--text)}
.kb-modal__btn--primary{background:var(--accent);color:#fff;border:none}
.kb-modal__btn--primary:hover{opacity:.88;transform:translateY(-1px)}
.kb-modal__btn--primary:active{transform:translateY(0)}
.kb-modal__btn--primary:disabled{opacity:.5;cursor:not-allowed;transform:none}

/* ═══ Tab content panels ═══ */
.tab-placeholder{display:none;flex:1;align-items:center;justify-content:center;color:var(--text-dim);font-size:var(--s4);flex-direction:column;gap:var(--s2)}
.tab-placeholder--visible{display:flex}
.tab-placeholder__icon{font-size:48px;opacity:.35}

/* ═══ Focus-visible for keyboard nav ═══ */
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--r-sm)}
button:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

/* ═══ Image generation (RFC-008) ═══ */
.img-model-badge{font-size:var(--f-sm);color:var(--text-dim);background:var(--bg-input);padding:4px var(--s2);border-radius:var(--r-sm);border:1px solid var(--border);font-family:ui-monospace,Menlo,Consolas,monospace}
.img-gen-form{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--r-md);padding:var(--s4);margin-bottom:var(--s4);display:flex;flex-direction:column;gap:var(--s3)}
.img-gen-form__label{font-size:var(--f-sm);font-weight:500;color:var(--text-dim);text-transform:uppercase;letter-spacing:.3px;margin-bottom:4px}
.img-gen-form__textarea{background:var(--bg-input);border:1px solid var(--border);border-radius:var(--r-sm);padding:var(--s2) var(--s3);font-size:var(--f-base);color:var(--text);font-family:inherit;resize:vertical;min-height:64px;line-height:1.5}
.img-gen-form__textarea:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px var(--accent-glow)}
.img-gen-form__row{display:flex;gap:var(--s3);align-items:flex-end;flex-wrap:wrap}
.img-gen-form__field{display:flex;flex-direction:column;min-width:140px;flex:1}
.img-gen-form__field--btn{flex:0 0 auto;min-width:unset}
.img-progress{display:flex;align-items:center;gap:var(--s3);padding:var(--s3) var(--s4);background:var(--bg-card);border:1px solid var(--border);border-radius:var(--r-md);margin-bottom:var(--s3);color:var(--text-dim);font-size:var(--f-sm)}
.img-progress__spinner{width:16px;height:16px;border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:imgSpin .8s linear infinite;flex-shrink:0}
@keyframes imgSpin{to{transform:rotate(360deg)}}
.img-gen-result-section{margin-bottom:var(--s5)}
.img-gen-result-section__title{font-size:var(--f-sm);font-weight:600;color:var(--text-dim);text-transform:uppercase;letter-spacing:.3px;margin-bottom:var(--s2)}
.img-result-grid{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--s3)}
.img-result-grid .img-card{width:min(360px,100%)}
.img-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--r-md);overflow:hidden;display:flex;flex-direction:column;transition:transform var(--t-norm),box-shadow var(--t-norm)}
.img-card:hover{transform:translateY(-1px);box-shadow:var(--shadow-sm)}
.img-card__img{width:100%;aspect-ratio:1/1;object-fit:cover;display:block;background:#0f0f0f;cursor:zoom-in}
.img-card__body{padding:var(--s2) var(--s3);display:flex;flex-direction:column;gap:4px;font-size:var(--f-sm)}
.img-card__meta{color:var(--text-dim);font-size:12px;line-height:1.35;max-height:2.7em;overflow:hidden;text-overflow:ellipsis}
.img-card__rev-toggle{background:none;border:none;color:var(--text-dim);font-size:11px;cursor:pointer;padding:0;text-align:left}
.img-card__rev-toggle:hover{color:var(--accent)}
.img-card__rev{font-size:12px;line-height:1.45;color:var(--text-dim);background:var(--bg-input);padding:var(--s2);border-radius:var(--r-sm);margin-top:4px;white-space:pre-wrap;word-wrap:break-word;max-height:240px;overflow-y:auto}
.img-card__actions{display:flex;gap:6px;padding:0 var(--s3) var(--s3);flex-wrap:wrap}
.img-card__btn{flex:1;min-width:0;padding:6px 10px;font-size:12px;background:var(--bg-input);border:1px solid var(--border);border-radius:var(--r-sm);color:var(--text);cursor:pointer;transition:background var(--t-norm),border-color var(--t-norm)}
.img-card__btn:hover{background:var(--bg-hover);border-color:var(--accent)}
.img-card__btn--primary{background:var(--accent);color:#fff;border-color:var(--accent)}
.img-card__btn--primary:hover{opacity:.88}
.img-edit-box{grid-column:1/-1;background:var(--bg-card);border:1px dashed var(--accent);border-radius:var(--r-md);padding:var(--s3);display:flex;flex-direction:column;gap:var(--s2);margin-top:var(--s2)}
.img-edit-box__header{display:flex;align-items:center;gap:var(--s2);font-size:var(--f-sm);color:var(--text-dim)}
.img-edit-box__thumb{width:32px;height:32px;border-radius:var(--r-sm);object-fit:cover;background:#0f0f0f}
.img-edit-box__textarea{background:var(--bg-input);border:1px solid var(--border);border-radius:var(--r-sm);padding:var(--s2) var(--s3);font-size:var(--f-base);color:var(--text);font-family:inherit;resize:vertical;min-height:56px;line-height:1.45}
.img-edit-box__textarea:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px var(--accent-glow)}
.img-edit-box__actions{display:flex;gap:var(--s2);justify-content:flex-end}
.img-history-list{display:flex;flex-direction:column;gap:var(--s2)}
.img-history-row{display:flex;align-items:center;gap:var(--s3);background:var(--bg-card);border:1px solid var(--border);border-radius:var(--r-sm);padding:var(--s2) var(--s3);font-size:var(--f-sm)}
.img-history-row__thumb{width:48px;height:48px;object-fit:cover;border-radius:var(--r-sm);background:#0f0f0f;flex-shrink:0}
.img-history-row__meta{flex:1;min-width:0}
.img-history-row__prompt{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text)}
.img-history-row__sub{font-size:12px;color:var(--text-dim);margin-top:2px}
.img-history-row__btns{display:flex;gap:6px}
.img-history-row__btn{padding:4px 10px;font-size:12px;background:var(--bg-input);border:1px solid var(--border);border-radius:var(--r-sm);color:var(--text);cursor:pointer}
.img-history-row__btn:hover{background:var(--bg-hover)}
.img-viewer-overlay{position:fixed;inset:0;background:rgba(0,0,0,.85);z-index:500;display:flex;align-items:center;justify-content:center;cursor:zoom-out;animation:imgFade .15s ease}
@keyframes imgFade{from{opacity:0}to{opacity:1}}
.img-viewer-overlay img{max-width:92vw;max-height:92vh;box-shadow:var(--shadow-lg);border-radius:var(--r-sm)}
.img-disabled-banner{background:#2a1f10;border:1px solid #8a6b20;color:#ffd38b;padding:var(--s3) var(--s4);border-radius:var(--r-md);margin-bottom:var(--s4);font-size:var(--f-sm);line-height:1.5}
.settings-section__desc{font-size:var(--f-sm);color:var(--text-dim);line-height:1.55;margin:0 0 var(--s3);max-width:720px}
.settings-section__desc code{background:var(--bg-input);padding:1px 6px;border-radius:var(--r-sm);font-size:0.92em}
.settings-row__check{display:flex;align-items:center;gap:var(--s2);cursor:pointer;font-size:var(--f-sm);color:var(--text-dim)}
.settings-row__check input{transform:scale(1.15);cursor:pointer}
.settings-row__sub{font-size:12px;color:var(--text-dim)}
.settings-row--footer{justify-content:flex-end;gap:var(--s2);border-bottom:none}
.cleanup-result{margin-top:var(--s3);padding:var(--s3);background:var(--bg-input);border:1px solid var(--border);border-radius:var(--r-sm);font-size:var(--f-sm)}
.cleanup-result__bucket{margin-bottom:var(--s2)}
.cleanup-result__bucket-title{font-weight:600;color:var(--text);margin-bottom:4px}
.cleanup-result__counts{color:var(--text-dim);font-size:12px}
.cleanup-result__samples{margin-top:var(--s1);padding-left:var(--s3);color:var(--text-dim);font-size:11px;font-family:var(--font-mono);max-height:160px;overflow-y:auto;white-space:nowrap}
.cleanup-result__samples li{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;list-style:none;padding:1px 0}
.img-gen-history-header{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--s3);flex-wrap:wrap;margin-bottom:var(--s2)}
.img-gen-history-filters{display:flex;gap:var(--s2);align-items:center;flex-wrap:wrap}
.img-hist-filter__q{min-width:220px}
.img-hist-filter__date{width:150px}
.img-history-footer{display:flex;justify-content:center;padding:var(--s3);color:var(--text-dim);font-size:var(--f-sm)}
.img-history-footer__btn{background:var(--bg-input);border:1px solid var(--border);color:var(--text);padding:var(--s2) var(--s4);border-radius:var(--r-sm);cursor:pointer;font-size:var(--f-sm)}
.img-history-footer__btn:hover{background:var(--bg-hover);border-color:var(--accent)}
.img-history-row__btn--danger{color:#fca5a5}
.img-history-row__btn--danger:hover{background:rgba(220,38,38,.15);color:#fff}
.img-cap-pills{display:flex;gap:6px;flex-wrap:wrap}
.img-cap-pill{font-size:11px;padding:2px 8px;border-radius:999px;background:var(--bg-input);border:1px solid var(--border);color:var(--text-dim);line-height:1.5;white-space:nowrap}
.img-cap-pill--ok{background:rgba(34,197,94,.12);border-color:rgba(34,197,94,.4);color:#86efac}
.img-cap-pill--off{background:rgba(127,127,127,.12);color:var(--text-dim);text-decoration:line-through}
.img-gen-form__source{background:var(--bg-input);border:2px dashed var(--border);border-radius:var(--r-sm);padding:var(--s3) var(--s4);transition:border-color var(--t-norm),background var(--t-norm)}
.img-gen-form__source.is-dragover{border-color:var(--accent);background:rgba(var(--accent-rgb,79,70,229),0.08)}
.img-source__empty{font-size:var(--f-sm);color:var(--text-dim);text-align:center;padding:var(--s2) 0}
.img-source__pick{background:none;border:none;color:var(--accent);text-decoration:underline;cursor:pointer;padding:0;font:inherit}
.img-source__pick:hover{opacity:.85}
.img-source__preview{display:flex;flex-direction:column;gap:var(--s2)}
.img-source__list{display:flex;flex-wrap:wrap;gap:var(--s2)}
.img-source__chip{position:relative;width:64px;height:64px;border-radius:var(--r-sm);overflow:hidden;background:#0f0f0f;flex-shrink:0;border:1px solid var(--border)}
.img-source__chip img{width:100%;height:100%;object-fit:cover;display:block}
.img-source__chip--loading::after{content:"";position:absolute;inset:0;background:rgba(0,0,0,.45);background-image:linear-gradient(90deg,transparent 0,rgba(255,255,255,.15) 50%,transparent 100%);background-size:200% 100%;animation:imgChipShimmer 1.4s infinite linear}
@keyframes imgChipShimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}
.img-source__chip-x{position:absolute;top:2px;right:2px;width:18px;height:18px;border-radius:50%;border:none;background:rgba(0,0,0,.7);color:#fff;font-size:12px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0}
.img-source__chip-x:hover{background:rgba(220,38,38,.9)}
.img-source__footer{display:flex;align-items:center;gap:var(--s2);flex-wrap:wrap}
.img-source__sub{font-size:12px;color:var(--accent);flex:1;min-width:0}
.img-source__add{background:var(--bg-card);border:1px dashed var(--border);color:var(--text);padding:var(--s1) var(--s2);border-radius:var(--r-sm);font-size:var(--f-sm);cursor:pointer}
.img-source__add:hover{border-color:var(--accent);color:var(--accent)}
.img-source__clear{background:none;border:none;color:var(--text-dim);font-size:var(--f-sm);cursor:pointer;padding:var(--s1) var(--s2);text-decoration:underline}
.img-source__clear:hover{color:var(--text)}
