@import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap");

:root {
  color-scheme: light;
  --bg: #F6F8FB;
  --panel: #FFFFFF;
  --panel-soft: #F0F4FA;
  --line: #E5EAF2;
  --text: #273142;
  --muted: #6B7788;
  --accent: #4A7DFF;
  --accent-2: #3A6BE0;
  --gold: #7E9BCF;
  --danger: #E5534B;
  --warning: #D97706;
  --shadow: 0 1px 3px rgba(39, 49, 66, 0.06), 0 4px 16px rgba(39, 49, 66, 0.04);
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, sans-serif;
}

/* ══════════════════════════════════════════════════════════════════════
   DARK THEME — activated via data-theme="dark" on <html>
   ══════════════════════════════════════════════════════════════════════ */
[data-theme="dark"] {
  color-scheme: dark;
  --bg: #0a0a10;
  --panel: #111118;
  --panel-soft: #1a1a24;
  --line: #2a2a3a;
  --text: #e8e8f0;
  --muted: #8888a0;
  --accent: #74b9ff;
  --accent-2: #5ba3e6;
  --gold: #a0b8d8;
  --danger: #ff7675;
  --warning: #fdcb6e;
  --shadow: 0 1px 3px rgba(0, 0, 0, 0.2), 0 4px 16px rgba(0, 0, 0, 0.15);
}

