/* ═══════════════════════════════════════════════════════════════════════════
   WORKSPACE SHELL — SPA Layout Styles
   ═══════════════════════════════════════════════════════════════════════════
   Styles for the workspace shell: sidebar rail, overlay sidebar, global
   header, tab bar, content area, and shell overlays. Widget/control styles
   remain in elysium.css. Design tokens from globals.css.

   Source: Elysium-SPA-Workspace-v1.html mockup (2,532 lines)
   ═══════════════════════════════════════════════════════════════════════════ */

/* ═══════════ APP SHELL ═══════════ */
.app-shell{display:flex;height:100vh;width:100vw;background:var(--bg);color:var(--t1);position:relative;overflow:hidden}
.app-main{flex:1;display:flex;flex-direction:column;min-width:0;height:100vh}

/* ═══════════ SIDEBAR RAIL (52px, always visible) ═══════════ */
.sidebar-rail{width:52px;min-width:52px;background:var(--sidebar-bg);border-right:1px solid var(--border);display:flex;flex-direction:column;align-items:center;padding-top:8px;gap:2px;overflow-y:auto;overflow-x:hidden}
.rail-logo{width:32px;height:32px;border-radius:var(--r-sm);background:linear-gradient(135deg,var(--accent),var(--indigo));display:flex;align-items:center;justify-content:center;font-size:15px;font-weight:800;color:#fff;cursor:pointer;margin-bottom:8px;transition:transform .2s var(--spring);flex-shrink:0}
.rail-logo:hover{transform:scale(1.08)}
.rail-logo img{width:24px;height:24px;border-radius:4px;object-fit:contain}
.rail-item{width:36px;height:36px;border-radius:var(--r-sm);display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--t3);font-size:15px;transition:all .15s;position:relative;flex-shrink:0}
.rail-item:hover{background:var(--sidebar-hover);color:var(--t1)}
.rail-item.active{background:var(--sidebar-active);color:var(--accent)}
.rail-item .rail-badge{position:absolute;top:2px;right:2px;min-width:14px;height:14px;border-radius:var(--r-full);background:var(--danger);font-size:8px;font-weight:700;color:#fff;display:flex;align-items:center;justify-content:center;padding:0 3px}
.rail-tooltip{position:absolute;left:calc(100% + 8px);top:50%;transform:translateY(-50%);background:var(--t1);color:var(--bg);padding:4px 10px;border-radius:6px;font-size:11px;font-weight:500;white-space:nowrap;pointer-events:none;opacity:0;transition:opacity .15s;z-index:999}
.rail-item:hover .rail-tooltip{opacity:1}
.rail-separator{width:24px;height:1px;background:var(--border);margin:6px 0;flex-shrink:0}

/* ═══════════ SIDEBAR OVERLAY (260px, slides in) ═══════════ */
.ws-sidebar-overlay{position:fixed;inset:0;background:rgba(0,0,0,.3);z-index:900;opacity:0;pointer-events:none;transition:opacity .25s ease}
.ws-sidebar-overlay.visible{opacity:1;pointer-events:auto}
[data-theme="dark"] .ws-sidebar-overlay.visible{background:rgba(0,0,0,.5)}

.ws-sidebar{position:fixed;left:0;top:0;bottom:0;width:260px;background:var(--sidebar-bg);border-right:1px solid var(--border);z-index:910;display:flex;flex-direction:column;transform:translateX(-100%);transition:transform .3s cubic-bezier(0.22,1,0.36,1);box-shadow:none;overflow:hidden}
.ws-sidebar.open{transform:translateX(0);box-shadow:8px 0 40px rgba(0,0,0,.1)}
[data-theme="dark"] .ws-sidebar.open{box-shadow:8px 0 40px rgba(0,0,0,.3)}

.ws-sidebar-header{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--border);flex-shrink:0}
.ws-sidebar-logo{width:30px;height:30px;border-radius:8px;background:linear-gradient(135deg,var(--accent),var(--indigo));display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:800;color:#fff;flex-shrink:0}
.ws-sidebar-brand{flex:1;min-width:0}
.ws-sidebar-brand-name{font-size:14px;font-weight:700;color:var(--t1);letter-spacing:-0.3px}
.ws-sidebar-brand-sub{font-size:10px;color:var(--t3)}
.ws-sidebar-close{width:28px;height:28px;border:none;background:var(--card2);border-radius:var(--r-sm);cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--t2);font-size:16px;transition:all .15s}
.ws-sidebar-close:hover{background:var(--border);color:var(--t1)}

.ws-sidebar-search{padding:8px 12px;flex-shrink:0}
.ws-sidebar-search input{width:100%;padding:7px 10px 7px 30px;border-radius:var(--r-sm);border:1px solid var(--border);background:var(--card2);font-size:12px;color:var(--t1);font-family:inherit;outline:none;transition:border-color .15s}
.ws-sidebar-search input:focus{border-color:var(--accent)}
.ws-sidebar-search-wrap{position:relative}
.ws-sidebar-search-icon{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:var(--t3);font-size:12px;pointer-events:none}

