:root { --ink:#17201d; --muted:#77807b; --paper:#f6f4ee; --paper-2:#eeece4; --line:#d9d8d0; --orange:#ec653d; --orange-dark:#c85132; --sage:#b8c8b7; --sidebar:#17201d; --sidebar-muted:#aeb7ae; --shadow:0 22px 60px rgba(23,32,29,.09); }
.workspace-gate { position:fixed; inset:0; z-index:100; display:grid; place-items:center; padding:24px; background:rgba(23,32,29,.72); backdrop-filter:blur(12px); }
.workspace-gate-card { width:min(520px,100%); padding:32px; border:1px solid #d2dad1; border-radius:10px; background:#fbfaf5; box-shadow:0 28px 90px rgba(0,0,0,.28); }
.auth-card { display:grid; gap:10px; }.auth-field { display:grid; gap:6px; margin-top:4px; color:var(--muted); font-size:11px; }.auth-field input { min-height:42px; border:1px solid #d0d3ca; border-radius:6px; padding:9px 10px; background:#fff; color:var(--ink); }.auth-field input:focus { outline:none; border-color:var(--orange); }.auth-card button { width:100%; }
.workspace-gate-card h2 { margin:8px 0 12px; font:600 34px/1.05 'Newsreader',serif; }.workspace-gate-card p:not(.eyebrow) { color:var(--muted); line-height:1.7; font-size:13px; }.workspace-gate-card small { display:block; margin-top:16px; color:var(--muted); font-size:10px; line-height:1.5; }.workspace-gate-card button { margin-top:12px; }.workspace-gate-status { margin-top:16px; padding:9px 11px; border-left:3px solid var(--orange); background:#f4eee6; color:var(--muted); font:11px 'DM Mono'; }
.workspace-gate-status.is-ready { border-color:#4b9c7a; background:#edf5ef; color:#47765d; }.workspace-gate-status.is-error { border-color:#b95045; background:#f8ebe8; color:#9c493f; }
* { box-sizing:border-box; }
body { margin:0; background:var(--paper); color:var(--ink); font-family:'Plus Jakarta Sans',sans-serif; font-size:14px; }
button,input,textarea { font:inherit; }
button { cursor:pointer; }
.app-shell { min-height:100vh; display:grid; grid-template-columns:250px 1fr; }
.sidebar { background:var(--sidebar); color:#f2f0e8; padding:28px 20px 22px; display:flex; flex-direction:column; min-height:100vh; }
.brand { display:flex; align-items:center; gap:11px; font-family:'Newsreader',serif; font-size:20px; line-height:.9; letter-spacing:-.02em; }
.brand-mark { width:33px; height:33px; display:grid; place-items:center; color:var(--sidebar); background:#e9b866; border-radius:50%; font-size:22px; font-weight:600; }
.sidebar-label,.eyebrow,.panel-kicker,.section-heading,#library-status,.document-toolbar,.sidebar-footer { font-family:'DM Mono',monospace; text-transform:uppercase; letter-spacing:.08em; font-size:10px; }
.sidebar-label { color:#78837b; margin:64px 12px 14px; }
.nav-list { display:grid; gap:4px; }
.nav-item { border:0; background:transparent; color:var(--sidebar-muted); padding:11px 12px; border-radius:8px; display:flex; gap:11px; align-items:center; text-align:left; transition:.2s ease; }
.nav-item:hover,.nav-item.active { color:#fff; background:#28342f; }
.nav-item.active { box-shadow:inset 3px 0 var(--orange); }
.nav-icon { width:18px; color:#e9b866; text-align:center; font-size:16px; }.nav-count { margin-left:auto; font:10px 'DM Mono'; color:#7d8980; }
.sidebar-spacer { flex:1; }.connection-card { border:1px solid #39483f; border-radius:9px; padding:12px; display:flex; gap:9px; align-items:flex-start; background:#202c27; }.connection-card strong,.connection-card small { display:block; }.connection-card strong { font-size:11px; }.connection-card small { color:#87958b; margin-top:4px; font-size:10px; }.pulse { width:7px;height:7px;margin-top:4px;border-radius:50%;background:#7ecb8d;box-shadow:0 0 0 4px rgba(126,203,141,.12); }.sidebar-footer { color:#66726a; display:flex; justify-content:space-between; margin-top:18px; font-size:9px; }
.main-area { padding:0 46px 60px; min-width:0; }.topbar { min-height:118px; display:flex; align-items:center; justify-content:space-between; border-bottom:1px solid var(--line); }.eyebrow { color:var(--orange-dark); margin:0 0 10px; }.topbar h1,.reader-header h2 { margin:0; font:600 38px/1 'Newsreader',serif; letter-spacing:-.035em; }.top-actions,.reader-actions { display:flex; align-items:center; gap:10px; }.ghost-button,.upload-button,.accent-button,.back-button,.wide-button { border:0; border-radius:7px; padding:10px 14px; transition:.2s ease; }.ghost-button,.back-button { color:var(--ink); background:transparent; }.ghost-button:hover,.back-button:hover { background:var(--paper-2); }.upload-button,.accent-button { color:white; background:var(--orange); font-weight:600; }.upload-button:hover,.accent-button:hover { background:var(--orange-dark); transform:translateY(-1px); }
.view { display:none; padding-top:42px; }.active-view { display:block; }.intro-row { display:flex; justify-content:space-between; gap:30px; align-items:flex-end; }.intro-row h2,.large-empty h2 { margin:0 0 8px; font:600 31px/1.05 'Newsreader',serif; }.intro-row p { margin:0; color:var(--muted); line-height:1.7; }.library-stats { display:flex; gap:28px; }.library-stats div { min-width:66px; }.library-stats strong { display:block; font:600 28px 'Newsreader'; }.library-stats span { color:var(--muted); font:9px 'DM Mono'; letter-spacing:.08em; }.add-model-button { flex:none; }
.drop-zone { margin:34px 0 44px; border:1px dashed #afb8ad; background:#e9ebe2; min-height:124px; padding:22px 26px; display:flex; align-items:center; gap:18px; border-radius:10px; transition:.2s ease; }.drop-zone.dragging { border-color:var(--orange); background:#f3dfd5; }.drop-zone strong { font-size:14px; }.drop-zone p { color:#68736d; margin:7px 0 0; font-size:12px; }.drop-orbit { width:45px; height:45px; border:1px solid #b3c1ae; display:grid; place-items:center; border-radius:50%; color:var(--orange); font-size:24px; }.drop-hint { margin-left:auto; color:#8d9990; font:10px 'DM Mono'; letter-spacing:.1em; }
.library-toolbar { display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin:26px 0 20px; padding:10px 0; border-top:1px solid var(--line); border-bottom:1px solid var(--line); }
.library-search { flex:1 1 260px; display:flex; align-items:center; gap:8px; min-height:38px; padding:0 11px; border:1px solid var(--line); border-radius:6px; background:#fffdf8; color:var(--muted); }
.library-search input { width:100%; border:0; outline:0; background:transparent; color:var(--ink); font-size:12px; }
.library-toolbar select { min-height:38px; border:1px solid var(--line); border-radius:6px; padding:0 10px; background:#fffdf8; color:var(--ink); font-size:11px; }
.library-columns { position:relative; }.library-columns summary { list-style:none; cursor:pointer; min-height:38px; display:grid; place-items:center; padding:0 12px; border:1px solid var(--line); border-radius:6px; color:var(--muted); font:11px 'DM Mono'; }.library-columns summary::-webkit-details-marker { display:none; }.library-columns-menu { position:absolute; right:0; z-index:5; display:grid; gap:9px; min-width:150px; margin-top:6px; padding:12px; border:1px solid var(--line); border-radius:7px; background:var(--paper); box-shadow:var(--shadow); color:var(--muted); font-size:11px; }.library-columns-menu label { display:flex; gap:7px; align-items:center; }
.paper-card { grid-template-columns:48px minmax(210px,1fr) auto auto; }.paper-card-main { min-width:0; }.paper-card-columns { display:flex; align-items:center; gap:18px; color:var(--muted); font:10px 'DM Mono'; white-space:nowrap; }.paper-status { color:#a07838; font-style:normal; }.paper-status.is-translated { color:#5f8b68; }.paper-card-actions { display:flex; align-items:center; gap:7px; }.paper-open-button { border:1px solid transparent; background:transparent; color:var(--orange-dark); font-size:11px; }.paper-delete-button { border:0; background:transparent; color:var(--muted); font-size:10px; }.paper-delete-button:hover { color:#b95045; }.paper-list.is-compact .paper-card { padding:11px 12px; }.paper-list.is-compact .paper-card h3 { font-size:16px; margin-bottom:2px; }.paper-list.is-compact .paper-card p { display:none; }.paper-list.is-compact .paper-card-columns { gap:10px; }.paper-list.is-empty-filter { min-height:120px; }
.reader-view { padding-top:24px; }.reader-header { display:grid; grid-template-columns:136px minmax(0,1fr); gap:14px 24px; align-items:start; padding-bottom:24px; border-bottom:1px solid var(--line); }.reader-header > div:nth-child(2) { min-width:0; }.reader-header h2 { max-width:none; font-size:30px; line-height:1.04; overflow-wrap:anywhere; }.reader-actions { grid-column:2; justify-content:flex-start; flex-wrap:wrap; }.reader-actions button { flex:none; }.back-button { align-self:start; padding-left:0; color:var(--muted); }.reader-grid { display:grid; grid-template-columns:minmax(0,1fr) 310px; gap:30px; padding-top:24px; }.document-column { min-width:0; position:relative; }.document-toolbar { display:flex; justify-content:space-between; color:var(--muted); padding:0 4px 12px; }.pdf-document { display:grid; gap:26px; justify-items:center; padding:16px; background:#d8d7d0; min-height:650px; overflow:auto; }.pdf-loading { color:var(--muted); padding:80px 20px; }.pdf-page { position:relative; background:#fff; box-shadow:var(--shadow); flex:none; overflow:hidden; }.pdf-page canvas { display:block; position:absolute; inset:0; z-index:1; }
.pdf-page.is-pending { display:grid; place-items:center; background:#fdfdfb; }
.pdf-page-label { color:#a8b0a8; font:10px 'DM Mono'; letter-spacing:.1em; }
.pdf-page:not(.is-pending) .pdf-page-label { display:none; }
/* pdf.js TextLayer contract: spans are positioned in percent but sized with
   calc(var(--scale-factor)*Npx), and transform-origin must stay at the top-left. */
.pdf-text-layer { position:absolute; inset:0; z-index:2; overflow:clip; opacity:1; line-height:1; text-align:initial; text-size-adjust:none; forced-color-adjust:none; transform-origin:0 0; caret-color:CanvasText; user-select:text; }
.pdf-text-layer span,.pdf-text-layer br { position:absolute; white-space:pre; color:transparent; transform-origin:0% 0%; cursor:text; }
.pdf-text-layer .markedContent { top:0; height:0; }
.pdf-text-layer ::selection { background:rgba(236,101,61,.32); }
.models-status { margin-top:22px; padding:11px 13px; border-left:3px solid #b95045; border-radius:6px; background:#f7ebe8; font-size:12px; line-height:1.6; }
.reading-modes { display:flex; gap:2px; }
.reading-modes button { border:1px solid var(--line); background:var(--paper); color:var(--muted); border-radius:5px; padding:4px 9px; font:10px 'DM Mono'; letter-spacing:.04em; }
.reading-modes button:hover { border-color:var(--orange); color:var(--orange-dark); }
.reading-modes button.active { background:var(--ink); border-color:var(--ink); color:#fff; }
.translation-progress { margin:13px 0 0; padding:10px 12px; border:1px solid #d8d8ce; border-radius:7px; background:#f8f7f1; }
.processing-pipeline { margin:14px 0 0; padding:15px 16px; border:1px solid #cbd9d1; border-radius:8px; background:#eef5ef; }
.pipeline-head,.pipeline-actions,.pipeline-stage,.job-item-head { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.pipeline-kicker { display:block; color:var(--orange-dark); font:10px 'DM Mono'; letter-spacing:.1em; }
.pipeline-head strong { display:block; margin-top:4px; font:600 18px 'Newsreader'; }
.pipeline-actions { color:var(--muted); font:10px 'DM Mono'; }
.pipeline-actions button,.job-actions button { padding:5px 9px; }
.pipeline-track { height:6px; margin:13px 0; overflow:hidden; border-radius:3px; background:#d6e2d8; }
.pipeline-track i { display:block; width:0; height:100%; background:var(--teal); transition:width .25s ease; }
.pipeline-stages { display:grid; gap:7px; }
.pipeline-stage { justify-content:flex-start; padding:7px 0; border-top:1px solid rgba(62,95,76,.12); }
.pipeline-stage-dot { width:8px; height:8px; flex:0 0 auto; border-radius:50%; background:#b8c4ba; }
.pipeline-stage.running .pipeline-stage-dot { background:var(--orange); box-shadow:0 0 0 4px rgba(214,95,57,.12); }
.pipeline-stage.completed .pipeline-stage-dot { background:#4b9c7a; }
.pipeline-stage.failed .pipeline-stage-dot,.pipeline-stage.cancelled .pipeline-stage-dot { background:#b95045; }
.pipeline-stage div { min-width:0; flex:1; }.pipeline-stage strong,.pipeline-stage small { display:block; }.pipeline-stage strong { font-size:11px; }.pipeline-stage small { margin-top:2px; color:var(--muted); font-size:10px; }.pipeline-stage b { color:var(--muted); font:10px 'DM Mono'; }
.processing-pipeline > p { margin:11px 0 0; color:var(--muted); font-size:10px; line-height:1.5; }
.translation-size-control { display:flex; align-items:center; gap:7px; color:var(--muted); font-size:10px; white-space:nowrap; }
.translation-size-control input { width:80px; accent-color:var(--orange); }.translation-size-control output { min-width:34px; color:var(--orange-dark); font:10px 'DM Mono'; }
.job-item-head { align-items:flex-start; }.job-actions { display:flex; gap:5px; flex:0 0 auto; }.job-actions .danger-button { color:#a94e43; }
.translation-progress-head { display:flex; justify-content:space-between; gap:12px; color:var(--ink); font-size:11px; }
.translation-progress-head span { color:var(--muted); font:10px 'DM Mono'; }
.translation-progress-track { height:7px; margin-top:8px; overflow:hidden; border-radius:4px; background:#e1e2da; }
.translation-progress-track i { display:block; width:0; height:100%; border-radius:4px; background:var(--orange); transition:width .3s ease; }
.translation-progress.is-complete .translation-progress-track i { background:#6e9c75; }
.document-panes { display:grid; grid-template-columns:minmax(0,1fr); gap:16px; }
.document-column.is-bilingual .document-panes { grid-template-columns:minmax(0,1fr) minmax(280px,0.85fr); }
.document-column.is-bilingual .pdf-document { padding:12px; justify-items:start; }
.document-column.is-parallel .pdf-document { height:calc(100vh - 270px); min-height:520px; overflow:auto; overscroll-behavior:contain; }
.parallel-column { min-width:0; }
.parallel-toolbar { display:flex; align-items:center; justify-content:space-between; padding:0 0 10px; color:var(--muted); font:11px 'DM Mono'; }
.parallel-toolbar .small-button { padding:5px 8px; font:10px 'DM Mono'; }
.parallel-toolbar .small-button.active { border-color:var(--orange); color:var(--orange-dark); background:#fff8f3; }
.parallel-document { display:grid; gap:26px; justify-items:center; height:calc(100vh - 270px); min-height:520px; overflow:auto; overscroll-behavior:contain; padding:0 4px 16px; background:#d8d7d0; }
.parallel-pdf-page { margin:0 auto; }
.pdf-document.hide-translations .pdf-translation-layer { display:none; }
.bilingual-column { background:#f8f7f1; border:1px solid #d7d8cf; border-radius:8px; padding:16px 18px; max-height:calc(100vh - 220px); overflow-y:auto; align-self:start; position:sticky; top:22px; }
.bilingual-page-mark { color:var(--muted); font:9px 'DM Mono'; letter-spacing:.1em; text-transform:uppercase; margin:18px 0 8px; padding-bottom:5px; border-bottom:1px solid var(--line); }
.bilingual-page-mark:first-child { margin-top:0; }
.bilingual-pair { position:relative; padding:10px 11px; border-left:2px solid transparent; border-radius:5px; cursor:pointer; transition:.15s ease; }
.bilingual-pair:hover { background:#efeee6; }
.bilingual-pair.active { background:#f3e3da; border-left-color:var(--orange); }
.bilingual-sentence { position:relative; margin:2px -5px; padding:7px 8px 8px 10px; border-left:2px solid transparent; border-radius:4px; cursor:pointer; transition:background .15s ease,border-color .15s ease,box-shadow .15s ease; }
.bilingual-sentence:hover { background:#f0f3ed; }
.bilingual-sentence:focus-visible { outline:2px solid #7da8c2; outline-offset:2px; }
.bilingual-sentence.active { background:#e2edf2; border-left-color:#3f83a5; box-shadow:inset 0 0 0 1px rgba(63,131,165,.16); }
.bilingual-sentence.active .bilingual-source { color:#2f6682; }
.bilingual-sentence.active .bilingual-translation { color:#174b63; }
.bilingual-pair.is-raw { padding:5px 11px; opacity:.6; }
.bilingual-pair.is-raw .bilingual-source { font-size:10px; }
.bilingual-source { margin:0; color:#8b938c; font:11px/1.55 'DM Mono',monospace; }
.bilingual-translation { margin:7px 0 0; font:14px/1.7 'Newsreader',serif; color:var(--ink); }
.bilingual-translation:not(.is-empty) { cursor: zoom-in; }
.bilingual-translation:not(.is-empty):focus-visible { outline: 2px solid var(--orange); outline-offset: 3px; border-radius: 2px; }
.bilingual-translation.is-empty { color:#a8b0a8; font-style:italic; font-size:12px; }
.bilingual-pair [data-mark-side] { position:relative; z-index:1; user-select:text; cursor:text; }
.bilingual-mark-layer { position:absolute; inset:0; pointer-events:none; z-index:1; }
.bilingual-mark { position:absolute; border-radius:2px; opacity:.52; }.bilingual-mark.orange { background:#ec653d; }.bilingual-mark.yellow { background:#f6cc4a; }.bilingual-mark.green { background:#64b570; }.bilingual-mark.blue { background:#5b91d2; }.bilingual-mark.pink { background:#e26f9a; }
.bilingual-pair [data-mark-side] { z-index:2; }
.translation-reader-content { position:relative; }
.translation-reader-mark-layer { position:absolute; inset:0; pointer-events:none; z-index:0; }
.translation-reader-mark { position:absolute; border-radius:2px; opacity:.42; }
.translation-reader-mark.orange { background:#ec653d; }.translation-reader-mark.yellow { background:#f6cc4a; }.translation-reader-mark.green { background:#64b570; }.translation-reader-mark.blue { background:#5b91d2; }.translation-reader-mark.pink { background:#e26f9a; }
.translation-reader-content section { position:relative; z-index:1; }
.translation-reader-sentence { display:block; margin:0 -7px; padding:5px 7px; border-radius:3px; cursor:pointer; transition:background-color .14s ease,color .14s ease,box-shadow .14s ease; }
.translation-reader-sentence:hover { background:rgba(63,131,165,.08); }
.translation-reader-sentence.active { background:rgba(63,131,165,.18); color:#174b63 !important; box-shadow:inset 0 -2px 0 rgba(47,102,130,.48); }
.translation-reader-sentence::selection { background:rgba(246,204,74,.58); color:var(--ink); }
.pdf-block-layer { position:absolute; inset:0; z-index:2; pointer-events:none; }
.pdf-block-active { position:absolute; border:2px solid var(--orange); border-radius:3px; background:rgba(236,101,61,.10); }
.pdf-sentence-active { position:absolute; pointer-events:none; border-radius:2px; background:rgba(63,131,165,.22); box-shadow:inset 0 -2px 0 rgba(47,102,130,.58); }
.pdf-region-focus { border-color:#2f78b7; background:rgba(47,120,183,.14); box-shadow:0 0 0 3px rgba(47,120,183,.16); animation:region-focus-pulse 1.4s ease-out 2; }
@keyframes region-focus-pulse { 0%,100% { opacity:.72; } 50% { opacity:1; box-shadow:0 0 0 7px rgba(47,120,183,.04); } }
.pdf-mark-layer { position:absolute; inset:0; z-index:4; pointer-events:none; }
.pdf-mark { position:absolute; border-radius:2px; }
.pdf-mark.orange { background:rgba(236,101,61,.28); }
.pdf-mark.yellow { background:rgba(246,204,74,.34); }
.pdf-mark.green { background:rgba(100,181,112,.30); }
.pdf-mark.blue { background:rgba(91,145,210,.28); }
.pdf-mark.pink { background:rgba(226,111,154,.27); }
.pdf-mark.annotation { background:rgba(233,184,102,.34); box-shadow:inset 0 -2px var(--orange-dark); }
.pdf-translation-layer { position:absolute; inset:0; z-index:3; pointer-events:none; }
.text-paper { background:#fff; padding:40px 46px; max-width:760px; box-shadow:var(--shadow); }
.text-paper p { font:16px/1.75 'Newsreader',serif; margin:0 0 18px; }
.reader-alerts { display:grid; gap:8px; margin:16px 0 0; }
.reader-alert { display:flex; align-items:flex-start; gap:12px; padding:11px 13px; border-left:3px solid #b95045; border-radius:6px; background:#f7ebe8; font-size:12px; line-height:1.6; }
.reader-alert.warn { border-left-color:#c8912f; background:#f8f1e2; }
.reader-alert span { flex:1; }
.reader-alert .alert-retry { flex:0 0 auto; white-space:nowrap; margin-top:-2px; }
.alert-dismiss { border:0; background:transparent; color:var(--muted); font-size:17px; line-height:1; padding:0 2px; }
.alert-dismiss:hover { color:var(--ink); }
.pdf-controls { display:flex; align-items:center; gap:6px; }
.pdf-controls button { border:1px solid var(--line); background:var(--paper); border-radius:5px; width:24px; height:24px; line-height:1; color:var(--ink); }
.pdf-controls button:hover { border-color:var(--orange); color:var(--orange-dark); }
.pdf-controls select { border:1px solid var(--line); background:var(--paper); border-radius:5px; height:24px; color:var(--ink); font-size:11px; }
.pdf-controls input { width:46px; height:24px; border:1px solid var(--line); border-radius:5px; background:var(--paper); color:var(--ink); padding:0 5px; font-size:11px; }
.pdf-controls label { display:flex; align-items:center; gap:4px; }
.marks-list { display:grid; gap:9px; }
.mark-item { border:1px solid #d2d5cc; background:#f7f6f0; border-radius:6px; padding:11px 12px; }
.mark-item-head { display:flex; justify-content:space-between; align-items:center; }
.mark-kind { font:9px 'DM Mono'; letter-spacing:.08em; text-transform:uppercase; color:var(--orange-dark); }
.mark-page { color:var(--muted); font:10px 'DM Mono'; }
.mark-item blockquote { margin:8px 0 0; font:13px/1.55 'Newsreader',serif; color:var(--ink); }
.mark-comment { margin:8px 0 0; color:#5c665f; font-size:11px; line-height:1.6; }
.mark-answer { margin:8px 0 0; padding:8px; background:#ecefe8; color:#455149; font:11px/1.55 'Newsreader',serif; }
.mark-answer p { margin:0 0 7px; }.mark-answer p:last-child { margin-bottom:0; }.mark-answer ul { margin:0 0 7px; padding-left:17px; }.mark-answer li { margin:3px 0; }.mark-answer strong { color:#263d30; }.mark-answer code { padding:1px 3px; background:#dde7dd; font:10px 'DM Mono'; }
.mark-actions { display:flex; gap:6px; margin-top:10px; }
.selection-card-close { position:absolute; top:6px; right:8px; border:0; background:transparent; color:var(--muted); font-size:18px; line-height:1; padding:0 2px; }
.selection-card-close:hover { color:var(--ink); }.pdf-translation-region { position:absolute; overflow:hidden; padding:2px 3px; background:#fff; color:#111815; font-family:'Noto Serif SC','Source Han Serif SC','Songti SC','Newsreader',serif; font-weight:400; white-space:pre-wrap; overflow-wrap:anywhere; text-align:left; box-shadow:0 0 0 2px #fff; isolation:isolate; cursor:zoom-in; }.pdf-translation-region::before { content:''; position:absolute; inset:-3px; z-index:-1; background:#fff; }.pdf-translation-region.figure_title,.pdf-translation-region.table_title,.pdf-translation-region.header { font-weight:600; text-align:left; }.selection-menu { position:absolute; z-index:10; display:flex; align-items:center; gap:2px; padding:4px; background:var(--ink); border-radius:7px; box-shadow:0 8px 22px rgba(23,32,29,.2); }.selection-menu button { border:0; background:transparent; color:white; padding:6px 9px; font-size:11px; }.selection-menu button:hover { background:#35443c; border-radius:4px; }.selection-card { position:absolute; z-index:11; right:18px; top:45px; max-width:320px; padding:14px; border-left:3px solid var(--orange); background:#fff; box-shadow:var(--shadow); font:15px/1.6 'Newsreader',serif; white-space:pre-wrap; }
.inspector { background:#e7e7df; border:1px solid #d7d8cf; border-radius:9px; min-height:530px; align-self:start; position:sticky; top:22px; }.inspector-tabs { display:flex; border-bottom:1px solid #cfd2c9; }.inspector-tab { flex:1; border:0; background:transparent; color:#7a837c; padding:14px 5px; font-size:11px; }.inspector-tab.active { color:var(--ink); border-bottom:2px solid var(--orange); }.inspector-panel { display:none; padding:23px 20px; }.inspector-panel.active { display:block; }.panel-kicker { color:var(--orange-dark); }.inspector-panel h3 { font:600 24px/1.05 'Newsreader'; margin:9px 0 17px; }.inspector textarea { width:100%; min-height:105px; resize:vertical; background:#f8f7f1; border:1px solid #d0d3ca; border-radius:6px; padding:12px; outline:none; color:var(--ink); }.inspector textarea:focus { border-color:var(--orange); }.wide-button { width:100%; margin-top:10px; background:var(--ink); color:#fff; display:flex; justify-content:space-between; }.wide-button:hover { background:#2d3c35; }.answer-box { background:#f8f7f1; border-left:2px solid var(--orange); padding:13px; margin-top:18px; font:14px/1.6 'Newsreader'; white-space:pre-wrap; }.hidden { display:none !important; }.structure-list,.job-list { display:grid; gap:8px; }.structure-item,.job-item { padding:11px 12px; border:1px solid #d2d5cc; background:#f7f6f0; border-radius:6px; }.structure-item { display:flex; justify-content:space-between; }.structure-item strong { font-size:11px; }.structure-item span { color:var(--orange-dark); font:10px 'DM Mono'; }.job-item strong { display:block; font-size:11px; }.job-item small { display:block; color:var(--muted); margin-top:5px; }.progress { height:5px; background:#d9dbd3; margin-top:10px; border-radius:3px; overflow:hidden; }.progress i { display:block; height:100%; background:var(--orange); transition:width .3s; }.models-list { display:grid; grid-template-columns:repeat(auto-fit,minmax(250px,1fr)); gap:12px; margin-top:30px; }.model-card { background:#fff; border:1px solid var(--line); border-radius:8px; padding:20px; box-shadow:0 6px 20px rgba(23,32,29,.04); }.model-card-head { display:flex; justify-content:space-between; align-items:start; }.model-card h3 { font:600 22px 'Newsreader'; margin:0 0 7px; }.model-card p { color:var(--muted); font-size:11px; margin:0; }.model-role { color:var(--orange-dark); font:10px 'DM Mono'; text-transform:uppercase; }.model-card-status { display:flex; flex-direction:column; gap:8px; }.model-url { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:var(--muted); font:10px 'DM Mono'; }.demo-badge { display:inline-block; width:max-content; background:#ecebe3; color:#7d867f; padding:5px 7px; margin-top:18px; font:9px 'DM Mono'; }.model-card-actions { display:flex; gap:8px; margin-top:18px; }.small-button { border:1px solid var(--line); border-radius:6px; background:var(--paper); color:var(--ink); padding:7px 10px; font-size:11px; }.small-button:hover { border-color:var(--orange); color:var(--orange-dark); }.danger-button:hover { border-color:#b95045; color:#b95045; }.modal-overlay { position:fixed; inset:0; z-index:20; display:grid; place-items:center; padding:22px; background:rgba(23,32,29,.46); }.model-modal { width:min(560px,100%); background:var(--paper); border:1px solid var(--line); border-radius:9px; box-shadow:0 24px 80px rgba(23,32,29,.25); padding:24px; }.modal-header { display:flex; justify-content:space-between; align-items:flex-start; border-bottom:1px solid var(--line); padding-bottom:18px; }.modal-header h2 { margin:0; font:600 30px/1 'Newsreader'; }.icon-button { border:0; background:transparent; color:var(--muted); font-size:26px; line-height:1; padding:0 4px; }.icon-button:hover { color:var(--ink); }.form-grid { display:grid; grid-template-columns:1fr 1fr; gap:16px; padding-top:22px; }.form-grid label { display:grid; gap:7px; color:var(--muted); font-size:11px; }.form-grid input,.form-grid select { width:100%; min-height:40px; border:1px solid #d0d3ca; border-radius:6px; background:#fff; color:var(--ink); padding:9px 10px; outline:none; }.form-grid input:focus,.form-grid select:focus { border-color:var(--orange); }.form-wide { grid-column:1/-1; }.form-note { color:var(--muted); font-size:11px; line-height:1.6; margin:18px 0 0; }.modal-actions { display:flex; justify-content:flex-end; gap:8px; margin-top:22px; }
@media (max-width:1200px) { .document-column.is-bilingual:not(.is-parallel) .document-panes { grid-template-columns:minmax(0,1fr); }.bilingual-column { position:static; max-height:520px; } }
@media (max-width:900px) { .app-shell { grid-template-columns:1fr; }.sidebar { min-height:auto; padding:18px; }.sidebar-label,.sidebar-spacer,.connection-card,.sidebar-footer { display:none; }.brand { margin-bottom:14px; }.nav-list { grid-template-columns:repeat(3,1fr); }.nav-item { justify-content:center; padding:9px 5px; }.nav-item.active { box-shadow:inset 0 -3px var(--orange); }.main-area { padding:0 18px 40px; }.topbar { min-height:94px; }.topbar h1 { font-size:32px; }.upload-button { font-size:0; padding:10px 12px; }.upload-button:first-letter { font-size:18px; }.reader-header { grid-template-columns:1fr auto; }.reader-header .back-button { grid-column:1/-1; }.reader-grid { grid-template-columns:1fr; }.document-column.is-parallel .document-panes { grid-template-columns:minmax(0,1fr); }.document-column.is-parallel .pdf-document,.parallel-document { height:62vh; min-height:420px; }.inspector { position:static; }.document-content { padding:32px 24px; }.paper-block p { font-size:16px; }.drop-hint { display:none; } }
.pdf-layout-layer { position:absolute; inset:0; pointer-events:none; z-index:3; }
.pdf-layout-layer { display:none; }
.pdf-ocr-layer { position:absolute; inset:0; z-index:2; pointer-events:none; user-select:text; overflow:clip; }
.pdf-ocr-layer span { position:absolute; color:transparent; white-space:pre; pointer-events:auto; user-select:text; cursor:text; font:inherit; line-height:1; transform-origin:0 0; }
.pdf-ocr-layer span::selection { background:rgba(236,101,61,.32); }
.pdf-layout-region { position:absolute; border:1px solid rgba(31,111,235,.58); background:rgba(31,111,235,.055); box-sizing:border-box; }
.pdf-layout-region.image,.pdf-layout-region.chart { border-color:rgba(18,145,112,.75); background:rgba(18,145,112,.06); }
.pdf-layout-region.table { border-color:rgba(192,102,20,.8); background:rgba(192,102,20,.06); }
.pdf-layout-region.formula,.pdf-layout-region.formula_number { border-color:rgba(133,75,190,.78); background:rgba(133,75,190,.055); }
.pdf-layout-region > span { position:absolute; left:-1px; top:-17px; max-width:160px; padding:1px 4px; overflow:hidden; color:#fff; background:rgba(31,41,55,.82); font:9px/14px 'DM Mono',monospace; white-space:nowrap; }
.model-picker { display:grid; gap:6px; margin-bottom:12px; color:var(--muted); font-size:11px; }
.model-picker select { min-height:34px; border:1px solid #d0d3ca; border-radius:6px; background:#f8f7f1; color:var(--ink); padding:7px 9px; }
.highlight-picker { display:flex; align-items:center; gap:3px; padding:0 3px; }
.highlight-picker button { width:13px; height:13px; padding:0; border:1px solid rgba(255,255,255,.6); border-radius:50%; }
.highlight-picker button[data-highlight-color="orange"] { background:#ec653d; }.highlight-picker button[data-highlight-color="yellow"] { background:#f6cc4a; }.highlight-picker button[data-highlight-color="green"] { background:#64b570; }.highlight-picker button[data-highlight-color="blue"] { background:#5b91d2; }.highlight-picker button[data-highlight-color="pink"] { background:#e26f9a; }
.highlight-picker button.active { outline:2px solid #fff; outline-offset:1px; }
.parallel-column { background:#fff; border:1px solid #d7d8cf; border-radius:8px; padding:16px 18px; max-height:calc(100vh - 220px); overflow-y:auto; align-self:start; position:sticky; top:22px; }
.parallel-head { display:flex; justify-content:space-between; align-items:baseline; padding-bottom:10px; border-bottom:1px solid var(--line); color:var(--ink); font:600 16px 'Newsreader',serif; }
.parallel-head small { color:var(--muted); font:9px 'DM Mono'; }
.parallel-block { padding:10px 0; border-bottom:1px solid #ecece5; cursor:pointer; }
.parallel-block:hover { background:#f6f4ec; }
.parallel-block p { margin:0; color:var(--ink); font:15px/1.7 'Newsreader',serif; }
.parallel-notes { margin-top:18px; padding-top:12px; border-top:2px solid var(--orange); }
.document-toolbar { justify-content:flex-start; align-items:center; flex-wrap:wrap; gap:7px 12px; }
.document-toolbar #pdf-page-status { margin-left:auto; }
.tool-toggle { min-height:25px; border:1px solid var(--line); border-radius:5px; padding:4px 8px; background:var(--paper); color:var(--muted); font:10px 'DM Mono'; }
.tool-toggle:hover { border-color:var(--orange); color:var(--orange-dark); }
.tool-toggle.active { border-color:#2878be; background:#e9f4ff; color:#145f9e; }
.pdf-translation-region { cursor:zoom-in; }
.pdf-translation-region.figure_title,.pdf-translation-region.table_title,.pdf-translation-region.section_title { font-weight:600; text-align:left; }
.pdf-translation-region.abstract { background:#fffdf7; }
.pdf-translation-region.footnote { color:#303833; }
.pdf-translation-region.is-overflowing { box-shadow:inset 0 0 0 1px rgba(214,95,57,.26),0 0 0 2px #fff; }
.translation-expand-button { position:absolute; right:2px; top:2px; z-index:2; border:0; border-radius:3px; padding:3px 5px; background:rgba(214,95,57,.94); color:#fff; font:9px/1.1 'DM Mono'; letter-spacing:.02em; box-shadow:0 1px 4px rgba(23,32,29,.14); cursor:pointer; }
.translation-expand-button:hover { background:#bd4f31; }
.pdf-translation-region { pointer-events:auto; }
.pdf-translation-region.section_title,.pdf-translation-region.figure_title,.pdf-translation-region.table_title,.pdf-translation-region.title { overflow:visible; z-index:1; }
.pdf-translation-region.section_title .translation-expand-button,.pdf-translation-region.figure_title .translation-expand-button,.pdf-translation-region.table_title .translation-expand-button,.pdf-translation-region.title .translation-expand-button { display:none; }
.pdf-layout-region.title,.pdf-layout-region.author,.pdf-layout-region.email { border-color:rgba(194,64,74,.82); background:rgba(194,64,74,.06); }
.pdf-layout-region.abstract { border-color:rgba(43,125,78,.82); background:rgba(43,125,78,.06); }
.pdf-layout-region.footnote,.pdf-layout-region.running_header,.pdf-layout-region.running_footer,.pdf-layout-region.page_number { border-color:rgba(104,112,120,.82); background:rgba(104,112,120,.06); }
.translation-rules-form { display:grid; gap:14px; }
.translation-rules-form label { display:grid; gap:6px; color:var(--muted); font-size:11px; }
.translation-rules-form textarea { min-height:92px; font:12px/1.5 'DM Mono',monospace; }
.translation-rules-form .rules-checkbox { display:flex; grid-template-columns:auto 1fr; align-items:center; gap:8px; }
.translation-rules-form .rules-checkbox input { width:15px; height:15px; accent-color:var(--orange); }
.translation-reader { z-index:30; }
.translation-reader-sheet { width:min(760px,100%); max-height:min(82vh,820px); overflow:auto; padding:24px; border:1px solid var(--line); border-radius:8px; background:var(--paper); box-shadow:0 24px 80px rgba(23,32,29,.28); }
.translation-reader-content { display:grid; grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr); gap:24px; padding-top:20px; }
.translation-reader-content section { min-width:0; }
.translation-reader-content section > span:not(.translation-reader-sentence) { color:var(--orange-dark); font:10px 'DM Mono'; letter-spacing:.08em; }
.translation-reader-content p { margin:9px 0 0; white-space:pre-wrap; overflow-wrap:anywhere; color:var(--ink); font:16px/1.75 'Newsreader','Noto Serif SC',serif; }
.translation-reader-content section:first-child p { color:#68736d; font-size:13px; line-height:1.65; }
.translation-reader-tools { display:flex; align-items:center; gap:6px; flex-wrap:wrap; margin-top:18px; padding:8px 0; border-top:1px solid var(--line); border-bottom:1px solid var(--line); }
.translation-reader-tools > span { margin-right:4px; color:var(--muted); font:10px 'DM Mono'; }
.translation-reader-tools button { min-height:30px; border:1px solid var(--line); border-radius:5px; padding:5px 9px; background:var(--paper); color:var(--ink); font-size:11px; }
.translation-reader-tools button:hover,.translation-reader-tools button:focus-visible { border-color:var(--orange); color:var(--orange-dark); background:#fff8f3; }
.translation-reader-result { margin-top:12px; padding:11px 12px; border-left:3px solid var(--orange); background:#fff8f3; color:var(--ink); font:13px/1.6 'Newsreader',serif; white-space:pre-wrap; overflow-wrap:anywhere; }
.translation-reader-result.error { border-left-color:#b95045; background:#f8ebe8; color:#8d433c; }
.translation-reader-composer { display:grid; gap:8px; margin-top:12px; padding:12px; border:1px solid #cbd9d1; border-left:3px solid var(--orange); background:#fbfaf4; }
.translation-reader-composer strong { font-size:12px; }
.translation-reader-composer textarea { width:100%; min-height:72px; resize:vertical; border:1px solid #cbd5cd; border-radius:4px; background:#fffdf7; padding:9px; color:var(--ink); font-size:12px; }
.translation-reader-composer > div { display:flex; justify-content:flex-end; gap:7px; }
.translation-reader-composer button { min-height:30px; border:1px solid var(--line); border-radius:5px; padding:5px 10px; background:var(--paper); color:var(--ink); font-size:10px; }
.translation-reader-composer .accent-button { border-color:var(--orange); background:var(--orange); color:#fff; }
.image-gallery { z-index:31; }
.image-gallery-sheet { width:min(980px,100%); max-height:min(86vh,900px); overflow:auto; padding:24px; border:1px solid var(--line); border-radius:8px; background:var(--paper); box-shadow:0 24px 80px rgba(23,32,29,.28); }
.image-gallery-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(210px,1fr)); gap:16px; padding-top:20px; }
.image-gallery-item { min-width:0; border:1px solid var(--line); border-radius:8px; background:#fff; overflow:hidden; transition:.18s ease; }
.image-gallery-item:hover,.image-gallery-item.is-focused { border-color:var(--orange); box-shadow:0 8px 24px rgba(23,32,29,.11); transform:translateY(-1px); }
.image-gallery-preview { display:block; width:100%; min-height:150px; border:0; padding:0; background:#e4e3dc; cursor:pointer; }
.image-gallery-preview img { display:block; width:100%; height:170px; object-fit:contain; background:#f8f7f1; }
.image-gallery-preview:not(:has(img)) { color:var(--muted); font-size:12px; }
.image-gallery-meta { display:grid; gap:5px; padding:10px 12px 12px; }
.image-gallery-meta strong { font:600 14px 'Newsreader',serif; }
.image-gallery-meta span { color:var(--muted); font-size:11px; line-height:1.45; }
.parallel-notes h4 { margin:0 0 8px; font:600 14px 'Newsreader',serif; }
.parallel-notes article { padding:8px 0; border-bottom:1px solid #ecece5; }
.parallel-notes article strong { display:block; font-size:11px; }
.parallel-notes article p { margin:4px 0 0; color:var(--muted); font-size:11px; line-height:1.5; }
.selection-context { position:relative; margin-bottom:12px; padding:10px 28px 10px 11px; border-left:2px solid var(--orange); background:#f8f7f1; }
.selection-context span { color:var(--orange-dark); font:9px 'DM Mono'; letter-spacing:.06em; }
.selection-context p { margin:5px 0 0; color:var(--muted); font-size:11px; line-height:1.5; }
.selection-context button { position:absolute; right:7px; top:7px; border:0; background:transparent; color:var(--muted); font-size:10px; }
.service-status { display:flex; flex-wrap:wrap; gap:6px 12px; margin-top:12px; color:var(--muted); font:9px/1.5 'DM Mono'; }
.service-status span { white-space:nowrap; }
.service-status .is-ready { color:#4e855b; }
.service-status .is-down { color:#b95045; }
.services-view { padding-bottom:70px; }
.research-summary { margin-bottom:18px; border:1px solid var(--line); background:rgba(255,255,255,.55); }
.research-source { display:flex; justify-content:space-between; gap:12px; padding:11px 12px; border-bottom:1px solid var(--line); font-size:12px; }
.research-source span { color:var(--muted); }
.research-stats { display:grid; grid-template-columns:repeat(3,1fr); border-bottom:1px solid var(--line); }
.research-stats span { display:flex; flex-direction:column; padding:10px 8px; border-right:1px solid var(--line); font-size:11px; color:var(--muted); }
.research-stats span:nth-child(3n) { border-right:0; }
.research-stats strong { font-size:18px; color:var(--ink); }
.research-metadata { margin:0; padding:6px 12px; }
.research-metadata div { display:grid; grid-template-columns:42px 1fr; gap:8px; padding:7px 0; border-bottom:1px dashed var(--line); }
.research-metadata div:last-child { border-bottom:0; }
.research-metadata dt { color:var(--muted); font-size:11px; }
.research-metadata dd { margin:0; font-size:12px; line-height:1.55; max-height:90px; overflow:auto; }
.research-empty { margin:0; padding:12px; color:var(--muted); font-size:12px; }
.research-references { border-top:1px solid var(--line); padding:10px 12px; font-size:12px; }
.research-references summary { cursor:pointer; font-weight:700; }
.research-references p { line-height:1.5; padding:7px 0; margin:0; border-bottom:1px dashed var(--line); }
.services-list { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; margin-top:34px; }
.service-card { position:relative; display:grid; gap:16px; min-height:310px; padding:22px; border:1px solid #d1d4ca; border-radius:10px; background:linear-gradient(145deg,#fffdf8 0%,#f2f2ea 100%); box-shadow:0 8px 28px rgba(23,32,29,.055); overflow:hidden; }
.service-card::after { content:''; position:absolute; right:-42px; bottom:-46px; width:150px; height:150px; border:1px solid rgba(214,95,57,.14); border-radius:50%; box-shadow:0 0 0 24px rgba(214,95,57,.035); pointer-events:none; }
.service-card-head { display:flex; justify-content:space-between; gap:18px; align-items:flex-start; }
.service-card-head > div { display:flex; align-items:baseline; gap:12px; }
.service-index { color:var(--orange); font:10px 'DM Mono'; }
.service-card h3 { margin:0; font:600 21px/1.1 'Newsreader',serif; }
.service-card > p { min-height:42px; margin:0; color:var(--muted); font-size:11px; line-height:1.7; }
.service-pill { flex:none; padding:5px 8px; border:1px solid #c8ccc3; border-radius:999px; color:#8a918c; background:rgba(255,255,255,.6); font:9px 'DM Mono'; letter-spacing:.04em; }
.service-pill.is-ready { border-color:#a8c9ae; color:#397148; background:#edf6ed; }
.service-pill.is-down { border-color:#deb2aa; color:#a3473d; background:#f9eeeb; }
.service-card label { display:grid; gap:7px; color:#68736d; font:10px 'DM Mono'; letter-spacing:.035em; }
.service-card input { position:relative; z-index:1; min-height:42px; border:1px solid #d0d3ca; border-radius:6px; padding:9px 11px; background:rgba(255,255,255,.82); color:var(--ink); font:12px 'DM Mono'; outline:none; }
.service-card input:focus { border-color:var(--orange); box-shadow:0 0 0 3px rgba(214,95,57,.1); }
.key-hint { float:right; color:#969d97; font:9px 'DM Mono'; letter-spacing:0; }
.service-card-actions { position:relative; z-index:1; display:flex; align-items:center; gap:12px; min-height:36px; }
.service-test-result { color:var(--muted); font:9px/1.4 'DM Mono'; }
.service-test-result.is-ready { color:#397148; }.service-test-result.is-down { color:#a3473d; }
.evidence-list { display:grid; gap:7px; margin-top:12px; }
.evidence-heading { color:var(--orange-dark); font:9px 'DM Mono'; letter-spacing:.06em; }
.evidence-item { display:grid; gap:5px; width:100%; border:1px solid #d2d5cc; border-radius:6px; padding:9px 10px; background:#f8f7f1; text-align:left; }
.evidence-item:hover { border-color:var(--orange); }
.evidence-item span { color:var(--orange-dark); font:9px 'DM Mono'; }
.evidence-item strong { color:var(--ink); font:500 11px/1.5 'Plus Jakarta Sans'; }
.identifier-input { display:grid; gap:8px; margin-top:22px; color:var(--muted); font-size:11px; }
.identifier-input input { min-height:42px; border:1px solid #d0d3ca; border-radius:6px; padding:9px 11px; background:#fff; color:var(--ink); }
.identifier-results { display:grid; gap:9px; min-height:90px; max-height:340px; overflow:auto; margin-top:16px; }
.identifier-results > p { color:var(--muted); font-size:11px; line-height:1.6; }
.identifier-result { display:flex; align-items:center; justify-content:space-between; gap:14px; padding:11px; border:1px solid var(--line); border-radius:6px; background:#fff; }
.identifier-result div { min-width:0; }
.identifier-result strong,.identifier-result span { display:block; }
.identifier-result strong { font:600 15px/1.3 'Newsreader'; }
.identifier-result span { margin-top:5px; color:var(--muted); font-size:10px; }
.form-error { color:#b95045 !important; }
.job-downloads { display:flex; gap:8px; margin-top:9px; }.job-downloads a { color:var(--orange-dark); font-size:10px; text-decoration:none; }.job-downloads a:hover { text-decoration:underline; }
.conversation-box { display:grid; gap:8px; max-height:280px; overflow-y:auto; margin-bottom:12px; padding-right:3px; }
.conversation-message { padding:9px 10px; border-radius:6px; }
.conversation-message.user { margin-left:20px; background:#26352e; color:#fff; }
.conversation-message.assistant { margin-right:12px; background:#f8f7f1; border-left:2px solid var(--orange); }
.conversation-message span { display:block; margin-bottom:4px; color:inherit; opacity:.65; font:9px 'DM Mono'; }
.conversation-message p { margin:0; white-space:pre-wrap; font:13px/1.55 'Newsreader',serif; }
.mark-answer { margin:8px 0 0; padding:8px; background:#ecefe8; color:#455149; font:11px/1.55 'Newsreader',serif; }
.pdf-mark.note { background:rgba(111,165,105,.22); box-shadow:inset 0 -2px #5a8c57; }
.pdf-mark.ask { background:rgba(91,126,176,.20); box-shadow:inset 0 -2px #5173a6; }
@media (max-width:1200px) { .parallel-column { position:static; max-height:520px; } }
@media (max-width:900px) { .services-list { grid-template-columns:1fr; } }
.structure-kind-select { width:100%; min-height:38px; margin:-5px 0 13px; border:1px solid #d0d3ca; border-radius:6px; padding:7px 9px; background:#f8f7f1; color:var(--ink); font-size:11px; }
.structure-detail-item { align-items:flex-start; gap:12px; text-align:left; }
.structure-detail-item strong { flex:1; line-height:1.5; }
.structure-detail-item span { flex:none; padding-top:2px; }
.translation-reader-content p::selection { background:rgba(246,204,74,.58); color:var(--ink); }

/* Edition workspace refresh: an editorial instrument panel around the existing
   document engine. The old selectors remain intentionally compatible with app.js. */
:root {
  --ink:#18211e; --muted:#718078; --paper:#f5f4ed; --paper-2:#e8ebe4; --line:#d4d9d1;
  --orange:#e9663e; --orange-dark:#b9472f; --sidebar:#111a18; --sidebar-muted:#aab7af;
  --stage:#101615; --teal:#73c6b2; --blue:#739bff; --reader-pane-ratio:50%; --inspector-width:330px;
  --shadow:0 24px 70px rgba(10,20,17,.16);
}
html { background:var(--stage); }
body { background:var(--stage); color:var(--ink); min-height:100vh; overflow-x:hidden; }
body::before { content:''; position:fixed; inset:0; z-index:-2; pointer-events:none; opacity:.22; background-image:linear-gradient(rgba(255,255,255,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.045) 1px,transparent 1px); background-size:48px 48px; mask-image:linear-gradient(to bottom,black,transparent 85%); }
.ambient-stage { position:fixed; inset:0; z-index:-1; pointer-events:none; overflow:hidden; }
.ambient-stage::before,.ambient-stage::after { content:''; position:absolute; background:var(--teal); opacity:.28; }
.ambient-stage::before { width:1px; height:65vh; left:8vw; top:-8vh; transform:rotate(23deg); box-shadow:0 0 40px 1px rgba(115,198,178,.15); }
.ambient-stage::after { width:1px; height:55vh; right:13vw; bottom:-12vh; transform:rotate(-31deg); box-shadow:0 0 40px 1px rgba(115,198,178,.15); }
.skip-link { position:fixed; left:16px; top:-60px; z-index:100; padding:9px 12px; background:#f9f7ef; color:var(--ink); border-radius:4px; transition:top .2s ease; }
.skip-link:focus { top:16px; }
.app-shell { position:relative; z-index:1; grid-template-columns:236px minmax(0,1fr); gap:0; min-height:100svh; }
.sidebar { position:sticky; top:0; height:100svh; padding:24px 16px 18px; border-right:1px solid rgba(255,255,255,.08); background:rgba(17,26,24,.94); backdrop-filter:blur(18px); }
.brand { position:relative; padding:0 8px; color:#f5f2e9; font-size:21px; }
.brand-mark { width:38px; height:38px; color:#17231f; background:#f1b96f; border-radius:10px 10px 10px 2px; font-size:23px; box-shadow:0 10px 28px rgba(241,185,111,.18); }
.brand-copy { transition:opacity .2s ease; }
.sidebar-toggle { margin-left:auto; width:28px; height:28px; border:1px solid rgba(255,255,255,.18); border-radius:5px; background:transparent; color:#aab7af; font-size:18px; line-height:1; }
.sidebar-toggle:hover { color:#fff; border-color:rgba(255,255,255,.4); }
.sidebar-label { margin:58px 12px 12px; color:#65756b; }
.nav-item { position:relative; min-height:42px; border-radius:5px; color:#93a49a; }
.nav-item:hover { background:#1c2924; color:#f7f6ef; }
.nav-item.active { background:#22322b; color:#f7f6ef; box-shadow:inset 3px 0 var(--teal); }
.nav-item.active::after { content:''; position:absolute; right:12px; width:5px; height:5px; border-radius:50%; background:var(--teal); }
.nav-icon { color:#dfab69; }
.connection-card { border-color:rgba(115,198,178,.24); background:#182722; }
.pulse,.translation-pulse { background:var(--teal); box-shadow:0 0 0 4px rgba(115,198,178,.1); }
.main-area { min-width:0; min-height:100svh; padding:0 clamp(20px,4vw,64px) 70px; background:var(--paper); border-radius:26px 0 0 26px; box-shadow:-20px 0 80px rgba(0,0,0,.12); }
.topbar { min-height:104px; border-color:#d8ddd5; }
.topbar h1 { font-size:36px; }
.top-actions { gap:7px; }
.ghost-button,.upload-button,.accent-button,.back-button,.wide-button { min-height:36px; border-radius:5px; padding:8px 12px; }
.ghost-button { border:1px solid transparent; color:#52615a; }
.ghost-button:hover { border-color:#c7d0c8; background:#edf0ea; color:var(--ink); transform:none; }
.accent-button { background:var(--ink); box-shadow:0 8px 18px rgba(24,33,30,.12); }
.accent-button:hover { background:#2b3b34; }
.upload-button { background:var(--orange); }
.view { padding-top:36px; }
.reader-view { padding-top:22px; }
.reader-header { grid-template-columns:92px minmax(0,1fr); gap:10px 18px; padding:10px 0 18px; }
.reader-identity { min-width:0; }
.reader-header h2 { font-size:clamp(28px,3vw,42px); line-height:1.02; }
.reader-actions { grid-column:2; gap:6px; align-items:center; }
.reader-actions .accent-button { margin-left:auto; }
.reader-tools-menu { position:relative; }
.reader-tools-menu summary { list-style:none; cursor:pointer; min-height:36px; display:flex; align-items:center; padding:8px 10px; border:1px solid transparent; border-radius:5px; color:#52615a; font-size:12px; }
.reader-tools-menu summary::-webkit-details-marker { display:none; }
.reader-tools-menu summary:hover { border-color:#c7d0c8; background:#edf0ea; }
.reader-tools-popover { position:absolute; right:0; top:calc(100% + 7px); z-index:12; display:grid; gap:3px; min-width:190px; padding:7px; border:1px solid #cfd6cf; border-radius:7px; background:#fbfaf5; box-shadow:var(--shadow); }
.reader-tools-popover .ghost-button { text-align:left; }
.reader-grid { grid-template-columns:minmax(0,1fr) var(--inspector-width); gap:18px; padding-top:18px; transition:grid-template-columns .25s ease; }
.inspector-collapsed .reader-grid { grid-template-columns:minmax(0,1fr) 0; }
.inspector-collapsed .inspector { width:0; min-width:0; opacity:0; overflow:hidden; border:0; padding:0; pointer-events:none; }
.inspector-collapsed .inspector-resizer { display:none; }
.inspector { top:18px; max-height:calc(100svh - 150px); min-height:0; border:1px solid #d4dad3; border-radius:8px; background:#e8ece5; box-shadow:0 14px 42px rgba(32,48,40,.08); transition:width .25s ease, opacity .2s ease; overflow:auto; }
.inspector-head { display:flex; align-items:center; justify-content:space-between; padding:12px 14px 10px; color:#75837a; font:9px 'DM Mono'; letter-spacing:.09em; border-bottom:1px solid #d4dad3; }
.inspector-head button { border:0; background:transparent; color:#839087; font-size:18px; }
.inspector-head-actions { display:flex; align-items:center; gap:2px; }
.inspector-head-actions button { width:28px; height:28px; display:grid; place-items:center; border-radius:50%; font-size:16px; }
.inspector-head-actions button:hover { background:#dbe5dc; color:var(--ink); }
.inspector-tabs { background:#e1e7df; }
.inspector-tab { padding:11px 4px; font-size:10px; }
.inspector-tab.active { color:var(--ink); border-bottom-color:var(--teal); }
.inspector-panel { padding:18px 16px 22px; }
.inspector-panel h3 { margin:8px 0 16px; font-size:23px; }
.wide-button { background:var(--ink); }
.translation-progress { margin:14px 0 0; padding:10px 12px; border:1px solid #cbd9d1; border-radius:6px; background:#edf5ef; }
.translation-progress-head strong { display:flex; align-items:center; gap:7px; }
.translation-pulse { display:inline-block; width:7px; height:7px; border-radius:50%; }
.translation-progress-track { height:6px; background:#d4e4da; }
.translation-progress-track i { background:var(--teal); }
.translation-progress.is-complete { background:#eef1eb; border-color:#d1d9d0; }
.translation-progress.is-complete .translation-progress-track i { background:#4b9c7a; }
.document-column { min-width:0; }
.document-toolbar { position:sticky; top:0; z-index:5; min-height:42px; padding:7px 8px; border:1px solid #d5dbd4; border-radius:6px 6px 0 0; background:rgba(246,245,238,.94); backdrop-filter:blur(12px); box-shadow:0 5px 16px rgba(34,46,39,.05); }
.pdf-load-progress { position:sticky; top:42px; z-index:4; padding:8px 12px 9px; border:1px solid #d5dbd4; border-top:0; background:rgba(249,248,242,.96); backdrop-filter:blur(12px); box-shadow:0 8px 18px rgba(34,46,39,.05); }
.pdf-load-progress-head { display:flex; align-items:center; justify-content:space-between; gap:16px; margin-bottom:7px; color:#5d6b63; font:10px/1.2 'DM Mono',monospace; letter-spacing:.035em; }
.pdf-load-progress-head strong { color:#22362d; font-weight:500; }
.pdf-load-progress-head span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:#7a887f; }
.pdf-load-progress-track { position:relative; height:3px; overflow:hidden; border-radius:999px; background:#dbe4dc; }
.pdf-load-progress-track i { display:block; width:0; height:100%; border-radius:inherit; background:linear-gradient(90deg,#3f8f72,#76c7aa); transition:width .18s ease; }
.pdf-load-progress.is-indeterminate .pdf-load-progress-track i { width:35%; animation:pdf-progress-scan 1.05s ease-in-out infinite; }
@keyframes pdf-progress-scan { from { transform:translateX(-115%); } to { transform:translateX(310%); } }
.reading-modes { display:inline-flex; padding:2px; border:1px solid #d4dbd4; border-radius:5px; background:#e9ede7; }
.reading-modes button { border:0; border-radius:3px; padding:5px 8px; background:transparent; color:#728178; font:10px 'DM Mono'; }
.reading-modes button.active { background:#fffdf7; color:var(--ink); box-shadow:0 1px 4px rgba(30,45,35,.12); }
.pane-labels { display:none; grid-template-columns:var(--reader-pane-ratio) minmax(0,1fr); gap:0; padding:8px 16px 0; color:#85928a; font:9px 'DM Mono'; letter-spacing:.08em; }
.pane-labels.is-visible { display:grid; }
.pane-labels span:last-child { padding-left:18px; }
.document-panes { position:relative; grid-template-columns:minmax(0,1fr); gap:0; }
.document-column.is-bilingual .document-panes { grid-template-columns:var(--reader-pane-ratio) minmax(0,1fr); }
.document-column.is-bilingual .pdf-document { border-radius:0; }
.document-column.is-parallel .document-panes { grid-template-columns:var(--reader-pane-ratio) minmax(0,1fr); }
.document-column.is-bilingual .bilingual-column,.document-column.is-parallel .parallel-column { grid-column:2; grid-row:1; }
.document-column.is-bilingual .pdf-document,.document-column.is-parallel .pdf-document { grid-column:1; grid-row:1; min-width:0; }
.pdf-document { min-height:calc(100svh - 235px); padding:20px 14px 50px; background:#dfe4dd; border:1px solid #d2dad1; border-top:0; }
.parallel-document { height:calc(100svh - 235px); min-height:560px; padding:20px 14px 50px; border:1px solid #d2dad1; border-top:0; background:#dfe4dd; }
.bilingual-column { position:relative; top:0; max-height:calc(100svh - 235px); min-height:560px; border:1px solid #d2dad1; border-top:0; border-radius:0; padding:18px 20px 40px; background:#fbfaf4; }
.parallel-column { position:relative; top:0; max-height:none; height:100%; border:0; border-left:1px solid #d2dad1; border-radius:0; padding:0; background:#fbfaf4; }
.parallel-toolbar { position:sticky; top:0; z-index:2; padding:11px 14px; border-bottom:1px solid #d2dad1; background:#fbfaf4; }
.pane-resizer { display:none; position:absolute; z-index:6; top:0; bottom:0; left:var(--reader-pane-ratio); width:16px; transform:translateX(-8px); cursor:col-resize; align-items:center; justify-content:center; }
.pane-resizer.is-visible { display:flex; }
.pane-resizer i { width:2px; height:70px; border-radius:2px; background:#b8c9be; box-shadow:0 0 0 4px rgba(115,198,178,.08); transition:height .2s ease,background .2s ease; }
.pane-resizer:hover i,.is-resizing-panes .pane-resizer i { height:100%; background:var(--teal); }
.is-resizing-panes { cursor:col-resize; user-select:none; }
.pdf-page { box-shadow:0 18px 40px rgba(29,43,34,.14); }
.pdf-page-label { color:#91a097; }
.pdf-controls button,.pdf-controls select,.pdf-controls input { background:#fffdf7; border-color:#cfd8cf; }
.tool-toggle.active { border-color:#6d9ed0; background:#e8f2ff; color:#28679e; }
.reader-alert { border-left-color:var(--orange); }
.paper-card { border-radius:7px; border-color:#d6ddd4; background:#fbfaf4; box-shadow:0 7px 22px rgba(33,49,39,.045); }
.drop-zone { border-color:#a9bdb1; background:#e9efea; }
.drop-zone.dragging { background:#e8f5ef; border-color:var(--teal); }
.section-heading { color:#7e8d84; }
.toast { border-radius:6px; background:#18231f; }
.reader-focus .sidebar,.reader-focus .topbar,.reader-focus .reader-header .back-button,.reader-focus .reader-actions,.reader-focus .reader-tools-menu,.reader-focus .reader-header { transition:opacity .2s ease; }
.reader-focus .sidebar,.reader-focus .topbar { opacity:.12; }
.reader-focus .reader-header .back-button,.reader-focus .reader-actions { opacity:.3; }
.reader-focus .main-area { border-radius:0; padding-left:clamp(20px,7vw,140px); padding-right:clamp(20px,7vw,140px); }
.reader-focus .reader-grid { padding-top:4px; }
.reader-focus .inspector { display:none; }
.sidebar-collapsed .app-shell { grid-template-columns:72px minmax(0,1fr); }
.sidebar-collapsed .sidebar { padding-left:10px; padding-right:10px; }
.sidebar-collapsed .brand { justify-content:center; padding:0; }
.sidebar-collapsed .brand-copy,.sidebar-collapsed .sidebar-label,.sidebar-collapsed .nav-item:not(.active) span:not(.nav-icon),.sidebar-collapsed .nav-item .nav-count,.sidebar-collapsed .connection-card,.sidebar-collapsed .sidebar-footer { display:none; }
.sidebar-collapsed .nav-item { justify-content:center; padding-left:0; padding-right:0; }
.sidebar-collapsed .nav-item.active::after { right:8px; }
button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,[tabindex]:focus-visible { outline:2px solid var(--blue); outline-offset:2px; }
@media (max-width:1200px) {
  .main-area { padding-left:28px; padding-right:28px; }
  .reader-grid { grid-template-columns:minmax(0,1fr) var(--inspector-width); }
}
@media (max-width:900px) {
  body { background:var(--paper); }
  body::before,.ambient-stage { display:none; }
  .app-shell,.sidebar-collapsed .app-shell { display:block; }
  .sidebar { position:relative; width:100%; height:auto; min-height:0; padding:14px 16px; border-right:0; border-bottom:1px solid rgba(255,255,255,.08); }
  .brand { margin-bottom:12px; }
  .sidebar-label,.sidebar-spacer,.connection-card,.sidebar-footer { display:none; }
  .nav-list { grid-template-columns:repeat(3,1fr); }
  .nav-item { justify-content:center; padding:9px 5px; }
  .nav-item.active::after { display:none; }
  .sidebar-toggle { display:none; }
  .main-area { padding:0 16px 42px; border-radius:0; box-shadow:none; }
  .topbar { min-height:82px; gap:12px; }
  .topbar h1 { font-size:29px; }
  .top-actions .ghost-button { display:none; }
  .top-actions .upload-button { font-size:0; padding:9px 11px; }
  .top-actions .upload-button::first-letter { font-size:18px; }
  .reader-header { grid-template-columns:1fr auto; gap:9px 10px; }
  .reader-header .back-button { grid-column:1/-1; }
  .reader-actions { grid-column:1/-1; overflow-x:auto; flex-wrap:nowrap; padding-bottom:3px; }
  .reader-actions .accent-button { order:-1; margin-left:0; white-space:nowrap; }
  .reader-tools-menu { display:none; }
  .reader-grid,.inspector-collapsed .reader-grid { grid-template-columns:1fr; }
  .inspector-resizer { display:none; }
  .inspector-expanded .reader-grid { grid-template-columns:1fr; }
  .inspector-expanded .document-column { display:none; }
  .inspector-expanded .inspector { grid-column:auto; }
  .inspector-collapsed .inspector { display:none; }
  .inspector { position:static; max-height:none; margin-top:16px; }
  .document-toolbar { position:relative; overflow-x:auto; flex-wrap:nowrap; justify-content:flex-start; }
  .document-toolbar > #reader-block-count,.document-toolbar > #pdf-page-status,.document-toolbar > #layout-box-toggle { display:none; }
  .document-toolbar #pdf-page-status { margin-left:0; white-space:nowrap; }
  .reading-modes { flex:none; }
  .pane-labels { display:none !important; }
  .document-column.is-bilingual .document-panes,.document-column.is-parallel .document-panes { grid-template-columns:1fr; }
  .document-column.is-bilingual .bilingual-column,.document-column.is-parallel .parallel-column { grid-column:1; grid-row:2; }
  .document-column.is-bilingual .pdf-document,.document-column.is-parallel .pdf-document { grid-column:1; grid-row:1; }
  .pane-resizer { display:none !important; }
  .pdf-document,.parallel-document,.bilingual-column { min-height:60svh; height:auto; max-height:none; }
  .parallel-document { height:60svh; }
  .bilingual-column { border-top:1px solid #d2dad1; }
  .reader-focus .main-area { padding:0 10px 30px; }
  .reader-focus .topbar,.reader-focus .sidebar { display:none; }
}

/* Focused paper chat: a quiet editorial canvas with persistent history and a
   compact bottom composer, adapted from the reference interaction model. */
.sr-only { position:absolute !important; width:1px !important; height:1px !important; padding:0 !important; margin:-1px !important; overflow:hidden !important; clip:rect(0,0,0,0) !important; white-space:nowrap !important; border:0 !important; }
#ask-panel.active { display:flex; flex-direction:column; min-height:0; height:100%; padding:14px 12px 12px; overflow:hidden; background:#fbfbf8; }
#ask-panel > .panel-kicker,#ask-panel .ask-panel-intro { display:none; }
#ask-panel .ask-panel-heading { flex:none; display:grid; grid-template-columns:minmax(0,1fr) repeat(3,30px); align-items:center; gap:4px; min-height:42px; padding:0 2px 10px; border-bottom:1px solid #e1e4df; }
#ask-panel .ask-panel-heading h3 { min-width:0; margin:0; overflow:hidden; color:#171a18; font:600 17px/1.2 'Newsreader',serif; text-overflow:ellipsis; white-space:nowrap; }
#ask-panel .conversation-action,#ask-panel .conversation-clear { width:30px; height:30px; min-height:30px; display:grid; place-items:center; border:1px solid transparent; border-radius:50%; padding:0; background:transparent; color:#515954; font-size:16px; line-height:1; }
#ask-panel .conversation-action:hover,#ask-panel .conversation-clear:hover,#ask-panel .conversation-action:focus-visible,#ask-panel .conversation-clear:focus-visible { border-color:#cbd2cc; background:#f0f2ee; color:#111512; outline:none; }
#translation-model-select-picker,#answer-model-select-picker { flex:none; display:flex; align-items:center; gap:8px; color:#66736b; font:9px 'DM Mono'; letter-spacing:.02em; }
#translation-model-select-picker { margin:12px 0 14px; padding:10px; border:1px solid #ccd8d0; border-left:3px solid #3f83a5; border-radius:5px; background:#f3f7f4; }
#answer-model-select-picker { margin:9px 2px 0; }
#translation-model-select-picker select,#answer-model-select-picker select { min-width:0; flex:1; height:32px; border:1px solid #d5ddd7; border-radius:4px; padding:0 26px 0 8px; background:#fff; color:#28332d; font-size:10px; }
#translation-model-select-picker select:focus-visible,#answer-model-select-picker select:focus-visible { outline:2px solid rgba(63,131,165,.35); outline-offset:1px; }
#ask-panel .chat-empty-state { flex:1 1 auto; min-height:170px; display:flex; flex-direction:column; align-items:center; justify-content:center; padding:24px 16px; text-align:center; }
#ask-panel .chat-empty-state.hidden { display:none; }
.chat-empty-mark { display:grid; place-items:center; width:34px; height:34px; margin-bottom:14px; border:1px solid #d9ddd8; border-radius:50%; color:#436e59; font-size:14px; }
.chat-empty-state strong { color:#171a18; font:600 24px/1.25 'Newsreader',serif; }
.chat-empty-state small { max-width:220px; margin-top:9px; color:#858c87; font-size:10px; line-height:1.6; }
#ask-panel .conversation-history { flex:none; max-height:210px; margin:9px 0 0; padding:5px; border:1px solid #dfe3de; border-radius:6px; background:#f2f4f0; box-shadow:0 8px 22px rgba(23,32,29,.08); }
#ask-panel .conversation-history-item { min-height:38px; }
#ask-panel .selection-context { flex:none; margin:9px 0 0; border:1px solid #dfe4df; border-left:3px solid #4d7c63; border-radius:5px; background:#f3f6f1; }
#ask-panel.active .conversation-box { flex:1 1 auto; min-height:120px; max-height:none; display:flex; flex-direction:column; gap:14px; margin:10px 0 8px; padding:4px 3px 12px; overflow-y:auto; scroll-behavior:smooth; }
#ask-panel .conversation-message { max-width:92%; padding:0; border:0; border-radius:0; background:transparent; color:#202521; }
#ask-panel .conversation-message span { margin-bottom:5px; color:#7e8781; opacity:1; font:9px 'DM Mono'; letter-spacing:.04em; }
#ask-panel .conversation-message p { margin:0; white-space:pre-wrap; overflow-wrap:anywhere; font:13px/1.65 'Newsreader',serif; }
#ask-panel .conversation-content { color:#202521; font:13px/1.65 'Newsreader',serif; overflow-wrap:anywhere; }
#ask-panel .conversation-content p { margin:0 0 9px; }
#ask-panel .conversation-content p:last-child { margin-bottom:0; }
#ask-panel .conversation-content h1,#ask-panel .conversation-content h2,#ask-panel .conversation-content h3 { margin:0 0 8px; color:#17211c; font:600 16px/1.25 'Newsreader',serif; }
#ask-panel .conversation-content ul { margin:0 0 9px; padding-left:20px; }
#ask-panel .conversation-content li { margin:4px 0; }
#ask-panel .conversation-content blockquote { margin:7px 0 10px; padding:6px 10px; border-left:2px solid #d96a48; color:#5d6d63; background:#f3f6f1; }
#ask-panel .conversation-content strong { color:#17211c; font-weight:700; }
#ask-panel .conversation-content em { color:#5c6e62; }
#ask-panel .conversation-content code { padding:1px 4px; border-radius:3px; background:#e8eee8; color:#345845; font:11px 'DM Mono',monospace; }
#ask-panel .conversation-content a { color:#2f765b; text-decoration:underline; text-underline-offset:2px; }
#ask-panel .conversation-message.user { align-self:flex-end; margin:0; padding:8px 10px; border-radius:8px; background:#181d1a; color:#fff; }
#ask-panel .conversation-message.user span { color:#b9c1bc; }
#ask-panel .conversation-message.assistant { align-self:flex-start; margin:0; padding-left:10px; border-left:2px solid #e25f3e; }
#ask-panel .conversation-message.pending { opacity:.7; }
#ask-panel .conversation-message.error { padding:8px 10px; border-left-color:#b95045; border-radius:4px; background:#f8ebe8; color:#8b4038; }
#ask-panel .chat-composer { flex:none; margin-top:auto; padding:10px; border:1px solid #d9ddd8; border-radius:18px; background:#fff; box-shadow:0 10px 28px rgba(23,32,29,.11); }
#ask-panel .chat-composer #question-input { width:100%; min-height:62px; max-height:150px; margin:0; padding:3px 4px 8px; resize:vertical; border:0; border-radius:0; background:transparent; color:#171a18; font:12px/1.55 'Plus Jakarta Sans',sans-serif; box-shadow:none; }
#ask-panel .chat-composer #question-input::placeholder { color:#9ba19d; }
#ask-panel .chat-composer #question-input:focus { border:0; outline:none; }
.chat-composer-actions { display:flex; align-items:center; gap:6px; min-height:36px; }
.chat-icon-button,.chat-send-button { width:34px; height:34px; flex:none; display:grid; place-items:center; border-radius:50%; padding:0; }
.chat-icon-button { border:1px solid #dde1dd; background:#fff; color:#4d5550; font-size:15px; }
.chat-icon-button:hover,.chat-icon-button:focus-visible { border-color:#9fac9f; background:#f2f4f0; outline:none; }
.chat-send-button { margin-left:auto; border:0; background:#151917; color:#fff; font-size:17px; }
.chat-send-button:hover,.chat-send-button:focus-visible { background:#2e5f48; outline:2px solid #a7c1b3; outline-offset:2px; }
.chat-send-button:disabled { opacity:.62; cursor:wait; }
.chat-send-glyph { transform:translate(1px,-1px); }
#ask-panel #answer-box { display:none; }
#ask-panel #evidence-list { flex:none; max-height:150px; overflow:auto; margin:0 0 8px; }
@media (max-width:900px) {
  #ask-panel.active { min-height:520px; }
  .chat-empty-state strong { font-size:22px; }
}
@media (prefers-reduced-motion:reduce) {
  *,*::before,*::after { scroll-behavior:auto !important; transition-duration:.01ms !important; animation-duration:.01ms !important; }
}

.folder-list { display:flex; gap:7px; flex-wrap:wrap; margin:14px 0 4px; }
.folder-chip { display:inline-flex; align-items:center; gap:6px; min-height:30px; padding:6px 10px; border:1px solid #d3dbd3; border-radius:5px; background:#fbfaf4; color:#65746b; font-size:11px; cursor:pointer; }
.folder-chip:hover { border-color:#a8bdae; color:var(--ink); }
.folder-chip.active { border-color:var(--orange); background:#fff2ea; color:var(--orange-dark); }
.paper-folder-select { max-width:128px; min-height:28px; border:1px solid #d3dbd3; border-radius:4px; background:#f8faf5; color:#65746b; font-size:10px; padding:3px 5px; }
.annotation-composer { margin:12px 0 14px; padding:12px; border:1px solid #cbd9d1; border-left:3px solid var(--orange); border-radius:6px; background:#fbfaf4; box-shadow:0 6px 18px rgba(33,49,39,.06); }
.annotation-composer-head { display:flex; align-items:center; justify-content:space-between; color:var(--ink); font-size:12px; }
.annotation-composer-head button { border:0; background:transparent; color:var(--muted); font-size:18px; }
.annotation-composer blockquote { margin:10px 0; padding:9px 10px; border-left:2px solid #eacb52; background:#fff9df; color:#5d665f; font:13px/1.5 'Newsreader',serif; max-height:100px; overflow:auto; }
.annotation-composer textarea { width:100%; min-height:92px; resize:vertical; border:1px solid #cbd5cd; border-radius:4px; background:#fffdf7; padding:9px; color:var(--ink); font-size:12px; }
.annotation-composer-actions { display:flex; justify-content:flex-end; gap:7px; margin-top:9px; }
.annotation-composer-actions button { min-height:30px; padding:6px 10px; font-size:10px; }

/* Reader pass: the document pair is one shared stage. Both panes begin at the
   same baseline and the annotation system sits between the PDF toolbar and the
   page, like a desktop PDF editor. */
.reader-grid { position:relative; }
.document-column { display:flex; flex-direction:column; min-height:0; }
.document-toolbar { flex:none; }
.annotation-toolbar { min-height:44px; display:flex; align-items:center; gap:5px; padding:5px 8px; border:1px solid #d5dbd4; border-top:0; background:#e9eee8; color:#63736a; overflow:hidden; }
.annotation-toolbar-label { flex:none; margin-right:4px; color:#809087; font:9px 'DM Mono'; letter-spacing:.1em; }
.annotation-toolbar > button { flex:none; width:29px; height:29px; border:1px solid transparent; border-radius:4px; background:transparent; color:#53635a; font-size:14px; }
.annotation-toolbar > button:hover,.annotation-toolbar > button:focus-visible { border-color:#b7c9bc; background:#f8fbf5; color:var(--ink); }
.annotation-divider { width:1px; height:23px; margin:0 5px; background:#cbd5cd; }
.annotation-colors { display:flex; align-items:center; gap:4px; flex:none; }
.annotation-colors button { width:13px; height:13px; padding:0; border:1px solid rgba(44,60,49,.2); border-radius:50%; }
.annotation-colors button[data-highlight-color="orange"] { background:#e9663e; }.annotation-colors button[data-highlight-color="yellow"] { background:#eacb52; }.annotation-colors button[data-highlight-color="green"] { background:#71b77b; }.annotation-colors button[data-highlight-color="blue"] { background:#7099da; }.annotation-colors button[data-highlight-color="pink"] { background:#d978a2; }
.annotation-colors button.active { outline:2px solid #fff; outline-offset:1px; box-shadow:0 0 0 2px #6c8174; }
.annotation-toolbar-hint { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; margin-left:5px; color:#87958c; font:10px 'DM Mono'; }
.annotation-sync { margin-left:auto; width:auto !important; padding:0 9px; border-color:#df714e !important; color:#bd4d32 !important; white-space:nowrap; font:10px 'DM Mono' !important; }
.annotation-sync:hover { background:#fff8f4 !important; }
.document-panes { flex:1 1 auto; min-height:0; align-items:stretch; }
.document-column.is-parallel .document-panes,.document-column.is-bilingual .document-panes { min-height:calc(100svh - 265px); }
.document-column.is-parallel .pdf-document,.document-column.is-parallel .parallel-column { height:calc(100svh - 265px); min-height:520px; }
.document-column.is-parallel .pdf-document,.document-column.is-parallel .parallel-document { padding-top:20px; }
.document-column.is-parallel .parallel-column { overflow:hidden; }
.document-column.is-parallel .parallel-document { height:100%; min-height:0; overflow:auto; overscroll-behavior:contain; border:0; }
.document-column.is-parallel .parallel-pdf-page { margin-inline:auto; }
.document-column.is-parallel .pdf-document { overflow:auto; overscroll-behavior:contain; }
.parallel-column::before { content:'TRANSLATION / 译文'; position:absolute; z-index:3; left:14px; top:-27px; color:#85928a; font:9px 'DM Mono'; letter-spacing:.08em; pointer-events:none; }
.bilingual-column { overflow:auto; }
.inspector { display:flex; flex-direction:column; min-height:calc(100svh - 265px); }
.inspector-resizer { position:absolute; z-index:8; top:0; right:calc(var(--inspector-width) - 9px); bottom:0; width:18px; display:flex; align-items:center; justify-content:center; cursor:col-resize; }
.inspector-resizer::before { content:''; width:2px; height:72px; border-radius:2px; background:#b8c9be; box-shadow:0 0 0 4px rgba(115,198,178,.08); transition:height .2s ease,background .2s ease; }
.inspector-resizer:hover::before,.is-resizing-inspector .inspector-resizer::before { height:100%; background:var(--teal); }
.inspector-expanded .reader-grid { grid-template-columns:0 minmax(0,1fr); }
.inspector-expanded .document-column { display:none; }
.inspector-expanded .inspector { position:fixed; inset:0; z-index:70; grid-column:2; width:100vw; height:100svh; max-height:none; min-height:100svh; margin:0; border:0; border-radius:0; box-shadow:none; }
.inspector-expanded .inspector-resizer { display:none; }
.is-resizing-inspector { cursor:col-resize; user-select:none; }
.inspector-search { display:flex; align-items:center; gap:8px; margin:10px 12px 7px; min-height:34px; padding:0 9px; border:1px solid #cbd5cd; border-radius:4px; background:#f8faf5; color:#849189; }
.inspector-search input { width:100%; border:0; outline:0; background:transparent; color:var(--ink); font-size:11px; }
.inspector-tabs { display:grid; grid-template-columns:repeat(5,1fr); gap:0; flex:none; border-top:1px solid #d4dad3; border-bottom:1px solid #d4dad3; }
.inspector-tab { min-width:0; display:flex; flex-direction:column; align-items:center; gap:3px; padding:9px 2px 8px; border:0; border-bottom:2px solid transparent; background:transparent; color:#839087; }
.inspector-tab span { font-size:15px; line-height:1; }
.inspector-tab b { overflow:hidden; max-width:100%; text-overflow:ellipsis; white-space:nowrap; font-size:9px; font-weight:500; }
.inspector-tab.active { color:#b84932; border-bottom-color:#e9663e; background:#f3f6ef; }
.inspector-panel { flex:1 1 auto; overflow:auto; }
.marks-panel-heading { display:flex; align-items:flex-start; justify-content:space-between; gap:9px; }
.marks-panel-heading h3 { display:flex; align-items:center; gap:7px; }
.marks-panel-heading h3 span { display:inline-grid; place-items:center; min-width:20px; height:20px; padding:0 5px; border-radius:10px; background:#dbe8df; color:#4f7461; font:10px 'DM Mono'; }
#marks-kind-filter { min-height:30px; border:1px solid #cbd5cd; border-radius:4px; background:#f8faf5; color:#64736a; font-size:10px; }
.marks-list { gap:8px; }
.mark-item { position:relative; padding:12px 12px 11px; border-radius:5px; background:#f8faf5; box-shadow:0 2px 7px rgba(33,49,39,.035); }
.mark-item::before { content:''; position:absolute; left:-1px; top:10px; bottom:10px; width:2px; background:#e9663e; opacity:.75; }
.mark-item blockquote { font-size:12px; line-height:1.55; }
.mark-comment { color:#b64b35; }
.mark-actions .small-button { min-height:27px; padding:5px 8px; font-size:10px; }
.reader-focus .sidebar,.reader-focus .topbar { display:none; }
.reader-focus .main-area { min-height:100svh; padding:0 clamp(14px,2.5vw,38px) 28px; border-radius:0; box-shadow:none; }
.reader-focus .reader-view { padding-top:0; }
.reader-focus .reader-header { min-height:54px; grid-template-columns:minmax(0,1fr) auto; gap:0 12px; align-items:center; padding:8px 0; border-bottom:1px solid #d7ddd6; }
.reader-focus .reader-header .back-button { display:none; }
.reader-focus .reader-identity { display:flex; align-items:center; gap:12px; }
.reader-focus .reader-identity .eyebrow { margin:0; font-size:9px; }
.reader-focus .reader-header h2 { max-width:min(42vw,520px); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:18px; }
.reader-focus .reader-actions { grid-column:2; opacity:1; flex-wrap:nowrap; }
.reader-focus .reader-actions > #open-pdf,.reader-focus .reader-actions > .reader-tools-menu { display:none; }
.reader-focus .app-shell { display:block; }
.reader-focus .reader-header { position:relative; padding-left:42px; }
.reader-focus .reader-header .back-button { display:block; position:absolute; left:0; top:10px; width:32px; height:32px; padding:0; overflow:hidden; color:transparent; border:1px solid #cfd7cf; background:#f6f7f1; }
.reader-focus .reader-header .back-button::before { content:'←'; color:#53635a; font-size:15px; }
.parallel-column::before { display:none; }
.reader-focus .reader-actions .ghost-button { min-height:30px; padding:6px 8px; font-size:10px; }
.reader-focus .reader-actions .accent-button { min-height:32px; margin-left:0; }
.reader-focus .translation-progress { margin-top:8px; }
.reader-focus .reader-grid { padding-top:10px; }
.reader-focus .inspector { display:flex; }
.selection-menu { position:fixed !important; z-index:40 !important; max-width:min(94vw,520px); flex-wrap:wrap; background:#15211d; border:1px solid rgba(255,255,255,.12); }
.pdf-translation-region { pointer-events:auto; user-select:text; }
.pdf-translation-sentence { border-radius:2px; cursor:pointer; transition:background-color .14s ease,color .14s ease,box-shadow .14s ease; }
.pdf-translation-sentence:hover { background:rgba(63,131,165,.10); }
.pdf-translation-sentence.active { color:#174b63; background:rgba(63,131,165,.18); box-shadow:inset 0 -2px 0 rgba(47,102,130,.48); }
.pdf-translation-region .translation-expand-button { pointer-events:auto; }
.selection-menu::before { content:'选区操作'; align-self:center; padding:0 5px 0 7px; color:#9fb0a6; font:9px 'DM Mono'; letter-spacing:.06em; }
.selection-menu button { min-height:30px; padding:6px 9px; }
.selection-menu .highlight-picker { display:flex; align-items:center; gap:4px; padding:0 3px; }
.selection-menu .highlight-picker button { width:14px; height:14px; padding:0; border-radius:50%; border:1px solid rgba(255,255,255,.38); }
.selection-menu .highlight-picker button[data-highlight-color="orange"] { background:#e9663e; }.selection-menu .highlight-picker button[data-highlight-color="yellow"] { background:#eacb52; }.selection-menu .highlight-picker button[data-highlight-color="green"] { background:#71b77b; }.selection-menu .highlight-picker button[data-highlight-color="blue"] { background:#7099da; }.selection-menu .highlight-picker button[data-highlight-color="pink"] { background:#d978a2; }
.selection-menu .highlight-picker button.active { outline:2px solid #fff; outline-offset:1px; }
.ask-panel-heading { display:flex; align-items:flex-start; justify-content:space-between; gap:8px; }
.ask-panel-heading h3 { margin-bottom:0; }
#ask-panel.active { display:flex; flex-direction:column; min-height:0; }
#ask-panel.active .conversation-box { flex:1 1 auto; min-height:120px; }
#ask-panel.active #question-input { flex:none; }
#ask-panel.active #ask-button { flex:none; }
.ask-panel-intro { margin:5px 0 14px; color:#78867d; font-size:11px; line-height:1.55; }
.conversation-clear { flex:none; min-height:28px; padding:5px 8px; font-size:10px; }
.conversation-action { flex:none; min-height:28px; padding:5px 8px; font-size:10px; }
.conversation-box { max-height:min(44svh,420px); padding:3px 3px 3px 0; scroll-behavior:smooth; }
.conversation-history { display:grid; gap:5px; max-height:190px; overflow:auto; margin:0 0 10px; padding:5px; border:1px solid #d8e0d8; border-radius:6px; background:#f3f6ef; }
.conversation-history-item { display:flex; align-items:center; justify-content:space-between; gap:8px; width:100%; border:1px solid transparent; border-radius:5px; padding:7px 8px; background:transparent; color:var(--ink); text-align:left; cursor:pointer; }
.conversation-history-item:hover,.conversation-history-item.active { border-color:#cbd9d1; background:#fffdf7; }
.conversation-history-item strong { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:11px; font-weight:600; }
.conversation-history-item small { flex:none; color:var(--muted); font:9px 'DM Mono'; }
.conversation-history-empty { padding:8px; color:var(--muted); font-size:10px; text-align:center; }
.conversation-message { position:relative; border:1px solid transparent; }
.conversation-message.assistant { border-color:#d8e0d8; }
.conversation-message.user { background:#17251f; }
.conversation-message.pending p { color:#73837a; font-style:italic; }
.conversation-message.error { border-left-color:#b95045; background:#f8ebe8; }
#question-input { min-height:84px; margin-top:6px; }
#ask-button:disabled { opacity:.68; cursor:wait; }
.ask-spinner { display:inline-block; animation:ask-spin 1.1s linear infinite; }
@keyframes ask-spin { to { transform:rotate(360deg); } }
@media (max-width:900px) {
  .annotation-toolbar { overflow-x:auto; }
  .annotation-toolbar-hint { display:none; }
  .annotation-sync { margin-left:auto; }
  .reader-focus .main-area { padding:0 10px 24px; }
  .reader-focus .reader-header { grid-template-columns:1fr; min-height:48px; }
  .reader-focus .reader-actions { grid-column:1; overflow-x:auto; }
  .reader-focus .reader-identity { display:block; min-width:0; padding:2px 0 5px; }
  .reader-focus .reader-identity .eyebrow { margin:0 0 3px; }
  .reader-focus .reader-identity h2 { max-width:100%; font-size:17px; }
  .reader-focus .reader-actions { min-height:36px; margin-top:2px; }
  .reader-focus .inspector { display:none; }
  .parallel-column::before { display:none; }
}
