    .editor-modal {
      display:none;
      position:fixed;
      inset:0;
      background:rgba(0,0,0,.72);
      z-index:1200;
      align-items:center;
      justify-content:center;
      padding:18px;
    }
    .editor-card {
      width:min(1100px, 100%);
      max-height:90vh;
      background:linear-gradient(180deg, rgba(17,26,43,.98), rgba(12,18,30,.99));
      border:1px solid rgba(49,67,95,.8);
      border-radius:24px;
      box-shadow:0 30px 100px rgba(0,0,0,.55);
      overflow:hidden;
      display:flex;
      flex-direction:column;
      backdrop-filter:blur(18px);
    }
    .editor-head {
      display:flex;
      align-items:center;
      justify-content:space-between;
      gap:12px;
      padding:16px 18px;
      border-bottom:1px solid rgba(35,49,73,.8);
    }
    .editor-title {
      display:flex;
      flex-direction:column;
      gap:4px;
      min-width:0;
    }
    .editor-title h3 {
      font-size:1rem;
      white-space:nowrap;
      overflow:hidden;
      text-overflow:ellipsis;
    }
    .editor-title p {
      font-size:.75rem;
      color:var(--text2);
    }
    .editor-actions { display:flex; gap:8px; align-items:center; flex-shrink:0; }
    .editor-btn {
      border:none;
      border-radius:999px;
      padding:8px 14px;
      font-size:.8rem;
      font-weight:700;
      cursor:pointer;
      transition:opacity .15s, transform .12s, background .15s;
    }
    .editor-btn:hover { transform:translateY(-1px); }
    .editor-btn.primary { background:linear-gradient(135deg,var(--accent),#0ea5b7); color:#041018; }
    .editor-btn.secondary { background:rgba(255,255,255,.04); color:var(--text2); border:1px solid var(--border); }
    .editor-btn.danger { background:rgba(251,113,133,.1); color:#ffb8c5; border:1px solid rgba(251,113,133,.24); }
    .editor-icon-btn {
      width:38px;
      height:36px;
      padding:0;
      display:inline-flex;
      align-items:center;
      justify-content:center;
      font-size:1rem;
    }
    .editor-icon-btn:disabled {
      opacity:.38;
      cursor:not-allowed;
      transform:none;
    }
    .editor-body { display:flex; flex-direction:column; gap:10px; padding:16px 18px 18px; flex:1; min-height:0; }
    .editor-meta {
      display:flex;
      flex-wrap:wrap;
      gap:8px;
      align-items:center;
      color:var(--text2);
      font-size:.75rem;
    }
    .editor-meta code {
      background:rgba(255,255,255,.05);
      border:1px solid var(--border);
      padding:2px 7px;
      border-radius:999px;
      color:var(--text);
    }
    .editor-textarea {
      width:100%;
      flex:1;
      min-height:360px;
      resize:vertical;
      background:rgba(4,7,14,.9);
      border:1px solid var(--border);
      border-radius:18px;
      color:var(--text);
      padding:14px 16px;
      font-family:'Cascadia Code','Fira Mono',monospace;
      font-size:.85rem;
      line-height:1.6;
      outline:none;
      white-space:pre;
      tab-size:2;
    }
    .editor-textarea:focus { border-color:rgba(34,211,238,.55); box-shadow:0 0 0 4px rgba(34,211,238,.12); }
    .editor-foot {
      display:flex;
      justify-content:space-between;
      align-items:center;
      gap:10px;
      color:var(--text2);
      font-size:.74rem;
      flex-wrap:wrap;
    }
    .editor-status { color:var(--text2); }
    .editor-status.ok { color:var(--success); }
    .editor-status.err { color:var(--danger); }
    .release-card { width:min(760px, 100%); height:min(82dvh, 760px); }
    .release-body {
      display:flex;
      flex-direction:column;
      flex:1;
      gap:14px;
      min-height:0;
      padding:16px 18px 18px;
    }
.release-current {
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:16px;
  padding:14px 16px;
  border:1px solid rgba(52,211,153,.34);
  border-radius:16px;
  background:linear-gradient(135deg, rgba(52,211,153,.16), rgba(34,211,238,.08));
}

.release-current > div:first-child {
  display:flex;
  flex-direction:column;
  gap:4px;
  min-width:0;
}

.release-current-label {
  color:#cbd5e1;
  font-size:.72rem;
  text-transform:uppercase;
  letter-spacing:.08em;
}

.release-current strong {
  color:#a7f3d0;
  font-size:1.12rem;
  line-height:1.4;
  word-break:break-word;
}

.release-current-meta {
  display:flex;
  flex-direction:column;
  align-items:flex-end;
  gap:4px;
  color:#cbd5e1;
  font-size:.74rem;
  line-height:1.45;
  text-align:right;
}

/* สำคัญ: ให้ list มีพื้นที่ scroll และไม่บี้ card */
.release-list {
  flex:1 1 auto;
  min-height:0;
  overflow-y:auto;
  overflow-x:hidden;
  display:flex;
  flex-direction:column;
  gap:10px;
  padding-right:4px;
}

/* สำคัญที่สุด: กัน details ถูก flex บีบ */
.release-item {
  flex:0 0 auto;
  height:auto;
  max-height:none;
  min-height:auto;
  border:1px solid rgba(148,163,184,.26);
  border-radius:14px;
  background:rgba(15,23,42,.78);
  overflow:hidden;
}

.release-item[open] {
  height:auto;
  max-height:none;
  border-color:rgba(34,211,238,.48);
  background:rgba(15,23,42,.92);
}

.release-item summary {
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:14px;
  padding:15px 16px;
  cursor:pointer;
  list-style:none;
  user-select:none;
}

.release-item summary::-webkit-details-marker {
  display:none;
}

.release-item-title {
  display:flex;
  flex:1 1 auto;
  min-width:0;
  flex-direction:column;
  gap:5px;
}

.release-item-title strong {
  color:#f8fafc;
  font-size:.92rem;
  font-weight:700;
  line-height:1.5;
  white-space:normal;
  word-break:break-word;
  overflow-wrap:anywhere;
}

.release-item-title span {
  color:#93c5fd;
  font-size:.74rem;
  line-height:1.45;
  white-space:normal;
  word-break:break-word;
  overflow-wrap:anywhere;
}

.release-item-date {
  flex:0 0 auto;
  max-width:140px;
  color:#bae6fd;
  font-size:.72rem;
  line-height:1.45;
  text-align:right;
  white-space:normal;
  word-break:break-word;
  overflow-wrap:anywhere;
}

/* สำคัญ: อย่าให้ detail ถูก fix height */
.release-item-detail {
  height:auto;
  max-height:none;
  overflow:visible;
  display:flex;
  flex-direction:column;
  gap:10px;
  padding:12px 16px 16px;
  border-top:1px solid rgba(148,163,184,.22);
  color:#d1d5db;
  font-size:.8rem;
  line-height:1.7;
}

.release-item-detail code {
  align-self:flex-start;
  max-width:100%;
  margin-top:0;
  padding:4px 8px;
  border:1px solid rgba(34,211,238,.32);
  border-radius:7px;
  color:#67e8f9;
  background:rgba(8,47,73,.36);
  font-size:.72rem;
  line-height:1.5;
  white-space:normal;
  word-break:break-word;
  overflow-wrap:anywhere;
}

.release-item-detail span {
  color:#cbd5e1;
  font-size:.76rem;
  line-height:1.55;
}

.release-item-detail p {
  margin:0;
  color:#e5e7eb;
  white-space:pre-wrap;
  word-break:break-word;
  overflow-wrap:anywhere;
}

.release-empty {
  padding:24px;
  color:#cbd5e1;
  text-align:center;
}
    .compose-card { width:min(820px, 100%); height:min(78dvh, 720px); }
    .compose-system-panel {
      flex:0 0 auto;
      display:flex;
      flex-direction:column;
      gap:9px;
      padding:12px;
      border:1px solid rgba(168,85,247,.28);
      border-radius:16px;
      background:linear-gradient(135deg, rgba(168,85,247,.10), rgba(34,211,238,.04));
    }
    .compose-system-head {
      display:flex;
      align-items:center;
      justify-content:space-between;
      gap:12px;
    }
    .compose-system-copy {
      display:flex;
      flex-direction:column;
      gap:3px;
      min-width:0;
    }
    .compose-system-copy strong {
      color:#e9d5ff;
      font-size:.86rem;
    }
    .compose-system-copy span {
      color:var(--text2);
      font-size:.72rem;
      line-height:1.4;
    }
    .compose-system-actions {
      display:flex;
      align-items:center;
      gap:8px;
      flex:0 0 auto;
    }
    .compose-system-textarea {
      flex:0 0 auto;
      min-height:104px;
      max-height:180px;
      border-radius:13px;
      padding:11px 13px;
      font-family:var(--font);
      font-size:.9rem;
      line-height:1.5;
      white-space:pre-wrap;
    }
    .compose-textarea {
      min-height:220px;
      font-family:var(--font);
      font-size:1rem;
      line-height:1.6;
      white-space:pre-wrap;
    }
    .template-card { width:min(980px, 100%); height:min(82dvh, 760px); }
    .template-body {
      display:grid;
      grid-template-columns:minmax(220px, 32%) minmax(0, 1fr);
      gap:14px;
      padding:16px 18px 18px;
      min-height:0;
      flex:1;
    }
    .template-list {
      min-height:0;
      overflow:auto;
      border:1px solid var(--border);
      border-radius:14px;
      background:rgba(4,7,14,.35);
      padding:8px;
      display:flex;
      flex-direction:column;
      gap:6px;
    }
    .template-empty {
      color:var(--text2);
      font-size:.82rem;
      padding:14px;
      text-align:center;
    }
    .template-row {
      width:100%;
      min-width:0;
      text-align:left;
      border:1px solid transparent;
      border-radius:10px;
      background:rgba(255,255,255,.03);
      color:var(--text);
      padding:9px 10px;
      cursor:pointer;
      display:flex;
      flex-direction:column;
      gap:4px;
    }
    .template-row:hover,
    .template-row.active {
      border-color:rgba(34,211,238,.34);
      background:rgba(34,211,238,.07);
    }
    .template-row-title {
      font-size:.84rem;
      font-weight:750;
      overflow:hidden;
      text-overflow:ellipsis;
      white-space:nowrap;
    }
    .template-row-preview {
      color:var(--text2);
      font-size:.72rem;
      line-height:1.35;
      overflow:hidden;
      display:-webkit-box;
      -webkit-line-clamp:2;
      -webkit-box-orient:vertical;
    }
    .template-editor {
      min-width:0;
      min-height:0;
      display:flex;
      flex-direction:column;
      gap:10px;
    }
    .template-field {
      display:flex;
      flex-direction:column;
      gap:6px;
      color:var(--text2);
      font-size:.76rem;
      min-height:0;
    }
    .template-field input {
      background:rgba(4,7,14,.9);
      border:1px solid var(--border);
      border-radius:12px;
      color:var(--text);
      padding:10px 12px;
      outline:none;
    }
    .template-field input:focus { border-color:rgba(34,211,238,.55); box-shadow:0 0 0 3px rgba(34,211,238,.10); }
    .template-content-field { flex:1; }
    .template-textarea {
      min-height:240px;
      font-family:var(--font);
      font-size:.92rem;
      white-space:pre-wrap;
    }
    .template-editor-actions {
      display:flex;
      align-items:center;
      justify-content:space-between;
      gap:10px;
      flex-wrap:wrap;
    }

    .share-card { width:min(760px, 100%); }
    .share-body { gap:14px; }
    .share-create {
      display:flex;
      flex-direction:column;
      gap:10px;
      padding:14px;
      border:1px solid var(--border);
      border-radius:14px;
      background:rgba(255,255,255,.02);
    }
    .share-create-row { display:flex; gap:10px; flex-wrap:wrap; }
    .share-label {
      display:flex;
      flex-direction:column;
      gap:4px;
      font-size:.72rem;
      color:var(--text2);
      flex:1;
      min-width:160px;
    }
    .share-label input,
    .share-label select {
      background:rgba(4,7,14,.9);
      border:1px solid var(--border);
      border-radius:10px;
      color:var(--text);
      padding:8px 10px;
      font-size:.82rem;
      outline:none;
    }
    .share-label input:focus,
    .share-label select:focus { border-color:rgba(34,211,238,.55); box-shadow:0 0 0 3px rgba(34,211,238,.1); }
    .share-create-actions { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
    .share-list-wrap {
      display:flex;
      flex-direction:column;
      gap:8px;
      flex:1;
      min-height:0;
    }
    .share-list-header {
      display:flex;
      justify-content:space-between;
      font-size:.74rem;
      color:var(--text2);
      padding:0 4px;
    }
    .share-list { display:flex; flex-direction:column; gap:8px; overflow-y:auto; max-height:46vh; padding-right:4px; }
    .share-item {
      display:flex;
      flex-direction:column;
      gap:6px;
      padding:10px 12px;
      border:1px solid var(--border);
      border-radius:12px;
      background:rgba(255,255,255,.02);
    }
    .share-item.expired { opacity:.6; }
    .share-item-top { display:flex; gap:8px; justify-content:space-between; align-items:center; flex-wrap:wrap; }
    .share-item-label { font-weight:600; color:var(--text); font-size:.85rem; word-break:break-word; }
    .share-item-label .muted { color:var(--text2); font-weight:400; font-style:italic; }
    .share-item-meta { display:flex; gap:8px; flex-wrap:wrap; font-size:.7rem; color:var(--text2); }
    .share-item-meta .pill {
      padding:2px 8px;
      border-radius:999px;
      background:rgba(255,255,255,.05);
      border:1px solid var(--border);
    }
    .share-item-meta .pill.warn { color:#ffd6a5; border-color:rgba(251,191,36,.4); }
    .share-item-meta .pill.bad { color:#ffb8c5; border-color:rgba(251,113,133,.4); }
    .share-item-meta .pill.ok { color:#a5f3c5; border-color:rgba(74,222,128,.3); }
    .share-item-url {
      font-family:'Cascadia Code','Fira Mono',monospace;
      font-size:.72rem;
      color:var(--text2);
      background:rgba(4,7,14,.7);
      border:1px solid var(--border);
      border-radius:8px;
      padding:6px 8px;
      word-break:break-all;
    }
    .share-item-actions { display:flex; gap:6px; flex-wrap:wrap; }
    .share-empty { color:var(--text2); font-size:.78rem; padding:16px; text-align:center; }

    .preview-modal {
      display:none;
      position:fixed;
      inset:0;
      background:transparent;
      z-index:1250;
      align-items:flex-start;
      justify-content:flex-end;
      padding:74px 16px 16px;
      pointer-events:none;
    }
    .preview-card {
      position:absolute;
      width:min(760px, calc(100vw - var(--sidebar) - 48px));
      min-width:420px;
      height:min(760px, calc(100dvh - 92px));
      background:linear-gradient(180deg, rgba(17,26,43,.98), rgba(12,18,30,.99));
      border:1px solid rgba(49,67,95,.8);
      border-radius:18px;
      box-shadow:0 24px 90px rgba(0,0,0,.48);
      overflow:hidden;
      display:flex;
      flex-direction:column;
      backdrop-filter:blur(18px);
      pointer-events:auto;
    }
    .preview-head {
      display:flex;
      align-items:center;
      justify-content:space-between;
      gap:12px;
      padding:16px 18px;
      border-bottom:1px solid rgba(35,49,73,.8);
      cursor:grab;
      user-select:none;
      touch-action:none;
    }
    .preview-card.dragging .preview-head {
      cursor:grabbing;
    }
    .preview-resize-handle {
      position:absolute;
      right:0;
      bottom:0;
      width:22px;
      height:22px;
      cursor:nwse-resize;
      z-index:2;
      touch-action:none;
    }
    .preview-resize-handle::before {
      content:'';
      position:absolute;
      right:6px;
      bottom:6px;
      width:10px;
      height:10px;
      border-right:2px solid rgba(147,164,189,.72);
      border-bottom:2px solid rgba(147,164,189,.72);
      border-radius:1px;
    }
    .preview-card.resizing .preview-resize-handle::before {
      border-color:var(--accent);
    }
    .preview-title {
      display:flex;
      flex-direction:column;
      gap:4px;
      min-width:0;
    }
    .preview-title h3 {
      font-size:1rem;
      white-space:nowrap;
      overflow:hidden;
      text-overflow:ellipsis;
    }
    .preview-title p {
      font-size:.75rem;
      color:var(--text2);
    }
    .preview-actions { display:flex; gap:8px; align-items:center; flex-shrink:0; }
    .preview-btn {
      border:none;
      border-radius:999px;
      padding:8px 14px;
      font-size:.8rem;
      font-weight:700;
      cursor:pointer;
      transition:opacity .15s, transform .12s, background .15s;
      text-decoration:none;
      display:inline-flex;
      align-items:center;
      justify-content:center;
    }
    .preview-btn:hover { transform:translateY(-1px); }
    .preview-btn.primary { background:linear-gradient(135deg,var(--accent),#0ea5b7); color:#041018; }
    .preview-btn.secondary { background:rgba(255,255,255,.04); color:var(--text2); border:1px solid var(--border); }
    .preview-body {
      display:flex;
      flex-direction:column;
      gap:10px;
      padding:16px 18px 18px;
      flex:1;
      min-height:0;
      overflow:auto;
    }
    .preview-frame {
      display:flex;
      flex-direction:column;
      width:100%;
      flex:1;
      min-height:0;
      border:1px solid var(--border);
      border-radius:18px;
      background:#050914;
      overflow:auto;
    }
    .preview-frame iframe {
      width:100%;
      height:100%;
      min-height:520px;
      border:0;
      display:block;
      background:#050914;
    }
    .preview-image-wrap {
      display:flex;
      align-items:center;
      justify-content:center;
      min-height:0;
      flex:1;
      border:1px solid var(--border);
      border-radius:18px;
      background:#050914;
      overflow:auto;
      padding:12px;
    }
    .preview-image {
      max-width:100%;
      max-height:100%;
      object-fit:contain;
      image-rendering:auto;
    }
    .preview-pre {
      width:100%;
      flex:1;
      min-height:0;
      border:1px solid var(--border);
      border-radius:18px;
      background:#050914;
      color:var(--text);
      padding:14px 16px;
      font-family:'Cascadia Code','Fira Mono',monospace;
      font-size:.85rem;
      line-height:1.6;
      white-space:pre-wrap;
      overflow:auto;
    }
    .syntax-pre { white-space:pre; }
    .syntax-code { color:var(--text); }
    .tok-keyword { color:#7dd3fc; font-weight:700; }
    .tok-string { color:#bef264; }
    .tok-number { color:#fbbf24; }
    .tok-comment { color:#7b879d; font-style:italic; }
    .preview-details {
      border:1px solid var(--border);
      border-radius:14px;
      background:rgba(255,255,255,.025);
      overflow:hidden;
    }
    .preview-details > summary {
      cursor:pointer;
      padding:10px 12px;
      color:var(--text2);
      font-size:.82rem;
      font-weight:700;
      user-select:none;
    }
    .preview-details > .preview-pre {
      border:0;
      border-top:1px solid var(--border);
      border-radius:0;
      margin:0;
    }
    .preview-split {
      display:flex;
      flex-direction:column;
      gap:12px;
      min-height:0;
    }
    .preview-tree {
      border:1px solid var(--border);
      border-radius:18px;
      background:#050914;
      padding:12px 14px;
      overflow:auto;
      font-family:'Cascadia Code','Fira Mono',monospace;
      font-size:.84rem;
      line-height:1.55;
    }
    .preview-tree-node {
      margin-left:14px;
      color:var(--text);
    }
    .preview-tree-node > summary {
      cursor:pointer;
      color:#93c5fd;
      user-select:none;
    }
    .preview-tree-leaf {
      display:flex;
      gap:10px;
      margin-left:28px;
      min-width:0;
    }
    .preview-tree-key { color:#c4b5fd; flex:0 0 auto; }
    .preview-tree-value { color:var(--text); overflow-wrap:anywhere; }
    .preview-tree-value.string { color:#bef264; }
    .preview-tree-value.number { color:#fbbf24; }
    .preview-tree-value.boolean { color:#fca5a5; }
    .preview-diagram {
      border:1px solid var(--border);
      border-radius:18px;
      background:#f8fafc;
      color:#0f172a;
      padding:16px;
      overflow:auto;
      min-height:260px;
    }
    .preview-diagram svg {
      max-width:100%;
      height:auto;
      display:block;
      margin:auto;
    }
    .preview-warn {
      margin-top:10px;
      color:var(--warn);
      font-size:.82rem;
    }
    .preview-sheet-tabs {
      display:flex;
      gap:8px;
      flex-wrap:wrap;
      margin-bottom:10px;
    }
    .preview-sheet-tabs button {
      border:1px solid var(--border);
      border-radius:999px;
      background:rgba(255,255,255,.04);
      color:var(--text2);
      padding:7px 11px;
      font-size:.78rem;
      font-weight:700;
      cursor:pointer;
    }
    .preview-sheet-tabs button.active {
      background:var(--accent);
      color:#041018;
      border-color:transparent;
    }
    .preview-sheet-body {
      overflow:auto;
      min-height:0;
    }
    .preview-note {
      color:var(--text2);
      font-size:.75rem;
      line-height:1.45;
    }

    /* Chat layout */
    #chat-page { flex-direction:row; }
    .sidebar {
      width:var(--sidebar);
      flex-shrink:0;
      background:rgba(13,19,32,.78);
      backdrop-filter:blur(16px);
      border-right:1px solid rgba(35,49,73,.65);
      display:flex;
      flex-direction:column;
      overflow:hidden;
      box-shadow:inset -1px 0 0 rgba(255,255,255,.02);
    }
    .sidebar-head {
      padding:14px 12px 12px;
      display:flex;
      align-items:center;
      gap:8px;
      border-bottom:1px solid rgba(35,49,73,.75);
      flex-shrink:0;
    }
    .sidebar-head span { flex:1; font-size:0.72rem; color:var(--text2); font-weight:600; text-transform:uppercase; letter-spacing:.05em; }
    .sidebar-search {
      padding:10px 12px;
      border-bottom:1px solid rgba(35,49,73,.75);
      flex-shrink:0;
    }
    .search-box {
      position:relative;
      min-width:0;
    }
    .search-box::before {
      content:'';
      position:absolute;
      left:10px;
      top:50%;
      width:14px;
      height:14px;
      transform:translateY(-50%);
      background-color:var(--text2);
      opacity:.65;
      pointer-events:none;
      -webkit-mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'><circle cx='11' cy='11' r='7'/><path d='m20 20-3.5-3.5'/></svg>") center / contain no-repeat;
              mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'><circle cx='11' cy='11' r='7'/><path d='m20 20-3.5-3.5'/></svg>") center / contain no-repeat;
    }
    .search-box input {
      width:100%;
      min-width:0;
      background:rgba(255,255,255,.03);
      border:1px solid var(--border);
      border-radius:12px;
      color:var(--text);
      outline:none;
      padding:8px 10px 8px 32px;
      font-size:.78rem;
      transition:border-color .15s, box-shadow .15s, background .15s;
    }
    .search-box input::placeholder {
      color:rgba(147,164,189,.72);
    }
    .search-box input:focus {
      border-color:rgba(34,211,238,.55);
      background:rgba(34,211,238,.06);
      box-shadow:0 0 0 3px rgba(34,211,238,.10);
    }
    .new-btn {
      background:linear-gradient(135deg,var(--accent),#0ea5b7);
      border:none;
      color:#041018;
      border-radius:8px;
      padding:6px 12px;
      font-size:0.78rem;
      font-weight:700;
      cursor:pointer;
      transition:opacity .15s, transform .12s;
      white-space:nowrap;
    }
    .new-btn:hover { opacity:.96; transform:translateY(-1px); }
    .folder-btn {
      background:rgba(255,255,255,.04);
      border:1px solid var(--border);
      color:var(--text);
    }
    .conv-list { flex:1; overflow-y:auto; padding:8px; display:flex; flex-direction:column; gap:6px; }
    .list-empty {
      padding:14px 10px;
      color:var(--text2);
      font-size:.76rem;
      text-align:center;
      line-height:1.4;
    }
    .conv-item {
      border-radius:14px;
      padding:9px 8px 9px calc(9px + (var(--depth, 0) * 15px));
      cursor:pointer;
      transition:background .15s, border-color .15s, transform .15s;
      display:flex;
      align-items:center;
      gap:7px;
      border:1px solid transparent;
    }
    .conv-item:hover { background:rgba(255,255,255,.03); border-color:rgba(255,255,255,.04); transform:translateY(-1px); }
    .conv-item.active { background:rgba(34,211,238,.10); border-color:rgba(34,211,238,.18); }
    .conv-folder {
      --depth:0;
      min-height:34px;
      border-radius:10px;
      padding:5px 6px 5px calc(4px + (var(--depth, 0) * 15px));
      display:flex;
      align-items:center;
      gap:4px;
      color:var(--text);
      border:1px solid transparent;
      cursor:pointer;
      transition:background .15s, border-color .15s;
    }
    .conv-folder:hover,
    .conv-folder.drop-target {
      background:rgba(255,255,255,.035);
      border-color:rgba(34,211,238,.16);
    }
    .folder-caret,
    .folder-action,
    .conv-rename,
    .conv-move {
      width:24px;
      height:24px;
      flex:0 0 24px;
      display:flex;
      align-items:center;
      justify-content:center;
      background:none;
      border:none;
      color:var(--text2);
      border-radius:6px;
      cursor:pointer;
      font-size:.82rem;
      line-height:1;
      transition:background .12s, color .12s, opacity .12s;
    }
    .folder-caret:hover,
    .folder-action:hover,
    .conv-rename:hover,
    .conv-move:hover {
      background:rgba(255,255,255,.05);
      color:var(--text);
    }
    .folder-action.active { color:var(--warn); }
    .folder-delete {
      color:rgba(248,113,113,.86);
      background:rgba(248,113,113,.08);
    }
    .folder-delete:hover {
      color:var(--danger);
      background:rgba(248,113,113,.14);
    }
    .folder-action:disabled {
      opacity:.22;
      pointer-events:none;
    }
    .folder-name {
      flex:1;
      min-width:0;
      display:flex;
      align-items:center;
      gap:6px;
      font-size:.8rem;
      font-weight:650;
    }
    .folder-name span:last-child {
      min-width:0;
      overflow:hidden;
      text-overflow:ellipsis;
      white-space:nowrap;
    }
    .folder-icon {
      flex:0 0 auto;
      font-size:.86rem;
      opacity:.9;
    }
    .ci-text { flex:1; min-width:0; }
    .ci-title { font-size:0.84rem; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
    .conv-item.active .ci-title { color:var(--accent); }
    .ci-date { font-size:0.68rem; color:var(--text2); margin-top:2px; }
    .conv-star {
      background:none;
      border:none;
      color:var(--text2);
      cursor:pointer;
      font-size:0.95rem;
      padding:2px 4px;
      border-radius:4px;
      flex-shrink:0;
      transition:transform .12s, color .12s, opacity .12s;
      opacity:.82;
    }
    .conv-star:hover { color:var(--warn); transform:translateY(-1px); opacity:1; }
    .conv-star.active { color:var(--warn); opacity:1; }
    .conv-rename,
    .conv-move {
      opacity:0;
      font-size:.9rem;
      border:1px solid transparent;
    }
    .conv-rename {
      color:var(--accent);
      background:rgba(34,211,238,.08);
      border-color:rgba(34,211,238,.18);
    }
    .conv-move {
      color:var(--accent2);
      background:rgba(245,158,11,.10);
      border-color:rgba(245,158,11,.22);
    }
    .conv-item:hover .conv-rename,
    .conv-item:hover .conv-move,
    .conv-item.active .conv-rename,
    .conv-item.active .conv-move { opacity:.95; }
    .conv-rename:hover {
      background:rgba(34,211,238,.18);
      border-color:rgba(34,211,238,.45);
      color:var(--accent);
      opacity:1;
    }
    .conv-move:hover {
      background:rgba(245,158,11,.20);
      border-color:rgba(245,158,11,.55);
      color:var(--accent2);
      opacity:1;
    }
    .conv-del {
      background:none;
      border:none;
      color:var(--text2);
      cursor:pointer;
      font-size:0.9rem;
      padding:2px 4px;
      border-radius:4px;
      opacity:.72;
      transition:opacity .12s, color .12s;
      flex-shrink:0;
    }
    .conv-item:hover .conv-del { opacity:1; }
    .conv-del:hover { color:var(--danger); }

    /* Chat main */
    .chat-main { flex:1; display:flex; flex-direction:column; overflow:hidden; padding:18px; gap:12px; min-width:0; min-height:0; }
    .messages { flex:1; min-height:0; overflow-y:auto; display:flex; flex-direction:column; gap:12px; padding-bottom:6px; }
    .empty-chat {
      flex:1;
      min-height:0;
      display:flex;
      flex-direction:column;
      color:var(--text2);
      overflow:auto;
    }
    .empty-chat-shell {
      width:min(860px, 100%);
      margin:0 auto;
      display:flex;
      flex-direction:column;
      gap:12px;
      padding:6px 0 18px;
    }
    .empty-chat-head {
      display:flex;
      align-items:flex-start;
      justify-content:space-between;
      gap:12px;
      padding:2px 0 4px;
    }
    .empty-chat-head h2 {
      margin:0;
      color:var(--text);
      font-size:1.1rem;
      line-height:1.2;
    }
    .empty-chat-head p {
      margin:4px 0 0;
      color:var(--text2);
      font-size:.8rem;
      line-height:1.45;
    }
    .empty-chat-list {
      display:grid;
      grid-template-columns:repeat(auto-fill, minmax(240px, 1fr));
      gap:10px;
    }
    .empty-chat-item {
      min-width:0;
      background:linear-gradient(180deg, rgba(17,26,43,.95), rgba(12,18,30,.96));
      border:1px solid var(--border);
      border-radius:8px;
      padding:12px;
      display:flex;
      flex-direction:column;
      gap:8px;
      text-align:left;
      cursor:pointer;
      transition:border-color .15s, transform .15s, background .15s;
      box-shadow:0 12px 28px rgba(0,0,0,.14);
    }
    .empty-chat-item:hover,
    .empty-chat-item:focus-visible {
      border-color:rgba(34,211,238,.32);
      background:rgba(34,211,238,.06);
      transform:translateY(-1px);
      outline:none;
    }
    .empty-chat-item-title {
      color:var(--text);
      font-size:.9rem;
      font-weight:750;
      line-height:1.35;
      overflow:hidden;
      text-overflow:ellipsis;
      white-space:nowrap;
    }
    .empty-chat-item-meta {
      display:flex;
      align-items:center;
      gap:6px;
      flex-wrap:wrap;
      color:var(--text2);
      font-size:.72rem;
      line-height:1.35;
    }
    .empty-chat-pill {
      display:inline-flex;
      align-items:center;
      gap:4px;
      border:1px solid rgba(49,67,95,.9);
      border-radius:999px;
      padding:2px 7px;
      background:rgba(255,255,255,.03);
      max-width:100%;
    }
    .empty-chat-empty {
      border:1px dashed rgba(49,67,95,.9);
      border-radius:8px;
      padding:22px;
      text-align:center;
      color:var(--text2);
      background:rgba(4,7,14,.28);
      font-size:.84rem;
    }
    .empty-chat-mobile {
      color:var(--text2);
      font-size:.78rem;
      line-height:1.45;
      margin:2px 0 0;
      opacity:.72;
    }

    .msg { display:flex; gap:9px; animation:fadein .18s ease; }
    @keyframes fadein{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}
    .msg.user { flex-direction:row-reverse; }
    .bubble {
      background:linear-gradient(180deg, rgba(17,26,43,.95), rgba(12,18,30,.95));
      border:1px solid var(--border);
      border-radius:18px;
      padding:12px 15px;
      max-width:76%;
      line-height:1.65;
      white-space:pre-wrap;
      word-break:break-word;
      font-size:0.9rem;
      box-shadow:0 12px 34px rgba(0,0,0,.18);
    }
    .msg.user .bubble {
      background:linear-gradient(180deg, rgba(22,32,51,.96), rgba(15,22,36,.98));
      border-color:rgba(34,211,238,.26);
      border-radius:18px 6px 18px 18px;
    }
    .msg.assistant .bubble { border-radius:6px 18px 18px 18px; }
    .msg-actions {
      display:flex;
      flex-wrap:wrap;
      gap:6px;
      margin-top:8px;
      padding-top:8px;
      border-top:1px solid rgba(49,67,95,.55);
    }
    .msg-actions button,
    .template-top-btn,
    .composer-tool-btn {
      border:1px solid var(--border);
      background:rgba(255,255,255,.035);
      color:var(--text2);
      cursor:pointer;
      transition:all .15s;
    }
    .msg-actions button {
      border-radius:999px;
      padding:4px 9px;
      font-size:.68rem;
      font-weight:700;
    }
    .msg-actions button:hover,
    .template-top-btn:hover,
    .composer-tool-btn:hover:not(:disabled) {
      border-color:rgba(34,211,238,.35);
      color:var(--accent);
      background:rgba(34,211,238,.06);
    }

    /* Streaming cursor */
    .cursor { display:inline-block; width:2px; height:1em; background:var(--accent); margin-left:2px; vertical-align:text-bottom; animation:blink .7s infinite; }
    @keyframes blink{0%,100%{opacity:1}50%{opacity:0}}
    .stream-status {
      margin-top:7px;
      color:var(--text2);
      font-size:.72rem;
      line-height:1.45;
      white-space:normal;
    }
    .connector-guide {
      display:flex;
      flex-direction:column;
      gap:10px;
      white-space:normal;
    }
    .connector-guide-title {
      font-weight:800;
      color:var(--text);
      line-height:1.35;
    }
    .connector-guide-text {
      color:var(--text2);
      font-size:.84rem;
      line-height:1.55;
    }
    .connector-guide-actions {
      display:flex;
      flex-wrap:wrap;
      gap:8px;
    }
    .connector-guide-btn {
      border:none;
      border-radius:999px;
      background:linear-gradient(135deg, var(--accent), #0ea5b7);
      color:#041018;
      padding:7px 13px;
      font-size:.8rem;
      font-weight:700;
      cursor:pointer;
      transition:transform .12s, box-shadow .15s;
    }
    .connector-guide-btn:hover {
      transform:translateY(-1px);
      box-shadow:0 8px 20px rgba(34,211,238,.24);
    }

    /* Markdown inside bubbles */
    .md h1,.md h2,.md h3,.md h4 { margin:.7em 0 .3em; line-height:1.3; font-weight:700; }
    .md h1 { font-size:1.2em; } .md h2 { font-size:1.08em; } .md h3 { font-size:1em; }
    .md p { margin:.4em 0; }
    .md ul,.md ol { margin:.4em 0 .4em 1.4em; }
    .md li { margin:.2em 0; }
    .md code { background:rgba(255,255,255,.06); border:1px solid var(--border); border-radius:6px; padding:1px 5px; font-family:'Cascadia Code','Fira Mono',monospace; font-size:.85em; }
    .md pre { background:rgba(4,7,14,.82); border:1px solid var(--border); border-radius:14px; padding:12px 14px; overflow-x:auto; margin:.5em 0; box-shadow:inset 0 1px 0 rgba(255,255,255,.02); }
    .md pre code { background:none; border:none; padding:0; font-size:.82em; }
    .md blockquote { border-left:3px solid var(--accent); margin:.5em 0; padding:.3em 0 .3em 12px; color:var(--text2); }
    .md table { border-collapse:collapse; margin:.5em 0; width:100%; font-size:.85em; }
    .md th,.md td { border:1px solid var(--border); padding:5px 10px; }
    .md th { background:var(--surface2); font-weight:600; }
    .md a { color:var(--accent); text-decoration:none; }
    .md a:hover { text-decoration:underline; }
    .md hr { border:none; border-top:1px solid var(--border); margin:.7em 0; }
    .md strong { font-weight:700; }
    .md em { font-style:italic; color:var(--text2); }

    /* Usage + model footer */
    .msg-meta { display:flex; flex-wrap:wrap; gap:5px; margin-top:7px; align-items:center; }
    .meta-pill {
      display:inline-flex;
      align-items:center;
      gap:3px;
      background:rgba(255,255,255,.05);
      border:1px solid var(--border);
      color:var(--text2);
      border-radius:999px;
      padding:2px 8px;
      font-size:0.68rem;
      white-space:nowrap;
    }
    .meta-pill.model { border-color:rgba(34,211,238,.22); color:#8eefff; }
    .meta-pill.cost  { border-color:rgba(245,158,11,.25); color:var(--warn); }
    .meta-pill.cache { border-color:rgba(52,211,153,.25); color:var(--success); }

    .file-badge {
      display:inline-flex;
      align-items:center;
      gap:5px;
      background:rgba(52,211,153,.12);
      border:1px solid rgba(52,211,153,.28);
      color:#8ef0c6;
      border-radius:999px;
      padding:4px 9px;
      font-size:0.75rem;
      margin-top:5px;
      cursor:pointer;
      text-decoration:none;
    }
    .file-badge:hover { background:rgba(52,211,153,.18); }


    .suggestion-bar { display:flex; flex-wrap:wrap; gap:6px; padding:2px 0; }
    .sugg-pill {
      background:rgba(34,211,238,.07);
      border:1px solid rgba(34,211,238,.22);
      border-radius:999px;
      color:var(--accent);
      padding:3px 11px;
      font-size:0.75rem;
      cursor:pointer;
      transition:all .15s;
      white-space:nowrap;
    }
    .sugg-pill:hover { background:rgba(34,211,238,.18); border-color:rgba(34,211,238,.5); }

    .input-area { display:flex; gap:8px; align-items:flex-end; position:relative; }
    .template-top-btn {
      border-radius:999px;
      padding:7px 11px;
      font-size:.76rem;
      font-weight:700;
      white-space:nowrap;
    }
    .template-top-btn,
    #composer-template-btn,
    #template-sugg-btn,
    #compose-template {
      border-color:rgba(52,211,153,.42);
      background:linear-gradient(135deg, rgba(52,211,153,.22), rgba(16,185,129,.12));
      color:#8ff7c6;
      box-shadow:0 8px 22px rgba(16,185,129,.12);
    }
    .template-top-btn:hover,
    #composer-template-btn:hover,
    #template-sugg-btn:hover,
    #compose-template:hover {
      border-color:rgba(52,211,153,.65);
      background:linear-gradient(135deg, rgba(52,211,153,.30), rgba(16,185,129,.18));
      color:#b8ffd9;
    }
    .composer-tool-btn {
      width:40px;
      height:46px;
      border-radius:14px;
      font-size:.95rem;
      flex:0 0 40px;
    }
    .composer-tool-btn:disabled {
      opacity:.35;
      cursor:not-allowed;
    }
    .chat-input-toggle {
      display:none;
      border-color:rgba(168,85,247,.5);
      background:linear-gradient(135deg, rgba(168,85,247,.28), rgba(99,102,241,.16));
      color:#e9d5ff;
      box-shadow:0 8px 22px rgba(124,58,237,.16);
    }
    .compose-expand-btn {
      width:46px;
      height:46px;
      border-radius:16px;
      border:1px solid rgba(245,158,11,.5);
      background:linear-gradient(135deg, rgba(245,158,11,.92), rgba(251,113,133,.72));
      color:#1b1003;
      font-size:1.08rem;
      cursor:pointer;
      flex:0 0 46px;
      transition:all .15s;
      box-shadow:0 10px 26px rgba(245,158,11,.24);
      font-weight:900;
    }
    .compose-expand-btn:hover {
      border-color:rgba(251,191,36,.78);
      color:#100a02;
      background:linear-gradient(135deg, #fbbf24, #fb7185);
      transform:translateY(-1px);
    }
    .input-area textarea {
      flex:1;
      min-width:0;
      background:rgba(12,18,30,.9);
      border:1px solid var(--border);
      border-radius:16px;
      color:var(--text);
      padding:12px 14px;
      font-size:1rem; /* ≥16px ป้องกัน Chrome/Safari mobile zoom เมื่อ focus */
      font-family:var(--font);
      resize:none;
      outline:none;
      max-height:140px;
      min-height:46px;
      line-height:1.5;
      transition:border-color .18s, box-shadow .18s;
    }
    .input-area textarea:focus { border-color:rgba(34,211,238,.55); box-shadow:0 0 0 4px rgba(34,211,238,.12); }
    .send-key-menu {
      position:relative;
      flex-shrink:0;
    }
    .send-key-toggle {
      width:46px;
      height:46px;
      border-radius:16px;
      border:1px solid var(--border);
      background:rgba(255,255,255,.03);
      color:var(--text2);
      font-size:1rem;
      cursor:pointer;
      transition:all .15s;
    }
    .send-key-toggle:hover,
    .send-key-menu.open .send-key-toggle {
      border-color:rgba(34,211,238,.35);
      color:var(--accent);
      background:rgba(34,211,238,.06);
    }
    .send-key-panel {
      display:none;
      position:absolute;
      right:0;
      bottom:calc(100% + 8px);
      width:min(280px, calc(100vw - 28px));
      background:linear-gradient(180deg, rgba(17,26,43,.98), rgba(12,18,30,.99));
      border:1px solid rgba(49,67,95,.86);
      border-radius:14px;
      box-shadow:0 18px 60px rgba(0,0,0,.42);
      padding:12px;
      z-index:85;
      backdrop-filter:blur(18px);
    }
    .send-key-menu.open .send-key-panel {
      display:flex;
      flex-direction:column;
      gap:10px;
    }
    .send-key-panel label {
      display:flex;
      flex-direction:column;
      gap:6px;
      font-size:.72rem;
      color:var(--text2);
    }
    .send-key-panel select {
      width:100%;
      background:var(--surface2);
      border:1px solid var(--border);
      color:var(--text);
      border-radius:10px;
      padding:8px 10px;
      font-size:.82rem;
      outline:none;
    }
    .send-key-panel select:focus,
    .send-key-capture:focus {
      border-color:rgba(34,211,238,.55);
      box-shadow:0 0 0 3px rgba(34,211,238,.10);
    }
    .send-key-capture {
      width:100%;
      border:1px solid var(--border);
      background:rgba(255,255,255,.03);
      color:var(--text);
      border-radius:10px;
      padding:8px 10px;
      font-size:.82rem;
      cursor:pointer;
      text-align:left;
    }
    .send-key-capture.capturing {
      border-color:rgba(245,158,11,.5);
      color:var(--warn);
      background:rgba(245,158,11,.08);
    }
    .send-btn {
      background:linear-gradient(135deg,var(--accent),#0ea5b7);
      border:none;
      border-radius:16px;
      color:#041018;
      width:46px;
      height:46px;
      font-size:1.1rem;
      cursor:pointer;
      transition:opacity .15s, transform .12s;
      flex-shrink:0;
      font-weight:800;
    }
    .send-btn:hover { opacity:.96; transform:translateY(-1px); }
    .send-btn:disabled { opacity:.35; cursor:not-allowed; transform:none; }
    .stop-btn {
      background:linear-gradient(135deg,#fb7185,#f43f5e);
      border:none; border-radius:16px; color:#fff;
      width:46px; height:46px; font-size:1.1rem; cursor:pointer;
      transition:opacity .15s, transform .12s;
      flex-shrink:0; font-weight:800;
    }
    .stop-btn:hover { opacity:.96; transform:translateY(-1px); }
    .stop-btn:disabled { opacity:.4; cursor:not-allowed; transform:none; }

    .chat-drop-overlay {
      position:absolute; inset:0; display:none;
      align-items:center; justify-content:center;
      background:rgba(5,9,20,.78); backdrop-filter:blur(4px);
      border:2px dashed rgba(34,211,238,.55); border-radius:18px;
      z-index:40; pointer-events:none;
    }
    .chat-drop-overlay.show { display:flex; }
    .chat-drop-card {
      background:var(--surface2); border:1px solid var(--border); border-radius:16px;
      padding:24px 28px; text-align:center; color:var(--text);
      font-size:.92rem; box-shadow:0 24px 60px rgba(0,0,0,.55);
    }
    .chat-drop-icon { font-size:2.2rem; margin-bottom:8px; }

    .bar { display:flex; align-items:center; justify-content:space-between; gap:10px; position:relative; }
    .bar-info { font-size:0.72rem; color:var(--text2); }
    .chat-topbar { border-bottom:1px solid rgba(35,49,73,.7); padding:6px 0 8px; margin-bottom:4px; }
    .conversation-tools {
      display:flex;
      align-items:center;
      gap:8px;
      margin-left:auto;
      min-width:0;
    }
    .clear-btn {
      background:none;
      border:1px solid var(--border);
      color:var(--text2);
      border-radius:999px;
      padding:5px 10px;
      font-size:0.74rem;
      cursor:pointer;
      transition:all .15s;
    }
    .clear-btn:hover { border-color:var(--danger); color:var(--danger); background:rgba(251,113,133,.06); }
    .model-menu-cta {
      flex-shrink:0;
      background:linear-gradient(135deg, var(--accent), #0ea5b7);
      color:#041018; border:none; border-radius:999px;
      padding:6px 14px; font-size:0.78rem; font-weight:600;
      cursor:pointer; transition:transform .12s, box-shadow .15s;
      box-shadow:0 4px 14px rgba(34,211,238,.22);
    }
    .model-menu-cta:hover { transform:translateY(-1px); box-shadow:0 8px 20px rgba(34,211,238,.32); }
    .model-menu select option:disabled { color:var(--text2); font-style:italic; }
    .model-menu {
      position:relative;
      flex-shrink:0;
    }
    .model-menu.open { z-index:80; }
    .model-menu-toggle {
      background:rgba(255,255,255,.03);
      border:1px solid var(--border);
      color:var(--text2);
      border-radius:999px;
      padding:5px 10px;
      font-size:0.74rem;
      cursor:pointer;
      transition:all .15s;
      max-width:min(52vw, 280px);
      overflow:hidden;
      text-overflow:ellipsis;
      white-space:nowrap;
    }
    .model-menu-toggle:hover,
    .model-menu.open .model-menu-toggle {
      border-color:rgba(34,211,238,.35);
      color:var(--accent);
      background:rgba(34,211,238,.06);
    }
    .model-menu-panel {
      display:none;
      position:absolute;
      right:0;
      top:calc(100% + 8px);
      width:min(320px, calc(100vw - 28px));
      background:linear-gradient(180deg, rgba(17,26,43,.98), rgba(12,18,30,.99));
      border:1px solid rgba(49,67,95,.86);
      border-radius:14px;
      box-shadow:0 18px 60px rgba(0,0,0,.42);
      padding:12px;
      z-index:80;
      backdrop-filter:blur(18px);
    }
    .model-menu.open .model-menu-panel { display:flex; flex-direction:column; gap:10px; }
    .model-menu-panel label {
      display:flex;
      flex-direction:column;
      gap:6px;
      font-size:.72rem;
      color:var(--text2);
    }
    .model-menu-panel select,
    .model-menu-panel input {
      width:100%;
      background:var(--surface2);
      border:1px solid var(--border);
      color:var(--text);
      border-radius:10px;
      padding:8px 10px;
      font-size:.82rem;
      outline:none;
    }
    .model-menu-panel select:focus,
    .model-menu-panel input:focus {
      border-color:rgba(34,211,238,.55);
      box-shadow:0 0 0 3px rgba(34,211,238,.10);
    }
    .conv-files {
      flex-shrink:0;
      background:rgba(13,19,32,.72);
      border:1px solid var(--border);
      border-radius:14px;
      padding:8px;
      display:flex;
      flex-direction:column;
      gap:8px;
      backdrop-filter:blur(14px);
      box-shadow:0 10px 24px rgba(0,0,0,.12);
      transition:border-color .15s, background .15s, box-shadow .15s;
    }
    .conv-files.drag-over {
      border-color:rgba(34,211,238,.58);
      background:rgba(34,211,238,.08);
      box-shadow:0 0 0 4px rgba(34,211,238,.10);
    }
    .conv-files-head {
      display:flex;
      align-items:center;
      justify-content:space-between;
      gap:10px;
    }
    .conv-files-title {
      display:flex;
      align-items:center;
      gap:8px;
      min-width:0;
    }
    .conv-files-head strong {
      font-size:0.74rem;
      letter-spacing:.05em;
      text-transform:uppercase;
      color:var(--text2);
      white-space:nowrap;
    }
    .conv-file-count {
      color:var(--accent);
      background:rgba(34,211,238,.10);
      border:1px solid rgba(34,211,238,.22);
      border-radius:999px;
      padding:2px 7px;
      font-size:.68rem;
      font-weight:800;
    }
    .conv-files-tools {
      display:flex;
      flex-wrap:wrap;
      gap:6px;
      align-items:center;
    }
    .file-upload-btn,
    .file-upload-refresh,
    .file-panel-toggle {
      border:none;
      border-radius:999px;
      padding:6px 10px;
      font-size:0.72rem;
      font-weight:700;
      cursor:pointer;
      transition:all .15s;
    }
    .file-upload-btn { background:linear-gradient(135deg,var(--accent),#0ea5b7); color:#041018; }
    .file-upload-refresh,
    .file-panel-toggle { background:rgba(255,255,255,.03); color:var(--text2); border:1px solid var(--border); }
    .file-upload-btn:hover,
    .file-upload-refresh:hover,
    .file-panel-toggle:hover { transform:translateY(-1px); border-color:rgba(34,211,238,.35); color:var(--accent); }
    .file-upload-input { display:none; }
    .conv-file-list {
      display:grid;
      grid-template-columns:repeat(auto-fit, minmax(220px, 1fr));
      gap:8px;
      overflow:visible;
      padding-bottom:2px;
      min-height:34px;
    }
    .conv-files.collapsed .conv-file-list,
    .conv-files.collapsed .conv-file-dropzone {
      display:none;
    }
    .conv-file-item {
      display:flex;
      align-items:center;
      gap:6px;
      min-width:0;
      width:100%;
      background:rgba(255,255,255,.035);
      border:1px solid var(--border);
      color:var(--text2);
      border-radius:10px;
      padding:8px 10px;
      font-size:0.76rem;
      text-decoration:none;
    }
    .conv-file-icon {
      flex:0 0 auto;
      font-size:.92rem;
    }
    .conv-file-name {
      color:var(--text);
      overflow:hidden;
      text-overflow:ellipsis;
      white-space:nowrap;
      min-width:0;
    }
    .conv-file-item:hover { border-color:rgba(34,211,238,.35); color:var(--accent); background:rgba(34,211,238,.06); }
    .conv-files-empty {
      color:var(--text2);
      font-size:0.76rem;
      padding:4px 2px;
    }
    .conv-file-entry {
      display:flex;
      flex-direction:column;
      gap:8px;
      min-width:0;
      background:rgba(4,7,14,.28);
      border:1px solid rgba(35,49,73,.74);
      border-radius:12px;
      padding:8px;
    }
    .conv-file-actions {
      display:grid;
      grid-template-columns:repeat(5, minmax(0, 1fr));
      gap:6px;
    }
    .conv-file-action {
      display:flex;
      align-items:center;
      justify-content:center;
      border:1px solid var(--border);
      background:rgba(255,255,255,.03);
      color:var(--text2);
      border-radius:10px;
      width:100%;
      min-width:0;
      height:32px;
      cursor:pointer;
      transition:all .15s;
      text-decoration:none;
    }
    .conv-file-dropzone {
      border:1px dashed rgba(49,67,95,.9);
      border-radius:12px;
      padding:10px 12px;
      color:var(--text2);
      font-size:.76rem;
      text-align:center;
      background:rgba(4,7,14,.34);
    }
    .conv-file-action:hover { border-color:rgba(34,211,238,.35); color:var(--accent); background:rgba(34,211,238,.06); }
    .conv-file-action.share:hover { border-color:rgba(52,211,153,.4); color:var(--success); background:rgba(52,211,153,.08); }
    .conv-file-action.danger:hover { border-color:var(--danger); color:var(--danger); background:rgba(251,113,133,.06); }
    .conv-file-preview {
      background:rgba(4,7,14,.55);
      border:1px solid rgba(35,49,73,.8);
      border-radius:14px;
      padding:10px;
      overflow:auto;
    }
    .conv-file-preview .csv-note {
      font-size:.72rem;
      color:var(--text2);
      margin-top:8px;
    }
    .csv-preview-table {
      width:100%;
      border-collapse:collapse;
      font-size:.72rem;
      min-width:360px;
    }
    .csv-preview-table th,
    .csv-preview-table td {
      border:1px solid rgba(35,49,73,.9);
      padding:6px 8px;
      text-align:left;
      vertical-align:top;
      max-width:260px;
      word-break:break-word;
    }
    .csv-preview-table th {
      position:sticky;
      top:0;
      background:rgba(17,26,43,.95);
      color:var(--text);
      font-weight:700;
    }
    .csv-preview-title {
      display:flex;
      align-items:center;
      justify-content:space-between;
      gap:10px;
      margin-bottom:8px;
      color:var(--text2);
      font-size:.72rem;
      text-transform:uppercase;
      letter-spacing:.05em;
      font-weight:700;
    }

    /* Files page */
    #files-page,#logs-page,#users-page,#connections-page,#account-page { max-width:980px; width:100%; margin:0 auto; padding:20px; gap:16px; overflow-y:auto; }
    #schedules-page { max-width:1440px; width:100%; margin:0 auto; padding:24px; gap:18px; overflow-y:auto; }
    .ph { display:flex; align-items:center; justify-content:space-between; gap:12px; flex-shrink:0; margin-bottom:4px; }
    .ph h2 { font-size:1.18rem; letter-spacing:-.02em; }
    .files-toolbar {
      display:flex;
      align-items:center;
      justify-content:flex-end;
      gap:8px;
      min-width:0;
      flex-wrap:wrap;
    }
    .files-search {
      width:min(320px, 44vw);
      max-width:100%;
    }
    .refresh-btn {
      background:rgba(255,255,255,.03);
      border:1px solid var(--border);
      color:var(--text2);
      border-radius:999px;
      padding:6px 12px;
      font-size:0.76rem;
      cursor:pointer;
      transition:all .15s;
    }
    .refresh-btn:hover { border-color:rgba(34,211,238,.35); color:var(--accent); background:rgba(34,211,238,.06); }
    .files-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(240px,1fr)); gap:12px; }
    .fcard {
      background:linear-gradient(180deg, rgba(17,26,43,.95), rgba(12,18,30,.95));
      border:1px solid var(--border);
      border-radius:18px;
      padding:14px;
      display:flex;
      flex-direction:column;
      gap:8px;
      transition:border-color .15s, transform .15s;
      box-shadow:0 14px 30px rgba(0,0,0,.16);
    }
    .fcard:hover { border-color:rgba(34,211,238,.28); transform:translateY(-1px); }
    .fcard .fname { font-weight:700; font-size:0.87rem; word-break:break-word; }
    .fcard .fmeta { color:var(--text2); font-size:0.71rem; }
    .factions { display:flex; gap:6px; margin-top:auto; }
    .btn-sm {
      flex:1;
      background:rgba(255,255,255,.03);
      border:1px solid var(--border);
      color:var(--text2);
      border-radius:12px;
      padding:7px 10px;
      font-size:0.74rem;
      cursor:pointer;
      transition:all .15s;
      text-align:center;
      text-decoration:none;
    }
    .btn-sm:hover { border-color:rgba(34,211,238,.35); color:var(--accent); background:rgba(34,211,238,.06); }
    .btn-sm:disabled { opacity:.45; cursor:not-allowed; transform:none; }
    .btn-sm.share:hover { border-color:rgba(52,211,153,.4); color:var(--success); background:rgba(52,211,153,.08); }
    .btn-sm.del:hover { border-color:var(--danger); color:var(--danger); background:rgba(251,113,133,.06); }
    .section-label { font-size:0.72rem; color:var(--text2); font-weight:600; text-transform:uppercase; letter-spacing:.05em; padding:8px 0 2px; }
    .empty { text-align:center; color:var(--text2); padding:46px 20px; display:flex; flex-direction:column; align-items:center; gap:9px; }
    .empty .icon { font-size:2.4rem; opacity:.3; }

    /* User management */
    .users-head {
      align-items:flex-start;
    }
    .users-head > div {
      min-width:0;
    }
    .users-subtitle {
      margin-top:3px;
      color:var(--text2);
      font-size:.8rem;
      line-height:1.45;
    }
    .users-summary {
      display:grid;
      grid-template-columns:repeat(4, minmax(0, 1fr));
      gap:10px;
    }
    .user-stat {
      min-width:0;
      background:linear-gradient(180deg, rgba(17,26,43,.92), rgba(12,18,30,.96));
      border:1px solid var(--border);
      border-radius:14px;
      padding:12px 14px;
      box-shadow:0 10px 26px rgba(0,0,0,.12);
    }
    .user-stat span {
      display:block;
      color:var(--text2);
      font-size:.7rem;
      text-transform:uppercase;
      letter-spacing:.04em;
      white-space:nowrap;
      overflow:hidden;
      text-overflow:ellipsis;
    }
    .user-stat strong {
      display:block;
      margin-top:6px;
      color:var(--text);
      font-size:1.28rem;
      line-height:1;
    }
    .user-stat.muted {
      grid-column:1 / -1;
      color:var(--text2);
      font-size:.82rem;
      text-transform:none;
      letter-spacing:0;
    }
    .user-create-form {
      display:grid;
      grid-template-columns:1fr 1.4fr 120px auto;
      gap:10px;
      align-items:end;
      background:rgba(13,19,32,.78);
      border:1px solid var(--border);
      border-radius:18px;
      padding:14px;
      backdrop-filter:blur(14px);
    }
    .user-create-form .field { gap:6px; min-width:0; }
    .user-create-form input,
    .user-create-form select {
      background:var(--surface2);
      border:1px solid var(--border);
      border-radius:12px;
      color:var(--text);
      padding:9px 11px;
      font-size:.84rem;
      outline:none;
    }
    .user-create-form input:focus,
    .user-create-form select:focus {
      border-color:rgba(34,211,238,.55);
      box-shadow:0 0 0 4px rgba(34,211,238,.12);
    }
    .user-create-btn {
      min-height:38px;
      border-radius:12px;
      padding:0 14px;
      font-weight:700;
      cursor:pointer;
    }
    .user-create-result {
      display:none;
      border:1px solid var(--border);
      border-radius:14px;
      padding:10px 12px;
      background:rgba(255,255,255,.03);
      color:var(--text2);
      font-size:.8rem;
      line-height:1.45;
      word-break:break-word;
    }
    .user-create-result.ok { display:block; border-color:rgba(52,211,153,.26); color:var(--success); background:rgba(52,211,153,.06); }
    .user-create-result.err { display:block; border-color:rgba(251,113,133,.3); color:var(--danger); background:rgba(251,113,133,.07); }
    .users-wrap {
      background:rgba(13,19,32,.78);
      border:1px solid var(--border);
      border-radius:18px;
      overflow:auto;
      backdrop-filter:blur(14px);
      box-shadow:0 16px 36px rgba(0,0,0,.14);
    }
    .users-table {
      min-width:920px;
      table-layout:fixed;
      font-size:.76rem;
    }
    .users-table th:nth-child(1) { width:14%; }
    .users-table th:nth-child(2) { width:18%; }
    .users-table th:nth-child(3) { width:8%; }
    .users-table th:nth-child(4) { width:13%; }
    .users-table th:nth-child(5) { width:9%; }
    .users-table th:nth-child(6) { width:7%; }
    .users-table th:nth-child(7) { width:13%; }
    .users-table th:nth-child(8) { width:18%; }
    .users-table td {
      vertical-align:middle;
      word-break:normal;
      overflow-wrap:break-word;
    }
    .users-table-state {
      text-align:center;
      color:var(--text2);
      padding:28px 16px;
    }
    .users-table-state.danger {
      color:var(--danger);
    }
    .user-cell,
    .user-email,
    .user-last-login {
      min-width:0;
      overflow:hidden;
      text-overflow:ellipsis;
    }
    .user-name {
      display:inline-block;
      max-width:100%;
      color:var(--text);
      font-weight:800;
      vertical-align:middle;
      overflow:hidden;
      text-overflow:ellipsis;
      white-space:nowrap;
    }
    .user-email,
    .user-last-login {
      color:var(--text2);
      white-space:nowrap;
    }
    .user-session-count {
      color:var(--text);
      font-weight:700;
      text-align:center;
    }
    .user-status {
      display:flex;
      flex-wrap:wrap;
      gap:5px;
      align-items:center;
    }
    .user-actions {
      display:grid;
      grid-template-columns:repeat(2, minmax(0, 1fr));
      gap:6px;
    }
    .user-actions .btn-sm {
      width:100%;
      min-height:30px;
      padding:6px 8px;
      font-size:.7rem;
      line-height:1.15;
      white-space:normal;
    }
    .badge.disabled { background:rgba(148,163,184,.16); color:#cbd5e1; }

    @media(max-width:720px) {
      .users-summary {
        grid-template-columns:repeat(2, minmax(0, 1fr));
      }
      .user-create-form {
        grid-template-columns:1fr;
        padding:12px;
      }
      .user-create-btn {
        min-height:44px;
        width:100%;
      }
      .users-wrap {
        background:transparent;
        border:none;
        box-shadow:none;
        overflow:visible;
      }
      .users-table,
      .users-table thead,
      .users-table tbody,
      .users-table tr,
      .users-table td {
        display:block;
        width:100%;
        min-width:0;
      }
      .users-table {
        border-collapse:separate;
        border-spacing:0 10px;
        font-size:.84rem;
      }
      .users-table thead {
        display:none;
      }
      .users-table tr {
        background:linear-gradient(180deg, rgba(17,26,43,.94), rgba(12,18,30,.98));
        border:1px solid var(--border);
        border-radius:16px;
        padding:8px 10px;
        box-shadow:0 14px 30px rgba(0,0,0,.14);
      }
      .users-table td {
        display:grid;
        grid-template-columns:minmax(88px, 34%) minmax(0, 1fr);
        gap:10px;
        align-items:center;
        padding:8px 2px;
        border-top:none;
        color:var(--text);
        word-break:normal;
        overflow-wrap:anywhere;
      }
      .users-table td::before {
        content:attr(data-label);
        color:var(--text2);
        font-size:.72rem;
        font-weight:700;
        text-transform:uppercase;
        letter-spacing:.03em;
      }
      .users-table td + td {
        border-top:1px solid rgba(35,49,73,.62);
      }
      .users-table td.user-actions-cell {
        display:block;
        padding-top:10px;
      }
      .users-table td.user-actions-cell::before {
        display:block;
        margin-bottom:8px;
      }
      .user-status {
        justify-content:flex-end;
      }
      .user-email,
      .user-last-login {
        white-space:normal;
        overflow:visible;
        text-overflow:clip;
      }
      .user-session-count {
        text-align:right;
      }
      .user-actions .btn-sm {
        min-height:38px;
        font-size:.74rem;
      }
      .users-table-state,
      .users-table-state.danger {
        display:block !important;
        text-align:center;
        padding:22px 10px;
      }
      .users-table-state::before {
        display:none;
      }
    }

    @media(max-width:420px) {
      .users-summary {
        grid-template-columns:1fr 1fr;
        gap:8px;
      }
      .user-stat {
        padding:10px 11px;
      }
      .user-stat strong {
        font-size:1.12rem;
      }
      .users-table td {
        grid-template-columns:1fr;
        gap:5px;
        align-items:start;
      }
      .users-table td::before {
        font-size:.68rem;
      }
      .user-status,
      .user-session-count {
        justify-content:flex-start;
        text-align:left;
      }
      .user-actions {
        grid-template-columns:1fr;
      }
    }

    /* Account page */
    .account-grid {
      display:grid;
      grid-template-columns:repeat(auto-fit, minmax(320px, 1fr));
      gap:14px;
      align-items:start;
    }
    .account-card {
      background:rgba(13,19,32,.78);
      border:1px solid var(--border);
      border-radius:18px;
      padding:18px 20px;
      backdrop-filter:blur(14px);
      display:flex;
      flex-direction:column;
      gap:14px;
    }
    .account-card h3 { font-size:0.95rem; letter-spacing:-.01em; margin:0; }
    .account-meta { display:grid; grid-template-columns:auto 1fr; gap:6px 14px; font-size:.85rem; margin:0; }
    .account-meta dt { color:var(--text2); font-weight:600; }
    .account-meta dd { margin:0; word-break:break-word; }
    .account-form { display:flex; flex-direction:column; gap:10px; }
    .account-form .field { display:flex; flex-direction:column; gap:6px; }
    .account-form label { font-size:.78rem; color:var(--text2); font-weight:600; }
    .account-form input {
      background:var(--surface2); border:1px solid var(--border); border-radius:12px;
      color:var(--text); padding:9px 11px; font-size:.86rem; outline:none;
    }
    .account-form input:focus { border-color:rgba(34,211,238,.55); box-shadow:0 0 0 4px rgba(34,211,238,.12); }
    .account-form .btn-primary { align-self:flex-start; padding:9px 18px; }
    .account-hint { font-size:.74rem; color:var(--text2); margin:0; line-height:1.5; }
    .account-result {
      display:none; border:1px solid var(--border); border-radius:12px;
      padding:9px 11px; font-size:.78rem; line-height:1.45; word-break:break-word;
    }
    .account-result.ok { display:block; border-color:rgba(52,211,153,.26); color:var(--success); background:rgba(52,211,153,.06); }
    .account-result.err { display:block; border-color:rgba(251,113,133,.3); color:var(--danger); background:rgba(251,113,133,.07); }
    .account-2fa { display:flex; flex-direction:column; gap:10px; align-items:flex-start; }
    .account-2fa-status {
      font-size:.85rem; padding:6px 12px; border-radius:999px;
      border:1px solid var(--border); background:rgba(255,255,255,.03);
    }
    .account-2fa-status.on { border-color:rgba(52,211,153,.36); color:var(--success); background:rgba(52,211,153,.08); }
    .account-2fa-status.off { border-color:rgba(245,158,11,.36); color:var(--warn); background:rgba(245,158,11,.08); }
    #account-2fa-toggle { padding:9px 18px; }

    /* Logs */
    .log-wrap { background:rgba(13,19,32,.78); border:1px solid var(--border); border-radius:18px; overflow:auto; backdrop-filter:blur(14px); }
    table { width:100%; border-collapse:collapse; font-size:0.77rem; }
    thead { background:rgba(255,255,255,.03); }
    th { padding:10px 12px; text-align:left; color:var(--text2); font-weight:600; white-space:nowrap; }
    td { padding:9px 12px; border-top:1px solid rgba(35,49,73,.8); word-break:break-all; }
    tr:hover td { background:rgba(255,255,255,.02); }
    .badge { display:inline-block; padding:2px 7px; border-radius:999px; font-size:0.68rem; font-weight:600; }
    .badge.ok   { background:rgba(52,211,153,.14);  color:var(--success); }
    .badge.err  { background:rgba(251,113,133,.14);  color:var(--danger); }
    .badge.info { background:rgba(34,211,238,.14);  color:var(--accent); }
    .badge.warn { background:rgba(245,158,11,.14); color:var(--warn); }


    /* Terminal page */
    #terminal-page { flex-direction:column; overflow:hidden; min-width:0; }
    .term-toolbar {
      display:flex; align-items:center; gap:8px; flex-wrap:wrap;
      padding:10px 14px; background:rgba(13,19,32,.78); border-bottom:1px solid rgba(35,49,73,.75);
      flex-shrink:0;
      backdrop-filter:blur(14px);
    }
    .term-toolbar input {
      background:var(--surface2); border:1px solid var(--border); border-radius:12px;
      color:var(--text); padding:7px 10px; font-size:0.82rem; outline:none;
      transition:border-color .15s, box-shadow .15s;
      min-width:0;
    }
    .term-toolbar input:focus { border-color:rgba(34,211,238,.55); box-shadow:0 0 0 4px rgba(34,211,238,.12); }
    .term-toolbar input.wide { flex:1 1 120px; min-width:0; max-width:240px; }
    .term-toolbar input.short { flex:0 0 64px; width:64px; }
    .connect-btn { background:linear-gradient(135deg,var(--success),#10b981); border:none; color:#02110c; border-radius:999px; padding:7px 14px; font-size:0.82rem; font-weight:700; cursor:pointer; transition:opacity .15s, transform .12s; flex-shrink:0; }
    .connect-btn:hover { opacity:.96; transform:translateY(-1px); }
    .connect-btn.disconnect { background:linear-gradient(135deg,var(--danger),#f97316); color:#130508; }
    .term-status { font-size:0.72rem; color:var(--text2); margin-left:4px; min-width:0; overflow:hidden; text-overflow:ellipsis; }
    .term-status.connected { color:var(--success); }
    .term-wrap { flex:1; min-width:0; min-height:0; padding:10px; background:#000; overflow:hidden; }
    #xterm { width:100%; height:100%; overflow:hidden; }
    #xterm .xterm, #xterm .xterm-viewport, #xterm .xterm-screen { max-width:100%; }

    ::-webkit-scrollbar { width:6px; height:6px; }
    ::-webkit-scrollbar-track { background:transparent; }
    ::-webkit-scrollbar-thumb { background:rgba(35,49,73,.9); border-radius:999px; }
    ::-webkit-scrollbar-thumb:hover { background:rgba(34,211,238,.45); }

    /* ── Hamburger toggle (hidden on desktop) ─────────────────────────────── */
    .sidebar-toggle {
      display:none;
      background:transparent;
      border:1px solid var(--border);
      color:var(--text2);
      border-radius:10px;
      width:38px;
      height:38px;
      cursor:pointer;
      font-size:1.1rem;
      align-items:center;
      justify-content:center;
      flex-shrink:0;
      transition:all .15s;
    }
    .sidebar-toggle:hover { border-color:rgba(34,211,238,.35); color:var(--accent); background:rgba(34,211,238,.06); }

    /* Backdrop when sidebar open on mobile */
    .sidebar-overlay {
      display:none;
      position:fixed;
      inset:0;
      background:rgba(0,0,0,.55);
      z-index:149;
      backdrop-filter:blur(2px);
    }
    .sidebar-overlay.show { display:block; }

/* ── Connections (CLI + API-key) ────────────────────────────────────────── */
.conn-cards {
  display:grid; gap:14px;
  grid-template-columns:repeat(auto-fill, minmax(320px, 1fr));
}
.conn-card {
  background:linear-gradient(180deg, var(--surface2), var(--surface3));
  border:1px solid var(--border); border-radius:14px;
  padding:16px; display:flex; flex-direction:column; gap:12px;
  transition:border-color .15s, transform .15s, box-shadow .2s;
}
.conn-card:hover { border-color:var(--border2); transform:translateY(-1px); box-shadow:0 8px 24px rgba(0,0,0,.18); }
.conn-card.connected { border-color:rgba(52,211,153,.35); }

.conn-card-head { display:flex; align-items:center; gap:12px; }
.conn-avatar {
  width:36px; height:36px; flex:0 0 36px;
  border-radius:10px; display:flex; align-items:center; justify-content:center;
  font-weight:700; font-size:.95rem; letter-spacing:.5px;
  background:rgba(34,211,238,.10); color:var(--accent);
  border:1px solid rgba(34,211,238,.25);
}
.conn-card.codex   .conn-avatar { background:rgba(245,158,11,.10); color:var(--accent2); border-color:rgba(245,158,11,.28); }
.conn-card.groq    .conn-avatar { background:rgba(251,113,133,.10); color:#fb7185; border-color:rgba(251,113,133,.28); }
.conn-card.gemini  .conn-avatar { background:rgba(52,211,153,.10); color:var(--accent3); border-color:rgba(52,211,153,.30); }

.conn-title { flex:1; min-width:0; display:flex; flex-direction:column; gap:2px; }
.conn-title strong { font-size:.98rem; color:var(--text); }
.conn-kind { font-size:.7rem; text-transform:uppercase; letter-spacing:.8px; color:var(--text2); }

.conn-status {
  display:inline-flex; align-items:center; gap:5px;
  padding:3px 9px; border-radius:999px;
  font-size:.72rem; font-weight:600;
  background:rgba(147,164,189,.10); color:var(--text2);
  border:1px solid var(--border);
}
.conn-status::before {
  content:''; width:6px; height:6px; border-radius:50%;
  background:var(--text2); box-shadow:0 0 0 0 var(--text2);
}
.conn-status.ok       { background:rgba(52,211,153,.10); color:var(--accent3); border-color:rgba(52,211,153,.35); }
.conn-status.ok::before { background:var(--accent3); box-shadow:0 0 8px rgba(52,211,153,.7); }
.conn-status.warn     { background:rgba(245,158,11,.10); color:var(--accent2); border-color:rgba(245,158,11,.32); }
.conn-status.warn::before { background:var(--accent2); }

.conn-detail { font-size:.78rem; color:var(--text2); margin-top:-2px; }

.conn-body { display:flex; flex-direction:column; gap:8px; }
.conn-key-row { display:flex; gap:6px; }
.conn-key-input {
  flex:1; min-width:0;
  background:var(--surface); color:var(--text);
  border:1px solid var(--border); border-radius:10px;
  padding:8px 11px; font-size:.85rem; font-family:ui-monospace, SFMono-Regular, Menlo, monospace;
  transition:border-color .15s, box-shadow .15s;
}
.conn-key-input:focus {
  outline:none; border-color:rgba(34,211,238,.55);
  box-shadow:0 0 0 3px rgba(34,211,238,.12);
}
.conn-actions { display:flex; gap:6px; flex-wrap:wrap; }
.conn-btn {
  appearance:none; border:1px solid var(--border); background:var(--surface1);
  color:var(--text); border-radius:9px; padding:7px 12px;
  font-size:.8rem; font-weight:500; cursor:pointer;
  transition:border-color .12s, background .12s, color .12s, transform .12s;
  display:inline-flex; align-items:center; gap:5px;
}
.conn-btn:hover:not(:disabled) { border-color:var(--border2); transform:translateY(-1px); }
.conn-btn:disabled { opacity:.4; cursor:not-allowed; }
.conn-btn.primary {
  background:linear-gradient(135deg, var(--accent), #0ea5b7);
  color:#041018; border-color:transparent; font-weight:600;
}
.conn-btn.primary:hover:not(:disabled) { box-shadow:0 6px 16px rgba(34,211,238,.25); }
.conn-btn.ghost:hover:not(:disabled)   { border-color:rgba(34,211,238,.5); color:var(--accent); }
.conn-btn.danger {
  border-color:rgba(251,113,133,.32); color:#fda4af;
}
.conn-btn.danger:hover:not(:disabled) { background:rgba(251,113,133,.08); border-color:rgba(251,113,133,.5); }

.conn-msg {
  min-height:1em; font-size:.78rem; color:var(--text2);
  padding-left:2px; transition:color .15s;
}
.conn-msg.ok   { color:var(--accent3); }
.conn-msg.err  { color:#fb7185; }
.conn-msg.info { color:var(--accent); }

/* Scheduled AI */
.schedule-page-head,
.schedule-head-actions,
.schedule-form-actions,
.schedule-action-buttons,
.schedule-list-head,
.schedule-item-head,
.schedule-item-actions,
.schedule-run-meta {
  display:flex;
  align-items:center;
  gap:10px;
}
.schedule-page-head,
.schedule-form-actions,
.schedule-list-head,
.schedule-item-head { justify-content:space-between; }
.schedule-page-head {
  position:relative;
  overflow:hidden;
  min-height:132px;
  padding:24px 26px;
  border:1px solid rgba(49,67,95,.72);
  border-radius:24px;
  background:
    radial-gradient(circle at 82% 15%, rgba(34,211,238,.15), transparent 30%),
    linear-gradient(125deg, rgba(17,26,43,.96), rgba(9,15,26,.9));
  box-shadow:0 20px 55px rgba(0,0,0,.2);
}
.schedule-page-head::after {
  content:'';
  position:absolute;
  width:190px;
  height:190px;
  right:12%;
  top:-96px;
  border:1px solid rgba(34,211,238,.13);
  border-radius:50%;
  box-shadow:0 0 0 30px rgba(34,211,238,.025), 0 0 0 64px rgba(34,211,238,.018);
  pointer-events:none;
}
.schedule-hero-copy {
  position:relative;
  z-index:1;
  display:flex;
  flex-direction:column;
  gap:6px;
}
.schedule-eyebrow,
.schedule-panel-kicker {
  color:#67e8f9;
  font-size:.65rem;
  font-weight:800;
  letter-spacing:.13em;
  text-transform:uppercase;
}
.schedule-hero-copy h2 {
  font-size:1.65rem;
  letter-spacing:-.035em;
}
.schedule-hero-copy p {
  max-width:580px;
  color:var(--text2);
  font-size:.86rem;
  line-height:1.55;
}
.schedule-head-actions { position:relative; z-index:1; }
.schedule-primary-action {
  border-color:rgba(34,211,238,.38) !important;
  background:linear-gradient(135deg, rgba(34,211,238,.2), rgba(14,165,183,.1)) !important;
  color:#a5f3fc !important;
}
.schedule-stats {
  display:grid;
  grid-template-columns:repeat(4, minmax(0, 1fr));
  gap:12px;
}
.schedule-stat-card {
  min-width:0;
  display:flex;
  align-items:center;
  gap:12px;
  padding:14px 16px;
  border:1px solid rgba(49,67,95,.64);
  border-radius:16px;
  background:rgba(13,19,32,.72);
  box-shadow:0 10px 32px rgba(0,0,0,.12);
}
.schedule-stat-icon {
  width:36px;
  height:36px;
  flex:0 0 36px;
  display:grid;
  place-items:center;
  border-radius:11px;
  font-size:.82rem;
  font-weight:900;
}
.schedule-stat-icon.cyan { color:#67e8f9; background:rgba(34,211,238,.1); }
.schedule-stat-icon.green { color:#6ee7b7; background:rgba(52,211,153,.1); }
.schedule-stat-icon.amber { color:#fcd34d; background:rgba(245,158,11,.1); }
.schedule-stat-icon.violet { color:#c4b5fd; background:rgba(168,85,247,.1); }
.schedule-stat-card > div { min-width:0; display:flex; flex-direction:column; gap:3px; }
.schedule-stat-card span:not(.schedule-stat-icon) { color:var(--text2); font-size:.68rem; }
.schedule-stat-card strong {
  overflow:hidden;
  color:var(--text);
  font-size:.9rem;
  line-height:1.25;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.schedule-layout {
  display:grid;
  grid-template-columns:minmax(300px, 380px) minmax(560px, 1fr);
  gap:16px;
  align-items:start;
}
.schedule-form,
.schedule-list-panel,
.schedule-runs-panel {
  border:1px solid rgba(49,67,95,.66);
  border-radius:20px;
  background:linear-gradient(180deg, rgba(17,26,43,.9), rgba(9,15,25,.94));
  box-shadow:0 16px 45px rgba(0,0,0,.16);
}
.schedule-form {
  min-width:0;
  display:flex;
  flex-direction:column;
  gap:0;
  overflow:hidden;
}
.schedule-form-head {
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:14px;
  padding:18px 20px;
  border-bottom:1px solid rgba(49,67,95,.54);
  background:rgba(255,255,255,.018);
}
.schedule-form-title { display:flex; flex-direction:column; gap:4px; }
.schedule-form-title strong { font-size:1rem; }
.schedule-form-title span,
.schedule-list-head span { color:var(--text2); font-size:.74rem; }
.schedule-form-title .schedule-panel-kicker,
.schedule-list-head .schedule-panel-kicker { color:#67e8f9; font-size:.62rem; }
.schedule-editor-badge {
  flex:0 0 auto;
  padding:5px 9px;
  border:1px solid rgba(168,85,247,.28);
  border-radius:999px;
  color:#c4b5fd;
  background:rgba(168,85,247,.08);
  font-size:.64rem;
  font-weight:750;
}
.schedule-form-section {
  display:flex;
  flex-direction:column;
  gap:13px;
  padding:18px 20px;
  border-bottom:1px solid rgba(49,67,95,.48);
}
.schedule-section-heading {
  display:flex;
  align-items:flex-start;
  gap:10px;
}
.schedule-section-index {
  width:29px;
  height:29px;
  flex:0 0 29px;
  display:grid;
  place-items:center;
  border:1px solid rgba(34,211,238,.25);
  border-radius:9px;
  color:#67e8f9;
  background:rgba(34,211,238,.07);
  font-size:.62rem;
  font-weight:850;
}
.schedule-section-heading > div {
  display:flex;
  flex-direction:column;
  gap:2px;
}
.schedule-section-heading strong { font-size:.84rem; }
.schedule-section-heading div span { color:var(--text2); font-size:.68rem; line-height:1.4; }
.schedule-form-grid {
  display:grid;
  grid-template-columns:repeat(2, minmax(0, 1fr));
  gap:10px;
}
.schedule-time-grid { grid-template-columns:repeat(3, minmax(0, 1fr)); }
.schedule-ai-grid { grid-template-columns:repeat(3, minmax(0, 1fr)); }
.schedule-field { display:flex; flex-direction:column; gap:6px; min-width:0; }
.schedule-field > span { color:var(--text2); font-size:.74rem; font-weight:650; }
.schedule-field input,
.schedule-field select,
.schedule-field textarea {
  width:100%;
  min-width:0;
  background:rgba(4,7,14,.72);
  border:1px solid rgba(49,67,95,.78);
  border-radius:10px;
  color:var(--text);
  padding:10px 11px;
  outline:none;
  font-family:var(--font);
  transition:border-color .16s, box-shadow .16s, background .16s;
}
.schedule-field input:focus,
.schedule-field select:focus,
.schedule-field textarea:focus {
  border-color:rgba(34,211,238,.52);
  background:rgba(7,12,21,.94);
  box-shadow:0 0 0 3px rgba(34,211,238,.1);
}
.schedule-conversation-row,
.schedule-ai-row {
  display:flex;
  align-items:center;
  gap:8px;
}
.schedule-conversation-row select,
.schedule-ai-row input { flex:1; }
.schedule-conversation-row .editor-btn,
.schedule-ai-row .editor-btn { flex:0 0 auto; white-space:nowrap; }
.schedule-ai-helper {
  display:flex;
  flex-direction:column;
  gap:7px;
  padding:11px 12px;
  border:1px solid rgba(168,85,247,.28);
  border-radius:12px;
  background:linear-gradient(135deg, rgba(168,85,247,.09), rgba(34,211,238,.04));
}
.schedule-inline-check {
  display:flex;
  align-items:center;
  gap:10px;
  color:var(--text2);
  font-size:.68rem;
}
.schedule-verify-panel {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  flex-wrap:wrap;
  padding:10px 11px;
  border:1px solid var(--border);
  border-radius:11px;
  background:rgba(4,7,14,.34);
}
.schedule-prompt-field textarea {
  min-height:150px;
  resize:vertical;
  line-height:1.5;
  font-family:var(--font);
}
.schedule-form-actions {
  padding:16px 20px;
  background:rgba(4,7,14,.28);
}
.schedule-enabled { display:flex; align-items:center; gap:9px; color:var(--text2); font-size:.8rem; }
.schedule-enabled input { accent-color:var(--accent); }
.schedule-enabled > span { display:flex; flex-direction:column; gap:1px; }
.schedule-enabled strong { color:var(--text); font-size:.76rem; }
.schedule-enabled small { color:var(--text2); font-size:.64rem; }
.schedule-list-panel {
  position:sticky;
  top:0;
  min-height:560px;
  padding:16px;
}
.schedule-list-head > div { display:flex; flex-direction:column; gap:3px; }
.schedule-list-tools {
  display:grid;
  grid-template-columns:minmax(0, 1fr) auto;
  gap:8px;
  margin-top:13px;
}
.schedule-search { width:100%; }
.schedule-search input,
.schedule-list-tools select {
  width:100%;
  min-width:0;
  height:38px;
  border:1px solid rgba(49,67,95,.72);
  border-radius:10px;
  background:rgba(4,7,14,.65);
  color:var(--text);
  outline:none;
  font-family:var(--font);
  font-size:.72rem;
}
.schedule-search input { padding:8px 10px; }
.schedule-list-tools select { width:112px; padding:7px 9px; }
.schedule-list {
  display:flex;
  flex-direction:column;
  gap:9px;
  margin-top:12px;
  max-height:760px;
  overflow:auto;
  padding-right:3px;
}
.schedule-empty {
  grid-column:1 / -1;
  color:var(--text2);
  text-align:center;
  padding:38px 14px;
  font-size:.8rem;
  line-height:1.55;
}
.schedule-item {
  position:relative;
  overflow:hidden;
  border:1px solid rgba(49,67,95,.66);
  border-radius:13px;
  padding:12px 12px 11px;
  background:rgba(255,255,255,.022);
  display:flex;
  flex-direction:column;
  gap:9px;
  transition:border-color .16s, background .16s, transform .16s;
}
.schedule-item::before {
  content:'';
  position:absolute;
  inset:0 auto 0 0;
  width:3px;
  background:rgba(49,67,95,.8);
}
.schedule-item:hover { border-color:rgba(34,211,238,.28); transform:translateY(-1px); }
.schedule-item.selected { border-color:rgba(34,211,238,.48); background:rgba(34,211,238,.052); }
.schedule-item.selected::before { background:var(--accent); }
.schedule-item.disabled { opacity:.7; }
.schedule-item-title { min-width:0; display:flex; flex-direction:column; gap:3px; }
.schedule-item-title strong { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:.86rem; }
.schedule-item-title span { color:var(--text2); font-size:.72rem; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.schedule-status {
  flex:0 0 auto;
  padding:3px 8px;
  border-radius:999px;
  border:1px solid var(--border);
  color:var(--text2);
  font-size:.68rem;
  font-weight:750;
  text-transform:capitalize;
}
.schedule-status.ready { color:#a5f3fc; border-color:rgba(34,211,238,.26); background:rgba(34,211,238,.07); }
.schedule-status.succeeded { color:#a7f3d0; border-color:rgba(52,211,153,.32); background:rgba(52,211,153,.08); }
.schedule-status.failed { color:#fda4af; border-color:rgba(251,113,133,.34); background:rgba(251,113,133,.08); }
.schedule-status.running,
.schedule-status.queued { color:#67e8f9; border-color:rgba(34,211,238,.34); background:rgba(34,211,238,.08); }
.schedule-status.skipped,
.schedule-status.paused { color:#fcd34d; border-color:rgba(245,158,11,.32); background:rgba(245,158,11,.08); }
.schedule-item-meta { display:flex; flex-wrap:wrap; gap:6px; color:var(--text2); font-size:.7rem; }
.schedule-item-meta span {
  padding:3px 7px;
  border:1px solid rgba(49,67,95,.62);
  border-radius:999px;
  background:rgba(4,7,14,.32);
}
.schedule-item-next {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  padding:8px 9px;
  border-radius:10px;
  background:rgba(4,7,14,.36);
  color:var(--text2);
  font-size:.68rem;
}
.schedule-item-next strong {
  color:#bae6fd;
  font-size:.7rem;
  text-align:right;
}
.schedule-item-prompt {
  color:#cbd5e1;
  font-size:.76rem;
  line-height:1.45;
  overflow:hidden;
  display:-webkit-box;
  -webkit-line-clamp:2;
  -webkit-box-orient:vertical;
}
.schedule-item-actions { flex-wrap:wrap; }
.schedule-item-actions .editor-btn { padding:6px 8px; font-size:.68rem; }
.schedule-runs-panel { min-height:170px; padding:16px; }
.schedule-runs { display:grid; grid-template-columns:repeat(3, minmax(0, 1fr)); gap:9px; margin-top:12px; }
.schedule-run {
  border:1px solid rgba(49,67,95,.64);
  border-radius:12px;
  padding:11px 12px;
  background:rgba(255,255,255,.018);
  display:flex;
  flex-direction:column;
  gap:8px;
}
.schedule-run-meta { justify-content:space-between; color:var(--text2); font-size:.7rem; flex-wrap:wrap; }
.schedule-run-error { color:#fda4af; font-size:.72rem; line-height:1.4; word-break:break-word; }