.ws-sidebar-nav{flex:1;overflow-y:auto;padding:4px 0}
.ws-sidebar-section{margin-bottom:4px}
.ws-sidebar-section-title{font-size:9px;font-weight:700;color:var(--t3);text-transform:uppercase;letter-spacing:1.2px;padding:10px 16px 4px;cursor:pointer;display:flex;align-items:center;gap:2px;user-select:none}
.ws-sidebar-nav-item{display:flex;align-items:center;gap:6px;padding:7px 16px;cursor:pointer;color:var(--t2);font-size:12.5px;font-weight:400;transition:all .12s;border-left:2px solid transparent;user-select:none}
.ws-sidebar-nav-item:hover{background:var(--sidebar-hover);color:var(--t1)}
.ws-sidebar-nav-item.active{background:var(--sidebar-active);color:var(--accent);font-weight:600;border-left-color:var(--accent)}
.ws-sidebar-nav-item .nav-icon{width:18px;text-align:center;font-size:14px;flex-shrink:0}
.ws-sidebar-nav-item .nav-label{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ws-sidebar-nav-item .nav-badge{background:var(--card2);color:var(--t3);font-size:10px;font-weight:600;padding:1px 7px;border-radius:var(--r-full);margin-left:auto;flex-shrink:0}
.ws-sidebar-nav-item.active .nav-badge{background:rgba(34,139,230,.1);color:var(--accent)}

.ws-sidebar-fav-btn{width:20px;height:20px;border:none;background:none;cursor:pointer;font-size:11px;padding:0;flex-shrink:0;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:opacity .15s,background .15s}
.ws-sidebar-fav-btn:hover{background:var(--hover)}
.ws-sidebar-fav-btn.pinned{color:var(--accent);opacity:1}
.ws-sidebar-fav-btn.unpinned{color:var(--t3);opacity:0}
.ws-sidebar-nav-item:hover .ws-sidebar-fav-btn.unpinned{opacity:.7}

.ws-sidebar-footer{padding:12px 16px;border-top:1px solid var(--border);flex-shrink:0}
.ws-sidebar-user{display:flex;align-items:center;gap:10px;cursor:pointer;padding:4px;border-radius:var(--r-sm);transition:background .12s}
.ws-sidebar-user:hover{background:var(--sidebar-hover)}
.ws-sidebar-user-avatar{width:30px;height:30px;border-radius:var(--r-full);background:var(--accent);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:#fff;flex-shrink:0}
.ws-sidebar-user-info{flex:1;min-width:0}
.ws-sidebar-user-name{font-size:12px;font-weight:600;color:var(--t1)}
.ws-sidebar-user-role{font-size:10px;color:var(--t3)}

/* Collapsible sections */
.ws-section-collapse-btn{border:none;background:none;cursor:pointer;color:var(--t3);font-size:8px;padding:2px;transition:transform .15s,color .15s;display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;border-radius:3px;margin-right:2px}
.ws-section-collapse-btn:hover{color:var(--t1);background:var(--card2)}
.ws-section-collapse-btn.collapsed{transform:rotate(-90deg)}
.ws-sidebar-section.collapsed .ws-sidebar-nav-item{display:none!important}

/* ═══════════ GLOBAL HEADER (44px, glassmorphism) ═══════════ */
.global-header{display:flex;align-items:center;gap:10px;padding:0 16px;height:44px;min-height:44px;background:var(--header-bg);backdrop-filter:blur(16px) saturate(180%);-webkit-backdrop-filter:blur(16px) saturate(180%);border-bottom:1px solid var(--header-border);z-index:50;user-select:none}
.header-left{display:flex;align-items:center;gap:8px;min-width:0;flex:0 1 auto;overflow:hidden}
.header-left .case-id-pill{max-width:400px}
.header-hamburger{width:30px;height:30px;border:none;background:none;cursor:pointer;display:none;align-items:center;justify-content:center;color:var(--t1);font-size:18px;border-radius:var(--r-sm);transition:background .12s}
.header-hamburger:hover{background:var(--card2)}
.header-breadcrumbs{display:flex;align-items:center;font-size:13px;color:var(--t3);min-width:0;overflow:hidden}
.bc-list{display:flex;align-items:center;gap:0;list-style:none;margin:0;padding:0}
.bc-item{display:flex;align-items:center;white-space:nowrap}
.bc-segment{display:inline-flex;align-items:center;gap:2px;padding:4px 6px 4px 10px;border-radius:var(--r-sm);border:1px solid var(--border);background:var(--card2);cursor:pointer;transition:all .12s;font-family:inherit;font-size:13px;line-height:1}
.bc-segment:hover{background:var(--hover);border-color:var(--t3)}
.bc-segment.active{background:var(--hover);border-color:var(--accent)}
.bc-segment:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.bc-link{color:var(--t2);transition:color .12s;font-weight:500;cursor:pointer}
.bc-segment:hover .bc-link{color:var(--t1)}
.bc-segment.active .bc-link{color:var(--accent)}
.bc-link:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--r-sm)}
.bc-sep{color:var(--border);font-size:11px;margin:0 2px;user-select:none}
.bc-current{color:var(--t1);font-weight:600}
.bc-chevron{color:var(--t3);font-size:10px;transition:color .12s;margin-left:1px}
.bc-segment:hover .bc-chevron{color:var(--t2)}
.bc-segment.active .bc-chevron{color:var(--accent)}

