/* ── Dark Theme ── */
body.dark {
  --color-text: #e0e0e0;
  --color-text-muted: #999;
  --color-text-faint: #555;
  --color-surface: rgba(22, 33, 62, 0.65);
  --color-border: rgba(255, 255, 255, 0.06);
  background: #0f1923;
  background-image:
    radial-gradient(ellipse at 15% 20%, rgba(var(--color-primary-rgb), 0.08) 0%, transparent 50%),
    radial-gradient(ellipse at 85% 25%, rgba(var(--color-secondary-rgb), 0.06) 0%, transparent 50%),
    radial-gradient(ellipse at 50% 80%, rgba(102, 126, 234, 0.05) 0%, transparent 50%);
  color: #e0e0e0;
}
body.dark::before {
  background: radial-gradient(circle, rgba(var(--color-primary-rgb),0.08), transparent 70%);
}
body.dark::after {
  background: radial-gradient(circle, rgba(var(--color-secondary-rgb),0.06), transparent 70%);
}

/* header */
body.dark .header {
  background: rgba(22, 33, 62, 0.75);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  border-bottom-color: rgba(255, 255, 255, 0.06);
  box-shadow: 0 1px 12px rgba(0, 0, 0, 0.15);
}
body.dark .header .title { color: #e0e0e0; }
body.dark .header .logo-light { display: none; }
body.dark .header .logo-dark { display: block; }
body.dark .header .model-select {
  background: rgba(26, 26, 46, 0.6);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border-color: rgba(255, 255, 255, 0.08);
  color: #ccc;
}

/* theme toggle */
body.dark .theme-toggle { border-color: rgba(255, 255, 255, 0.08); }
body.dark .theme-toggle:hover { border-color: var(--color-primary); }
body.dark .theme-toggle svg { fill: #ccc; }
body.dark .theme-toggle .icon-moon { display: none; }
body.dark .theme-toggle .icon-sun { display: block; }

/* welcome */
body.dark .welcome h2 { color: #e0e0e0; }
body.dark .welcome p { color: #888; }

/* quick buttons */
body.dark .quick-btn {
  background: rgba(22, 33, 62, 0.6);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border-color: rgba(255, 255, 255, 0.06);
  color: #aaa;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
}
body.dark .quick-btn:hover {
  border-color: rgba(var(--color-primary-rgb), 0.4);
  color: var(--color-primary);
  background: rgba(var(--color-primary-rgb), 0.08);
  box-shadow: 0 8px 24px rgba(var(--color-primary-rgb), 0.08);
}

/* chat area */
body.dark .chat-area::-webkit-scrollbar-thumb { background: #3a3a5a; }

/* messages */
body.dark .msg.assistant .bubble {
  background: rgba(22, 33, 62, 0.65);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  color: #f0f0f0;
  border-color: rgba(255, 255, 255, 0.06);
  box-shadow: 0 2px 12px rgba(0, 0, 0, 0.15);
}
body.dark .msg.user .avatar { background: #4a5aaa; }

/* thinking steps */
body.dark .thinking-steps::-webkit-scrollbar-thumb { background: #3a3a5a; }
body.dark .thinking-step { color: #bbb; }
body.dark .thinking-step.done .dot { background: #888; }
body.dark .thinking-toggle { color: #aaa; }
body.dark .thinking-toggle:hover { color: var(--color-primary); }

/* input */
body.dark .input-box {
  background: rgba(22, 33, 62, 0.65);
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
  background-image: linear-gradient(rgba(22,33,62,0.65), rgba(22,33,62,0.65)), linear-gradient(90deg, var(--color-primary), var(--color-secondary));
  box-shadow: 0 4px 24px rgba(0, 0, 0, 0.2);
}
body.dark .input-box textarea { color: #f0f0f0; }
body.dark .input-box textarea::placeholder { color: #888; }
body.dark .tag { border-color: rgba(255,255,255,0.08); color: #bbb; }
body.dark .tag.active { border-color: var(--color-primary); color: var(--color-primary); }
body.dark .upload-btn { border-color: rgba(255,255,255,0.08); color: #bbb; }
body.dark .upload-btn:hover { border-color: var(--color-primary); color: var(--color-primary); }
body.dark .web-search-toggle { border-color: rgba(255,255,255,0.08); color: #bbb; }
body.dark .web-search-toggle:hover { border-color: var(--color-primary); color: var(--color-primary); }
body.dark .web-search-toggle.active { background: var(--color-primary); border-color: var(--color-primary); color: #fff; }

/* footer */
body.dark .footer { color: #555; }

/* markdown in bubble */
body.dark .table-export-btn {
  border-color: rgba(255, 255, 255, 0.08);
  background: rgba(22, 33, 62, 0.85);
  color: #bbb;
}
body.dark .table-export-btn:hover {
  border-color: var(--color-primary);
  color: var(--color-primary);
  background: rgba(22, 33, 62, 1);
}
body.dark .msg.assistant .bubble th,
body.dark .msg.assistant .bubble td { border-color: #2a2a4a; }
body.dark .msg.assistant .bubble th { background: #1a1a2e; color: #ddd; }
body.dark .msg.assistant .bubble tr:hover { background: #1e2a4a; }
body.dark .msg.assistant .bubble code { background: #1a1a2e; color: #e8e8e8; }
body.dark .msg.assistant .bubble pre { background: #111827; color: #e8e8e8; }
body.dark .msg.assistant .bubble blockquote { color: #ccc; }
body.dark .msg.assistant .bubble hr { border-top-color: #2a2a4a; }
body.dark .msg.assistant .bubble h1,
body.dark .msg.assistant .bubble h2,
body.dark .msg.assistant .bubble h3 { color: #f0f0f0; }

/* charts */
body.dark .echart-container { background: #111827; }

/* Chat generating indicator dark mode */
body.dark .chat-gen-indicator {
  background: linear-gradient(135deg, rgba(0,148,244,0.08) 0%, rgba(26,26,46,0.6) 50%, rgba(100,80,200,0.06) 100%);
  border-color: rgba(0,148,244,0.15);
}
body.dark .chat-gen-text {
  color: #ccc;
}

/* ChopChat ball dark mode */
body.dark .chopchat-ball-label {
  color: rgba(0, 201, 195, 0.6);
}
body.dark .chopchat-ball-tip {
  background: rgba(30, 34, 54, 0.9);
}
body.dark .chopchat-ball-tip::after {
  border-top-color: rgba(30, 34, 54, 0.9);
}

body.dark .chart-toolbar {
  background: rgba(26, 26, 46, 0.6);
  border-color: rgba(255, 255, 255, 0.06);
}
body.dark .chart-toolbar .tb-btn { color: #bbb; }
body.dark .chart-toolbar .tb-btn:hover { background: rgba(var(--color-primary-rgb),0.15); color: var(--color-primary); }
body.dark .chart-toolbar .tb-btn.active { background: rgba(var(--color-primary-rgb),0.2); color: var(--color-primary); }
body.dark .chart-toolbar .tb-sep { background: rgba(255,255,255,0.08); }
body.dark .chart-toolbar .tb-btn .tip { background: #1a1a2e; color: #e8e8e8; }
body.dark .chart-toolbar .tb-btn .tip::after { border-top-color: #1a1a2e; }
body.dark .chart-data-panel { border-color: rgba(255,255,255,0.06); }
body.dark .chart-data-panel th { background: rgba(26,26,46,0.6); color: #ddd; }
body.dark .chart-data-panel td { border-top-color: rgba(255,255,255,0.06); color: #e8e8e8; }
body.dark .chart-data-panel tr:hover td { background: rgba(30,42,74,0.5); }
body.dark .chart-data-actions { background: rgba(26,26,46,0.6); border-top-color: rgba(255,255,255,0.06); }

/* report panel */
body.dark .report-panel { background: rgba(22,33,62,0.65); border-color: rgba(255,255,255,0.06); }
body.dark .report-panel h4 { color: #f0f0f0; }
body.dark .ph-item code { background: rgba(26,26,46,0.6); color: #ddd; }
body.dark .ph-item input,
body.dark .ph-item select {
  background: rgba(26,26,46,0.6);
  border-color: rgba(255,255,255,0.08);
  color: #e8e8e8;
}
body.dark .btn-cancel { background: rgba(42,42,74,0.6); color: #ddd; }

/* login */
body.dark .login-card {
  background: #1a2236;
  box-shadow: 0 12px 48px rgba(0,0,0,0.4);
}
body.dark .login-card .login-logo-light { display: none !important; }
body.dark .login-card .login-logo-dark { display: inline !important; }
body.dark .login-card h3 { color: #e0e0e0; }
body.dark .login-card input {
  background: rgba(26,26,46,0.6);
  border-color: rgba(255,255,255,0.08);
  color: #e0e0e0;
}
body.dark .login-card input::placeholder {
  color: #888;
  opacity: 1;
}

/* sidebar */
body.dark .sidebar {
  background: rgba(22,33,62,0.6);
  border-right-color: rgba(255,255,255,0.06);
}
body.dark .sidebar-search {
  background: rgba(26,26,46,0.5);
  border-color: rgba(255,255,255,0.08);
  color: #e8e8e8;
}
body.dark .conv-list::-webkit-scrollbar-thumb { background: #3a3a5a; }
body.dark .conv-item:hover { background: rgba(var(--color-primary-rgb),0.08); }
body.dark .conv-item.active { background: rgba(var(--color-primary-rgb),0.15); }
body.dark .conv-item .conv-title { color: #e8e8e8; }
body.dark .conv-item .conv-time { color: #999; }

/* header user info */
body.dark .header .user-nick { color: #ddd; }
body.dark .header .logout-btn { border-color: rgba(255,255,255,0.08); color: #bbb; }
body.dark .header .logout-btn:hover { border-color: var(--color-danger); color: var(--color-danger); }

/* header export button */
body.dark .header .export-conv-btn {
  border-color: rgba(255,255,255,0.08);
  color: #ddd;
  background: rgba(26,26,46,0.6);
}
body.dark .header .export-conv-btn:hover {
  border-color: var(--color-primary);
  color: var(--color-primary);
}

/* export icon group */
body.dark .export-toolbox {
  background: rgba(26,26,46,0.84);
  border-color: rgba(255,255,255,0.12);
}
body.dark .export-icon-btn {
  background: rgba(22,22,36,0.92);
  border-color: rgba(255,255,255,0.1);
}
body.dark .export-icon-btn.export-pdf {
  color: #F06050;
}
body.dark .export-icon-btn.export-pdf:hover {
  background: rgba(240,96,80,0.12);
  border-color: #F06050;
}
body.dark .export-icon-btn.export-word {
  color: #5B9EE6;
}
body.dark .export-icon-btn.export-word:hover {
  background: rgba(91,158,230,0.12);
  border-color: #5B9EE6;
}
body.dark .export-icon-btn.export-ppt {
  color: #E06040;
}
body.dark .export-icon-btn.export-ppt:hover {
  background: rgba(224,96,64,0.12);
  border-color: #E06040;
}

/* gen ppt premium button */
body.dark .gen-ppt-btn {
  box-shadow: 0 2px 8px rgba(0,148,244,0.2);
}
body.dark .gen-ppt-btn:hover {
  box-shadow: 0 4px 16px rgba(0,148,244,0.3);
}

/* PDF export actions */
body.dark .bubble-actions {
  border-top-color: rgba(255,255,255,0.06);
}
body.dark .bubble-export-toolbox {
  background: rgba(26,26,46,0.72);
  border-color: rgba(255,255,255,0.08);
}

/* search confirm card */
body.dark .search-confirm {
  background: rgba(22, 33, 62, 0.65);
  border-color: rgba(var(--color-primary-rgb), 0.2);
  box-shadow: 0 2px 12px rgba(0, 0, 0, 0.2);
}
body.dark .search-confirm-text { color: #ccc; }
body.dark .search-confirm-text small { color: #888; }

/* workbench trigger */
body.dark .wb-trigger {
  background: rgba(22,33,62,0.7);
  border-color: rgba(var(--color-primary-rgb),0.2);
  box-shadow: 0 2px 12px rgba(0,0,0,0.2);
}
body.dark .wb-trigger:hover {
  border-color: var(--color-primary);
  background: rgba(var(--color-primary-rgb),0.12);
}
body.dark .wb-trigger .tip { background: #1a1a2e; color: #ccc; }
body.dark .wb-trigger .tip::after { border-left-color: #1a1a2e; }

/* workbench card */
body.dark .wb-card {
  background: #1a2236;
  box-shadow: 0 12px 48px rgba(0,0,0,0.4);
}
body.dark .wb-header { border-bottom-color: rgba(255,255,255,0.06); }
body.dark .wb-header h3 { color: #e0e0e0; }

/* workbench datasets */
body.dark .wb-datasets { border-right-color: rgba(255,255,255,0.06); }
body.dark .wb-datasets::-webkit-scrollbar-thumb { background: #3a3a5a; }
body.dark .wb-ds-label { color: #999; }
body.dark .wb-ds-item { color: #ddd; }
body.dark .wb-ds-item:hover { background: rgba(var(--color-primary-rgb),0.08); }
body.dark .wb-ds-item.active { background: rgba(var(--color-primary-rgb),0.15); color: var(--color-primary); }
body.dark .wb-field-group-label { color: #999; }
body.dark .wb-field.dimension { background: rgba(76,175,80,0.15); color: #66BB6A; }
body.dark .wb-field.dimension:hover { background: rgba(76,175,80,0.25); }
body.dark .wb-field.measure { background: rgba(33,150,243,0.15); color: #42A5F5; }
body.dark .wb-field.measure:hover { background: rgba(33,150,243,0.25); }
body.dark .wb-empty-ds { color: #999; }

/* workbench data preview */
body.dark .wb-data-preview { border-top-color: rgba(255,255,255,0.06); }
body.dark .wb-data-preview .wb-preview-label { color: #999; }
body.dark .wb-data-preview th { background: rgba(26,26,46,0.6); color: #ddd; }
body.dark .wb-data-preview td { border-top-color: rgba(255,255,255,0.06); color: #e8e8e8; }

/* workbench drop zone */
body.dark .wb-drop-zone { border-color: rgba(255,255,255,0.1); }
body.dark .wb-drop-zone.drag-over {
  border-color: var(--color-primary);
  background: rgba(var(--color-primary-rgb),0.08);
}
body.dark .wb-drop-zone .wb-zone-hint { color: #555; }
body.dark .wb-dropped-field.dim-chip { background: rgba(76,175,80,0.18); color: #66BB6A; }
body.dark .wb-dropped-field.mea-chip { background: rgba(33,150,243,0.18); color: #42A5F5; }
body.dark .wb-dropped-field .agg-select option { color: #333; background: #fff; }
body.dark .wb-dropped-field .chart-type-select option { color: #333; background: #fff; }
body.dark .wb-dropped-field .remove-field:hover { background: rgba(255,255,255,0.1); }

/* workbench config */
body.dark .wb-config { border-left-color: rgba(255,255,255,0.06); }
body.dark .wb-config::-webkit-scrollbar-thumb { background: #3a3a5a; }
body.dark .wb-config-label { color: #999; }
body.dark .wb-title-input {
  background: rgba(26,26,46,0.5);
  border-color: rgba(255,255,255,0.08);
  color: #e8e8e8;
}
body.dark .wb-type-group .tb-btn { color: #bbb; }
body.dark .wb-type-group .tb-btn:hover { background: rgba(var(--color-primary-rgb),0.15); color: var(--color-primary); }
body.dark .wb-type-group .tb-btn.active { background: rgba(var(--color-primary-rgb),0.2); color: var(--color-primary); }

/* workbench empty hint */
body.dark .wb-empty-hint { color: #999; }
body.dark .wb-empty-hint svg { fill: #3a3a5a; }

/* workbench footer */
body.dark .wb-footer { border-top-color: rgba(255,255,255,0.06); }
body.dark .wb-btn-secondary { border-color: rgba(255,255,255,0.08); color: #ddd; }
body.dark .wb-btn-secondary:hover { border-color: var(--color-primary); color: var(--color-primary); }

/* workbench responsive */
@media (max-width: 768px) {
  body.dark .wb-datasets { border-bottom-color: rgba(255,255,255,0.06); }
  body.dark .wb-config { border-top-color: rgba(255,255,255,0.06); }
}

/* PPT export menu */
body.dark .ppt-export-menu {
  background: rgba(22, 33, 62, 0.95);
  border-color: rgba(255,255,255,0.08);
  box-shadow: 0 6px 24px rgba(0,0,0,0.3);
}
body.dark .ppt-export-menu .wem-item { color: #ddd; }
body.dark .ppt-export-menu .wem-item:hover {
  background: rgba(var(--color-primary-rgb), 0.12);
  color: var(--color-primary);
}
body.dark .ppt-export-menu .wem-desc { color: #888; }

/* PPT Assistant panel - PowerPoint style editor */
body.dark .ppt-card {
  background: #1a2236;
  box-shadow: 0 12px 48px rgba(0,0,0,0.4);
}

/* Toolbar */
body.dark .ppt-toolbar {
  background: rgba(22,33,62,0.8);
  border-bottom-color: rgba(255,255,255,0.06);
}
body.dark .ppt-toolbar-title { color: #e0e0e0; }
body.dark .ppt-toolbar-close { color: #999; }
body.dark .ppt-toolbar-close:hover { background: rgba(255,255,255,0.08); color: #e0e0e0; }
body.dark .ppt-tool-btn {
  background: rgba(26,26,46,0.6);
  border-color: rgba(255,255,255,0.08);
  color: #bbb;
}
body.dark .ppt-tool-btn:hover {
  border-color: var(--color-primary);
  color: var(--color-primary);
  background: rgba(var(--color-primary-rgb),0.08);
}
body.dark .ppt-tool-btn:disabled {
  opacity: 0.3;
}

/* Sidebar */
body.dark .ppt-slide-sidebar {
  background: rgba(22,33,62,0.6);
  border-right-color: rgba(255,255,255,0.06);
}
body.dark .ppt-slide-sidebar::-webkit-scrollbar-thumb { background: #3a3a5a; }

/* Thumbnails */
body.dark .slide-thumb {
  background: rgba(26,26,46,0.6);
  border-color: rgba(255,255,255,0.08);
}
body.dark .slide-thumb:hover { border-color: rgba(255,255,255,0.15); }
body.dark .slide-thumb.active {
  border-color: var(--color-primary);
  box-shadow: 0 0 0 1px var(--color-primary);
}
body.dark .slide-thumb .thumb-num { color: #888; }
body.dark .slide-thumb .thumb-title { color: #e0e0e0; }
body.dark .slide-thumb .thumb-content { color: #999; }
body.dark .thumb-type-badge.t-title { background: rgba(21,101,192,0.2); color: #64b5f6; }
body.dark .thumb-type-badge.t-content { background: rgba(46,125,50,0.2); color: #66bb6a; }
body.dark .thumb-type-badge.t-chart { background: rgba(230,81,0,0.2); color: #ffa726; }
body.dark .thumb-type-badge.t-table { background: rgba(123,31,162,0.2); color: #ce93d8; }
body.dark .thumb-type-badge.t-footer { background: rgba(255,255,255,0.06); color: #999; }
body.dark .slide-thumb.dragging { border-color: var(--color-primary); opacity: 0.4; }
body.dark .slide-thumb.drag-over-top { box-shadow: 0 -2px 0 0 var(--color-primary); }
body.dark .slide-thumb.drag-over-bottom { box-shadow: 0 2px 0 0 var(--color-primary); }

/* Resizer */
body.dark .ppt-resizer { background: rgba(255,255,255,0.06); }
body.dark .ppt-resizer:hover,
body.dark .ppt-resizer.active { background: var(--color-primary); }

/* Left panel toggle */
body.dark .ppt-left-toggle {
  background: rgba(22,33,62,0.9);
  border-color: rgba(255,255,255,0.08);
  color: #777;
}
body.dark .ppt-left-toggle:hover {
  background: rgba(30,42,74,1);
  color: #ccc;
}

/* Canvas area */
body.dark .ppt-canvas-area { background: #0f1923; }
body.dark .ppt-slide-canvas { background: #1a2236; }
body.dark .ppt-canvas-empty { color: #666; }

/* Canvas elements */
body.dark .canvas-el:hover { border-color: rgba(var(--color-primary-rgb),0.5); }
body.dark .canvas-el.selected { border-color: var(--color-primary); }

/* Visual distinction by content source (dark mode) */
body.dark .canvas-el.source-user {
  border-color: #888;
}
body.dark .canvas-el.source-user:hover {
  border-color: #aaa;
}
body.dark .canvas-el.source-ai.generated {
  border-color: #00d4aa;
}
body.dark .canvas-el.source-ai.generated:hover {
  border-color: #00e6bb;
}
body.dark .canvas-el.source-ai.placeholder,
body.dark .canvas-el.source-placeholder {
  border-color: #00d4aa;
  border-style: dashed;
}
body.dark .canvas-el.source-ai.placeholder:hover,
body.dark .canvas-el.source-placeholder:hover {
  border-color: #00e6bb;
}

/* Text content wrapper (dark mode) */
body.dark .canvas-el-text-content {
  color: #e0e0e0;
}

body.dark .canvas-el.type-title,
body.dark .canvas-el.type-subtitle,
body.dark .canvas-el.type-content { color: #e0e0e0; }
body.dark .canvas-el.type-chart {
  border-color: rgba(var(--color-primary-rgb),0.3);
  background: rgba(var(--color-primary-rgb),0.05);
}
body.dark .canvas-el.type-chart .chart-placeholder { color: var(--color-primary); }
body.dark .canvas-el.type-table {
  border-color: rgba(76,175,80,0.3);
  background: rgba(76,175,80,0.05);
}
body.dark .canvas-el.type-table th { background: rgba(26,26,46,0.6); color: #ddd; }
body.dark .canvas-el.type-table td { color: #e0e0e0; border-color: rgba(255,255,255,0.08); }
body.dark .canvas-el.type-table .table-placeholder { color: #66bb6a; }

/* Image element in dark mode */
body.dark .canvas-el.type-image {
  border-color: rgba(255,255,255,0.1);
  background: rgba(26,26,46,0.6);
}
body.dark .canvas-el.type-image .image-placeholder {
  background: rgba(255,255,255,0.03);
  color: #888;
}

/* Chat drawer */
body.dark .ppt-chat-drawer { border-top-color: rgba(255,255,255,0.06); background: #1a2236; }
body.dark .ppt-chat-handle {
  background: rgba(22,33,62,0.8);
  color: #999;
}
body.dark .ppt-chat-handle:hover {
  background: rgba(22,33,62,1);
  color: #bbb;
}
body.dark .ppt-chat-area::-webkit-scrollbar-thumb { background: #3a3a5a; }
body.dark .ppt-msg.assistant {
  background: rgba(22,33,62,0.65);
  color: #f0f0f0;
}
body.dark .ppt-msg.assistant .ppt-msg-rendered { color: #f0f0f0; }
body.dark .ppt-msg.assistant .ppt-msg-rendered p { color: #f0f0f0; }
body.dark .ppt-msg.assistant .ppt-msg-rendered code { background: #1a1a2e; color: #e8e8e8; }
body.dark .ppt-msg.assistant .ppt-msg-rendered pre { background: #111827; color: #e8e8e8; }
body.dark .ppt-input-area { border-top-color: rgba(255,255,255,0.06); }
body.dark .ppt-input-area textarea {
  background: rgba(26,26,46,0.6);
  border-color: rgba(255,255,255,0.08);
  color: #e8e8e8;
}
body.dark .ppt-input-area textarea:focus { border-color: var(--color-primary); }

/* Loading */
body.dark .ppt-outline-loading { color: #888; }
body.dark .ppt-outline-loading .ppt-spinner {
  border-color: rgba(255,255,255,0.1);
  border-top-color: var(--color-primary);
}
body.dark .ppt-canvas-loading {
  background: rgba(26,34,54,0.95);
  color: #bbb;
}
body.dark .ppt-canvas-loading .ppt-loading-title { color: #e0e0e0; }
body.dark .ppt-canvas-loading .ppt-loading-status { color: #888; }
body.dark .ppt-canvas-loading .ppt-loading-label { color: #999; }
body.dark .ppt-canvas-loading .ppt-loading-mood { color: #778; }
body.dark .ppt-canvas-loading .ppt-loading-progress {
  background: linear-gradient(90deg, #0094F4, #00C9C3);
}

/* ── PPT Outline Sidebar ── */
body.dark .ppt-outline-sidebar {
  background: rgba(22,33,62,0.6);
  border-right-color: rgba(255,255,255,0.06);
}
body.dark .ppt-outline-header {
  background: rgba(22,33,62,0.8);
  border-bottom-color: rgba(255,255,255,0.06);
  color: #e0e0e0;
}
body.dark .ppt-outline-close { color: #888; }
body.dark .ppt-outline-close:hover { background: rgba(255,255,255,0.08); color: #ddd; }
body.dark .ppt-outline-tree::-webkit-scrollbar-thumb { background: #3a3a5a; }

/* ── Outline Elements ── */

body.dark .outline-slide {
  background: transparent;
  border-color: transparent;
}

body.dark .outline-slide-header {
  background: transparent;
}
body.dark .outline-slide-header:hover {
  background: rgba(255,255,255,0.04);
}
body.dark .outline-slide-header.active {
  background: rgba(0,148,244,0.08);
}
body.dark .outline-slide-header.dragging {
  opacity: 0.5;
}

body.dark .outline-toggle {
  color: #666;
}

body.dark .outline-slide-title {
  color: #ddd;
}

body.dark .outline-action-btn {
  color: #666;
}
body.dark .outline-action-btn:hover {
  background: rgba(255,255,255,0.08);
  color: #bbb;
}

body.dark .outline-slide-body {
  border-left-color: rgba(255,255,255,0.08);
}

body.dark .outline-element {
  background: transparent;
}
body.dark .outline-element:hover {
  background: rgba(255,255,255,0.03);
}
body.dark .outline-element.selected {
  background: rgba(var(--color-primary-rgb),0.1);
  border-left-color: var(--color-primary);
}

body.dark .outline-element-type {
  color: #777;
}

body.dark .outline-source-user {
  color: #777;
  background: rgba(255,255,255,0.05);
}
body.dark .outline-source-ai {
  color: #34d399;
  background: rgba(16,185,129,0.1);
}

body.dark .outline-element-text {
  color: #ccc;
}
body.dark .outline-element-text[contenteditable="true"] {
  background: rgba(26,26,46,0.8);
  outline-color: var(--color-primary);
}

body.dark .outline-slide.drag-over-top,
body.dark .outline-slide.drag-over-bottom {
  box-shadow: 0 -2px 0 0 var(--color-primary);
}

/* ── Properties Panel ── */
body.dark .ppt-properties-panel {
  background: rgba(22,33,62,0.8);
  border-left-color: rgba(255,255,255,0.06);
}

body.dark .ppt-properties-resizer:hover,
body.dark .ppt-properties-resizer.active {
  background: var(--color-primary);
}

body.dark .ppt-properties-header {
  border-bottom-color: rgba(255,255,255,0.06);
  color: #e0e0e0;
}

body.dark .ppt-properties-close {
  color: #888;
}
body.dark .ppt-properties-close:hover {
  background: rgba(255,255,255,0.08);
  color: #ddd;
}

body.dark .ppt-properties-body::-webkit-scrollbar-thumb {
  background: #3a3a5a;
}

body.dark .ppt-properties-empty {
  color: #888;
}

body.dark .ppt-prop-label {
  color: #999;
}

body.dark .ppt-prop-field label {
  color: #888;
}

body.dark .ppt-prop-input,
body.dark .ppt-prop-select {
  background: rgba(26,26,46,0.6);
  border-color: rgba(255,255,255,0.08);
  color: #e0e0e0;
}
body.dark .ppt-prop-input:focus {
  border-color: var(--color-primary);
}

body.dark .ppt-prop-btn {
  background: rgba(26,26,46,0.6);
  border-color: rgba(255,255,255,0.08);
  color: #ddd;
}
body.dark .ppt-prop-btn:hover {
  border-color: var(--color-primary);
  color: var(--color-primary);
  background: rgba(var(--color-primary-rgb),0.08);
}

/* Format bar (B/I/U + align) dark mode */
body.dark .ppt-format-bar {
  background: rgba(26,26,46,0.6);
}

/* Generating indicator dark mode */
body.dark .ppt-gen-indicator {
  background: linear-gradient(135deg, rgba(0,148,244,0.08) 0%, rgba(26,26,46,0.6) 50%, rgba(100,80,200,0.06) 100%);
  border-color: rgba(0,148,244,0.15);
}
body.dark .ppt-gen-text {
  color: #ccc;
}
body.dark .ppt-format-btn {
  color: #aaa;
}
body.dark .ppt-format-btn:hover {
  background: rgba(255,255,255,0.08);
  color: #e0e0e0;
}
body.dark .ppt-format-btn.active {
  background: var(--color-primary, #0094F4);
  color: #fff;
}
body.dark .ppt-format-sep {
  background: rgba(255,255,255,0.1);
}

/* Column width controls dark mode */
body.dark .ppt-colwidth-item label {
  color: #777;
}
body.dark .ppt-colwidth-item input {
  background: rgba(26,26,46,0.6);
  border-color: rgba(255,255,255,0.08);
  color: #e0e0e0;
}
body.dark .ppt-colwidth-item input:focus {
  border-color: var(--color-primary, #0094F4);
}

/* Collapsible property sections dark mode */
body.dark .ppt-prop-section {
  border-bottom-color: rgba(255,255,255,0.06);
}
body.dark .ppt-prop-section-arrow {
  color: #777;
}
body.dark .ppt-prop-section-icon {
  color: #888;
}
body.dark .ppt-prop-section-title {
  color: #ddd;
}
body.dark .ppt-prop-section-badge.source-user {
  background: rgba(255,255,255,0.08);
  color: #aaa;
}
body.dark .ppt-prop-section-badge.source-ai {
  background: rgba(0,148,244,0.15);
  color: var(--color-primary, #0094F4);
}
body.dark .ppt-prop-section-badge.source-placeholder {
  background: rgba(255,193,7,0.15);
  color: #ffc107;
}
body.dark .ppt-prop-group {
  border-bottom-color: rgba(255,255,255,0.04);
}

body.dark .ppt-prop-radio {
  color: #ddd;
}

/* ── Resize Handles ── */
body.dark .canvas-el-resize-handle {
  background: var(--color-primary);
  border-color: rgba(26,26,46,0.8);
}

/* Source badge in dark mode */
body.dark .el-source-badge {
  background: rgba(26,26,46,0.9);
  box-shadow: 0 1px 4px rgba(0,0,0,0.3);
}

/* Template Manager in dark mode */
body.dark .template-manager-overlay {
  background: rgba(0, 0, 0, 0.7);
}

body.dark .template-manager-card {
  background: #1a2236;
}

body.dark .template-manager-header {
  background: rgba(22,33,62,0.8);
  border-bottom-color: rgba(255,255,255,0.06);
  color: #e0e0e0;
}

body.dark .template-manager-close {
  color: #888;
}
body.dark .template-manager-close:hover {
  background: rgba(255,255,255,0.08);
  color: #ddd;
}

body.dark .template-manager-body::-webkit-scrollbar-thumb {
  background: #3a3a5a;
}

body.dark .template-save-btn {
  background: rgba(0, 148, 244, 0.1);
  border-color: var(--color-primary);
  color: var(--color-primary);
}
body.dark .template-save-btn:hover {
  background: rgba(0, 148, 244, 0.15);
}

body.dark .template-empty {
  color: #888;
}

body.dark .template-item {
  background: rgba(22,33,62,0.6);
  border-color: rgba(255,255,255,0.06);
}
body.dark .template-item:hover {
  background: rgba(0, 148, 244, 0.08);
  border-color: var(--color-primary);
}

body.dark .template-name {
  color: #e0e0e0;
}

body.dark .template-date {
  color: #888;
}

body.dark .template-load-btn,
body.dark .template-delete-btn {
  background: rgba(26,26,46,0.8);
  border-color: rgba(255,255,255,0.1);
}

body.dark .template-load-btn {
  color: var(--color-primary);
  border-color: var(--color-primary);
}
body.dark .template-load-btn:hover {
  background: var(--color-primary);
  color: #fff;
}

body.dark .template-delete-btn {
  color: #ff6666;
  border-color: #ff6666;
}
body.dark .template-delete-btn:hover {
  background: #ff6666;
  color: #fff;
}

body.dark .template-manager-tabs {
  background: rgba(22,33,62,0.8);
  border-bottom-color: rgba(255,255,255,0.06);
}
body.dark .tpl-tab {
  color: #888;
}
body.dark .tpl-tab.active {
  color: var(--color-primary);
  border-bottom-color: var(--color-primary);
}
body.dark .tpl-tab:hover:not(.active) {
  color: #ccc;
}
body.dark .template-limit-hint {
  color: #666;
}
body.dark .tpl-select-option {
  border-color: rgba(255,255,255,0.08);
  color: #e0e0e0;
  background: rgba(22,33,62,0.6);
}
body.dark .tpl-select-option:hover {
  border-color: var(--color-primary);
  background: rgba(0, 148, 244, 0.08);
}

body.dark .image-placeholder {
  background: rgba(255,255,255,0.03);
  color: #888;
}

/* ── Property Panel: Source Info Badge (dark) ── */
body.dark .ppt-prop-source-info.source-user {
  background: rgba(255,255,255,0.08);
  color: #bbb;
}
body.dark .ppt-prop-source-info.source-ai {
  background: rgba(0, 212, 170, 0.15);
  color: #00e6bb;
}
body.dark .ppt-prop-source-info.source-placeholder {
  background: rgba(0, 212, 170, 0.1);
  color: #00e6bb;
  border-color: #00d4aa;
}

/* ── Property Panel: Chart JSON Editor (dark) ── */
body.dark .ppt-chart-json-editor {
  background: rgba(26,26,46,0.6);
  border-color: rgba(255,255,255,0.08);
  color: #e0e0e0;
}

/* ── Property Panel: Chart Preview (dark) ── */
body.dark .ppt-chart-preview {
  background: #1a2236;
  border-color: rgba(255,255,255,0.08);
}

/* ── Property Panel: Chart Data Table (dark) ── */
body.dark .ppt-chart-data-view {
  border-color: rgba(255,255,255,0.08);
}
body.dark .ppt-chart-data-table th {
  background: rgba(26,26,46,0.6);
  color: #ddd;
  border-color: rgba(255,255,255,0.06);
}
body.dark .ppt-chart-data-table td {
  color: #e0e0e0;
  border-color: rgba(255,255,255,0.06);
}

/* ── Property Panel: Primary Button (dark) ── */
body.dark .ppt-prop-btn-primary {
  background: var(--color-primary) !important;
  border-color: var(--color-primary) !important;
  color: #fff !important;
}

/* ── Property Panel: Table Grid Editor (dark) ── */
body.dark .ppt-table-editor {
  border-color: rgba(255,255,255,0.08);
}
body.dark .ppt-table-cell {
  background: rgba(26,26,46,0.6);
  border-color: rgba(255,255,255,0.06);
  color: #e0e0e0;
}
body.dark .ppt-table-cell:focus {
  background: rgba(0, 148, 244, 0.1);
  outline-color: var(--color-primary);
}

/* ── Property Panel: Image Preview (dark) ── */
body.dark .ppt-image-preview {
  border-color: rgba(255,255,255,0.08);
  background: rgba(26,26,46,0.6);
}

/* ── Property Panel: Textarea (dark) ── */
body.dark .ppt-prop-textarea {
  background: rgba(26,26,46,0.6);
  border-color: rgba(255,255,255,0.08);
  color: #e0e0e0;
}

/* ── Left Panel & Tabs (dark) ── */
body.dark .ppt-left-panel {
  background: rgba(22,33,62,0.6);
  border-right-color: rgba(255,255,255,0.06);
}
body.dark .ppt-left-tabs {
  background: rgba(22,33,62,0.8);
  border-bottom-color: rgba(255,255,255,0.06);
}
body.dark .ppt-left-tab {
  color: #888;
}
body.dark .ppt-left-tab:hover {
  color: #ccc;
  background: rgba(255,255,255,0.04);
}
body.dark .ppt-left-tab.active {
  color: var(--color-primary);
  border-bottom-color: var(--color-primary);
}
body.dark .ppt-left-tab-content::-webkit-scrollbar-thumb { background: #3a3a5a; }

/* ── Chat Panel (dark) ── */
body.dark .ppt-chat-panel {
  background: #1a2236;
  border-left-color: rgba(255,255,255,0.06);
  border-right-color: rgba(255,255,255,0.06);
}
body.dark .ppt-chat-panel-header {
  background: rgba(22,33,62,0.8);
  border-bottom-color: rgba(255,255,255,0.06);
  color: #e0e0e0;
}
body.dark .ppt-chat-panel-close { color: #888; }
body.dark .ppt-chat-panel-close:hover { background: rgba(255,255,255,0.08); color: #ddd; }
body.dark .ppt-chat-panel-resizer:hover { background: rgba(var(--color-primary-rgb),0.3); }

/* ── PPT Slide Canvas: always white (dark) ── */
body.dark .ppt-slide-canvas {
  background: #fff;
}
body.dark .ppt-slide-canvas .canvas-el.type-title,
body.dark .ppt-slide-canvas .canvas-el.type-subtitle,
body.dark .ppt-slide-canvas .canvas-el.type-content {
  color: #222;
}
body.dark .ppt-slide-canvas .canvas-el-text-content {
  color: #222;
}

/* ── Project List View (dark) ── */
body.dark .ppt-project-list-view {
  background: #1a2236;
  box-shadow: 0 12px 48px rgba(0,0,0,0.4);
}
body.dark .ppt-project-list-header {
  background: rgba(22,33,62,0.8);
  border-bottom-color: rgba(255,255,255,0.06);
}
body.dark .ppt-project-list-title { color: #e0e0e0; }
body.dark .ppt-project-list-body::-webkit-scrollbar-thumb { background: #3a3a5a; }
body.dark .ppt-project-loading { color: #888; }

body.dark .ppt-project-new-btn {
  background: rgba(0,148,244,0.08);
  border-color: var(--color-primary);
  color: var(--color-primary);
}
body.dark .ppt-project-new-btn:hover {
  background: rgba(0,148,244,0.15);
}
body.dark .ppt-project-new-btn:disabled {
  border-color: #555;
  color: #666;
  background: rgba(255,255,255,0.03);
}

body.dark .ppt-project-item {
  background: rgba(22,33,62,0.6);
  border-color: rgba(255,255,255,0.06);
}
body.dark .ppt-project-item:hover {
  border-color: var(--color-primary);
  background: rgba(0,148,244,0.08);
}
body.dark .ppt-project-name { color: #e0e0e0; }
body.dark .ppt-project-meta { color: #888; }
body.dark .ppt-project-badge.exportable { background: rgba(46,125,50,0.2); color: #66bb6a; }
body.dark .ppt-project-badge.expired { background: rgba(255,255,255,0.06); color: #888; }
body.dark .ppt-project-empty { color: #666; }
body.dark .ppt-project-limit-hint { color: #666; }

body.dark .ppt-project-actions button {
  background: rgba(26,26,46,0.8);
  border-color: rgba(255,255,255,0.1);
}
body.dark .ppt-project-actions .ppt-proj-open-btn {
  color: var(--color-primary);
  border-color: var(--color-primary);
}
body.dark .ppt-project-actions .ppt-proj-open-btn:hover {
  background: var(--color-primary);
  color: #fff;
}
body.dark .ppt-project-actions .ppt-proj-del-btn {
  color: #ff6666;
  border-color: #ff6666;
}
body.dark .ppt-project-actions .ppt-proj-del-btn:hover {
  background: #ff6666;
  color: #fff;
}

/* ── New Project Dialog (dark) ── */
body.dark .ppt-new-project-overlay { background: rgba(0,0,0,0.7); }
body.dark .ppt-new-project-card { background: #1a2236; }
body.dark .ppt-new-project-header {
  background: rgba(22,33,62,0.8);
  border-bottom-color: rgba(255,255,255,0.06);
  color: #e0e0e0;
}
body.dark .ppt-new-project-body label { color: #ccc; }
body.dark .ppt-new-project-body input[type="text"] {
  background: rgba(26,26,46,0.6);
  border-color: rgba(255,255,255,0.08);
  color: #e0e0e0;
}
body.dark .ppt-new-project-body input[type="text"]:focus {
  border-color: var(--color-primary);
}
body.dark .ppt-new-project-footer {
  border-top-color: rgba(255,255,255,0.06);
}
body.dark .ppt-new-project-footer .ppt-np-cancel {
  background: rgba(26,26,46,0.6);
  border-color: rgba(255,255,255,0.08);
  color: #ddd;
}

/* ── Save Indicator (dark) ── */
body.dark .ppt-save-indicator { color: #888; }
body.dark .ppt-save-indicator.saving { color: #f0ad4e; }
body.dark .ppt-save-indicator.saved { color: #5cb85c; }

/* ── Prop Group border (dark) ── */
body.dark .ppt-prop-group { border-bottom-color: rgba(255,255,255,0.06); }