/* ── Body & shell backgrounds ───────────────────────────────────────── */
[data-theme="dark"] body { background: #0a0a10; }
[data-theme="dark"] .app-shell { background: #0a0a10; }
[data-theme="dark"] .chat-drawer { background: #111118; }
[data-theme="dark"] .chat-empty { background: #1a1a24; }

/* ── Panels, cards, bubbles (were #FFFFFF) ───────────────────────────── */
[data-theme="dark"] .secondary { background: #1a1a24; color: var(--text); }
[data-theme="dark"] .login-modal-window { background: #111118; }
[data-theme="dark"] input,
[data-theme="dark"] textarea,
[data-theme="dark"] select { background: #1a1a24; border-color: #2a2a3a; color: #e8e8f0; }
[data-theme="dark"] .chat-header { background: #111118; border-bottom-color: #2a2a3a; }
[data-theme="dark"] .chat-composer { background: #111118; border-color: #2a2a3a; }
[data-theme="dark"] .chat-bubble { background: #1a1a24; }
[data-theme="dark"] .chat-bubble.user { background: rgba(116, 185, 255, 0.1); }
[data-theme="dark"] .chat-bubble.assistant { background: #1a1a24; }

/* ── Sidebar ────────────────────────────────────────────────────────── */
[data-theme="dark"] .app-sidebar { background: #111118; border-right-color: #2a2a3a; }
[data-theme="dark"] .app-sidebar-brand { border-bottom-color: #2a2a3a; }
[data-theme="dark"] .app-brand-text strong { color: #e8e8f0; }
[data-theme="dark"] .app-brand-text span { color: #8888a0; }
[data-theme="dark"] .app-nav-group { color: #55556a; }
[data-theme="dark"] .app-nav-link { color: #8888a0; }
[data-theme="dark"] .app-nav-link:hover { color: #74b9ff; background: rgba(116, 185, 255, 0.06); }
[data-theme="dark"] .app-nav-link--active { color: #74b9ff; background: rgba(116, 185, 255, 0.08); border-left-color: #74b9ff; }

/* ── Topbar ──────────────────────────────────────────────────────────── */
[data-theme="dark"] .app-topbar { background: #111118; border-bottom-color: #2a2a3a; }
[data-theme="dark"] .app-topbar-title { color: #e8e8f0; }
[data-theme="dark"] .app-topbar-sub { color: #8888a0; }
[data-theme="dark"] .app-topbar-sep { color: #55556a; }
[data-theme="dark"] .app-user-badge { background: #1a1a24; border-color: #2a2a3a; }
[data-theme="dark"] .app-user-name { color: #e8e8f0; }
[data-theme="dark"] .app-user-avatar { background: #74b9ff; color: #0a0a10; }

/* ── Workstation topbar ─────────────────────────────────────────────── */
[data-theme="dark"] .ws-topbar { background: linear-gradient(135deg, #111118 0%, #1a1a24 100%); border-color: #2a2a3a; }
[data-theme="dark"] .ws-topbar-title { color: #e8e8f0; }
[data-theme="dark"] .ws-field-label { color: #55556a; }
[data-theme="dark"] .ws-sep { color: #2a2a3a; }
[data-theme="dark"] .ws-control { background: #1a1a24; border-color: #2a2a3a; color: #e8e8f0; }
[data-theme="dark"] .ws-control:focus { border-color: #74b9ff; box-shadow: 0 0 0 2px rgba(116, 185, 255, 0.15); }
[data-theme="dark"] .ws-doc-results { background: #1a1a24; border-color: #3a3a4d; box-shadow: 0 12px 24px rgba(0, 0, 0, 0.35); scrollbar-color: #66667a #111118; }
[data-theme="dark"] .ws-doc-results::-webkit-scrollbar-track { background: #111118; }
[data-theme="dark"] .ws-doc-results::-webkit-scrollbar-thumb { background: #66667a; border-color: #111118; }
[data-theme="dark"] .ws-doc-result-item { color: #e8e8f0; }
[data-theme="dark"] .ws-doc-result-item:hover,
[data-theme="dark"] .ws-doc-result-item:focus { background: #22222e; }
[data-theme="dark"] .ws-doc-result-item.is-selected { background: #20345f; color: #ffffff; }
[data-theme="dark"] .ws-doc-result-index,
[data-theme="dark"] .ws-doc-result-empty { color: #8888a0; }
[data-theme="dark"] .ws-btn { background: #1a1a24; border-color: #2a2a3a; color: #e8e8f0; }
[data-theme="dark"] .ws-btn:hover { background: #22222e; border-color: #74b9ff; }
[data-theme="dark"] .ws-slider-label { color: #8888a0; }
[data-theme="dark"] .ws-range { accent-color: #74b9ff; }

/* ── Document search bar ────────────────────────────────────────────── */
[data-theme="dark"] .ws-doc-search-bar { background: linear-gradient(135deg, #1a1a24 0%, #22222e 100%); border-color: #2a2a3a; }

/* ── Tab/pill bar ───────────────────────────────────────────────────── */
[data-theme="dark"] .ws-tab-bar,
[data-theme="dark"] .tab-bar { background: #111118; border-color: #2a2a3a; }
[data-theme="dark"] .ws-tab,
[data-theme="dark"] .tab-btn { color: #8888a0; }
[data-theme="dark"] .ws-tab:hover,
[data-theme="dark"] .tab-btn:hover { color: #e8e8f0; background: rgba(116, 185, 255, 0.06); }
[data-theme="dark"] .ws-tab.active,
[data-theme="dark"] .ws-tab--active,
[data-theme="dark"] .tab-btn.active { background: #1a1a24; color: #74b9ff; border-color: #74b9ff; }

/* ── Sidebar toggle tab ─────────────────────────────────────────────── */
[data-theme="dark"] .sidebar-toggle-tab { background: #5ba3e6; }
[data-theme="dark"] .sidebar-toggle-tab:hover { background: #74b9ff; }

/* ── Corpus list & items ─────────────────────────────────────────────── */
[data-theme="dark"] .corpus-grid,
[data-theme="dark"] .reg-list,
[data-theme="dark"] .list-section { background: #111118; border-color: #2a2a3a; }
[data-theme="dark"] .corpus-item,
[data-theme="dark"] .reg-item,
[data-theme="dark"] .list-item { border-color: #2a2a3a; }
[data-theme="dark"] .corpus-item:hover,
[data-theme="dark"] .reg-item:hover,
[data-theme="dark"] .list-item:hover { background: #1a1a24; }

/* ── Modals ──────────────────────────────────────────────────────────── */
[data-theme="dark"] .modal-overlay { background: rgba(0, 0, 0, 0.6); }
[data-theme="dark"] .modal,
[data-theme="dark"] .dialog,
[data-theme="dark"] .popup { background: #111118; border-color: #2a2a3a; }
[data-theme="dark"] .login-modal-backdrop { background: rgba(0, 0, 0, 0.5); }

/* ── Tables ──────────────────────────────────────────────────────────── */
[data-theme="dark"] .chat-table th { background: #1a1a24; color: #8888a0; border-color: #2a2a3a; }
[data-theme="dark"] .chat-table td { border-color: #2a2a3a; color: #e8e8f0; }
[data-theme="dark"] table { border-color: #2a2a3a; }
[data-theme="dark"] th { background: #1a1a24; color: #8888a0; }

/* ── Borders that were #E5EAF2 hardcoded ─────────────────────────────── */
[data-theme="dark"] .app-sidebar-brand,
[data-theme="dark"] .chat-composer,
[data-theme="dark"] .chat-header { border-color: #2a2a3a; }

/* ── PDF viewer area ─────────────────────────────────────────────────── */
[data-theme="dark"] .pdf-wrapper,
[data-theme="dark"] .ws-viewer { background: #1a1a24; }

/* ── About cards ─────────────────────────────────────────────────────── */
[data-theme="dark"] .about-card { background: rgba(255, 255, 255, 0.02); }

/* ── Hero section ────────────────────────────────────────────────────── */
[data-theme="dark"] .hero-card { background: #1a1a24; }

/* ── Theme toggle button ─────────────────────────────────────────────── */
.theme-toggle-eco {
  background: none;
  border: 1px solid var(--line);
  color: var(--muted);
  width: 34px;
  height: 34px;
  border-radius: 50%;
  cursor: pointer;
  font-size: 15px;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all 0.3s;
  flex-shrink: 0;
}
.theme-toggle-eco:hover {
  color: var(--accent);
  border-color: var(--accent);
  transform: rotate(20deg);
}

/* ══════════════════════════════════════════════════════════════════════
   PHASE 2 — Override inline styles from app.js with !important
   ══════════════════════════════════════════════════════════════════════ */
[data-theme="dark"] [style*="background:#fff"],
[data-theme="dark"] [style*="background: #fff"],
[data-theme="dark"] [style*="background:#FFF"],
[data-theme="dark"] [style*="background:#FFFFFF"],
[data-theme="dark"] [style*="background: white"],
[data-theme="dark"] [style*="background:white"] {
  background: #1a1a24 !important;
  color: #e8e8f0 !important;
  border-color: #2a2a3a !important;
}
[data-theme="dark"] [style*="background:#F9FAFB"],
[data-theme="dark"] [style*="background:#f9fafb"],
[data-theme="dark"] [style*="background:#fafafa"],
[data-theme="dark"] [style*="background-color: #fafafa"],
[data-theme="dark"] [style*="background:#F6F8FB"],
[data-theme="dark"] [style*="background:#f6f8fb"] {
  background: #111118 !important;
  color: #e8e8f0 !important;
}
[data-theme="dark"] [style*="background:#F3F4F6"],
[data-theme="dark"] [style*="background:#f3f4f6"],
[data-theme="dark"] [style*="background:#F0F4FA"],
[data-theme="dark"] [style*="background:#f0f4fa"] {
  background: #22222e !important;
  color: #e8e8f0 !important;
}
[data-theme="dark"] [style*="border:1px solid #E5E7EB"],
[data-theme="dark"] [style*="border:1px solid #e5e7eb"],
[data-theme="dark"] [style*="border:1px solid #d1d5db"],
[data-theme="dark"] [style*="border:1px solid #D1D5DB"],
[data-theme="dark"] [style*="border:1px solid #E5EAF2"],
[data-theme="dark"] [style*="border-bottom:1px solid #e5e7eb"],
[data-theme="dark"] [style*="border-bottom:1px solid #E5E7EB"],
[data-theme="dark"] [style*="border-bottom:1px solid #E5EAF2"] {
  border-color: #2a2a3a !important;
}
[data-theme="dark"] [style*="color:#374151"],
[data-theme="dark"] [style*="color:#1f2937"],
[data-theme="dark"] [style*="color:#273142"],
[data-theme="dark"] [style*="color:#334155"],
[data-theme="dark"] [style*="color:#111827"],
[data-theme="dark"] [style*="color: #374151"],
[data-theme="dark"] [style*="color: #273142"],
[data-theme="dark"] [style*="color: #334155"] {
  color: #e8e8f0 !important;
}
[data-theme="dark"] [style*="color:#6B7280"],
[data-theme="dark"] [style*="color:#6b7280"],
[data-theme="dark"] [style*="color:#6B7788"],
[data-theme="dark"] [style*="color:#6b7788"],
[data-theme="dark"] [style*="color: #6B7280"],
[data-theme="dark"] [style*="color: #6b7280"] {
  color: #8888a0 !important;
}
[data-theme="dark"] [style*="color:#9CA3AF"],
[data-theme="dark"] [style*="color:#9ca3af"],
[data-theme="dark"] [style*="color:#A0AABB"],
[data-theme="dark"] [style*="color:#a0aabb"] {
  color: #55556a !important;
}
[data-theme="dark"] .rename-category-select,
[data-theme="dark"] .registry-category-select,
[data-theme="dark"] .registry-doctype-select {
  background: #1a1a24 !important;
  border-color: #2a2a3a !important;
  color: #e8e8f0 !important;
}
[data-theme="dark"] [style*="background:#EEF2FF"],
[data-theme="dark"] [style*="background:#DBEAFE"],
[data-theme="dark"] [style*="background:#dbeafe"] {
  background: rgba(116, 185, 255, 0.1) !important;
  color: #74b9ff !important;
}
[data-theme="dark"] [style*="background:#FEF3C7"],
[data-theme="dark"] [style*="background:#fef3c7"] {
  background: rgba(253, 203, 110, 0.1) !important;
  color: #fdcb6e !important;
}
[data-theme="dark"] [style*="background:#FEE2E2"],
[data-theme="dark"] [style*="background:#fee2e2"],
[data-theme="dark"] [style*="background:#FECACA"] {
  background: rgba(255, 118, 117, 0.1) !important;
  color: #ff7675 !important;
}
[data-theme="dark"] [style*="background:#D1FAE5"],
[data-theme="dark"] [style*="background:#d1fae5"],
[data-theme="dark"] [style*="background:#DCFCE7"],
[data-theme="dark"] [style*="background:#dcfce7"] {
  background: rgba(85, 239, 196, 0.1) !important;
  color: #55efc4 !important;
}
[data-theme="dark"] [style*="background:#E0E7FF"],
[data-theme="dark"] [style*="background:#e0e7ff"],
[data-theme="dark"] [style*="background:#FCE7F3"],
[data-theme="dark"] [style*="background:#fce7f3"] {
  background: rgba(162, 155, 254, 0.1) !important;
  color: #a29bfe !important;
}
[data-theme="dark"] code[style*="background:#F3F4F6"],
[data-theme="dark"] code[style*="background:#f3f4f6"] {
  background: #22222e !important;
  color: #e8e8f0 !important;
}
[data-theme="dark"] .ws-panel,
[data-theme="dark"] .ws-content { background: #0a0a10; }
[data-theme="dark"] .ws-panel-content { background: #111118; }
[data-theme="dark"] [style*="background:linear-gradient(135deg, #FFFFFF"],
[data-theme="dark"] [style*="background:linear-gradient(135deg,#FFFFFF"] {
  background: linear-gradient(135deg, #111118 0%, #1a1a24 100%) !important;
}
[data-theme="dark"] ::-webkit-scrollbar-thumb { background: #2a2a3a; }
[data-theme="dark"] ::-webkit-scrollbar-track { background: #111118; }

/* ══════════════════════════════════════════════════════════════════════
   PHASE 3 — Workstation components (hardcoded class backgrounds)
   ══════════════════════════════════════════════════════════════════════ */

/* ── Document viewer area ────────────────────────────────────────── */
[data-theme="dark"] .ws-viewer {
  background: #111118 !important;
  border-color: #2a2a3a !important;
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15);
}

/* ── Plain text / structure view ─────────────────────────────────── */
[data-theme="dark"] .ws-plaintext-view {
  background: #111118 !important;
  color: #e8e8f0 !important;
}
[data-theme="dark"] .ws-plaintext-view.loading {
  color: #55556a !important;
}
/* Underlined text & links inside the document viewer (dark mode) */
[data-theme="dark"] .ws-plaintext-view u,
[data-theme="dark"] .ws-plaintext-view ins,
[data-theme="dark"] .ws-plaintext-view [style*="text-decoration: underline"],
[data-theme="dark"] .ws-plaintext-view [style*="text-decoration:underline"] {
  color: #e8e8f0 !important;
}
[data-theme="dark"] .ws-plaintext-view a {
  color: #74b9ff !important;
}
[data-theme="dark"] .ws-plaintext-view a:hover {
  color: #a0d4ff !important;
}

/* ── Panel tabs (Original, Texto plano, Estructura, etc.) ───────── */
[data-theme="dark"] .ws-panel-tabs {
  background: #0a0a10 !important;
  border-bottom-color: #2a2a3a !important;
}
[data-theme="dark"] .ws-panel-tab {
  color: #8888a0 !important;
  background: transparent !important;
}
[data-theme="dark"] .ws-panel-tab:hover {
  color: #74b9ff !important;
  background: rgba(116, 185, 255, 0.06) !important;
}
[data-theme="dark"] .ws-panel-tab.active {
  color: #74b9ff !important;
  background: #111118 !important;
  border-color: #2a2a3a !important;
  border-bottom-color: #111118 !important;
}

/* ── Panel section titles ────────────────────────────────────────── */
[data-theme="dark"] .ws-panel-section-title {
  color: #55556a !important;
}

/* ── Chat panel (right side) ─────────────────────────────────────── */
[data-theme="dark"] .ws-chat-panel {
  background: #111118 !important;
  border-color: #2a2a3a !important;
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15);
}
[data-theme="dark"] .ws-chat-header {
  background: linear-gradient(135deg, #1a1a24, #111118) !important;
  border-bottom-color: #2a2a3a !important;
  color: #e8e8f0 !important;
}

/* ── Chat messages ───────────────────────────────────────────────── */
[data-theme="dark"] .ws-msg-body {
  background: #1a1a24 !important;
  border-color: #2a2a3a !important;
  color: #e8e8f0 !important;
}
[data-theme="dark"] .ws-msg.user .ws-msg-body {
  background: rgba(116, 185, 255, 0.08) !important;
  border-color: rgba(116, 185, 255, 0.15) !important;
}
[data-theme="dark"] .ws-msg-body strong {
  color: #74b9ff !important;
}

/* ── Chat input area ─────────────────────────────────────────────── */
[data-theme="dark"] .ws-chat-input-area {
  background: #0a0a10 !important;
  border-top-color: #2a2a3a !important;
}
[data-theme="dark"] .ws-chat-form input {
  background: #1a1a24 !important;
  border-color: #2a2a3a !important;
  color: #e8e8f0 !important;
}
[data-theme="dark"] .ws-chat-form input:focus {
  border-color: #74b9ff !important;
  box-shadow: 0 0 0 3px rgba(116, 185, 255, 0.12) !important;
}

/* ── View mode buttons ───────────────────────────────────────────── */
[data-theme="dark"] .ws-view-btn {
  background: #1a1a24 !important;
  border-color: #2a2a3a !important;
  color: #8888a0 !important;
}
[data-theme="dark"] .ws-view-btn:hover {
  background: rgba(116, 185, 255, 0.06) !important;
  color: #74b9ff !important;
  border-color: rgba(116, 185, 255, 0.3) !important;
}

/* ── Corpus list items & doc cards ────────────────────────────────── */
[data-theme="dark"] .doc-card,
[data-theme="dark"] .corpus-card,
[data-theme="dark"] .reg-card { 
  background: #111118 !important;
  border-color: #2a2a3a !important;
}
[data-theme="dark"] .doc-card:hover,
[data-theme="dark"] .corpus-card:hover,
[data-theme="dark"] .reg-card:hover { 
  background: #1a1a24 !important;
}

/* ── Academic Search panel ───────────────────────────────────────── */
[data-theme="dark"] .as-panel {
  --as-bg: #0a0a10;
  --as-surface: #111118;
  --as-surface2: #1a1a24;
  --as-border: #2a2a3a;
  --as-accent: #74b9ff;
  --as-accent2: #a0b8d8;
  --as-accent-glow: rgba(116, 185, 255, 0.1);
  --as-text: #e8e8f0;
  --as-text2: #8888a0;
  --as-text3: #55556a;
}

/* ── App actions bar (module buttons) ────────────────────────────── */
[data-theme="dark"] .app-actions-bar {
  background: #111118;
  border-color: #2a2a3a;
}

/* ── Workspace split ─────────────────────────────────────────────── */
[data-theme="dark"] .ws-split {
  background: #0a0a10;
}

/* ── PDF iframe background (content inside is controlled by PDF) ── */
[data-theme="dark"] .ws-viewer iframe {
  background: #1a1a24;
}

/* ── NotebookLM button override ──────────────────────────────────── */
[data-theme="dark"] [style*="background:#F59E0B"] {
  background: #d97706 !important;
}

/* ── Gradient linear backgrounds from app.js ─────────────────────── */
[data-theme="dark"] [style*="background:linear-gradient(135deg, #F8FAFC"],
[data-theme="dark"] [style*="background:linear-gradient(135deg,#F8FAFC"] {
  background: linear-gradient(135deg, #111118 0%, #1a1a24 100%) !important;
}
[data-theme="dark"] [style*="background:linear-gradient(135deg, #F6F8FB"],
[data-theme="dark"] [style*="background:linear-gradient(135deg,#F6F8FB"] {
  background: linear-gradient(135deg, #111118 0%, #1a1a24 100%) !important;
}

/* ── Color overrides for specific text colors from styles.css ────── */
[data-theme="dark"] [style*="color:#3730A3"] { color: #a29bfe !important; }
[data-theme="dark"] [style*="color:#1E40AF"] { color: #74b9ff !important; }
[data-theme="dark"] [style*="color:#92400E"] { color: #fdcb6e !important; }
[data-theme="dark"] [style*="color:#9D174D"] { color: #fd79a8 !important; }
[data-theme="dark"] [style*="color:#065F46"] { color: #55efc4 !important; }
[data-theme="dark"] [style*="color:#14532D"] { color: #55efc4 !important; }
[data-theme="dark"] [style*="color:#991B1B"] { color: #ff7675 !important; }
[data-theme="dark"] [style*="color:#1E293B"] { color: #e8e8f0 !important; }

/* ── Topbar sub-bar (search, category, document selector) ────────── */
[data-theme="dark"] .app-topbar {
  border-bottom-color: #2a2a3a;
}
[data-theme="dark"] [style*="border-left:4px solid"] {
  background: #1a1a24 !important;
}

/* ══════════════════════════════════════════════════════════════════════
   PHASE 4 — Remaining white elements in workstation
   ══════════════════════════════════════════════════════════════════════ */

/* ── Research toolbar (below tabs: Original, Texto plano, etc.) ──── */
[data-theme="dark"] .ws-research-toolbar {
  background: #0a0a10 !important;
  border-color: #2a2a3a !important;
}

/* ── View mode tabs in toolbar ───────────────────────────────────── */
[data-theme="dark"] .ws-view-btn {
  background: #1a1a24 !important;
  border-color: #2a2a3a !important;
  color: #8888a0 !important;
}
[data-theme="dark"] .ws-view-btn:hover {
  color: #74b9ff !important;
  background: rgba(116, 185, 255, 0.06) !important;
}
[data-theme="dark"] .ws-view-btn.active {
  background: #74b9ff !important;
  color: #fff !important;
  border-color: transparent !important;
}
[data-theme="dark"] .ws-view-btn:disabled {
  background: #111118 !important;
  color: #55556a !important;
  border-color: #2a2a3a !important;
  opacity: 0.45 !important;
  cursor: not-allowed !important;
}

/* ── Font Size Control in dark theme ────────────────────────────── */
[data-theme="dark"] .ws-font-size-control {
  background: #1a1a24 !important;
  border-color: #2a2a3a !important;
  box-shadow: none !important;
}
[data-theme="dark"] .ws-font-size-label {
  color: #8888a0 !important;
}
[data-theme="dark"] .ws-font-size-btn {
  background: #111118 !important;
  border-color: #2a2a3a !important;
  color: #e8e8f0 !important;
}
[data-theme="dark"] .ws-font-size-btn:hover {
  background: rgba(116, 185, 255, 0.06) !important;
  border-color: #74b9ff !important;
  color: #74b9ff !important;
}
[data-theme="dark"] .ws-font-size-val {
  color: #e8e8f0 !important;
}

/* ── Edit controls (A, 100%, zoom, etc.) ─────────────────────────── */
[data-theme="dark"] .ws-edit-btn {
  background: #1a1a24 !important;
  border-color: #2a2a3a !important;
  color: #8888a0 !important;
}
[data-theme="dark"] .ws-edit-btn:hover {
  background: rgba(253, 203, 110, 0.1) !important;
  border-color: rgba(253, 203, 110, 0.3) !important;
  color: #fdcb6e !important;
}
[data-theme="dark"] .ws-edit-save {
  background: rgba(85, 239, 196, 0.08) !important;
  border-color: rgba(85, 239, 196, 0.3) !important;
  color: #55efc4 !important;
}
[data-theme="dark"] .ws-edit-cancel:hover {
  background: rgba(255, 118, 117, 0.08) !important;
  border-color: rgba(255, 118, 117, 0.3) !important;
  color: #ff7675 !important;
}
[data-theme="dark"] .ws-edit-controls {
  border-color: #2a2a3a !important;
}

/* ── TTS (text to speech) controls ───────────────────────────────── */
[data-theme="dark"] .ws-tts-btn {
  background: #1a1a24 !important;
  border-color: #2a2a3a !important;
  color: #8888a0 !important;
}
[data-theme="dark"] .ws-tts-btn:hover {
  background: rgba(116, 185, 255, 0.06) !important;
  color: #74b9ff !important;
}
[data-theme="dark"] .ws-tts-speed-btn {
  background: #1a1a24 !important;
  border-color: #2a2a3a !important;
  color: #8888a0 !important;
}
[data-theme="dark"] .ws-tts-speed-menu {
  background: #111118 !important;
  border-color: #2a2a3a !important;
}
[data-theme="dark"] .ws-tts-voice-select {
  background: #1a1a24 !important;
  border-color: #2a2a3a !important;
  color: #e8e8f0 !important;
}
[data-theme="dark"] .ws-tts-divider {
  background: #2a2a3a !important;
}

/* ── Code sidebar panel ──────────────────────────────────────────── */
[data-theme="dark"] .ws-code-sidebar {
  background: linear-gradient(180deg, #111118 0%, #1a1a24 100%) !important;
  border-color: #2a2a3a !important;
  box-shadow: 0 1px 6px rgba(0, 0, 0, 0.2);
}
[data-theme="dark"] .ws-code-sidebar-header {
  background: linear-gradient(135deg, #1a1a24, #22222e) !important;
  border-bottom-color: #2a2a3a !important;
  color: #a29bfe !important;
}
[data-theme="dark"] .ws-code-sidebar-header button {
  color: #55556a !important;
}
[data-theme="dark"] .ws-code-sidebar-header button:hover {
  background: #22222e !important;
  color: #e8e8f0 !important;
}
[data-theme="dark"] .ws-code-sidebar-filters {
  border-bottom-color: #2a2a3a !important;
}
[data-theme="dark"] .ws-csb-filter {
  background: #1a1a24 !important;
  border-color: #2a2a3a !important;
  color: #8888a0 !important;
}
[data-theme="dark"] .ws-csb-filter.active {
  background: rgba(116, 185, 255, 0.08) !important;
  color: #74b9ff !important;
  border-color: rgba(116, 185, 255, 0.3) !important;
}

/* ── Welcome placeholder ─────────────────────────────────────────── */
[data-theme="dark"] .ws-welcome-placeholder {
  color: #55556a !important;
}
[data-theme="dark"] .ws-welcome-placeholder h3 {
  color: #e8e8f0 !important;
}

/* ── Action back button ──────────────────────────────────────────── */
[data-theme="dark"] .ws-action-back {
  background: #1a1a24 !important;
  color: #8888a0 !important;
  border-color: #2a2a3a !important;
}
[data-theme="dark"] .ws-action-back:hover {
  background: #22222e !important;
}

/* ── Chat collapse button ────────────────────────────────────────── */
[data-theme="dark"] .ws-chat-collapse-btn {
  color: #55556a !important;
  background: transparent !important;
}
[data-theme="dark"] .ws-chat-collapse-btn:hover {
  color: #8888a0 !important;
  background: rgba(116, 185, 255, 0.06) !important;
}

/* ── Panel empty state text ──────────────────────────────────────── */
[data-theme="dark"] .ws-panel-empty {
  color: #55556a !important;
}

/* ── Memos / Diary panel content areas ───────────────────────────── */
[data-theme="dark"] .ws-memo-card,
[data-theme="dark"] .ws-diary-entry {
  background: #1a1a24 !important;
  border-color: #2a2a3a !important;
  color: #e8e8f0 !important;
}

/* ── App topbar (main header — hardcoded #FFFFFF) ────────────────── */
[data-theme="dark"] .app-topbar {
  background: #111118 !important;
  border-bottom-color: #2a2a3a !important;
}
[data-theme="dark"] .app-topbar-sub[data-context="document"] {
  color: #e8e8f0 !important;
}

/* ── Doc search bar in toolbar ───────────────────────────────────── */
[data-theme="dark"] .ws-doc-search-bar {
  background: linear-gradient(135deg, #111118 0%, #1a1a24 100%) !important;
  border-color: #2a2a3a !important;
}
[data-theme="dark"] .ws-doc-search-input {
  background: #1a1a24 !important;
  border-color: #2a2a3a !important;
  color: #e8e8f0 !important;
}

/* ══════════════════════════════════════════════════════════════════════
   PHASE 5 — Remaining inline-styled elements in workstation
   ══════════════════════════════════════════════════════════════════════ */

/* ── Códigos IA & Profundizar buttons (inline dashed borders) ────── */
[data-theme="dark"] #ws-coding-overlay-btn {
  border-color: rgba(162, 155, 254, 0.35) !important;
  color: #a29bfe !important;
}
[data-theme="dark"] #ws-coding-overlay-btn:hover {
  background: rgba(162, 155, 254, 0.08) !important;
  border-color: #a29bfe !important;
}
[data-theme="dark"] #ws-coding-overlay-btn.active {
  background: rgba(162, 155, 254, 0.12) !important;
  border-color: #a29bfe !important;
  color: #a29bfe !important;
}
[data-theme="dark"] #ws-deepen-btn {
  border-color: rgba(85, 239, 196, 0.35) !important;
  color: #55efc4 !important;
}
[data-theme="dark"] #ws-deepen-btn:hover {
  background: rgba(85, 239, 196, 0.08) !important;
  border-color: #55efc4 !important;
}

/* ── Deepen modal ────────────────────────────────────────────────── */
[data-theme="dark"] #ws-deepen-modal > div {
  background: #111118 !important;
  box-shadow: 0 12px 40px rgba(0, 0, 0, 0.4) !important;
}
[data-theme="dark"] #ws-deepen-modal h3 {
  color: #e8e8f0 !important;
}
[data-theme="dark"] #ws-deepen-modal p {
  color: #8888a0 !important;
}
[data-theme="dark"] #ws-deepen-modal textarea,
[data-theme="dark"] #ws-deepen-criteria {
  background: #1a1a24 !important;
  border-color: #2a2a3a !important;
  color: #e8e8f0 !important;
}
[data-theme="dark"] #ws-deepen-cancel {
  background: #1a1a24 !important;
  border-color: #2a2a3a !important;
  color: #8888a0 !important;
}

/* ── Module headers (section headers with gradient) ──────────────── */
[data-theme="dark"] .module-header {
  background: linear-gradient(135deg, #111118 0%, #1a1a24 100%) !important;
  border-color: #2a2a3a !important;
}
[data-theme="dark"] .module-header h3 {
  color: #e8e8f0 !important;
}
[data-theme="dark"] .module-desc {
  color: #8888a0 !important;
}

/* ── Table wrap (normal & extended matrix, all tables) ───────────── */
[data-theme="dark"] .table-wrap {
  background: #111118 !important;
  border-color: #2a2a3a !important;
}
[data-theme="dark"] .table-wrap thead th {
  background: #1a1a24 !important;
  border-bottom-color: #2a2a3a !important;
  color: #8888a0 !important;
}
[data-theme="dark"] .table-wrap tbody td {
  color: #e8e8f0 !important;
  border-bottom-color: #2a2a3a !important;
}
[data-theme="dark"] .table-wrap tbody tr:hover {
  background: #1a1a24 !important;
}

/* ── Sortable column headers in dark mode ────────────────────────── */
[data-theme="dark"] th.sortable-th:hover {
  background: rgba(116, 185, 255, 0.1) !important;
  color: #74b9ff !important;
}
[data-theme="dark"] th.sortable-th.sorted {
  color: #74b9ff !important;
  border-bottom-color: #74b9ff !important;
}

/* ── Matrix toolbar ──────────────────────────────────────────────── */
[data-theme="dark"] #matrix-toolbar {
  border-bottom-color: #2a2a3a !important;
}
[data-theme="dark"] #matrix-toolbar .button.secondary {
  background: #1a1a24 !important;
  border-color: #2a2a3a !important;
  color: #8888a0 !important;
}
[data-theme="dark"] #matrix-toolbar .button.secondary:hover {
  background: #22222e !important;
  color: #74b9ff !important;
}
[data-theme="dark"] #matrix-search-input {
  background: #1a1a24 !important;
  border-color: #2a2a3a !important;
  color: #e8e8f0 !important;
}
[data-theme="dark"] #matrix-view-label {
  color: #55556a !important;
}
[data-theme="dark"] #matrix-summary {
  color: #8888a0 !important;
}

/* ── Extended matrix table container ─────────────────────────────── */
[data-theme="dark"] #matrix-extended-view > div {
  background: #111118 !important;
  border-color: #2a2a3a !important;
}
[data-theme="dark"] #matrix-extended-view table {
  background: #111118 !important;
}
[data-theme="dark"] #matrix-extended-view thead {
  background: #111118 !important;
}
[data-theme="dark"] #matrix-extended-view th {
  background: #1a1a24 !important;
}
[data-theme="dark"] #matrix-extended-view tr {
  border-bottom-color: #2a2a3a !important;
}
[data-theme="dark"] #matrix-extended-view td {
  color: #e8e8f0 !important;
}
[data-theme="dark"] #matrix-extended-view select,
[data-theme="dark"] #matrix-extended-view input[type="text"] {
  background: #1a1a24 !important;
  border-color: #2a2a3a !important;
  color: #e8e8f0 !important;
}

/* ── Note modal (ws-note-modal) ──────────────────────────────────── */
[data-theme="dark"] .ws-note-modal-window {
  background: #111118 !important;
  box-shadow: 0 12px 40px rgba(0, 0, 0, 0.5) !important;
}
[data-theme="dark"] .ws-note-modal-backdrop {
  background: rgba(0, 0, 0, 0.6) !important;
}
[data-theme="dark"] .ws-note-modal-title {
  color: #e8e8f0 !important;
}
[data-theme="dark"] .ws-note-modal-kicker {
  color: #8888a0 !important;
}
[data-theme="dark"] .ws-note-modal-meta {
  color: #55556a !important;
}
[data-theme="dark"] .ws-note-modal-read {
  color: #e8e8f0 !important;
}
[data-theme="dark"] .ws-note-modal-source {
  background: #1a1a24 !important;
  border-color: #2a2a3a !important;
  color: #8888a0 !important;
}
[data-theme="dark"] .ws-note-modal-btn {
  background: #1a1a24 !important;
  border-color: #2a2a3a !important;
  color: #8888a0 !important;
}
[data-theme="dark"] .ws-note-modal-btn:hover {
  background: #22222e !important;
  color: #74b9ff !important;
}
[data-theme="dark"] .ws-note-modal-btn-primary {
  background: #74b9ff !important;
  color: #0a0a10 !important;
  border-color: transparent !important;
}
[data-theme="dark"] .ws-note-modal-footer {
  border-top-color: #2a2a3a !important;
}

/* ── Inline form ─────────────────────────────────────────────────── */
[data-theme="dark"] .inline-form {
  background: #111118 !important;
  border-color: #2a2a3a !important;
}
[data-theme="dark"] .inline-form input,
[data-theme="dark"] .inline-form select {
  background: #1a1a24 !important;
  border-color: #2a2a3a !important;
  color: #e8e8f0 !important;
}

/* ── Report preview ──────────────────────────────────────────────── */
[data-theme="dark"] .report-preview {
  background: #111118 !important;
  border-color: #2a2a3a !important;
}
[data-theme="dark"] .report-preview h4 {
  background: #1a1a24 !important;
  color: #8888a0 !important;
  border-bottom-color: #2a2a3a !important;
}
[data-theme="dark"] .report-preview pre {
  color: #e8e8f0 !important;
}

/* ── Upload form elements ────────────────────────────────────────── */
[data-theme="dark"] .upload-step {
  background: #1a1a24 !important;
  border-color: #2a2a3a !important;
}
[data-theme="dark"] .upload-radio-card {
  background: #111118 !important;
  border-color: #2a2a3a !important;
  color: #8888a0 !important;
}
[data-theme="dark"] .drop-zone {
  background: #111118 !important;
  border-color: rgba(116, 185, 255, 0.2) !important;
}
[data-theme="dark"] .drop-zone:hover {
  border-color: #74b9ff !important;
  background: rgba(116, 185, 255, 0.04) !important;
}
[data-theme="dark"] .file-item {
  background: #111118 !important;
  border-color: #2a2a3a !important;
}

/* ── Codebook panel ──────────────────────────────────────────────── */
[data-theme="dark"] .codebook-dict-row {
  border-color: #2a2a3a !important;
}
[data-theme="dark"] .codebook-dict-row:hover {
  background: #1a1a24 !important;
}
[data-theme="dark"] .codebook-dict-detail td {
  background: #1a1a24 !important;
  border-left-color: #74b9ff !important;
}

/* ── Code create form ────────────────────────────────────────────── */
[data-theme="dark"] .ws-code-create-form {
  background: #1a1a24 !important;
  border-color: #2a2a3a !important;
}
[data-theme="dark"] .ws-doccodes-create-summary {
  color: #8888a0 !important;
}

/* ── Coding overlay summary ──────────────────────────────────────── */
[data-theme="dark"] .ws-co-summary {
  background: linear-gradient(135deg, rgba(162, 155, 254, 0.08), rgba(116, 185, 255, 0.08)) !important;
  border-color: #2a2a3a !important;
  color: #8888a0 !important;
}

/* ── Button overrides (tertiary / secondary with inline bg) ──────── */
[data-theme="dark"] .button.tertiary {
  color: #74b9ff !important;
}
[data-theme="dark"] .button.tertiary:hover {
  background: rgba(116, 185, 255, 0.06) !important;
}

/* ── Annotations section ─────────────────────────────────────────── */
[data-theme="dark"] .ws-annotations-section {
  border-top-color: #2a2a3a !important;
}
[data-theme="dark"] .ws-ann-panel-title {
  color: #55556a !important;
}

/* ── Panel save buttons ──────────────────────────────────────────── */
[data-theme="dark"] .ws-panel-save-btn {
  background: #1a1a24 !important;
  border-color: #2a2a3a !important;
  color: #74b9ff !important;
}
[data-theme="dark"] .ws-panel-save-btn:hover {
  background: rgba(116, 185, 255, 0.08) !important;
}

/* ── Panel textarea / input ──────────────────────────────────────── */
[data-theme="dark"] .ws-panel-textarea,
[data-theme="dark"] .ws-panel-input,
[data-theme="dark"] .ws-panel-select {
  background: #1a1a24 !important;
  border-color: #2a2a3a !important;
  color: #e8e8f0 !important;
}

/* ── Diary form ──────────────────────────────────────────────────── */
[data-theme="dark"] .ws-diary-source {
  color: #55556a !important;
}

/* ── Fav button (star) ───────────────────────────────────────────── */
[data-theme="dark"] #ws-fav-btn {
  border-color: #2a2a3a !important;
}

/* ── Context menu ────────────────────────────────────────────────── */
[data-theme="dark"] #ws-ctx-menu {
  background: #111118 !important;
  border-color: #2a2a3a !important;
  box-shadow: 0 8px 30px rgba(0, 0, 0, 0.5) !important;
}
[data-theme="dark"] .ws-ctx-action {
  color: #e8e8f0 !important;
}
[data-theme="dark"] .ws-ctx-action:hover {
  background: rgba(116, 185, 255, 0.08) !important;
  color: #74b9ff !important;
}
[data-theme="dark"] .ws-ctx-close {
  color: #55556a !important;
}
[data-theme="dark"] .ws-ctx-input {
  background: #1a1a24 !important;
  border-color: #2a2a3a !important;
  color: #e8e8f0 !important;
}

/* ── Color swatches in dark mode ─────────────────────────────────── */
[data-theme="dark"] .ws-code-color-row,
[data-theme="dark"] .ws-ctx-colors {
  background: #0a0a10;
}

/* ── Search terms panel ──────────────────────────────────────────── */
[data-theme="dark"] .ws-search-terms-panel {
  background: #111118 !important;
  border-color: #2a2a3a !important;
}

/* ── Speed option buttons ────────────────────────────────────────── */
[data-theme="dark"] .ws-speed-option {
  color: #8888a0 !important;
}
[data-theme="dark"] .ws-speed-option:hover {
  background: rgba(116, 185, 255, 0.06) !important;
  color: #74b9ff !important;
}
[data-theme="dark"] .ws-speed-option--active {
  color: #74b9ff !important;
  background: rgba(116, 185, 255, 0.08) !important;
}

/* ── Fragments panel ─────────────────────────────────────────────── */
[data-theme="dark"] .ws-code-fragments-panel {
  background: #111118 !important;
  border-color: #2a2a3a !important;
}

/* ── Highlight/annotation colors lighter for dark bg ─────────────── */
[data-theme="dark"] [style*="background:#F8FAFC"] {
  background: #1a1a24 !important;
}

/* ── Codebook panel (below coding section) ───────────────────────── */
[data-theme="dark"] .codebook-panel {
  background: #111118 !important;
  border-color: #2a2a3a !important;
}
[data-theme="dark"] .codebook-panel .table-wrap {
  background: #111118 !important;
}

/* ── Saturation bar ──────────────────────────────────────────────── */
[data-theme="dark"] [style*="background:#E5E7EB"],
[data-theme="dark"] [style*="background:#e5e7eb"] {
  background: #2a2a3a !important;
}

/* ══════════════════════════════════════════════════════════════════════
   PHASE 6 — Global section / content area white backgrounds
   ══════════════════════════════════════════════════════════════════════ */

/* ── Main content sections (the white cards for each module) ─────── */
[data-theme="dark"] .app-content .stack>section {
  background: #111118 !important;
  border-color: #2a2a3a !important;
}
[data-theme="dark"] .app-content .stack>section>h3 {
  border-bottom-color: #2a2a3a !important;
}

/* ── Generic container catch-all for #fff / white backgrounds ────── */
[data-theme="dark"] .panel,
[data-theme="dark"] .card {
  background: #111118 !important;
  border-color: #2a2a3a !important;
}

/* ── Upload form areas ───────────────────────────────────────────── */
[data-theme="dark"] .upload-form {
  background: transparent !important;
}
[data-theme="dark"] .upload-step-label {
  color: #e8e8f0 !important;
}
[data-theme="dark"] .upload-custom-type input {
  background: #1a1a24 !important;
  border-color: #2a2a3a !important;
  color: #e8e8f0 !important;
}
[data-theme="dark"] .upload-results {
  background: #111118 !important;
  border-color: #2a2a3a !important;
}
[data-theme="dark"] .upload-result-item {
  border-bottom-color: #2a2a3a !important;
}
[data-theme="dark"] .upload-result-item--duplicate {
  background: rgba(250, 204, 21, 0.08) !important;
  border-color: rgba(250, 204, 21, 0.42) !important;
}
[data-theme="dark"] .upload-duplicate-title {
  color: #FDE68A !important;
}
[data-theme="dark"] .upload-duplicate-body,
[data-theme="dark"] .upload-duplicate-existing {
  color: #FEF3C7 !important;
}
[data-theme="dark"] .upload-duplicate-meta {
  color: #D6D3D1 !important;
}
[data-theme="dark"] .drop-zone-text {
  color: #e8e8f0 !important;
}
[data-theme="dark"] .drop-zone-hint {
  color: #55556a !important;
}

/* ── Media library form ──────────────────────────────────────────── */
[data-theme="dark"] .media-form {
  background: #1a1a24 !important;
  border-color: #2a2a3a !important;
}
[data-theme="dark"] .media-field-label {
  color: #55556a !important;
}
[data-theme="dark"] .media-card {
  background: #111118 !important;
  border-color: #2a2a3a !important;
}
[data-theme="dark"] .media-card:hover {
  background: #1a1a24 !important;
}

/* ── Rename / Classification / Registry panels ───────────────────── */
[data-theme="dark"] .rename-list,
[data-theme="dark"] .classification-list {
  background: #111118 !important;
  border-color: #2a2a3a !important;
}
[data-theme="dark"] .rename-item,
[data-theme="dark"] .classification-item {
  background: #111118 !important;
  border-color: #2a2a3a !important;
}
[data-theme="dark"] .rename-item:hover,
[data-theme="dark"] .classification-item:hover {
  background: #1a1a24 !important;
}

/* ── Workstation section (full-height flex) ───────────────────────── */
[data-theme="dark"] .ws-section {
  background: #0a0a10 !important;
  border-color: #2a2a3a !important;
}

/* ── Details / summary (legacy tables) ───────────────────────────── */
[data-theme="dark"] details summary {
  color: #8888a0 !important;
}

/* ── Corpus search form ──────────────────────────────────────────── */
[data-theme="dark"] .corpus-form {
  background: #111118 !important;
  border-color: #2a2a3a !important;
}

/* ── Hero section in dark mode ───────────────────────────────────── */
[data-theme="dark"] .hero-copy {
  background: #111118 !important;
  border-color: #2a2a3a !important;
}
[data-theme="dark"] .hero-card {
  background: #111118 !important;
  border-color: #2a2a3a !important;
}

/* ── Remaining white backgrounds from var(--panel) ───────────────── */
[data-theme="dark"] .ws-memo-form {
  background: transparent !important;
}
[data-theme="dark"] .ws-diary-form {
  background: transparent !important;
}

/* ── Badge, tag, status elements ─────────────────────────────────── */
[data-theme="dark"] .ws-note-modal-badge {
  background: #1a1a24 !important;
  color: #8888a0 !important;
}

/* ── Chat drawer textarea override (important for Norio chat) ────── */
[data-theme="dark"] .chat-composer textarea {
  background: #1a1a24 !important;
  border-color: #2a2a3a !important;
  color: #e8e8f0 !important;
}
[data-theme="dark"] .chat-composer textarea:focus {
  background: #111118 !important;
  border-color: #74b9ff !important;
}

/* ── Chat attach button ──────────────────────────────────────────── */
[data-theme="dark"] .chat-attach-button {
  background: #1a1a24 !important;
  border-color: #2a2a3a !important;
}
[data-theme="dark"] .chat-attach-button::after {
  color: #8888a0 !important;
}
[data-theme="dark"] .chat-attach-button:hover {
  background: #22222e !important;
  border-color: #74b9ff !important;
}

/* ── Pending coding queue ────────────────────────────────────────── */
[data-theme="dark"] .pending-coding-item {
  background: #111118 !important;
  border-color: #2a2a3a !important;
}

/* ── Topbar mobile select ────────────────────────────────────────── */
[data-theme="dark"] .app-topbar select {
  background: #1a1a24 !important;
  border-color: #2a2a3a !important;
  color: #e8e8f0 !important;
}

/* ── Global white → dark panel catch-all (low specificity fallback)  */
[data-theme="dark"] [style*="background:#ffffff"],
[data-theme="dark"] [style*="background: #ffffff"] {
  background: #1a1a24 !important;
  color: #e8e8f0 !important;
  border-color: #2a2a3a !important;
}

* {
  box-sizing: border-box;
}

body {
  margin: 0;
  min-height: 100vh;
  background: #F6F8FB;
  color: var(--text);
}

body.modal-open {
  overflow: hidden;
}

.shell {
  width: min(1100px, calc(100% - 32px));
  margin: 0 auto;
  padding: 24px 0 60px;
}

.hero {
  display: grid;
  grid-template-columns: 1.25fr 0.85fr;
  gap: 20px;
  align-items: stretch;
}

.hero.compact .hero-copy {
  padding: 28px;
}

.hero-copy,
.hero-card,
.panel,
.card {
  border: 1px solid var(--line);
  background: var(--panel);

  box-shadow: var(--shadow);
  border-radius: 24px;
}

.hero-copy {
  padding: 32px;
}

.eyebrow {
  color: var(--gold);
  text-transform: uppercase;
  letter-spacing: 0.12em;
  font-size: 0.82rem;
  font-weight: 700;
}

h1,
h2,
h3,
p {
  margin-top: 0;
}

h1 {
  font-size: clamp(2rem, 4vw, 3.3rem);
  line-height: 1.05;
  margin-bottom: 14px;
  max-width: 12ch;
}

h2 {
  margin-bottom: 10px;
}

p {
  color: var(--muted);
  line-height: 1.6;
}

.small-copy {
  font-size: 0.95rem;
}

.text-link {
  color: var(--accent-2);
  text-decoration: none;
  border-bottom: 1px solid rgba(142, 230, 208, 0.45);
  padding-bottom: 2px;
}

.text-link:hover {
  opacity: 0.92;
}

.hero-actions,
.dashboard-actions {
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
}

.button {
  border: none;
  border-radius: 999px;
  padding: 14px 20px;
  font-weight: 700;
  cursor: pointer;
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: transform 0.16s ease, opacity 0.16s ease;
}

.button:hover {
  transform: translateY(-1px);
}

.primary {
  background: var(--accent);
  color: #FFFFFF;
}

.secondary {
  background: #FFFFFF;
  color: var(--text);
  border: 1px solid var(--line);
}

.tertiary {
  background: transparent;
  color: var(--muted);
  border: 1px solid var(--line);
}

.hero-card {
  padding: 24px;
  background: var(--panel-soft);
}

.hero-card-badge {
  display: inline-block;
  margin-bottom: 14px;
  padding: 8px 12px;
  border-radius: 999px;
  background: rgba(216, 191, 135, 0.16);
  color: var(--gold);
}

.profile-card h2 {
  margin-bottom: 6px;
}

.about-panel {
  display: grid;
  gap: 18px;
}

.about-head h2 {
  margin-bottom: 8px;
}

.about-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
}

.about-card {
  border: 1px solid var(--line);
  border-radius: 18px;
  padding: 18px;
  background: rgba(255, 255, 255, 0.03);
}

.about-card h3 {
  margin-bottom: 8px;
  color: var(--accent-2);
}

main {
  display: grid;
  gap: 20px;
  margin-top: 20px;
}

.panel {
  padding: 24px;
}

.login-trigger-panel {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 18px;
}

.contact-panel {
  display: grid;
  grid-template-columns: 0.95fr 1.05fr;
  gap: 24px;
  align-items: start;
}

.login-modal {
  position: fixed;
  inset: 0;
  z-index: 60;
}

.login-modal-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(39, 49, 66, 0.25);
  backdrop-filter: blur(4px);
}

.login-modal-window {
  position: relative;
  width: min(560px, calc(100% - 28px));
  margin: 8vh auto 0;
  border: 1px solid var(--line);
  border-radius: 24px;
  background: #FFFFFF;
  box-shadow: 0 8px 32px rgba(39, 49, 66, 0.12);
  padding: 24px;
}

.login-modal-close {
  position: absolute;
  top: 14px;
  right: 14px;
}

label {
  display: grid;
  gap: 8px;
  margin-bottom: 14px;
  color: var(--muted);
  font-size: 0.95rem;
}

input,
textarea,
select {
  width: 100%;
  border: 1px solid #E5EAF2;
  background: #FFFFFF;
  color: var(--text);
  border-radius: 14px;
  padding: 14px 16px;
  font: inherit;
}

textarea {
  resize: vertical;
  min-height: 120px;
}

.inline-form {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: 12px;
  margin-bottom: 14px;
  align-items: end;
}

.inline-form .button {
  width: 100%;
}

.corpus-form {
  grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
}

.hint,
.message {
  min-height: 24px;
  margin-bottom: 0;
}

.message.error {
  color: var(--danger);
}

.message.success {
  color: var(--accent-2);
}

.message.warning {
  color: var(--warning);
}

.hidden {
  display: none;
}

.app-shell.hidden,
.shell.hidden {
  display: none !important;
}

.chat-backdrop.hidden,
.chat-drawer.hidden {
  display: none !important;
}

.chat-backdrop {
  position: fixed;
  inset: 0;
  z-index: 140;
  background: rgba(39, 49, 66, 0.18);
}

.chat-header {
  padding: 18px 20px 8px;
  border-bottom: 1px solid #E5EAF2;
  background: #FFFFFF;
}

.chat-header strong {
  display: block;
  font-size: 1.05rem;
  color: var(--text);
}

.chat-header p {
  margin: 4px 0 0;
  font-size: 0.86rem;
  color: var(--muted);
}

.chat-drawer {
  position: fixed;
  top: 0;
  right: 0;
  width: min(420px, 100vw);
  height: 100vh;
  z-index: 145;
  display: grid;
  grid-template-rows: 1fr auto;
  border-left: 1px solid var(--line);
  background: #F6F8FB;
  backdrop-filter: blur(16px);
  box-shadow: -4px 0 24px rgba(39, 49, 66, 0.08);
}

.chat-composer {
  padding: 16px;
  border-bottom: 1px solid #E5EAF2;
}

.chat-composer {
  border-bottom: none;
  border-top: 1px solid #E5EAF2;
  background: #FFFFFF;
}

.chat-body {
  overflow-y: auto;
  padding: 16px;
  display: grid;
  gap: 12px;
}

.chat-empty {
  border: 1px dashed var(--line);
  border-radius: 18px;
  padding: 14px;
  background: #F6F8FB;
}

.chat-bubble {
  max-width: 92%;
  border: 1px solid var(--line);
  border-radius: 22px;
  padding: 14px 16px;
  background: #FFFFFF;
}

.chat-bubble.user {
  margin-left: auto;
  background: rgba(74, 125, 255, 0.06);
}

.chat-bubble.assistant {
  margin-right: auto;
  background: #FFFFFF;
}

.chat-role {
  display: block;
  margin-bottom: 8px;
  color: var(--accent-2);
  font-size: 0.8rem;
  text-transform: uppercase;
  letter-spacing: 0.06em;
}

.chat-text {
  word-break: break-word;
  color: var(--text);
  line-height: 1.6;
}

/* Tables rendered inside Norio chat bubbles */
.chat-table {
  width: 100%;
  border-collapse: collapse;
  margin: 8px 0;
  font-size: 0.82rem;
}

.chat-table th,
.chat-table td {
  border: 1px solid var(--border, #e2e8f0);
  padding: 4px 8px;
  text-align: left;
}

.chat-table th {
  background: var(--bg-alt, #f1f5f9);
  font-weight: 600;
}

.chat-table tr:nth-child(even) td {
  background: var(--bg-alt, #f8fafc);
}

.chat-meta {
  margin-top: 10px;
  color: var(--muted);
  font-size: 0.82rem;
}

.chat-attachment-list,
.chat-pending {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.chat-attachment-chip {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 8px 12px;
  border-radius: 999px;
  border: 1px solid var(--line);
  background: rgba(255, 255, 255, 0.05);
  color: var(--text);
  font-size: 0.88rem;
}

.chat-image-preview {
  display: block;
  max-width: 180px;
  max-height: 180px;
  margin-top: 10px;
  border-radius: 14px;
  border: 1px solid var(--line);
}

.chat-attachments-bar {
  display: grid;
  gap: 8px;
  margin-bottom: 8px;
}

.chat-dropzone {
  display: none;
  margin-bottom: 12px;
  padding: 18px;
  border: 1px dashed rgba(74, 125, 255, 0.35);
  border-radius: 18px;
  background: #FFFFFF;
  color: var(--text);
}

.chat-dropzone p {
  margin: 6px 0 0;
  font-size: 0.92rem;
}

.chat-dropzone.active {
  display: block;
}

.chat-attach-button {
  width: fit-content;
}

#chat-files {
  display: none;
}

.chat-composer textarea {
  min-height: 90px;
  margin-bottom: 8px;
}

.chat-actions {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
}

.chat-close {
  position: absolute;
  top: 14px;
  right: 14px;
  z-index: 2;
}

.dashboard-header,
.grid,
.stack {
  display: grid;
  gap: 18px;
}

.dashboard-header {
  grid-template-columns: 1fr auto;
  align-items: center;
}

.grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  margin: 18px 0;
}

.grid.four-up {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

.grid.six-up {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.grid.seven-up {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

.stack {
  margin-top: 8px;
}

.stack section>h3 {
  margin-bottom: 10px;
}

.card {
  padding: 20px;
}

.table-wrap {
  overflow: auto;
  border: 1px solid var(--line);
  border-radius: 18px;
}

table {
  width: 100%;
  border-collapse: collapse;
}

.report-preview {
  margin-top: 14px;
  border: 1px solid var(--line);
  border-radius: 18px;
  background: #F6F8FB;
  padding: 18px;
}

.report-preview h4 {
  margin: 0 0 12px;
}

.report-preview pre {
  margin: 0;
  white-space: pre-wrap;
  word-break: break-word;
  color: var(--muted);
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
  line-height: 1.5;
}

th,
td {
  text-align: left;
  padding: 14px 16px;
  border-bottom: 1px solid #E5EAF2;
  vertical-align: top;
}

th {
  color: var(--accent-2);
  font-size: 0.88rem;
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

@media (max-width: 920px) {

  .hero,
  .contact-panel,
  .dashboard-header,
  .grid,
  .grid.four-up,
  .grid.six-up,
  .grid.seven-up,
  .about-grid {
    grid-template-columns: 1fr;
  }

  .shell {
    width: min(100% - 20px, 1180px);
  }

  h1 {
    max-width: none;
  }

  .chat-drawer {
    width: 100vw;
  }

  .login-trigger-panel {
    flex-direction: column;
    align-items: flex-start;
  }

  .login-modal-window {
    margin-top: 5vh;
    padding: 20px;
  }
}

/* ============================================================
   APP SHELL — Internal application (post-login)
   ============================================================ */

.app-shell {
  position: fixed;
  inset: 0;
  display: flex;
  background: #F6F8FB;
  z-index: 100;
  overflow: hidden;
  font-size: 0.9rem;
}

/* ---- Sidebar ---- */
.app-sidebar {
  width: 224px;
  min-width: 224px;
  background: #FFFFFF;
  border-right: 1px solid #E5EAF2;
  display: flex;
  flex-direction: column;
  overflow-y: auto;
  overflow-x: hidden;
  scrollbar-width: thin;
  scrollbar-color: rgba(74, 125, 255, 0.12) transparent;
  transition: width 0.28s cubic-bezier(0.4, 0, 0.2, 1),
    min-width 0.28s cubic-bezier(0.4, 0, 0.2, 1),
    border-color 0.28s;
}

/* Collapsed state — content fully hidden, no overflow leaking */
.app-sidebar.sidebar-collapsed {
  width: 0;
  min-width: 0;
  border-right-color: transparent;
}

/* Toggle tab — sibling of nav, child of app-shell (position:fixed) */
.sidebar-toggle-tab {
  position: absolute;
  left: 224px;
  /* matches sidebar width */
  top: 50%;
  transform: translateY(-50%);
  z-index: 200;
  width: 18px;
  height: 52px;
  background: #4A7DFF;
  border: none;
  border-radius: 0 8px 8px 0;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 2px 0 8px rgba(74, 125, 255, 0.25);
  padding: 0;
  flex-shrink: 0;
  transition: left 0.28s cubic-bezier(0.4, 0, 0.2, 1),
    background 0.18s,
    width 0.18s,
    box-shadow 0.18s;
}

.sidebar-toggle-tab:hover {
  background: #2B5CE6;
  width: 22px;
  box-shadow: 3px 0 12px rgba(74, 125, 255, 0.38);
}

/* When sidebar is collapsed the tab slides to left edge */
.app-shell.sidebar-is-collapsed .sidebar-toggle-tab {
  left: 0;
}

.sidebar-toggle-icon {
  width: 13px;
  height: 13px;
  color: #ffffff;
  flex-shrink: 0;
  transition: transform 0.28s cubic-bezier(0.4, 0, 0.2, 1);
}

/* Disable ALL transitions when restoring saved state on page load */
.app-shell.sidebar-no-transition *,
.app-shell.sidebar-no-transition .sidebar-toggle-tab {
  transition: none !important;
}



.app-sidebar-brand {
  padding: 1.4rem 1.2rem 1.1rem;
  display: flex;
  align-items: center;
  gap: 0.7rem;
  border-bottom: 1px solid #E5EAF2;
  flex-shrink: 0;
}

.app-brand-icon {
  font-size: 1.35rem;
  color: var(--gold);
  flex-shrink: 0;
  line-height: 1;
}

.app-brand-text strong {
  display: block;
  font-size: 0.88rem;
  font-weight: 700;
  color: #273142;
  letter-spacing: 0.015em;
}

.app-brand-text span {
  display: block;
  font-size: 0.67rem;
  color: #6B7788;
  text-transform: uppercase;
  letter-spacing: 0.09em;
  margin-top: 1px;
}

.app-nav {
  list-style: none;
  padding: 0.6rem 0 1rem;
  margin: 0;
  flex: 1;
}

.app-nav-group {
  padding: 1rem 1.2rem 0.25rem;
  font-size: 0.65rem;
  text-transform: uppercase;
  letter-spacing: 0.11em;
  color: #A0AABB;
  font-weight: 600;
}

.app-nav-link {
  display: block;
  padding: 0.42rem 1.2rem 0.42rem 1.4rem;
  color: #6B7788;
  text-decoration: none;
  font-size: 0.8rem;
  border-left: 2px solid transparent;
  transition: color 0.15s, background 0.15s, border-color 0.15s;
}

.app-nav-link:hover {
  color: var(--accent);
  background: rgba(74, 125, 255, 0.04);
}

.app-nav-link--active {
  color: var(--accent);
  border-left-color: var(--accent);
  background: rgba(74, 125, 255, 0.06);
}


/* ---- Main column ---- */
.app-main {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

/* ═══════════════════════════════════════════════════════════════════════════
   RESEARCH WORKSTATION v2 — Premium Horizontal Design
   ═══════════════════════════════════════════════════════════════════════════ */
.ws-section {
  display: flex;
  flex-direction: column;
  height: calc(100vh - 180px);
  gap: 0;
}

/* ── Top Bar ── */
.ws-topbar {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  padding: 0.55rem 1rem;
  background: linear-gradient(135deg, #FFFFFF 0%, #F0F4FA 100%);
  border: 1px solid #E5EAF2;
  border-radius: 12px;
  box-shadow: 0 1px 4px rgba(39, 49, 66, 0.06);
  flex-shrink: 0;
}

.ws-topbar-brand {
  display: flex;
  align-items: center;
  gap: 0.4rem;
  flex-shrink: 0;
}

.ws-topbar-icon {
  font-size: 1.2rem;
}

.ws-topbar-title {
  font-weight: 800;
  font-size: 0.88rem;
  color: #273142;
  letter-spacing: -0.01em;
  white-space: nowrap;
}

.ws-topbar-controls {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  flex: 1;
  min-width: 0;
}

/* ── Field groups with labels ── */
.ws-field {
  display: flex;
  flex-direction: column;
  gap: 1px;
  margin: 0;
  flex-shrink: 0;
}

.ws-field-grow {
  flex: 1;
  min-width: 0;
  flex-shrink: 1;
}

.ws-field-grow2 {
  flex: 1.5;
  min-width: 0;
  flex-shrink: 1;
}

.ws-doc-select-field {
  position: relative;
  min-width: 280px;
}

.ws-field-label {
  font-size: 0.62rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: #A0AABB;
  line-height: 1;
  padding-left: 2px;
}

.ws-sep {
  color: #E5EAF2;
  font-size: 1rem;
  flex-shrink: 0;
  user-select: none;
}

.ws-cat-select {
  width: 140px;
}

.ws-cat-value {
  width: 140px;
  display: inline-flex;
  align-items: center;
  cursor: default;
  user-select: none;
  font-weight: 500;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* Document-selector live filter */
.ws-doc-filter-field {
  width: 180px;
}
.ws-doc-filter-wrap {
  position: relative;
  display: flex;
  align-items: center;
}
.ws-doc-filter-input {
  padding-left: 0.55rem;
}

.ws-doc-selector-native {
  position: absolute;
  width: 1px;
  height: 1px;
  opacity: 0;
  pointer-events: none;
}

.ws-doc-selected {
  display: block;
  width: 100%;
  height: 30px;
  padding: 0.35rem 0.55rem;
  overflow: hidden;
  text-align: left;
  text-overflow: ellipsis;
  white-space: nowrap;
  cursor: pointer;
  background: #FFFFFF;
}

.ws-doc-selected:hover,
.ws-doc-selected:focus {
  border-color: var(--brand-primary);
  box-shadow: 0 0 0 2px rgba(74, 125, 255, 0.12);
}

.ws-doc-results {
  position: absolute;
  z-index: 120;
  top: calc(100% + 4px);
  left: 0;
  right: 0;
  max-height: min(48vh, 360px);
  overflow-y: scroll;
  overscroll-behavior: contain;
  scrollbar-gutter: stable;
  border: 1px solid #CBD5E1;
  border-radius: 8px;
  background: #FFFFFF;
  box-shadow: 0 12px 24px rgba(39, 49, 66, 0.16);
  padding: 0.25rem;
  scrollbar-width: auto;
  scrollbar-color: #64748B #E2E8F0;
}

.ws-doc-results::-webkit-scrollbar {
  width: 12px;
}

.ws-doc-results::-webkit-scrollbar-track {
  background: #E2E8F0;
  border-radius: 8px;
}

.ws-doc-results::-webkit-scrollbar-thumb {
  background: #64748B;
  border: 2px solid #E2E8F0;
  border-radius: 8px;
}

.ws-doc-result-item {
  display: grid;
  grid-template-columns: 2rem minmax(0, 1fr);
  align-items: center;
  gap: 0.4rem;
  width: 100%;
  min-height: 34px;
  padding: 0.28rem 0.45rem;
  border: 0;
  border-radius: 6px;
  background: transparent;
  color: #273142;
  font: inherit;
  font-size: 0.78rem;
  text-align: left;
  cursor: pointer;
}

.ws-doc-result-item:hover,
.ws-doc-result-item:focus {
  outline: none;
  background: #EEF4FF;
}

.ws-doc-result-item.is-selected {
  background: #E0EAFF;
  color: #17356F;
  font-weight: 700;
}

.ws-doc-result-index {
  color: #64748B;
  font-variant-numeric: tabular-nums;
  text-align: right;
}

.ws-doc-result-title {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.ws-doc-result-empty {
  padding: 0.6rem 0.7rem;
  color: #64748B;
  font-size: 0.78rem;
}

.ws-control {
  border: 1px solid #E5EAF2;
  border-radius: 8px;
  padding: 0.35rem 0.5rem;
  font-size: 0.78rem;
  background: #FFFFFF;
  color: #273142;
  transition: border-color 0.2s, box-shadow 0.2s;
  min-height: 30px;
  width: 100%;
}

.ws-control:focus {
  outline: none;
  border-color: #4A7DFF;
  box-shadow: 0 0 0 2px rgba(74, 125, 255, 0.12);
}

.ws-btn {
  border: 1px solid #E5EAF2;
  border-radius: 8px;
  padding: 0.4rem 0.65rem;
  font-size: 0.8rem;
  background: #FFFFFF;
  color: #273142;
  cursor: pointer;
  white-space: nowrap;
  transition: all 0.15s;
  min-height: 34px;
}

.ws-btn:hover {
  background: #F0F4FA;
  border-color: #4A7DFF;
  transform: translateY(-1px);
}

.ws-btn-sync {
  flex-shrink: 0;
}

.ws-topbar-slider {
  display: flex;
  align-items: center;
  gap: 0.4rem;
  flex-shrink: 0;
}

.ws-slider-label {
  font-size: 0.72rem;
  color: #6B7788;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

.ws-range {
  width: 70px;
  accent-color: #4A7DFF;
}

/* ── In-Document Search Bar ── */
.ws-doc-search-bar {
  display: flex;
  align-items: center;
  gap: 3px;
  background: linear-gradient(135deg, #F8FAFC 0%, #EEF2F7 100%);
  border: 1px solid #D1D9E6;
  border-radius: 6px;
  padding: 2px 5px;
  flex: 0 1 auto;
  max-width: 290px;
  height: 26px;
  overflow: visible;
  position: relative;
  transition: border-color 0.2s, box-shadow 0.2s;
}

.ws-doc-search-bar:focus-within {
  border-color: #4A7DFF;
  box-shadow: 0 0 0 2px rgba(74, 125, 255, 0.12);
}

.ws-doc-search-icon {
  font-size: 0.72rem;
  line-height: 1;
  flex-shrink: 0;
}

.ws-doc-search-input {
  border: none;
  background: transparent;
  font-size: 0.76rem;
  color: #334155;
  outline: none;
  flex: 1 1 auto;
  min-width: 40px;
  padding: 1px 2px;
  font-family: 'Inter', sans-serif;
}

.ws-doc-search-input::placeholder {
  color: #94A3B8;
  font-size: 0.7rem;
}

.ws-doc-search-mode {
  border: 1px solid #D1D9E6;
  border-radius: 3px;
  background: #fff;
  font-size: 0.68rem;
  color: #4A7DFF;
  font-weight: 600;
  padding: 1px 3px;
  height: 18px;
  line-height: 18px;
  cursor: pointer;
  outline: none;
  flex-shrink: 0;
  max-width: 48px;
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='6' height='4' viewBox='0 0 6 4'%3E%3Cpath d='M0 0l3 4 3-4z' fill='%234A7DFF'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 1px center;
  padding-right: 9px;
}

.ws-doc-search-mode:focus {
  border-color: #4A7DFF;
}

.ws-doc-search-counter {
  font-size: 0.7rem;
  color: #6B7788;
  font-weight: 500;
  white-space: nowrap;
  min-width: 22px;
  text-align: center;
  flex-shrink: 0;
  font-variant-numeric: tabular-nums;
}

.ws-doc-search-nav {
  border: none;
  background: transparent;
  font-size: 0.72rem;
  color: #4A7DFF;
  cursor: pointer;
  padding: 1px 3px;
  border-radius: 3px;
  line-height: 1;
  flex-shrink: 0;
  min-width: 16px;
  height: 16px;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background 0.15s;
}

.ws-doc-search-nav:hover {
  background: rgba(74, 125, 255, 0.12);
}

.ws-doc-search-nav:disabled {
  color: #CBD5E1;
  cursor: default;
  background: transparent;
}

/* ── Search Hit Highlights ── */
mark.ws-search-hit {
  background: #FBBF24;
  color: #1E293B;
  padding: 0 1px;
  border-radius: 2px;
  scroll-margin-top: 60px;
}

mark.ws-search-hit.ws-search-active {
  background: #F97316;
  color: #fff;
  box-shadow: 0 0 0 2px rgba(249, 115, 22, 0.3);
}

/* Literal matches in semantic mode: warm yellow (same as default) */
mark.ws-search-hit.ws-search-literal {
  background: #FBBF24;
  color: #1E293B;
}

mark.ws-search-hit.ws-search-literal.ws-search-active {
  background: #F97316;
  color: #fff;
  box-shadow: 0 0 0 2px rgba(249, 115, 22, 0.3);
}

/* Conceptual/synonym matches: soft green for clear differentiation */
mark.ws-search-hit.ws-search-conceptual {
  background: #86EFAC;
  color: #14532D;
  padding: 0 2px;
  border-radius: 3px;
  border-bottom: 2px solid #22C55E;
}

mark.ws-search-hit.ws-search-conceptual.ws-search-active {
  background: #22C55E;
  color: #fff;
  box-shadow: 0 0 0 2px rgba(34, 197, 94, 0.3);
  border-bottom-color: #15803D;
}

/* ── Semantic Terms Dropdown Toggle ── */
.ws-doc-search-terms-btn {
  font-size: 0.6rem !important;
  transition: transform 0.2s ease, color 0.15s;
}

.ws-doc-search-terms-btn.open {
  transform: rotate(180deg);
  color: #4A7DFF;
}

/* ── Semantic Terms Dropdown Panel ── */
.ws-search-terms-panel {
  position: absolute;
  top: 100%;
  left: 0;
  margin-top: 4px;
  min-width: 320px;
  background: rgba(255, 255, 255, 0.97);
  backdrop-filter: blur(12px);
  border: 1px solid #D1D9E6;
  border-radius: 10px;
  box-shadow: 0 8px 32px rgba(39, 49, 66, 0.12), 0 2px 8px rgba(39, 49, 66, 0.06);
  z-index: 1000;
  max-height: 260px;
  overflow-y: auto;
  padding: 6px 0;
  animation: wsTermsFadeIn 0.15s ease-out;
  scrollbar-width: thin;
  scrollbar-color: rgba(74, 125, 255, 0.2) transparent;
}

@keyframes wsTermsFadeIn {
  from {
    opacity: 0;
    transform: translateY(-4px);
  }

  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.ws-search-terms-panel:empty {
  display: none !important;
}

/* In-document search highlights (own class — never collides with annotations) */
mark.ws-search-hl {
  background: #FEF08A;
  color: inherit;
  border-radius: 2px;
  padding: 0 1px;
}
mark.ws-search-hl.ws-search-hl-active {
  background: #FB923C;
  box-shadow: 0 0 0 2px rgba(251, 146, 60, 0.4);
}

/* Semantic terms chips inside the ▼ panel */
.ws-search-term-chip {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  margin: 3px 4px;
  padding: 2px 8px;
  border-radius: 12px;
  font-size: 0.72rem;
  background: #EEF2FF;
  color: #3730A3;
  border: 1px solid #C7D2FE;
  cursor: pointer;
  transition: background 0.12s, box-shadow 0.12s, transform 0.08s;
}
.ws-search-term-chip:hover {
  filter: brightness(0.96);
  transform: translateY(-1px);
}
.ws-search-term-chip.literal {
  background: #FEF3C7;
  color: #92400E;
  border-color: #FDE68A;
}
.ws-search-term-chip.all {
  background: #E0E7FF;
  color: #1E3A8A;
  border-color: #A5B4FC;
  font-weight: 600;
}
.ws-search-term-chip.active {
  box-shadow: 0 0 0 2px rgba(79, 70, 229, 0.5);
  filter: brightness(0.97);
}
.ws-search-term-chip b {
  font-size: 0.68rem;
  opacity: 0.75;
}

.ws-search-terms-header {
  font-size: 0.65rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: #94A3B8;
  padding: 4px 12px 6px;
  border-bottom: 1px solid #F1F5F9;
}

.ws-search-term-item {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 5px 12px;
  cursor: pointer;
  transition: background 0.12s;
  border: none;
  background: none;
  width: 100%;
  text-align: left;
  font-family: inherit;
}

.ws-search-term-item:hover {
  background: #F0F4FA;
}

.ws-search-term-item:active {
  background: #E0E7FF;
}

.ws-search-term-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  flex-shrink: 0;
}

.ws-search-term-dot.literal {
  background: #FBBF24;
  border: 1px solid #F59E0B;
}

.ws-search-term-dot.conceptual {
  background: #86EFAC;
  border: 1px solid #22C55E;
}

.ws-search-term-label {
  font-size: 0.78rem;
  font-weight: 500;
  color: #1E293B;
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.ws-search-term-count {
  font-size: 0.68rem;
  font-weight: 600;
  color: #94A3B8;
  background: #F1F5F9;
  padding: 1px 6px;
  border-radius: 8px;
  flex-shrink: 0;
  font-variant-numeric: tabular-nums;
}

.ws-search-term-type {
  font-size: 0.6rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  padding: 1px 5px;
  border-radius: 4px;
  flex-shrink: 0;
}

.ws-search-term-type.literal {
  color: #92400E;
  background: #FEF3C7;
}

.ws-search-term-type.conceptual {
  color: #065F46;
  background: #D1FAE5;
}

/* ── Memo Marks — bidirectional text↔memo links (MAXQDA-style) ── */
mark.ws-memo-mark {
  background: transparent;
  border-bottom: 2px dashed #4A7DFF;
  padding: 0;
  border-radius: 0;
  cursor: pointer;
  position: relative;
  transition: background 0.15s, border-color 0.15s;
}

mark.ws-memo-mark:hover {
  background: rgba(74, 125, 255, 0.08);
  border-bottom-color: #2B5CE6;
}

mark.ws-memo-mark::after {
  content: '📝';
  position: absolute;
  top: -18px;
  left: 50%;
  transform: translateX(-50%);
  font-size: 0.65rem;
  opacity: 0;
  transition: opacity 0.15s;
  pointer-events: none;
  background: #fff;
  border: 1px solid #E5EAF2;
  border-radius: 4px;
  padding: 0 3px;
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.08);
  white-space: nowrap;
}

mark.ws-memo-mark:hover::after {
  opacity: 1;
}

/* Flash animation when navigating from memo → text */
mark.ws-memo-mark-flash {
  animation: memoMarkFlash 1.5s ease-out;
}

@keyframes memoMarkFlash {
  0% {
    background: rgba(74, 125, 255, 0.3);
  }

  100% {
    background: transparent;
  }
}

/* ── Memo card enhancements ── */
.ws-memo-link-badge {
  font-size: 0.62rem;
  margin-left: 3px;
  vertical-align: middle;
  cursor: help;
}

.ws-memo-locate-btn {
  border: 1px solid #E5EAF2;
  border-radius: 5px;
  padding: 2px 6px;
  font-size: 0.65rem;
  font-weight: 600;
  background: #EEF2FF;
  color: #4A7DFF;
  cursor: pointer;
  transition: all 0.15s;
  margin-top: 4px;
  display: inline-block;
}

.ws-memo-locate-btn:hover {
  background: #4A7DFF;
  color: #fff;
  border-color: #4A7DFF;
}

/* Flash animation when navigating from text → memo */
.ws-memo-card-flash {
  animation: memoCardFlash 1.5s ease-out;
}

@keyframes memoCardFlash {
  0% {
    box-shadow: 0 0 0 3px rgba(74, 125, 255, 0.5);
    border-color: #4A7DFF;
  }

  100% {
    box-shadow: none;
    border-color: #FDE68A;
  }
}

/* Welcome placeholder inside viewer */
.ws-welcome-placeholder {
  display: none;
  /* shown by JS when viewer is empty */
  flex-direction: column;
  align-items: center;
  justify-content: center;
  height: 100%;
  padding: 2rem;
  text-align: center;
  color: #64748B;
}

.ws-welcome-placeholder h3 {
  font-size: 1.1rem;
  color: #334155;
  margin: 0.75rem 0 0.4rem;
}

.ws-welcome-placeholder p {
  font-size: 0.85rem;
}

/* ── Sub-bar (kept for legacy reference, no longer rendered) ── */
.ws-subbar {
  display: none;
}


/* ── Research Toolbar Row ── */
.ws-research-toolbar {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  padding: 5px 8px;
  background: #F6F8FB;
  border: 1px solid #E5EAF2;
  border-top: none;
  border-radius: 0 0 10px 10px;
  flex-shrink: 0;
  flex-wrap: wrap;
  margin-top: -1px;
}

.ws-research-toolbar.hidden {
  display: none;
}

.ws-view-tabs {
  display: flex;
  gap: 3px;
  flex-shrink: 0;
}

.ws-edit-controls {
  display: flex;
  gap: 4px;
  flex-shrink: 0;
  padding: 0 6px;
  border-left: 1px solid #E5EAF2;
  border-right: 1px solid #E5EAF2;
}

.ws-edit-btn {
  border: 1px solid #E5EAF2;
  border-radius: 6px;
  padding: 0.26rem 0.65rem;
  font-size: 0.74rem;
  font-weight: 600;
  background: #FFFFFF;
  color: #475569;
  cursor: pointer;
  transition: all 0.15s;
  white-space: nowrap;
}

.ws-edit-btn:hover {
  background: #FEF3C7;
  border-color: #F59E0B;
  color: #92400E;
}

.ws-edit-save {
  background: #ECFDF5;
  border-color: #6EE7B7;
  color: #065F46;
}

.ws-edit-save:hover {
  background: #D1FAE5;
  border-color: #34D399;
}

.ws-edit-cancel:hover {
  background: #FEE2E2;
  border-color: #FCA5A5;
  color: #7F1D1D;
}

.ws-action-group {
  display: flex;
  align-items: center;
  gap: 3px;
  margin-left: auto;
  flex-shrink: 0;
}

/* ── TTS (Text-to-Speech) controls ── */
.ws-tts-controls {
  display: flex;
  align-items: center;
  gap: 5px;
  flex-shrink: 0;
  padding: 0 8px;
  border-left: 1px solid #E5EAF2;
  border-right: 1px solid #E5EAF2;
}

.ws-tts-controls.hidden {
  display: none;
}

.ws-tts-btn {
  border: 1px solid #E5EAF2;
  border-radius: 6px;
  padding: 0.26rem 0.65rem;
  font-size: 0.74rem;
  font-weight: 600;
  background: #FFFFFF;
  color: #475569;
  cursor: pointer;
  transition: all 0.15s;
  white-space: nowrap;
}

.ws-tts-btn:hover {
  background: #EEF2FF;
  border-color: #C7D4FF;
  color: #4A7DFF;
}

#ws-tts-play.speaking {
  background: linear-gradient(135deg, #4A7DFF 0%, #6C5CE7 100%);
  color: #fff;
  border-color: transparent;
}

.ws-tts-pause,
.ws-tts-stop {
  padding: 0.26rem 0.5rem;
}

/* ── Dropdown Speed Selector (Premium Style) ── */
.ws-tts-speed-dropdown {
  position: relative;
  display: inline-block;
}

.ws-tts-speed-btn {
  display: flex;
  align-items: center;
  gap: 6px;
  background: #ffffff;
  border: 1px solid #E5EAF2;
  border-radius: 8px;
  padding: 4px 12px;
  font-size: 0.75rem;
  font-weight: 700;
  color: #475569;
  cursor: pointer;
  box-shadow: 0 1px 3px rgba(39, 49, 66, 0.05);
  font-family: 'JetBrains Mono', 'Fira Code', monospace;
  transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
  user-select: none;
  white-space: nowrap;
}

.ws-tts-speed-btn:hover {
  background: #EEF2FF;
  border-color: #C7D4FF;
  color: #4A7DFF;
  transform: translateY(-1px);
  box-shadow: 0 4px 6px -1px rgba(74, 125, 255, 0.12), 0 2px 4px -1px rgba(74, 125, 255, 0.06);
}

.ws-tts-speed-btn.active {
  background: #EEF2FF;
  border-color: #4A7DFF;
  color: #4A7DFF;
  box-shadow: 0 0 0 3px rgba(74, 125, 255, 0.15);
}

.ws-tts-speed-btn #ws-tts-speed-display {
  font-weight: 800;
  letter-spacing: -0.01em;
}

.ws-tts-speed-menu {
  position: absolute;
  top: calc(100% + 6px);
  left: 50%;
  transform: translateX(-50%) translateY(4px);
  background: #ffffff;
  border: 1px solid #E2E8F0;
  border-radius: 10px;
  box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.08), 0 8px 10px -6px rgba(0, 0, 0, 0.04);
  display: flex;
  flex-direction: column;
  padding: 6px;
  min-width: 80px;
  z-index: 1000;
  transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
}

.ws-tts-speed-menu.hidden {
  display: none;
  opacity: 0;
  pointer-events: none;
  transform: translateX(-50%) translateY(8px);
}

.ws-speed-option {
  border: none;
  background: transparent;
  padding: 6px 12px;
  font-size: 0.75rem;
  font-weight: 600;
  color: #475569;
  cursor: pointer;
  border-radius: 6px;
  text-align: center;
  font-family: 'JetBrains Mono', 'Fira Code', monospace;
  transition: all 0.15s ease;
  white-space: nowrap;
}

.ws-speed-option:hover {
  background: #F1F5F9;
  color: #0f172a;
}

.ws-speed-option.ws-speed-option--active {
  color: #ffffff;
  background: linear-gradient(135deg, #4A7DFF 0%, #6C5CE7 100%);
  font-weight: 700;
  box-shadow: 0 2px 6px rgba(74, 125, 255, 0.25);
}

/* ── Font Size Control (Premium Style) ── */
.ws-font-size-control {
  display: flex;
  align-items: center;
  gap: 4px;
  background: #ffffff;
  border: 1px solid #E5EAF2;
  border-radius: 8px;
  padding: 2px 6px;
  box-shadow: 0 1px 2px rgba(39, 49, 66, 0.04);
}

.ws-font-size-label {
  font-size: 0.72rem;
  font-weight: 700;
  color: #64748B;
  padding: 0 4px;
  user-select: none;
}

.ws-font-size-btn {
  width: 22px;
  height: 22px;
  border: 1px solid #E5EAF2;
  border-radius: 6px;
  background: #ffffff;
  color: #475569;
  font-size: 0.75rem;
  font-weight: 700;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all 0.15s ease;
  user-select: none;
  padding: 0;
  line-height: 1;
}

.ws-font-size-btn:hover {
  background: #EEF2FF;
  border-color: #C7D4FF;
  color: #4A7DFF;
}

.ws-font-size-btn:active {
  transform: scale(0.95);
}

.ws-font-size-val {
  font-size: 0.72rem;
  font-weight: 700;
  color: #475569;
  min-width: 36px;
  text-align: center;
  user-select: none;
  font-family: 'JetBrains Mono', 'Fira Code', monospace;
}

.ws-tts-divider {
  width: 1px;
  height: 18px;
  background-color: #E5EAF2;
  margin: 0 4px;
}

.ws-tts-voice-select {
  border: 1px solid #E5EAF2;
  border-radius: 6px;
  padding: 0.22rem 0.4rem;
  font-size: 0.72rem;
  color: #475569;
  background: #fff;
  cursor: pointer;
  max-width: 160px;
}

.ws-tts-voice-select:focus {
  outline: none;
  border-color: #4A7DFF;
}

/* ── Karaoke word highlighting ── */
.tts-word {
  display: inline;
  border-radius: 3px;
  transition: background 0.08s, color 0.08s;
  padding: 0 1px;
}

.tts-word.tts-current {
  background: linear-gradient(135deg, #4A7DFF 0%, #6C5CE7 100%);
  color: #ffffff;
  border-radius: 4px;
  padding: 1px 3px;
  box-shadow: 0 1px 6px rgba(74, 125, 255, 0.45);
}

.tts-word.tts-done {
  color: #94A3B8;
}

/* ── Word-by-word karaoke within sentence highlight ── */
.ws-tts-word {
  background: linear-gradient(135deg, #4A7DFF 0%, #6C5CE7 100%);
  color: #ffffff;
  border-radius: 3px;
  padding: 1px 2px;
  box-shadow: 0 1px 4px rgba(74, 125, 255, 0.4);
  transition: background 0.05s ease;
}

/* Chat panel collapse button */
.ws-chat-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0.5rem 0.75rem;
  font-size: 0.82rem;
  font-weight: 600;
  color: #475569;
  border-bottom: 1px solid #E5EAF2;
  background: #F6F8FB;
  border-radius: 10px 10px 0 0;
  flex-shrink: 0;
}

.ws-chat-collapse-btn {
  background: none;
  border: 1px solid #E5EAF2;
  border-radius: 5px;
  padding: 1px 6px;
  font-size: 0.75rem;
  cursor: pointer;
  color: #94A3B8;
  transition: all 0.15s;
  line-height: 1.5;
}

.ws-chat-collapse-btn:hover {
  background: #EEF2FF;
  color: #4A7DFF;
  border-color: #C7D4FF;
}

.ws-chat-panel.collapsed {
  flex: 0 0 36px !important;
  width: 36px !important;
  max-width: 36px !important;
  min-width: 36px !important;
  overflow: hidden;
}

.ws-chat-panel.collapsed .ws-chat-messages,
.ws-chat-panel.collapsed .ws-chat-input-area {
  display: none;
}

.ws-chat-panel.collapsed .ws-chat-header span {
  display: none;
}

/* ── Research Panel: Tabs ── */
.ws-panel-tabs {
  display: flex;
  align-items: center;
  gap: 2px;
  padding: 5px 6px 0;
  background: #F6F8FB;
  border-bottom: 1px solid #E5EAF2;
  border-radius: 10px 10px 0 0;
  flex-shrink: 0;
}

.ws-panel-tab {
  border: 1px solid transparent;
  border-bottom: none;
  border-radius: 7px 7px 0 0;
  padding: 0.3rem 0.65rem;
  font-size: 0.73rem;
  font-weight: 600;
  color: #94A3B8;
  background: transparent;
  cursor: pointer;
  transition: all 0.15s;
  white-space: nowrap;
}

.ws-panel-tab:hover {
  color: #4A7DFF;
  background: #EEF2FF;
}

.ws-panel-tab.active {
  color: #4A7DFF;
  background: #ffffff;
  border-color: #E5EAF2;
  border-bottom-color: #ffffff;
  margin-bottom: -1px;
  z-index: 1;
}

.ws-tab-content {
  display: flex;
  flex-direction: column;
  flex: 1;
  overflow: hidden;
  min-height: 0;
}

.ws-tab-content.hidden {
  display: none !important;
}

/* Section title */
.ws-panel-section-title {
  font-size: 0.7rem;
  font-weight: 700;
  color: #94A3B8;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  padding: 6px 10px 3px;
  flex-shrink: 0;
}

.ws-panel-empty {
  font-size: 0.78rem;
  color: #94A3B8;
  text-align: center;
  padding: 1rem;
  font-style: italic;
}

/* Memo list */
.ws-memos-list {
  flex: 1;
  overflow-y: auto;
  padding: 4px 8px;
  display: flex;
  flex-direction: column;
  gap: 5px;
  min-height: 0;
}

.ws-memo-card {
  background: #FFFBEB;
  border: 1px solid #FDE68A;
  border-radius: 7px;
  padding: 6px 8px;
  font-size: 0.75rem;
  color: #78350F;
  line-height: 1.5;
  position: relative;
  cursor: pointer;
  transition: transform 0.15s ease, box-shadow 0.15s ease, border-color 0.15s ease;
}

.ws-memo-card:hover,
.ws-memo-card:focus-visible {
  transform: translateY(-1px);
  border-color: #F59E0B;
  box-shadow: 0 8px 18px rgba(217, 119, 6, 0.12);
  outline: none;
}

.ws-memo-card .ws-memo-type-tag {
  display: inline-block;
  font-size: 0.65rem;
  font-weight: 700;
  background: #FEF3C7;
  border-radius: 4px;
  padding: 1px 5px;
  margin-bottom: 3px;
  color: #92400E;
}

.ws-memo-card .ws-memo-preview {
  display: -webkit-box;
  -webkit-line-clamp: 3;
  line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.ws-memo-card .ws-memo-date {
  font-size: 0.62rem;
  color: #A16207;
  margin-top: 3px;
}

.ws-memo-delete {
  position: absolute;
  top: 4px;
  right: 6px;
  background: none;
  border: none;
  font-size: 0.65rem;
  color: #D97706;
  cursor: pointer;
  opacity: 0.5;
  transition: opacity 0.15s;
}

.ws-memo-delete:hover {
  opacity: 1;
  color: #B91C1C;
}

/* Memo / Diary form */
.ws-memo-form,
.ws-diary-form {
  display: flex;
  flex-direction: column;
  gap: 5px;
  padding: 6px 8px 8px;
  border-top: 1px solid #E5EAF2;
  flex-shrink: 0;
}

.ws-panel-select {
  border: 1px solid #E5EAF2;
  border-radius: 6px;
  padding: 0.25rem 0.4rem;
  font-size: 0.73rem;
  color: #475569;
  background: #fff;
  width: 100%;
}

.ws-panel-select:focus {
  outline: none;
  border-color: #4A7DFF;
}

.ws-panel-input {
  border: 1px solid #E5EAF2;
  border-radius: 6px;
  padding: 0.3rem 0.5rem;
  font-size: 0.75rem;
  color: #273142;
  width: 100%;
  box-sizing: border-box;
}

.ws-panel-input:focus {
  outline: none;
  border-color: #4A7DFF;
}

.ws-panel-textarea {
  border: 1px solid #E5EAF2;
  border-radius: 6px;
  padding: 0.4rem 0.5rem;
  font-size: 0.75rem;
  color: #273142;
  width: 100%;
  min-height: 72px;
  resize: vertical;
  line-height: 1.55;
  font-family: inherit;
  box-sizing: border-box;
}

.ws-panel-textarea:focus {
  outline: none;
  border-color: #4A7DFF;
}

.ws-panel-save-btn {
  border: none;
  border-radius: 7px;
  padding: 0.38rem 0.75rem;
  font-size: 0.74rem;
  font-weight: 700;
  background: linear-gradient(135deg, #4A7DFF 0%, #6C5CE7 100%);
  color: #fff;
  cursor: pointer;
  transition: opacity 0.15s;
  align-self: flex-end;
}

.ws-panel-save-btn:hover {
  opacity: 0.88;
}

.ws-diary-send-btn {
  background: linear-gradient(135deg, #059669 0%, #0891B2 100%);
}

/* Diary source badge */
.ws-diary-source {
  font-size: 0.68rem;
  color: #64748B;
  background: #F1F5F9;
  border-radius: 5px;
  padding: 3px 7px;
  border: 1px solid #E5EAF2;
}

.ws-diary-source em {
  font-style: normal;
  color: #4A7DFF;
  font-weight: 600;
}

/* Diary recent entries */
.ws-diary-recent {
  overflow-y: auto;
  padding: 4px 8px;
  display: flex;
  flex-direction: column;
  gap: 4px;
  flex: 1;
  min-height: 0;
}

.ws-diary-entry-card {
  background: #F0FDF4;
  border: 1px solid #BBF7D0;
  border-radius: 7px;
  padding: 5px 8px;
  font-size: 0.73rem;
  color: #14532D;
  line-height: 1.5;
  cursor: pointer;
  transition: transform 0.15s ease, box-shadow 0.15s ease, border-color 0.15s ease;
}

.ws-diary-entry-card:hover,
.ws-diary-entry-card:focus-visible {
  transform: translateY(-1px);
  border-color: #22C55E;
  box-shadow: 0 8px 18px rgba(22, 163, 74, 0.12);
  outline: none;
}

.ws-diary-entry-card .ws-diary-entry-title {
  font-weight: 700;
  margin-bottom: 2px;
}

.ws-diary-entry-card .ws-diary-entry-preview {
  color: #166534;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.ws-diary-entry-card .ws-diary-entry-date {
  font-size: 0.62rem;
  color: #16A34A;
  margin-top: 2px;
}

/* Workstation note modal */
.ws-note-modal {
  position: fixed;
  inset: 0;
  z-index: 10010;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px;
}

.ws-note-modal-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(15, 23, 42, 0.42);
  backdrop-filter: blur(1px);
}

.ws-note-modal-window {
  position: relative;
  z-index: 1;
  width: min(760px, calc(100vw - 32px));
  max-height: min(88vh, 900px);
  display: flex;
  flex-direction: column;
  gap: 14px;
  padding: 22px 24px 20px;
  border-radius: 18px;
  background: #FFFFFF;
  border: 1px solid #E5EAF2;
  box-shadow: 0 18px 48px rgba(15, 23, 42, 0.18);
  overflow: hidden;
}

.ws-note-modal-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
}

.ws-note-modal-kicker {
  font-size: 0.74rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: #7E9BCF;
  margin-bottom: 4px;
}

.ws-note-modal-title {
  margin: 0;
  font-size: 1.25rem;
  line-height: 1.3;
  color: #1E293B;
}

.ws-note-modal-close {
  border: 1px solid #E5EAF2;
  background: #fff;
  color: #64748B;
  border-radius: 10px;
  min-width: 38px;
  height: 38px;
  cursor: pointer;
  font-size: 1rem;
  transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}

.ws-note-modal-close:hover {
  background: #F8FAFC;
  color: #334155;
  border-color: #CBD5E1;
}

.ws-note-modal-topline {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}

.ws-note-modal-badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  border-radius: 999px;
  padding: 5px 10px;
  font-size: 0.74rem;
  font-weight: 700;
  background: #FEF3C7;
  color: #92400E;
}

.ws-note-modal-badge.is-diary {
  background: #DCFCE7;
  color: #166534;
}

.ws-note-modal-meta {
  font-size: 0.75rem;
  color: #64748B;
}

.ws-note-modal-source,
.ws-note-modal-status {
  border-radius: 12px;
  padding: 10px 12px;
  font-size: 0.78rem;
  line-height: 1.55;
}

.ws-note-modal-source {
  background: #EFF6FF;
  border: 1px solid #BFDBFE;
  color: #1D4ED8;
}

.ws-note-modal-status {
  background: #F8FAFC;
  border: 1px solid #E5EAF2;
  color: #475569;
}

.ws-note-modal-read,
.ws-note-modal-form {
  min-height: 0;
  flex: 1 1 auto;
}

.ws-note-modal-read {
  overflow: auto;
  padding: 16px 18px;
  border-radius: 14px;
  border: 1px solid #E5EAF2;
  background: #FCFDFE;
  color: #273142;
  font-size: 0.93rem;
  line-height: 1.72;
  white-space: pre-wrap;
}

.ws-note-modal-read.is-loading {
  color: #64748B;
  text-align: center;
  padding-block: 36px;
}

.ws-note-modal-form {
  display: flex;
  flex-direction: column;
  gap: 12px;
  overflow: auto;
  padding-right: 4px;
}

.ws-note-modal-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}

.ws-note-modal-field {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.ws-note-modal-field span {
  font-size: 0.74rem;
  font-weight: 700;
  color: #475569;
}

.ws-note-modal-field .ws-panel-textarea {
  min-height: 240px;
}

.ws-note-modal-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
}

.ws-note-modal-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
  margin-left: auto;
}

.ws-note-modal-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  border-radius: 10px;
  padding: 9px 14px;
  font-size: 0.8rem;
  font-weight: 700;
  text-decoration: none;
  cursor: pointer;
  transition: opacity 0.15s ease, transform 0.15s ease, box-shadow 0.15s ease;
}

.ws-note-modal-btn:hover {
  transform: translateY(-1px);
}

.ws-note-modal-btn:disabled {
  cursor: not-allowed;
  opacity: 0.65;
  transform: none;
}

.ws-note-modal-btn-secondary {
  border: 1px solid #D7E0EC;
  background: #fff;
  color: #475569;
}

.ws-note-modal-btn-danger {
  border: 1px solid rgba(239, 68, 68, 0.18);
  background: rgba(254, 226, 226, 0.72);
  color: #B91C1C;
}

.ws-note-modal-btn-primary {
  border: none;
  background: linear-gradient(135deg, #4A7DFF 0%, #6C5CE7 100%);
  color: #fff;
  box-shadow: 0 10px 24px rgba(74, 125, 255, 0.2);
}

@media (max-width: 640px) {
  .ws-note-modal {
    padding: 12px;
  }

  .ws-note-modal-window {
    width: 100%;
    max-height: 92vh;
    padding: 18px 16px 16px;
  }

  .ws-note-modal-grid {
    grid-template-columns: 1fr;
  }

  .ws-note-modal-footer,
  .ws-note-modal-actions {
    flex-direction: column;
    align-items: stretch;
  }

  .ws-note-modal-actions {
    width: 100%;
    margin-left: 0;
  }

  .ws-note-modal-btn {
    width: 100%;
  }
}

/* ── Fix: .hidden specificity overrides for note modal ──
   The modal sub-elements define display:flex / display:inline-flex which
   has the same (or later-wins) specificity as the generic .hidden class.
   These overrides guarantee that classList.toggle('hidden') always works. */
.ws-note-modal.hidden {
  display: none !important;
}

.ws-note-modal-form.hidden {
  display: none !important;
}

.ws-note-modal-read.hidden {
  display: none !important;
}

.ws-note-modal-btn.hidden {
  display: none !important;
}

.ws-note-modal-source.hidden {
  display: none !important;
}

.ws-note-modal-status.hidden {
  display: none !important;
}

.ws-note-modal-footer.hidden {
  display: none !important;
}

.ws-note-modal-field.hidden {
  display: none !important;
}

.ws-note-modal-actions.hidden {
  display: none !important;
}

.ws-note-modal-topline.hidden {
  display: none !important;
}

.ws-note-modal-header.hidden {
  display: none !important;
}

.ws-note-modal-grid.hidden {
  display: none !important;
}

/* Collapse: hide tab content but keep tabs */
.ws-chat-panel.collapsed .ws-tab-content,
.ws-chat-panel.collapsed .ws-panel-section-title,
.ws-chat-panel.collapsed .ws-panel-tabs span {
  display: none;
}

.ws-chat-panel.collapsed .ws-panel-tab {
  display: none;
}

.ws-chat-panel.collapsed .ws-panel-tabs {
  justify-content: center;
  padding-inline: 4px;
}

.ws-split:has(.ws-chat-panel.collapsed) .ws-viewer {
  flex: 1 1 auto !important;
  max-width: calc(100% - 36px - 0.6rem) !important;
  min-width: 0 !important;
}

.ws-actions {
  display: flex;
  align-items: center;
  gap: 0.35rem;
  flex-shrink: 0;
}

.ws-action-btn {
  border: none;
  border-radius: 6px;
  padding: 0.3rem 0.7rem;
  font-size: 0.76rem;
  font-weight: 600;
  background: linear-gradient(135deg, #4A7DFF 0%, #6C5CE7 100%);
  color: #fff;
  cursor: pointer;
  transition: all 0.15s;
  white-space: nowrap;
}

.ws-action-btn:hover {
  transform: translateY(-1px);
  box-shadow: 0 2px 8px rgba(74, 125, 255, 0.3);
}

.ws-action-back {
  background: #FFFFFF;
  color: #6B7788;
  border: 1px solid #E5EAF2;
}

.ws-action-back:hover {
  background: #F0F4FA;
  box-shadow: none;
}

/* ── Split View ── */
.ws-split {
  flex: 1;
  display: flex;
  gap: 0.6rem;
  margin-top: 0.5rem;
  overflow: hidden;
}

.ws-viewer {
  border: 1px solid #E5EAF2;
  border-radius: 10px;
  overflow: hidden;
  background: #FFFFFF;
  box-shadow: 0 1px 4px rgba(39, 49, 66, 0.04);
  display: flex;
  flex-direction: column;
  flex: 0 0 calc(72% - 0.6rem);
  min-width: 0;
}


/* ── View Mode Toggle Strip (legacy — kept for any possible external refs) ── */
.ws-view-toggle {
  display: none;
}

.ws-view-btn {
  border: 1px solid #E5EAF2;
  border-radius: 7px;
  padding: 0.28rem 0.75rem;
  font-size: 0.75rem;
  font-weight: 600;
  background: #FFFFFF;
  color: #6B7788;
  cursor: pointer;
  transition: all 0.15s;
  white-space: nowrap;
}

.ws-view-btn:hover {
  background: #EEF2FF;
  color: #4A7DFF;
  border-color: #C7D4FF;
}

.ws-view-btn.active {
  background: linear-gradient(135deg, #4A7DFF 0%, #6C5CE7 100%);
  color: #fff;
  border-color: transparent;
  box-shadow: 0 2px 6px rgba(74, 125, 255, 0.25);
}

.ws-viewer iframe {
  flex: 1;
  width: 100%;
  border: none;
  min-height: 0;
}

/* Plain text / structure view inside viewer */
.ws-plaintext-view {
  flex: 1;
  overflow-y: auto;
  padding: 1.5rem 1.75rem;
  font-family: 'Georgia', 'Times New Roman', serif;
  font-size: var(--ws-viewer-font-size, 0.92rem);
  line-height: 1.8;
  color: #273142;
  white-space: pre-wrap;
  word-break: break-word;
  background: #FFFEF8;
  min-height: 0;
}

.ws-plaintext-view.loading {
  display: flex;
  align-items: center;
  justify-content: center;
  color: #A0AABB;
  font-family: inherit;
  font-style: italic;
}

/* Section markers from AI structure tagger */
.ws-plaintext-view .ws-section-marker {
  display: inline-block;
  background: linear-gradient(135deg, #4A7DFF, #6C5CE7);
  color: #fff;
  font-family: 'Inter', sans-serif;
  font-size: 0.68rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  padding: 2px 10px;
  border-radius: 20px;
  margin: 1.5em 0 0.5em;
  text-transform: uppercase;
}

/* ── Document tables rendered from Markdown pipes in extracted text ── */
.ws-doc-table {
  width: 100%;
  border-collapse: collapse;
  margin: 16px 0;
  font-size: 0.88rem;
  line-height: 1.5;
  font-family: 'Inter', system-ui, sans-serif;
}

.ws-doc-table th,
.ws-doc-table td {
  border: 1px solid #d1d5db;
  padding: 6px 10px;
  text-align: left;
  vertical-align: top;
}

.ws-doc-table th {
  background: #f1f5f9;
  font-weight: 600;
  color: #1e293b;
}

.ws-doc-table tr:nth-child(even) td {
  background: #f8fafc;
}

.ws-doc-table tr:hover td {
  background: #e2e8f0;
}

/* ── Report rendered in-DOM (shares .ws-plaintext-view for annotation compat) ── */
.ws-plaintext-view.ws-report-rendered {
  white-space: normal;
  font-family: 'Inter', sans-serif;
  line-height: 1.7;
  max-width: 850px;
  margin: 0 auto;
  padding: 2.5rem 2rem;
  background: #fff;
}

.ws-plaintext-view.ws-report-rendered h1 {
  color: #4338CA;
  margin-bottom: 1.5rem;
  font-size: 1.52em;
  font-weight: 800;
}

.ws-plaintext-view.ws-report-rendered h2 {
  color: #0F172A;
  margin-top: 2rem;
  margin-bottom: 1rem;
  border-bottom: 1px solid #E2E8F0;
  padding-bottom: 0.5rem;
  font-size: 1.25em;
}

.ws-plaintext-view.ws-report-rendered h3 {
  color: #1E293B;
  margin-top: 1.5rem;
  margin-bottom: 0.5rem;
  font-size: 1.14em;
}

.ws-plaintext-view.ws-report-rendered p {
  margin-bottom: 1rem;
  color: #334155;
}

.ws-plaintext-view.ws-report-rendered strong {
  color: #1e293b;
}

.ws-plaintext-view.ws-report-rendered em {
  color: #475569;
}

.ws-plaintext-view.ws-report-rendered blockquote {
  border-left: 4px solid #818CF8;
  background: #EEF2FF;
  padding: 0.5rem 1rem;
  color: #3730A3;
  margin: 1rem 0;
  border-radius: 4px;
}

.ws-plaintext-view.ws-report-rendered li {
  margin-bottom: 0.3rem;
  color: #334155;
}

.ws-plaintext-view.ws-report-rendered ul {
  padding-left: 1.5rem;
  margin-bottom: 1rem;
}

.ws-plaintext-view.ws-report-rendered a {
  color: #4F46E5;
  text-decoration: none;
}

.ws-plaintext-view.ws-report-rendered a:hover {
  text-decoration: underline;
}

/* ── Code Sidebar Panel ───────────────────────────────────────────────────── */
.ws-code-sidebar {
  width: 240px;
  min-width: 200px;
  flex-shrink: 0;
  display: flex;
  flex-direction: column;
  border: 1px solid #E5EAF2;
  border-radius: 10px;
  background: linear-gradient(180deg, #FAFBFE 0%, #F3F0FF 100%);
  overflow: hidden;
  box-shadow: 0 1px 6px rgba(99, 102, 241, 0.08);
  transition: width 0.3s ease, opacity 0.3s ease, margin 0.3s ease;
}

.ws-code-sidebar.hidden {
  width: 0;
  min-width: 0;
  opacity: 0;
  overflow: hidden;
  border: none;
  margin: 0;
  padding: 0;
}

.ws-code-sidebar-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 10px 12px;
  border-bottom: 1px solid #E5EAF2;
  background: linear-gradient(135deg, #EEF2FF, #F5F3FF);
  font-size: 0.82rem;
  font-weight: 700;
  color: #3730A3;
  flex-shrink: 0;
}

.ws-code-sidebar-header button {
  background: none;
  border: none;
  cursor: pointer;
  font-size: 1rem;
  color: #94A3B8;
  padding: 2px 6px;
  border-radius: 4px;
  transition: all 0.2s;
}

.ws-code-sidebar-header button:hover {
  background: #E2E8F0;
  color: #334155;
}

.ws-code-sidebar-filters {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  padding: 8px 10px;
  border-bottom: 1px solid #EEF2FF;
  flex-shrink: 0;
}

.ws-csb-filter {
  font-size: 0.65rem;
  padding: 3px 8px;
  border-radius: 12px;
  border: 1px solid #E5EAF2;
  background: #fff;
  color: #6B7788;
  cursor: pointer;
  transition: all 0.2s;
  font-weight: 600;
}

.ws-csb-filter:hover {
  background: #EEF2FF;
  border-color: #818CF8;
  color: #4338CA;
}

.ws-csb-filter.active {
  background: #4338CA;
  color: #fff;
  border-color: #4338CA;
}

.ws-code-sidebar-stats {
  padding: 6px 12px;
  font-size: 0.7rem;
  color: #6B7788;
  border-bottom: 1px solid #EEF2FF;
  flex-shrink: 0;
  background: rgba(255, 255, 255, 0.6);
}

.ws-code-sidebar-list {
  flex: 1;
  overflow-y: auto;
  padding: 8px;
}

/* Code card items */
.ws-csb-card {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  padding: 8px 10px;
  margin-bottom: 6px;
  border-radius: 8px;
  background: #fff;
  border: 1px solid #E5EAF2;
  cursor: pointer;
  transition: all 0.2s;
  position: relative;
}

.ws-csb-card:hover {
  border-color: #818CF8;
  box-shadow: 0 2px 8px rgba(99, 102, 241, 0.12);
  transform: translateX(2px);
}

.ws-csb-card--active {
  border-color: #4338CA;
  box-shadow: 0 2px 12px rgba(67, 56, 202, 0.2);
  background: #EEF2FF;
}

.ws-csb-card-stripe {
  width: 4px;
  min-height: 28px;
  border-radius: 2px;
  flex-shrink: 0;
  align-self: stretch;
}

.ws-csb-card-stripe--invivo {
  background: #F59E0B;
}

.ws-csb-card-stripe--proceso {
  background: #3B82F6;
}

.ws-csb-card-stripe--valores {
  background: #8B5CF6;
}

.ws-csb-card-stripe--manual {
  background: #EC4899;
}

.ws-csb-card-body {
  flex: 1;
  min-width: 0;
}

.ws-csb-card-label {
  font-size: 0.75rem;
  font-weight: 600;
  color: #1E293B;
  line-height: 1.3;
  word-break: break-word;
}

.ws-csb-card-concept {
  font-size: 0.68rem;
  color: #64748B;
  margin-top: 2px;
  line-height: 1.25;
}

.ws-csb-card-evidence {
  font-size: 0.62rem;
  color: #059669;
  margin-top: 3px;
  font-style: italic;
  line-height: 1.3;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 100%;
  opacity: 0.85;
}

.ws-csb-card:hover .ws-csb-card-evidence {
  opacity: 1;
  color: #047857;
}

.ws-csb-card-type {
  font-size: 0.6rem;
  font-weight: 700;
  color: #94A3B8;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  margin-top: 3px;
}

.ws-csb-card-freq {
  flex-shrink: 0;
  font-size: 0.72rem;
  font-weight: 800;
  color: #4338CA;
  background: #EEF2FF;
  border-radius: 10px;
  padding: 2px 8px;
  min-width: 24px;
  text-align: center;
  align-self: center;
}
.ws-csb-card-location {
  font-size: 0.68rem;
  color: #4F46E5;
  margin-top: 4px;
  font-weight: 600;
  display: inline-flex;
  align-items: center;
  gap: 3px;
  background: rgba(99, 102, 241, 0.06);
  padding: 2px 6px;
  border-radius: 4px;
  width: fit-content;
}

/* When sidebar is open in editing mode, hide chat panel and expand sidebar to occupy the full right section */
.ws-split:has(.ws-code-sidebar.ws-code-sidebar--editing) .ws-chat-panel {
  display: none !important;
}

.ws-split:has(.ws-code-sidebar.ws-code-sidebar--editing) .ws-code-sidebar {
  width: calc(240px + 22% + 0.6rem) !important;
  max-width: 60% !important;
  min-width: 420px !important;
}

.ws-split:has(.ws-code-sidebar.ws-code-sidebar--editing) .ws-viewer {
  flex: 1 1 auto !important;
  max-width: calc(100% - (240px + 22% + 0.6rem) - 0.6rem) !important;
  min-width: 0 !important;
}

/* When sidebar is open, reduce viewer and chat width to fit */
.ws-split:has(.ws-code-sidebar:not(.hidden)) .ws-viewer {
  flex: 1 1 auto !important;
  max-width: calc(100% - 240px - 22% - 1.2rem) !important;
  min-width: 0 !important;
}

.ws-split:has(.ws-code-sidebar:not(.hidden)) .ws-chat-panel {
  flex: 0 0 22% !important;
  max-width: 22% !important;
  min-width: 180px !important;
  overflow: hidden !important;
}

.ws-split:has(.ws-code-sidebar:not(.hidden)):has(.ws-chat-panel.collapsed) .ws-chat-panel {
  flex: 0 0 36px !important;
  max-width: 36px !important;
  min-width: 36px !important;
}

.ws-split:has(.ws-code-sidebar:not(.hidden)):has(.ws-chat-panel.collapsed) .ws-viewer {
  flex: 1 1 auto !important;
  max-width: calc(100% - 240px - 36px - 1.2rem) !important;
  min-width: 0 !important;
}


/* ── Code card editing mode ──────────────────────────────────────────────── */

/* Edit button (appears on hover, like delete) */
.ws-csb-edit-btn {
  position: absolute;
  top: 4px;
  right: 22px;
  background: none;
  border: none;
  cursor: pointer;
  font-size: 0.72rem;
  opacity: 0;
  transition: opacity 0.2s;
  padding: 2px 4px;
  border-radius: 3px;
  color: #4A7DFF;
}
.ws-csb-card:hover .ws-csb-edit-btn {
  opacity: 0.7;
}
.ws-csb-edit-btn:hover {
  opacity: 1 !important;
  background: rgba(74, 125, 255, 0.08);
}

/* Card in editing mode */
.ws-csb-card--editing {
  border-color: #4A7DFF !important;
  box-shadow: 0 0 0 2px rgba(74, 125, 255, 0.15) !important;
  cursor: default !important;
  transform: none !important;
  padding: 10px 12px !important;
}
.ws-csb-card--editing:hover {
  transform: none !important;
}

/* Inline edit inputs */
.ws-csb-edit-input,
.ws-csb-edit-textarea {
  width: 100%;
  box-sizing: border-box;
  border: 1px solid #E5EAF2;
  border-radius: 5px;
  padding: 4px 7px;
  font-size: 0.73rem;
  font-family: inherit;
  color: #1E293B;
  background: #F8FAFC;
  transition: border-color 0.15s;
  margin-top: 3px;
}
.ws-csb-edit-input:focus,
.ws-csb-edit-textarea:focus {
  outline: none;
  border-color: #4A7DFF;
  box-shadow: 0 0 0 2px rgba(74, 125, 255, 0.1);
  background: #fff;
}
.ws-csb-edit-textarea {
  resize: vertical;
  min-height: 36px;
  line-height: 1.35;
}

/* Type selector */
.ws-csb-edit-select {
  border: 1px solid #E5EAF2;
  border-radius: 5px;
  padding: 3px 6px;
  font-size: 0.68rem;
  font-family: inherit;
  color: #334155;
  background: #F8FAFC;
  cursor: pointer;
  margin-top: 3px;
}
.ws-csb-edit-select:focus {
  outline: none;
  border-color: #4A7DFF;
}

/* Flex rows for inputs + capture buttons */
.ws-csb-edit-row {
  display: flex;
  gap: 6px;
  align-items: center;
  margin-top: 3px;
}
.ws-csb-edit-row .ws-csb-edit-input,
.ws-csb-edit-row .ws-csb-edit-textarea {
  margin-top: 0;
  flex: 1;
}
.ws-csb-capture-btn {
  background: #EEF2FF;
  border: 1px solid #C7D2FE;
  color: #4338CA;
  border-radius: 5px;
  padding: 4px 8px;
  font-size: 0.68rem;
  font-weight: 600;
  cursor: pointer;
  white-space: nowrap;
  transition: all 0.15s;
  height: 26px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.ws-csb-capture-btn:hover {
  background: #E0E7FF;
  border-color: #818CF8;
}

/* Field labels in edit mode */
.ws-csb-edit-field-label {
  font-size: 0.6rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  color: #94A3B8;
  margin-top: 6px;
  display: block;
}
.ws-csb-edit-field-label:first-child {
  margin-top: 0;
}

/* Action buttons */
.ws-csb-edit-actions {
  display: flex;
  gap: 6px;
  margin-top: 8px;
  justify-content: flex-end;
}
.ws-csb-edit-save,
.ws-csb-edit-cancel {
  border: none;
  border-radius: 5px;
  padding: 4px 12px;
  font-size: 0.68rem;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.15s;
}
.ws-csb-edit-save {
  background: #4A7DFF;
  color: #fff;
}
.ws-csb-edit-save:hover {
  background: #3D6FEE;
}
.ws-csb-edit-cancel {
  background: #F1F5F9;
  color: #64748B;
}
.ws-csb-edit-cancel:hover {
  background: #E2E8F0;
}

/* Hide other buttons while editing */
.ws-csb-card--editing .ws-csb-del-btn,
.ws-csb-card--editing .ws-csb-edit-btn,
.ws-csb-card--editing .ws-csb-card-freq {
  display: none !important;
}

/* ── Dark mode for edit mode ─────────────────────────────────────── */
[data-theme="dark"] .ws-csb-card {
  background: #1a1a24 !important;
  border-color: #2a2a3a !important;
}
[data-theme="dark"] .ws-csb-card:hover {
  border-color: #74b9ff !important;
  box-shadow: 0 2px 8px rgba(116, 185, 255, 0.12) !important;
}
[data-theme="dark"] .ws-csb-card--active {
  background: rgba(116, 185, 255, 0.08) !important;
  border-color: #74b9ff !important;
}
[data-theme="dark"] .ws-csb-card-label {
  color: #e8e8f0 !important;
}
[data-theme="dark"] .ws-csb-card-concept {
  color: #8888a0 !important;
}
[data-theme="dark"] .ws-csb-card-evidence {
  color: #55efc4 !important;
}
[data-theme="dark"] .ws-csb-card:hover .ws-csb-card-evidence {
  color: #7dfce0 !important;
}
[data-theme="dark"] .ws-csb-card-type {
  color: #55556a !important;
}
[data-theme="dark"] .ws-csb-card-freq {
  background: rgba(116, 185, 255, 0.1) !important;
  color: #74b9ff !important;
}
[data-theme="dark"] .ws-csb-card-location {
  background: rgba(116, 185, 255, 0.08) !important;
  color: #74b9ff !important;
}
[data-theme="dark"] .ws-csb-edit-btn {
  color: #74b9ff !important;
}
[data-theme="dark"] .ws-csb-edit-btn:hover {
  background: rgba(116, 185, 255, 0.1) !important;
}
[data-theme="dark"] .ws-csb-card--editing {
  border-color: #74b9ff !important;
  box-shadow: 0 0 0 2px rgba(116, 185, 255, 0.2) !important;
}
[data-theme="dark"] .ws-csb-edit-input,
[data-theme="dark"] .ws-csb-edit-textarea {
  background: #111118 !important;
  border-color: #2a2a3a !important;
  color: #e8e8f0 !important;
}
[data-theme="dark"] .ws-csb-edit-input:focus,
[data-theme="dark"] .ws-csb-edit-textarea:focus {
  border-color: #74b9ff !important;
  background: #0a0a10 !important;
}
[data-theme="dark"] .ws-csb-capture-btn {
  background: rgba(116, 185, 255, 0.1) !important;
  border-color: rgba(116, 185, 255, 0.2) !important;
  color: #74b9ff !important;
}
[data-theme="dark"] .ws-csb-capture-btn:hover {
  background: rgba(116, 185, 255, 0.15) !important;
}
[data-theme="dark"] .ws-csb-edit-select {
  background: #111118 !important;
  border-color: #2a2a3a !important;
  color: #e8e8f0 !important;
}
[data-theme="dark"] .ws-csb-edit-field-label {
  color: #55556a !important;
}
[data-theme="dark"] .ws-csb-edit-save {
  background: #74b9ff !important;
  color: #0a0a10 !important;
}
[data-theme="dark"] .ws-csb-edit-cancel {
  background: #22222e !important;
  color: #8888a0 !important;
}
[data-theme="dark"] .ws-csb-edit-cancel:hover {
  background: #2a2a3a !important;
}

/* ── Annotation: Floating Toolbar ─────────────────────────────────────────── */
#ws-annotation-toolbar {
  position: fixed;
  z-index: 9999;
  display: none;
  align-items: center;
  gap: 4px;
  background: #1E293B;
  border-radius: 9px;
  padding: 5px 8px;
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
  transform: translateX(-50%);
  animation: ws-toolbar-pop 0.12s ease-out;
  white-space: nowrap;
}

#ws-annotation-toolbar.visible {
  display: flex;
}

@keyframes ws-toolbar-pop {
  from {
    opacity: 0;
    transform: translateX(-50%) translateY(4px) scale(0.96);
  }

  to {
    opacity: 1;
    transform: translateX(-50%) translateY(0) scale(1);
  }
}

/* Little caret below the toolbar */
#ws-annotation-toolbar::after {
  content: '';
  position: absolute;
  top: 100%;
  left: 50%;
  transform: translateX(-50%);
  border: 5px solid transparent;
  border-top-color: #1E293B;
}

.ws-ann-color-btn {
  width: 20px;
  height: 20px;
  border-radius: 50%;
  border: 2px solid rgba(255, 255, 255, 0.25);
  cursor: pointer;
  transition: transform 0.12s, border-color 0.12s;
  flex-shrink: 0;
}

.ws-ann-color-btn:hover {
  transform: scale(1.25);
  border-color: rgba(255, 255, 255, 0.8);
}

.ws-ann-separator {
  width: 1px;
  height: 16px;
  background: rgba(255, 255, 255, 0.15);
  flex-shrink: 0;
}

.ws-ann-code-input {
  background: rgba(255, 255, 255, 0.1);
  border: 1px solid rgba(255, 255, 255, 0.2);
  border-radius: 5px;
  color: #F8FAFC;
  font-size: 0.72rem;
  padding: 2px 6px;
  width: 110px;
  outline: none;
}

.ws-ann-code-input::placeholder {
  color: rgba(255, 255, 255, 0.4);
}

.ws-ann-code-input:focus {
  border-color: rgba(255, 255, 255, 0.5);
}

.ws-ann-save-btn {
  background: linear-gradient(135deg, #4A7DFF, #6C5CE7);
  border: none;
  border-radius: 5px;
  color: #fff;
  font-size: 0.7rem;
  font-weight: 700;
  padding: 3px 8px;
  cursor: pointer;
  transition: opacity 0.15s;
}

.ws-ann-save-btn:hover {
  opacity: 0.85;
}

.ws-ann-cancel-btn {
  background: none;
  border: none;
  color: rgba(255, 255, 255, 0.45);
  font-size: 0.75rem;
  cursor: pointer;
  padding: 2px 4px;
  transition: color 0.12s;
}

.ws-ann-cancel-btn:hover {
  color: #F87171;
}

/* ── Annotation: Inline highlights ─────────────────────────────────────────── */
.ws-annotation-mark {
  border-radius: 2px;
  padding: 0 1px;
  cursor: pointer;
  position: relative;
  transition: filter 0.15s;
}

.ws-annotation-mark:hover {
  filter: brightness(0.88);
}

/* Tooltip on hover */
.ws-annotation-mark::after {
  content: attr(data-code);
  position: absolute;
  bottom: calc(100% + 4px);
  left: 50%;
  transform: translateX(-50%);
  background: #1E293B;
  color: #F8FAFC;
  font-size: 0.62rem;
  font-weight: 700;
  white-space: nowrap;
  padding: 2px 7px;
  border-radius: 5px;
  pointer-events: none;
  opacity: 0;
  transition: opacity 0.15s;
  z-index: 100;
}

.ws-annotation-mark:hover::after {
  opacity: 1;
}

/* ── Annotation Panel (inside Memos tab, below memo list) ─────────────────── */
.ws-annotations-section {
  border-top: 1px solid #FDE68A;
  padding: 4px 8px 8px;
  flex-shrink: 0;
}

.ws-ann-panel-title {
  font-size: 0.65rem;
  font-weight: 700;
  color: #B45309;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  padding: 5px 0 3px;
}

.ws-ann-list {
  display: flex;
  flex-direction: column;
  gap: 3px;
  max-height: 120px;
  overflow-y: auto;
}

.ws-ann-chip {
  display: flex;
  align-items: center;
  gap: 5px;
  background: #FFFBEB;
  border: 1px solid #FDE68A;
  border-radius: 5px;
  padding: 3px 6px;
  font-size: 0.7rem;
  color: #78350F;
  cursor: pointer;
  transition: transform 0.15s ease, box-shadow 0.15s ease, border-color 0.15s ease;
}

.ws-ann-chip:hover,
.ws-ann-chip:focus-visible {
  transform: translateY(-1px);
  border-color: #F59E0B;
  box-shadow: 0 8px 16px rgba(217, 119, 6, 0.12);
  outline: none;
}

.ws-ann-chip-dot {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  flex-shrink: 0;
}

.ws-ann-chip-code {
  font-weight: 700;
  flex: 1;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.ws-ann-chip-preview {
  color: #A16207;
  font-style: italic;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 90px;
}

.ws-ann-chip-del {
  background: none;
  border: none;
  color: #D97706;
  cursor: pointer;
  font-size: 0.6rem;
  opacity: 0.5;
  transition: opacity 0.12s;
  padding: 0 2px;
}

.ws-ann-chip-del:hover {
  opacity: 1;
  color: #B91C1C;
}

/* Locate button on annotation chips */
.ws-ann-locate-btn {
  border: none;
  background: none;
  font-size: 0.62rem;
  cursor: pointer;
  padding: 0 2px;
  opacity: 0.5;
  transition: opacity 0.15s, transform 0.15s;
  position: absolute;
  right: 20px;
  top: 3px;
}

.ws-ann-locate-btn:hover {
  opacity: 1;
  transform: scale(1.2);
}

.ws-annotation-mark--pulse {
  animation: annPulse 0.6s ease 3;
}

@keyframes annPulse {

  0%,
  100% {
    box-shadow: none;
  }

  50% {
    box-shadow: 0 0 0 5px rgba(245, 158, 11, 0.3);
  }
}

/* Flash animation when navigating from chip → annotation mark */
.ws-ann-mark-flash {
  animation: annMarkFlash 1.5s ease-out;
}

@keyframes annMarkFlash {
  0% {
    box-shadow: 0 0 0 4px rgba(245, 158, 11, 0.5);
  }

  100% {
    box-shadow: none;
  }
}

/* ── Context Menu (text selection popup) ──────────────────────────────── */
/* Hide the old floating toolbar — replaced by context menu */
#ws-annotation-toolbar {
  display: none !important;
}

#ws-ctx-menu {
  position: fixed;
  z-index: 10000;
  display: none;
  flex-direction: column;
  gap: 0;
  background: #1E293B;
  border-radius: 12px;
  padding: 6px;
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.35), 0 2px 8px rgba(0, 0, 0, 0.2);
  transform: translateX(-50%);
  min-width: 230px;
  animation: ws-ctx-pop 0.14s cubic-bezier(0.34, 1.56, 0.64, 1);
}

#ws-ctx-menu.visible {
  display: flex;
}

@keyframes ws-ctx-pop {
  from {
    opacity: 0;
    transform: translateX(-50%) translateY(6px) scale(0.94);
  }

  to {
    opacity: 1;
    transform: translateX(-50%) translateY(0) scale(1);
  }
}

/* Caret pointer */
#ws-ctx-menu::after {
  content: '';
  position: absolute;
  top: 100%;
  left: 50%;
  transform: translateX(-50%);
  border: 6px solid transparent;
  border-top-color: #1E293B;
}

.ws-ctx-step {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.ws-ctx-step.hidden {
  display: none;
}

/* Action row (step 1) */
.ws-ctx-step:first-child {
  flex-direction: row;
  align-items: center;
  gap: 4px;
}

.ws-ctx-action {
  flex: 1;
  background: rgba(255, 255, 255, 0.07);
  color: #E2E8F0;
  border: none;
  border-radius: 7px;
  padding: 6px 8px;
  font-size: 0.76rem;
  font-weight: 600;
  cursor: pointer;
  transition: background 0.15s;
}

.ws-ctx-action:hover {
  background: rgba(255, 255, 255, 0.16);
}

.ws-ctx-close {
  background: transparent;
  border: none;
  color: #94A3B8;
  font-size: 0.8rem;
  cursor: pointer;
  padding: 4px 6px;
  border-radius: 5px;
  transition: color 0.15s;
}

.ws-ctx-close:hover {
  color: #F87171;
}

/* Color swatches (step 2a) */
.ws-ctx-colors {
  display: flex;
  gap: 5px;
  flex-wrap: wrap;
  padding: 4px 2px;
}

.ws-ctx-color-swatch {
  width: 24px;
  height: 24px;
  border-radius: 50%;
  border: 2px solid transparent;
  cursor: pointer;
  transition: transform 0.12s, border-color 0.12s;
}

.ws-ctx-color-swatch:hover,
.ws-ctx-color-swatch.active {
  transform: scale(1.25);
  border-color: rgba(255, 255, 255, 0.8);
}

.ws-ctx-color-custom {
  width: 24px;
  height: 24px;
  border-radius: 50%;
  border: 2px solid #475569;
  cursor: pointer;
  padding: 0;
  background: none;
}

/* Label row & controls */
.ws-ctx-label-row,
.ws-ctx-row {
  display: flex;
  gap: 6px;
  align-items: center;
  margin-top: 4px;
}

.ws-ctx-input {
  flex: 1;
  background: rgba(255, 255, 255, 0.09);
  border: 1px solid rgba(255, 255, 255, 0.12);
  border-radius: 6px;
  color: #E2E8F0;
  padding: 5px 8px;
  font-size: 0.73rem;
}

.ws-ctx-input::placeholder {
  color: #64748B;
}

.ws-ctx-confirm-btn {
  background: #4A7DFF;
  color: #fff;
  border: none;
  border-radius: 7px;
  padding: 5px 10px;
  font-size: 0.73rem;
  font-weight: 600;
  cursor: pointer;
  white-space: nowrap;
  transition: background 0.15s;
}

.ws-ctx-confirm-btn:hover {
  background: #3B6FEF;
}

.ws-ctx-back {
  background: transparent;
  border: none;
  color: #64748B;
  font-size: 0.7rem;
  cursor: pointer;
  padding: 3px 4px;
  text-align: left;
  transition: color 0.15s;
}

.ws-ctx-back:hover {
  color: #94A3B8;
}

.ws-ctx-section-label {
  color: #94A3B8;
  font-size: 0.7rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  padding: 2px 0;
}

.ws-ctx-textarea {
  width: 100%;
  background: rgba(255, 255, 255, 0.07);
  border: 1px solid rgba(255, 255, 255, 0.1);
  border-radius: 7px;
  color: #E2E8F0;
  padding: 6px 8px;
  font-size: 0.74rem;
  resize: vertical;
  min-height: 90px;
  max-height: 400px;
  font-family: inherit;
  box-sizing: border-box;
}

/* Make the resize handle visible on dark popup background */
.ws-ctx-textarea::-webkit-resizer {
  background: linear-gradient(135deg, transparent 40%, rgba(255, 255, 255, 0.3) 40%, rgba(255, 255, 255, 0.3) 50%, transparent 50%, transparent 70%, rgba(255, 255, 255, 0.3) 70%, rgba(255, 255, 255, 0.3) 80%, transparent 80%);
  border-radius: 0 0 7px 0;
  cursor: nwse-resize;
}

.ws-ctx-code-list {
  max-height: 90px;
  overflow-y: auto;
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  padding: 4px 0;
}

.ws-ctx-code-pill {
  background: rgba(255, 255, 255, 0.1);
  border: none;
  border-radius: 20px;
  color: #E2E8F0;
  padding: 3px 9px;
  font-size: 0.7rem;
  cursor: pointer;
  transition: background 0.15s;
}

.ws-ctx-code-pill:hover,
.ws-ctx-code-pill.selected {
  background: #4A7DFF;
  color: #fff;
}

/* ── Codebook Tab Panel ───────────────────────────────────────────────── */
.ws-code-create-form {
  background: #F8FAFF;
  border-radius: 8px;
  padding: 10px;
  margin-bottom: 10px;
  border: 1px solid #E5EAF2;
}

.ws-code-create-row {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.ws-code-color-row {
  display: flex;
  gap: 5px;
  align-items: center;
  flex-wrap: wrap;
  padding: 4px 0;
}

.ws-code-color-swatch {
  width: 20px;
  height: 20px;
  border-radius: 50%;
  border: 2px solid transparent;
  cursor: pointer;
  transition: transform 0.12s, border-color 0.12s;
}

.ws-code-color-swatch:hover,
.ws-code-color-swatch.active {
  transform: scale(1.3);
  border-color: #4A7DFF;
}

.ws-code-color-custom {
  width: 22px;
  height: 22px;
  border-radius: 50%;
  border: 2px solid #CBD5E1;
  cursor: pointer;
  padding: 0;
  background: none;
}

.ws-codebook-list {
  display: flex;
  flex-direction: column;
  gap: 6px;
  max-height: 200px;
  overflow-y: auto;
}

.ws-code-card {
  display: flex;
  align-items: center;
  gap: 8px;
  background: #fff;
  border: 1px solid #E5EAF2;
  border-radius: 8px;
  padding: 7px 10px;
  cursor: pointer;
  transition: box-shadow 0.15s;
}

.ws-code-card:hover {
  box-shadow: 0 2px 8px rgba(74, 125, 255, 0.15);
  border-color: #4A7DFF44;
}

.ws-code-card.selected {
  border-color: #4A7DFF;
  background: #EEF3FF;
}

.ws-code-card-dot {
  width: 12px;
  height: 12px;
  border-radius: 50%;
  flex-shrink: 0;
}

.ws-code-card-name {
  flex: 1;
  font-size: 0.78rem;
  font-weight: 600;
  color: #1E293B;
}

.ws-code-card-count {
  font-size: 0.68rem;
  color: #64748B;
  background: #F1F5F9;
  border-radius: 20px;
  padding: 2px 7px;
}

.ws-code-card-del {
  background: none;
  border: none;
  color: #CBD5E1;
  font-size: 0.75rem;
  cursor: pointer;
  padding: 2px 4px;
  transition: color 0.15s;
}

.ws-code-card-del:hover {
  color: #EF4444;
}

/* ── Document Codes Tab (Phase 1) ─────────────────────────── */
.ws-doccodes-header {
  margin-bottom: 8px;
}

.ws-doccodes-doctitle {
  font-size: 0.7rem;
  color: #64748B;
  font-style: italic;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 100%;
  margin-top: 2px;
}

.ws-doccodes-list {
  display: flex;
  flex-direction: column;
  gap: 4px;
  max-height: 55vh;
  overflow-y: auto;
  padding-right: 2px;
}

.ws-doccodes-group {
  border-left: 3px solid #CBD5E1;
  border-radius: 0 8px 8px 0;
  background: #FAFBFC;
  margin-bottom: 6px;
  padding: 0;
  transition: border-color 0.2s;
}

.ws-doccodes-group:hover {
  border-color: #94A3B8;
}

.ws-doccodes-group-header {
  font-size: 0.68rem;
  font-weight: 700;
  color: #475569;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  padding: 6px 10px 3px;
  display: flex;
  align-items: center;
  gap: 6px;
}

.ws-doccodes-group-header .ws-doccodes-group-badge {
  font-size: 0.6rem;
  font-weight: 600;
  border-radius: 10px;
  padding: 1px 7px;
  color: #fff;
}

.ws-doccodes-item {
  display: flex;
  align-items: center;
  gap: 7px;
  padding: 5px 10px 5px 16px;
  cursor: pointer;
  border-radius: 4px;
  transition: background 0.12s;
}

.ws-doccodes-item:hover {
  background: #EEF2FF;
}

.ws-doccodes-item-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  flex-shrink: 0;
}

.ws-doccodes-item-dot--invivo {
  background: #F59E0B;
}

.ws-doccodes-item-dot--proceso {
  background: #3B82F6;
}

.ws-doccodes-item-dot--valores {
  background: #8B5CF6;
}

.ws-doccodes-item-dot--manual {
  background: #EC4899;
}

.ws-doccodes-item-label {
  flex: 1;
  font-size: 0.73rem;
  font-weight: 500;
  color: #1E293B;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.ws-doccodes-item-type {
  font-size: 0.58rem;
  color: #94A3B8;
  white-space: nowrap;
}

.ws-doccodes-item-freq {
  font-size: 0.62rem;
  color: #64748B;
  background: #F1F5F9;
  border-radius: 10px;
  padding: 1px 6px;
  font-weight: 600;
}

/* Collapsible create form */
.ws-doccodes-create-details {
  margin-top: 8px;
  border-top: 1px solid #E5EAF2;
  padding-top: 6px;
}

.ws-doccodes-create-summary {
  font-size: 0.72rem;
  font-weight: 600;
  color: #4A7DFF;
  cursor: pointer;
  padding: 4px 0;
  list-style: none;
  user-select: none;
}

.ws-doccodes-create-summary::-webkit-details-marker {
  display: none;
}

.ws-doccodes-create-summary::before {
  content: '▸ ';
  font-size: 0.7rem;
  transition: transform 0.15s;
}

details.ws-doccodes-create-details[open]>.ws-doccodes-create-summary::before {
  content: '▾ ';
}

/* Group border colors by type */
.ws-doccodes-group--invivo {
  border-left-color: #F59E0B;
}

.ws-doccodes-group--proceso {
  border-left-color: #3B82F6;
}

.ws-doccodes-group--valores {
  border-left-color: #8B5CF6;
}

.ws-doccodes-group--manual {
  border-left-color: #EC4899;
}

.ws-doccodes-group--mixed {
  border-left-color: #6B7280;
}

.ws-code-fragments-panel {
  margin-top: 10px;
  border-top: 1px solid #E5EAF2;
  padding-top: 8px;
}

.ws-code-fragments-panel.hidden {
  display: none;
}

.ws-code-fragments-list {
  display: flex;
  flex-direction: column;
  gap: 5px;
  max-height: 160px;
  overflow-y: auto;
}

.ws-code-fragment-card {
  background: #F8FAFF;
  border-radius: 7px;
  padding: 6px 10px;
  font-size: 0.73rem;
  color: #334155;
  border-left: 3px solid #4A7DFF;
  line-height: 1.5;
}


/* ── Chat Panel ── */
.ws-chat-panel {
  flex: 0 0 28%;
  min-width: 240px;
  max-width: 28%;
  display: flex;
  flex-direction: column;
  border: 1px solid #E5EAF2;
  border-radius: 10px;
  background: #FFFFFF;
  overflow: hidden;
  box-shadow: 0 1px 4px rgba(39, 49, 66, 0.04);
}

.ws-chat-header {
  padding: 0.55rem 1rem;
  border-bottom: 1px solid #E5EAF2;
  background: linear-gradient(135deg, #F6F8FB, #FFFFFF);
  font-size: 0.85rem;
  font-weight: 700;
  color: #273142;
  flex-shrink: 0;
}

.ws-chat-messages {
  flex: 1;
  overflow-y: auto;
  padding: 0.75rem;
  display: flex;
  flex-direction: column;
  gap: 0.6rem;
}

.ws-msg {
  display: flex;
  gap: 0.5rem;
  align-items: flex-start;
  animation: ws-fadeIn 0.25s ease-out;
}

.ws-msg-content {
  flex: 1;
  min-width: 0;
}

@keyframes ws-fadeIn {
  from {
    opacity: 0;
    transform: translateY(6px);
  }

  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.ws-msg-avatar {
  width: 28px;
  height: 28px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 800;
  font-size: 0.7rem;
  flex-shrink: 0;
}

.ws-msg-avatar.norio {
  background: linear-gradient(135deg, #55efc4, #00b894);
  color: #1a1b1e;
}

.ws-msg-avatar.user {
  background: linear-gradient(135deg, #748ffc, #4A7DFF);
  color: #fff;
}

.ws-msg-body {
  background: #F6F8FB;
  padding: 0.55rem 0.8rem;
  border-radius: 10px;
  border: 1px solid #E5EAF2;
  font-size: 0.85rem;
  line-height: 1.55;
  white-space: pre-wrap;
  word-break: break-word;
  color: #273142;
}

.ws-msg.user .ws-msg-body {
  background: rgba(74, 125, 255, 0.05);
  border-color: rgba(74, 125, 255, 0.12);
}

.ws-msg-body strong {
  color: #4A7DFF;
}

.ws-msg-audio {
  display: flex;
  gap: 0.35rem;
  margin-top: 0.35rem;
  padding-left: 0.1rem;
}

.ws-msg-audio-btn {
  width: 28px;
  height: 28px;
  min-width: 28px;
  min-height: 28px;
  border-radius: 50%;
  border: 1px solid #D8E0EC;
  background: #FFFFFF;
  color: #273142;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 0.72rem;
  line-height: 1;
  padding: 0;
  flex: 0 0 28px;
}

.ws-msg-audio-btn:hover,
.ws-msg-audio-btn.is-playing {
  border-color: #4A7DFF;
  color: #4A7DFF;
  background: #EEF4FF;
}

/* ── Chat Input ── */
.ws-chat-input-area {
  padding: 0.6rem 0.75rem;
  border-top: 1px solid #E5EAF2;
  background: #F6F8FB;
  flex-shrink: 0;
}

.ws-chat-form {
  display: flex;
  gap: 0.4rem;
  align-items: center;
}

.ws-chat-form input {
  flex: 1;
  border-radius: 10px;
  padding: 0.55rem 0.8rem;
  font-size: 0.85rem;
  border: 1px solid #E5EAF2;
  background: #FFFFFF;
  transition: border-color 0.2s, box-shadow 0.2s;
}

.ws-chat-form input:focus {
  outline: none;
  border-color: #4A7DFF;
  box-shadow: 0 0 0 3px rgba(74, 125, 255, 0.1);
}

.ws-send-btn {
  width: 40px;
  height: 40px;
  min-width: 40px;
  min-height: 40px;
  flex: 0 0 40px;
  border-radius: 50%;
  border: none;
  background: linear-gradient(135deg, #4A7DFF, #6C5CE7);
  color: #fff;
  font-size: 1.1rem;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all 0.15s;
  position: relative;
  line-height: 1;
  padding: 0;
  overflow: hidden;
  white-space: nowrap;
}

.ws-send-btn:hover {
  transform: scale(1.08);
  box-shadow: 0 3px 12px rgba(74, 125, 255, 0.35);
}

.ws-send-btn.is-loading {
  cursor: wait;
  color: transparent;
  transform: none;
  box-shadow: none;
}

.ws-send-btn.is-loading:hover {
  transform: none;
  box-shadow: none;
}

.ws-send-btn.is-loading::after {
  content: '';
  position: absolute;
  inset: 0;
  margin: auto;
  width: 14px;
  height: 14px;
  border: 2px solid rgba(255, 255, 255, 0.45);
  border-top-color: #fff;
  border-radius: 50%;
  animation: ws-spin 0.6s linear infinite;
}

/* ── Thinking spinner ── */
.ws-thinking {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  color: #6B7788;
  font-size: 0.82rem;
  padding: 0.4rem 0;
  animation: ws-fadeIn 0.25s ease-out;
}

.ws-thinking::after {
  content: '';
  width: 14px;
  height: 14px;
  border: 2px solid #E5EAF2;
  border-top-color: #4A7DFF;
  border-radius: 50%;
  animation: ws-spin 0.6s linear infinite;
}

@keyframes ws-spin {
  to {
    transform: rotate(360deg);
  }
}

/* ── Old workstation classes (keep for compat) ── */
.workstation-layout {
  display: none;
}

.workstation-sidebar {
  display: none;
}

.workstation-main {
  display: none;
}

.chat-attachments-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 1.5rem;
  gap: 1rem;
  flex-shrink: 0;
}

/* ---- Top bar ---- */
.app-topbar {
  min-height: 54px;
  height: auto;
  background: #FFFFFF;
  border-bottom: 1px solid #E5EAF2;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  padding: 0.7rem 1.5rem;
  gap: 1rem;
  flex-shrink: 0;
}

.app-topbar-left {
  display: grid;
  grid-template-columns: auto auto minmax(0, 1fr);
  align-items: start;
  column-gap: 0.55rem;
  row-gap: 0.2rem;
  min-width: 0;
}

.app-topbar-title {
  font-size: 0.88rem;
  font-weight: 700;
  color: #273142;
  letter-spacing: 0.015em;
  white-space: nowrap;
  padding-top: 0.06rem;
}

.app-topbar-sep {
  color: #C8D0DD;
  font-size: 0.85rem;
  padding-top: 0.08rem;
}

.app-topbar-sub {
  font-size: 0.82rem;
  color: #6B7788;
  line-height: 1.3;
  white-space: normal;
  overflow: visible;
  text-overflow: clip;
  min-width: 0;
  max-width: 100%;
  word-break: break-word;
}

.app-topbar-sub[data-context="document"] {
  color: #273142;
  font-weight: 600;
}

.app-topbar-right {
  display: flex;
  align-items: center;
  gap: 1rem;
  flex-shrink: 0;
}

#chat-launch-button {
  white-space: nowrap;
}

.app-user-badge {
  display: flex;
  align-items: center;
  gap: 0.55rem;
}

.app-user-avatar {
  width: 30px;
  height: 30px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--accent) 0%, var(--accent-2) 100%);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.68rem;
  font-weight: 800;
  color: #FFFFFF;
  flex-shrink: 0;
  letter-spacing: 0;
}

.app-user-name {
  font-size: 0.8rem;
  color: #273142;
  font-weight: 500;
}

/* ---- Actions bar ---- */
.app-actions-bar {
  background: #FFFFFF;
  border-bottom: 1px solid #E5EAF2;
  padding: 0.5rem 1.25rem;
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  flex-shrink: 0;
}

.workstation-bar {
  display: grid;
  grid-template-columns: 1.25fr 0.55fr auto;
  gap: 0.5rem;
  padding: 0.55rem 1.25rem;
  background: #F0F4FA;
  border-bottom: 1px solid #E5EAF2;
  align-items: center;
}

.workstation-bar input,
.workstation-bar select {
  padding: 0.55rem 0.75rem;
  border-radius: 10px;
  font-size: 0.8rem;
  min-height: 38px;
}

.btn-sm {
  padding: 0.28rem 0.65rem !important;
  font-size: 0.74rem !important;
  line-height: 1.4 !important;
}

/* ---- Scrollable content ---- */
.app-content {
  flex: 1;
  overflow-y: auto;
  overflow-x: hidden;
  padding: 1.5rem 1.75rem 3rem;
  scrollbar-width: thin;
  scrollbar-color: rgba(74, 125, 255, 0.12) transparent;
}

.app-content .grid.seven-up {
  margin-bottom: 0;
}

.app-content .stack {
  display: flex;
  flex-direction: column;
  gap: 2.5rem;
  margin-top: 2rem;
}

.app-content .stack.focus-mode>section {
  display: none;
}

.app-content .stack.focus-mode>section.is-focused {
  display: block;
}

.app-content .stack.focus-mode>section.ws-section.is-focused {
  display: flex;
  padding: 0.75rem;
}

.app-content .stack>section {
  background: #FFFFFF;
  border: 1px solid #E5EAF2;
  border-radius: 10px;
  padding: 1.25rem 1.5rem 1.5rem;
}

.app-content .stack>section>h3 {
  font-size: 0.88rem;
  font-weight: 700;
  color: var(--accent-2);
  text-transform: uppercase;
  letter-spacing: 0.07em;
  margin: 0 0 1rem;
  padding-bottom: 0.6rem;
  border-bottom: 1px solid #E5EAF2;
}

/* ---- Responsive for app shell ---- */
@media (max-width: 860px) {
  .app-sidebar {
    width: 0;
    min-width: 0;
    overflow: hidden;
  }

  .app-topbar-sub {
    font-size: 0.75rem;
  }

  .app-user-name {
    display: none;
  }

  .app-content {
    padding: 1rem;
  }

  .workstation-bar {
    grid-template-columns: 1fr;
  }
}

/* ═══════════════════════════════════════════════════════════════════════════
   CHAT REDESIGN — Gemini / ChatGPT Premium Style Override
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── Backdrop ────────────────────────────────────────────────────────────── */
.chat-backdrop {
  background: rgba(39, 49, 66, 0.12) !important;
  backdrop-filter: blur(8px) !important;
}

/* ── Drawer container ────────────────────────────────────────────────────── */
.chat-drawer {
  width: min(480px, 100vw) !important;
  background: #FFFFFF !important;
  border-left: 1px solid #E5EAF2 !important;
  box-shadow: -8px 0 40px rgba(39, 49, 66, 0.1) !important;
  grid-template-rows: auto 1fr auto !important;
  backdrop-filter: none !important;
}

/* ── Header — clean Gemini style ─────────────────────────────────────────── */
.chat-header {
  padding: 18px 24px 16px !important;
  border-bottom: 1px solid #EEF1F6 !important;
  background: #FFFFFF !important;
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  gap: 12px !important;
}

.chat-header strong {
  font-size: 0.95rem !important;
  font-weight: 700 !important;
  color: #273142 !important;
  letter-spacing: -0.01em !important;
}

.chat-header p {
  font-size: 0.78rem !important;
  color: #A0AABB !important;
  margin: 2px 0 0 !important;
}

/* ── Close button — minimal X ────────────────────────────────────────────── */
.chat-close {
  position: absolute !important;
  top: 16px !important;
  right: 16px !important;
  width: 32px !important;
  height: 32px !important;
  border-radius: 8px !important;
  border: none !important;
  background: transparent !important;
  color: #6B7788 !important;
  font-size: 0.88rem !important;
  padding: 0 !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  transition: background 0.15s, color 0.15s !important;
  cursor: pointer !important;
}

.chat-close:hover {
  background: #F0F4FA !important;
  color: #273142 !important;
}

/* ── Message body ────────────────────────────────────────────────────────── */
.chat-body {
  padding: 20px 24px !important;
  gap: 4px !important;
  background: #FAFBFD !important;
}

/* ── Empty state ─────────────────────────────────────────────────────────── */
.chat-empty {
  border: none !important;
  border-radius: 16px !important;
  padding: 32px 24px !important;
  background: #FFFFFF !important;
  text-align: center !important;
  box-shadow: 0 1px 3px rgba(39, 49, 66, 0.04) !important;
}

.chat-empty strong {
  display: block !important;
  font-size: 0.95rem !important;
  color: #273142 !important;
  margin-bottom: 8px !important;
}

.chat-empty p {
  font-size: 0.85rem !important;
  color: #6B7788 !important;
  line-height: 1.6 !important;
  max-width: 320px !important;
  margin: 0 auto !important;
}

/* ── Chat bubbles — Gemini-style: no borders, clean bg ───────────────────── */
.chat-bubble {
  max-width: 88% !important;
  border: none !important;
  border-radius: 18px !important;
  padding: 14px 18px !important;
  box-shadow: none !important;
  line-height: 1.6 !important;
}

.chat-bubble.user {
  margin-left: auto !important;
  background: #4A7DFF !important;
  color: #FFFFFF !important;
  border-radius: 18px 18px 4px 18px !important;
}

.chat-bubble.user .chat-text {
  color: #FFFFFF !important;
}

.chat-bubble.user .chat-role {
  color: rgba(255, 255, 255, 0.7) !important;
}

.chat-bubble.user .chat-meta {
  color: rgba(255, 255, 255, 0.55) !important;
}

.chat-bubble.assistant {
  margin-right: auto !important;
  background: #F0F4FA !important;
  color: #273142 !important;
  border-radius: 18px 18px 18px 4px !important;
}

.chat-bubble.assistant .chat-text {
  color: #273142 !important;
}

/* ── Role label — smaller, subtle ────────────────────────────────────────── */
.chat-role {
  font-size: 0.68rem !important;
  font-weight: 700 !important;
  letter-spacing: 0.08em !important;
  margin-bottom: 4px !important;
  color: #A0AABB !important;
}

.chat-bubble.assistant .chat-role {
  color: #7E9BCF !important;
}

/* ── Message text ────────────────────────────────────────────────────────── */
.chat-text {
  font-size: 0.9rem !important;
  line-height: 1.65 !important;
}

.chat-meta {
  font-size: 0.72rem !important;
  color: #A0AABB !important;
  margin-top: 6px !important;
}

/* ── HIDE: Adjuntar archivos button + hint text (yellow area) ────────────── */
.chat-attachments-bar {
  display: none !important;
}

.chat-attach-button {
  display: none !important;
}

/* ── Composer — ChatGPT-style unified input ──────────────────────────────── */
.chat-composer {
  padding: 16px 20px 20px !important;
  border-top: none !important;
  background: #FFFFFF !important;
}

.chat-composer textarea {
  min-height: 52px !important;
  max-height: 160px !important;
  margin-bottom: 0 !important;
  padding: 14px 18px !important;
  border: 1px solid #E5EAF2 !important;
  border-radius: 16px !important;
  background: #F6F8FB !important;
  color: #273142 !important;
  font-size: 0.9rem !important;
  line-height: 1.5 !important;
  resize: none !important;
  transition: border-color 0.2s, box-shadow 0.2s, background 0.2s !important;
  font-family: 'Inter', system-ui, sans-serif !important;
}

.chat-composer textarea:focus {
  outline: none !important;
  border-color: #4A7DFF !important;
  background: #FFFFFF !important;
  box-shadow: 0 0 0 3px rgba(74, 125, 255, 0.08) !important;
}

.chat-composer textarea::placeholder {
  color: #A0AABB !important;
  font-size: 0.88rem !important;
}

/* ── Actions row — send button right-aligned ─────────────────────────────── */
.chat-actions {
  justify-content: flex-end !important;
  gap: 10px !important;
  margin-top: 10px !important;
}

.chat-actions .message {
  display: none !important;
}

.chat-actions .button.primary {
  padding: 10px 24px !important;
  border-radius: 12px !important;
  font-size: 0.85rem !important;
  font-weight: 600 !important;
  background: #4A7DFF !important;
  color: #FFFFFF !important;
  border: none !important;
  box-shadow: 0 2px 8px rgba(74, 125, 255, 0.2) !important;
  transition: background 0.15s, box-shadow 0.15s, transform 0.1s !important;
}

.chat-actions .button.primary:hover {
  background: #3D6FEE !important;
  box-shadow: 0 4px 12px rgba(74, 125, 255, 0.3) !important;
  transform: translateY(-1px) !important;
}

/* ── Dropzone — cleaner when active ──────────────────────────────────────── */
.chat-dropzone {
  border: 1px dashed #C8D6E8 !important;
  border-radius: 14px !important;
  background: #F6F8FB !important;
  padding: 16px !important;
  margin-bottom: 10px !important;
}

.chat-dropzone strong {
  font-size: 0.88rem !important;
  color: #273142 !important;
}

.chat-dropzone p {
  font-size: 0.82rem !important;
  color: #6B7788 !important;
}

/* ── Pending files chips ─────────────────────────────────────────────────── */
.chat-pending {
  margin-bottom: 8px !important;
}

.chat-attachment-chip {
  border-radius: 10px !important;
  border: 1px solid #E5EAF2 !important;
  background: #F0F4FA !important;
  padding: 6px 12px !important;
  font-size: 0.82rem !important;
  color: #273142 !important;
}

/* ── Image preview ───────────────────────────────────────────────────────── */
.chat-image-preview {
  border-radius: 12px !important;
  border: 1px solid #E5EAF2 !important;
}

/* ── Scrollbar in chat ───────────────────────────────────────────────────── */
.chat-body::-webkit-scrollbar {
  width: 5px;
}

.chat-body::-webkit-scrollbar-track {
  background: transparent;
}

.chat-body::-webkit-scrollbar-thumb {
  background: #DCE3EE;
  border-radius: 3px;
}

.chat-body::-webkit-scrollbar-thumb:hover {
  background: #C8D0DD;
}

/* ── Mobile fix ──────────────────────────────────────────────────────────── */
@media (max-width: 860px) {
  .chat-drawer {
    width: 100vw !important;
  }
}

/* ═══════════════════════════════════════════════════════════════════════════
   CHAT ATTACH "+" BUTTON — ChatGPT-style inline attach
   ═══════════════════════════════════════════════════════════════════════════ */

/* Show the bar again, but as minimal row */
.chat-attachments-bar {
  display: flex !important;
  align-items: center !important;
  gap: 0 !important;
  margin-bottom: 0 !important;
  position: absolute !important;
  bottom: 82px !important;
  left: 22px !important;
  z-index: 5 !important;
}

/* Make composer position relative for the absolute button */
.chat-composer {
  position: relative !important;
  padding-bottom: 24px !important;
}

/* Textarea — add left padding for the + button */
.chat-composer textarea {
  padding-left: 48px !important;
}

/* The "+" button — small circle icon */
.chat-attach-button {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 34px !important;
  height: 34px !important;
  min-width: 34px !important;
  border-radius: 50% !important;
  border: 1px solid #E5EAF2 !important;
  background: #FFFFFF !important;
  color: #6B7788 !important;
  font-size: 1.2rem !important;
  font-weight: 400 !important;
  padding: 0 !important;
  cursor: pointer !important;
  transition: background 0.15s, border-color 0.15s, color 0.15s, transform 0.1s !important;
  line-height: 1 !important;
  text-indent: -9999px !important;
  overflow: hidden !important;
}

/* Replace text with "+" icon via ::after */
.chat-attach-button::after {
  content: "+" !important;
  text-indent: 0 !important;
  display: block !important;
  font-size: 1.25rem !important;
  font-weight: 300 !important;
  color: #6B7788 !important;
  line-height: 1 !important;
}

.chat-attach-button:hover {
  background: #F0F4FA !important;
  border-color: #D0D8E5 !important;
  transform: scale(1.05) !important;
}

.chat-attach-button:hover::after {
  color: #4A7DFF !important;
}

/* Hide the hint text completely */
.chat-hint {
  display: none !important;
}

/* Reposition attach button inside textarea area */
.chat-attachments-bar {
  bottom: auto !important;
  top: auto !important;
  left: auto !important;
  position: relative !important;
}

.chat-composer {
  display: flex !important;
  flex-direction: column !important;
  gap: 0 !important;
}

/* Wrapper for textarea + button inline */
.chat-composer textarea {
  padding-left: 18px !important;
}

/* Put the attach bar and actions in a row below textarea */
.chat-actions {
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  margin-top: 10px !important;
}

/* Move the attach button visually into the actions row */
.chat-attachments-bar {
  position: absolute !important;
  bottom: 28px !important;
  left: 20px !important;
}


/* ═══════════════════════════════════════════════════════════════════════════
   CHAT LAYOUT FIX — Push content + Send button right
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── When chat is open, shrink the app to make room ──────────────────────── */
body:has(.chat-drawer:not(.hidden)) .app-shell {
  right: 480px !important;
}

/* ── Chat drawer: NO backdrop overlay, just a side panel ─────────────────── */
.chat-backdrop {
  display: none !important;
}

.chat-drawer {
  position: fixed !important;
  top: 0 !important;
  right: 0 !important;
  width: 480px !important;
  height: 100vh !important;
  z-index: 200 !important;
  border-left: 1px solid #E5EAF2 !important;
  background: #FFFFFF !important;
  box-shadow: -2px 0 12px rgba(39, 49, 66, 0.06) !important;
  display: flex !important;
  flex-direction: column !important;
}

.chat-drawer.hidden {
  display: none !important;
}

/* ── Composer layout: + button left, textarea center, send right ─────────── */
.chat-composer {
  position: relative !important;
  padding: 14px 20px 18px !important;
  border-top: 1px solid #EEF1F6 !important;
  background: #FFFFFF !important;
  display: block !important;
}

/* Hide dropzone by default (it appears on drag) */
.chat-dropzone {
  margin-bottom: 10px !important;
}

/* Attach bar: position the "+" button to the left of textarea */
.chat-attachments-bar {
  position: absolute !important;
  left: 26px !important;
  bottom: 72px !important;
  z-index: 10 !important;
  display: flex !important;
  margin: 0 !important;
}

/* "+" button styling */
.chat-attach-button {
  display: flex !important;
  width: 32px !important;
  height: 32px !important;
  min-width: 32px !important;
  border-radius: 50% !important;
  border: 1px solid #DDE3EE !important;
  background: #F6F8FB !important;
  padding: 0 !important;
  cursor: pointer !important;
  align-items: center !important;
  justify-content: center !important;
  font-size: 0 !important;
  color: transparent !important;
  overflow: hidden !important;
  transition: background 0.15s, border-color 0.15s !important;
}

.chat-attach-button::after {
  content: "+" !important;
  font-size: 1.15rem !important;
  font-weight: 300 !important;
  color: #6B7788 !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  text-indent: 0 !important;
  line-height: 1 !important;
}

.chat-attach-button:hover {
  background: #EEF1F6 !important;
  border-color: #C8D0DD !important;
}

.chat-attach-button:hover::after {
  color: #4A7DFF !important;
}

/* Hide hint */
.chat-hint {
  display: none !important;
}

/* Textarea: space for + on left */
.chat-composer textarea {
  padding-left: 48px !important;
  min-height: 52px !important;
  max-height: 140px !important;
  border-radius: 16px !important;
  background: #F6F8FB !important;
  border: 1px solid #E5EAF2 !important;
  font-size: 0.9rem !important;
  resize: none !important;
  margin-bottom: 0 !important;
}

.chat-composer textarea:focus {
  background: #FFFFFF !important;
  border-color: #4A7DFF !important;
  box-shadow: 0 0 0 3px rgba(74, 125, 255, 0.08) !important;
  outline: none !important;
}

/* ── Actions: send button to the RIGHT ───────────────────────────────────── */
.chat-actions {
  display: flex !important;
  align-items: center !important;
  justify-content: flex-end !important;
  gap: 8px !important;
  margin-top: 10px !important;
}

/* Hide the status message text in actions */
.chat-actions>.message {
  flex: 1 !important;
  text-align: left !important;
  display: block !important;
}

/* Send button — right side, premium */
.chat-actions>.button.primary {
  padding: 9px 22px !important;
  border-radius: 10px !important;
  font-size: 0.84rem !important;
  font-weight: 600 !important;
  background: #4A7DFF !important;
  color: #FFFFFF !important;
  border: none !important;
  box-shadow: 0 1px 4px rgba(74, 125, 255, 0.2) !important;
  order: 2 !important;
}

.chat-actions>.button.primary:hover {
  background: #3D6FEE !important;
  box-shadow: 0 3px 10px rgba(74, 125, 255, 0.25) !important;
}

/* ── Responsive: on small screens chat goes full width ────────────────────── */
@media (max-width: 960px) {
  body:has(.chat-drawer:not(.hidden)) .app-shell {
    right: 0 !important;
    display: none !important;
  }

  .chat-drawer {
    width: 100vw !important;
  }
}


/* ── Minimalist UI: hide redundant elements (available in sidebar) ────── */
.app-actions-bar {
  display: none !important;
}

.app-topbar-right>a.button.secondary[href='/module-hub.html'] {
  display: none !important;
}


.workstation-bar {
  display: none !important;
}


/* ── Module headers (audit improvement) ────────────────────────────────── */
.module-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1rem;
  padding: 1.25rem 1.5rem;
  margin-bottom: 1.25rem;
  background: linear-gradient(135deg, var(--panel-soft, #F0F4FA) 0%, var(--panel, #FFFFFF) 100%);
  border: 1px solid var(--line, #E5EAF2);
  border-radius: var(--radius, 14px);
}

.module-header-info {
  display: flex;
  align-items: flex-start;
  gap: 0.85rem;
  flex: 1;
}

.module-icon {
  font-size: 1.6rem;
  line-height: 1;
  flex-shrink: 0;
  margin-top: 0.15rem;
}

.module-header h3 {
  margin: 0 0 0.3rem 0;
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--text, #273142);
  letter-spacing: -0.01em;
}

.module-desc {
  margin: 0;
  font-size: 0.82rem;
  color: var(--muted, #6B7788);
  line-height: 1.55;
  max-width: 600px;
}

.module-desc code {
  background: rgba(74, 125, 255, 0.08);
  color: var(--accent, #4A7DFF);
  padding: 0.1em 0.35em;
  border-radius: 4px;
  font-size: 0.8rem;
  font-family: 'SF Mono', 'Fira Code', monospace;
}

.module-actions {
  flex-shrink: 0;
  display: flex;
  gap: 0.5rem;
  align-items: center;
}

/* ── Focus mode: sections shown one at a time ──────────────────────────── */
.stack.focus-mode>section {
  display: none;
}

.stack.focus-mode>section.is-focused {
  display: block;
  animation: fadeInSection 0.25s ease-out;
}

@keyframes fadeInSection {
  from {
    opacity: 0;
    transform: translateY(8px);
  }

  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* ── Table improvements ────────────────────────────────────────────────── */
.table-wrap {
  overflow-x: auto;
  border-radius: var(--radius, 14px);
  border: 1px solid var(--line, #E5EAF2);
  background: var(--panel, #FFFFFF);
}

.table-wrap table {
  width: 100%;
  border-collapse: collapse;
}

.table-wrap thead th {
  padding: 0.65rem 0.85rem;
  font-size: 0.72rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--muted, #6B7788);
  border-bottom: 2px solid var(--line, #E5EAF2);
  background: var(--panel-soft, #F0F4FA);
  text-align: left;
  white-space: nowrap;
}

.table-wrap tbody td {
  padding: 0.6rem 0.85rem;
  font-size: 0.85rem;
  color: var(--text, #273142);
  border-bottom: 1px solid var(--line, #E5EAF2);
  vertical-align: middle;
}

.table-wrap tbody tr:last-child td {
  border-bottom: none;
}

.table-wrap tbody tr:hover {
  background: var(--panel-soft, #F0F4FA);
}

/* ── Sortable column headers ───────────────────────────────────────────── */
th.sortable-th {
  cursor: pointer;
  user-select: none;
  position: relative;
  transition: background 0.15s, color 0.15s;
}

th.sortable-th:hover {
  background: rgba(74, 125, 255, 0.08) !important;
  color: var(--accent, #4A7DFF) !important;
}

th.sortable-th::after {
  content: ' ⇅';
  font-size: 0.65em;
  opacity: 0.35;
  transition: opacity 0.15s;
}

th.sortable-th:hover::after {
  opacity: 0.65;
}

th.sortable-th.sorted::after {
  content: none; /* replaced by .sort-arrow span */
}

th.sortable-th.sorted {
  color: var(--accent, #4A7DFF) !important;
  border-bottom: 2.5px solid var(--accent, #4A7DFF);
}

.sort-arrow {
  font-size: 0.7em;
  margin-left: 2px;
  opacity: 0.85;
}

/* ── Report preview improvements ───────────────────────────────────────── */
.report-preview {
  margin-top: 1rem;
  border: 1px solid var(--line, #E5EAF2);
  border-radius: var(--radius, 14px);
  background: var(--panel, #FFFFFF);
  overflow: hidden;
}

.report-preview h4 {
  margin: 0;
  padding: 0.6rem 1rem;
  font-size: 0.75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--muted, #6B7788);
  background: var(--panel-soft, #F0F4FA);
  border-bottom: 1px solid var(--line, #E5EAF2);
}

.report-preview pre {
  margin: 0;
  padding: 1rem;
  font-size: 0.85rem;
  line-height: 1.6;
  white-space: pre-wrap;
  word-wrap: break-word;
  color: var(--text, #273142);
  max-height: 50vh;
  overflow-y: auto;
}

/* ── Inline form improvements ──────────────────────────────────────────── */
.inline-form {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  align-items: center;
  padding: 0.75rem 1rem;
  margin-bottom: 1rem;
  background: var(--panel, #FFFFFF);
  border: 1px solid var(--line, #E5EAF2);
  border-radius: var(--radius, 14px);
}

.inline-form input,
.inline-form select {
  padding: 0.5rem 0.75rem;
  font-size: 0.85rem;
  border: 1px solid var(--line, #E5EAF2);
  border-radius: 8px;
  background: var(--panel-soft, #F0F4FA);
  color: var(--text, #273142);
  outline: none;
  transition: border-color 0.2s;
}

.inline-form input:focus,
.inline-form select:focus {
  border-color: var(--accent, #4A7DFF);
  box-shadow: 0 0 0 3px rgba(74, 125, 255, 0.1);
}

.inline-form input[type="number"] {
  width: 70px;
}

.corpus-form {
  flex-wrap: wrap;
}

.corpus-form select {
  min-width: 140px;
}

/* ── Corpus search form layout fix ─────────────────────────────────────── */
.corpus-form {
  display: grid !important;
  grid-template-columns: 1fr 1fr;
  gap: 0.5rem;
}

.corpus-form input[name=query] {
  grid-column: 1 / -1;
}

.corpus-form button[type=submit] {
  grid-column: 1 / -1;
}

/* ═══════════════════════════════════════════════════════════════════
   UPLOAD FORM — Ingreso Documental
   ═══════════════════════════════════════════════════════════════════ */
.upload-form {
  margin-top: 1rem;
}

.upload-steps {
  display: flex;
  flex-direction: column;
  gap: 1.5rem;
}

.upload-step {
  border: 1px solid var(--line);
  border-radius: 14px;
  padding: 1.25rem;
  background: var(--panel-soft);
}

.upload-step-label {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  font-weight: 700;
  font-size: 0.9rem;
  color: var(--text);
  margin-bottom: 0.9rem;
}

.step-num {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 26px;
  height: 26px;
  border-radius: 50%;
  background: var(--accent);
  color: #fff;
  font-size: 0.78rem;
  font-weight: 800;
  flex-shrink: 0;
}

.upload-radio-group {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
}

.upload-radio {
  cursor: pointer;
  margin: 0;
  display: inline-flex;
}

.upload-radio input {
  position: absolute;
  opacity: 0;
  width: 0;
  height: 0;
  pointer-events: none;
}

.upload-radio-card {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  padding: 0.55rem 1rem;
  border: 1.5px solid var(--line);
  border-radius: 10px;
  background: #fff;
  font-size: 0.82rem;
  font-weight: 500;
  color: var(--muted);
  transition: all 0.18s ease;
  user-select: none;
}

.upload-radio-icon {
  font-size: 1.1rem;
}

.upload-radio input:checked+.upload-radio-card {
  border-color: var(--accent);
  color: var(--accent);
  background: rgba(74, 125, 255, 0.06);
  box-shadow: 0 0 0 2px rgba(74, 125, 255, 0.12);
}

.upload-radio-card:hover {
  border-color: var(--accent);
}

.upload-radio--compact .upload-radio-card {
  padding: 0.4rem 0.8rem;
  font-size: 0.8rem;
}

.upload-custom-type {
  display: flex;
  gap: 0.5rem;
  margin-top: 0.75rem;
  align-items: center;
}

.upload-custom-type input {
  max-width: 280px;
  padding: 0.45rem 0.75rem;
  font-size: 0.82rem;
  border-radius: 10px;
}

.drop-zone {
  border: 2px dashed rgba(74, 125, 255, 0.3);
  border-radius: 14px;
  padding: 2.5rem 1.5rem;
  text-align: center;
  cursor: pointer;
  transition: all 0.2s ease;
  background: #fff;
}

.drop-zone:hover,
.drop-zone.drag-over {
  border-color: var(--accent);
  background: rgba(74, 125, 255, 0.04);
}

.drop-zone.drag-over {
  transform: scale(1.01);
  box-shadow: 0 0 0 4px rgba(74, 125, 255, 0.1);
}

.drop-zone-icon {
  font-size: 2.2rem;
  display: block;
  margin-bottom: 0.5rem;
}

.drop-zone-text {
  margin: 0;
  color: var(--text);
  font-size: 0.92rem;
}

.drop-zone-hint {
  margin: 0.4rem 0 0;
  font-size: 0.78rem;
  color: var(--muted);
}

.file-list {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  margin-top: 0.75rem;
}

.file-item {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  padding: 0.5rem 0.75rem;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: #fff;
  font-size: 0.82rem;
}

.file-item-name {
  flex: 1;
  font-weight: 500;
  color: var(--text);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.file-item-size {
  color: var(--muted);
  font-size: 0.78rem;
  flex-shrink: 0;
}

.file-item-status {
  flex-shrink: 0;
}

.file-item-remove {
  background: none;
  border: none;
  color: var(--danger);
  cursor: pointer;
  font-size: 1rem;
  padding: 0 4px;
  flex-shrink: 0;
  opacity: 0.7;
}

.file-item-remove:hover {
  opacity: 1;
}

.upload-actions {
  display: flex;
  align-items: center;
  gap: 1rem;
  margin-top: 1.25rem;
}

.upload-status {
  font-size: 0.82rem;
  color: var(--muted);
}

.upload-results {
  margin-top: 1rem;
  border: 1px solid var(--line);
  border-radius: 14px;
  padding: 1rem 1.25rem;
  background: #fff;
}

.upload-results.hidden {
  display: none;
}

/* ── Upload pipeline progress panel (live stage indicator) ─────────────── */
.upload-pipeline-panel {
  margin-top: 1rem;
  border: 1px solid #C7D2FE;
  border-radius: 14px;
  padding: 1rem 1.25rem;
  background: linear-gradient(135deg, #F5F7FF 0%, #EEF2FF 100%);
  box-shadow: 0 2px 12px rgba(79, 70, 229, 0.08);
}
.upload-pipeline-panel .pp-header {
  font-weight: 700;
  font-size: 0.95rem;
  color: #3730A3;
  margin-bottom: 0.85rem;
}
.upload-pipeline-panel .pp-header-done {
  color: #047857;
}
.upload-pipeline-panel .pp-note {
  font-weight: 500;
  font-size: 0.78rem;
  color: #6B7280;
  margin-left: 4px;
}
.upload-pipeline-panel .pp-steps {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}
.upload-pipeline-panel .pp-step {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  font-size: 0.86rem;
  padding: 0.35rem 0.5rem;
  border-radius: 8px;
  transition: background 0.2s, opacity 0.2s;
}
.upload-pipeline-panel .pp-step .pp-mark { width: 1.3rem; text-align: center; }
.upload-pipeline-panel .pp-step .pp-icon { width: 1.3rem; text-align: center; }
.upload-pipeline-panel .pp-pending { opacity: 0.5; }
.upload-pipeline-panel .pp-active {
  background: #fff;
  font-weight: 600;
  color: #4338CA;
  box-shadow: 0 0 0 1px #C7D2FE;
}
.upload-pipeline-panel .pp-done { color: #047857; }
.upload-pipeline-panel .pp-spin {
  display: inline-block;
  animation: ppSpin 1.4s linear infinite;
}
@keyframes ppSpin {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}

.upload-result-item {
  padding: 0.5rem 0;
  border-bottom: 1px solid var(--line);
  font-size: 0.84rem;
}

.upload-result-item--duplicate {
  margin: 0.45rem 0;
  padding: 0.75rem 0.85rem;
  border: 1px solid #FACC15;
  border-radius: 10px;
  background: #FEFCE8;
}

.upload-result-item--error {
  color: #991B1B;
}

.upload-duplicate-title {
  font-weight: 700;
  color: #854D0E;
}

.upload-duplicate-body {
  margin-top: 0.25rem;
  color: #713F12;
}

.upload-duplicate-existing {
  margin-top: 0.35rem;
  color: #3F3F46;
}

.upload-duplicate-meta {
  margin-top: 0.2rem;
  font-size: 0.78rem;
  color: #71717A;
  overflow-wrap: anywhere;
}

.upload-result-item:last-child {
  border-bottom: none;
}

.upload-result-header {
  font-weight: 700;
  font-size: 0.92rem;
  margin-bottom: 0.6rem;
  display: flex;
  align-items: center;
  gap: 0.5rem;
}

/* ── Upload feedback: spinner en botón ──────────────────────────── */
.upload-spinner {
  display: inline-block;
  width: 14px;
  height: 14px;
  border: 2px solid rgba(255, 255, 255, 0.4);
  border-top-color: #fff;
  border-radius: 50%;
  animation: spin 0.7s linear infinite;
  vertical-align: middle;
  margin-right: 2px;
}

@keyframes spin {
  to {
    transform: rotate(360deg);
  }
}

/* ── Upload feedback: ícono ⏳ pulsante ─────────────────────────── */
.upload-spin-icon {
  animation: pulse-opacity 1.1s ease-in-out infinite;
}

@keyframes pulse-opacity {

  0%,
  100% {
    opacity: 1;
  }

  50% {
    opacity: 0.35;
  }
}

/* ── Upload feedback: file-item estados ─────────────────────────── */
.file-item--success {
  background: rgba(22, 163, 74, 0.05);
  border-color: rgba(22, 163, 74, 0.25);
  animation: fileSuccessIn 0.35s ease-out both;
}

.file-item--error {
  background: rgba(220, 38, 38, 0.04);
  border-color: rgba(220, 38, 38, 0.2);
}

@keyframes fileSuccessIn {
  from {
    opacity: 0.5;
    transform: translateX(-6px);
  }

  to {
    opacity: 1;
    transform: translateX(0);
  }
}

/* ── Upload feedback: barra de progreso ─────────────────────────── */
.upload-progress-bar-wrap {
  height: 6px;
  background: var(--line, #E5EAF2);
  border-radius: 99px;
  overflow: hidden;
  margin-top: 8px;
}

.upload-progress-bar-inner {
  height: 100%;
  background: linear-gradient(90deg, var(--accent, #4A7DFF), #7C3AED);
  border-radius: 99px;
  transition: width 0.3s ease;
}

/* ── Upload feedback: toast de resultado ────────────────────────── */
.upload-toast {
  transition: opacity 0.5s ease;
}

@keyframes uploadToastIn {
  from {
    opacity: 0;
    transform: translateY(-10px) scale(0.97);
  }

  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}

/* ═══════════════════════════════════════════════════════════════════
   MEDIA LIBRARY — Biblioteca Multimedia
   ═══════════════════════════════════════════════════════════════════ */
.media-form {
  border: 1px solid var(--line);
  border-radius: 14px;
  padding: 1.25rem;
  background: var(--panel-soft);
  margin-top: 1rem;
}

.media-form-row {
  display: flex;
  gap: 1rem;
  margin-bottom: 0.75rem;
  flex-wrap: wrap;
}

.media-field {
  flex: 1;
  min-width: 200px;
  margin-bottom: 0;
}

.media-field--wide {
  flex: 2;
  min-width: 300px;
}

.media-field-label {
  display: block;
  font-size: 0.78rem;
  font-weight: 600;
  color: var(--muted);
  margin-bottom: 0.35rem;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

.media-field input,
.media-field select {
  padding: 0.55rem 0.75rem;
  font-size: 0.85rem;
  border-radius: 10px;
}

.media-type-toggle {
  display: flex;
  gap: 0.4rem;
}

.media-form-actions {
  display: flex;
  align-items: center;
  gap: 1rem;
  margin-top: 0.5rem;
}

.media-links-list {
  margin-top: 1.25rem;
}

.media-repo-group {
  margin-bottom: 1rem;
}

.media-repo-header {
  font-size: 0.82rem;
  font-weight: 700;
  color: var(--text);
  margin-bottom: 0.5rem;
  padding: 0.4rem 0;
  border-bottom: 1px solid var(--line);
  display: flex;
  align-items: center;
  gap: 0.4rem;
}

.media-repo-count {
  font-weight: 400;
  color: var(--muted);
  font-size: 0.78rem;
}

.media-link-card {
  display: flex;
  align-items: flex-start;
  gap: 0.75rem;
  padding: 0.6rem 0.75rem;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: #fff;
  margin-bottom: 0.35rem;
  transition: border-color 0.15s;
}

.media-link-card:hover {
  border-color: var(--accent);
}

.media-link-icon {
  font-size: 1.2rem;
  flex-shrink: 0;
  padding-top: 0.1rem;
}

.media-link-info {
  flex: 1;
  min-width: 0;
}

.media-link-title {
  font-weight: 600;
  font-size: 0.84rem;
  color: var(--text);
  margin: 0;
}

.media-link-title a {
  color: inherit;
  text-decoration: none;
}

.media-link-title a:hover {
  color: var(--accent);
  text-decoration: underline;
}

.media-link-meta {
  font-size: 0.76rem;
  color: var(--muted);
  margin: 0.15rem 0 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.media-link-notes {
  font-size: 0.78rem;
  color: var(--text);
  margin: 0.25rem 0 0;
  font-style: italic;
  opacity: 0.7;
}

.media-link-delete {
  background: none;
  border: none;
  color: var(--danger);
  cursor: pointer;
  font-size: 0.85rem;
  padding: 0.2rem 0.4rem;
  opacity: 0.5;
  flex-shrink: 0;
  border-radius: 6px;
}

.media-link-delete:hover {
  opacity: 1;
  background: rgba(229, 83, 75, 0.06);
}

.muted-text {
  color: var(--muted);
  font-size: 0.85rem;
}

/* ── Codebook Panel ───────────────────────────── */
.codebook-panel {
  background: linear-gradient(135deg, rgba(99, 102, 241, 0.03), rgba(168, 85, 247, 0.03));
  border: 1px solid #E5EAF2;
  border-radius: 12px;
  padding: 0;
  overflow: hidden;
}

.codebook-panel[open] {
  padding-bottom: 1rem;
}

.codebook-summary {
  cursor: pointer;
  padding: 14px 20px;
  font-weight: 700;
  font-size: 0.92rem;
  color: #2D3748;
  user-select: none;
  transition: background 0.2s;
}

.codebook-summary:hover {
  background: rgba(99, 102, 241, 0.06);
}

.codebook-panel .table-wrap {
  padding: 0 16px;
}

.codebook-memo-text {
  display: inline-block;
  max-width: 200px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  vertical-align: middle;
  font-size: 0.82rem;
  color: #4A5568;
}

.edit-memo {
  padding: 2px 6px !important;
  font-size: 0.78rem !important;
  vertical-align: middle;
  margin-left: 4px;
}

/* ── Narrative Synthesis Panel ───────────────── */
.synthesis-panel {
  background: linear-gradient(135deg, rgba(46, 134, 193, 0.03), rgba(39, 174, 96, 0.03));
  border: 1px solid #E5EAF2;
  border-radius: 12px;
  padding: 20px;
}

.synthesis-section {
  background: #fff;
  border: 1px solid #EDF0F5;
  border-radius: 10px;
  margin-bottom: 12px;
  overflow: hidden;
}

.synthesis-summary {
  cursor: pointer;
  padding: 12px 16px;
  font-weight: 700;
  font-size: 0.9rem;
  color: #2D3748;
  user-select: none;
  transition: background 0.2s;
}

.synthesis-summary:hover {
  background: rgba(46, 134, 193, 0.06);
}

.synthesis-content {
  padding: 12px 16px 16px;
}

.narrative-text-block p {
  line-height: 1.8;
  font-size: 0.95rem;
  color: #2D3748;
}

.mermaid-container {
  padding: 16px;
  overflow-x: auto;
  text-align: center;
}

.mermaid-container svg {
  max-width: 100%;
  height: auto;
}

.theme-card {
  background: linear-gradient(135deg, rgba(99, 102, 241, 0.04), rgba(168, 85, 247, 0.04));
  border: 1px solid #E5EAF2;
  border-radius: 10px;
  padding: 14px 18px;
  margin-bottom: 10px;
}

.theme-card h4 {
  font-size: 0.95rem;
  font-weight: 700;
  color: #2D3748;
  margin-bottom: 6px;
}

.theme-card p {
  font-size: 0.85rem;
  color: #4A5568;
  margin-bottom: 4px;
  line-height: 1.5;
}

.trace-stat {
  display: flex;
  flex-direction: column;
  align-items: center;
  background: #fff;
  border: 1px solid #EDF0F5;
  border-radius: 10px;
  padding: 10px 16px;
  min-width: 90px;
}

.trace-label {
  font-size: 0.75rem;
  color: #6B7788;
  font-weight: 600;
  margin-bottom: 4px;
}

.trace-value {
  font-size: 1.3rem;
  font-weight: 800;
  color: #2D3748;
}

/* ── Writing Textarea ───────────────── */
.writing-textarea {
  width: 100%;
  padding: 16px;
  border: 2px solid #E5EAF2;
  border-radius: 10px;
  font-family: 'Georgia', 'Times New Roman', serif;
  font-size: 1rem;
  line-height: 1.8;
  color: #2D3748;
  background: #fff;
  resize: vertical;
  transition: border-color 0.3s, box-shadow 0.3s;
  box-sizing: border-box;
}

.writing-textarea:focus {
  outline: none;
  border-color: #2E86C1;
  box-shadow: 0 0 0 3px rgba(46, 134, 193, 0.12);
}

.writing-textarea::placeholder {
  color: #A0AABB;
  font-style: italic;
}

/* ═══════════════════════════════════════════════════════════════════
   CODING OVERLAY — Chat Corpus qualitative code layer
   ═══════════════════════════════════════════════════════════════════ */
.ws-co-mark {
  border-radius: 3px;
  padding: 1px 2px;
  cursor: pointer;
  position: relative;
  transition: background 0.15s;
}

.ws-co-mark:hover {
  filter: brightness(0.92);
}

.ws-co-mark--invivo {
  background: rgba(253, 224, 71, 0.45);
}

.ws-co-mark--proceso {
  background: rgba(147, 197, 253, 0.45);
}

.ws-co-mark--valores {
  background: rgba(216, 180, 254, 0.45);
}

/* Keyword emphasis within sentence highlight — dual-layer visual */
.ws-co-keyword {
  font-weight: 700;
  border-bottom: 2.5px solid currentColor;
  padding-bottom: 1px;
  border-radius: 0;
}

.ws-co-mark--invivo .ws-co-keyword {
  border-color: #ca8a04;
  color: #92400E;
}

.ws-co-mark--proceso .ws-co-keyword {
  border-color: #2563eb;
  color: #1E40AF;
}

.ws-co-mark--valores .ws-co-keyword {
  border-color: #7c3aed;
  color: #5B21B6;
}

.ws-co-mark--deep .ws-co-keyword {
  border-color: #15803d;
  color: #14532D;
}

/* Op.2D: Hover highlight — sidebar card hovered → text mark glows */
.ws-co-mark--hover {
  background: rgba(99, 102, 241, 0.22) !important;
  box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.18);
  transition: all 0.2s ease;
}

/* Op.2C: Pulse animation — sidebar card clicked → text mark pulses */
.ws-co-mark--pulse {
  animation: coPulse 0.6s ease 3;
}

@keyframes coPulse {

  0%,
  100% {
    box-shadow: none;
  }

  50% {
    box-shadow: 0 0 0 5px rgba(99, 102, 241, 0.35);
  }
}

.ws-co-badge {
  display: inline-block;
  font-size: 0.6rem;
  font-weight: 700;
  padding: 1px 5px;
  border-radius: 4px;
  margin-left: 3px;
  vertical-align: super;
  line-height: 1;
  cursor: pointer;
  user-select: none;
}

.ws-co-badge--invivo {
  background: #FDE68A;
  color: #92400E;
}

.ws-co-badge--proceso {
  background: #BFDBFE;
  color: #1E40AF;
}

.ws-co-badge--valores {
  background: #E9D5FF;
  color: #5B21B6;
}

.ws-co-tooltip {
  position: absolute;
  left: 0;
  bottom: calc(100% + 6px);
  z-index: 9999;
  min-width: 240px;
  max-width: 360px;
  background: #fff;
  border: 1px solid #E5EAF2;
  border-radius: 10px;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
  padding: 10px 14px;
  font-size: 0.78rem;
  line-height: 1.5;
  color: #273142;
  display: none;
  pointer-events: auto;
}

.ws-co-tooltip.visible {
  display: block;
}

.ws-co-tooltip-type {
  font-weight: 800;
  text-transform: uppercase;
  font-size: 0.65rem;
  letter-spacing: 0.06em;
  margin-bottom: 4px;
}

.ws-co-tooltip-type--invivo {
  color: #B45309;
}

.ws-co-tooltip-type--proceso {
  color: #1D4ED8;
}

.ws-co-tooltip-type--valores {
  color: #6D28D9;
}

.ws-co-tooltip-label {
  font-weight: 600;
  margin-bottom: 3px;
}

.ws-co-tooltip-concept {
  color: #6B7280;
  font-style: italic;
  margin-bottom: 3px;
}

.ws-co-tooltip-evidence {
  color: #9CA3AF;
  font-size: 0.72rem;
  border-top: 1px solid #F3F4F6;
  padding-top: 4px;
  margin-top: 4px;
}

#ws-coding-overlay-btn.active {
  opacity: 1 !important;
  background: rgba(124, 58, 237, 0.1) !important;
  border: 1px solid #7C3AED !important;
  color: #7C3AED !important;
  font-weight: 600;
}

.ws-co-summary {
  padding: 8px 12px;
  margin-bottom: 8px;
  background: linear-gradient(135deg, rgba(124, 58, 237, 0.05), rgba(59, 130, 246, 0.05));
  border: 1px solid #E5EAF2;
  border-radius: 8px;
  font-size: 0.75rem;
  color: #4B5563;
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}

.ws-co-summary-badge {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  padding: 2px 8px;
  border-radius: 12px;
  font-weight: 600;
  font-size: 0.68rem;
}

/* Layer 2: Deep coding markers — dashed border for visual distinction from Layer 1 */
.ws-co-mark--deep {
  border-bottom: 2px dashed #15803d;
}

.ws-co-badge--deep {
  background: #BBF7D0;
  color: #14532D;
}

.ws-co-tooltip-type--deep {
  color: #15803d;
}

#ws-deepen-btn.active {
  opacity: 1 !important;
  background: rgba(21, 128, 61, 0.1) !important;
  border: 1px solid #15803d !important;
  color: #15803d !important;
  font-weight: 600;
}

/* ══════════════════════════════════════════════════════════════════════
   DARK MODE — Coding overlay, memo marks, annotations
   ══════════════════════════════════════════════════════════════════════ */

/* ── Coding overlay keyword text — dark-friendly bright colors ───── */
[data-theme="dark"] .ws-co-mark--invivo .ws-co-keyword {
  border-color: #facc15 !important;
  color: #fde68a !important;
}
[data-theme="dark"] .ws-co-mark--proceso .ws-co-keyword {
  border-color: #60a5fa !important;
  color: #93c5fd !important;
}
[data-theme="dark"] .ws-co-mark--valores .ws-co-keyword {
  border-color: #a78bfa !important;
  color: #c4b5fd !important;
}
[data-theme="dark"] .ws-co-mark--deep .ws-co-keyword {
  border-color: #4ade80 !important;
  color: #86efac !important;
}

/* ── Coding overlay mark backgrounds — slightly brighter in dark ── */
[data-theme="dark"] .ws-co-mark--invivo {
  background: rgba(253, 224, 71, 0.15) !important;
}
[data-theme="dark"] .ws-co-mark--proceso {
  background: rgba(147, 197, 253, 0.15) !important;
}
[data-theme="dark"] .ws-co-mark--valores {
  background: rgba(216, 180, 254, 0.15) !important;
}
[data-theme="dark"] .ws-co-mark--deep {
  border-bottom-color: #4ade80 !important;
}

/* ── Coding overlay tooltips ─────────────────────────────────────── */
[data-theme="dark"] .ws-co-tooltip {
  background: #111118 !important;
  border-color: #2a2a3a !important;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.5) !important;
  color: #e8e8f0 !important;
}
[data-theme="dark"] .ws-co-tooltip-label {
  color: #e8e8f0 !important;
}
[data-theme="dark"] .ws-co-tooltip-concept {
  color: #8888a0 !important;
}
[data-theme="dark"] .ws-co-tooltip-evidence {
  color: #8888a0 !important;
  border-color: #2a2a3a !important;
}
[data-theme="dark"] .ws-co-tooltip-type--invivo {
  color: #facc15 !important;
}
[data-theme="dark"] .ws-co-tooltip-type--proceso {
  color: #60a5fa !important;
}
[data-theme="dark"] .ws-co-tooltip-type--valores {
  color: #a78bfa !important;
}
[data-theme="dark"] .ws-co-tooltip-type--deep {
  color: #4ade80 !important;
}

/* ── Coding overlay badges ───────────────────────────────────────── */
[data-theme="dark"] .ws-co-badge {
  background: #1a1a24 !important;
}
[data-theme="dark"] .ws-co-badge--invivo {
  background: rgba(253, 224, 71, 0.12) !important;
  color: #fde68a !important;
}
[data-theme="dark"] .ws-co-badge--proceso {
  background: rgba(147, 197, 253, 0.12) !important;
  color: #93c5fd !important;
}
[data-theme="dark"] .ws-co-badge--valores {
  background: rgba(216, 180, 254, 0.12) !important;
  color: #c4b5fd !important;
}
[data-theme="dark"] .ws-co-badge--deep {
  background: rgba(74, 222, 128, 0.12) !important;
  color: #86efac !important;
}

/* ── Coding overlay summary badges ───────────────────────────────── */
[data-theme="dark"] .ws-co-summary-badge {
  color: #e8e8f0 !important;
}

/* ── Memo marks (dashed underline) ───────────────────────────────── */
[data-theme="dark"] mark.ws-memo-mark {
  border-bottom-color: #74b9ff !important;
  color: #e8e8f0 !important;
}
[data-theme="dark"] mark.ws-memo-mark:hover {
  background: rgba(116, 185, 255, 0.1) !important;
}
[data-theme="dark"] mark.ws-memo-mark::after {
  background: #111118 !important;
  border-color: #2a2a3a !important;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.4) !important;
}

/* ── Report rendered links ───────────────────────────────────────── */
[data-theme="dark"] .ws-plaintext-view.ws-report-rendered a {
  color: #74b9ff !important;
}
[data-theme="dark"] .ws-plaintext-view.ws-report-rendered a:hover {
  color: #a0d4ff !important;
}
[data-theme="dark"] .ws-plaintext-view.ws-report-rendered strong {
  color: #e8e8f0 !important;
}
[data-theme="dark"] .ws-plaintext-view.ws-report-rendered blockquote {
  border-left-color: #2a2a3a !important;
  color: #8888a0 !important;
}

/* ── Deepen button active state ──────────────────────────────────── */
[data-theme="dark"] #ws-deepen-btn.active {
  background: rgba(85, 239, 196, 0.08) !important;
  border-color: #55efc4 !important;
  color: #55efc4 !important;
}


/* ── Global Toast Notification ─────────────────────────────────────── */
.eco-toast-container {
  position: fixed;
  top: 16px;
  right: 16px;
  z-index: 99999;
  display: flex;
  flex-direction: column;
  gap: 8px;
  pointer-events: none;
}

.eco-toast {
  pointer-events: auto;
  background: #1E293B;
  color: #F1F5F9;
  padding: 12px 20px;
  border-radius: 10px;
  font-size: 0.82rem;
  font-family: inherit;
  box-shadow: 0 8px 30px rgba(0, 0, 0, 0.18);
  display: flex;
  align-items: center;
  gap: 10px;
  max-width: 380px;
  animation: ecoToastIn 0.3s ease-out;
  border-left: 3px solid #818CF8;
}

.eco-toast.eco-toast--success {
  border-left-color: #34D399;
}

.eco-toast.eco-toast--error {
  border-left-color: #F87171;
}

.eco-toast.eco-toast--info {
  border-left-color: #818CF8;
}

.eco-toast.eco-toast--working {
  border-left-color: #FBBF24;
}

.eco-toast.eco-toast--out {
  animation: ecoToastOut 0.3s ease-in forwards;
}

@keyframes ecoToastIn {
  from {
    opacity: 0;
    transform: translateX(30px);
  }

  to {
    opacity: 1;
    transform: translateX(0);
  }
}

@keyframes ecoToastOut {
  from {
    opacity: 1;
    transform: translateX(0);
  }

  to {
    opacity: 0;
    transform: translateX(30px);
  }
}

.eco-toast-spinner {
  width: 14px;
  height: 14px;
  border: 2px solid rgba(255, 255, 255, 0.2);
  border-top-color: #FBBF24;
  border-radius: 50%;
  animation: ecoSpin 0.8s linear infinite;
  flex-shrink: 0;
}

@keyframes ecoSpin {
  to {
    transform: rotate(360deg);
  }
}

/* ── Button Loading State ──────────────────────────────────────────── */
.eco-btn-loading {
  opacity: 0.7 !important;
  pointer-events: none !important;
  position: relative;
}

/* ── Sortable Table Headers ──────────────────────────────────────── */
.rename-sortable-th, .registry-sortable-th, .report-sortable-th, .translate-sortable-th {
  transition: background 0.15s, color 0.15s;
  position: relative;
  cursor: pointer;
  user-select: none;
}

.rename-sortable-th:hover, .registry-sortable-th:hover, .report-sortable-th:hover, .translate-sortable-th:hover {
  background: rgba(74, 125, 255, 0.06) !important;
  color: var(--accent, #4A7DFF);
}

.rename-sortable-th .sort-indicator, .registry-sortable-th .sort-indicator, .report-sortable-th .sort-indicator, .translate-sortable-th .sort-indicator {
  font-size: 0.72rem;
  transition: opacity 0.15s;
}

.rename-sortable-th:hover .sort-indicator:empty::after, .registry-sortable-th:hover .sort-indicator:empty::after, .report-sortable-th:hover .sort-indicator:empty::after, .translate-sortable-th:hover .sort-indicator:empty::after {
  content: ' ↕';
  color: #9ca3af;
  font-size: 0.7rem;
}