/* Breadcrumb sibling dropdown (portal on document.body) */
.bc-dropdown{position:fixed;z-index:300;min-width:180px;max-width:260px;background:var(--card);border:1px solid var(--border);border-radius:var(--r-md);box-shadow:var(--shadow-lg);overflow:hidden;animation:bc-dd-in .12s ease-out}
@keyframes bc-dd-in{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}
.bc-dropdown-search-wrap{padding:6px 6px 4px}
.bc-dropdown-search{width:100%;padding:5px 8px;font-size:11px;border:1px solid var(--border);border-radius:var(--r-sm);background:var(--card2);color:var(--t1);font-family:inherit;outline:none;transition:border-color .12s}
.bc-dropdown-search:focus{border-color:var(--accent)}
.bc-dropdown-search::placeholder{color:var(--t3)}
.bc-dropdown-sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);border:0}
.bc-dropdown-items{padding:4px;max-height:280px;overflow-y:auto}
.bc-dropdown-item{display:flex;align-items:center;gap:8px;width:100%;padding:7px 10px;border:none;background:none;font-size:12px;color:var(--t1);cursor:pointer;border-radius:var(--r-sm);font-family:inherit;text-align:left;transition:background .1s}
.bc-dropdown-item:hover,.bc-dropdown-item.focused{background:var(--hover)}
.bc-dropdown-item.active{background:var(--card2);color:var(--accent);font-weight:600}
.bc-dropdown-icon{font-size:14px;flex-shrink:0;width:18px;text-align:center}
.bc-dropdown-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bc-dropdown-check{margin-left:auto;color:var(--accent);font-size:11px;flex-shrink:0}
.bc-dropdown-empty{padding:12px;text-align:center;font-size:11px;color:var(--t3)}
.header-center{flex:1}
.header-right{display:flex;align-items:center;gap:6px;flex-shrink:0}

/* Search trigger */
.ws-search-trigger{display:flex;align-items:center;gap:6px;padding:5px 12px;background:var(--card2);border:1px solid var(--border);border-radius:var(--r-full);font-size:12px;color:var(--t3);cursor:pointer;transition:all .15s;min-width:180px;font-family:inherit}
.ws-search-trigger:hover{border-color:var(--accent);background:var(--card)}
.ws-search-trigger .st-icon{font-size:12px}
.ws-search-trigger .st-hint{margin-left:auto;background:var(--card);padding:1px 6px;border-radius:4px;font-size:10px;border:1px solid var(--border)}

/* +New button */
.ws-btn-new{display:flex;align-items:center;gap:5px;padding:5px 12px;border:none;background:var(--accent);color:#fff;border-radius:var(--r-sm);font-size:12px;font-weight:600;cursor:pointer;font-family:inherit;transition:all .15s var(--spring);white-space:nowrap}
.ws-btn-new:hover{filter:brightness(1.1);transform:translateY(-1px)}
.ws-btn-new .plus{font-size:14px;font-weight:300}

/* Header icon buttons */
.hdr-btn{width:30px;height:30px;border:1px solid var(--border);background:var(--card);border-radius:var(--r-sm);cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--t2);font-size:14px;transition:all .15s;position:relative;font-family:inherit}
.hdr-btn:hover{border-color:var(--accent);color:var(--accent);transform:translateY(-1px)}
.hdr-btn .hdr-badge{position:absolute;top:-4px;right:-4px;min-width:14px;height:14px;border-radius:var(--r-full);background:var(--danger);font-size:8px;font-weight:700;color:#fff;display:flex;align-items:center;justify-content:center;padding:0 3px;border:2px solid var(--header-bg)}
.hdr-btn.cascade-active{border-color:var(--amber);background:color-mix(in srgb,var(--amber) 10%,var(--card));color:var(--amber)}
.hdr-btn.pressed{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 15%,var(--card));color:var(--accent)}

