/* ═══════════════════════════════════════════════════════════════
   LIBRARY — Archive cards, file trees, upload areas, pipeline
   status, texts list, process panel
   ═══════════════════════════════════════════════════════════════ */

  /* ── Organize view (formerly Libraries & Acquisitions) ─ */
  .libraries-view,
  .organize-view,
  .manage-view{
    flex:1;display:flex;flex-direction:column;min-width:0;
    background:var(--cream);
  }
  .manage-header{
    flex-shrink:0;padding:16px 28px 14px;
    background:var(--white);border-bottom:1px solid var(--border);
    display:flex;align-items:center;gap:16px;
  }
  .manage-body{
    flex:1;overflow:hidden;padding:0 28px;
    display:flex;flex-direction:column;min-height:0;
  }

  /* ── Manage tabs ──────────────────────────────────────── */
  .manage-tabs{
    display:flex;gap:0;padding:0 28px;
    background:var(--white);border-bottom:1px solid var(--border);
    flex-shrink:0;
  }
  .manage-tab{
    padding:10px 18px 8px;
    border:none;border-bottom:2px solid transparent;
    background:none;
    font-family:var(--sans);font-size:.82rem;font-weight:600;
    color:var(--text-muted);cursor:pointer;
    transition:color .15s,border-color .15s;
  }
  .manage-tab:hover{color:var(--text)}
  .manage-tab.active{
    color:var(--accent);border-bottom-color:var(--accent);
  }
  /* W4A — red bubble badge for tabs that need user attention.
   * Mira-aesthetic: dark red on cream, NOT GitHub-bright red.
   * Used by the Metadata tab when files are awaiting metadata review. */
  .tab-badge{
    display:inline-block;
    background:#a3322a;color:#fff5e3;
    border-radius:10px;
    font-size:.7rem;font-weight:700;
    padding:1px 7px;margin-left:6px;
    line-height:1.4;
    min-width:1.1rem;text-align:center;
    vertical-align:middle;
    box-shadow:0 1px 2px rgba(0,0,0,0.15);
  }
  .manage-tab-panel{
    display:flex;flex-direction:column;gap:0;
    min-height:0;flex:1;overflow:hidden;
  }
  .manage-tab-panel[data-mtab-panel="inventory"]{
    overflow-y:auto;padding:20px 0;
  }
  .manage-tab-panel[data-mtab-panel="processing"]{
    padding:8px 0;overflow-y:auto;
  }
  .manage-tab-panel[data-mtab-panel="metadata"]{
    padding:8px 0;
    /* W4B (maintainer 2026-05-05): allow scroll inside the panel so the
     * Metadata file list doesn't run off-screen with no way to reach
     * lower entries. The inline #manageSplitPane viewer below also
     * needs vertical room — flex children + min-height:0 + overflow on
     * the list keeps both visible. */
    overflow:hidden;
    display:flex;
    flex-direction:column;
  }
  .manage-tab-panel[data-mtab-panel="metadata"] .mdrev-list{
    overflow-y:auto;
    max-height:38vh;
    flex-shrink:0;
    /* Brown / Mira-aesthetic scrollbar (Webkit). */
    scrollbar-width:thin;
    scrollbar-color:#8b6f47 transparent;
  }
  .manage-tab-panel[data-mtab-panel="metadata"] .mdrev-list::-webkit-scrollbar{
    width:8px;
  }
  .manage-tab-panel[data-mtab-panel="metadata"] .mdrev-list::-webkit-scrollbar-thumb{
    background:#8b6f47;border-radius:4px;
  }
  .manage-tab-panel[data-mtab-panel="metadata"] .mdrev-list::-webkit-scrollbar-track{
    background:transparent;
  }

  /* ── Processing settings bar ─────────────────────────── */
  .manage-settings-bar{
    display:flex;align-items:center;gap:20px;flex-wrap:wrap;
    padding:12px 0 16px;border-bottom:1px solid var(--border-light);
    margin-bottom:16px;
  }
  .manage-setting{
    display:flex;align-items:center;gap:6px;
  }
  .manage-setting-label{
    font-family:var(--sans);font-size:.76rem;font-weight:600;
    color:var(--brown);white-space:nowrap;
  }
  .manage-toggle{
    padding:3px 10px;border:1px solid var(--border);border-radius:4px;
    font-family:var(--sans);font-size:.74rem;font-weight:600;
    cursor:pointer;transition:background .15s,color .15s,border-color .15s;
    background:var(--white);color:var(--accent);
  }
  .manage-toggle[data-on="true"]{
    background:var(--accent);color:var(--white);border-color:var(--accent);
  }
  .manage-toggle[data-on="false"]{
    background:var(--white);color:var(--text-muted);border-color:var(--border);
  }
  .manage-select{
    padding:3px 8px;border:1px solid var(--border);border-radius:4px;
    font-family:var(--sans);font-size:.74rem;
    color:var(--text);background:var(--white);cursor:pointer;
  }

  /* ── Inline split-pane ──────────────────────────────────── */
  .manage-split-pane{
    display:flex;flex-direction:column;
    border:1px solid var(--border);border-radius:6px;
    background:var(--white);overflow:hidden;
    flex:1;min-height:0;
  }
  .manage-sp-toolbar{
    display:flex;align-items:center;gap:12px;
    padding:10px 16px;border-bottom:1px solid var(--border-light);
    background:rgba(139,69,19,.02);
    /* maintainer 2026-05-16: allow the themed hover tooltip (button
       ::after/::before bubble that drops below into the content area)
       to escape this single-row flex bar instead of being clipped by
       the cream preview backdrop. overflow:visible does not affect the
       flex layout of a one-line toolbar. */
    overflow:visible;
  }
  .manage-sp-title{
    font-family:var(--sans);font-size:.84rem;font-weight:600;
    color:var(--brown);
  }
  .manage-sp-counter{
    font-family:var(--sans);font-size:.76rem;color:var(--text-muted);
  }
  .manage-sp-nav{
    margin-left:auto;display:flex;gap:4px;
    /* maintainer 2026-05-16: same as .manage-sp-toolbar — let the themed
       tooltip bubble overflow this flex group rather than be cut by
       the cream .manage-sp-left preview pane. */
    overflow:visible;
  }
  .manage-sp-btn{
    padding:4px 10px;border:1px solid var(--border);border-radius:4px;
    background:var(--white);font-family:var(--sans);font-size:.76rem;
    cursor:pointer;transition:background .12s;
  }
  .manage-sp-btn:hover{background:rgba(139,69,19,.04)}
  .manage-sp-btn:disabled{opacity:.4;cursor:default}
  /* Zoom cluster — inherits the .manage-sp-btn aesthetic. maintainer
     2026-05-16: the split-pane PDF preview rendered text too small
     with no zoom; engine.setZoom() existed but no UI drove it. */
  .manage-sp-zoom{display:inline-flex;align-items:center;gap:4px}
  .manage-sp-zoom[hidden]{display:none}
  /* maintainer 2026-05-17 (Smoke 58): ⟳ rotate control. Same chrome as
     the zoom buttons; explicit [hidden] rule so it stays collapsed
     until a rotatable (PDF) engine mounts. */
  .manage-sp-rotate-btn{min-width:26px;padding:4px 8px;text-align:center;line-height:1;}
  .manage-sp-rotate-btn[hidden],
  .split-pane-rotate-btn[hidden]{display:none}
  .manage-sp-zoom-btn{
    min-width:26px;padding:4px 8px;text-align:center;
    font-weight:600;line-height:1;
  }
  .manage-sp-zoom-level{
    padding:4px 6px;border:1px solid transparent;border-radius:4px;
    background:transparent;font-family:var(--sans);font-size:.72rem;
    color:var(--text-muted);cursor:pointer;min-width:46px;text-align:center;
    transition:background .12s,color .12s;
  }
  .manage-sp-zoom-level:hover{color:var(--brown);background:rgba(139,69,19,.04)}
  .manage-sp-content{
    display:flex;flex:1;min-height:0;overflow:hidden;
  }
  .manage-sp-left{
    flex:1;min-width:200px;overflow:hidden;
    padding:0;background:var(--cream);
    position:relative;
  }
  .manage-sp-left > *{
    width:100%;height:100%;overflow:auto;
  }
  /* PDF viewer inside split-pane: pages stack at natural size, panel scrolls */
  .manage-sp-left .pdfjs-viewer{
    display:block;padding:0;
  }
  .manage-sp-left .pdfjs-page{
    box-shadow:none;border-bottom:1px solid var(--border-light);
    margin:0 auto;
  }
  /* EPUB viewer inside split-pane: fill container */
  .manage-sp-left .epubjs-viewer{
    width:100%;height:100%;overflow:auto;
  }
  .manage-sp-left .epub-container{
    overflow:auto !important;
  }
  .manage-sp-divider{
    width:5px;cursor:col-resize;
    background:var(--border-light);
    transition:background .12s;flex-shrink:0;
  }
  .manage-sp-divider:hover{background:var(--accent)}
  .manage-sp-right{
    flex:1;min-width:200px;overflow-y:auto;padding:8px 12px;
  }
  .manage-sp-bottombar{
    display:flex;align-items:center;gap:12px;
    padding:8px 16px;border-top:1px solid var(--border-light);
    background:rgba(139,69,19,.02);
  }
  .manage-sp-shortcuts{
    font-family:var(--sans);font-size:.72rem;color:var(--text-muted);
    flex:1;
  }
  .manage-sp-skip{color:var(--text-muted)}
  .manage-sp-approve{
    background:var(--accent);color:var(--white);border-color:var(--accent);
    font-weight:600;
    transition:background .12s,border-color .12s;
  }
  /* maintainer 2026-05-16: prior rule was `opacity:.9`, which faded the whole
     button toward the pale cream/white pane on hover and washed out the
     white label (contrast/legibility complaint in the Metadata tab).
     Deepen to the darkest Mira brown instead — white on --brown-dark
     (#35201A) keeps very high text contrast while still giving a clear
     hover state. Scoped to the metadata-review approve button only. */
  .manage-sp-approve:hover{
    background:var(--brown-dark);border-color:var(--brown-dark);
    color:var(--white);opacity:1;
  }

  /* ── Metadata-review split-pane hover info bubbles ──────────
     maintainer 2026-05-16: the metadata-review toolbar buttons (Previous,
     Next, Zoom, Reset zoom, Fullscreen) carry native `title=` attrs,
     which render as the unstyled OS-default tooltip and do NOT match
     the Mira brown aesthetic. CSS can surface the same text in a
     themed pseudo-bubble via content:attr(title), reusing the exact
     --brown-dark / --cream palette already used by the [data-tip]
     bubbles elsewhere (sidebar, lib-header). Tightly scoped under
     #manageSplitPane so no other tooltip/button regresses. */
  #manageSplitPane .manage-sp-btn[title],
  #manageSplitPane .manage-sp-zoom-level[title]{position:relative}
  #manageSplitPane .manage-sp-btn[title]::after,
  #manageSplitPane .manage-sp-zoom-level[title]::after{
    content:attr(title);
    position:absolute;top:calc(100% + 8px);left:50%;
    transform:translateX(-50%) translateY(-4px);
    background:var(--brown-dark);color:var(--cream);
    font-family:var(--sans);font-size:.72rem;font-weight:600;
    letter-spacing:.3px;padding:5px 11px;border-radius:6px;
    white-space:nowrap;opacity:0;pointer-events:none;
    transition:opacity .2s,transform .2s;
    box-shadow:0 3px 10px var(--shadow);
    /* maintainer 2026-05-16: was z-index:20, which sat below the cream
       .manage-sp-left preview pane (a position:relative stacking
       context) and the divider, so the bubble was obscured. Render
       all the way forward. */
    z-index:9999;
  }
  #manageSplitPane .manage-sp-btn[title]::before,
  #manageSplitPane .manage-sp-zoom-level[title]::before{
    content:'';position:absolute;top:calc(100% + 2px);left:50%;
    transform:translateX(-50%);
    border:5px solid transparent;border-bottom-color:var(--brown-dark);
    opacity:0;pointer-events:none;transition:opacity .2s;
    /* maintainer 2026-05-16: match the bubble — keep the caret in front
       of the cream preview pane too. */
    z-index:9999;
  }
  #manageSplitPane .manage-sp-btn[title]:hover::after,
  #manageSplitPane .manage-sp-zoom-level[title]:hover::after{
    opacity:1;transform:translateX(-50%) translateY(0);
  }
  #manageSplitPane .manage-sp-btn[title]:hover::before,
  #manageSplitPane .manage-sp-zoom-level[title]:hover::before{opacity:1}

  /* Fullscreen button */
  .manage-sp-fullscreen-btn{
    font-size:1rem;line-height:1;padding:4px 8px;
  }

  /* ── Fullscreen mode ─────────────────────────────────────── */
  .manage-split-pane.manage-sp-fullscreen{
    position:fixed;top:0;left:0;right:0;bottom:0;
    z-index:9000;
    background:var(--white);
    display:flex;flex-direction:column;
    border-radius:0;
  }
  .manage-sp-fullscreen .manage-sp-content{
    flex:1;min-height:0;
  }
  .manage-sp-fullscreen .manage-sp-left{
    flex:1.2;
  }

  .manage-sp-empty{
    display:flex;flex-direction:column;align-items:center;
    text-align:center;padding:48px 24px;max-width:420px;margin:0 auto;
  }
  .manage-sp-empty svg{margin-bottom:12px;opacity:.7}
  .manage-sp-empty h3{
    font-family:var(--sans);font-size:.96rem;font-weight:600;
    color:var(--brown-dark);margin:0 0 6px;
  }
  .manage-sp-empty p{
    font-family:var(--sans);font-size:.82rem;line-height:1.6;
    color:var(--text-muted);margin:0;
  }

  /* ── Review banner ──────────────────────────────────────── */
  .manage-review-banner{
    display:flex;align-items:center;gap:12px;
    padding:10px 16px;margin-bottom:16px;
    background:rgba(218,165,32,.08);border:1px solid rgba(218,165,32,.25);
    border-radius:6px;
  }
  .manage-review-banner-text{
    font-family:var(--sans);font-size:.82rem;font-weight:600;
    color:var(--brown);flex:1;
  }
  .manage-review-banner-btn{
    padding:5px 14px;border:1px solid var(--accent);border-radius:4px;
    background:var(--white);font-family:var(--sans);font-size:.76rem;
    font-weight:600;color:var(--accent);cursor:pointer;
    transition:background .12s;white-space:nowrap;
  }
  .manage-review-banner-btn:hover{background:rgba(139,69,19,.04)}
  .libraries-header{
    flex-shrink:0;padding:16px 28px 14px;
    background:var(--white);border-bottom:1px solid var(--border);
    display:flex;align-items:center;gap:16px;
  }
  .libraries-selector{
    display:flex;align-items:center;gap:8px;
    margin-left:auto;
  }
  .libraries-archive-select{
    padding:4px 8px;border:1px solid var(--border);border-radius:5px;
    font-size:.8rem;font-family:var(--sans);color:var(--text);
    background:var(--white);cursor:pointer;
  }
  .libraries-new-btn{
    padding:4px 10px;border:1px solid var(--border);border-radius:5px;
    font-size:.76rem;font-family:var(--sans);font-weight:600;
    color:var(--accent);background:var(--white);cursor:pointer;
    transition:background .15s,border-color .15s;
  }
  .libraries-new-btn:hover{background:rgba(139,69,19,.04);border-color:var(--accent)}

  /* ── Libraries tabs ──────────────────────────────────── */
  .libraries-tabs{
    display:flex;gap:0;
    padding:0 28px;
    background:var(--white);
    border-bottom:1px solid var(--border);
  }
  .libraries-tab{
    padding:10px 18px 8px;
    border:none;border-bottom:2px solid transparent;
    background:none;
    font-size:.8rem;font-weight:600;font-family:var(--sans);
    color:var(--text-muted);cursor:pointer;
    transition:color .15s,border-color .15s;
  }
  .libraries-tab:hover{color:var(--text)}
  .libraries-tab.active{
    color:var(--accent);border-bottom-color:var(--accent);
  }

  /* ── Libraries tab body ──────────────────────────────── */
  .libraries-tab-body{
    flex:1;overflow-y:auto;padding:0;
  }
  .libraries-tab-body::-webkit-scrollbar{width:7px}
  .libraries-tab-body::-webkit-scrollbar-thumb{background:var(--border);border-radius:9px}

  /* Hide intake internal tab bar when embedded in Libraries view */
  .libraries-tab-body .lib-intake-tabs{display:none}

  /* ── Pipeline help line ────────────────────────────── */
  .pipeline-help-line{
    padding:10px 28px;font-family:var(--sans);font-size:.76rem;
    color:var(--text-muted);font-style:italic;
    border-bottom:1px solid var(--border-light);
  }

  /* ── Review tab ────────────────────────────────────── */
  .review-tab-content{padding:16px 24px}
  .review-status{
    font-family:var(--sans);font-size:.82rem;font-weight:600;
    color:var(--brown);margin-bottom:12px;
  }
  .review-status.all-clear{color:var(--text-muted);font-style:italic;font-weight:400}
  .review-empty-state{
    display:flex;flex-direction:column;align-items:center;
    text-align:center;padding:48px 24px;max-width:480px;margin:0 auto;
  }
  .review-empty-state svg{margin-bottom:16px;opacity:.6}
  .review-empty-state h3{
    font-family:var(--sans);font-size:1rem;font-weight:600;
    color:var(--brown-dark);margin:0 0 8px;
  }
  .review-empty-state p{
    font-family:var(--sans);font-size:.84rem;line-height:1.6;
    color:var(--text-muted);margin:0 0 20px;
  }
  .review-empty-hint{
    font-family:var(--sans);font-size:.78rem;line-height:1.6;
    color:var(--text-muted);background:rgba(139,69,19,.03);
    border:1px solid var(--border-light);border-radius:8px;
    padding:14px 18px;text-align:left;
  }
  .review-empty-hint strong{color:var(--brown-dark)}
  .review-list{display:flex;flex-direction:column;gap:4px;margin-bottom:16px}
  .review-row{
    display:flex;align-items:center;gap:12px;padding:8px 12px;
    border:1px solid var(--border-light);border-radius:6px;
    cursor:pointer;transition:background .12s,border-color .12s;
  }
  .review-row:hover{background:var(--cream-dark);border-color:var(--gold)}
  .review-row-name{
    flex:1;min-width:0;font-family:var(--sans);font-size:.82rem;
    color:var(--brown-dark);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  }
  .review-row-confidence{
    font-family:var(--sans);font-size:.68rem;font-weight:600;
    padding:2px 8px;border-radius:3px;white-space:nowrap;
  }
  .review-row-confidence.low{background:rgba(198,40,40,.08);color:#c62828}
  .review-row-confidence.medium{background:rgba(245,180,0,.12);color:#9e7a00}
  .review-row-confidence.high{background:rgba(76,175,80,.1);color:#2e7d32}
  .review-row-status{
    font-family:var(--sans);font-size:.68rem;color:var(--text-muted);white-space:nowrap;
  }
  .review-all-btn{
    padding:8px 20px;border:none;border-radius:6px;
    background:var(--accent);color:var(--white);
    font-family:var(--sans);font-size:.82rem;font-weight:600;
    cursor:pointer;transition:background .15s;
  }
  .review-all-btn:hover{background:var(--accent-light,var(--gold))}

  /* ── Browse Collections ────────────────────────────── */
  /* Height of the sticky search/filter toolbar, used to offset the
     virtualized browse table header so the two don't overlap (#41).
     Slightly under the real toolbar height (~66-68px) so the header
     tucks just under the opaque toolbar with no scroll-through gap. */
  .browse-collections{padding:0;--browse-toolbar-h:60px}
  .browse-toolbar{
    padding:16px 28px;display:flex;gap:12px;align-items:center;
    border-bottom:1px solid var(--border-light);background:var(--white);
    position:sticky;top:0;z-index:10;
  }
  /* Virtualized browse table header: sticks BELOW the search toolbar.
     The JS in library-ui.js sets position/top/z-index inline on
     .browse-virt-header, so these overrides must use !important to win
     against the inline cascade. Without this override, the header (z:5
     inline) would paint on top of .browse-toolbar (z:10) as the user
     scrolls, because both are pinned at top:0. */
  .browse-virt-header{
    top:var(--browse-toolbar-h,60px) !important;
    z-index:4 !important;
  }
  .browse-filter{
    flex:1;padding:8px 14px;border:1px solid var(--border);border-radius:6px;
    font-family:var(--serif);font-size:.85rem;color:var(--brown);
    background:var(--white);max-width:500px;
  }
  .browse-filter:focus{outline:none;border-color:var(--gold)}
  .browse-match-info{
    font-size:.72rem;color:var(--text-muted);font-family:var(--sans);white-space:nowrap;
  }
  .browse-collection{border-bottom:1px solid var(--border-light)}
  .browse-collection:last-child{border-bottom:none}
  .browse-collection-header{
    display:flex;align-items:baseline;gap:12px;
    padding:14px 28px 6px;
  }
  .browse-collection-header h3{
    font-family:var(--serif);font-size:.92rem;font-weight:700;
    color:var(--brown-dark,#3a2a1a);margin:0;
  }
  .browse-collection-count{
    font-size:.68rem;color:var(--text-muted);font-family:var(--sans);
  }
  .browse-collection .lib-texts-list{padding:0 16px 12px}
  .browse-no-match{
    padding:8px 28px 14px;font-size:.76rem;color:var(--text-muted);
    font-style:italic;font-family:var(--serif);
  }
  .browse-empty{
    text-align:center;padding:80px 20px;
    font-family:var(--serif);font-size:.92rem;font-style:italic;
    color:var(--text-muted);line-height:1.7;max-width:420px;margin:0 auto;
  }

  /* ── Browse table (sortable spreadsheet view) ───── */
  .browse-flat-list{padding:0 12px 12px;overflow-x:auto}
  .browse-table{
    width:100%;border-collapse:collapse;
    font-family:var(--sans);font-size:.74rem;
  }
  .browse-th{
    position:sticky;top:0;
    padding:6px 10px;text-align:left;
    font-size:.65rem;font-weight:700;text-transform:uppercase;
    letter-spacing:.04em;color:var(--text-muted);
    background:var(--cream-dark,#f0ebe3);
    border-bottom:2px solid var(--border);
    cursor:pointer;white-space:nowrap;user-select:none;
  }
  .browse-th:hover{color:var(--brown-dark);background:var(--border-light)}
  .browse-tr{cursor:pointer}
  .browse-tr:hover{background:rgba(139,69,19,.04)}
  .browse-td{
    padding:5px 10px;
    border-bottom:1px solid var(--border-light);
    color:var(--text);vertical-align:top;
    max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  }
  .browse-td-title{font-weight:600;color:var(--brown-dark)}
  .browse-td-year{white-space:nowrap;min-width:50px}

  /* Filters button in browse toolbar */
  .browse-filters-btn{
    padding:5px 12px;border:1px solid var(--border);border-radius:5px;
    background:var(--white);color:var(--text-muted);
    font-family:var(--sans);font-size:.76rem;font-weight:600;
    cursor:pointer;transition:border-color .15s,background .15s,color .15s;
    white-space:nowrap;
  }
  .browse-filters-btn:hover{border-color:var(--gold);color:var(--brown)}
  .browse-filters-btn.active{border-color:var(--gold);background:rgba(158,122,60,.06);color:var(--gold)}

  /* Collapsible filter panel */
  .browse-filter-panel{
    display:flex;gap:16px;flex-wrap:wrap;
    padding:10px 28px;border-bottom:1px solid var(--border-light);
    background:var(--cream);
  }
  .browse-filter-group{
    display:flex;align-items:center;gap:6px;
  }
  .browse-filter-group label{
    font-family:var(--sans);font-size:.7rem;font-weight:600;
    color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;
  }
  .browse-filter-group select{
    padding:4px 8px;border:1px solid var(--border);border-radius:5px;
    font-family:var(--sans);font-size:.78rem;color:var(--brown);
    background:var(--white);cursor:pointer;outline:none;
  }
  .browse-filter-group select:focus{border-color:var(--gold)}

  /* Deposit layout: main content + collapsible config */
  .lib-intake-deposit-layout{
    display:flex;flex-direction:column;min-height:0;flex:1;
  }
  .lib-intake-deposit-main{
    flex:1;overflow-y:auto;padding:20px 28px;
  }
  .lib-intake-deposit-config{
    border-top:1px solid var(--border);
    background:var(--sidebar-bg,#1e1e1e);color:var(--sidebar-text,#f0ece4);
    border-radius:0 0 6px 6px;
  }
  .lib-intake-deposit-config summary{
    padding:10px 20px;cursor:pointer;font-size:.75rem;font-weight:600;
    font-family:var(--sans);letter-spacing:.03em;
    color:var(--text-muted);
  }
  .lib-intake-deposit-config summary:hover{color:var(--text)}

  /* Pipeline status row */
  .lib-intake-pipeline-status{
    padding:12px 28px;border-top:1px solid var(--border);
    display:flex;gap:16px;align-items:center;
  }

  /* ── Add Content view ──────────────────────────────── */
  .add-content-view{
    flex:1;display:flex;flex-direction:column;min-width:0;
    background:var(--cream);
  }
  .add-content-header{
    flex-shrink:0;padding:24px 32px 20px;
    background:var(--white);border-bottom:1px solid var(--border);
    box-shadow:0 2px 8px var(--shadow);
    display:flex;align-items:center;gap:16px;flex-wrap:wrap;
  }
  .add-content-header h2{
    font-family:var(--serif);font-size:1.15rem;color:var(--brown-dark);margin-bottom:4px;
  }
  .add-content-header p{font-size:.8rem;color:var(--text-muted)}
  .add-content-body{
    flex:1;overflow-y:auto;padding:28px 32px;
  }
  .add-content-body::-webkit-scrollbar{width:7px}
  .add-content-body::-webkit-scrollbar-thumb{background:var(--border);border-radius:9px}
  .add-content-section{margin-bottom:28px}
  .add-content-section h3{
    font-size:.72rem;font-weight:700;letter-spacing:.6px;
    text-transform:uppercase;color:var(--text-muted);margin-bottom:12px;
  }
  .add-content-grid{
    display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px;
  }
  .add-content-card{
    background:var(--white);border:1.5px solid var(--border-light);
    border-radius:10px;padding:18px 20px;
    box-shadow:0 1px 4px var(--shadow);
    cursor:pointer;transition:box-shadow .2s,border-color .2s;
    display:flex;gap:14px;align-items:flex-start;
    text-decoration:none;color:var(--text);
  }
  .add-content-card:hover{box-shadow:0 4px 16px var(--shadow);border-color:var(--gold-light)}
  .add-content-card-icon{
    width:40px;height:40px;border-radius:8px;flex-shrink:0;
    display:flex;align-items:center;justify-content:center;
    font-size:1.2rem;font-weight:700;
  }
  .add-content-card-body{flex:1;min-width:0}
  .add-content-card-body h4{
    font-size:.88rem;font-weight:700;color:var(--brown-dark);margin-bottom:3px;
  }
  .add-content-card-body p{font-size:.76rem;color:var(--text-muted);line-height:1.45}
  .add-content-card-body .acc-url{
    font-size:.65rem;color:var(--gold);margin-top:6px;
    font-weight:600;letter-spacing:.2px;
  }

  /* ── Sidebar section shared (Library + Project) ── */
  .sidebar-project-section{
    padding:14px 12px 10px;
    border-top:1px solid rgba(255,255,255,.08);
    border-bottom:1px solid rgba(255,255,255,.08);
    position:relative;
  }
  .sidebar-section-label{
    font-size:.6rem;font-weight:700;letter-spacing:.8px;
    text-transform:uppercase;color:var(--gold-light);
    margin-bottom:6px;opacity:.7;
    cursor:pointer;transition:opacity .15s;
  }
  .sidebar-section-label:hover,
  .sidebar-section-label.active{
    opacity:1;
  }
  .sidebar-section-row{
    display:flex;align-items:center;gap:6px;
  }
  .sidebar-section-selector{
    display:flex;align-items:center;gap:8px;flex:1;min-width:0;
    padding:8px 10px;border-radius:7px;
    background:rgba(255,255,255,.08);
    cursor:pointer;transition:background .15s;
    position:relative;
  }
  .sidebar-section-selector:hover{background:rgba(255,255,255,.13)}
  .sidebar-section-add{
    width:28px;height:28px;border:none;border-radius:6px;
    background:transparent;color:rgba(255,255,255,.35);
    font-size:1.1rem;font-weight:700;line-height:1;
    cursor:pointer;transition:background .15s, color .15s;
    display:flex;align-items:center;justify-content:center;
    flex-shrink:0;position:relative;
  }
  .sidebar-section-add:hover{background:rgba(255,255,255,.1);color:var(--gold-light)}
  .sidebar-section-add::after{
    content:attr(data-tip);
    position:absolute;left:calc(100% + 10px);top:50%;transform:translateY(-50%) translateX(-4px);
    background:var(--cream);color:var(--brown-dark);
    font-family:var(--sans);font-size:.72rem;font-weight:600;
    letter-spacing:.3px;padding:5px 11px;border-radius:6px;
    white-space:nowrap;opacity:0;pointer-events:none;
    transition:opacity .2s,transform .2s;
    box-shadow:0 3px 12px rgba(0,0,0,.2);
    z-index:70;
  }
  .sidebar-section-add::before{
    content:'';position:absolute;left:calc(100% + 4px);top:50%;transform:translateY(-50%);
    border:5px solid transparent;border-right-color:var(--cream);
    opacity:0;pointer-events:none;transition:opacity .2s;
    z-index:70;
  }
  .sidebar-section-add:hover::after{opacity:1;transform:translateY(-50%) translateX(0)}
  .sidebar-section-add:hover::before{opacity:1}
  .project-color-dot{
    width:10px;height:10px;border-radius:50%;flex-shrink:0;
  }
  .sidebar-section-name{
    flex:1;min-width:0;font-size:.8rem;font-weight:600;
    color:var(--cream);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  }
  .sidebar-section-chevron{
    flex-shrink:0;opacity:.5;transition:transform .2s;
  }
  .dropdown-open .sidebar-section-chevron{
    transform:rotate(180deg);
  }
  .sidebar-project-dropdown{
    display:none;position:absolute;left:12px;right:12px;
    top:100%;margin-top:6px;
    background:var(--brown);border:1px solid rgba(255,255,255,.12);border-radius:8px;
    box-shadow:0 8px 28px rgba(0,0,0,.35), 0 2px 8px rgba(0,0,0,.2);
    z-index:60;overflow:hidden;
    max-height:320px;overflow-y:auto;
  }
  .sidebar-project-dropdown::before{
    content:"";position:absolute;top:-5px;left:20px;
    width:9px;height:9px;background:var(--brown);
    border-left:1px solid rgba(255,255,255,.12);
    border-top:1px solid rgba(255,255,255,.12);
    transform:rotate(45deg);
  }
  .sidebar-project-section.dropdown-open .sidebar-project-dropdown{display:block}
  .project-dropdown-item{
    display:flex;align-items:center;gap:8px;
    padding:9px 12px;cursor:pointer;
    font-size:.78rem;font-weight:600;color:var(--cream);
    transition:background .12s;
    border-bottom:1px solid rgba(255,255,255,.05);
  }
  .project-dropdown-item:last-child{border-bottom:none}
  .project-dropdown-item:hover{background:rgba(255,255,255,.07)}
  .project-dropdown-item.active{background:rgba(255,255,255,.1)}
  .project-dropdown-counts{
    margin-left:auto;font-size:.65rem;color:rgba(255,255,255,.35);
    font-weight:500;white-space:nowrap;
  }
  .project-dropdown-new{
    display:flex;align-items:center;gap:6px;
    padding:10px 12px;cursor:pointer;
    font-size:.78rem;font-weight:700;color:var(--gold-light);
    border-top:1px solid rgba(255,255,255,.07);
    transition:background .12s;
  }
  .project-dropdown-new:hover{background:rgba(255,255,255,.07)}
  .project-dropdown-all{
    display:flex;align-items:center;gap:6px;
    padding:9px 12px;cursor:pointer;
    font-size:.75rem;font-weight:600;color:rgba(255,255,255,.5);
    transition:background .12s;
    border-bottom:1px solid rgba(255,255,255,.07);
  }
  .project-dropdown-all:hover{background:rgba(255,255,255,.07)}
  .sidebar-project-none{
    font-size:.75rem;color:rgba(255,255,255,.35);
    padding:8px 10px;font-style:italic;
  }

  /* ── Loaded texts section in sidebar ─────────── */
  .sidebar-texts-section{
    padding:10px 12px 6px;flex:1;min-height:0;
    display:none;flex-direction:column;
    border-top:1px solid rgba(255,255,255,.08);
  }
  .sidebar-texts-header{
    display:flex;align-items:center;justify-content:space-between;
    margin-bottom:6px;
  }
  .sidebar-texts-label{
    font-size:.6rem;font-weight:700;letter-spacing:.8px;
    text-transform:uppercase;color:var(--gold-light);opacity:.7;
  }
  .sidebar-texts-count{
    font-size:.6rem;font-weight:600;color:rgba(255,255,255,.3);
    letter-spacing:.3px;
  }
  .sidebar-texts-list{
    flex:1;overflow-y:auto;min-height:0;
    scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.12) transparent;
  }
  .sidebar-texts-list::-webkit-scrollbar{width:4px}
  .sidebar-texts-list::-webkit-scrollbar-thumb{background:rgba(255,255,255,.12);border-radius:2px}
  .sidebar-text-item{
    display:flex;align-items:baseline;gap:6px;
    padding:4px 8px;border-radius:5px;
    transition:background .12s;cursor:default;
  }
  .sidebar-text-item:hover{background:rgba(255,255,255,.06)}
  .sidebar-text-title{
    flex:1;min-width:0;font-size:.72rem;font-weight:600;
    color:var(--cream);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  }
  .sidebar-text-author{
    font-size:.62rem;font-weight:500;color:rgba(255,255,255,.3);
    white-space:nowrap;max-width:70px;overflow:hidden;text-overflow:ellipsis;
  }
  .sidebar-text-chunks{
    font-size:.58rem;font-weight:600;color:rgba(255,255,255,.2);
    white-space:nowrap;flex-shrink:0;
  }
  .sidebar-text-item.st-processing .sidebar-text-title{color:rgba(255,255,255,.4)}
  .sidebar-text-item.st-processing .sidebar-text-chunks{color:var(--gold-light);opacity:.6}
  .sidebar-texts-empty{
    font-size:.72rem;color:rgba(255,255,255,.25);
    padding:8px 8px;font-style:italic;
  }

  /* ── Project view ──────────────────────────────── */
  .project-view{
    flex:1;display:flex;flex-direction:column;min-width:0;
    background:var(--cream);
  }
  .project-view-header{
    flex-shrink:0;padding:16px 28px 14px;
    background:var(--white);border-bottom:1px solid var(--border);
    box-shadow:0 2px 8px var(--shadow);
    display:flex;align-items:center;gap:16px;
  }
  .project-view-header-left{flex:1;min-width:0}
  .project-view-title-row{
    display:flex;align-items:center;gap:12px;margin-bottom:6px;
  }
  .project-view-dot{
    width:14px;height:14px;border-radius:50%;flex-shrink:0;
  }
  .project-view-name{
    font-family:var(--sans);
    font-size:1.05rem;font-weight:600;
    font-variant:small-caps;letter-spacing:.04em;
    color:var(--brown-dark);
    border:none;background:transparent;outline:none;
    padding:2px 0;flex:1;min-width:0;
  }
  .project-view-name:focus{
    border-bottom:2px solid var(--gold);
  }
  .project-view-desc{
    font-size:.84rem;color:var(--text-muted);
  }
  .project-view-body{
    flex:1;overflow-y:auto;padding:28px 36px;
  }
  .project-view-section{
    margin-bottom:28px;
  }
  .project-view-section h3{
    font-family:var(--serif);font-size:1rem;color:var(--brown-dark);
    margin-bottom:12px;
  }
  .project-archive-list{
    display:flex;flex-direction:column;gap:2px;
    border:1px solid var(--border-light);border-radius:8px;
    padding:6px 0;background:var(--white);
    box-shadow:0 1px 4px var(--shadow);
  }
  .project-archive-item{
    display:flex;align-items:center;gap:10px;
    padding:10px 14px;cursor:pointer;
    font-size:.84rem;color:var(--text);
    transition:background .12s;
  }
  .project-archive-item:hover{background:rgba(139,69,19,.04)}
  .project-archive-item input[type="checkbox"]{
    accent-color:var(--gold);width:16px;height:16px;cursor:pointer;
  }
  .project-archive-item .pa-name{flex:1;min-width:0;font-weight:500}
  .project-archive-item .pa-status{
    font-size:.65rem;font-weight:700;letter-spacing:.3px;
    text-transform:uppercase;color:var(--text-muted);
  }
  .project-archive-item.pa-disabled{opacity:.5}
  .project-texts-container{margin-top:12px}
  .project-texts-block{
    margin-bottom:10px;padding:10px 14px;
    background:var(--white);border:1px solid var(--border-light);
    border-radius:8px;
  }
  .project-texts-block-header{
    font-size:.72rem;font-weight:700;color:var(--brown-dark);
    margin-bottom:6px;display:flex;align-items:center;gap:6px;
  }
  .project-texts-block-count{
    font-size:.62rem;font-weight:600;color:var(--text-muted);margin-left:auto;
  }
  .project-view-info{
    display:flex;gap:24px;flex-wrap:wrap;
  }
  .project-info-card{
    background:var(--white);border:1px solid var(--border-light);
    border-radius:8px;padding:14px 18px;min-width:140px;
    box-shadow:0 1px 4px var(--shadow);
  }
  .project-info-card .pic-label{
    font-size:.68rem;font-weight:700;letter-spacing:.5px;
    text-transform:uppercase;color:var(--text-muted);margin-bottom:4px;
  }
  .project-info-card .pic-value{
    font-size:1.1rem;font-weight:600;color:var(--brown-dark);
  }

  /* ── Home view ──────────────────────────────────── */
  .home-view{
    flex:1;display:flex;flex-direction:column;min-width:0;
    background:var(--cream);
  }
  .home-header{
    flex-shrink:0;padding:24px 32px 20px;
    background:var(--white);border-bottom:1px solid var(--border);
    box-shadow:0 2px 8px var(--shadow);
    display:flex;align-items:center;justify-content:space-between;gap:16px;
  }
  .home-header h2{margin:0}
  .home-header-btn{
    padding:7px 16px;border:none;border-radius:6px;
    background:var(--accent);color:var(--white);
    font-size:.78rem;font-weight:700;font-family:var(--sans);
    cursor:pointer;transition:background .15s;letter-spacing:.3px;
  }
  .home-header-btn:hover{background:var(--accent-light)}
  .home-body{
    flex:1;overflow-y:auto;padding:24px 32px;
  }
  .home-body::-webkit-scrollbar{width:7px}
  .home-body::-webkit-scrollbar-thumb{background:var(--border);border-radius:9px}
  .home-project-grid{
    display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));
    gap:16px;
  }
  .home-project-card{
    background:var(--white);border:1.5px solid var(--border-light);
    border-radius:10px;padding:18px 20px;
    border-left:4px solid var(--gold);
    box-shadow:0 1px 4px var(--shadow);
    cursor:pointer;transition:box-shadow .2s,border-color .2s;
  }
  .home-project-card:hover{box-shadow:0 4px 16px var(--shadow)}
  .home-project-card h3{
    font-family:var(--serif);font-size:.95rem;color:var(--brown-dark);
    margin-bottom:4px;
  }
  .home-project-card .hpc-desc{
    font-size:.75rem;color:var(--text-muted);margin-bottom:10px;
    display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
  }
  .home-project-card .hpc-meta{
    font-size:.68rem;color:var(--text-muted);
    display:flex;gap:12px;
  }
  .hpc-delete-btn{
    position:absolute;top:8px;right:8px;
    background:none;border:none;cursor:pointer;
    color:var(--text-muted);opacity:0;transition:opacity .2s;
    padding:4px;font-size:.85rem;
  }
  .home-project-card{position:relative}
  .home-project-card:hover .hpc-delete-btn{opacity:.6}
  .hpc-delete-btn:hover{opacity:1!important;color:#c44}
  .ldi-delete-btn{
    background:none;border:none;cursor:pointer;
    color:rgba(255,255,255,.3);padding:2px 4px;font-size:.75rem;
    transition:color .15s;flex-shrink:0;
  }
  .ldi-delete-btn:hover{color:#e55}
  .pvh-delete-btn{
    background:none;border:none;cursor:pointer;
    color:var(--text-muted);padding:4px;font-size:.85rem;
    opacity:.4;transition:opacity .15s,color .15s;margin-left:auto;
  }
  .pvh-delete-btn:hover{opacity:1;color:#c44}
  .home-empty{
    text-align:center;padding:80px 20px;color:var(--text-muted);
  }
  .home-empty svg{margin-bottom:16px;opacity:.4}
  .home-empty h3{font-family:var(--serif);font-size:1rem;color:var(--text-light);margin-bottom:6px}
  .home-empty p{font-size:.82rem;max-width:360px;margin:0 auto}

  /* ── New Project modal ─────────────────────────── */
  .project-archive-picker{
    display:flex;flex-direction:column;gap:2px;
    max-height:180px;overflow-y:auto;
    border:1px solid var(--border-light);border-radius:6px;
    padding:4px 0;margin-top:4px;
  }
  .project-archive-picker::-webkit-scrollbar{width:5px}
  .project-archive-picker::-webkit-scrollbar-thumb{background:var(--border);border-radius:9px}
  .project-archive-pick-item{
    display:flex;align-items:center;gap:8px;
    padding:7px 10px;cursor:pointer;
    font-size:.78rem;color:var(--text);
    transition:background .12s;
  }
  .project-archive-pick-item:hover{background:rgba(139,69,19,.04)}
  .project-archive-pick-item input[type="checkbox"]{
    accent-color:var(--gold);width:15px;height:15px;cursor:pointer;
  }
  .project-archive-pick-item.pap-disabled{opacity:.5}
  .project-archive-pick-item .pap-status{
    margin-left:auto;font-size:.6rem;font-weight:700;letter-spacing:.3px;
    text-transform:uppercase;color:var(--text-muted);
  }

  /* ── Library section in sidebar ──────────────────── */
  .sidebar-library-section{
    padding:14px 12px 10px;
    border-bottom:1px solid rgba(255,255,255,.08);
    position:relative;
  }
  .sidebar-library-section.dropdown-open .sidebar-library-dropdown{display:block}
  .sidebar-library-dropdown{
    display:none;position:absolute;left:12px;right:12px;
    top:100%;margin-top:6px;
    background:var(--brown);border:1px solid rgba(255,255,255,.12);border-radius:8px;
    box-shadow:0 8px 28px rgba(0,0,0,.35), 0 2px 8px rgba(0,0,0,.2);
    z-index:60;overflow:hidden;
    max-height:320px;overflow-y:auto;
  }
  .sidebar-library-dropdown::before{
    content:"";position:absolute;top:-5px;left:20px;
    width:9px;height:9px;background:var(--brown);
    border-left:1px solid rgba(255,255,255,.12);
    border-top:1px solid rgba(255,255,255,.12);
    transform:rotate(45deg);
  }
  .library-dropdown-item{
    display:flex;align-items:center;gap:8px;
    padding:9px 12px;cursor:pointer;
    font-size:.78rem;font-weight:600;color:var(--cream);
    transition:background .12s;
    border-bottom:1px solid rgba(255,255,255,.05);
  }
  .library-dropdown-item:last-child{border-bottom:none}
  .library-dropdown-item:hover{background:rgba(255,255,255,.07)}
  .library-dropdown-item.active{background:rgba(255,255,255,.1)}
  .library-dropdown-item .ldi-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .library-dropdown-item .ldi-path{
    font-size:.6rem;color:rgba(255,255,255,.3);font-weight:500;
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:120px;
  }
  .library-dropdown-new{
    display:flex;align-items:center;gap:6px;
    padding:10px 12px;cursor:pointer;
    font-size:.78rem;font-weight:700;color:var(--gold-light);
    border-top:1px solid rgba(255,255,255,.07);
    transition:background .12s;
  }
  .library-dropdown-new:hover{background:rgba(255,255,255,.07)}

  /* New Library modal extras */
  .new-lib-type-row{
    display:flex;gap:12px;margin-top:6px;
  }
  .new-lib-type-row label{
    display:flex;align-items:center;gap:6px;
    font-size:.82rem;color:var(--text);cursor:pointer;
  }
  .new-lib-type-row input[type="radio"]{accent-color:var(--gold);cursor:pointer}

  /* ── Archive Builder ──────────────────────────────── */
  .archive-view{
    flex:1;display:flex;flex-direction:column;min-width:0;
    background:var(--cream);
  }
  .archive-header{
    flex-shrink:0;padding:16px 28px 14px;
    background:var(--white);border-bottom:1px solid var(--border);
    box-shadow:0 2px 8px var(--shadow);
    display:flex;align-items:center;gap:16px;
  }
  .archive-header-text{flex:1;min-width:0}
  .archive-title-row{display:flex;align-items:center;gap:6px}
  .archive-header p{font-size:.78rem;color:var(--text-muted);margin-top:2px}
  .lib-add-icon{
    width:24px;height:24px;border:none;border-radius:5px;
    background:transparent;color:var(--text-muted);cursor:pointer;
    display:flex;align-items:center;justify-content:center;
    transition:background .15s,color .15s;flex-shrink:0;
  }
  .lib-add-icon:hover{background:var(--border-light);color:var(--brown)}
  .lib-settings-btn{
    width:30px;height:30px;border:1.5px solid var(--border);border-radius:6px;
    background:var(--cream);color:var(--text-muted);cursor:pointer;
    display:flex;align-items:center;justify-content:center;flex-shrink:0;
    transition:background .15s,color .15s,border-color .15s;
    margin-top:2px;
  }
  .lib-settings-btn:hover{background:var(--accent);color:var(--white);border-color:var(--accent)}
  .lib-settings-btn[data-tip]{position:relative}
  .lib-settings-btn[data-tip]::after{
    content:attr(data-tip);
    position:absolute;top:calc(100% + 8px);right:0;transform:translateY(-4px);
    background:var(--brown-dark);color:var(--cream);
    font-family:var(--sans);font-size:.72rem;font-weight:600;
    letter-spacing:.3px;padding:5px 11px;border-radius:6px;
    white-space:nowrap;opacity:0;pointer-events:none;
    transition:opacity .2s,transform .2s;
    box-shadow:0 3px 10px var(--shadow);
    z-index:20;
  }
  .lib-settings-btn[data-tip]::before{
    content:'';position:absolute;top:calc(100% + 2px);right:10px;
    border:5px solid transparent;border-bottom-color:var(--brown-dark);
    opacity:0;pointer-events:none;transition:opacity .2s;
    z-index:20;
  }
  .lib-settings-btn[data-tip]:hover::after{opacity:1;transform:translateY(0)}
  .lib-settings-btn[data-tip]:hover::before{opacity:1}

  .library-body{
    flex:1;overflow-y:auto;padding:var(--lib-body-pad,16px 28px);
    display:flex;flex-direction:column;gap:var(--lib-body-gap,10px);
  }
  .library-body::-webkit-scrollbar{width:7px}
  .library-body::-webkit-scrollbar-thumb{background:var(--border);border-radius:9px}

  .lib-card{
    background:var(--white);border:1.5px solid var(--border-light);
    border-radius:var(--lib-radius,8px);padding:var(--lib-pad,12px 16px);
    box-shadow:0 1px 4px var(--shadow);
    transition:border-color .2s,background .2s,box-shadow .2s;
    cursor:pointer;
  }
  .lib-card:hover{box-shadow:0 2px 10px var(--shadow)}
  .lib-card-disabled{opacity:.65}
  .lib-card-header{display:flex;align-items:center;justify-content:space-between;gap:var(--lib-gap,6px);margin-bottom:var(--lib-header-mb,2px)}
  .lib-card-header:hover .lib-card-toggle{background:var(--border-light);color:var(--brown)}
  .lib-card-title{display:flex;align-items:center;gap:10px}
  .lib-card-title h3{
    font-family:var(--serif);font-size:var(--lib-title-size,.9rem);color:var(--brown-dark);
  }
  .lib-active-tag{
    font-size:.65rem;font-weight:700;text-transform:uppercase;
    letter-spacing:.5px;padding:3px 10px;border-radius:4px;
    background:rgba(184,134,11,.12);color:var(--gold);
  }
  .lib-card-meta{
    font-size:var(--lib-meta-size,.73rem);color:var(--text-muted);margin-bottom:var(--lib-meta-mb,4px);
  }
  .lib-card-files{margin-bottom:12px}
  .lib-card-progress{margin-top:8px}
  .lib-progress-bar{
    height:6px;background:var(--border-light);border-radius:9px;
    overflow:hidden;margin-bottom:6px;
  }
  .lib-progress-fill{
    height:100%;border-radius:9px;
    background:var(--gold);transition:width .3s;
  }
  .lib-progress-text{font-size:.73rem;color:var(--text-muted)}
  .lib-card-actions{margin-top:8px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
  .lib-process-btn{
    padding:6px 16px;background:var(--accent);color:var(--white);
    border:none;border-radius:6px;font-size:.76rem;font-weight:700;
    cursor:pointer;font-family:var(--sans);letter-spacing:.3px;
    transition:background .15s,opacity .15s;
  }
  .lib-process-btn:hover{background:var(--brown-dark)}
  .lib-process-btn:disabled{opacity:.6;cursor:default}
  .lib-sync-btn{
    padding:6px 16px;background:var(--gold);color:var(--brown-dark);
    border:none;border-radius:6px;font-size:.76rem;font-weight:700;
    cursor:pointer;font-family:var(--sans);letter-spacing:.3px;
    transition:background .15s,opacity .15s;
  }
  .lib-sync-btn:hover{background:var(--gold-light)}
  .lib-sync-btn:disabled{opacity:.6;cursor:default}

  /* ── Intake upload progress ── */
  .intake-upload-progress{
    padding:8px 12px;margin-bottom:6px;
    background:var(--cream);border:1px solid var(--border-light);
    border-radius:6px;transition:opacity .5s;
  }
  .intake-upload-progress.intake-progress-done{opacity:0}
  .intake-progress-name{
    font-size:.76rem;font-weight:600;color:var(--brown);
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-bottom:4px;
  }
  .intake-progress-bar{
    height:5px;background:var(--border-light);border-radius:3px;overflow:hidden;margin-bottom:3px;
  }
  .intake-progress-fill{
    height:100%;background:var(--gold);border-radius:3px;transition:width .3s ease;width:0;
  }
  .intake-progress-stage{
    font-size:.7rem;color:var(--text-muted);font-family:var(--sans);
  }

  .lib-process-progress{
    font-size:.72rem;color:var(--text-muted);font-family:var(--sans);
  }

  /* ── Texts list inside library card ───────────── */
  .lib-texts-section{
    margin-top:10px;border-top:1px solid var(--border-light);padding-top:10px;
  }
  .lib-texts-list{
    max-height:320px;overflow-y:auto;
    scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.1) transparent;
  }
  .lib-texts-match-count{
    font-size:.65rem;font-weight:600;color:var(--text-muted);
    white-space:nowrap;flex-shrink:0;
  }
  .lib-texts-list::-webkit-scrollbar{width:4px}
  .lib-texts-list::-webkit-scrollbar-thumb{background:rgba(0,0,0,.1);border-radius:2px}

  /* ── Source Browser ─────────────────────────── */
  .lib-card-sources .lib-card-body{padding:12px 16px}
  .source-browser-bar{
    display:flex;gap:8px;align-items:center;margin-bottom:12px;
  }
  .source-browser-select{
    padding:6px 10px;border:1px solid var(--border-light);border-radius:6px;
    background:var(--cream);color:var(--text);font-size:.82rem;
    font-family:var(--sans);cursor:pointer;
  }
  .source-browser-select:focus{border-color:var(--accent);outline:none}
  .source-browser-input{
    flex:1;padding:6px 10px;border:1px solid var(--border-light);border-radius:6px;
    background:#fff;color:var(--text);font-size:.82rem;font-family:var(--sans);
  }
  .source-browser-input:focus{border-color:var(--accent);outline:none}
  .source-browser-search-btn{
    padding:6px 14px;border:1px solid var(--gold);border-radius:6px;
    background:var(--gold-light,#fff8e1);color:var(--brown-dark,#5a4a3a);
    font-size:.82rem;font-family:var(--sans);font-weight:600;cursor:pointer;
  }
  .source-browser-search-btn:hover{background:var(--gold)}
  .source-browser-search-btn:disabled{opacity:.5;cursor:default}
  .source-browser-loading,.source-browser-empty{
    color:var(--text-muted);font-size:.82rem;font-family:var(--sans);
    padding:12px 0;text-align:center;
  }
  .source-browser-results{max-height:400px;overflow-y:auto}
  .source-result-card{
    display:flex;align-items:center;gap:10px;
    padding:8px 10px;border-bottom:1px solid var(--border-light);
  }
  .source-result-card:last-child{border-bottom:none}
  .source-result-info{flex:1;min-width:0}
  .source-result-title{
    font-size:.85rem;font-weight:600;color:var(--brown-dark,#5a4a3a);
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
    font-family:var(--sans);
  }
  .source-result-meta{
    font-size:.72rem;color:var(--text-muted);font-family:var(--sans);
    display:flex;gap:8px;flex-wrap:wrap;margin-top:2px;
  }
  .source-result-format{
    text-transform:uppercase;font-weight:600;letter-spacing:.3px;
  }
  .source-result-via{font-style:italic;opacity:.7}
  .source-import-btn{
    flex-shrink:0;padding:4px 12px;border:1px solid var(--gold);border-radius:5px;
    background:var(--gold-light,#fff8e1);color:var(--brown-dark,#5a4a3a);
    font-size:.78rem;font-family:var(--sans);font-weight:600;cursor:pointer;
  }
  .source-import-btn:hover{background:var(--gold)}
  .source-import-btn:disabled{opacity:.5;cursor:default}

  .lib-text-row{
    display:flex;align-items:center;gap:10px;
    padding:6px 8px;border-radius:5px;font-family:var(--sans);
    transition:background .12s;
  }
  .lib-text-row:hover{background:rgba(0,0,0,.03)}
  .lib-text-row .lt-main{
    flex:1;min-width:0;display:flex;flex-direction:column;gap:1px;
  }
  .lib-text-row .lt-title{
    font-size:.76rem;font-weight:600;
    color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  }
  .lib-text-row .lt-author{
    font-size:.7rem;font-weight:500;color:var(--text-light);
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
    font-style:italic;
  }
  .lib-text-row .lt-meta{
    font-size:.65rem;font-weight:400;color:var(--text-muted);
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  }
  /* Chicago citation cell, Main Library row (added 2026-05-03 per
   * UI audit). Italic serif so the citation reads as bibliography,
   * distinct from the bare metadata chips above it. Wraps so long
   * citations don't truncate; the title attr gives full text on hover. */
  .lib-text-row .lt-citation{
    display:block;
    font-family:'Times New Roman', Georgia, serif;
    font-style:italic;
    font-size:.72rem;
    line-height:1.35;
    color:var(--text);
    margin-top:.18rem;
    white-space:normal;
    word-break:break-word;
  }
  .lib-text-row .lt-chunks{
    font-size:.62rem;font-weight:600;color:var(--text-light);
    white-space:nowrap;flex-shrink:0;min-width:38px;text-align:right;
  }
  .lib-text-row.lt-processing .lt-title{color:var(--text-muted)}
  .lib-text-row.lt-processing .lt-chunks{color:var(--gold);opacity:.7}
  .lib-texts-empty{
    font-size:.74rem;color:var(--text-muted);padding:8px;font-style:italic;
  }

  /* ── Text detail panel ───────────────────────── */
  .text-detail-overlay{
    display:none;position:fixed;inset:0;
    background:rgba(0,0,0,.35);z-index:200;
    align-items:center;justify-content:center;
  }
  .text-detail-overlay.open{display:flex}
  .text-detail-panel{
    background:var(--white);border-radius:12px;
    box-shadow:0 12px 40px rgba(0,0,0,.2);
    width:420px;max-width:90vw;max-height:80vh;overflow-y:auto;
    padding:28px 32px 24px;position:relative;
    font-family:var(--sans);
  }
  .text-detail-close{
    position:absolute;top:12px;right:16px;
    background:none;border:none;font-size:1.2rem;
    color:var(--text-muted);cursor:pointer;line-height:1;
    padding:4px;
  }
  .text-detail-close:hover{color:var(--text)}
  .text-detail-title{
    font-family:var(--serif);font-size:1.15rem;font-weight:700;
    color:var(--brown-dark);margin-bottom:4px;padding-right:24px;
  }
  .text-detail-author{
    font-size:.85rem;color:var(--text-light);margin-bottom:16px;
  }
  .text-detail-grid{
    display:grid;grid-template-columns:auto 1fr;
    gap:6px 14px;font-size:.78rem;
  }
  .text-detail-grid dt{
    font-weight:700;color:var(--text-muted);text-transform:uppercase;
    font-size:.65rem;letter-spacing:.4px;padding-top:2px;
  }
  .text-detail-grid dd{
    margin:0;color:var(--text);font-weight:500;
  }
  .text-detail-grid dd.td-missing{
    color:var(--text-muted);font-style:italic;font-weight:400;
  }
  /* maintainer 2026-05-09 (Item 33): card-modal binary status pill —
   * "Ready for Research" (cream/gold) or "Processing" (cream/accent).
   * Removed text-transform:uppercase so the label reads natural-case.
   * Old td-indexed/td-queued/td-imported variants are kept as no-op
   * fallbacks for any callers that still pass them. */
  .text-detail-status{
    display:inline-block;padding:2px 10px;border-radius:4px;
    font-size:.7rem;font-weight:700;letter-spacing:.2px;
  }
  .text-detail-status.status-ready{
    background:#FAF6F0;
    color:var(--brown-dark, #35201A);
    border:1px solid var(--gold, #9E7A3C);
  }
  .text-detail-status.status-processing{
    background:#FAF6F0;
    color:var(--accent, #7A3A10);
    border:1px solid #D7CCC8;
  }
  .text-detail-status.td-indexed{
    background:rgba(76,175,80,.12);color:#2e7d32;
  }
  .text-detail-status.td-queued{
    background:rgba(184,134,11,.12);color:var(--gold);
  }
  .text-detail-status.td-imported{
    background:rgba(30,90,160,.12);color:#1E5AA0;
  }
  .text-detail-actions {
    margin-top: 20px;
    padding-top: 16px;
    border-top: 1px solid var(--border);
    display: flex;
    justify-content: flex-end;
  }
  .text-detail-read-btn {
    padding: 8px 20px;
    background: var(--brown);
    color: var(--cream);
    border: none;
    border-radius: 6px;
    font-size: .85rem;
    font-weight: 600;
    cursor: pointer;
    transition: background .15s;
  }
  .text-detail-read-btn:hover {
    background: var(--brown-dark, #3e2c1c);
  }

/* ═══════════════════════════════════════════════════════════════
   LIBRARY INTAKE PANEL — Pipeline mode overlay
   Embeds the intake-v2 SPA into the library view.
   All classes prefixed with .lib-intake- to avoid collisions.
   ═══════════════════════════════════════════════════════════════ */

  /* ── Layout container ────────────────────────────── */
  .lib-intake-panel{
    display:flex;height:100%;overflow:hidden;
    flex:1;min-height:0;
  }

  /* ── Header toggle button ────────────────────────── */
  .lib-header-icon-btn{
    width:30px;height:30px;border:1.5px solid var(--border);border-radius:6px;
    background:var(--cream);color:var(--text-muted);cursor:pointer;
    display:flex;align-items:center;justify-content:center;flex-shrink:0;
    transition:background .15s,color .15s,border-color .15s;
    position:relative;
  }
  .lib-header-icon-btn:hover{background:var(--accent);color:var(--white);border-color:var(--accent)}
  .lib-header-icon-btn.active{background:var(--accent);color:var(--white);border-color:var(--accent)}
  .lib-header-icon-btn[data-tip]::after{
    content:attr(data-tip);
    position:absolute;top:calc(100% + 8px);right:0;transform:translateY(-4px);
    background:var(--brown-dark);color:var(--cream);
    font-family:var(--sans);font-size:.72rem;font-weight:600;
    letter-spacing:.3px;padding:5px 11px;border-radius:6px;
    white-space:nowrap;opacity:0;pointer-events:none;
    transition:opacity .2s,transform .2s;
    box-shadow:0 3px 10px var(--shadow);z-index:20;
  }
  .lib-header-icon-btn[data-tip]::before{
    content:'';position:absolute;top:calc(100% + 2px);right:10px;
    border:5px solid transparent;border-bottom-color:var(--brown-dark);
    opacity:0;pointer-events:none;transition:opacity .2s;z-index:20;
  }
  .lib-header-icon-btn[data-tip]:hover::after{opacity:1;transform:translateY(0)}
  .lib-header-icon-btn[data-tip]:hover::before{opacity:1}

  /* ── Sidebar ─────────────────────────────────────── */
  .lib-intake-sidebar{
    width:272px;min-width:272px;
    background:var(--brown-dark);color:var(--cream);
    display:flex;flex-direction:column;
    border-right:1px solid rgba(0,0,0,.2);
    flex-shrink:0;
  }
  .lib-intake-sb-header{
    padding:20px 20px 14px;
    border-bottom:1px solid rgba(255,255,255,.08);
  }
  .lib-intake-sb-header h3{
    font-family:var(--sans);font-size:.88rem;font-weight:700;
    color:var(--cream);letter-spacing:.02em;
    display:flex;align-items:center;gap:8px;
  }
  .lib-intake-sb-badge{
    font-size:.55rem;font-weight:700;letter-spacing:.6px;text-transform:uppercase;
    color:var(--gold-light);
    border:1px solid rgba(184,152,104,.4);border-radius:4px;
    padding:2px 6px;line-height:1;
  }
  .lib-intake-sb-body{flex:1;overflow-y:auto;padding:0}
  .lib-intake-sb-body::-webkit-scrollbar{width:5px}
  .lib-intake-sb-body::-webkit-scrollbar-thumb{background:rgba(255,255,255,.12);border-radius:3px}

  .lib-intake-sb-section{
    padding:14px 18px;
    border-bottom:1px solid rgba(255,255,255,.06);
  }
  .lib-intake-sb-section:last-child{border-bottom:none}
  .lib-intake-sb-section h4{
    font-size:.65rem;font-weight:700;letter-spacing:.5px;text-transform:uppercase;
    color:var(--gold-light);margin-bottom:8px;
  }
  .lib-intake-sb-label{
    display:block;font-size:.73rem;color:rgba(250,246,240,.6);
    margin-bottom:4px;font-weight:500;
  }

  /* Sidebar inputs */
  .lib-intake-sb-select,
  .lib-intake-sb-input{
    width:100%;padding:6px 10px;
    background:rgba(255,255,255,.08);color:var(--cream);
    border:1px solid rgba(255,255,255,.12);border-radius:5px;
    font-size:.78rem;font-family:var(--sans);
    transition:border-color .15s;
  }
  .lib-intake-sb-select:focus,
  .lib-intake-sb-input:focus{border-color:rgba(255,255,255,.3);outline:none}
  .lib-intake-sb-select option{background:var(--brown);color:var(--cream)}

  .lib-intake-sb-range{width:100%;margin:6px 0 2px;accent-color:var(--gold)}
  .lib-intake-sb-range-row{
    display:flex;justify-content:space-between;
    font-size:.65rem;color:rgba(250,246,240,.4);
  }
  .lib-intake-sb-range-value{
    text-align:center;font-size:.78rem;font-weight:600;
    color:var(--gold-light);margin-top:1px;
  }

  .lib-intake-sb-row{display:flex;gap:6px;margin-top:8px}
  .lib-intake-sb-row .lib-intake-sb-input{flex:1}

  .lib-intake-sb-btn{
    padding:6px 14px;border:none;border-radius:5px;
    font-size:.72rem;font-weight:600;font-family:var(--sans);
    cursor:pointer;transition:all .15s;letter-spacing:.3px;
  }
  .lib-intake-sb-btn-gold{background:var(--gold);color:var(--white)}
  .lib-intake-sb-btn-gold:hover{background:var(--gold-light)}
  .lib-intake-sb-btn-outline{
    background:transparent;color:var(--gold-light);
    border:1px solid rgba(184,152,104,.35);
  }
  .lib-intake-sb-btn-outline:hover{background:rgba(184,152,104,.1);border-color:var(--gold-light)}
  .lib-intake-sb-btn-danger{background:rgba(156,59,59,.7);color:var(--cream)}
  .lib-intake-sb-btn-danger:hover{background:rgba(156,59,59,.9)}
  .lib-intake-sb-btn-full{width:100%;margin-top:6px}

  /* Language chips */
  .lib-intake-lang-chips{display:flex;flex-wrap:wrap;gap:5px;margin-top:6px}
  .lib-intake-lang-chip{
    padding:3px 10px;border-radius:4px;
    font-size:.68rem;font-weight:600;letter-spacing:.3px;
    cursor:pointer;transition:all .15s;
    border:1px solid rgba(255,255,255,.12);
    color:rgba(250,246,240,.5);background:transparent;
  }
  .lib-intake-lang-chip:hover{border-color:rgba(255,255,255,.3);color:var(--cream)}
  .lib-intake-lang-chip.active{
    background:rgba(158,122,60,.25);border-color:var(--gold);color:var(--gold-light);
  }

  /* Metadata checkboxes */
  .lib-intake-sb-check{
    display:block;font-size:.73rem;color:rgba(250,246,240,.6);
    font-weight:500;margin-top:6px;cursor:pointer;
  }
  .lib-intake-sb-check:first-child{margin-top:0}
  .lib-intake-sb-check input{accent-color:var(--gold);margin-right:4px;vertical-align:middle}

  /* Status dots */
  .lib-intake-status-row{display:flex;align-items:center;gap:6px;margin-top:8px}
  .lib-intake-status-row:first-child{margin-top:0}
  .lib-intake-status-dot{
    width:7px;height:7px;border-radius:50%;
    background:rgba(255,255,255,.2);flex-shrink:0;
  }
  .lib-intake-status-dot.ok{background:var(--green)}
  .lib-intake-status-dot.err{background:var(--red)}
  .lib-intake-status-label{font-size:.7rem;color:rgba(250,246,240,.5)}

  /* ── Main area ───────────────────────────────────── */
  .lib-intake-main{
    flex:1;display:flex;flex-direction:column;
    overflow:hidden;min-width:0;background:var(--cream);
  }

  /* Tab bar */
  .lib-intake-tabs{
    display:flex;gap:0;padding:0 28px;
    border-bottom:1px solid var(--border-light);
    background:var(--white);flex-shrink:0;
  }
  .lib-intake-tab{
    padding:12px 18px;font-size:.75rem;font-weight:600;
    color:var(--text-muted);cursor:pointer;
    border-bottom:2px solid transparent;transition:all .15s;
    letter-spacing:.3px;background:none;border-top:none;border-left:none;border-right:none;
    font-family:var(--sans);
  }
  .lib-intake-tab:hover{color:var(--text)}
  .lib-intake-tab.active{color:var(--accent);border-bottom-color:var(--accent)}

  /* Scrollable tab body */
  .lib-intake-body{
    flex:1;overflow-y:auto;padding:24px 28px;
  }
  .lib-intake-body::-webkit-scrollbar{width:7px}
  .lib-intake-body::-webkit-scrollbar-thumb{background:var(--border);border-radius:9px}

  /* ── Dropzone ────────────────────────────────────── */
  .lib-intake-dropzone{
    border:2px dashed var(--border);border-radius:10px;
    padding:44px 24px;text-align:center;
    background:var(--white);cursor:pointer;
    transition:all .2s;margin-bottom:24px;
  }
  .lib-intake-dropzone:hover{border-color:var(--gold-light)}
  .lib-intake-dropzone.dragover{border-color:var(--gold);background:rgba(158,122,60,.04)}
  .lib-intake-dropzone-icon{
    width:40px;height:40px;margin:0 auto 12px;
    stroke:var(--text-muted);opacity:.5;
  }
  .lib-intake-dropzone p{color:var(--text-muted);font-size:.88rem;margin-bottom:4px}
  .lib-intake-dropzone .hint{font-size:.73rem;color:var(--border)}

  /* ── Processing Queue ────────────────────────────── */
  .lib-intake-queue-section h3{
    font-size:.72rem;font-weight:700;letter-spacing:.5px;text-transform:uppercase;
    color:var(--text-muted);margin-bottom:12px;
  }
  .lib-intake-queue-list{
    display:flex;flex-direction:column;gap:8px;margin-bottom:24px;
  }

  .lib-intake-queue-card{
    background:var(--white);border:1px solid var(--border-light);
    border-radius:10px;padding:14px 18px;
    border-left:3px solid transparent;
    box-shadow:0 1px 3px var(--shadow);
    transition:all .15s;
  }
  .lib-intake-queue-card:hover{box-shadow:0 3px 10px var(--shadow)}
  .lib-intake-queue-card.stage-queued{border-left-color:var(--border)}
  .lib-intake-queue-card.stage-parsing{border-left-color:#b89868}
  .lib-intake-queue-card.stage-review{border-left-color:var(--gold)}
  .lib-intake-queue-card.stage-embedding{border-left-color:var(--blue)}
  .lib-intake-queue-card.stage-storing{border-left-color:#5a3a6a}
  .lib-intake-queue-card.stage-complete{border-left-color:var(--green)}
  .lib-intake-queue-card.stage-error{border-left-color:var(--red)}

  .lib-intake-qc-top{display:flex;align-items:center;gap:10px}
  .lib-intake-qc-name{
    flex:1;font-size:.85rem;font-weight:600;color:var(--brown-dark);
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  }
  .lib-intake-qc-badge{
    font-size:.63rem;font-weight:700;letter-spacing:.4px;text-transform:uppercase;
    padding:3px 10px;border-radius:4px;white-space:nowrap;
  }
  .lib-intake-badge-queued{background:#e8e8e8;color:#666}
  .lib-intake-badge-parsing{background:rgba(184,152,104,.15);color:var(--brown)}
  .lib-intake-badge-review{background:rgba(158,122,60,.12);color:var(--gold)}
  .lib-intake-badge-embedding{background:rgba(58,90,140,.1);color:var(--blue)}
  .lib-intake-badge-storing{background:rgba(90,58,106,.1);color:#5a3a6a}
  .lib-intake-badge-complete{background:var(--green-light);color:#2a6a2a}
  .lib-intake-badge-error{background:var(--red-light);color:var(--red)}

  .lib-intake-qc-progress{margin-top:8px}
  .lib-intake-qc-bar-bg{
    width:100%;height:5px;background:var(--border-light);
    border-radius:9px;overflow:hidden;
  }
  .lib-intake-qc-bar-fill{
    height:100%;background:var(--gold);border-radius:9px;
    transition:width .3s;
  }
  .lib-intake-qc-bar-fill.complete{background:var(--green)}
  .lib-intake-qc-bar-fill.error{background:var(--red)}

  .lib-intake-qc-meta{
    margin-top:6px;font-size:.7rem;color:var(--text-muted);
    display:flex;gap:16px;
  }

  /* ── Metadata Review ─────────────────────────────── */
  .lib-intake-review-section{margin-bottom:24px}
  .lib-intake-review-section h3{
    font-size:.72rem;font-weight:700;letter-spacing:.5px;text-transform:uppercase;
    color:var(--text-muted);margin-bottom:12px;
  }

  .lib-intake-review-card{
    background:var(--white);border:1px solid var(--border-light);
    border-radius:10px;border-left:3px solid var(--gold);
    box-shadow:0 1px 4px var(--shadow);
    margin-bottom:12px;overflow:hidden;
    transition:opacity .3s,max-height .3s,margin .3s;
  }
  .lib-intake-review-header{
    padding:14px 18px 10px;display:flex;align-items:flex-start;gap:12px;
    border-bottom:1px solid var(--border-light);
  }
  .lib-intake-review-file-icon{
    width:36px;height:36px;border-radius:6px;
    display:flex;align-items:center;justify-content:center;
    font-size:.6rem;font-weight:700;letter-spacing:.3px;text-transform:uppercase;
    flex-shrink:0;
  }
  .lib-intake-icon-pdf{background:rgba(156,59,59,.1);color:var(--red)}
  .lib-intake-icon-txt{background:rgba(90,58,106,.1);color:#5a3a6a}
  .lib-intake-icon-img{background:rgba(58,90,140,.1);color:var(--blue)}
  .lib-intake-icon-md{background:rgba(74,124,89,.1);color:var(--green)}
  .lib-intake-review-file-info{flex:1;min-width:0}
  .lib-intake-review-file-name{font-size:.85rem;font-weight:600;color:var(--brown-dark)}
  .lib-intake-review-file-sub{font-size:.68rem;color:var(--text-muted);margin-top:2px}

  .lib-intake-conf-high{
    padding:3px 10px;border-radius:4px;
    font-size:.6rem;font-weight:700;letter-spacing:.4px;text-transform:uppercase;
    white-space:nowrap;
    background:var(--green-light);color:#2a6a2a;
  }
  .lib-intake-conf-medium{
    padding:3px 10px;border-radius:4px;
    font-size:.6rem;font-weight:700;letter-spacing:.4px;text-transform:uppercase;
    white-space:nowrap;
    background:rgba(184,152,104,.15);color:var(--brown);
  }
  .lib-intake-conf-low{
    padding:3px 10px;border-radius:4px;
    font-size:.6rem;font-weight:700;letter-spacing:.4px;text-transform:uppercase;
    white-space:nowrap;
    background:var(--red-light);color:var(--red);
  }

  .lib-intake-review-body{padding:16px 18px}
  .lib-intake-review-grid{
    display:grid;grid-template-columns:1fr 1fr;gap:10px 16px;
  }
  .lib-intake-review-field{display:flex;flex-direction:column;gap:3px}
  .lib-intake-review-field.full{grid-column:1/-1}
  .lib-intake-rf-label{
    font-size:.63rem;font-weight:700;letter-spacing:.4px;text-transform:uppercase;
    color:var(--text-muted);
  }
  .lib-intake-rf-input{
    padding:6px 10px;border:1.5px solid var(--border);border-radius:6px;
    font-size:.82rem;font-family:var(--sans);color:var(--text);
    background:var(--cream);transition:border-color .15s;
    width:100%;
  }
  .lib-intake-rf-input:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px rgba(122,58,16,.08)}
  .lib-intake-rf-input.flagged{border-color:var(--gold);background:rgba(158,122,60,.04)}
  .lib-intake-rf-input::placeholder{color:var(--border)}
  .lib-intake-rf-hint{font-size:.6rem;color:var(--border);font-style:italic}

  .lib-intake-review-preview{
    margin-top:12px;padding:12px 14px;
    background:var(--cream);border:1px solid var(--border-light);border-radius:6px;
    font-family:var(--serif);font-size:.8rem;line-height:1.6;color:var(--text-light);
    max-height:120px;overflow-y:auto;
  }
  .lib-intake-review-preview .ocr-warning{
    display:block;font-family:var(--sans);font-size:.68rem;
    color:var(--gold);font-style:italic;margin-bottom:6px;
  }

  .lib-intake-review-actions{
    padding:12px 18px;border-top:1px solid var(--border-light);
    display:flex;justify-content:flex-end;gap:8px;
    background:rgba(240,235,227,.3);
  }
  .lib-intake-ra-btn{
    padding:7px 18px;border:none;border-radius:6px;
    font-size:.75rem;font-weight:600;font-family:var(--sans);
    cursor:pointer;transition:all .15s;letter-spacing:.2px;
  }
  .lib-intake-ra-btn-skip{background:transparent;color:var(--text-muted);border:1px solid var(--border)}
  .lib-intake-ra-btn-skip:hover{background:var(--border-light)}
  .lib-intake-ra-btn-confirm{background:var(--accent);color:var(--white)}
  .lib-intake-ra-btn-confirm:hover{background:var(--accent-light)}

  /* ── Archives tab ────────────────────────────────── */
  .lib-intake-archive-grid{display:flex;flex-direction:column;gap:10px}
  .lib-intake-archive-card{
    background:var(--white);border:1px solid var(--border-light);
    border-radius:10px;padding:16px 20px;
    box-shadow:0 1px 3px var(--shadow);
    display:flex;align-items:center;gap:16px;
  }
  .lib-intake-ac-info{flex:1;min-width:0}
  .lib-intake-ac-name{font-size:.88rem;font-weight:600;color:var(--brown-dark)}
  .lib-intake-ac-stats{font-size:.7rem;color:var(--text-muted);margin-top:3px}
  .lib-intake-ac-actions{display:flex;gap:6px}
  .lib-intake-ac-btn{
    padding:5px 12px;border-radius:5px;
    font-size:.68rem;font-weight:600;font-family:var(--sans);
    cursor:pointer;transition:all .15s;border:1px solid var(--border);
    background:var(--white);color:var(--text-light);
  }
  .lib-intake-ac-btn:hover{background:var(--cream-dark)}
  .lib-intake-ac-btn.danger{color:var(--red);border-color:rgba(156,59,59,.3)}
  .lib-intake-ac-btn.danger:hover{background:rgba(156,59,59,.05)}

  /* ── Search tab ──────────────────────────────────── */
  .lib-intake-search-wrap{max-width:640px}
  .lib-intake-search-bar{display:flex;gap:8px;margin-bottom:20px}
  .lib-intake-search-input{
    flex:1;padding:8px 12px;
    border:1.5px solid var(--border);border-radius:6px;
    font-size:.85rem;font-family:var(--serif);color:var(--text);
    background:var(--white);
  }
  .lib-intake-search-input:focus{border-color:var(--accent);outline:none}
  .lib-intake-search-btn{
    padding:7px 18px;border:none;border-radius:6px;
    background:var(--accent);color:var(--white);
    font-size:.75rem;font-weight:600;font-family:var(--sans);
    cursor:pointer;transition:background .15s;
  }
  .lib-intake-search-btn:hover{background:var(--accent-light)}

  .lib-intake-search-result{
    background:var(--white);border:1px solid var(--border-light);
    border-radius:8px;padding:14px 18px;margin-bottom:10px;
    box-shadow:0 1px 3px var(--shadow);
  }
  .lib-intake-search-result-header{
    display:flex;align-items:center;gap:10px;margin-bottom:6px;
  }
  .lib-intake-search-result-title{
    flex:1;font-size:.85rem;font-weight:600;color:var(--brown-dark);
  }
  .lib-intake-search-result-score{
    font-size:.65rem;font-weight:700;letter-spacing:.3px;
    color:var(--gold);white-space:nowrap;
  }
  .lib-intake-search-result-text{
    font-size:.8rem;line-height:1.55;color:var(--text-light);
    font-family:var(--serif);
  }
  .lib-intake-search-result-meta{
    margin-top:6px;font-size:.68rem;color:var(--text-muted);
    display:flex;gap:12px;flex-wrap:wrap;
  }
  .lib-intake-search-result-scores{
    display:flex;gap:8px;margin-top:6px;
  }
  .lib-intake-score-pill{
    font-size:.6rem;font-weight:700;letter-spacing:.3px;
    padding:2px 8px;border-radius:3px;
    background:var(--cream);color:var(--text-muted);
  }

  /* ── Empty state ─────────────────────────────────── */
  .lib-intake-empty{
    text-align:center;padding:60px 20px;color:var(--text-muted);
  }
  .lib-intake-empty p{
    font-family:var(--serif);font-size:.9rem;font-style:italic;line-height:1.6;
  }

  /* ── Footer ──────────────────────────────────────── */
  .lib-intake-footer{
    padding:10px 28px;border-top:1px solid var(--border-light);
    font-size:.68rem;color:var(--text-muted);
    display:flex;justify-content:space-between;
    background:var(--white);flex-shrink:0;
  }

  /* ── Sources / Request Materials tab ─────────────── */
  .li-sources{padding:24px 28px}

  .li-src-bar{
    display:flex;gap:8px;max-width:680px;margin-bottom:12px;
  }
  .li-src-input{
    flex:1;padding:8px 14px;border:1px solid var(--border);border-radius:6px;
    font-family:var(--serif);font-size:.88rem;color:var(--brown);
    background:var(--white);
  }
  .li-src-input:focus{outline:none;border-color:var(--gold)}
  .li-src-btn{
    padding:8px 20px;border:none;border-radius:6px;
    background:var(--accent);color:var(--white);
    font-family:var(--sans);font-size:.78rem;font-weight:700;
    letter-spacing:.5px;text-transform:uppercase;cursor:pointer;
    transition:background .15s;
  }
  .li-src-btn:hover{background:var(--brown-dark)}

  /* Source checkbox chips */
  .li-src-chips{
    display:flex;gap:8px;flex-wrap:wrap;margin-bottom:20px;
  }
  .li-src-chip{
    font-size:.7rem;display:flex;align-items:center;gap:5px;
    cursor:pointer;font-family:var(--sans);color:var(--text-muted);
  }
  .li-src-chip input[type="checkbox"]{accent-color:var(--gold);width:14px;height:14px}

  /* Results area */
  .li-src-results{border:1px solid var(--border-light);border-radius:8px;background:var(--white);overflow:hidden}
  .li-src-group-header{
    padding:10px 16px;font-size:.64rem;font-weight:700;
    letter-spacing:.4px;text-transform:uppercase;
    color:var(--text-muted);border-bottom:1px solid var(--border-light);
    background:rgba(139,69,19,.02);
  }
  .li-src-row{
    padding:14px 16px;border-bottom:1px solid var(--border-light);
    display:flex;gap:14px;transition:background .12s;
  }
  .li-src-row:last-child{border-bottom:none}
  .li-src-row:hover{background:rgba(139,69,19,.02)}

  /* Cover thumbnail */
  .li-src-cover{
    width:50px;height:70px;background:var(--cream,#f5f0e8);border-radius:4px;
    flex-shrink:0;display:flex;align-items:center;justify-content:center;
    font-size:.55rem;color:var(--text-muted);text-transform:uppercase;overflow:hidden;
  }
  .li-src-cover img{width:100%;height:100%;object-fit:cover}

  /* Info block */
  .li-src-info{flex:1;min-width:0}
  .li-src-title{font-size:.84rem;font-weight:600;color:var(--brown-dark,#3a2a1a);font-family:var(--serif)}
  .li-src-meta{font-size:.7rem;color:var(--text-muted);margin-top:3px;font-family:var(--sans)}

  /* Action buttons */
  .li-src-actions{display:flex;gap:6px;margin-top:8px}
  .li-src-import-btn{
    padding:5px 14px;border:1.5px solid var(--gold);border-radius:5px;
    background:transparent;color:var(--gold);
    font-family:var(--sans);font-size:.7rem;font-weight:700;
    letter-spacing:.3px;text-transform:uppercase;cursor:pointer;
    transition:background .15s,color .15s;
  }
  .li-src-import-btn:hover{background:var(--gold);color:var(--white)}
  .li-src-import-btn:disabled{opacity:.5;cursor:default}
  .li-src-view-btn{
    padding:5px 14px;border:1px solid var(--border);border-radius:5px;
    background:transparent;color:var(--text-muted);
    font-family:var(--sans);font-size:.7rem;font-weight:600;
    text-decoration:none;text-transform:uppercase;letter-spacing:.3px;
    transition:border-color .15s,color .15s;
  }
  .li-src-view-btn:hover{border-color:var(--gold);color:var(--gold)}

  /* Loading spinner */
  @keyframes li-spin{to{transform:rotate(360deg)}}
  .li-spinner{
    width:16px;height:16px;border:2px solid var(--border);
    border-top-color:var(--gold);border-radius:50%;
    animation:li-spin .6s linear infinite;display:inline-block;
    vertical-align:middle;margin-right:8px;
  }
  .li-src-loading{padding:28px;text-align:center;font-size:.82rem;color:var(--text-muted);font-family:var(--sans)}
  .li-src-empty{text-align:center;padding:48px 20px}
  .li-src-empty p{font-family:var(--serif);font-size:.88rem;font-style:italic;color:var(--text-muted);line-height:1.6}

  /* Summary bar */
  .li-src-summary{
    display:flex;justify-content:space-between;align-items:center;
    padding:10px 16px;font-size:.7rem;color:var(--text-muted);
    font-family:var(--sans);border-bottom:1px solid var(--border-light);
    background:rgba(139,69,19,.015);
  }
  .li-src-pagesize{display:flex;align-items:center;gap:4px}
  .li-src-ps-btn{
    padding:2px 8px;border:1px solid var(--border);border-radius:4px;
    background:var(--white);font-size:.68rem;font-family:var(--sans);
    cursor:pointer;color:var(--text-muted);transition:all .12s;
  }
  .li-src-ps-btn:hover{border-color:var(--gold);color:var(--gold)}
  .li-src-ps-btn.active{background:var(--gold);color:var(--white);border-color:var(--gold)}

  /* Pagination controls */
  .li-src-pagination{
    display:flex;justify-content:center;align-items:center;gap:16px;
    padding:14px 16px;border-top:1px solid var(--border-light);
  }
  .li-src-pg-btn{
    padding:6px 16px;border:1px solid var(--border);border-radius:5px;
    background:var(--white);font-size:.74rem;font-family:var(--sans);
    font-weight:600;cursor:pointer;color:var(--brown);transition:all .12s;
  }
  .li-src-pg-btn:hover:not(:disabled){border-color:var(--gold);color:var(--gold)}
  .li-src-pg-btn:disabled{opacity:.35;cursor:default}
  .li-src-pg-info{font-size:.72rem;color:var(--text-muted);font-family:var(--sans)}

/* ═══════════════════════════════════════════════════════════════
   ACQUISITIONS VIEW — top-level container
   ═══════════════════════════════════════════════════════════════ */
.acquisitions-view{
  flex:1;display:flex;flex-direction:column;min-width:0;
  background:var(--cream);
}

/* Reader overlay mode removed — reader now renders inside Reading Room view */

/* ═══════════════════════════════════════════════════════════════
   LIBRARY TABLE VIEW
   ═══════════════════════════════════════════════════════════════ */
  .li-library-view{padding:0}
  .li-lib-toolbar{
    display:flex;gap:8px;align-items:center;margin-bottom:16px;
  }
  .li-lib-count{font-size:.68rem;color:var(--text-muted);font-family:var(--sans)}
  .li-lib-table-wrap{
    background:var(--white);border:1px solid var(--border-light);
    border-radius:8px;box-shadow:0 1px 3px var(--shadow);overflow:hidden;
  }
  .li-lib-table{
    width:100%;border-collapse:collapse;font-size:.78rem;font-family:var(--sans);
  }
  .li-lib-table th{
    text-align:left;font-size:.62rem;font-weight:700;letter-spacing:.4px;text-transform:uppercase;
    color:var(--text-muted);padding:8px 12px;border-bottom:1px solid var(--border);
  }
  .li-lib-table td{
    padding:10px 12px;border-bottom:1px solid var(--border-light);vertical-align:top;
  }
  .li-lib-table tr:hover td{background:rgba(139,69,19,.02)}
  .li-lib-mono{font-family:var(--mono,Consolas,monospace);font-size:.7rem;color:var(--text-light)}
  .li-lib-td-title{
    font-weight:600;cursor:pointer;max-width:220px;
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
    color:var(--accent);
  }
  .li-lib-td-title:hover{text-decoration:underline}
  .li-lib-actions{display:flex;gap:4px}
  .li-lib-act-btn{
    width:28px;height:28px;padding:0;display:inline-flex;align-items:center;justify-content:center;
    border-radius:5px;background:transparent;border:1px solid var(--border);
    color:var(--text-muted);cursor:pointer;transition:all .12s;
  }
  .li-lib-act-btn:hover{background:var(--cream-dark);color:var(--text);border-color:var(--gold)}
  .li-lib-act-danger{color:var(--red)}
  .li-lib-act-danger:hover{background:rgba(156,59,59,.05);border-color:rgba(156,59,59,.3)}
  .li-fmt-badge{font-size:.58rem}
  .li-fmt-badge.li-fmt-pdf{background:rgba(156,59,59,.1);color:var(--red)}
  .li-fmt-badge.li-fmt-epub{background:rgba(90,58,106,.1);color:#5a3a6a}
  .li-fmt-badge.li-fmt-txt,.li-fmt-badge.li-fmt-text{background:rgba(184,152,104,.15);color:var(--brown)}
  .li-fmt-badge.li-fmt-docx,.li-fmt-badge.li-fmt-doc{background:rgba(58,90,140,.1);color:var(--blue)}
  .li-fmt-badge.li-fmt-html,.li-fmt-badge.li-fmt-htm{background:rgba(90,58,106,.08);color:#5a3a6a}
  .li-fmt-badge.li-fmt-md{background:rgba(74,124,89,.1);color:var(--green)}

/* ═══════════════════════════════════════════════════════════════
   DOCUMENT DETAIL
   ═══════════════════════════════════════════════════════════════ */
  .li-doc-detail{padding:0}
  .li-doc-card{
    background:var(--white);border:1px solid var(--border-light);
    border-radius:10px;padding:20px;margin-bottom:16px;
    box-shadow:0 1px 4px var(--shadow);
  }
  .li-doc-header{display:flex;align-items:flex-start;gap:12px;margin-bottom:16px}
  .li-doc-title{font-size:1.05rem;font-weight:600;color:var(--brown-dark);font-family:var(--serif)}
  .li-doc-subtitle{font-size:.78rem;color:var(--text-muted);margin-top:4px}
  .li-doc-act{text-decoration:none;display:inline-block}
  .li-doc-grid{
    display:grid;grid-template-columns:1fr 1fr;gap:10px 16px;
  }
  .li-doc-field{display:flex;flex-direction:column;gap:2px}
  .li-doc-fl{font-size:.6rem;font-weight:700;letter-spacing:.4px;text-transform:uppercase;color:var(--text-muted)}
  .li-doc-fv{font-size:.82rem;color:var(--text)}
  .li-doc-fv-empty{color:var(--border);font-style:italic}
  .li-doc-chunk-text{
    font-size:.75rem;font-family:var(--serif);color:var(--text-light);
    max-width:400px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  }
  .li-doc-chunks-section{margin-top:16px}
  .li-sec-title{
    font-size:.68rem;font-weight:700;letter-spacing:.4px;text-transform:uppercase;
    color:var(--text-muted);margin-bottom:10px;
  }
  .li-verify-btn{
    width:24px;height:24px;padding:0;display:inline-flex;align-items:center;justify-content:center;
    border-radius:4px;background:transparent;border:1px solid var(--border);
    color:var(--text-muted);cursor:pointer;transition:all .12s;flex-shrink:0;
  }
  .li-verify-btn:hover{background:rgba(158,122,60,.08);color:var(--gold);border-color:var(--gold)}
  .li-back-btn{font-size:.72rem}

/* ═══════════════════════════════════════════════════════════════
   JOBS VIEW
   ═══════════════════════════════════════════════════════════════ */
  .li-jobs-view{padding:0}
  .li-jobs-section{margin-bottom:24px}
  .li-job-stages{display:flex;gap:4px;margin:10px 0 6px;flex-wrap:wrap}
  .li-job-stage{
    font-size:.58rem;font-weight:700;letter-spacing:.3px;text-transform:uppercase;
    padding:3px 8px;border-radius:3px;
    background:var(--cream-dark,#F0EBE3);color:var(--text-muted);
  }
  .li-jstage-active{background:rgba(58,90,140,.1);color:var(--blue)}
  .li-jstage-done{background:rgba(74,124,89,.1);color:var(--green)}
  .li-jstage-error{background:rgba(156,59,59,.1);color:var(--red)}
  .li-resume-btn{font-size:.68rem}
  .li-view-doc-link{font-size:.68rem}

/* ═══════════════════════════════════════════════════════════════
   ARCHIVIST
   ═══════════════════════════════════════════════════════════════ */
  .li-archivist-view{padding:0}
  .li-arch-stats{
    display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin-bottom:20px;
  }
  .li-arch-stat{
    background:var(--white);border:1px solid var(--border-light);
    border-radius:8px;padding:16px 18px;border-left:3px solid var(--border);
    box-shadow:0 1px 3px var(--shadow);
  }
  .li-arch-stat-gold{border-left-color:var(--gold)}
  .li-arch-stat-red{border-left-color:var(--red)}
  .li-arch-stat-blue{border-left-color:var(--blue)}
  .li-arch-stat-green{border-left-color:var(--green)}
  .li-arch-stat-val{font-size:1.5rem;font-weight:700;color:var(--brown-dark);font-family:var(--mono,Consolas,monospace)}
  .li-arch-stat-label{font-size:.68rem;color:var(--text-muted);margin-top:2px;text-transform:uppercase;letter-spacing:.3px;font-weight:600}
  .li-arch-toolbar{display:flex;gap:8px;margin-bottom:16px;align-items:center;flex-wrap:wrap}
  .li-arch-filter-label{font-size:.68rem;color:var(--text-muted);display:flex;align-items:center;gap:4px}
  .li-conf-badge{
    display:inline-block;padding:3px 10px;border-radius:4px;
    font-size:.62rem;font-weight:700;letter-spacing:.3px;text-transform:uppercase;
  }
  .li-conf-high{background:rgba(74,124,89,.1);color:var(--green)}
  .li-conf-medium{background:rgba(158,122,60,.1);color:var(--gold)}
  .li-conf-low{background:rgba(156,59,59,.1);color:var(--red)}

  /* Archivist review split */
  .li-archivist-review{padding:0}
  .li-arch-nav{display:flex;align-items:center;gap:8px;margin-bottom:12px;font-size:.72rem;flex-wrap:wrap}
  .li-arch-pos{color:var(--text-muted);font-family:var(--mono,Consolas,monospace);font-size:.72rem}
  .li-arch-split{
    display:grid;grid-template-columns:1fr 1fr;gap:0;
    min-height:400px;max-height:calc(100vh - 280px);overflow:hidden;
    border:1px solid var(--border-light);border-radius:10px;
    background:var(--white);box-shadow:0 1px 4px var(--shadow);
  }
  .li-arch-left{overflow-y:auto;border-right:1px solid var(--border-light);padding:16px}
  .li-arch-right{overflow-y:auto;padding:16px}
  .li-arch-actions{display:flex;gap:6px;margin-top:16px;flex-wrap:wrap}
  .li-ocr-banner{
    background:rgba(158,122,60,.08);border:1px solid rgba(158,122,60,.2);
    border-radius:8px;padding:8px 14px;font-size:.72rem;color:var(--gold);
    margin-bottom:12px;display:flex;align-items:center;gap:8px;
  }
  .li-meta-field{margin-bottom:10px}
  .li-meta-field label{
    display:block;font-size:.6rem;font-weight:700;letter-spacing:.4px;text-transform:uppercase;
    color:var(--text-muted);margin-bottom:3px;
  }
  .li-conf-dot{
    width:8px;height:8px;border-radius:50%;display:inline-block;margin-right:4px;vertical-align:middle;
  }
  .li-cdot-high{background:var(--green)}
  .li-cdot-medium{background:var(--gold)}
  .li-cdot-low{background:var(--red)}
  .li-reader-content{
    max-width:100%;font-family:var(--serif);font-size:.82rem;line-height:1.7;color:var(--text-light);
  }
  .li-reader-content h1,.li-reader-content h2,.li-reader-content h3{
    color:var(--brown-dark);font-family:var(--sans);margin:16px 0 8px;
  }
  .li-reader-content p{margin-bottom:12px;text-align:justify}

/* ═══════════════════════════════════════════════════════════════
   CHUNK REVIEW
   ═══════════════════════════════════════════════════════════════ */
  .li-chunk-review{padding:0}
  .li-chunk-batch-bar{display:flex;gap:8px;margin-bottom:12px;flex-wrap:wrap}
  .li-chunk-card{
    background:var(--white);border:1px solid var(--border-light);
    border-radius:8px;padding:14px 16px;margin-bottom:8px;
    border-left:3px solid var(--border);
    box-shadow:0 1px 3px var(--shadow);
  }
  .li-chunk-card.li-chunk-verified{border-left-color:var(--green)}
  .li-chunk-card.li-chunk-flagged{border-left-color:var(--red)}
  .li-chunk-hdr{display:flex;align-items:center;gap:8px;margin-bottom:6px;flex-wrap:wrap}
  .li-chunk-meta{font-size:.62rem;color:var(--text-muted)}
  .li-chunk-text{
    font-family:var(--serif);font-size:.8rem;line-height:1.6;color:var(--text-light);
    max-height:120px;overflow-y:auto;margin:8px 0;padding:8px;
    background:var(--cream);border-radius:4px;
  }
  .li-chunk-fields{display:grid;grid-template-columns:1fr 1fr;gap:6px 12px}
  .li-chunk-fl{
    font-size:.58rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;
    display:block;margin-bottom:2px;
  }
  .li-chunk-inp{padding:5px 8px;font-size:.72rem}

/* ═══════════════════════════════════════════════════════════════
   VERIFY PANEL OVERLAY
   ═══════════════════════════════════════════════════════════════ */
  .li-verify-overlay{
    position:fixed;top:0;left:0;right:0;bottom:0;
    background:rgba(0,0,0,.4);z-index:100;
    display:none;flex-direction:column;
  }
  .li-verify-overlay.li-verify-open{display:flex}
  .li-verify-controls{
    padding:10px 20px;background:var(--cream-dark,#F0EBE3);
    border-bottom:1px solid var(--border-light);
    display:flex;align-items:center;gap:12px;flex-shrink:0;
  }
  .li-verify-panel{
    display:grid;grid-template-columns:1fr 1fr;width:100%;flex:1;
    background:var(--white);overflow:hidden;
  }
  .li-verify-side{overflow-y:auto;padding:20px}
  .li-verify-left{border-right:1px solid var(--border-light)}
  .li-verify-highlight{
    background:rgba(158,122,60,.15);border-left:3px solid var(--gold);
    padding:8px 12px;margin:0;border-radius:0 4px 4px 0;
    font-family:var(--serif);font-size:.82rem;line-height:1.7;
  }

/* ═══════════════════════════════════════════════════════════════
   FLAG MODAL
   ═══════════════════════════════════════════════════════════════ */
  .li-modal-overlay{
    position:fixed;top:0;left:0;right:0;bottom:0;
    background:rgba(0,0,0,.4);z-index:200;
    display:none;align-items:center;justify-content:center;
  }
  .li-modal-overlay.li-modal-open{display:flex}
  .li-modal-box{
    background:var(--white);border-radius:8px;padding:24px;
    max-width:420px;width:90%;box-shadow:0 8px 32px rgba(0,0,0,.2);
  }
  .li-modal-box h3{font-size:.88rem;margin-bottom:12px;color:var(--brown-dark)}

/* ═══════════════════════════════════════════════════════════════
   BATCH IMPORT BAR
   ═══════════════════════════════════════════════════════════════ */
  .li-batch-bar{
    position:sticky;bottom:0;left:0;right:0;
    padding:10px 20px;background:var(--brown-dark,#35201A);color:var(--cream);
    display:flex;align-items:center;gap:12px;font-size:.78rem;
    z-index:10;border-top:2px solid var(--gold);
    margin-top:12px;border-radius:0 0 8px 8px;
  }
  .li-batch-count{font-weight:700;color:var(--gold-light)}
  .li-src-check{
    flex-shrink:0;accent-color:var(--gold);width:16px;height:16px;cursor:pointer;
  }

/* ═══════════════════════════════════════════════════════════════
   SPINNER (standalone)
   ═══════════════════════════════════════════════════════════════ */
  @keyframes li-spin-standalone{to{transform:rotate(360deg)}}
  .li-spinner{
    width:16px;height:16px;border:2px solid var(--border);
    border-top-color:var(--gold);border-radius:50%;
    animation:li-spin-standalone .6s linear infinite;display:inline-block;
    vertical-align:middle;margin-right:8px;
  }

/* ═══════════════════════════════════════════════════════════════
   DEPOSIT LAYOUT (inline sidebar)
   ═══════════════════════════════════════════════════════════════ */
  .lib-intake-deposit-layout{display:flex;flex-direction:column;min-height:0}
  .lib-intake-deposit-main{flex:1;overflow-y:auto;padding:0}
  .lib-intake-deposit-config{margin-top:16px}
  .lib-intake-deposit-config summary{
    font-size:.72rem;font-weight:700;letter-spacing:.4px;text-transform:uppercase;
    color:var(--text-muted);cursor:pointer;padding:8px 0;
  }
  .lib-intake-deposit-config[open] summary{margin-bottom:8px}
  .lib-intake-pipeline-status{
    margin-top:12px;padding:12px 16px;
    background:var(--white);border:1px solid var(--border-light);
    border-radius:8px;
  }

  /* ── Resource Management — File Inventory ─────────────── */
  .manage-review-section{margin-bottom:24px}
  .manage-inventory-section{margin-top:8px}
  .manage-inventory-header{
    font-size:.9rem;font-weight:600;color:var(--brown-dark);
    margin:0 0 12px 0;padding:0 4px;
  }
  .manage-inventory-loading,
  .manage-inventory-empty{
    padding:24px;text-align:center;color:var(--text-muted);
    font-style:italic;font-size:.82rem;
  }
  .manage-inventory-summary{
    display:flex;align-items:center;gap:8px;
    padding:8px 12px;margin-bottom:8px;
    background:var(--cream);border-radius:6px;
    font-size:.78rem;color:var(--brown-dark);
  }
  .inv-count{font-weight:600}
  .inv-separator{color:var(--text-muted);opacity:.5}
  .inv-badge{
    display:inline-block;padding:2px 8px;border-radius:10px;
    font-size:.72rem;font-weight:500;
  }
  /* Item 11 (2026-05-09): status pills retoned to Mira palette
   * (gold-light + brown-dark for Ready, accent + cream for Processing)
   * so the inventory list reads as part of the same family as the
   * rest of the app instead of Material-blue/Material-yellow. */
  .status-uploaded{background:rgba(158,158,158,.12);color:#616161}
  .status-processing{
    background:rgba(122,58,16,.08);
    color:var(--accent, #7A3A10);
    border:1px solid var(--accent, #7A3A10);
  }
  .status-imported{
    background:rgba(122,58,16,.08);
    color:var(--accent, #7A3A10);
    border:1px solid var(--accent, #7A3A10);
  }
  .status-indexed{
    background:var(--gold-light, #E8DFD3);
    color:var(--brown-dark, #35201A);
    border:1px solid var(--gold, #9E7A3C);
  }
  .status-held{background:rgba(158,158,158,.08);color:#9e9e9e;font-style:italic}
  .status-error{
    background:rgba(122,58,16,.08);
    color:var(--accent, #7A3A10);
    border:1px solid var(--accent, #7A3A10);
  }

  .inv-status{white-space:normal;display:flex;flex-wrap:wrap;gap:3px;align-items:center}
  .manage-inventory-table{
    border:1px solid var(--border-light);border-radius:8px;
    overflow:hidden;
  }
  /* T-INVENTORY-MERGE-CSS (2026-05-20):
   * Wave-B2 — Inventory row rewritten to match the merged-tab Intake
   * design. The legacy 8-column CSS grid (checkbox · 📝 · name · source ·
   * status · passages · added · citation) is replaced with a single
   * flexbox row. Rationale:
   *   • status/progress pills (Ready/Processing/Failed) now render as a
   *     full-width `.inv-progress-wrap` band beneath the title via
   *     `flex: 1 1 100%` wrapping, matching Intake's row template
   *     (rendered by library/library-ui.js, the B1 agent's territory);
   *   • redundant columns (source, added-date, inline citation) move
   *     into the expand panel — their per-cell positioning styles are
   *     dropped from the main-row context (rules retained below for
   *     expand-panel reuse);
   *   • cell widths are now expressed as flex-basis on each child so
   *     the row reflows responsively without grid track guesswork.
   */
  .inv-row{
    display:flex;
    flex-wrap:wrap;
    align-items:center;
    gap:.45rem 1rem;
    padding:.55rem 1rem;
    border-bottom:1px solid var(--border-light);
    font-size:.78rem;
    cursor:pointer;
    box-sizing:border-box;
    min-width:0;
    max-width:100%;
    overflow:hidden;
  }
  .inv-row:hover{
    background:var(--cream-light, #faf8f4);
  }
  .inv-row:last-child{border-bottom:none}
  .inv-header{
    background:var(--cream);font-weight:600;
    color:var(--brown-dark);font-size:.72rem;
    text-transform:uppercase;letter-spacing:.02em;
    cursor:default;
  }
  .inv-header:hover{background:var(--cream)}
  .inv-cell{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  /* Flexbox children (replaces grid-track positioning). */
  .inv-check{
    flex:0 0 32px;
    display:flex;align-items:center;
    padding:0;
  }
  .inv-name{
    flex:1 1 220px;
    min-width:0;
    font-weight:500;color:var(--brown-dark);
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  }
  .inv-passages{
    flex:0 0 auto;
    min-width:84px;
    text-align:right;
    color:var(--text-muted);
  }
  .inv-status-text{
    flex:0 0 auto;
    min-width:130px;
    text-align:right;
    font-size:.72rem;
  }
  /* Full-width progress/status band beneath the title row. Wraps to a
   * new flex line via `flex: 1 1 100%`. Referenced by B1's row template
   * in library/library-ui.js to host the Ready/Processing/Failed pills
   * and any inline progress bar. */
  .inv-progress-wrap{
    display:flex;
    flex-direction:column;
    align-items:stretch;
    flex:1 1 100%;
    min-width:0;
    max-width:100%;
    overflow:hidden;
    box-sizing:border-box;
    gap:6px;
  }
  /* Per-file Atelier annotation toggle (maintainer 2026-05-11 v3). Lives
   * in its own .inv-annotations column so every row's icon aligns
   * vertically. ON = gold 📝; OFF = muted. */
  .inv-annotations{flex:0 0 34px;display:flex;align-items:center;justify-content:center;padding:0}
  .inv-ann-toggle{border:none;background:transparent;cursor:pointer;
    font-size:.95rem;line-height:1;padding:2px 4px;border-radius:4px;
    opacity:.55;transition:opacity .12s,background .12s,filter .12s}
  .inv-ann-toggle:hover{opacity:1;background:var(--cream-light,#faf8f4)}
  .inv-ann-toggle.is-on{opacity:.92;color:var(--brown-dark);filter:none}
  .inv-ann-toggle.is-off{opacity:.35;color:var(--text-muted);filter:grayscale(1)}
  /* Header-row 📝 bulk toggle (maintainer 2026-05-11 v3). Lives in its own
   * .inv-annotations-header cell, vertically aligned with the per-row
   * icons. Hover-bubble tooltip aesthetic from .lib-header-icon-btn so
   * the action announces itself. Click: flip all visible rows. */
  .inv-annotations-header{padding:0;display:flex;align-items:center;justify-content:center}
  .inv-header .inv-ann-bulk-toggle{
    border:none;background:transparent;cursor:pointer;
    font-size:.95rem;line-height:1;padding:2px 4px;border-radius:4px;
    opacity:.7;transition:opacity .12s,background .12s;
    position:relative;
  }
  .inv-header .inv-ann-bulk-toggle:hover{opacity:1;background:rgba(0,0,0,.04)}
  .inv-header .inv-ann-bulk-toggle.is-bulk-off{opacity:.4}
  .inv-header .inv-ann-bulk-toggle[data-tip]::after{
    content:attr(data-tip);
    position:absolute;top:calc(100% + 8px);left:50%;
    transform:translate(-50%,-4px);
    background:var(--brown-dark);color:var(--cream);
    font-family:var(--sans);font-size:.7rem;font-weight:600;
    letter-spacing:.3px;padding:5px 11px;border-radius:6px;
    max-width:240px;white-space:normal;text-align:center;line-height:1.35;
    opacity:0;pointer-events:none;
    transition:opacity .2s,transform .2s;
    box-shadow:0 3px 10px var(--shadow);z-index:30;
  }
  .inv-header .inv-ann-bulk-toggle[data-tip]::before{
    content:'';position:absolute;top:calc(100% + 2px);left:50%;
    transform:translateX(-50%);
    border:5px solid transparent;border-bottom-color:var(--brown-dark);
    opacity:0;pointer-events:none;transition:opacity .2s;z-index:30;
  }
  .inv-header .inv-ann-bulk-toggle[data-tip]:hover::after{opacity:1;transform:translate(-50%,0)}
  .inv-header .inv-ann-bulk-toggle[data-tip]:hover::before{opacity:1}
  /* T-INVENTORY-MERGE-CSS (2026-05-20): the following three classes
   * (.inv-source, .inv-date, .inv-citation) were main-row grid cells
   * pre-merge. They are now scoped to the expand panel — the main row
   * no longer renders them. Retained styling for any expand-panel
   * markup that re-uses these class names. */
  .inv-expand .inv-source{color:var(--text-muted);font-size:.72rem}
  .inv-expand .inv-date{color:var(--text-muted);font-size:.72rem}
  /* Chicago citation cell — italic serif. Now expand-panel-only. */
  .inv-expand .inv-citation{
    font-family:'Times New Roman', Georgia, serif;
    font-style:italic;
    font-size:.72rem;
    color:var(--text);
    overflow:hidden;
    text-overflow:ellipsis;
    min-width:0;
  }

  /* ── Sidebar nav badge (import count) ─────────────── */
  .nav-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 16px;
    height: 16px;
    padding: 0 4px;
    border-radius: 8px;
    background: #d4a017;
    color: #fff;
    font-size: 0.62rem;
    font-weight: 700;
    line-height: 1;
    margin-left: auto;
    flex-shrink: 0;
  }

  /* ── Inventory filter bar ─────────────────────────── */
  .inv-filter-bar {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 14px;
    flex-wrap: wrap;
  }
  .inv-filter-pills {
    display: flex;
    gap: 4px;
    flex-wrap: wrap;
  }
  .inv-filter-pill {
    padding: 3px 10px;
    border-radius: 12px;
    font-size: 0.7rem;
    border: 1px solid var(--border-light);
    background: transparent;
    color: var(--text-muted);
    cursor: pointer;
    transition: all 0.15s ease;
    font-family: var(--sans);
  }
  .inv-filter-pill:hover {
    border-color: var(--gold);
    color: var(--brown);
  }
  .inv-filter-pill.active {
    background: var(--gold);
    color: #fff;
    border-color: var(--gold);
  }
  .inv-filter-search {
    flex: 1;
    min-width: 120px;
    max-width: 220px;
    padding: 4px 10px;
    border: 1px solid var(--border-light);
    border-radius: 4px;
    font-size: 0.72rem;
    font-family: var(--sans);
    background: var(--white);
    color: var(--text);
  }
  .inv-filter-search:focus {
    outline: none;
    border-color: var(--gold);
  }
  .inv-filter-sep {
    width: 1px;
    height: 18px;
    background: var(--border-light);
    flex-shrink: 0;
  }

  /* ── Inventory row expansion panel ────────────────── */
  .inv-expansion {
    grid-column: 1 / -1;
    padding: 12px 14px 14px;
    background: var(--cream-light, #faf8f4);
    border-bottom: 1px solid var(--border-light);
    animation: inv-expand 0.2s ease;
  }
  @keyframes inv-expand {
    from { opacity: 0; max-height: 0; }
    to   { opacity: 1; max-height: 400px; }
  }
  .inv-expansion-meta {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 6px 16px;
    font-size: 0.76rem;
    margin-bottom: 10px;
  }
  .inv-meta-label {
    font-weight: 600;
    color: var(--brown);
    font-size: 0.68rem;
    text-transform: uppercase;
    letter-spacing: 0.02em;
  }
  .inv-meta-value {
    color: var(--text);
  }
  .inv-expansion-actions {
    display: flex;
    gap: 8px;
    margin-top: 8px;
  }
  .inv-action-btn {
    padding: 4px 12px;
    border-radius: 4px;
    font-size: 0.72rem;
    font-family: var(--sans);
    border: 1px solid var(--border-light);
    background: var(--white);
    color: var(--brown);
    cursor: pointer;
    transition: all 0.15s ease;
  }
  .inv-action-btn:hover {
    border-color: var(--gold);
    background: var(--cream);
  }
  .inv-action-btn.inv-action-danger {
    color: #c62828;
    border-color: rgba(198,40,40,.3);
  }
  .inv-action-btn.inv-action-danger:hover {
    background: rgba(198,40,40,.06);
    border-color: #c62828;
  }
  .inv-action-btn.inv-action-promote {
    color: #2e7d32;
    border-color: rgba(46,125,50,.3);
  }
  .inv-action-btn.inv-action-promote:hover {
    background: rgba(46,125,50,.06);
    border-color: #2e7d32;
  }
  .inv-action-btn.inv-action-spinner {
    pointer-events: none;
    opacity: 0.6;
  }
  .inv-action-busy {
    font-size: 0.72rem;
    font-style: italic;
    color: var(--text-muted);
    padding: 4px 0;
  }

  /* ── Bulk action bar ────────────────────────── */
  .inv-bulk-bar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 10px 14px;
    margin: 0 0 2px;
    background: linear-gradient(135deg, var(--cream) 0%, #f9f3e4 100%);
    border: 1px solid var(--gold);
    border-radius: 6px;
  }
  .inv-bulk-text {
    font-size: 0.8rem;
    color: var(--brown);
  }
  .inv-bulk-btn {
    padding: 7px 18px;
    border-radius: 5px;
    font-size: 0.78rem;
    font-family: var(--sans);
    font-weight: 600;
    border: 1px solid var(--gold);
    background: var(--gold);
    color: var(--white);
    cursor: pointer;
    transition: all 0.15s ease;
  }
  .inv-bulk-btn:hover {
    background: #c9a030;
    border-color: #c9a030;
  }
  .inv-bulk-btn:disabled {
    opacity: 0.6;
    cursor: not-allowed;
  }

  /* ── Checkbox column ────────────────────────── */
  .inv-check {
    width: 32px;
    min-width: 32px;
    max-width: 32px;
    display: flex;
    align-items: center;
    justify-content: center;
  }
  .inv-checkbox {
    width: 15px;
    height: 15px;
    cursor: pointer;
    accent-color: var(--gold);
  }

  /* ── Selection toolbar ──────────────────────── */
  .inv-selection-bar {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px 14px;
    margin: 0 0 2px;
    background: #e8f0fe;
    border: 1px solid #a4c4f4;
    border-radius: 6px;
  }
  .inv-sel-count {
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--brown);
    margin-right: auto;
  }
  .inv-sel-btn {
    padding: 5px 14px;
    border-radius: 4px;
    font-size: 0.72rem;
    font-family: var(--sans);
    font-weight: 500;
    border: 1px solid var(--border-light);
    background: var(--white);
    color: var(--brown);
    cursor: pointer;
    transition: all 0.15s ease;
  }
  .inv-sel-btn:hover { border-color: var(--gold); background: var(--cream); }
  .inv-sel-btn.inv-sel-btn-danger { color: #c62828; border-color: rgba(198,40,40,.3); }
  .inv-sel-btn.inv-sel-btn-danger:hover { background: rgba(198,40,40,.06); border-color: #c62828; }
  .inv-sel-btn.inv-sel-btn-clear { color: var(--text-muted); }

  /* ── Sortable headers ───────────────────────── */
  .inv-sortable {
    cursor: pointer;
    user-select: none;
    transition: color 0.15s ease;
  }
  .inv-sortable:hover { color: var(--gold); }
  .inv-sort-active { color: var(--brown); font-weight: 600; }

  /* ═══════════════════════════════════════════════════════════
     CASCADE TRACKER — Metadata identification tier progress
     Shows: Heuristic → ISBN → ML → LLM per file
     ═══════════════════════════════════════════════════════════ */

  /* ── Container ─────────────────────────────────────────── */
  .ct-container {
    padding: 12px 0;
    display: flex;
    flex-direction: column;
    gap: 8px;
    overflow-y: auto;
    max-height: 400px;
  }

  /* ── Batch summary header ──────────────────────────────── */
  .ct-batch-summary {
    font-family: var(--sans);
    font-size: .8rem;
    font-weight: 600;
    color: var(--brown);
    padding: 8px 12px;
    background: rgba(139,69,19,.04);
    border-radius: 5px;
    border: 1px solid var(--border-light);
  }

  /* ── Per-file card ─────────────────────────────────────── */
  .ct-file-card {
    padding: 10px 14px;
    background: var(--white);
    border: 1px solid var(--border-light);
    border-radius: 5px;
    display: flex;
    flex-direction: column;
    gap: 5px;
    transition: border-color .2s;
  }
  .ct-file-card.ct-status-processing {
    border-left: 3px solid var(--accent-gold, #c9a84c);
  }
  .ct-file-card.ct-status-approved {
    border-left: 3px solid var(--accent-green, #4a7c59);
  }
  .ct-file-card.ct-status-review {
    border-left: 3px solid var(--accent, #8b4513);
  }

  /* ── Filename ──────────────────────────────────────────── */
  .ct-filename {
    font-family: var(--sans);
    font-size: .8rem;
    font-weight: 600;
    color: var(--text);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }

  /* ── Tier progress row ─────────────────────────────────── */
  .ct-tiers {
    display: flex;
    align-items: center;
    gap: 3px;
    font-size: .76rem;
  }
  .ct-tier {
    display: inline-flex;
    align-items: center;
    gap: 2px;
  }
  .ct-icon {
    font-size: .82rem;
    width: 1em;
    text-align: center;
    line-height: 1;
  }
  .ct-label {
    color: var(--text-secondary, #6b5b4a);
  }
  .ct-sep {
    color: var(--muted-text, #bbb);
    margin: 0 1px;
    font-size: .7rem;
  }

  /* Tier states */
  .ct-done .ct-icon  { color: var(--accent-green, #4a7c59); }
  .ct-done .ct-label  { color: var(--accent-green, #4a7c59); }
  .ct-active .ct-icon { color: var(--accent-gold, #c9a84c); }
  .ct-active .ct-label { color: var(--accent-gold, #c9a84c); font-weight: 600; }
  .ct-skipped .ct-icon { color: var(--muted-text, #bbb); }
  .ct-skipped .ct-label { color: var(--muted-text, #bbb); text-decoration: line-through; font-size: .72rem; }
  .ct-pending .ct-icon { color: var(--text-secondary, #6b5b4a); }

  /* ── Status badge ──────────────────────────────────────── */
  .ct-badge {
    display: inline-block;
    font-family: var(--sans);
    font-size: .7rem;
    font-weight: 600;
    padding: 2px 8px;
    border-radius: 3px;
    align-self: flex-start;
  }
  .ct-badge-approved {
    background: rgba(74,124,89,.12);
    color: var(--accent-green, #4a7c59);
  }
  .ct-badge-review {
    background: rgba(139,69,19,.08);
    color: var(--accent, #8b4513);
  }
  .ct-badge-processing {
    background: rgba(201,168,76,.12);
    color: var(--accent-gold, #c9a84c);
  }

  /* ── Detail line (extracted metadata preview) ──────────── */
  .ct-detail {
    font-family: var(--sans);
    font-size: .74rem;
    color: var(--text-muted);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }

  /* ── Empty state ───────────────────────────────────────── */
  .ct-empty {
    font-family: var(--sans);
    font-size: .82rem;
    color: var(--text-muted);
    text-align: center;
    padding: 32px 16px;
    font-style: italic;
  }


/* ═══════════════════════════════════════════════════════════════
   PipelineTracker — Segmentation & Embedding tab styles
   ═══════════════════════════════════════════════════════════════ */

  .pipeline-stage-container {
    padding: 8px 12px;
    overflow-y: auto;
    max-height: calc(100vh - 200px);
  }

  /* ── Summary bar ────────────────────────────────────────── */
  .pt-summary {
    font-family: var(--sans);
    font-size: .8rem;
    color: var(--text-muted);
    padding: 8px 10px;
    border-bottom: 1px solid var(--border-light, #e0d5c0);
    margin-bottom: 8px;
  }

  /* ── File card ──────────────────────────────────────────── */
  .pt-card {
    font-family: var(--sans);
    padding: 10px 12px;
    margin-bottom: 6px;
    border-radius: 4px;
    background: var(--panel-bg, #faf7f2);
    border-left: 3px solid var(--border-light, #e0d5c0);
  }
  .pt-stage-segmenting { border-left-color: var(--gold, #c9a84c); }
  .pt-stage-segmented  { border-left-color: var(--accent-green, #7a9e6a); }
  .pt-stage-embedding  { border-left-color: var(--gold, #c9a84c); }
  .pt-stage-indexed    { border-left-color: var(--accent-green, #7a9e6a); }
  .pt-stage-error      { border-left-color: var(--error-red, #c0392b); }

  .pt-filename {
    font-size: .78rem;
    font-weight: 600;
    color: var(--heading-brown, #3e2c1c);
    margin-bottom: 3px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  .pt-meta {
    font-size: .72rem;
    color: var(--text-muted);
    margin-bottom: 5px;
    font-style: italic;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  .pt-status {
    font-size: .75rem;
    color: var(--text-muted);
    margin-bottom: 4px;
  }
  .pt-status.pt-done {
    color: var(--accent-green, #7a9e6a);
    font-weight: 600;
  }
  .pt-status.pt-waiting {
    font-style: italic;
  }
  .pt-status.pt-error {
    color: var(--error-red, #c0392b);
    font-weight: 600;
  }

  /* ── Progress bar ───────────────────────────────────────── */
  .pt-bar {
    position: relative;
    height: 16px;
    background: var(--border-light, #e0d5c0);
    border-radius: 8px;
    overflow: hidden;
    margin-top: 4px;
  }
  .pt-fill {
    height: 100%;
    background: var(--gold, #c9a84c);
    border-radius: 8px;
    transition: width 0.3s ease;
  }
  .pt-stage-indexed .pt-fill,
  .pt-stage-segmented .pt-fill {
    background: var(--accent-green, #7a9e6a);
  }
  .pt-pct {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    text-align: center;
    font-size: .65rem;
    font-weight: 600;
    line-height: 16px;
    color: var(--heading-brown, #3e2c1c);
  }

  /* ── Empty state ────────────────────────────────────────── */
  .pt-empty {
    font-family: var(--sans);
    font-size: .82rem;
    color: var(--text-muted);
    text-align: center;
    padding: 32px 16px;
    font-style: italic;
  }

  /* ── Tab panel styles for new tabs ──────────────────────── */
  .manage-tab-panel[data-mtab-panel="segmentation"]{ padding: 8px 0; }
  .manage-tab-panel[data-mtab-panel="embedding"]{ padding: 8px 0; }

  /* ── Live processing status bar ────────────────────────── */
  .browse-live-counts {
    transition: opacity .3s;
  }
  .live-dot {
    transition: background-color .5s;
  }
  @keyframes live-pulse {
    0%, 100% { opacity: 1; }
    50% { opacity: .4; }
  }
  .live-dot-active {
    animation: live-pulse 1.5s ease-in-out infinite;
  }

  /* (Pipeline-stage micro-badge `.inv-pipe-badge` removed 2026-05-09 —
   * inventory rows now show only the binary Ready/Processing pill.) */

/* ── Item 9 (2026-05-29): "Coming soon" Library tabs ──────────────────
 * Special Collections + Archives are greyed out and show a Mira-aesthetic
 * hover popover (sepia card) instead of switching content. The click is a
 * no-op (library-ui.js). The popover text comes from data-coming-soon. */
.libraries-tab.is-coming-soon {
  opacity: 0.5;
  cursor: default;
  position: relative;
}
.libraries-tab.is-coming-soon::before {
  content: "Soon";
  display: inline-block;
  margin-left: 6px;
  padding: 1px 6px;
  font-size: 0.62rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--accent, #7A3A10);
  background: var(--cream-dark, #F0EBE3);
  border: 1px solid var(--gold-light, #B89868);
  border-radius: 999px;
  vertical-align: middle;
}
.libraries-tab.is-coming-soon:hover::after {
  content: "Coming soon — " attr(data-coming-soon);
  position: absolute;
  top: calc(100% + 8px);
  left: 0;
  z-index: 60;
  width: max-content;
  max-width: 280px;
  padding: 8px 11px;
  font-family: var(--serif, Georgia, serif);
  font-size: 0.78rem;
  font-weight: 400;
  line-height: 1.45;
  white-space: normal;
  text-transform: none;
  letter-spacing: 0;
  color: var(--text, #35201A);
  background: var(--cream, #FAF6F0);
  border: 1px solid var(--border, #D7CCC8);
  border-left: 3px solid var(--gold, #9E7A3C);
  border-radius: 8px;
  box-shadow: 0 6px 20px var(--shadow, rgba(62,39,35,.18));
}

