
    /* ─── Sidebar bid-list · BidBoard-inspired pattern (matches index.html .sb-project) ─── */
    /* Steven 2026-05-27: "i want the left to look exactly like this [index.html sidebar]
       but do by status of project · ex ITB · analyzing · submitted".  Compact list
       items (not big cards) grouped by lifecycle stage with section headers + counts. */
    .sb-stage-label { font-family: 'JetBrains Mono', monospace; font-size: 10.5px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--ink-4); padding: 0 10px; margin: 14px 0 5px; display: flex; align-items: center; justify-content: space-between; }
    .sb-stage-label:first-child { margin-top: 4px; }
    .sb-stage-label .sb-stage-count { color: var(--ink-3); font-weight: 600; font-size: 10px; }
    .sb-stage-empty { padding: 4px 10px 8px; font-size: 11px; color: var(--ink-4); font-style: italic; }
    /* Status dots (color-coded per stage) */
    .sb-status { display: inline-block; width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; }
    .sb-status.itb        { background: #d9b341; box-shadow: 0 0 0 2px rgba(217,179,65,0.22); }    /* amber - just received */
    .sb-status.analyzing  { background: var(--clay); box-shadow: 0 0 0 2px rgba(184,92,62,0.22); } /* clay  - in progress */
    .sb-status.submitted  { background: #4a8f5f; box-shadow: 0 0 0 2px rgba(74,143,95,0.20); }     /* green - sent to GC */
    /* Project rows */
    .sb-project { padding: 6px 10px; border-radius: 6px; cursor: pointer; border: 1px solid transparent; margin-bottom: 1px; display: flex; align-items: center; gap: 8px; transition: background .12s, border-color .12s; min-width: 0; position: relative; }
    .sb-project:hover { background: rgba(245,240,230,0.6); }
    .sb-project.active { background: rgba(245,240,230,0.8); border-color: var(--border); }
    .sb-project.active .sb-pnum { color: var(--clay); }
    .sb-pnum { font-family: 'JetBrains Mono', monospace; font-size: 10.5px; letter-spacing: 0.04em; color: var(--ink-4); flex-shrink: 0; }
    .sb-pname { font-size: 12px; font-weight: 600; color: var(--ink); letter-spacing: -0.01em; line-height: 1.2; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; flex: 1; }
    .sb-pname b { font-weight: 600; color: var(--ink-2); margin-right: 4px; font-size: 11.5px; }
    .sb-loading-spinner { display: none; width: 12px; height: 12px; border: 2px solid rgba(184,92,62,0.22); border-top-color: var(--clay); border-radius: 50%; flex: 0 0 auto; animation: sb-loading-spin .72s linear infinite; }
    .sb-project.is-loading .sb-loading-spinner { display: inline-block; }
    .sb-project.is-loading .sb-3dot { display: none; }
    @keyframes sb-loading-spin { to { transform: rotate(360deg); } }
    @media (prefers-reduced-motion: reduce) {
      .sb-loading-spinner { animation: none; }
    }
    /* Due-date badges (right-aligned, urgency color-coded) */
    .sb-due { font-size: 9px; font-family: 'JetBrains Mono', monospace; padding: 1px 5px; border-radius: 3px; flex-shrink: 0; }
    .sb-due.urgent { background: rgba(220,53,69,0.12); color: #c93545; font-weight: 600; }
    .sb-due.soon   { background: rgba(184,92,62,0.12); color: var(--clay); }
    .sb-due.normal { background: rgba(0,0,0,0.04);     color: var(--ink-3); }
    /* 3-dot action menu (hover-revealed per bid row) */
    .sb-3dot { opacity: 0; visibility: hidden; cursor: pointer; padding: 0 5px; font-size: 14px; color: var(--ink-3); border-radius: 3px; flex-shrink: 0; line-height: 1; user-select: none; }
    .sb-project:hover .sb-3dot { opacity: 1; visibility: visible; }
    .sb-3dot:hover { background: rgba(0,0,0,0.08); color: var(--ink); }
    .sb-menu-pop { position: absolute; right: 4px; top: 100%; margin-top: 2px; background: white; border: 1px solid var(--border); border-radius: 6px; box-shadow: 0 6px 20px rgba(0,0,0,0.12); z-index: 100; min-width: 200px; padding: 4px; }
    .sb-menu-item { padding: 7px 12px; font-size: 11.5px; cursor: pointer; border-radius: 4px; color: var(--ink); display: flex; align-items: center; gap: 8px; }
    .sb-menu-item:hover { background: rgba(245,240,230,0.7); }
    .sb-menu-item.danger { color: #c93545; }
    .sb-menu-item.danger:hover { background: rgba(220,53,69,0.08); }
    .sb-menu-divider { height: 1px; background: var(--border); margin: 4px 0; }
    /* Archived section toggle at bottom of sidebar */
    .sb-archived-toggle { padding: 8px 10px; font-size: 10.5px; color: var(--ink-4); cursor: pointer; border-radius: 4px; margin-top: 12px; font-family: 'JetBrains Mono', monospace; letter-spacing: 0.06em; }
    .sb-archived-toggle:hover { background: rgba(0,0,0,0.04); color: var(--ink-3); }

    .pipeline-cortex-header { display: flex; align-items: center; gap: 10px; padding: 0 0 16px; border-bottom: 1px solid var(--border); margin-bottom: 18px; }
    .pipeline-cortex-logo { width: 22px; height: 22px; display: flex; align-items: center; justify-content: center; }
    .pipeline-cortex-logo svg { width: 22px; height: 22px; stroke: var(--ink); stroke-width: 1.6; fill: none; }
    .pipeline-cortex-name { font-size: 18px; font-weight: 600; color: var(--ink); letter-spacing: -0.01em; }
    /* Sidebar section labels — aligned to index.html's .sb-label
       (JetBrains Mono, 0.14em letter-spacing, weight 500) so the
       WORKSPACE / ACTIVE BIDS / PIPELINE STAGES headers feel like
       the main page's WORKSPACE / PROJECTS dividers. */
    /* Sidebar reading axis — every leaf element indents 24px from the
       sidebar's left edge so headers, buttons, bid-cards, stage labels
       and empty-state lines all share the same vertical alignment.
       Steven 2026-05-21: "spacing better here — everything is hugging
       the left so hard".  Prior: section labels at 4px, nav-items at
       11px, bid-cards at 24px — inconsistent indent depth.  New: all
       at 24px reading-axis with active-state pills inset 12px so they
       don't touch the sidebar edge. */
    .nav-section-label { font-family: 'JetBrains Mono', monospace; font-size: 10px; color: var(--ink-4); letter-spacing: 0.14em; text-transform: uppercase; font-weight: 500; margin: 18px 0 10px; padding: 0 24px; }
    .nav-section-label .count { float: right; color: var(--ink-3); font-weight: 400; letter-spacing: 0.08em; }
    .nav-item { display: flex; align-items: center; gap: 10px; padding: 9px 12px; margin: 0 12px 3px; border-radius: 6px; cursor: pointer; font-size: 13px; font-weight: 500; color: var(--ink); transition: background 0.12s; border: none; background: transparent; text-align: left; font-family: inherit; }
    .nav-item:hover { background: var(--paper); }
    .nav-item.active { background: var(--ink); color: white; box-shadow: 0 2px 6px rgba(31,30,29,0.18); }
    .nav-item.active .nav-item-icon svg { stroke: white; }
    .nav-item-icon { width: 16px; height: 16px; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
    .nav-item-icon svg { width: 16px; height: 16px; stroke: var(--ink-3); stroke-width: 1.5; fill: none; }
    .cortex-ingest-nav-item {
      width: calc(100% - 24px); min-width: 0; margin: 2px 12px 5px; padding: 8px 10px;
      display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 9px;
      border: 1px solid var(--border); border-radius: 6px; background: rgba(255,255,255,0.62);
      color: var(--ink); text-align: left; font-family: inherit; cursor: pointer;
      transition: background .12s, border-color .12s;
    }
    .cortex-ingest-nav-item:hover { background: var(--paper); border-color: var(--border-2); }
    .cortex-ingest-nav-item:focus-visible { outline: 2px solid var(--clay); outline-offset: 2px; }
    .cortex-ingest-nav-item[hidden] { display: none !important; }
    .cortex-ingest-nav-dot {
      width: 8px; height: 8px; border-radius: 50%; background: var(--clay);
      box-shadow: 0 0 0 3px rgba(184,92,62,0.12);
    }
    .cortex-ingest-nav-item[data-status="complete"] .cortex-ingest-nav-dot {
      background: var(--sage-ink); box-shadow: 0 0 0 3px rgba(93,122,66,0.14);
    }
    .cortex-ingest-nav-item[data-status="error"] .cortex-ingest-nav-dot {
      background: #a5342d; box-shadow: 0 0 0 3px rgba(165,52,45,0.14);
    }
    .cortex-ingest-nav-item[data-connection="unavailable"] .cortex-ingest-nav-dot {
      background: #a87926; box-shadow: 0 0 0 3px rgba(168,121,38,0.14);
    }
    .cortex-ingest-nav-copy { min-width: 0; }
    .cortex-ingest-nav-label {
      display: block; font-size: 11.5px; line-height: 1.25; font-weight: 700;
      white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
    }
    .cortex-ingest-nav-detail {
      display: block; margin-top: 2px; color: var(--ink-4); font-size: 9.5px; line-height: 1.25;
      white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
    }
    .cortex-ingest-nav-count {
      color: var(--ink-3); font: 600 9px 'JetBrains Mono', monospace; white-space: nowrap;
    }
    /* Divider between Workspace and Active Bids · 2026-05-15 (Steven:
       "its so hard to see the workspace homepage").  Adds a soft horizontal
       rule below the Portfolio Overview button so the home page anchor
       reads as a separate region from the bid pipeline below. */
    .workspace-section { padding-bottom: 16px; margin-bottom: 4px; border-bottom: 1px solid var(--border); }
