/* Source pages stay opaque; glass belongs to the instruments above them. */
.source-doc.doc { display:block; padding:0; overflow:hidden; transform:none; animation:none; }
.source-citation { display:flex; flex-direction:column; align-items:flex-start; gap:12px; width:100%; padding:24px; text-align:left; color:var(--ink); border:0; background:none; cursor:pointer; }
.source-doc .nm { font-size:1.0625rem; line-height:1.4; overflow-wrap:anywhere; }
.source-doc .src,.source-doc .open,.doc-publisher { font-size:.875rem; line-height:1.5; }
.source-doc .doc-snip { display:block; margin:0; font-size:1rem; line-height:1.65; color:var(--ink-2); }
.source-doc .open { color:var(--accent); margin-top:auto; }
.doc-publisher { display:block; padding:12px 24px; border-top:1px solid var(--line); color:var(--ink-3); }
.source-citation:hover { background:var(--surface-2); }
.source-window { grid-column:1/-1; min-width:0; overflow:hidden; border:1px solid var(--line); border-radius:22px; background:var(--surface); box-shadow:0 24px 64px -38px #14231f66; margin:12px 0 24px; text-align:left; }
.source-window-heading { display:flex; align-items:center; gap:12px; padding:22px 24px 8px; }
.source-window-heading>div { flex:1; min-width:0; }
.source-window-heading span { color:var(--ink-3); font-size:.875rem; }
.source-window-heading h2 { font:550 1.25rem/1.4 var(--sans); letter-spacing:-.03em; margin:6px 0; overflow-wrap:anywhere; }
.source-window button,.source-window select,.source-window input,.lighttable-view button,.lighttable-view input,.source-tray button { font:inherit; color:inherit; }
.source-window button,.lighttable-view button,.lb-pin-source { min-height:44px; border:1px solid var(--line); border-radius:999px; padding:10px 16px; color:var(--ink); background:transparent; cursor:pointer; font-size:.875rem; }
.source-window button:hover,.lighttable-view button:hover { background:var(--accent-soft); }
.source-window button:disabled { opacity:.4; cursor:default; }
.source-window [data-action=close] { font-size:1.6rem; width:44px; flex:0 0 44px; padding:0; }
.source-controls { display:flex; align-items:center; gap:12px 20px; flex-wrap:wrap; border-radius:20px; margin:12px 20px; padding:10px 14px; z-index:1; }
.source-controls label,.source-controls a { font-size:.875rem; }
.source-controls label { display:flex; align-items:center; gap:8px; }
.source-paging { display:flex; align-items:center; gap:8px; }
.source-paging button { padding:8px; width:44px; }
.source-controls input,.lighttable-source input { width:5rem; min-height:44px; border:1px solid var(--line); border-radius:10px; padding:8px; background:var(--surface); }
.source-controls select { min-height:44px; padding:8px; border:0; background:transparent; }
.source-controls [data-action=add] { margin-left:auto; }
.source-controls a,.lighttable-source a { text-underline-offset:4px; text-decoration:underline; }
.source-status { color:var(--ink-2); font-size:.875rem; line-height:1.6; margin:12px 24px; min-height:1.6em; }
.source-aperture { overflow:auto; max-height:72vh; min-height:220px; padding:24px; background:var(--paper-2); overscroll-behavior:contain; }
.source-page { width:calc(100% * var(--source-zoom,1)); min-width:0; margin:auto; }
.source-page canvas { display:block; width:100%; height:auto; background:#fff; box-shadow:0 4px 18px #0002; }
.source-page[aria-busy=true] { opacity:.5; }
.source-unavailable { font-size:1rem; padding:40px 16px; line-height:1.7; }
.source-unavailable a { display:block; color:var(--accent); }
.source-transcript { border-top:1px solid var(--line); padding:16px 24px; }
.source-transcript summary { cursor:pointer; font-size:.875rem; padding:8px 0; }
.source-transcript>div { white-space:pre-wrap; overflow-wrap:anywhere; font-size:1rem; line-height:1.75; padding:16px 0; max-width:78ch; }
.source-fullscreen { position:fixed; inset:20px; padding:0; margin:auto; width:calc(100vw - 40px); max-width:1500px; max-height:calc(100dvh - 40px); border:0; border-radius:24px; color:var(--ink); background:var(--surface); }
.source-fullscreen::backdrop { background:#101c195c; backdrop-filter:blur(6px); }
.source-fullscreen .source-window { border:0; border-radius:0; margin:0; }
.source-fullscreen .source-aperture { max-height:calc(100dvh - 270px); }
.file-preview:has(.source-window) { border:0; padding:0; background:none; }
.source-tray { position:fixed; z-index:65; bottom:max(20px,env(safe-area-inset-bottom)); left:50%; transform:translateX(-50%); width:max-content; max-width:calc(100% - 32px); border-radius:24px; padding:12px 18px; display:flex; align-items:center; flex-wrap:wrap; gap:10px 24px; }
.source-tray[hidden] { display:none; }
.source-tray-pages { display:flex; flex-wrap:wrap; gap:8px 20px; min-width:0; }
.source-tray-pages>span { display:flex; align-items:center; gap:8px; max-width:260px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:.875rem; }
.source-tray b,.source-letter { display:grid; place-items:center; border:1px solid var(--line-2); border-radius:50%; width:30px; height:30px; flex:0 0 30px; color:var(--accent); font-weight:600; }
.source-tray button { width:44px; min-height:44px; border:0; background:transparent; cursor:pointer; font-size:1.4rem; flex:0 0 44px; }
.source-compare-link { font-size:.9375rem; font-weight:550; padding:10px 0; color:var(--accent); }
.source-tray-status:empty { display:none; }
.source-tray-status { flex-basis:100%; font-size:.875rem; }
.has-lighttable-selection { padding-bottom:160px; }
.lb-pin-source { color:white; border-color:#ffffff66; margin:8px; }
.lb-pin-status { display:block; font-size:.875rem; }
.lighttable-view { max-width:1440px; padding-top:36px; }
.lighttable-heading { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:16px; margin-bottom:28px; }
.lighttable-heading h1,.lighttable-empty h1 { font:550 clamp(2rem,4vw,3.25rem)/1.1 var(--sans); letter-spacing:-.055em; margin:8px 0; }
.lighttable-heading a { font-size:.9375rem; }
.lighttable-empty { max-width:850px; }
.lighttable-empty p { font-size:1rem; line-height:1.7; margin:20px 0; }
.lighttable-sources { display:grid; grid-template-columns:1fr 1fr; gap:24px; padding:0 0 24px; }
.lighttable-source { display:flex; align-items:flex-start; gap:16px; min-width:0; }
.lighttable-source>div { min-width:0; }
.lighttable-source h2 { font:550 1.0625rem/1.4 var(--sans); letter-spacing:-.02em; overflow-wrap:anywhere; margin:0 0 4px; }
.lighttable-source p { color:var(--ink-3); font-size:.875rem; line-height:1.5; margin:4px 0; }
.lighttable-source label { font-size:.875rem; display:inline-flex; align-items:center; gap:8px; margin:8px 16px 8px 0; }
.lighttable-source a { font-size:.875rem; white-space:nowrap; }
.lighttable-tools { display:flex; align-items:center; justify-content:center; flex-wrap:wrap; gap:14px 24px; border-radius:22px; padding:14px 18px; margin-bottom:-24px; width:fit-content; max-width:calc(100% - 32px); margin-inline:auto; position:relative; z-index:2; }
.lighttable-tools>label { display:grid; grid-template-columns:auto 100px 3ch; align-items:center; gap:10px; font-size:.875rem; }
.lighttable-tools output { font-variant-numeric:tabular-nums; }
.lighttable-view input[type=range] { accent-color:var(--accent); min-width:0; min-height:32px; width:100%; cursor:pointer; }
.lighttable-view button[aria-pressed=true] { background:var(--accent-soft); border-color:var(--accent); }
.lighttable-stage { position:relative; overflow:hidden; background:#f6f7f4; border:1px solid var(--line); border-radius:24px; height:min(76vh,850px); min-height:400px; touch-action:pan-y; box-shadow:0 24px 80px -56px #172d2566; }
.lighttable-stage.is-aligning { cursor:move; touch-action:none; }
.lighttable-canvas { display:block; width:100%; height:100%; }
.lighttable-divider { position:absolute; top:0; bottom:0; width:44px; margin-left:-22px; display:grid; place-items:center; cursor:ew-resize; touch-action:none; }
.lighttable-divider::before { content:''; position:absolute; top:0; bottom:0; width:1px; background:#355240; box-shadow:0 0 0 1px #fff9; }
.lighttable-divider>span { position:relative; display:grid; place-items:center; width:44px; height:64px; background:#fff; border:1px solid #a7b7ae; border-radius:24px; color:#244a32; box-shadow:0 4px 18px #1b302a30; }
.lighttable-lens { position:absolute; width:160px; height:160px; border-radius:50%; outline:1px solid #fff; border:5px solid #ffffffc9; box-shadow:0 12px 30px #0f261f4a,inset 0 0 0 2px #365645; pointer-events:none; z-index:3; }
.lighttable-alignment { display:flex; flex-wrap:wrap; align-items:center; gap:14px 24px; border-bottom:1px solid var(--line); padding:24px 0; font-size:.875rem; }
.lighttable-alignment>span { font-weight:550; }
.lighttable-alignment label { display:flex; flex:1 1 160px; align-items:center; gap:12px; }
.lighttable-caption { color:var(--ink-3); font-size:.9375rem; line-height:1.65; margin:16px 0; }
.source-window :focus-visible,.lighttable-view :focus-visible,.source-tray :focus-visible,.source-citation:focus-visible { outline:2px solid var(--accent); outline-offset:4px; }
@media(max-width:700px) {
  .source-window-heading { padding:16px 16px 4px; gap:8px; flex-wrap:wrap; }
  .source-window-heading>div { flex-basis:calc(100% - 140px); }
  .source-window-heading h2 { font-size:1.0625rem; }
  .source-window { border-radius:16px; }
  .source-controls { margin:10px; gap:8px 12px; padding:10px; border-radius:16px; }
  .source-controls [data-action=add] { margin-left:0; }
  .source-aperture { padding:12px; }
  .source-status,.source-transcript { margin-inline:0; padding-inline:16px; }
  .source-fullscreen { inset:8px; width:calc(100% - 16px); max-height:calc(100dvh - 16px); border-radius:16px; }
  .source-fullscreen .source-aperture { max-height:58dvh; }
  .lighttable-sources { gap:16px; }
  .lighttable-source { gap:8px; }
  .lighttable-source .source-letter { width:24px; height:24px; flex-basis:24px; font-size:.875rem; }
  .lighttable-source input { width:4rem; }
  .lighttable-tools { gap:8px 12px; padding:12px; max-width:100%; margin-bottom:12px; width:100%; }
  .lighttable-tools>label { grid-template-columns:auto minmax(70px,1fr) 3ch; flex:1 1 200px; }
  .lighttable-stage { min-height:360px; height:65vh; border-radius:16px; }
  .source-tray { bottom:max(12px,env(safe-area-inset-bottom)); padding:10px 16px; width:calc(100% - 24px); max-width:500px; gap:4px 16px; }
  .source-tray-pages { width:100%; gap:0; }
  .source-tray-pages>span { flex:1; max-width:50%; }
}
@media(prefers-reduced-motion:reduce) { .source-window,.lighttable-view * { scroll-behavior:auto; transition:none; animation:none; } }
@media print { .source-tray,.source-controls,.lighttable-tools,.lighttable-alignment,.lighttable-divider,.lighttable-lens { display:none!important; } .source-aperture,.source-fullscreen { max-height:none; overflow:visible; } }

.document-reader .file-preview { margin-top:16px; }
.file-provenance,.source-origin { border-top:1px solid var(--line); padding:16px 24px; color:var(--ink-2); font-size:.875rem; line-height:1.65; }
.file-provenance summary,.source-origin summary { cursor:pointer; min-height:44px; display:flex; align-items:center; gap:12px; }
.file-provenance summary::before,.source-origin summary::before { content:'+'; font-size:1.25rem; }
.file-provenance[open] summary::before,.source-origin[open] summary::before { content:'−'; }
.file-provenance h1 { font-size:1.125rem; overflow-wrap:anywhere; margin:12px 0; }
.file-provenance a,.source-origin a { text-decoration:underline; text-underline-offset:4px; }
.source-window button[hidden] { display:none; }
.linked-document-reader:empty { display:none; }
@media(max-width:700px) { .file-provenance,.source-origin { padding-inline:16px; } }
/* A paper surface with a selectable, geometrically aligned PDF text layer. */
.source-page { position:relative; }
.source-text-layer { color-scheme:only light; position:absolute; inset:0; overflow:clip; text-align:initial; opacity:1; line-height:1; letter-spacing:normal; word-spacing:normal; text-size-adjust:none; -webkit-text-size-adjust:none; forced-color-adjust:none; transform-origin:0 0; caret-color:CanvasText; z-index:1; --min-font-size:1; --text-scale-factor:calc(var(--total-scale-factor) * var(--min-font-size)); --min-font-size-inv:calc(1 / var(--min-font-size)); }
.source-text-layer :is(span,br) { color:transparent; position:absolute; white-space:pre; cursor:text; transform-origin:0 0; user-select:text; -webkit-user-select:text; }
.source-text-layer>:not(.markedContent),.source-text-layer .markedContent span:not(.markedContent) { z-index:1; --font-height:0; font-size:calc(var(--text-scale-factor) * var(--font-height)); --scale-x:1; --rotate:0deg; transform:rotate(var(--rotate)) scaleX(var(--scale-x)) scale(var(--min-font-size-inv)); }
.source-text-layer .markedContent { display:contents; }
.source-text-layer .source-word-match { position:static; border-radius:2px; background:#f1c74485; color:transparent; padding:1px 0; box-shadow:0 0 0 1px #99721640; }
.source-text-layer ::selection { color:transparent; background:#4182cd66; }
.source-text-layer[data-main-rotation="90"] { transform:rotate(90deg) translateY(-100%); }
.source-text-layer[data-main-rotation="180"] { transform:rotate(180deg) translate(-100%,-100%); }
.source-text-layer[data-main-rotation="270"] { transform:rotate(270deg) translateX(-100%); }
.source-workspace { display:grid; grid-template-columns:minmax(0,1fr); }
.source-workspace.with-context { grid-template-columns:minmax(0,1fr) minmax(290px,350px); }
.source-reading { min-width:0; }
.source-context { min-width:0; border-left:1px solid var(--line); padding:24px; max-height:85vh; overflow:auto; background:var(--surface); }
.source-context[hidden] { display:none; }
.source-context h3 { font:600 1.25rem/1.3 var(--sans); letter-spacing:-.03em; margin:0; }
.source-context header p { font-size:.9375rem; line-height:1.6; color:var(--ink-2); margin:10px 0 20px; }
.source-context input { display:block; width:100%; border:1px solid var(--line-2); border-radius:12px; background:var(--surface); padding:12px; min-height:44px; margin:8px 0; font:inherit; font-size:1rem; }
.source-context label { font-size:.875rem; }
.source-context form>button { width:100%; background:var(--accent-soft); }
.source-context .context-selection { text-align:left; font-size:.875rem; border:0; padding:12px 0; border-radius:0; width:100%; overflow-wrap:anywhere; }
.context-phrases { display:flex; flex-wrap:wrap; gap:8px; }
.context-phrases p { width:100%; font-size:.875rem; color:var(--ink-3); margin:8px 0 0; }
.context-phrases button { font-size:.875rem; padding:8px 12px; }
.context-status,.context-note { font-size:.875rem; line-height:1.65; color:var(--ink-2); margin:16px 0; }
.context-note { padding-top:16px; border-top:1px solid var(--line); }
.source-context .context-hit { width:100%; padding:16px 0; text-align:left; border:0; border-top:1px solid var(--line); border-radius:0; }
.context-hit>span { font-size:.875rem; font-weight:550; overflow-wrap:anywhere; }
.context-hit>p,.context-excerpt { font-size:1rem; line-height:1.65; color:var(--ink-2); margin:8px 0; white-space:pre-wrap; overflow-wrap:anywhere; }
.context-hit>small { font-size:.875rem; color:var(--accent); }
.context-preview h4 { font-size:1rem; line-height:1.5; overflow-wrap:anywhere; margin:16px 0; }
.context-preview [data-preview-status] { font-size:.875rem; line-height:1.65; color:var(--ink-3); }
.context-scan { overflow:auto; margin:16px 0; max-height:60vh; background:var(--paper-2); }
.context-scan canvas { display:block; width:200%; height:auto; max-width:none; }
.source-find { display:flex; gap:12px; align-items:end; padding:0 24px 16px; }
.source-find label { flex:1; font-size:.875rem; }
.source-find input { display:block; min-width:0; width:100%; min-height:44px; margin-top:6px; border:1px solid var(--line); border-radius:12px; background:var(--surface); padding:10px 12px; font-size:1rem; }
.source-controls [aria-expanded=true] { background:var(--accent-soft); border-color:var(--accent); }
.page-index-coverage { font-size:.875rem; line-height:1.6; color:var(--ink-3); margin:20px 0; max-width:90ch; }
.page-search-view .section-head h1 { font-size:clamp(2rem,5vw,4rem); }
.page-search-view .toolbar { display:flex; gap:12px; }
.page-search-view .searchbox { flex:1; }
.page-search-empty { font-size:1rem; line-height:1.7; grid-column:1/-1; }
.page-search-view [hidden] { display:none; }
@media(max-width:1000px) { .source-workspace.with-context { grid-template-columns:minmax(0,1fr) 290px; } .source-context { padding:18px; } }
@media(max-width:800px) { .source-workspace.with-context { grid-template-columns:minmax(0,1fr); } .source-context { max-height:70vh; border-left:0; border-top:1px solid var(--line); } .source-find { padding:0 16px 12px; flex-wrap:wrap; } .source-find label { flex-basis:100%; } .page-search-view .toolbar { flex-wrap:wrap; } .source-fullscreen .source-aperture { max-height:50dvh; } }
@media print { .source-context,.source-find { display:none; } .source-workspace.with-context { grid-template-columns:minmax(0,1fr); } }

.file-unavailable { max-width:70ch; padding:20px; line-height:1.7; }
.file-unavailable h1 { font:600 1.4rem/1.4 var(--sans); overflow-wrap:anywhere; margin:0 0 20px; }
.file-unavailable p { font-size:1rem; margin:0 0 16px; }
.file-unavailable a { margin:6px 8px 6px 0; }

.file-availability { white-space:normal; text-align:right; line-height:1.4; }
.file-availability.metadata,.file-availability.unknown { color:var(--muted,#5e6866); }
.file-availability.available { color:var(--green,#365c4b); }
.file-availability.missing,.file-availability.restricted,.file-availability.temporary { color:#885423; }
.link-audit { margin:40px 0; padding:24px 0; border-block:1px solid var(--line); }

.source-memory { display:flex; align-items:center; flex-wrap:wrap; gap:10px 18px; padding:10px 20px 18px; font-size:.82rem; color:var(--muted,#58635f); }
.source-memory label { display:flex; align-items:center; gap:8px; }
.source-memory input { width:18px; height:18px; accent-color:var(--green,#365c4b); }
.source-memory button { border:0; background:none; color:inherit; text-decoration:underline; text-underline-offset:3px; padding:8px 0; }
.source-memory button:disabled { opacity:.4; text-decoration:none; }
.source-memory [data-progress] { flex-basis:100%; }

/* Reading first; optional tools share one expandable shelf. */
.source-window .source-controls { border-radius:16px; padding:8px 12px; gap:8px; }
.source-controls .source-paging { margin-right:auto; }
.source-window .source-controls>button { border:0; background:transparent; min-height:44px; }
.source-window .source-controls>button[aria-expanded=true] { background:var(--accent-soft); }
.source-options { margin:0 20px 12px; padding:16px; border:1px solid var(--line); border-radius:16px; background:var(--surface); }
.source-options[hidden] { display:none; }
.source-secondary { display:flex; align-items:center; flex-wrap:wrap; gap:12px; font-size:.875rem; }
.source-secondary label { display:flex; align-items:center; gap:8px; margin-right:auto; }
.source-secondary select { min-height:44px; border:1px solid var(--line); border-radius:10px; background:var(--surface); padding:8px; }
.source-options .source-find { padding:16px 0 0; }
.source-options .source-memory { padding:16px 0 0; }
.source-options .source-memory [data-progress]:empty { display:none; }
.source-window .source-status { font-size:.8125rem; margin-block:8px; }
.source-window-heading h2 { font-size:1.125rem; font-weight:500; }
.source-window-heading>div>span { font-size:.75rem; }
@media(max-width:520px) {
  .source-window .source-controls { margin:10px; padding:6px; gap:4px; }
  .source-controls .source-paging { gap:4px; font-size:.8125rem; }
  .source-controls .source-paging input { width:3.5rem; padding:6px; }
  .source-window .source-controls button { padding-inline:10px; }
  .source-options { margin:0 10px 10px; padding:12px; }
}
@media print { .source-options { display:none!important; } }