/* ═══════════ WORKSPACE TABS (34px) ═══════════ */
.ws-tab-strip{display:flex;align-items:stretch;height:34px;min-height:34px;gap:1px}
.ws-tab-bar{display:flex;align-items:stretch;flex:1;background:var(--card2);border-bottom:1px solid var(--border);padding:0 8px;gap:1px;overflow-x:auto;overflow-y:hidden;user-select:none}
.ws-tab-bar::-webkit-scrollbar{height:0}
.ws-tab{display:flex;align-items:center;gap:6px;padding:0 12px;font-size:11.5px;font-weight:500;color:var(--t2);cursor:pointer;border-bottom:2px solid transparent;transition:all .12s;white-space:nowrap;position:relative;max-width:180px;min-width:0;flex-shrink:0;user-select:none}
.ws-tab:hover{color:var(--t1);background:var(--card)}
.ws-tab.active{color:var(--accent);font-weight:600;border-bottom-color:var(--accent);background:var(--card)}
.ws-tab.dragging{cursor:grabbing;opacity:.7}
.ws-tab .tab-icon{font-size:12px;flex-shrink:0}
.ws-tab .tab-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ws-tab .tab-dirty{width:6px;height:6px;border-radius:var(--r-full);background:var(--accent);flex-shrink:0}
.ws-tab .tab-close{width:16px;height:16px;border-radius:4px;border:none;background:none;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--t3);font-size:12px;opacity:0;transition:all .1s;flex-shrink:0}
.ws-tab:hover .tab-close{opacity:1}
.ws-tab .tab-close:hover{background:var(--danger);color:#fff;opacity:1}
/* Pinned tab */
.ws-tab.pinned{min-width:0;max-width:40px;padding:0 10px}
.ws-tab.pinned .tab-label,.ws-tab.pinned .tab-close{display:none}
/* Tab add button */
.ws-tab-add{width:28px;height:28px;border:1px dashed var(--border);background:none;border-radius:6px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--t3);font-size:14px;margin:3px 0 3px 4px;transition:all .15s;flex-shrink:0}
.ws-tab-add:hover{border-color:var(--accent);color:var(--accent);background:rgba(34,139,230,.04)}
/* Tab scroll arrows */
.ws-tab-scroll-btn{width:28px;height:34px;border:none;background:var(--card2);color:var(--t3);cursor:pointer;display:none;align-items:center;justify-content:center;font-size:14px;transition:all .15s;flex-shrink:0;border-bottom:1px solid var(--border)}
.ws-tab-scroll-btn:hover{background:var(--card);color:var(--t1)}
.ws-tab-scroll-btn.visible{display:flex}
/* Tab overflow */
.ws-tab-overflow-menu{position:relative;width:28px;height:34px}
.ws-tab-overflow-btn{width:28px;height:34px;border:none;background:var(--card2);color:var(--t3);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:12px;transition:all .15s;border-bottom:1px solid var(--border)}
.ws-tab-overflow-btn:hover{background:var(--card);color:var(--t1)}

/* ═══════════ CONTENT AREA ═══════════ */
.ws-content-area{flex:1;overflow-y:auto;overflow-x:hidden;background:var(--bg)}

/* ═══════════ SHORTCUT HINT BAR ═══════════ */
.shortcut-hint-bar{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:3px 12px;background:var(--card);border-top:1px solid var(--border);font-size:11px;color:var(--t3);flex-shrink:0;user-select:none}
.sh-left{display:flex;align-items:center;gap:8px}
.sh-center{display:flex;align-items:center;justify-content:center;gap:16px}
.sh-right{display:flex;align-items:center;justify-content:flex-end;gap:8px}
.shortcut-hint-bar .sh-item{display:inline-flex;align-items:center;gap:4px;cursor:pointer;transition:color .15s}
.shortcut-hint-bar .sh-item:hover{color:var(--t1)}
.shortcut-hint-bar .sh-kbd{display:inline-block;padding:0 4px;min-width:16px;text-align:center;font-size:10px;font-weight:600;font-family:var(--font-mono,monospace);background:var(--card2);border:1px solid var(--border);border-radius:3px;color:var(--t2);line-height:16px}
.shortcut-hint-bar .sh-sep{width:1px;height:12px;background:var(--border)}
@media(max-width:768px){.shortcut-hint-bar{display:none}}

/* ═══════════ TAB CONTEXT MENU ═══════════ */
.ws-tab-ctx{position:fixed;background:var(--card);border:1px solid var(--border);border-radius:var(--r-sm);box-shadow:var(--shadow-lg);min-width:160px;z-index:500;overflow:hidden;display:none}
.ws-tab-ctx.open{display:block}
.ws-tab-ctx-item{padding:7px 14px;font-size:12px;color:var(--t1);cursor:pointer;transition:background .08s;display:flex;align-items:center;gap:8px}
.ws-tab-ctx-item:hover{background:var(--card2)}
.ws-tab-ctx-item.danger{color:var(--danger)}
.ws-tab-ctx-sep{height:1px;background:var(--border);margin:2px 0}

/* ═══════════ FOCUS MODE ═══════════ */
.app-shell.focus-mode .sidebar-rail{opacity:.3;pointer-events:none;transition:opacity .3s}
.app-shell.focus-mode .sidebar-rail:hover{opacity:1;pointer-events:auto}
.app-shell.focus-mode .ws-search-trigger .st-text{display:none}
.app-shell.focus-mode .ws-search-trigger{min-width:auto}
.focus-indicator{display:none;align-items:center;gap:6px;padding:3px 10px;background:rgba(34,139,230,.08);border:1px solid rgba(34,139,230,.2);border-radius:var(--r-full);font-size:10px;font-weight:600;color:var(--accent);cursor:pointer;white-space:nowrap;transition:all .15s}
.focus-indicator:hover{background:rgba(34,139,230,.15)}
.app-shell.focus-mode .focus-indicator{display:flex}
.focus-timer{font-variant-numeric:tabular-nums}

/* ═══════════ G-PREFIX INDICATOR ═══════════ */
.g-prefix-toast{position:fixed;bottom:60px;left:50%;transform:translateX(-50%);background:var(--t1);color:var(--bg);padding:6px 16px;border-radius:var(--r-sm);font-size:12px;font-weight:600;z-index:9999;opacity:0;transition:opacity .15s;pointer-events:none;display:flex;align-items:center;gap:8px;font-family:inherit}
.g-prefix-toast.visible{opacity:1}
.g-prefix-toast kbd{background:rgba(255,255,255,.2);padding:2px 8px;border-radius:4px;font-family:system-ui}

