/* ================================================================
   Design Tokens
   ================================================================ */
:root{
  font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;
  /* Colors */
  --c-bg:        #0a0d12;
  --c-bg-panel:  #101820;
  --c-bg-card:   #152028;
  --c-bg-btn:    #182430;
  --c-bg-hover:  #1c2a34;
  --c-bg-accent: #122a2a;
  --c-text:      #e8e8e8;
  --c-text-muted:#999;
  --c-text-dim:  #778;
  --c-text-sub:  #ccc;
  --c-text-faint:#555;
  --c-accent:    #60a5fa;
  --c-accent-green:#4ade80;
  --c-gradient:  linear-gradient(135deg, #60a5fa, #4ade80);
  --c-border:    #1a2228;
  --c-border-med:#2a3338;
  --c-border-acc:#1a4a4a;
  --c-code-bg:   #111a22;
  /* Semantic colors */
  --c-green-bg:  #1a3a1a; --c-green:#4ade80;
  --c-blue-bg:   #1a2a3a; --c-blue:#60a5fa;
  --c-orange-bg: #3a2a1a; --c-orange:#fb923c;
  --c-red-bg:    #3a1a1a; --c-red:#f87171;
  --c-gray-bg:   #2a2a2a; --c-gray:#999;
  --c-purple-bg: #1a1a2a; --c-purple:#a78bfa;
  --c-danger-border:#7f1d1d;
  /* FAB */
  --c-fab-bg:    #1a2a3a;
  --c-fab-shadow:0 4px 12px rgba(0,0,0,.4);
  /* Radii */
  --r-sm:4px; --r-md:8px; --r-lg:12px; --r-xl:16px;
  /* Transitions */
  --t-fast:.15s; --t-norm:.25s;
}

/* ================================================================
   Light Mode Overrides
   ================================================================ */
body.light-mode{
  --c-bg:        #eef3f2;
  --c-bg-panel:  #fff;
  --c-bg-card:   #f5f9f8;
  --c-bg-btn:    #e4ece8;
  --c-bg-hover:  #d8e8e4;
  --c-bg-accent: #d8f0ea;
  --c-text:      #1a1a2a;
  --c-text-muted:#777;
  --c-text-dim:  #888;
  --c-text-sub:  #444;
  --c-text-faint:#aaa;
  --c-accent:    #2a5faa;
  --c-accent-green:#16a34a;
  --c-gradient:  linear-gradient(135deg, #2a5faa, #16a34a);
  --c-border:    #c8d8d4;
  --c-border-med:#b8ccc8;
  --c-border-acc:#6aaa9a;
  --c-code-bg:   #ecf2f0;
  --c-green-bg:  #dff5df; --c-green:#1a7a1a;
  --c-blue-bg:   #ddeaff; --c-blue:#2a5faa;
  --c-orange-bg: #ffedd5; --c-orange:#9a5a1a;
  --c-red-bg:    #ffe0e0; --c-red:#b91c1c;
  --c-gray-bg:   #e8e8e8; --c-gray:#666;
  --c-purple-bg: #ede8ff; --c-purple:#6d28d9;
  --c-danger-border:#f87171;
  --c-fab-bg:    #fff;
  --c-fab-shadow:0 2px 8px rgba(0,0,0,.12);
}
.light-mode .logo-dark{display:none;}
.light-mode .logo-light{display:inline;}

/* ================================================================
   Base
   ================================================================ */
body{margin:0;background:var(--c-bg);color:var(--c-text);overflow-x:hidden;}
body.ws-active{overflow:hidden;}
.rid{display:none;}
.main{padding:16px;max-width:1100px;margin:0 auto;}
.panel{background:var(--c-bg-panel);border:1px solid var(--c-border);border-radius:var(--r-xl);padding:18px;box-shadow:0 2px 12px rgba(0,0,0,.15);}
.row{display:flex;justify-content:space-between;align-items:center;gap:12px;}
label{display:block;margin:10px 0;}
input{width:100%;padding:10px;border-radius:var(--r-lg);border:1px solid var(--c-border-med);background:var(--c-bg);color:var(--c-text);}
.muted{color:var(--c-text-muted);}
.text-danger{color:var(--c-red);font-weight:600;}

/* ================================================================
   Buttons
   ================================================================ */
.btn{padding:10px 12px;border-radius:var(--r-lg);border:1px solid var(--c-border-med);background:var(--c-bg-btn);color:var(--c-text);cursor:pointer;transition:background var(--t-fast),border-color var(--t-fast),box-shadow var(--t-fast);}
.btn:hover{background:var(--c-bg-hover);}
.btn-sm{padding:6px 10px;font-size:12px;}
.btn-xs{padding:4px 8px;font-size:11px;}
.btn-primary{background:var(--c-gradient);border:none;color:#fff;font-weight:600;}
.btn-primary:hover{box-shadow:0 4px 14px rgba(74,222,128,.2);filter:brightness(1.1);}
.btn-danger{border-color:var(--c-danger-border);color:var(--c-red);}
.btn-danger:hover{background:var(--c-red-bg);}
.badge-blue-btn{background:var(--c-blue-bg);border-color:var(--c-border-acc);color:var(--c-accent);}
.badge-blue-btn:hover{background:#1a3a3a;}
.light-mode .badge-blue-btn:hover{background:#d0ece4;}

/* ================================================================
   Toast
   ================================================================ */
.toast{position:fixed;bottom:18px;left:50%;transform:translateX(-50%);background:var(--c-bg-panel);border:1px solid var(--c-border-med);border-radius:var(--r-xl);padding:10px 14px;max-width:min(900px,92vw);white-space:pre-wrap;color:var(--c-text);box-shadow:0 4px 20px rgba(0,0,0,.25);}

/* ================================================================
   Cards
   ================================================================ */
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px;margin-top:14px;}
.card{padding:16px;border-radius:var(--r-xl);border:1px solid var(--c-border);background:var(--c-bg-card);cursor:pointer;transition:border-color var(--t-norm),box-shadow var(--t-norm),transform var(--t-norm);}
.card:hover{border-color:var(--c-border-acc);box-shadow:0 4px 16px rgba(74,222,128,.08);transform:translateY(-1px);}
.light-mode .card:hover{box-shadow:0 4px 16px rgba(26,86,219,.08);}
.cardTitle{font-weight:700;margin-bottom:6px;}
.cardDesc{color:var(--c-text-sub);font-size:13px;min-height:34px;}
.cardMeta{color:var(--c-text-dim);font-size:12px;margin-top:10px;}

/* ================================================================
   Grid / Tree / Pre
   ================================================================ */
.grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:10px;}
.tree{min-height:240px;border:1px solid var(--c-border-med);border-radius:var(--r-xl);padding:12px;background:var(--c-bg-card);white-space:pre-wrap;}
.light-mode .tree{border-color:var(--c-border);background:#fff;}
.pre{min-height:240px;border:1px solid var(--c-border);border-radius:var(--r-xl);padding:10px;background:var(--c-bg);overflow:auto;}

/* ================================================================
   Row Actions / Search / Filter
   ================================================================ */
.row-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;}
.search-input{width:180px;padding:8px 10px;border-radius:var(--r-lg);border:1px solid var(--c-border-med);background:var(--c-bg);color:var(--c-text);font-size:13px;}
.select-filter{padding:8px 10px;border-radius:var(--r-lg);border:1px solid var(--c-border-med);background:var(--c-bg);color:var(--c-text);font-size:13px;}

/* ================================================================
   List Items (shared pattern: doc-row, inbox-item, feed-item)
   ================================================================ */
.doc-row,.inbox-item,.feed-item{display:flex;gap:12px;padding:11px 14px;border:1px solid var(--c-border);border-radius:var(--r-lg);margin-bottom:6px;background:var(--c-bg-card);transition:border-color var(--t-fast),box-shadow var(--t-fast);}
.doc-row:hover,.inbox-item:hover,.feed-item:hover{border-color:var(--c-border-acc);box-shadow:0 2px 8px rgba(74,222,128,.06);}
.light-mode .doc-row:hover,.light-mode .inbox-item:hover,.light-mode .feed-item:hover{box-shadow:0 2px 8px rgba(26,86,219,.06);}
.doc-row,.inbox-item{align-items:center;}
.feed-item{align-items:flex-start;cursor:pointer;}

/* Document list */
.doc-list{margin-top:12px;}
.doc-row-icon{font-size:20px;width:32px;text-align:center;flex-shrink:0;}
.doc-row-main{flex:1;cursor:pointer;min-width:0;}
.doc-row-title{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.doc-row-meta{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:4px;font-size:12px;color:var(--c-text-muted);}
.doc-row-actions{display:flex;gap:6px;flex-shrink:0;}
.doc-pins{color:#8aa;}
.light-mode .doc-pins{color:#5a8a8a;}
.doc-date{color:var(--c-text-dim);}

/* ================================================================
   Badges
   ================================================================ */
.badge{display:inline-block;padding:3px 10px;border-radius:10px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.3px;}
.badge-green{background:var(--c-green-bg);color:var(--c-green);}
.badge-blue{background:var(--c-blue-bg);color:var(--c-blue);}
.badge-orange{background:var(--c-orange-bg);color:var(--c-orange);}
.badge-red{background:var(--c-red-bg);color:var(--c-red);}
.badge-gray{background:var(--c-gray-bg);color:var(--c-gray);}
.badge-state{background:var(--c-purple-bg);color:var(--c-purple);}
.badge-gradient{background:var(--c-gradient);color:#fff;}

/* Staleness badges */
.staleness-badge{display:inline-flex;align-items:center;gap:0.25rem;font-size:0.75rem;padding:0.25rem 0.5rem;border-radius:0.25rem;font-weight:600;text-transform:uppercase;letter-spacing:.3px;transition:opacity var(--t-norm),background-color var(--t-norm);}
.staleness-badge[data-status="HIGHLY_ACTIVE"]{background:var(--c-green-bg);color:var(--c-green);}
.staleness-badge[data-status="ACTIVE"]{background:var(--c-blue-bg);color:var(--c-blue);}
.staleness-badge[data-status="STALE"]{background:var(--c-orange-bg);color:var(--c-orange);}
.staleness-badge[data-status="ROTTEN"]{background:var(--c-red-bg);color:var(--c-red);}
.staleness-badge.debounce-pending{opacity:0.6;border:1px dashed currentColor;}
.debounce-notice{font-size:11px;color:var(--c-text-dim);font-style:italic;margin-top:2px;opacity:0.8;transition:opacity .5s;}
.debounce-notice.fade-out{opacity:0;}

/* Decay bar & labels */
.decay-bar-wrap{display:inline-block;width:60px;height:4px;background:var(--c-code-bg);border-radius:2px;vertical-align:middle;overflow:hidden;}
.decay-bar{height:100%;border-radius:2px;transition:width var(--t-norm);}
.decay-bar-label{font-size:11px;color:var(--c-text-dim);margin-left:4px;vertical-align:middle;}
.decay-class-label{font-size:11px;text-transform:uppercase;font-weight:600;letter-spacing:.3px;}
.decay-reasoning{font-size:11px;color:var(--c-text-dim);line-height:1.3;margin-top:2px;}
.decay-section .meta-item:last-child{border-bottom:none;}
.decay-override-badge{font-size:10px;background:var(--c-blue-bg);color:var(--c-blue);padding:1px 4px;border-radius:var(--r-sm);margin-left:4px;}

/* Small badges (inbox, feed, sidebar) */
.sidebar-count,.inbox-badge,.feed-badge{display:inline-block;padding:1px 6px;border-radius:var(--r-md);font-size:11px;font-weight:600;}
.sidebar-count{background:var(--c-code-bg);color:#888;margin-left:auto;}
.light-mode .sidebar-count{color:var(--c-gray);}
.inbox-badge{font-weight:700;background:var(--c-red-bg);color:var(--c-red);margin-left:4px;}
.inbox-badge.inbox-ok{background:var(--c-green-bg);color:var(--c-green);}
.feed-badge{font-weight:700;background:#2a1a3a;color:var(--c-purple);margin-left:4px;}
.light-mode .feed-badge{background:var(--c-purple-bg);color:var(--c-purple);}

/* ================================================================
   Viewer Layout
   ================================================================ */
.viewer-layout{display:grid;grid-template-columns:1fr 320px;gap:16px;margin-top:12px;}
.viewer-content{min-height:400px;border:1px solid var(--c-border);border-radius:var(--r-xl);padding:16px;background:var(--c-bg);overflow:auto;color:var(--c-text);}
.viewer-sidebar{border:1px solid var(--c-border);border-radius:var(--r-xl);padding:16px;background:var(--c-bg-card);overflow-y:auto;max-height:80vh;box-shadow:0 2px 12px rgba(0,0,0,.1);}
.viewer-image{max-width:100%;max-height:70vh;display:block;margin:0 auto;border-radius:var(--r-md);cursor:zoom-in;}
.viewer-pdf{width:100%;height:70vh;border:none;border-radius:var(--r-md);}
.viewer-generic{text-align:center;padding:40px 20px;}
.viewer-generic-icon{font-size:48px;margin-bottom:12px;}
.viewer-generic-name{font-weight:600;margin-bottom:6px;}
.viewer-generic-size{color:var(--c-text-muted);margin-bottom:16px;}
.viewer-link{text-align:center;padding:40px 20px;}
.viewer-link-icon{font-size:48px;margin-bottom:12px;}
.viewer-link-url{color:var(--c-accent);word-break:break-all;}
.viewer-download-bar{margin-top:10px;text-align:center;}

/* Viewer: markdown */
.viewer-markdown{padding:8px;}
.viewer-markdown.md-editable{cursor:pointer;}
.viewer-markdown.md-editable:hover{background:rgba(255,255,255,.02);border-radius:var(--r-md);}
.md-edit-hint{font-size:12px;color:var(--c-text-faint);margin-top:12px;user-select:none;}
.md-rendered h2,.md-rendered h3,.md-rendered h4{margin:16px 0 8px;}
.md-rendered p{margin:6px 0;}
.md-rendered ul{padding-left:20px;}
.md-rendered code,.md-code{background:var(--c-code-bg);padding:2px 6px;border-radius:var(--r-sm);font-size:13px;color:var(--c-text);}
.md-rendered pre,.md-code-block{background:var(--c-code-bg);padding:12px;border-radius:var(--r-md);overflow-x:auto;font-size:13px;color:var(--c-text);}
.md-rendered a{color:var(--c-accent);}
.viewer-markdown-editor{display:flex;flex-direction:column;height:100%;}
.md-editor-toolbar{display:flex;align-items:center;justify-content:flex-end;gap:8px;margin-bottom:8px;}

/* Viewer: inline title editing */
.dv-title-editable{cursor:pointer;border-bottom:1px dashed var(--c-border-med);transition:border-color var(--t-norm);}
.dv-title-editable:hover{border-color:var(--c-accent);color:var(--c-accent);}
.dv-title-input{width:100%;padding:6px 10px;border-radius:var(--r-md);border:1px solid var(--c-accent);background:var(--c-bg);color:var(--c-text);font-size:inherit;font-weight:inherit;font-family:inherit;outline:none;}

/* Copy button + hash code */
.btn-copy{vertical-align:middle;margin-left:4px;}
.hash-code{font-size:11px;word-break:break-all;}
.meta-value code{background:var(--c-code-bg);padding:2px 6px;border-radius:var(--r-sm);font-size:12px;}

/* ================================================================
   Metadata Sidebar
   ================================================================ */
.meta-item{display:flex;justify-content:space-between;padding:4px 0;border-bottom:1px solid var(--c-code-bg);font-size:13px;}
.light-mode .meta-item{border-bottom-color:#e0e0e0;}
.meta-label{color:var(--c-text-muted);}
.meta-value{text-align:right;}

/* Versions */
.version-item{padding:8px;border:1px solid var(--c-border);border-radius:var(--r-md);margin-bottom:6px;background:var(--c-bg);}
.version-current{border-color:var(--c-green-bg);}
.light-mode .version-current{border-color:var(--c-green);}
.version-name{font-weight:600;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.version-meta{font-size:11px;color:var(--c-text-muted);margin:4px 0;}
.version-actions{display:flex;gap:6px;align-items:center;}

/* Pin items */
.pin-item{display:flex;justify-content:space-between;align-items:center;padding:4px 0;font-size:13px;}

/* Action buttons */
.action-buttons{display:flex;flex-direction:row;gap:6px;margin-top:8px;flex-wrap:wrap;}

/* View state badge */
.view-state-badge{margin:0;}
.frozen-note{margin:6px 0;padding:8px 12px;border-radius:var(--r-md);background:var(--c-blue-bg);border:1px solid var(--c-border-acc);color:var(--c-accent);font-size:13px;}

/* ================================================================
   Dialog / Modal
   ================================================================ */
dialog{border:none;background:transparent;padding:0;max-width:none;max-height:none;width:100vw;height:100vh;overflow:visible;}
dialog::backdrop{background:rgba(0,0,0,.7);}
dialog[open]{display:flex;align-items:center;justify-content:center;}
.light-mode dialog::backdrop{background:rgba(0,0,0,.4);}

/* Image lightbox */
.lightbox-dialog::backdrop{background:rgba(0,0,0,.9);}
.lightbox-dialog{cursor:zoom-out;opacity:0;transition:opacity var(--t-norm) ease;}
.lightbox-dialog.active{opacity:1;}
.lightbox-dialog img{max-width:95vw;max-height:95vh;object-fit:contain;border-radius:var(--r-sm);box-shadow:0 0 40px rgba(0,0,0,.5);}

/* Modal content */
.modal-content{background:var(--c-bg-panel);border:1px solid var(--c-border-med);border-radius:var(--r-xl);padding:28px;max-width:520px;width:92vw;max-height:80vh;overflow-y:auto;overflow-x:hidden;color:var(--c-text);box-shadow:0 16px 48px rgba(0,0,0,.3),0 0 0 1px rgba(74,222,128,.05);}
.light-mode .modal-content{box-shadow:0 16px 48px rgba(0,0,0,.1),0 0 0 1px rgba(26,86,219,.08);}
.modal-content h3{margin:0 0 16px 0;}
.modal-content p{margin:8px 0;color:var(--c-text-sub);font-size:14px;}
.modal-content ul{margin:8px 0;padding-left:20px;}
.modal-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:20px;}
.modal-target-btns{display:flex;gap:10px;margin-top:12px;}
.modal-target-btns .btn{flex:1;}
.modal-textarea{width:100%;min-height:80px;padding:10px;border-radius:var(--r-lg);border:1px solid var(--c-border-med);background:var(--c-bg);color:var(--c-text);font-size:14px;resize:vertical;box-sizing:border-box;outline:none;}
.modal-textarea:focus{border-color:var(--c-accent-green);box-shadow:0 0 0 2px rgba(74,222,128,.15);}
.light-mode .modal-textarea:focus{box-shadow:0 0 0 2px rgba(22,163,74,.15);}
.modal-input{width:100%;padding:10px;border-radius:var(--r-lg);border:1px solid var(--c-border-med);background:var(--c-bg);color:var(--c-text);font-size:14px;box-sizing:border-box;outline:none;}
.modal-input:focus{border-color:var(--c-accent-green);box-shadow:0 0 0 2px rgba(74,222,128,.15);}
.light-mode .modal-input:focus{box-shadow:0 0 0 2px rgba(22,163,74,.15);}
.modal-radio-group{display:flex;flex-direction:column;gap:10px;margin:12px 0;}
.modal-radio-group label{display:flex;align-items:center;gap:8px;cursor:pointer;font-size:14px;color:var(--c-text-sub);margin:0;}
.modal-radio-group input[type="radio"]{width:auto;margin:0;}
.modal-doc-list{color:var(--c-text-sub);font-size:13px;}

/* ================================================================
   Markdown Editor (EasyMDE dark theme)
   ================================================================ */
.md-save-status{font-size:13px;color:#888;padding:4px 8px;}
.EasyMDEContainer .CodeMirror{background:var(--c-bg);color:var(--c-text);border:1px solid var(--c-border-med);border-radius:0 0 var(--r-md) var(--r-md);font-family:'SF Mono',Monaco,Consolas,monospace;font-size:14px;line-height:1.6;}
.EasyMDEContainer .CodeMirror-cursor{border-left:1px solid var(--c-text);}
.EasyMDEContainer .CodeMirror-selected{background:#264f78;}
.light-mode .EasyMDEContainer .CodeMirror-selected{background:#b3d4fc;}
.EasyMDEContainer .CodeMirror-focused .CodeMirror-selected{background:#264f78;}
.light-mode .EasyMDEContainer .CodeMirror-focused .CodeMirror-selected{background:#b3d4fc;}
.EasyMDEContainer .editor-toolbar{background:#12131a;border:1px solid var(--c-border-med);border-radius:var(--r-md) var(--r-md) 0 0;opacity:1;}
.light-mode .EasyMDEContainer .editor-toolbar{background:#f2f3f7;}
.EasyMDEContainer .editor-toolbar button{color:var(--c-text-sub) !important;}
.EasyMDEContainer .editor-toolbar button:hover,.EasyMDEContainer .editor-toolbar button.active{background:var(--c-code-bg);border-color:#444;}
.light-mode .EasyMDEContainer .editor-toolbar button:hover,.light-mode .EasyMDEContainer .editor-toolbar button.active{background:#e0e4ee;border-color:#aaa;}
.EasyMDEContainer .editor-toolbar i.separator{border-left:1px solid var(--c-border-med);border-right:1px solid var(--c-border-med);}
.EasyMDEContainer .editor-preview{background:var(--c-bg);color:var(--c-text);}
.EasyMDEContainer .editor-preview-side{background:var(--c-bg);color:var(--c-text);border:1px solid var(--c-border-med);}
.EasyMDEContainer .CodeMirror .CodeMirror-code .cm-header{color:var(--c-accent);}
.EasyMDEContainer .CodeMirror .CodeMirror-code .cm-link{color:var(--c-accent);}
.EasyMDEContainer .CodeMirror .CodeMirror-code .cm-url{color:#888;}
.EasyMDEContainer .CodeMirror .CodeMirror-code .cm-comment{color:#6a9955;}
.EasyMDEContainer .CodeMirror .CodeMirror-code .cm-string{color:#ce9178;}

/* ================================================================
   jsTree — Modern Clean Theme Override
   ================================================================ */

/* --- Reset default theme backgrounds/lines --- */
.jstree-default .jstree-node,
.jstree-default .jstree-icon,
.jstree-default .jstree-node>.jstree-ocl{background-image:none !important;}
.jstree-default .jstree-node{margin-left:18px;}
.jstree-default>.jstree-container-ul>.jstree-node{margin-left:0;}

/* --- Open/close toggle (chevron) --- */
.jstree-default .jstree-ocl{width:20px;height:28px;line-height:28px;position:relative;}
.jstree-default .jstree-ocl::after{
  content:'';display:block;position:absolute;top:50%;left:50%;
  width:0;height:0;margin-top:-4px;margin-left:-3px;
  border-left:5px solid var(--c-text-muted);border-top:4px solid transparent;border-bottom:4px solid transparent;
  transition:transform var(--t-fast);
}
.jstree-default .jstree-open>.jstree-ocl::after{transform:rotate(90deg);margin-top:-3px;margin-left:-4px;}
.jstree-default .jstree-leaf>.jstree-ocl::after{display:none;}

/* --- Node anchors --- */
.jstree-default .jstree-anchor{
  height:auto;line-height:1.4;padding:4px 8px;
  border-radius:var(--r-sm);color:var(--c-text);font-size:13px;
  transition:background var(--t-fast),color var(--t-fast);
}
.jstree-default .jstree-anchor .jstree-icon{width:18px;height:18px;line-height:18px;margin-right:6px;}

/* Hover */
.jstree-default .jstree-hovered{
  background:var(--c-bg-hover) !important;color:var(--c-text) !important;
  border-radius:var(--r-sm);box-shadow:none !important;
}
/* Selected */
.jstree-default .jstree-clicked{
  background:var(--c-bg-accent) !important;color:var(--c-accent) !important;
  border-radius:var(--r-sm);box-shadow:none !important;
}

/* --- CSS-only icons (replace sprites) --- */
.jstree-default .jstree-icon.jstree-themeicon{background-image:none !important;position:relative;}

/* Folder icon */
.jstree-default .jstree-icon.jstree-themeicon.jstree-themeicon-custom[class*="jstree-folder"]{background-image:none !important;}
.jstree-default .jstree-anchor>.jstree-icon.jstree-folder::after,
.jstree-default [data-jstree*="folder"] .jstree-themeicon::after{
  content:'\1F4C1';font-size:14px;font-style:normal;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
}
/* File/doc icon */
.jstree-default .jstree-anchor>.jstree-icon.jstree-file::after{
  content:'\1F4C4';font-size:13px;font-style:normal;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
}
/* Milestone icon */
.jstree-default .jstree-anchor>.jstree-icon.tree-milestone-icon::after{
  content:'\2691';font-size:15px;font-style:normal;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:var(--c-accent);
}
/* Todo icon */
.jstree-default .jstree-anchor>.jstree-icon.tree-todo-icon::after{
  content:'\25CB';font-size:14px;font-style:normal;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:var(--c-accent-green);
}

/* --- Wholerow (subtle) --- */
.jstree-default .jstree-wholerow{height:0;}

/* --- No connection lines — clean indentation only --- */
.jstree-default .jstree-children{margin-left:0;padding-left:0;}

/* --- Light mode refinements --- */
.light-mode .jstree-default .jstree-hovered{background:var(--c-bg-hover) !important;}
.light-mode .jstree-default .jstree-clicked{background:var(--c-bg-accent) !important;color:var(--c-accent) !important;}
.light-mode .jstree-default .jstree-ocl::after{border-left-color:var(--c-text-dim);}

/* ================================================================
   jsTree Context Menu
   ================================================================ */
.jstree-contextmenu{z-index:2000;}
.vakata-context,.vakata-context ul{
  background:var(--c-bg-panel) !important;border:1px solid var(--c-border-med) !important;
  border-radius:var(--r-md) !important;box-shadow:0 4px 16px rgba(0,0,0,.5) !important;
  padding:4px 0 !important;
}
.light-mode .vakata-context,.light-mode .vakata-context ul{
  box-shadow:0 4px 16px rgba(0,0,0,.08) !important;border-color:var(--c-border) !important;
}
.vakata-context li a{color:var(--c-text) !important;padding:6px 16px 6px 2.4em !important;font-size:13px !important;}
.vakata-context li a:hover{background:var(--c-bg-hover) !important;color:var(--c-text) !important;border-radius:var(--r-sm) !important;}
.vakata-context li a i{display:inline-block;width:20px;text-align:center;margin-right:6px;}
.light-mode .vakata-context li a:hover{background:var(--c-bg-hover) !important;color:var(--c-text) !important;}
.vakata-context li a .vakata-contextmenu-sep{border-top:1px solid var(--c-border-med) !important;}
.vakata-context .vakata-context-hover>a{background:var(--c-bg-hover) !important;}
.light-mode .vakata-context .vakata-context-hover>a{background:var(--c-bg-hover) !important;}

/* Root context menu */
.root-context-menu{background:var(--c-bg-panel);border:1px solid var(--c-border-med);border-radius:var(--r-md);box-shadow:0 4px 16px rgba(0,0,0,.5);padding:4px 0;z-index:2000;min-width:180px;}
.light-mode .root-context-menu{box-shadow:0 4px 16px rgba(0,0,0,.08);border-color:var(--c-border);}
.rcm-item{color:var(--c-text);padding:6px 16px;font-size:13px;cursor:pointer;border-radius:var(--r-sm);margin:0 4px;}
.rcm-item i.fa{display:inline-block;width:20px;text-align:center;margin-right:6px;}
.rcm-item:hover{background:var(--c-bg-hover);}

/* jsTree DnD */
#jstree-dnd{background:var(--c-bg-panel);border:1px solid var(--c-border-med);border-radius:var(--r-md);padding:4px 10px;color:var(--c-text);font-size:13px;box-shadow:0 4px 12px rgba(0,0,0,.15);}
.light-mode #jstree-dnd{box-shadow:0 4px 12px rgba(0,0,0,.08);}

/* ================================================================
   Inbox
   ================================================================ */
.inbox-lock-banner{margin:8px 0;padding:10px 14px;border-radius:var(--r-lg);background:var(--c-red-bg);border:1px solid var(--c-danger-border);color:var(--c-red);font-weight:600;cursor:pointer;}
.inbox-lock-banner:hover{background:#4a1a1a;}
.light-mode .inbox-lock-banner{background:var(--c-red-bg);border-color:var(--c-red);color:var(--c-red);}
.inbox-lock-info{margin-bottom:12px;padding:10px 14px;border-radius:var(--r-lg);background:var(--c-code-bg);border:1px solid var(--c-border-med);color:var(--c-text-sub);font-size:13px;}
.light-mode .inbox-lock-info{background:#f0f4ff;}
.inbox-count{font-size:14px;color:var(--c-text-muted);font-weight:400;}
.inbox-item-main{flex:1;cursor:pointer;min-width:0;}
.inbox-item-title{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.inbox-item-meta{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:4px;font-size:12px;color:var(--c-text-muted);}
.inbox-item-actions{display:flex;gap:6px;flex-shrink:0;flex-wrap:wrap;}
.inbox-age-warn{color:var(--c-orange);}
.inbox-age-critical{color:var(--c-red);}
.btn-inbox-pin{background:var(--c-blue-bg);border-color:var(--c-border-acc);color:var(--c-accent);}
.btn-inbox-pin:hover{background:#253d5a;}
.light-mode .btn-inbox-pin:hover{background:#c8dbfa;}

/* Pin overlay */
.pin-overlay-tree{min-height:200px;max-height:400px;overflow-y:auto;border:1px solid var(--c-border-med);border-radius:var(--r-lg);padding:10px;background:var(--c-bg-card);margin:12px 0;}
.light-mode .pin-overlay-tree{border-color:var(--c-border);background:#fff;}
.pin-overlay-doc{padding:8px 12px;border-radius:var(--r-md);background:var(--c-code-bg);border:1px solid var(--c-border-med);margin-bottom:12px;font-size:13px;}
.light-mode .pin-overlay-doc{background:#f0f4ff;}

/* ================================================================
   Quicklist Menu
   ================================================================ */
.ql-menu{background:var(--c-bg-panel);border:1px solid var(--c-border-med);border-radius:var(--r-lg);padding:4px 0;min-width:220px;box-shadow:0 8px 24px rgba(0,0,0,.5);}
.ql-menu-item{display:flex;align-items:center;gap:8px;padding:8px 14px;cursor:pointer;font-size:13px;color:var(--c-text);transition:background var(--t-fast);}
.ql-menu-item:hover{background:var(--c-bg-hover);}
.light-mode .ql-menu-item:hover{background:#f0f4ff;}
.ql-menu-item:first-child{border-radius:var(--r-lg) var(--r-lg) 0 0;}
.ql-menu-item:last-child{border-radius:0 0 var(--r-lg) var(--r-lg);}
.ql-menu-icon{font-size:16px;width:22px;text-align:center;flex-shrink:0;}
.ql-menu-label{flex:1;}

/* ================================================================
   Filter Bar / Bulk Bar
   ================================================================ */
.filter-bar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:12px;padding:10px 12px;border:1px solid var(--c-border);border-radius:var(--r-lg);background:var(--c-bg-card);}
.filter-checkbox{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--c-text-sub);cursor:pointer;white-space:nowrap;margin:0;}
.filter-checkbox input[type="checkbox"]{width:auto;margin:0;cursor:pointer;}
.bulk-bar{display:flex;gap:10px;align-items:center;margin-top:8px;padding:8px 12px;border:1px solid var(--c-border-acc);border-radius:var(--r-lg);background:var(--c-bg-accent);}
.bulk-bar span{font-size:13px;color:var(--c-accent);font-weight:600;}

/* ================================================================
   Document Table
   ================================================================ */
.doc-table{width:100%;border-collapse:collapse;margin-top:12px;}
.doc-table thead{position:sticky;top:0;}
.doc-table th{padding:8px 10px;text-align:left;font-size:12px;font-weight:600;color:var(--c-text-muted);border-bottom:2px solid var(--c-border);background:var(--c-bg-panel);text-transform:uppercase;letter-spacing:.3px;white-space:nowrap;}
.doc-table td{padding:8px 10px;border-bottom:1px solid var(--c-code-bg);font-size:13px;vertical-align:middle;}
.light-mode .doc-table td{border-bottom-color:#e8e8e8;}
.doc-table tbody tr{transition:background var(--t-fast);}
.doc-table tbody tr:hover{background:var(--c-bg-btn);box-shadow:inset 3px 0 0 var(--c-accent-green);}
.light-mode .doc-table tbody tr:hover{background:#f0f8f5;box-shadow:inset 3px 0 0 var(--c-accent-green);}
.doc-table .col-check{width:36px;text-align:center;}
.doc-table .col-check input[type="checkbox"]{width:auto;margin:0;cursor:pointer;}
.doc-table .col-type{width:80px;}
.doc-table .col-status{width:120px;}
.doc-table .col-pins{width:60px;text-align:center;}
.doc-table .col-modified{width:140px;}
.doc-table .col-actions{width:100px;text-align:right;}
.doc-table .doc-title-cell{display:flex;align-items:center;gap:8px;cursor:pointer;min-width:0;}
.doc-table .doc-title-cell:hover .doc-title-text{color:var(--c-accent);}
.doc-title-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:600;}

/* Sortable columns */
.sortable{cursor:pointer;user-select:none;position:relative;padding-right:18px !important;}
.sortable:hover{color:var(--c-text);}
.sortable::after{content:'';position:absolute;right:4px;top:50%;transform:translateY(-50%);border:4px solid transparent;border-bottom-color:var(--c-text-faint);margin-top:-6px;}
.sortable::before{content:'';position:absolute;right:4px;top:50%;transform:translateY(-50%);border:4px solid transparent;border-top-color:var(--c-text-faint);margin-top:2px;}
.sortable.sort-asc::after{border-bottom-color:var(--c-accent);}
.sortable.sort-asc::before{border-top-color:var(--c-text-faint);}
.sortable.sort-desc::before{border-top-color:var(--c-accent);}
.sortable.sort-desc::after{border-bottom-color:var(--c-text-faint);}

/* Pagination */
.pagination{display:flex;gap:6px;align-items:center;justify-content:center;margin-top:12px;padding:8px 0;}
.pagination .page-btn{padding:6px 12px;border-radius:var(--r-md);border:1px solid var(--c-border-med);background:var(--c-bg-btn);color:var(--c-text);cursor:pointer;font-size:12px;}
.pagination .page-btn:hover{background:var(--c-bg-hover);}
.pagination .page-btn.active{background:var(--c-gradient);border-color:transparent;color:#fff;font-weight:600;}
.pagination .page-btn:disabled{opacity:0.4;cursor:not-allowed;}
.pagination .page-info{font-size:12px;color:var(--c-text-muted);margin:0 8px;}

/* ================================================================
   Global Search
   ================================================================ */
.ws-sidebar-globalsearch-btn{width:100%;margin-top:8px;padding:8px 12px;border-radius:var(--r-md);border:1px solid var(--c-border-med);background:var(--c-bg);color:var(--c-text-muted);font-size:13px;cursor:pointer;text-align:left;transition:border-color var(--t-fast),color var(--t-fast),background var(--t-fast);}
.ws-sidebar-globalsearch-btn:hover{border-color:var(--c-accent);color:var(--c-accent);background:#111320;}
.light-mode .ws-sidebar-globalsearch-btn:hover{background:#eef2ff;}
.gs-dialog{align-items:flex-start !important;padding-top:min(12vh,100px);}
.gsoverlay-box{width:600px;max-width:92vw;background:var(--c-bg-panel);border:1px solid var(--c-border-med);border-radius:var(--r-xl);box-shadow:0 16px 48px rgba(0,0,0,.6);display:flex;flex-direction:column;max-height:75vh;overflow:hidden;}
.gsoverlay-header{display:flex;align-items:center;gap:8px;padding:16px 16px 0;border-bottom:none;}
.gsoverlay-input{flex:1;padding:10px 14px;border-radius:var(--r-lg);border:1px solid var(--c-border-med);background:var(--c-bg);color:var(--c-text);font-size:15px;outline:none;}
.gsoverlay-input:focus{border-color:var(--c-accent);}
.gsoverlay-input::placeholder{color:#666;}
.gsoverlay-close{background:transparent;border:1px solid var(--c-border-med);border-radius:var(--r-md);color:var(--c-text-muted);cursor:pointer;font-size:16px;width:36px;height:36px;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:border-color var(--t-fast),color var(--t-fast);}
.gsoverlay-close:hover{border-color:var(--c-accent);color:var(--c-accent);}
.gsoverlay-quicklists{display:flex;flex-wrap:wrap;gap:8px;padding:14px 16px;border-bottom:1px solid var(--c-code-bg);}
.light-mode .gsoverlay-quicklists{border-color:#e8e8e8;}
.gsoverlay-ql-btn{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:var(--r-md);border:1px solid var(--c-border-med);background:var(--c-bg-btn);color:var(--c-text-sub);font-size:12px;cursor:pointer;transition:border-color var(--t-fast),background var(--t-fast),color var(--t-fast);white-space:nowrap;}
.gsoverlay-ql-btn:hover{border-color:var(--c-accent-green);color:var(--c-accent-green);background:var(--c-bg-accent);}
.gsoverlay-ql-icon{font-size:14px;}
.gsoverlay-ql-count{font-size:11px;padding:1px 6px;border-radius:var(--r-sm);margin-left:2px;}
.gsoverlay-results{overflow-y:auto;flex:1;min-height:0;}
.gsoverlay-results .gs-item{display:flex;align-items:center;gap:10px;padding:10px 16px;cursor:pointer;border-bottom:1px solid var(--c-code-bg);transition:background var(--t-fast);color:var(--c-text);}
.gsoverlay-results .gs-item:hover{background:var(--c-bg-hover);}
.light-mode .gsoverlay-results .gs-item:hover{background:#f0f4ff;}
.gsoverlay-results .gs-item:last-child{border-bottom:none;}
.light-mode .gsoverlay-results .gs-item{border-color:#e8e8e8;}
.gs-item-icon{font-size:18px;width:28px;text-align:center;flex-shrink:0;}
.gs-item-main{flex:1;min-width:0;}
.gs-item-title{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.gs-item-meta{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-top:4px;font-size:12px;color:var(--c-text-muted);}
.gs-item-match{font-size:11px;color:var(--c-accent);margin-top:2px;}
.gs-empty{padding:16px;text-align:center;color:var(--c-text-muted);font-size:13px;}
.gs-section-label{padding:10px 16px 6px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--c-text-faint);}
.light-mode .gs-section-label{color:#888;}

/* ================================================================
   3-Pane Layout (Sidebar)
   ================================================================ */
.ws-panel{padding:0;border-radius:0;border:none;background:transparent;position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:100;overflow:hidden;}
.ws-layout{display:grid;grid-template-columns:220px 1fr;gap:0;height:100vh;}
.ws-layout.has-viewer{grid-template-columns:220px 1fr 1fr;}

/* Sidebar */
.ws-sidebar{border-right:1px solid var(--c-border);padding:0;background:var(--c-bg-card);overflow-y:auto;height:100vh;display:flex;flex-direction:column;}
.light-mode .ws-sidebar{background:#f2f8f6;}
.ws-sidebar-project{padding:14px 16px 0 16px;border-bottom:1px solid var(--c-border);}
.ws-sidebar-project-title{margin:0;font-size:15px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--c-text);}
.ws-sidebar-project-select{background:#0e1419;color:var(--c-text);border:1px solid var(--c-border-med);border-radius:var(--r-sm);padding:4px 8px;font-size:14px;font-weight:600;width:100%;cursor:pointer;outline:none;text-overflow:ellipsis;}
.light-mode .ws-sidebar-project-select{background:#fff;}
.ws-sidebar-project-select:hover{border-color:var(--c-border-acc);}
.ws-sidebar-project-select:focus{border-color:var(--c-accent-green);}
.ws-sidebar-section{padding:4px 0;border-bottom:1px solid var(--c-code-bg);}
.light-mode .ws-sidebar-section{border-bottom-color:#d0dcd8;}
.ws-sidebar-header{padding:8px 16px 4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--c-accent-green);opacity:.7;}
.light-mode .ws-sidebar-header{color:var(--c-accent-green);opacity:.8;}
.ws-sidebar-toggle{cursor:pointer;user-select:none;transition:color var(--t-fast);}
.ws-sidebar-toggle:hover{color:var(--c-text-sub);}
.ws-sidebar-item{display:flex;align-items:center;justify-content:space-between;padding:8px 16px;cursor:pointer;font-size:13px;color:var(--c-text-sub);transition:background var(--t-fast),border-color var(--t-fast);user-select:none;border-left:3px solid transparent;}
.ws-sidebar-item:hover{background:var(--c-bg-hover);border-left-color:var(--c-accent-green);}
.light-mode .ws-sidebar-item:hover{background:#daf0ea;}
.ws-sidebar-item.active{background:var(--c-bg-accent);color:var(--c-accent);border-image:var(--c-gradient) 1;padding-left:13px;}
.ws-sidebar-list{}
.ws-sidebar-view{display:block;padding:6px 16px 6px 24px;cursor:pointer;font-size:13px;color:var(--c-text-sub);transition:background var(--t-fast);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.ws-sidebar-view:hover{background:var(--c-bg-hover);}
.light-mode .ws-sidebar-view:hover{background:#daf0ea;}
.ws-sidebar-view.active{background:var(--c-bg-accent);color:var(--c-accent);border-left:3px solid transparent;border-image:var(--c-gradient) 1;padding-left:21px;}
.ws-sidebar-view .ws-view-badge{display:inline-block;margin-left:6px;font-size:10px;padding:1px 5px;border-radius:var(--r-sm);}
.ws-sidebar-view-icon{font-size:10px;color:var(--c-text-faint);margin-right:2px;}
.ws-sidebar-view.active .ws-sidebar-view-icon{color:var(--c-accent);}
.ws-sidebar-add-row{display:flex;gap:6px;margin:6px 16px 8px;}
.ws-sidebar-add{flex:1;display:block;text-align:center;background:transparent;border:1px dashed var(--c-border-med);color:#777;font-size:12px;padding:5px 6px;margin:0;}
.light-mode .ws-sidebar-add{border-color:#bbb;color:#888;}
.ws-sidebar-add:hover{border-color:var(--c-accent-green);color:var(--c-accent-green);background:var(--c-bg);}
.ws-sidebar-upload-btn{border-style:solid;border-color:var(--c-border-acc);color:var(--c-accent-green);font-weight:600;}
.light-mode .ws-sidebar-upload-btn{border-color:var(--c-border-acc);color:var(--c-accent-green);}
.ws-sidebar-upload-btn:hover{background:var(--c-bg-accent);border-color:var(--c-accent-green);}
.light-mode .ws-sidebar-upload-btn:hover{background:#daf5ea;}
.ws-sidebar-sub-actions{padding:2px 0 4px 0;}
.ws-sidebar-sub-btn{display:block;width:100%;text-align:left;background:transparent;border:none;color:#888;font-size:12px;padding:4px 16px 4px 32px;cursor:pointer;transition:background var(--t-fast),color var(--t-fast);}
.light-mode .ws-sidebar-sub-btn{color:#777;}
.ws-sidebar-sub-btn:hover{background:var(--c-bg-hover);color:var(--c-accent-green);}
.light-mode .ws-sidebar-sub-btn:hover{background:#daf0ea;}
.ws-sidebar-quick-create{display:flex;gap:0;padding:4px 0 0 0;margin:0 -16px;}
.ws-sidebar-qc-btn{flex:1;background:transparent;border:none;color:var(--c-text);font-size:11px;font-weight:700;padding:6px 4px;cursor:pointer;border-radius:0;text-align:center;transition:background var(--t-fast),color var(--t-fast);}
.ws-sidebar-qc-btn i{display:block;margin-bottom:2px;}
.light-mode .ws-sidebar-qc-btn{color:var(--c-text);}
.ws-sidebar-qc-btn:hover{color:var(--c-accent-green);background:var(--c-bg);}
.ws-sidebar-project-header{display:flex;align-items:center;gap:8px;}
.ws-back-btn{background:transparent;border:1px solid var(--c-border-med);border-radius:var(--r-md);color:var(--c-text-sub);cursor:pointer;padding:4px 8px;font-size:14px;line-height:1;flex-shrink:0;transition:border-color var(--t-fast),color var(--t-fast);}
.ws-back-btn:hover{border-color:var(--c-accent);color:var(--c-accent);}
.ws-sidebar-search{margin-top:8px;position:relative;}
.sidebar-search-input{width:100%;padding:6px 10px;border-radius:var(--r-md);border:1px solid var(--c-border-med);background:var(--c-bg);color:var(--c-text);font-size:12px;box-sizing:border-box;}
.sidebar-search-input:focus{border-color:var(--c-accent-green);outline:none;box-shadow:0 0 0 2px rgba(74,222,128,.15);}

/* FABs (account, settings, theme, sidebar toggle) */
.account-fab,.settings-fab,.theme-fab,.ai-fab,.timer-fab,.ws-sidebar-toggle-btn{position:fixed;bottom:16px;z-index:901;width:44px;height:44px;border-radius:50%;background:var(--c-fab-bg);border:1px solid var(--c-border-acc);color:var(--c-accent);cursor:pointer;box-shadow:var(--c-fab-shadow);display:flex;align-items:center;justify-content:center;transition:background var(--t-fast),border-color var(--t-fast),box-shadow var(--t-fast);}
.account-fab:hover,.settings-fab:hover,.theme-fab:hover,.ai-fab:hover,.timer-fab:hover,.ws-sidebar-toggle-btn:hover{background:#1a2a2a;border-color:var(--c-accent-green);box-shadow:0 4px 16px rgba(74,222,128,.15);}
.light-mode .account-fab:hover,.light-mode .settings-fab:hover,.light-mode .theme-fab:hover,.light-mode .ai-fab:hover,.light-mode .timer-fab:hover,.light-mode .ws-sidebar-toggle-btn:hover{background:#eaf8f2;border-color:var(--c-accent-green);box-shadow:0 4px 16px rgba(22,163,74,.12);}
.account-fab{left:16px;font-size:18px;font-weight:700;text-transform:uppercase;}
.settings-fab{left:70px;font-size:20px;}
.theme-fab{left:124px;font-size:20px;}
.ai-fab{left:178px;font-size:20px;}
.timer-fab{right:16px;font-size:18px;position:fixed;}
.timer-badge{position:absolute;top:-4px;right:-4px;min-width:18px;height:18px;border-radius:9px;background:var(--c-accent);color:#000;font-size:10px;font-weight:700;display:flex;align-items:center;justify-content:center;padding:0 4px;}

/* Request Timer Dialog */
.timer-dialog{border:none;background:transparent;padding:0;max-width:none;max-height:none;width:100vw;height:100vh;overflow:visible;z-index:1000;}
.timer-dialog::backdrop{background:rgba(0,0,0,.5);}
.timer-dialog[open]{display:flex;align-items:flex-end;justify-content:flex-end;padding:16px;}
.timer-dialog-inner{background:var(--c-bg-panel);border:1px solid var(--c-border-med);border-radius:var(--r-xl);padding:20px;width:480px;max-width:95vw;max-height:70vh;display:flex;flex-direction:column;box-shadow:0 16px 48px rgba(0,0,0,.3);margin-bottom:50px;}
.light-mode .timer-dialog-inner{box-shadow:0 16px 48px rgba(0,0,0,.1);}
.timer-dialog-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;}
.timer-dialog-header h3{margin:0;font-size:16px;}
.timer-dialog-actions{display:flex;gap:6px;}
.timer-stats{display:flex;gap:12px;margin-bottom:14px;padding:10px;background:var(--c-bg-card);border-radius:var(--r-md);border:1px solid var(--c-border);}
.timer-stat{flex:1;text-align:center;}
.timer-stat-val{display:block;font-size:18px;font-weight:700;color:var(--c-text);}
.timer-stat-label{display:block;font-size:11px;color:var(--c-text-muted);margin-top:2px;}
.timer-list{overflow-y:auto;flex:1;}
.timer-row{position:relative;border-bottom:1px solid var(--c-border);cursor:pointer;transition:background var(--t-fast);}
.timer-row:hover{background:var(--c-bg-hover);}
.timer-row-bar{position:absolute;left:0;top:0;bottom:0;opacity:.1;border-radius:2px;}
.timer-row-content{position:relative;display:flex;align-items:center;gap:10px;padding:8px 10px;font-size:13px;}
.timer-row-action{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--c-text);}
.timer-row-ms{font-weight:700;font-variant-numeric:tabular-nums;min-width:70px;text-align:right;}
.timer-row-time{color:var(--c-text-muted);font-size:11px;min-width:65px;text-align:right;}
.timer-row-segments{padding:4px 10px 8px 20px;font-size:12px;}
.timer-seg{padding:2px 0;color:var(--c-text-sub);}
.timer-empty{padding:40px 20px;text-align:center;color:var(--c-text-muted);font-size:14px;}
.ws-sidebar-toggle-btn{display:none;bottom:70px;left:16px;font-size:20px;}

/* AI Dialog */
.ai-dialog{border:none;background:transparent;padding:0;max-width:none;max-height:none;width:100vw;height:100vh;overflow:visible;z-index:1000;}
.ai-dialog::backdrop{background:rgba(0,0,0,.7);}
.light-mode .ai-dialog::backdrop{background:rgba(0,0,0,.4);}
.ai-dialog[open]{display:flex;align-items:flex-start;justify-content:center;padding-top:min(8vh,80px);}
.ai-overlay-box{background:var(--c-bg-panel);border:1px solid var(--c-border-med);border-radius:var(--r-xl);width:700px;max-width:95vw;max-height:80vh;display:flex;flex-direction:column;box-shadow:0 16px 48px rgba(0,0,0,.3);overflow:hidden;}
.light-mode .ai-overlay-box{box-shadow:0 16px 48px rgba(0,0,0,.1);}
.ai-overlay-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid var(--c-border);}
.ai-overlay-title{font-size:16px;font-weight:700;color:var(--c-text);display:flex;align-items:center;gap:8px;}
.ai-overlay-title i{color:var(--c-accent);}
.ai-overlay-tabs{display:flex;border-bottom:1px solid var(--c-border);padding:0 20px;gap:4px;}
.ai-tab{background:none;border:none;border-bottom:2px solid transparent;padding:10px 16px;font-size:13px;color:var(--c-text-muted);cursor:pointer;transition:color var(--t-fast),border-color var(--t-fast);}
.ai-tab:hover{color:var(--c-text);}
.ai-tab-active{color:var(--c-accent);border-bottom-color:var(--c-accent);font-weight:600;}
.ai-overlay-content{overflow-y:auto;flex:1;padding:16px 20px;}
.ai-suggestion-card{background:var(--c-bg-card);border:1px solid var(--c-border);border-radius:var(--r-md);padding:14px;margin-bottom:10px;transition:border-color var(--t-fast);}
.ai-suggestion-card:hover{border-color:var(--c-border-acc);}
.ai-suggestion-docs{display:flex;align-items:center;gap:8px;margin-bottom:6px;flex-wrap:wrap;}
.ai-suggestion-doc{color:var(--c-accent);cursor:pointer;font-weight:600;font-size:13px;}
.ai-suggestion-doc:hover{text-decoration:underline;}
.ai-suggestion-arrow{color:var(--c-text-muted);font-size:12px;}
.ai-suggestion-type{font-size:11px;color:var(--c-text-sub);background:var(--c-bg-hover);padding:2px 8px;border-radius:var(--r-sm);white-space:nowrap;}
.ai-suggestion-reason{font-size:12px;color:var(--c-text-muted);margin-bottom:8px;line-height:1.4;}
.ai-suggestion-confidence{font-size:11px;color:var(--c-text-sub);margin-bottom:8px;}
.ai-suggestion-actions{display:flex;gap:8px;}
.ai-suggestion-actions .btn{font-size:12px;padding:4px 12px;}
.ai-empty{padding:30px 20px;text-align:center;color:var(--c-text-muted);font-size:14px;}
.ai-loading{padding:30px 20px;text-align:center;color:var(--c-text-muted);}
.ai-section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;}
.ai-section-title{font-size:14px;font-weight:600;color:var(--c-text);}
.ai-stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;margin-bottom:16px;}
.ai-stat-card{background:var(--c-bg-card);border:1px solid var(--c-border);border-radius:var(--r-md);padding:12px;text-align:center;}
.ai-stat-val{font-size:20px;font-weight:700;color:var(--c-text);display:block;}
.ai-stat-label{font-size:11px;color:var(--c-text-muted);margin-top:2px;display:block;}
.ai-staleness-row{display:flex;align-items:center;gap:10px;padding:8px 10px;border-bottom:1px solid var(--c-border);font-size:13px;}
.ai-staleness-row:last-child{border-bottom:none;}
.ai-staleness-title{flex:1;color:var(--c-accent);cursor:pointer;}
.ai-staleness-title:hover{text-decoration:underline;}

/* Middle Pane */
.ws-middle{padding:20px 24px;overflow-y:auto;overflow-x:hidden;height:100vh;background:var(--c-bg-panel);min-width:0;}
.ws-middle-section{display:block;}

/* Right Pane (Viewer) */
.ws-right{border-left:1px solid var(--c-border);overflow-y:auto;height:100vh;padding:20px;background:var(--c-bg-panel);}
.ws-viewer-inner{}

/* Viewer Tab Navigation */
.dv-tabs{display:flex;gap:0;border-bottom:2px solid var(--c-border);margin-top:12px;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;}
.dv-tabs::-webkit-scrollbar{display:none;}
.dv-tab{padding:8px 14px;font-size:12px;font-weight:500;color:var(--c-text-muted);background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-2px;cursor:pointer;white-space:nowrap;transition:color var(--t-fast),border-color var(--t-fast);}
.dv-tab:hover{color:var(--c-text);}
.dv-tab.active{color:var(--c-accent);border-bottom-color:var(--c-accent);}
.dv-tab i{margin-right:4px;}
.dv-tab-badge{font-size:10px;background:var(--c-code-bg);color:var(--c-text-muted);padding:1px 5px;border-radius:8px;margin-left:4px;}
.dv-tab.active .dv-tab-badge{background:var(--c-accent);color:#fff;}

/* Tab Panes */
.dv-tab-pane{display:none;padding:16px 0;animation:dvFadeIn .15s ease;}
.dv-tab-pane.active{display:block;}
@keyframes dvFadeIn{from{opacity:0;transform:translateY(4px);}to{opacity:1;transform:translateY(0);}}

/* Tab pane content area */
.dv-tab-pane .viewer-content{min-height:200px;border:1px solid var(--c-border);border-radius:var(--r-xl);padding:16px;background:var(--c-bg);overflow:auto;}

/* Section titles inside tabs (replaces dv-toggle) */
.dv-section-title{font-size:13px;font-weight:600;color:var(--c-text-muted);text-transform:uppercase;letter-spacing:.5px;margin:20px 0 8px;padding-bottom:6px;border-bottom:1px solid var(--c-code-bg);}
.dv-section-title:first-child{margin-top:0;}

/* Viewer adjustments in right pane */
.ws-right .viewer-image{max-height:40vh;}
.ws-right .viewer-pdf{height:50vh;}

/* Hide old toolbar */
.ws-old-toolbar{display:none !important;}

/* ================================================================
   Responsive
   ================================================================ */
@media (max-width:1200px){
  .ws-layout.has-viewer{grid-template-columns:200px 1fr 1fr;}
}
@media (max-width:900px){
  .ws-layout{grid-template-columns:1fr;}
  .ws-layout.has-viewer{grid-template-columns:1fr;}
  .ws-sidebar{display:none;}
  .ws-sidebar.ws-sidebar-open{display:flex;position:fixed;top:0;left:0;bottom:0;width:260px;z-index:900;box-shadow:4px 0 16px rgba(0,0,0,.5);}
  .ws-right{border-left:none;border-top:1px solid var(--c-border);}
  .viewer-layout{grid-template-columns:1fr;}
  .row-actions{flex-wrap:wrap;}
  .doc-table .col-status,.doc-table .col-pins,.doc-table .col-modified{display:none;}
  .doc-table th.col-status,.doc-table th.col-pins,.doc-table th.col-modified{display:none;}
  .ws-sidebar-toggle-btn{display:flex;}
}

/* ================================================================
   Settings
   ================================================================ */
#settings,#section-account-settings{max-width:700px;margin:0 auto;padding:36px 28px;}
.settings-header{display:flex;align-items:center;gap:12px;margin-bottom:24px;}
.settings-header h2{margin:0;}
.settings-section{border:1px solid var(--c-border);border-radius:12px;background:var(--c-bg-panel);margin-bottom:16px;overflow:hidden;box-shadow:0 2px 12px rgba(0,0,0,.1);}
.settings-section-header{display:flex;justify-content:space-between;align-items:center;padding:14px 18px;cursor:pointer;user-select:none;font-weight:600;font-size:15px;transition:background var(--t-fast);}
.settings-section-header:hover{background:var(--c-bg-btn);}
.light-mode .settings-section-header:hover{background:#f0f4ff;}
.settings-chevron{font-size:12px;color:var(--c-text-muted);transition:transform var(--t-fast);}
.settings-section-body{padding:4px 18px 18px;}
.settings-form-group{margin-bottom:14px;max-width:400px;}
.settings-form-group label{display:block;margin-bottom:4px;font-size:13px;color:var(--c-text-sub);}
.light-mode .settings-form-group label{color:var(--c-text-faint);}
.settings-form-group input,.settings-form-group select,.settings-textarea{width:100%;padding:9px 12px;border-radius:var(--r-md);border:1px solid var(--c-border-med);background:var(--c-bg);color:var(--c-text);font-size:14px;box-sizing:border-box;}
.settings-form-group input:disabled{opacity:.5;cursor:not-allowed;}
.settings-textarea{resize:vertical;min-height:60px;font-family:inherit;}
.settings-hint{display:block;margin-top:4px;font-size:12px;color:#666;}
.light-mode .settings-hint{color:#888;}
.settings-divider{border:0;border-top:1px solid var(--c-border);margin:18px 0;}
.light-mode .settings-divider{border-top-color:#ddd;}

/* ================================================================
   Logo
   ================================================================ */
.auth-logo{text-align:center;margin-bottom:20px;}
.projects-logo img{height:80px;}
.auth-logo img{height:48px;}
.logo-light{display:none;}

/* ================================================================
   Comments
   ================================================================ */
.comment-item{padding:8px 10px;border:1px solid var(--c-border);border-radius:var(--r-md);margin-bottom:6px;background:var(--c-bg);}
.comment-reply{margin-left:20px;}
.comment-header{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--c-text-muted);margin-bottom:4px;}
.comment-author{font-weight:600;color:var(--c-text-sub);}
.light-mode .comment-author{color:#333;}
.comment-body{font-size:13px;color:var(--c-text);white-space:pre-wrap;word-break:break-word;}
.comment-actions{display:flex;gap:6px;margin-top:4px;}
.comment-textarea{width:100%;padding:8px 10px;border-radius:var(--r-md);border:1px solid var(--c-border-med);background:var(--c-bg);color:var(--c-text);font-size:13px;resize:vertical;min-height:40px;box-sizing:border-box;font-family:inherit;}
.comment-action-btn{margin-top:6px;}
.comment-reply-info{font-size:12px;color:var(--c-accent);margin-bottom:4px;display:flex;align-items:center;gap:6px;}
.comment-reply-info .cancel-reply{cursor:pointer;color:var(--c-red);font-size:11px;}

/* ================================================================
   Milestones & Todos
   ================================================================ */
.milestone-strip{display:flex;gap:10px;overflow-x:auto;padding:4px 0 8px;scrollbar-width:thin;}
.milestone-strip::-webkit-scrollbar{height:6px;}
.milestone-strip::-webkit-scrollbar-thumb{background:var(--c-border-med);border-radius:3px;}
.milestone-card{padding:12px 16px;border:1px solid var(--c-border);border-radius:var(--r-lg);background:var(--c-bg-card);cursor:pointer;transition:border-color var(--t-fast),box-shadow var(--t-fast),transform var(--t-fast);min-width:180px;max-width:240px;flex-shrink:0;}
.milestone-card:hover{border-color:var(--c-border-acc);box-shadow:0 4px 12px rgba(74,222,128,.08);transform:translateY(-1px);}
.light-mode .milestone-card:hover{box-shadow:0 4px 12px rgba(26,86,219,.08);}
.milestone-card.ms-active{border-color:#4ade80;background:#0f1419;}
.light-mode .milestone-card.ms-active{border-color:#22c55e;background:#f0fdf4;}
.milestone-card-header{display:flex;align-items:center;justify-content:space-between;gap:8px;}
.milestone-card-title{font-weight:600;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;}
.milestone-card-meta{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:6px;font-size:12px;color:var(--c-text-muted);}
.milestone-progress{display:flex;align-items:center;gap:10px;}
.milestone-progress-bar{flex:1;height:6px;background:var(--c-code-bg);border-radius:3px;overflow:hidden;}
.light-mode .milestone-progress-bar{background:#e0e0e0;}
.milestone-progress-fill{height:100%;background:#4ade80;border-radius:3px;transition:width .3s;}
.milestone-progress-text{font-size:12px;color:var(--c-text-muted);white-space:nowrap;}
.ms-detail-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px solid var(--c-border);}
.todo-list{margin-top:8px;}
.todo-item{display:flex;align-items:flex-start;gap:10px;padding:8px 10px;border-bottom:1px solid var(--c-code-bg);background:transparent;transition:background var(--t-fast);}
.light-mode .todo-item{border-bottom-color:#e8e8e8;}
.todo-item:hover{background:#0f1219;}
.light-mode .todo-item:hover{background:#f0f4ff;}
.todo-item-check{width:18px;height:18px;cursor:pointer;accent-color:#4ade80;flex-shrink:0;margin-top:2px;}
.todo-item-main{flex:1;min-width:0;cursor:pointer;}
.todo-item-title{font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.todo-item-comments{margin-top:3px;}
.todo-item-comment{font-size:11px;color:var(--c-text-muted);line-height:1.4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.light-mode .todo-item-comment{color:#777;}
.todo-comment-user{color:#bbb;font-weight:600;}
.light-mode .todo-comment-user{color:#555;}
.todo-item.todo-done .todo-item-title{text-decoration:line-through;color:#666;}
.light-mode .todo-item.todo-done .todo-item-title{color:#aaa;}
.todo-item-meta{display:flex;gap:6px;align-items:center;margin-top:2px;font-size:11px;color:#777;}
.todo-item-actions{display:flex;gap:4px;flex-shrink:0;}
.todo-inline-form{display:flex;gap:8px;align-items:center;}
.todo-assignee-badge{display:inline-block;padding:1px 7px;border-radius:var(--r-lg);background:rgba(59,130,246,0.15);color:#60a5fa;cursor:pointer;font-size:11px;white-space:nowrap;transition:background var(--t-fast);}
.todo-assignee-badge:hover{background:rgba(59,130,246,0.3);}
.light-mode .todo-assignee-badge{background:rgba(59,130,246,0.1);color:#2563eb;}
.light-mode .todo-assignee-badge:hover{background:rgba(59,130,246,0.2);}
.todo-assignee-btn{display:inline-block;padding:1px 7px;border-radius:var(--r-lg);background:rgba(255,255,255,0.06);color:#888;cursor:pointer;font-size:11px;white-space:nowrap;border:1px dashed #555;transition:background var(--t-fast),color var(--t-fast);}
.todo-assignee-btn:hover{background:rgba(59,130,246,0.15);color:#60a5fa;border-color:#60a5fa;}
.light-mode .todo-assignee-btn{background:rgba(0,0,0,0.03);color:#999;border-color:#ccc;}
.light-mode .todo-assignee-btn:hover{background:rgba(59,130,246,0.1);color:#2563eb;border-color:#2563eb;}

/* Tree todo done */
.tree-todo-done{text-decoration:line-through;color:#666;}
.light-mode .tree-todo-done{color:#aaa;}

/* ================================================================
   Feed / Activity
   ================================================================ */
.feed-icon{font-size:18px;width:28px;text-align:center;flex-shrink:0;padding-top:2px;}
.feed-main{flex:1;min-width:0;}
.feed-text{font-size:13px;color:var(--c-text);}
.feed-text strong{font-weight:600;}
.feed-snippet{font-size:12px;color:var(--c-text-muted);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.feed-time{font-size:11px;color:#666;margin-top:2px;}
.light-mode .feed-time{color:#888;}

/* ================================================================
   Members
   ================================================================ */
.member-list{display:flex;flex-direction:column;gap:6px;margin-top:8px;}
.member-row{display:flex;align-items:center;gap:8px;padding:6px 8px;background:var(--c-bg-card);border-radius:var(--r-sm);border:1px solid var(--c-border);}
.member-name{flex:1;font-size:13px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.member-name i{margin-right:4px;color:var(--c-text-muted);}
.member-role-select{font-size:12px;padding:2px 4px;background:var(--c-bg-btn);color:var(--c-text);border:1px solid var(--c-border-med);border-radius:var(--r-sm);}
.member-role-label{font-size:12px;color:var(--c-text-muted);}
.member-remove-btn{padding:2px 6px !important;font-size:11px !important;}
.user-search-dropdown{position:absolute;top:100%;left:0;right:0;z-index:100;background:var(--c-bg-card);border:1px solid var(--c-border-med);border-radius:var(--r-sm);margin-top:2px;max-height:200px;overflow-y:auto;box-shadow:0 4px 12px rgba(0,0,0,.3);}
.light-mode .user-search-dropdown{box-shadow:0 4px 12px rgba(0,0,0,.12);}
.user-search-item{padding:8px 12px;font-size:13px;cursor:pointer;color:var(--c-text);}
.user-search-item:hover{background:var(--c-bg-btn);}
.user-search-item.user-search-empty{color:var(--c-text-muted);cursor:default;}
.user-search-item.user-search-empty:hover{background:transparent;}

/* ================================================================
   Ownership (Milestone 1)
   ================================================================ */
.ws-sidebar-alert{padding:6px 24px;font-size:12px;cursor:pointer;border-left:3px solid transparent;}
.ws-sidebar-alert-orange{color:var(--c-orange);border-left-color:var(--c-orange);}
.ws-sidebar-alert-red{color:var(--c-red);border-left-color:var(--c-red);}
.ws-sidebar-alert:hover{background:var(--c-bg-hover);}
.col-owner{min-width:80px;font-size:13px;}

/* ================================================================
   Health Score (Milestone 2)
   ================================================================ */

/* Sidebar health item */
.ws-sidebar-health{display:flex;align-items:center;justify-content:space-between;padding:8px 24px;font-size:13px;color:var(--c-text);cursor:pointer;transition:background var(--t-fast);}
.ws-sidebar-health:hover{background:var(--c-bg-hover);}
.ws-sidebar-health.active{background:var(--c-bg-accent);border-left:3px solid var(--c-accent);}

/* Health score badge (sidebar + project cards) */
.health-score-badge{display:inline-block;padding:2px 8px;border-radius:var(--r-sm);font-size:12px;font-weight:700;min-width:28px;text-align:center;}
.health-green{background:var(--c-green-bg);color:var(--c-green);}
.health-yellow{background:var(--c-orange-bg);color:var(--c-orange);}
.health-red{background:var(--c-red-bg);color:var(--c-red);}

/* Project card health badge */
.card-health{display:inline-block;margin-left:8px;padding:2px 6px;border-radius:var(--r-sm);font-size:11px;font-weight:700;vertical-align:middle;}

/* Health Dashboard */
.health-dashboard{display:flex;flex-direction:column;gap:24px;max-width:700px;padding:16px 0;}

/* Main score circle */
.health-main-score{display:flex;align-items:center;gap:16px;flex-wrap:wrap;}
.health-score-circle{width:100px;height:100px;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;border:3px solid var(--c-border-med);flex-shrink:0;}
.health-score-circle.health-green{border-color:var(--c-green);background:var(--c-green-bg);}
.health-score-circle.health-yellow{border-color:var(--c-orange);background:var(--c-orange-bg);}
.health-score-circle.health-red{border-color:var(--c-red);background:var(--c-red-bg);}
.health-circle-value{font-size:28px;font-weight:700;line-height:1;}
.health-circle-label{font-size:12px;color:var(--c-text-muted);}

/* Trend text */
.health-trend-text{font-size:13px;color:var(--c-text-muted);}
.health-trend-up{color:var(--c-green);}
.health-trend-down{color:var(--c-red);}
.health-trend-stable{color:var(--c-text-muted);}

/* Breakdown bar */
.health-breakdown{display:flex;flex-direction:column;gap:8px;}
.health-bar{display:flex;height:20px;border-radius:var(--r-sm);overflow:hidden;background:var(--c-bg-card);border:1px solid var(--c-border);}
.health-bar-segment{height:100%;transition:width var(--t-norm);}
.health-seg-ha{background:var(--c-green);}
.health-seg-a{background:var(--c-blue);}
.health-seg-s{background:var(--c-orange);}
.health-seg-r{background:var(--c-red);}

/* Legend */
.health-legend{display:flex;flex-wrap:wrap;gap:12px;font-size:12px;color:var(--c-text);}
.health-legend-item{display:flex;align-items:center;gap:4px;}
.health-dot{width:10px;height:10px;border-radius:50%;display:inline-block;}

/* Sparkline */
.health-sparkline-container{padding:0;}
.health-sparkline-container h3{font-size:14px;margin:0 0 8px;font-weight:600;}
.health-score-sparkline{min-height:60px;}
.sparkline-svg{display:block;}

/* Owner breakdown */
.health-owners h3{font-size:14px;margin:0 0 8px;font-weight:600;}
.health-owner-header{display:grid;grid-template-columns:1fr 60px 60px 60px 60px;gap:4px;font-size:11px;color:var(--c-text-muted);text-transform:uppercase;padding:4px 8px;border-bottom:1px solid var(--c-border);}
.health-owner-row{display:grid;grid-template-columns:1fr 60px 60px 60px 60px;gap:4px;font-size:13px;padding:6px 8px;border-bottom:1px solid var(--c-border);color:var(--c-text);}
.health-owner-row:last-child{border-bottom:none;}
.health-owner-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.health-warn{color:var(--c-orange);}
.health-danger{color:var(--c-red);}

/* ================================================================
   Rot-Radius: Label staleness indicators
   ================================================================ */
.label-staleness-dot {
    display: inline-block;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    margin-right: 4px;
    vertical-align: middle;
}
.label-staleness-green  { background: var(--c-green); }
.label-staleness-blue   { background: var(--c-blue); }
.label-staleness-orange { background: var(--c-orange); }
.label-staleness-red    { background: var(--c-red); }

.jstree-node[data-staleness-color="red"] > .jstree-anchor {
    background: rgba(248, 113, 113, 0.08);
    border-radius: var(--r-sm);
}
.jstree-node[data-staleness-color="orange"] > .jstree-anchor {
    background: rgba(251, 146, 60, 0.06);
    border-radius: var(--r-sm);
}

/* ================================================================
   Justification Icon
   ================================================================ */
.justification-icon {
    cursor: pointer;
    font-size: 12px;
    opacity: 0.7;
    margin-left: 4px;
    transition: opacity var(--t-fast);
}
.justification-icon:hover {
    opacity: 1.0;
}

/* ================================================================
   Forecast Badge & Soon-Stale Alert
   ================================================================ */
.forecast-badge {
    font-size: 10px;
    padding: 1px 6px;
}
.ws-sidebar-alert-yellow {
    color: var(--c-orange);
    border-left-color: var(--c-orange);
    opacity: 0.85;
}

/* ================================================================
   Milestone 4: Document Relations
   ================================================================ */

/* Supersede Banner */
.supersede-banner {
    background: rgba(251, 146, 60, 0.1);
    border: 1px solid var(--c-orange);
    border-radius: var(--r-sm);
    padding: 8px 12px;
    margin-bottom: 12px;
    font-size: 13px;
    color: var(--c-orange);
}
.supersede-banner a {
    color: var(--c-orange);
    font-weight: 600;
    text-decoration: underline;
}

/* Relations Section in Viewer Sidebar */
.relation-item {
    padding: 4px 0;
    font-size: 12px;
    display: flex;
    align-items: center;
    gap: 6px;
}
.relation-item + .relation-item {
    border-top: 1px solid var(--border);
}
.relation-type {
    color: var(--text-muted);
    font-size: 10px;
    text-transform: uppercase;
    min-width: 80px;
    flex-shrink: 0;
}
.relation-link {
    flex: 1;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.relation-remove {
    opacity: 0;
    transition: opacity var(--t-fast);
    font-size: 10px;
    color: var(--text-muted);
    background: none;
    border: none;
    cursor: pointer;
    padding: 2px 4px;
}
.relation-item:hover .relation-remove {
    opacity: 0.7;
}
.relation-remove:hover {
    opacity: 1 !important;
    color: var(--c-red);
}
.relation-add-btn {
    margin-top: 8px;
}

/* Relation Search Dialog */
.relation-search-results {
    max-height: 200px;
    overflow-y: auto;
}
.relation-search-item {
    padding: 6px 8px;
    cursor: pointer;
    border-radius: var(--r-sm);
    font-size: 12px;
}
.relation-search-item:hover {
    background: var(--bg-hover);
}

/* Tree: Dependency Warning */
.dep-warn-icon {
    color: var(--c-orange);
    font-size: 11px;
    margin-left: 2px;
    cursor: help;
}

/* Tree: Superseded Icon */
.superseded-icon {
    color: var(--text-muted);
    font-size: 11px;
    margin-left: 2px;
    opacity: 0.7;
    cursor: help;
}

/* ================================================================
   AI Features (M5)
   ================================================================ */

/* Search Mode Toggle */
.gs-mode-toggle {
    display: flex;
    gap: 4px;
    padding: 8px 16px 0;
}
.gs-mode-btn {
    padding: 4px 12px;
    border: 1px solid var(--border);
    background: transparent;
    color: var(--text-muted);
    border-radius: var(--r-sm);
    cursor: pointer;
    font-size: 12px;
    transition: all 0.15s;
}
.gs-mode-btn:hover {
    background: var(--bg-hover);
}
.gs-mode-btn.gs-mode-active {
    background: var(--c-blue, #2196f3);
    color: #fff;
    border-color: var(--c-blue, #2196f3);
}

/* AI Summary in Viewer */
.ai-summary-oneliner {
    font-weight: 600;
    font-size: 13px;
    margin-bottom: 6px;
    color: var(--text);
    white-space: pre-wrap;
    word-break: break-word;
}
.ai-summary-abstract {
    font-size: 12px;
    color: var(--text-muted);
    margin-bottom: 6px;
    line-height: 1.4;
    white-space: pre-wrap;
    word-break: break-word;
}
.ai-summary-facts {
    font-size: 12px;
    color: var(--text-muted);
    line-height: 1.5;
    padding-left: 4px;
    white-space: pre-wrap;
    word-break: break-word;
}

/* AI Tags */
.ai-tag-chip {
    display: inline-block;
    padding: 2px 8px;
    margin: 2px 4px 2px 0;
    background: rgba(33, 150, 243, 0.15);
    color: var(--c-blue, #2196f3);
    border-radius: 12px;
    font-size: 11px;
    border: 1px solid rgba(33, 150, 243, 0.3);
}
.ai-tags-actions {
    margin-top: 6px;
    display: flex;
    gap: 6px;
}

/* Inbox AI Suggestions */
.inbox-ai-suggestions {
    padding: 4px 8px 4px 40px;
    min-height: 0;
}
.inbox-ai-suggestions:empty {
    display: none;
}
.ai-sug-label {
    font-size: 11px;
    color: var(--text-muted);
}
.ai-sug-chip {
    display: inline-block;
    padding: 3px 10px;
    margin: 2px 4px 2px 0;
    background: rgba(156, 39, 176, 0.1);
    color: var(--text);
    border: 1px solid rgba(156, 39, 176, 0.3);
    border-radius: 12px;
    font-size: 11px;
    cursor: pointer;
    transition: all 0.15s;
}
.ai-sug-chip:hover {
    background: rgba(156, 39, 176, 0.25);
    border-color: rgba(156, 39, 176, 0.5);
}
.ai-sug-conf {
    font-size: 10px;
    opacity: 0.7;
}

/* Doc Row One-liner */
.doc-row-oneliner {
    font-size: 11px;
    color: var(--text-muted);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 400px;
    margin-top: 2px;
}

/* AI Settings Status */
.ai-status-info {
    margin: 12px 0;
    padding: 8px 12px;
    background: var(--bg-hover);
    border-radius: var(--r-sm);
    font-size: 12px;
}
.ai-status-row {
    display: flex;
    justify-content: space-between;
    padding: 3px 0;
}
.ai-status-row span {
    color: var(--text-muted);
}

/* === Milestone 6: AI Context Intelligence === */

/* Review Card Banner */
.review-card-banner {
    background: rgba(239, 68, 68, 0.05);
    border: 1px solid var(--c-red);
    border-radius: var(--r-sm);
    padding: 12px;
    margin-bottom: 12px;
}
.rc-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-size: 12px;
    font-weight: 600;
    color: var(--c-red);
    margin-bottom: 8px;
}
.rc-icon {
    margin-right: 6px;
}
.rc-date {
    font-weight: 400;
    color: var(--text-muted);
    font-size: 11px;
}
.rc-situation {
    font-size: 13px;
    margin-bottom: 8px;
    line-height: 1.4;
}
.rc-interpretations {
    font-size: 12px;
    color: var(--text-muted);
    margin: 0 0 8px 16px;
    padding: 0;
    line-height: 1.5;
}
.rc-interpretations li {
    margin-bottom: 2px;
}
.rc-action {
    font-size: 12px;
    border-left: 3px solid var(--c-blue);
    padding-left: 10px;
    margin-bottom: 8px;
    line-height: 1.4;
}
.rc-refresh {
    opacity: 0.6;
    font-size: 11px;
}
.rc-refresh:hover {
    opacity: 1;
}

/* Context Resurrection Panel */
.resurrection-panel {
    background: rgba(59, 130, 246, 0.05);
    border: 1px solid var(--c-blue);
    border-radius: var(--r-sm);
    padding: 12px;
    margin-bottom: 12px;
}
.resurrection-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-size: 12px;
    font-weight: 600;
    color: var(--c-blue);
    margin-bottom: 8px;
}
.resurrection-ago {
    font-weight: 400;
    color: var(--text-muted);
    font-size: 11px;
}
.resurrection-belongs {
    font-size: 13px;
    margin-bottom: 6px;
    line-height: 1.4;
}
.resurrection-related {
    font-size: 12px;
    color: var(--text-muted);
    margin-bottom: 6px;
}
.resurrection-tag {
    display: inline-block;
    background: var(--bg-hover);
    padding: 1px 6px;
    border-radius: var(--r-sm);
    font-size: 11px;
    margin: 1px 0;
}
.resurrection-changes {
    font-size: 12px;
    color: var(--text-muted);
    margin-bottom: 6px;
    font-style: italic;
}
.resurrection-recommendation {
    font-size: 12px;
    line-height: 1.4;
}

/* AI Comments */
.comment-ai-decision,
.comment-ai-context {
    background: rgba(139, 92, 246, 0.04);
    border-left: 2px solid var(--c-purple, #8b5cf6);
    padding-left: 10px;
}
.comment-ai-badge {
    display: inline-block;
    background: var(--c-purple, #8b5cf6);
    color: #fff;
    font-size: 9px;
    font-weight: 700;
    padding: 1px 4px;
    border-radius: 3px;
    text-transform: uppercase;
    vertical-align: middle;
    margin-right: 4px;
}
.feed-ai-badge {
    display: inline-block;
    background: var(--c-purple, #8b5cf6);
    color: #fff;
    font-size: 8px;
    font-weight: 700;
    padding: 0 3px;
    border-radius: 2px;
    margin-right: 3px;
}

/* Context Suggestions */
.suggestion-item {
    padding: 6px 0;
    font-size: 12px;
    border-bottom: 1px solid var(--border);
}
.suggestion-item:last-child {
    border-bottom: none;
}
.suggestion-forgotten {
    background: rgba(251, 146, 60, 0.04);
    padding: 6px;
    border-radius: var(--r-sm);
    margin: 2px 0;
}
.suggestion-oneliner {
    font-size: 11px;
    color: var(--text-muted);
    margin-top: 2px;
    line-height: 1.3;
}

/* ================================================================
   M7: Context Snapshot Banner
   ================================================================ */
.context-snapshot-banner {
    background: var(--c-orange-bg);
    border: 1px solid var(--c-orange);
    border-radius: var(--r-md);
    padding: 12px 16px;
    margin: 8px 0;
}
.cs-header {
    font-size: 13px;
    font-weight: 600;
    color: var(--c-orange);
    margin-bottom: 8px;
}
.cs-input {
    width: 100%;
    padding: 8px 10px;
    border-radius: var(--r-md);
    border: 1px solid var(--c-border-med);
    background: var(--c-bg);
    color: var(--c-text);
    font-size: 13px;
    resize: vertical;
    min-height: 40px;
    box-sizing: border-box;
    font-family: inherit;
}
.cs-actions {
    display: flex;
    gap: 8px;
    margin-top: 8px;
}
.comment-context-snapshot {
    border-left: 3px solid var(--c-orange);
    background: var(--c-orange-bg);
}
.snapshot-badge {
    font-size: 12px;
    margin-right: 4px;
}

/* ================================================================
   M7: Anomaly Detection
   ================================================================ */
.anomaly-icon {
    color: var(--c-purple, #a78bfa);
    font-size: 12px;
    animation: anomaly-pulse 2s ease-in-out infinite;
}
@keyframes anomaly-pulse {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.5; }
}
.anomaly-alert {
    color: var(--c-purple, #a78bfa);
    font-weight: 600;
    font-size: 12px;
}
.ws-sidebar-alert-purple {
    background: var(--c-purple-bg, #1a1a2a);
    color: var(--c-purple, #a78bfa);
    border-left: 3px solid var(--c-purple, #a78bfa);
}
.badge-purple {
    background: var(--c-purple-bg, #1a1a2a);
    color: var(--c-purple, #a78bfa);
}

/* ================================================================
   M7: Cycle Badge
   ================================================================ */
.cycle-badge {
    display: inline-block;
    background: var(--c-blue-bg);
    color: var(--c-blue);
    font-size: 11px;
    padding: 1px 6px;
    border-radius: var(--r-sm);
    font-weight: 600;
}

/* ================================================================
   M8: AI Context Graph
   ================================================================ */

/* AI Suggestions in Relations */
.dv-ai-suggestions {
    margin-top: 12px;
    padding-top: 10px;
    border-top: 1px dashed var(--c-border);
}
.ai-suggestions-title {
    font-size: 12px;
    color: var(--c-muted);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 8px;
    font-weight: 600;
}
.rel-suggestion {
    padding: 8px 0;
    border-bottom: 1px solid var(--c-border);
}
.rel-suggestion:last-child {
    border-bottom: none;
}
.rel-suggestion-type {
    font-size: 11px;
    color: var(--c-muted);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}
.rel-suggestion-meta {
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 4px 0;
}
.rel-confidence {
    font-size: 11px;
    color: var(--c-muted);
}
.rel-suggestion-reason {
    font-size: 12px;
    color: var(--c-sub);
    font-style: italic;
    margin: 4px 0;
}
.rel-suggestion-actions {
    display: flex;
    gap: 6px;
    margin-top: 6px;
}
.btn-sm.btn-green {
    background: var(--c-green, #22c55e);
    color: #fff;
    border: none;
    padding: 2px 8px;
    border-radius: var(--r-sm);
    cursor: pointer;
    font-size: 11px;
}
.btn-sm.btn-gray {
    background: var(--c-border);
    color: var(--c-text);
    border: none;
    padding: 2px 8px;
    border-radius: var(--r-sm);
    cursor: pointer;
    font-size: 11px;
}

/* Context Lineage Timeline */
.lineage-timeline {
    padding: 8px 0;
}
.lineage-node {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 4px 0;
}
.lineage-dot {
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background: var(--c-muted);
    margin-top: 5px;
    flex-shrink: 0;
}
.lineage-current .lineage-dot {
    background: var(--c-blue, #3b82f6);
    box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.2);
}
.lineage-node.archived {
    opacity: 0.5;
}
.lineage-node.dumped {
    opacity: 0.3;
    text-decoration: line-through;
}
.lineage-connector {
    width: 2px;
    height: 16px;
    background: var(--c-border);
    margin-left: 4px;
}
.lineage-info {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px;
}
.lineage-link {
    color: var(--c-link, var(--c-blue));
    text-decoration: none;
}
.lineage-link:hover {
    text-decoration: underline;
}
.lineage-date {
    font-size: 11px;
    color: var(--c-muted);
}

/* Semantic Staleness Banner */
.banner-semantic {
    background: var(--c-orange-bg, #fff3cd);
    border-left: 3px solid var(--c-orange, #f59e0b);
    padding: 10px 12px;
    margin: 8px 0 12px;
    border-radius: var(--r-sm);
    display: flex;
    gap: 8px;
}
.banner-semantic .banner-icon {
    font-size: 18px;
    flex-shrink: 0;
}
.banner-semantic .banner-body {
    flex: 1;
}
.banner-semantic .banner-title {
    font-weight: 600;
    margin-bottom: 4px;
}
.banner-semantic .banner-text {
    font-size: 13px;
    color: var(--c-sub);
}
.banner-semantic .banner-meta {
    font-size: 11px;
    color: var(--c-muted);
    margin-top: 6px;
}
.btn-link {
    background: none;
    border: none;
    color: var(--c-link, var(--c-blue));
    cursor: pointer;
    padding: 0;
    font-size: inherit;
    text-decoration: underline;
}

/* Graph Recommendations */
.rec-section h4 {
    font-size: 12px;
    text-transform: uppercase;
    color: var(--c-muted);
    letter-spacing: 0.5px;
    margin: 8px 0 4px;
}
.rec-item {
    padding: 4px 0;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px;
}
.rec-link {
    color: var(--c-link, var(--c-blue));
    text-decoration: none;
}
.rec-link:hover {
    text-decoration: underline;
}
.rec-reason {
    width: 100%;
    font-size: 12px;
    color: var(--c-sub);
    font-style: italic;
    white-space: pre-wrap;
    word-break: break-word;
}

/* Badge yellow for semantically outdated */
.badge-yellow {
    background: var(--c-orange-bg, #fff3cd);
    color: var(--c-orange, #f59e0b);
}

/* ================================================================
   Purpose Dashboard
   ================================================================ */
.purpose-dashboard {
    display: flex;
    align-items: stretch;
    gap: 0;
    margin-top: 16px;
    min-height: 200px;
}
.purpose-col {
    flex: 1;
    background: var(--c-bg-card);
    border: 1px solid var(--c-border);
    border-radius: var(--r-xl);
    display: flex;
    flex-direction: column;
    overflow: hidden;
}
.purpose-col-header {
    padding: 14px 18px;
    font-weight: 700;
    font-size: 14px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    border-bottom: 2px solid transparent;
}
.purpose-col-input .purpose-col-header {
    color: var(--c-blue, #3b82f6);
    border-bottom-color: var(--c-blue, #3b82f6);
    background: rgba(59, 130, 246, 0.06);
}
.purpose-col-process .purpose-col-header {
    color: var(--c-orange, #f59e0b);
    border-bottom-color: var(--c-orange, #f59e0b);
    background: rgba(245, 158, 11, 0.06);
}
.purpose-col-output .purpose-col-header {
    color: var(--c-green, #22c55e);
    border-bottom-color: var(--c-green, #22c55e);
    background: rgba(34, 197, 94, 0.06);
}
.purpose-col-body {
    padding: 18px;
    flex: 1;
    display: flex;
    flex-direction: column;
    justify-content: center;
}
.purpose-text {
    font-size: 15px;
    line-height: 1.6;
    color: var(--c-text);
    margin: 0;
}
.purpose-arrow {
    display: flex;
    align-items: center;
    padding: 0 12px;
    font-size: 24px;
    color: var(--c-text-dim, #555);
    flex-shrink: 0;
}
.purpose-output-type {
    margin-top: 14px;
}
.purpose-type-badge {
    display: inline-block;
    padding: 4px 12px;
    border-radius: 20px;
    font-size: 12px;
    font-weight: 600;
}
.purpose-type-passive {
    background: rgba(59, 130, 246, 0.12);
    color: var(--c-blue, #3b82f6);
    border: 1px solid rgba(59, 130, 246, 0.3);
}
.purpose-type-active {
    background: rgba(34, 197, 94, 0.12);
    color: var(--c-green, #22c55e);
    border: 1px solid rgba(34, 197, 94, 0.3);
}

.purpose-edit {
    width: 100%;
    min-height: 40px;
    padding: 10px 12px;
    border-radius: var(--r-md);
    border: 1px solid var(--c-border-med);
    background: var(--c-bg);
    color: var(--c-text);
    font-size: 14px;
    font-family: inherit;
    line-height: 1.5;
    resize: none;
    overflow: hidden;
    box-sizing: border-box;
}
.purpose-edit:focus {
    outline: none;
    border-color: var(--c-blue, #3b82f6);
    box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.15);
}
.purpose-save-status {
    font-size: 12px;
    margin-left: 8px;
}
.purpose-save-pending { color: var(--c-text-dim, #888); }
.purpose-save-saving  { color: var(--c-orange, #f59e0b); }
.purpose-save-saved   { color: var(--c-green, #22c55e); }
.purpose-save-error   { color: var(--c-red, #ef4444); }

/* Project card purpose */
.cardPurpose {
    color: var(--c-text-sub);
    font-size: 12px;
    min-height: 34px;
    display: flex;
    flex-wrap: wrap;
    gap: 2px;
    align-items: baseline;
}
.purpose-segment {
    white-space: nowrap;
}
.purpose-segment b {
    color: var(--c-text-dim);
}

@media (max-width: 700px) {
    .purpose-dashboard {
        flex-direction: column;
        gap: 12px;
    }
    .purpose-arrow {
        transform: rotate(90deg);
        padding: 4px 0;
        justify-content: center;
    }
}