/* ═══════════ SHORTCUT SHEET OVERLAY ═══════════ */
.shortcut-overlay{position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:650;display:flex;align-items:center;justify-content:center}
[data-theme="dark"] .shortcut-overlay{background:rgba(0,0,0,.55)}
.shortcut-panel{background:var(--card);border:1px solid var(--border);border-radius:var(--r-md);box-shadow:var(--shadow-lg);width:560px;max-width:90vw;max-height:80vh;overflow-y:auto}
.shortcut-panel-header{padding:16px 20px 12px;border-bottom:1px solid var(--border)}
.shortcut-panel-title{font-size:14px;font-weight:700;color:var(--t1)}
.shortcut-grid{padding:12px 20px 20px;display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media(max-width:560px){.shortcut-grid{grid-template-columns:1fr}}
.shortcut-section{display:flex;flex-direction:column;gap:4px}
.shortcut-section-label{font-size:9px;font-weight:700;color:var(--t3);text-transform:uppercase;letter-spacing:1.2px;margin-bottom:4px}
.shortcut-row{display:flex;align-items:center;justify-content:space-between;padding:4px 0;gap:8px}
.shortcut-row-label{font-size:12px;color:var(--t2)}
.shortcut-row-keys{display:flex;align-items:center;gap:3px;flex-shrink:0}
.shortcut-kbd{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:20px;padding:0 6px;background:var(--card2);border:1px solid var(--border);border-radius:4px;font-size:10px;font-weight:600;color:var(--t1);font-family:system-ui}

/* ═══════════ +NEW MENU DROPDOWN ═══════════ */
.new-menu{position:fixed;background:var(--card);border:1px solid var(--border);border-radius:var(--r-sm);box-shadow:var(--shadow-lg);min-width:200px;z-index:600;overflow:hidden}
.new-menu-header{padding:8px 14px 6px;font-size:9px;font-weight:700;color:var(--t3);text-transform:uppercase;letter-spacing:1.2px}
.new-menu-item{display:flex;align-items:center;gap:8px;width:100%;padding:8px 14px;border:none;background:none;color:var(--t1);font-size:12px;cursor:pointer;transition:background .08s;font-family:inherit;text-align:left}
.new-menu-item:hover{background:var(--card2)}
.new-menu-icon{font-size:14px;width:20px;text-align:center;flex-shrink:0}
.new-menu-label{flex:1}
.new-menu-shortcut{font-size:10px;color:var(--t3);background:var(--card2);padding:1px 6px;border-radius:4px;border:1px solid var(--border);font-family:system-ui}

/* ═══════════ MENU POPOVER (primitive — filterable anchored menu) ═══════════ */
.mp-popover{position:fixed;background:var(--card);border:1px solid var(--border);border-radius:var(--r-sm);box-shadow:var(--shadow-lg);min-width:240px;max-width:360px;max-height:min(60vh,480px);z-index:600;display:flex;flex-direction:column;overflow:hidden}
.mp-header{padding:8px 14px 6px;font-size:9px;font-weight:700;color:var(--t3);text-transform:uppercase;letter-spacing:1.2px;border-bottom:1px solid var(--border)}
.mp-filter-wrap{padding:8px;border-bottom:1px solid var(--border);background:var(--card2)}
.mp-filter{width:100%;padding:6px 10px;border:1px solid var(--border);border-radius:4px;background:var(--card);color:var(--t1);font-size:12px;font-family:inherit;outline:none}
.mp-filter:focus{border-color:var(--accent)}
.mp-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.mp-items{overflow-y:auto;flex:1;padding:4px 0}
.mp-item{display:flex;align-items:center;gap:8px;width:100%;padding:8px 14px;border:none;background:none;color:var(--t1);font-size:12px;cursor:pointer;transition:background .08s;font-family:inherit;text-align:left}
.mp-item:hover,.mp-item.focused{background:var(--card2)}
.mp-item.active{background:var(--card2);color:var(--accent)}
.mp-item.disabled{opacity:.5;cursor:not-allowed}
.mp-item.disabled:hover{background:none}
.mp-icon{font-size:14px;width:20px;text-align:center;flex-shrink:0}
.mp-label{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mp-shortcut{font-size:10px;color:var(--t3);background:var(--card2);padding:1px 6px;border-radius:4px;border:1px solid var(--border);font-family:system-ui}
.mp-check{color:var(--accent);font-size:12px;flex-shrink:0}
.mp-empty{padding:14px;text-align:center;color:var(--t3);font-size:11px;font-style:italic}

/* ═══════════ NOTIFICATION PANEL (v2 — compact summary rows) ═══════════ */
.notif-panel{position:fixed;top:0;right:0;bottom:0;width:380px;max-width:90vw;background:var(--card);border-left:1px solid var(--border);box-shadow:var(--shadow-lg);z-index:610;display:flex;flex-direction:column;transform:translateX(100%);transition:transform .3s cubic-bezier(0.22,1,0.36,1)}
.notif-panel.open{transform:translateX(0)}
.notif-overlay{position:fixed;inset:0;background:rgba(0,0,0,.3);z-index:600;opacity:0;pointer-events:none;transition:opacity .25s}
.notif-overlay.visible{opacity:1;pointer-events:auto}
[data-theme="dark"] .notif-overlay.visible{background:rgba(0,0,0,.5)}
/* Header */
.notif-header{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--border);flex-shrink:0}
.ni-header-left{display:flex;align-items:center;gap:8px}
.ni-header-right{display:flex;align-items:center;gap:6px}
.notif-title{font-size:14px;font-weight:700;color:var(--t1)}
.ni-mark-read{border:none;background:none;color:var(--accent);font-size:11px;font-weight:500;cursor:pointer;padding:4px 8px;font-family:inherit;border-radius:var(--r-xs);transition:all .12s}
.ni-mark-read:hover{background:var(--card2)}
.notif-close{width:28px;height:28px;border:none;background:var(--card2);border-radius:var(--r-sm);cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--t2);font-size:14px;transition:all .15s}
.notif-close:hover{background:var(--border);color:var(--t1)}
/* Filter pills */
.notif-filters{display:flex;gap:4px;padding:10px 16px;border-bottom:1px solid var(--border);flex-shrink:0;overflow-x:auto}
.notif-filter-btn{padding:4px 10px;border:1px solid var(--border);background:none;border-radius:var(--r-full);font-size:11px;color:var(--t2);cursor:pointer;white-space:nowrap;font-family:inherit;transition:all .12s}
.notif-filter-btn:hover{border-color:var(--accent);color:var(--accent)}
.notif-filter-btn.active{background:var(--accent);border-color:var(--accent);color:#fff}
.notif-filter-btn.muted{opacity:.45;text-decoration:line-through}
.notif-filter-btn.muted.active{opacity:.7}
.notif-list{flex:1;overflow-y:auto;padding:0}
.notif-badge{background:var(--red,#e03131);color:#fff;font-size:10px;font-weight:700;padding:1px 6px;border-radius:var(--r-full);min-width:18px;text-align:center}
.notif-status{padding:8px 16px;font-size:11px;color:var(--t3);background:var(--card2);text-align:center}
.notif-empty{padding:40px 16px;text-align:center;color:var(--t3);font-size:12px;display:flex;flex-direction:column;align-items:center;gap:8px}
.ni-empty-icon{font-size:28px;opacity:.4}
/* Time group headers */
.ni-group-label{padding:8px 16px 4px;font-size:10px;font-weight:600;color:var(--t3);text-transform:uppercase;letter-spacing:.05em}
/* Notification row — compact summary */
.ni-row{position:relative;transition:background .08s}
.ni-row:hover{background:var(--card2)}
.ni-row.unread{background:rgba(34,139,230,.04)}
.ni-row+.ni-row{border-top:1px solid var(--border)}
.ni-row.expanded{background:var(--card2)}
/* Summary line — entire row is expand target */
.ni-summary{display:flex;align-items:flex-start;gap:8px;padding:10px 12px 10px 16px;cursor:pointer}
/* Unread dot */
.ni-dot{width:6px;height:6px;border-radius:50%;background:var(--accent);flex-shrink:0;margin-top:5px}
/* Type icon (legacy — used when no actor avatar) */
.ni-icon{width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;flex-shrink:0;background:var(--card2);color:var(--t2)}
/* Actor avatar — colored circle with initials */
.ni-avatar-wrap{position:relative;flex-shrink:0}
.ni-avatar{width:32px;height:32px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;letter-spacing:.5px;color:#fff}
.ni-avatar-badge{position:absolute;bottom:-2px;right:-4px;font-size:12px;line-height:1;background:var(--bg,#1a1a2e);border-radius:50%;padding:1px 2px}
.ni-icon--mention{background:rgba(34,139,230,.12);color:var(--accent)}
.ni-icon--sla{background:rgba(224,49,49,.1);color:var(--red,#e03131)}
.ni-icon--assign{background:rgba(34,139,230,.12);color:var(--accent)}
.ni-icon--approve{background:rgba(55,178,77,.1);color:var(--green,#37b24d)}
.ni-icon--system{background:var(--card2);color:var(--t3)}
/* Text content */
.ni-content{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.ni-title{font-size:13px;font-weight:600;color:var(--t1);line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.ni-desc{font-size:12px;color:var(--t1);opacity:.75;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.ni-note-snippet{font-size:11px;opacity:.6;font-style:italic;border-left:2px solid var(--accent,#3b82f6);padding-left:6px;margin-top:2px;max-height:32px;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.ni-text{font-size:12px;color:var(--t1);line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.ni-time{font-size:10px;color:var(--t3)}
/* Action buttons */
.ni-actions{display:flex;align-items:center;gap:4px;flex-shrink:0;margin-left:auto}
.ni-open-pill{border:1px solid var(--accent);background:none;color:var(--accent);font-size:10px;font-weight:600;padding:2px 8px;border-radius:var(--r-full);cursor:pointer;white-space:nowrap;font-family:inherit;transition:all .12s}
.ni-open-pill:hover{background:var(--accent);color:#fff}
/* expand button removed — whole summary row is the click target */
.ni-dismiss{width:20px;height:20px;border:none;background:none;color:var(--t3);font-size:12px;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:var(--r-xs);opacity:0;transition:all .12s}
.ni-row:hover .ni-dismiss{opacity:1}
.ni-dismiss:hover{background:var(--border);color:var(--red,#e03131)}
/* Expanded entry — fetched ActivityCard */
.ni-expanded{padding:0 12px 10px 48px;animation:ni-slide-down .15s ease-out}
.ni-expanded .msg{border:1px solid var(--border);border-radius:var(--r-sm);margin-top:4px}
.ni-collapse-btn{border:none;background:var(--card2);color:var(--t3);width:20px;height:16px;font-size:9px;cursor:pointer;border-radius:var(--r-xs);display:flex;align-items:center;justify-content:center;margin-bottom:4px;transition:all .12s}
.ni-collapse-btn:hover{background:var(--border);color:var(--t1)}
.ni-loading{font-size:11px;color:var(--t3);padding:8px 0}
.ni-error{font-size:11px;color:var(--red,#e03131);padding:8px 0}
/* Category action buttons + snooze row */
.ni-action-row{display:flex;gap:4px;align-items:center;flex-wrap:wrap;padding:0 12px 8px 48px;position:relative}
.ni-action-btn{padding:4px 8px;font-size:10px;font-weight:500;background:var(--card2);border:1px solid var(--border);border-radius:var(--r-sm);color:var(--accent);cursor:pointer;transition:all .15s;white-space:nowrap;font-family:inherit}
.ni-action-btn:hover{background:var(--accent);color:#fff;border-color:var(--accent)}
/* Snooze dropdown */
.ni-snooze-wrap{position:relative;margin-left:auto}
.ni-snooze-menu{position:absolute;right:0;top:100%;margin-top:2px;background:var(--card);border:1px solid var(--border);border-radius:var(--r-sm);box-shadow:var(--shadow-lg);min-width:140px;z-index:200;overflow:hidden;animation:ni-slide-down .12s ease-out}
.ni-snooze-option{padding:6px 12px;font-size:11px;color:var(--t1);cursor:pointer;transition:background .08s}
.ni-snooze-option:hover{background:var(--card2)}
/* DND button */
.ni-dnd-btn{border:none;background:var(--card2);color:var(--t2);width:28px;height:28px;border-radius:var(--r-sm);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:13px;transition:all .15s;padding:0}
.ni-dnd-btn:hover{background:var(--border);color:var(--t1)}
.ni-dnd-btn.active{background:var(--red,#e03131);color:#fff;font-size:10px;font-weight:600;width:auto;padding:0 8px;gap:4px}
/* Settings gear button */
.ni-settings-btn{border:none;background:var(--card2);color:var(--t2);width:28px;height:28px;border-radius:var(--r-sm);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:14px;transition:all .15s}
.ni-settings-btn:hover{background:var(--border);color:var(--t1)}
/* DND banner */
.ni-dnd-banner{display:flex;align-items:center;gap:8px;padding:8px 16px;background:rgba(224,49,49,.08);border-bottom:1px solid rgba(224,49,49,.15);font-size:11px;font-weight:500;color:var(--red,#e03131);flex-shrink:0}
.ni-dnd-off{border:none;background:none;color:var(--accent);font-size:11px;font-weight:500;cursor:pointer;margin-left:auto;padding:2px 6px;border-radius:var(--r-xs);font-family:inherit}
.ni-dnd-off:hover{background:var(--card2)}
/* Settings panel */
.ni-settings{border-bottom:1px solid var(--border);padding:12px 16px;flex-shrink:0;animation:ni-slide-down .12s ease-out}
.ni-settings-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}
.ni-settings-title{font-size:12px;font-weight:700;color:var(--t1)}
.ni-settings-close{border:none;background:none;color:var(--t3);font-size:14px;cursor:pointer;width:20px;height:20px;display:flex;align-items:center;justify-content:center;border-radius:var(--r-xs)}
.ni-settings-close:hover{background:var(--card2);color:var(--t1)}
.ni-settings-desc{font-size:10px;color:var(--t3);margin-bottom:8px}
.ni-setting-row{display:flex;align-items:center;gap:10px;padding:6px 0}
.ni-setting-info{flex:1;min-width:0}
.ni-setting-label{display:block;font-size:11px;font-weight:600;color:var(--t1)}
.ni-setting-desc{display:block;font-size:10px;color:var(--t3);line-height:1.3}
/* Toggle switch */
.ni-toggle{width:32px;height:18px;border-radius:9px;border:none;cursor:pointer;position:relative;transition:background .15s;flex-shrink:0;padding:0}
.ni-toggle::after{content:'';position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:50%;background:#fff;transition:transform .15s;box-shadow:0 1px 2px rgba(0,0,0,.2)}
.ni-toggle.on{background:var(--accent)}
.ni-toggle.on::after{transform:translateX(14px)}
.ni-toggle.off{background:var(--border)}
/* Bell DND state */
.hdr-btn--dnd{opacity:.6}
@keyframes ni-slide-down{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}

/* ═══════════ MOBILE BOTTOM TAB BAR ═══════════ */
.ws-mobile-tab-bar{display:none;position:fixed;bottom:0;left:0;right:0;height:56px;background:var(--card);border-top:1px solid var(--border);z-index:100;flex-direction:row;align-items:stretch;justify-content:space-around;gap:0}
.ws-mobile-tab-item{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1;cursor:pointer;color:var(--t2);font-size:10px;font-weight:500;gap:4px;transition:all .15s;min-width:44px;touch-action:manipulation}
.ws-mobile-tab-item:active{background:var(--card2)}
.ws-mobile-tab-item.active{color:var(--accent)}
.ws-mobile-tab-item-icon{font-size:20px}

/* ═══════════ MOBILE RESPONSIVE ═══════════ */
@media(max-width:768px){
  .sidebar-rail{display:none}
  .header-hamburger{display:flex}
  .mob-hide{display:none !important}
  .global-header{padding:0 8px;gap:6px}
  .header-left{gap:4px}
  .header-left .case-id-pill{max-width:calc(100vw - 160px)}
  .header-left .case-id-pill .cip-title{max-width:120px}
  .header-right{gap:4px}
  .ws-search-trigger{min-width:40px;padding:5px 8px}
  .ws-search-trigger .st-text,.ws-search-trigger .st-hint{display:none}
  /* C4 F8: fade-edge gradient on the right of the tab bar gives users a clear
     visual signal that more tabs exist when overflow-x scrolls (the existing
     ::-webkit-scrollbar{height:0} hides the scrollbar). Mask is applied
     unconditionally at this viewport — it only visually trims pixels at the
     very right edge of the bar, costing nothing when there's no overflow. */
  .ws-tab-bar{padding:0 2px;height:32px;min-height:32px;mask-image:linear-gradient(to right,#000 calc(100% - 16px),transparent);-webkit-mask-image:linear-gradient(to right,#000 calc(100% - 16px),transparent)}
  /* C4 F8: shrink tab max-width from 100→80 so 3+ tabs fit in a 360 viewport
     (276px available after chrome). Labels still ellipsize on long titles
     but icon + leading characters remain readable. */
  .ws-tab{padding:0 6px;max-width:80px;font-size:10.5px}
  .ws-tab .tab-close{display:none}
  .ws-content-area{padding-bottom:56px}
  .ws-mobile-tab-bar{display:flex}
}

/* ═══════════ COMMAND PALETTE ENHANCEMENTS ═══════════ */
.cmd-input-row{display:flex;align-items:center;gap:4px;padding:0 4px}
.cmd-input-row .cmd-input{flex:1;padding:14px 8px}
.cmd-scope-badge{font-size:13px;font-weight:700;color:var(--accent);background:var(--card2);padding:4px 8px;border-radius:6px;font-family:var(--font-mono,monospace);line-height:1}
.cmd-scope-hints{display:flex;gap:4px;padding-right:8px}
.cmd-hint-pill{font-size:10px;color:var(--t3);background:var(--card2);padding:2px 6px;border-radius:4px;border:1px solid var(--border);font-family:var(--font-mono,monospace);cursor:default}
.cmd-group-header{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--t3);padding:8px 16px 4px;user-select:none}
.cmd-searching,.cmd-empty{cursor:default}
.cmd-nlp-filters{font-size:11px;color:var(--t3);padding:8px 16px 4px;user-select:none}

/* ═══════════ TAB PREVIEW POPOVER ═══════════ */
.ws-tab-preview{position:fixed;z-index:510;transform:translateX(-50%);background:var(--card);border:1px solid var(--border);border-radius:var(--r-sm);box-shadow:var(--shadow-lg);padding:8px 12px;min-width:140px;max-width:320px;pointer-events:auto;animation:tab-preview-in .12s ease-out}
.ws-tab-preview-title{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:600;color:var(--t1);word-break:break-word}
.ws-tab-preview-title .tab-dirty{width:6px;height:6px;border-radius:var(--r-full);background:var(--accent);flex-shrink:0}
.ws-tab-preview-subtitle{font-size:11px;color:var(--t2);margin-top:2px;word-break:break-word}
.ws-tab-preview-badge{font-size:10px;color:var(--accent);margin-top:4px;font-weight:500}
@keyframes tab-preview-in{from{opacity:0;transform:translateX(-50%) translateY(-4px)}to{opacity:1;transform:translateX(-50%) translateY(0)}}

/* ═══════════ RECORD PREVIEW POPOVER ═══════════ */
.record-popover{position:fixed;z-index:1100;width:320px;background:var(--card);border:1px solid var(--border);border-radius:var(--r);box-shadow:var(--shadow-lg);opacity:0;transform:translateY(4px);transition:opacity .15s,transform .15s;pointer-events:none}
.record-popover.visible{opacity:1;transform:translateY(0);pointer-events:auto}
.rp-header{display:flex;align-items:center;gap:6px;padding:10px 12px;border-bottom:1px solid var(--border)}
.rp-icon{font-size:16px;flex-shrink:0}
.rp-id{font-size:13px;font-weight:700;color:var(--t1)}
.rp-body{padding:8px 12px}
.rp-title{font-size:12px;font-weight:500;color:var(--t1);margin-bottom:6px;line-height:1.4}
.rp-row{display:flex;align-items:center;justify-content:space-between;padding:2px 0}
.rp-label{font-size:11px;color:var(--t3)}
.rp-value{font-size:11px;color:var(--t1);font-weight:500}
.rp-placeholder{color:var(--t3)!important}
.rp-sla-good{color:var(--green)!important}
.rp-sla-warn{color:var(--amber)!important}
.rp-sla-bad{color:var(--red)!important}

/* ═══════════ ACCESSIBILITY ═══════════ */
@media(prefers-reduced-motion:reduce){.app-shell *,.app-shell *::before,.app-shell *::after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
