:root{--cl-bg:#f6f8fb;--cl-surface:#fff;--cl-ink:#0d1b2a;--cl-muted:#54657a;--cl-line:#dce3ec;--cl-accent:#c47f10;--cl-accent-hover:#a86b0a;--cl-accent-ink:#fff;--cl-link:#2a7a62;--cl-link-hover:#a86b0a;--cl-committed:#1e7a55;--cl-committed-bg:#e3f3eb;--cl-draft:#b45309;--cl-draft-bg:#fbeedd;--cl-option:#6b4fa8;--cl-option-bg:#efe8fb;--cl-danger:#dc2626;--cl-danger-bg:#fee2e2;--cl-row-hover:#edf2f8;--cl-hash-bg:#edf1f6;--cl-radius:8px;--cl-radius-sm:4px;--cl-mono:ui-monospace, "SF Mono", Menlo, monospace;--cl-sans:"Inter", system-ui, -apple-system, "Helvetica Neue", sans-serif;--cl-shadow-card:0 2px 6px #0d1b2a14, 0 1px 2px #0d1b2a0f;--cl-shadow-hover:0 10px 26px #1428461f;--cl-shadow-btn:0 6px 16px #1428462e;--cl-shadow-focus:0 0 0 3px #c47f102e;--cl-transition-fast:.14s ease;--cl-transition-base:.2s ease}*,:before,:after{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{background:var(--cl-bg);color:var(--cl-ink);font-family:var(--cl-sans);-webkit-font-smoothing:antialiased;font-size:14px;line-height:1.5}a{color:var(--cl-link);transition:color var(--cl-transition-fast);text-decoration:none}a:hover{color:var(--cl-link-hover);text-decoration:underline}h1,h2,h3,h4{letter-spacing:-.01em;margin:0;font-weight:600}.mono{font-family:var(--cl-mono);font-size:.92em}.muted{color:var(--cl-muted)}:focus-visible{outline:2px solid var(--cl-accent);outline-offset:2px;border-radius:3px}.btn{font:inherit;border:1px solid var(--cl-line);background:var(--cl-surface);color:var(--cl-ink);border-radius:var(--cl-radius);cursor:pointer;transition:background-color var(--cl-transition-fast), border-color var(--cl-transition-fast), box-shadow var(--cl-transition-fast), transform var(--cl-transition-fast);padding:7px 14px;font-weight:500}.btn:hover:not(:disabled){box-shadow:var(--cl-shadow-btn);border-color:#c3c9d2;transform:translateY(-1px)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--cl-accent);border-color:var(--cl-accent);color:var(--cl-accent-ink)}.btn-primary:hover:not(:disabled){background:var(--cl-accent-hover);border-color:var(--cl-accent-hover)}.btn-committed{background:var(--cl-committed);border-color:var(--cl-committed);color:#fff}.btn-committed:hover:not(:disabled){background:#0c6841;border-color:#0c6841}.btn-option{background:var(--cl-option);border-color:var(--cl-option);color:#fff}.btn-option:hover:not(:disabled){background:#5c36a3;border-color:#5c36a3}.btn-ghost{background:var(--cl-surface)}.btn.is-active{box-shadow:inset 0 0 0 1px}.btn-block{width:100%;margin-top:6px}.btn-mini{border-radius:var(--cl-radius-sm);padding:3px 9px;font-size:12px}.btn-mini-on{border-color:var(--cl-accent);color:var(--cl-accent)}.app-header{background:var(--cl-surface);border-bottom:1px solid var(--cl-line);z-index:10;position:sticky;top:0}.app-header-inner{justify-content:space-between;align-items:center;gap:16px;max-width:1100px;margin:0 auto;padding:12px 24px;display:flex}.brand{color:inherit;flex-direction:column;line-height:1.15;display:flex}.brand:hover{text-decoration:none}.brand-mark{letter-spacing:-.02em;font-size:16px;font-weight:700}.brand-eyebrow{text-transform:uppercase;letter-spacing:.08em;color:var(--cl-muted);font-size:11px}.app-user{align-items:center;gap:14px;display:flex}.app-user-id{flex-direction:column;align-items:flex-end;gap:3px;display:flex}.app-user-name{font-weight:600}.app-user-roles{flex-wrap:wrap;gap:4px;display:flex}.role-chip{text-transform:uppercase;letter-spacing:.06em;color:var(--cl-muted);background:#eef1f5;border-radius:999px;padding:1px 6px;font-size:10px}.app-content{max-width:1100px;margin:0 auto;padding:28px 24px 64px}.boot{min-height:60vh;color:var(--cl-muted);justify-content:center;align-items:center;gap:10px;display:flex}.spinner{border:2px solid var(--cl-line);border-top-color:var(--cl-accent);border-radius:50%;width:16px;height:16px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.page-head{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:20px;display:flex}.page-title{font-size:22px}.page-sub{color:var(--cl-muted);margin:4px 0 0}.crumbs{color:var(--cl-muted);margin:0 0 14px;font-size:13px}.crumbs span{color:var(--cl-line);margin:0 6px}.status-tag{text-transform:uppercase;letter-spacing:.06em;color:var(--cl-muted);font-size:11px}.data-table{border-collapse:collapse;background:var(--cl-surface);border:1px solid var(--cl-line);border-radius:var(--cl-radius);width:100%;box-shadow:var(--cl-shadow-card);overflow:hidden}.data-table th,.data-table td{text-align:left;border-bottom:1px solid var(--cl-line);padding:10px 14px}.data-table thead th{text-transform:uppercase;letter-spacing:.06em;color:var(--cl-muted);background:#fbfcfd;font-size:11px}.data-table tbody tr:last-child td{border-bottom:none}.data-table .num{text-align:right;font-variant-numeric:tabular-nums}.row-link{cursor:pointer;transition:background-color var(--cl-transition-fast)}.row-link:hover{background:var(--cl-row-hover)}.panel{background:var(--cl-surface);border:1px solid var(--cl-line);border-radius:var(--cl-radius);box-shadow:var(--cl-shadow-card);margin-bottom:20px;padding:18px}.panel-title{margin-bottom:12px;font-size:15px}.create-form{max-width:460px}.field{flex-direction:column;gap:5px;margin-bottom:12px;display:flex}.field label,.field>span{color:var(--cl-muted);font-size:12px;font-weight:600}.field input,.field textarea,.note-input{font:inherit;border:1px solid var(--cl-line);border-radius:var(--cl-radius);background:var(--cl-surface);color:var(--cl-ink);width:100%;transition:border-color var(--cl-transition-fast), box-shadow var(--cl-transition-fast);padding:8px 10px}.field input:focus,.field textarea:focus,.note-input:focus{border-color:var(--cl-accent);box-shadow:var(--cl-shadow-focus);outline:none}.field-hint{color:var(--cl-muted);margin:0;font-size:12px}.field-error{color:var(--cl-danger);margin:0;font-size:12px}.field input[aria-invalid=true]{border-color:var(--cl-danger)}.form-actions{flex-wrap:wrap;gap:10px;margin-top:8px;display:flex}.form-error{background:var(--cl-danger-bg);color:var(--cl-danger);border-radius:var(--cl-radius);border:1px solid #f1c4c0;margin:10px 0;padding:9px 12px;font-size:13px}.loading-line{color:var(--cl-muted);padding:16px 0}.empty-state{background:var(--cl-surface);border:1px dashed var(--cl-line);border-radius:var(--cl-radius);text-align:center;color:var(--cl-muted);padding:36px 24px}.empty-state p{margin:0 0 14px}.auth-screen{justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.auth-card{background:var(--cl-surface);border:1px solid var(--cl-line);box-shadow:var(--cl-shadow-card);border-radius:10px;width:100%;max-width:380px;padding:28px}.auth-brand{flex-direction:column;margin-bottom:18px;line-height:1.15;display:flex}.auth-title{margin-bottom:16px;font-size:18px}.auth-note{color:var(--cl-muted);margin:-8px 0 16px;font-size:13px}.badge{white-space:nowrap;border-radius:999px;align-items:center;gap:4px;padding:2px 8px;font-size:11px;font-weight:600;display:inline-flex}.badge-committed{background:var(--cl-committed-bg);color:var(--cl-committed)}.badge-draft{background:var(--cl-draft-bg);color:var(--cl-draft)}.tag{letter-spacing:.08em;border-radius:var(--cl-radius-sm);padding:2px 7px;font-size:10px;font-weight:700}.tag-option{background:var(--cl-option-bg);color:var(--cl-option)}.hash-chip{font-family:var(--cl-mono);background:var(--cl-hash-bg);color:var(--cl-muted);border:1px solid var(--cl-line);border-radius:var(--cl-radius-sm);cursor:pointer;transition:border-color var(--cl-transition-fast), color var(--cl-transition-fast);padding:1px 6px;font-size:12px}.hash-chip:hover{border-color:var(--cl-accent);color:var(--cl-accent)}.hash-chip-empty{cursor:default;background:0 0;border-color:#0000}.estimate-page .export-actions{flex-wrap:wrap;gap:8px;display:flex}.estimate-grid{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);align-items:start;gap:20px;display:grid}.compare-tray{background:var(--cl-bg);border:1px solid var(--cl-line);border-radius:var(--cl-radius);flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:16px;padding:8px 12px;font-size:13px;display:flex}.tree-pane{background:var(--cl-surface);border:1px solid var(--cl-line);border-radius:var(--cl-radius);box-shadow:var(--cl-shadow-card);padding:16px}.tree-root,.tree-children{margin:0;padding:0;list-style:none}.tree-children{border-left:2px solid var(--cl-line);margin-left:14px;padding-left:16px}.tree-item{padding-top:10px;position:relative}.tree-item.is-option>.tree-children{border-left-color:var(--cl-option)}.node-card{border:1px solid var(--cl-line);border-left:3px solid var(--cl-committed);border-radius:var(--cl-radius);background:var(--cl-surface);cursor:pointer;transition:border-color var(--cl-transition-fast), box-shadow var(--cl-transition-fast), background-color var(--cl-transition-fast), transform var(--cl-transition-fast);padding:10px 12px}.node-card:hover{border-color:var(--cl-accent);box-shadow:var(--cl-shadow-hover);background:#fbfcfe;transform:translateY(-1px)}.node-card.node-option{border-left-color:var(--cl-option)}.node-card.is-selected{border-color:var(--cl-accent);box-shadow:0 0 0 2px #c47f1033}.node-card:focus-visible{border-color:var(--cl-accent);box-shadow:var(--cl-shadow-focus);outline:none}.node-head{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.node-code{color:var(--cl-ink);background:var(--cl-hash-bg);border-radius:var(--cl-radius-sm);padding:1px 6px;font-weight:600}.node-label{font-weight:600}.node-note{color:var(--cl-muted);margin:6px 0 0;font-size:13px}.node-meta{color:var(--cl-muted);flex-wrap:wrap;align-items:center;gap:12px;margin-top:8px;font-size:12px;display:flex}.detail-pane{position:sticky;top:80px}.detail,.detail-empty{background:var(--cl-surface);border:1px solid var(--cl-line);border-radius:var(--cl-radius);box-shadow:var(--cl-shadow-card);padding:18px}.detail-empty{color:var(--cl-muted)}.detail-title-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.detail-title{font-size:17px}.detail-note{color:var(--cl-muted);margin:10px 0 0}.detail-facts{gap:8px;margin:14px 0 0;display:grid}.detail-facts div{border-top:1px solid var(--cl-line);justify-content:space-between;gap:12px;padding-top:8px;display:flex}.detail-facts dt{color:var(--cl-muted);font-size:12px}.detail-facts dd{text-align:right;word-break:break-all;margin:0}.detail-section-title{text-transform:uppercase;letter-spacing:.05em;color:var(--cl-muted);margin:20px 0 8px;font-size:13px}.json-editor{resize:vertical;border:1px solid var(--cl-line);border-radius:var(--cl-radius);width:100%;color:var(--cl-ink);transition:border-color var(--cl-transition-fast), box-shadow var(--cl-transition-fast);background:#fbfcfd;padding:10px;line-height:1.45}.json-editor:focus{border-color:var(--cl-accent);box-shadow:var(--cl-shadow-focus);outline:none}.json-editor.is-invalid{border-color:var(--cl-danger);background:var(--cl-danger-bg)}.note-input{resize:vertical}.sub-form{border:1px solid var(--cl-line);border-radius:var(--cl-radius);background:#fbfcfd;margin-top:12px;padding:14px}.sub-form-title{margin-bottom:10px;font-size:13px}.diff-identical{background:var(--cl-committed-bg);color:var(--cl-committed);border-radius:var(--cl-radius);border:1px solid #bfe2cd;padding:14px 16px;font-weight:500}.diff-table td{vertical-align:top}.diff-json{white-space:pre;border:1px solid var(--cl-line);border-radius:var(--cl-radius-sm);background:#fbfcfd;max-width:280px;margin:0;padding:6px 8px;overflow-x:auto}.op{text-transform:uppercase;letter-spacing:.05em;border-radius:var(--cl-radius-sm);padding:2px 7px;font-size:11px;font-weight:700}.op-added{background:var(--cl-committed-bg);color:var(--cl-committed)}.op-removed{background:var(--cl-danger-bg);color:var(--cl-danger)}.op-changed{background:var(--cl-draft-bg);color:var(--cl-draft)}.back-link{margin-top:20px}.editor-intro{color:var(--cl-muted);border:1px solid var(--cl-line);border-left:3px solid var(--cl-accent);border-radius:var(--cl-radius-sm);background:#fbfcfd;margin:0 0 10px;padding:8px 10px;font-size:12px;line-height:1.5}.editor-empty-hint{font-style:italic}.branch-choices{flex-direction:column;gap:12px;margin:4px 0 12px;display:flex}.branch-choice{flex-direction:column;align-items:flex-start;gap:5px;display:flex}.branch-choice .btn{align-self:flex-start}.branch-choice-desc{color:var(--cl-muted);margin:0;font-size:12px;line-height:1.45}.compare-tip{margin:0 0 12px}.compare-label{color:var(--cl-ink);font-weight:600}.commit-confirm{border:1px solid var(--cl-line);border-left:3px solid var(--cl-committed);border-radius:var(--cl-radius);background:var(--cl-committed-bg);margin-top:10px;padding:12px 14px}.commit-confirm-text{color:var(--cl-ink);margin:0 0 10px;font-size:13px}.error-retry{justify-content:space-between;align-items:center;gap:12px;display:flex}.retry-btn{flex:none}.toast{z-index:50;background:var(--cl-ink);color:#fff;border-radius:var(--cl-radius);max-width:340px;box-shadow:var(--cl-shadow-hover);animation:toast-in var(--cl-transition-base);padding:10px 14px;font-size:13px;font-weight:500;position:fixed;top:18px;right:18px}@keyframes toast-in{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.documents-panel{background:var(--cl-surface);border:1px solid var(--cl-line);border-radius:var(--cl-radius);box-shadow:var(--cl-shadow-card);margin-bottom:20px;padding:16px 18px}.documents-head{margin-bottom:12px}.documents-title{font-size:16px}.doc-upload{background:var(--cl-bg);border:1px solid var(--cl-line);border-radius:var(--cl-radius);flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:16px;padding:12px;display:flex}.doc-upload input[type=file]{font:inherit;font-size:13px}.doc-upload-msg{color:var(--cl-committed)}.doc-dropzone{border:2px dashed var(--cl-line);border-radius:var(--cl-radius);background:var(--cl-bg);transition:border-color var(--cl-transition-fast), background-color var(--cl-transition-fast);margin-bottom:16px;padding:12px}.doc-dropzone.is-dragover{border-color:var(--cl-accent);background:var(--cl-draft-bg)}.doc-dropzone.is-reject{border-color:var(--cl-danger);background:var(--cl-danger-bg)}.doc-dropzone-hint{margin:0 0 8px}.doc-dropzone .doc-upload{background:0 0;border:none;margin-bottom:0;padding:0}.upload-progress{border-radius:var(--cl-radius-sm);background:var(--cl-line);height:6px;margin-top:10px;overflow:hidden}.upload-progress-bar{background:var(--cl-accent);border-radius:var(--cl-radius-sm);height:100%;transition:width var(--cl-transition-fast)}.documents-body{grid-template-columns:minmax(0,1fr) minmax(0,1.6fr);align-items:start;gap:18px;display:grid}.doc-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.doc-row{text-align:left;width:100%;font:inherit;cursor:pointer;background:var(--cl-surface);border:1px solid var(--cl-line);border-radius:var(--cl-radius);transition:border-color var(--cl-transition-fast), background-color var(--cl-transition-fast);flex-direction:column;gap:3px;padding:9px 11px;display:flex}.doc-row:hover{background:var(--cl-row-hover)}.doc-row.is-active{border-color:var(--cl-accent);box-shadow:var(--cl-shadow-focus)}.doc-row-name{word-break:break-word;font-weight:500}.doc-row-meta{color:var(--cl-muted);flex-wrap:wrap;align-items:center;gap:6px;font-size:12px;display:flex}.doc-row-tag{color:var(--cl-draft);background:var(--cl-draft-bg);border-radius:var(--cl-radius-sm);padding:0 6px;font-size:11px}.doc-row-scope{color:var(--cl-committed);font-size:12px}.doc-li{align-items:stretch;gap:6px;display:flex}.doc-li .doc-row{flex:1;min-width:0}.doc-view-btn{flex:none;justify-content:center;align-self:stretch;align-items:center;padding:0 10px;display:inline-flex}.rev-picker{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:10px;display:flex}.rev-picker label{font-weight:500}.rev-picker select{font:inherit;border:1px solid var(--cl-line);border-radius:var(--cl-radius-sm);background:var(--cl-surface);color:var(--cl-ink);padding:5px 8px}.doc-readonly-note{color:var(--cl-draft)}.doc-scope-summary{margin-bottom:10px}.thumb-grid{grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:12px;display:grid}.thumb{border:1px solid var(--cl-line);border-radius:var(--cl-radius);background:var(--cl-surface);cursor:pointer;transition:border-color var(--cl-transition-fast), box-shadow var(--cl-transition-fast), transform var(--cl-transition-fast);flex-direction:column;align-items:center;gap:4px;padding:6px;display:flex;position:relative}.thumb:hover:not(.is-readonly){border-color:var(--cl-accent);box-shadow:var(--cl-shadow-hover);transform:translateY(-1px)}.thumb.is-selected{border-color:var(--cl-accent);box-shadow:var(--cl-shadow-focus)}.thumb.is-readonly{cursor:default}.thumb.is-focused,.thumb:focus-visible{outline:2px solid var(--cl-accent);outline-offset:2px;border-color:var(--cl-accent)}.thumb-canvas-wrap{justify-content:center;align-items:center;width:100%;min-height:80px;display:flex;position:relative}.thumb-canvas-wrap canvas{border:1px solid var(--cl-line);background:#fff;max-width:100%}.thumb-pending{background:var(--cl-bg);border:1px dashed var(--cl-line);border-radius:var(--cl-radius-sm);width:100%;min-height:120px;display:block}.thumb-error{color:var(--cl-danger);font-size:11px}.thumb-check{background:var(--cl-committed);color:#fff;width:20px;height:20px;animation:check-pop var(--cl-transition-base);border-radius:50%;justify-content:center;align-items:center;font-size:12px;line-height:1;display:flex;position:absolute;top:4px;right:4px}@keyframes check-pop{0%{opacity:0;transform:scale(.5)}to{opacity:1;transform:scale(1)}}.thumb-label{color:var(--cl-muted);font-size:12px}.thumb-zoom{width:22px;height:22px;color:var(--cl-ink);border:1px solid var(--cl-line);border-radius:var(--cl-radius-sm);cursor:pointer;opacity:0;transition:opacity var(--cl-transition-fast), border-color var(--cl-transition-fast), color var(--cl-transition-fast), background-color var(--cl-transition-fast);background:#ffffffe6;justify-content:center;align-items:center;padding:0;font-size:13px;line-height:1;display:flex;position:absolute;top:4px;left:4px}.thumb:hover .thumb-zoom,.thumb:focus-within .thumb-zoom,.thumb.is-focused .thumb-zoom,.thumb-zoom:focus-visible{opacity:1}.thumb-zoom:hover{color:var(--cl-accent);border-color:var(--cl-accent);background:#fff}.thumb-grid.is-skeleton{pointer-events:none}.thumb-skeleton{border:1px solid var(--cl-line);border-radius:var(--cl-radius);background:var(--cl-bg);min-height:150px;animation:1.2s ease-in-out infinite skeleton-pulse}@keyframes skeleton-pulse{0%,to{opacity:.55}50%{opacity:1}}.thumb-error-block{align-items:center}.zoom-overlay{z-index:60;animation:zoom-backdrop-in var(--cl-transition-base);background:#0d1b2a8c;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}@keyframes zoom-backdrop-in{0%{opacity:0}to{opacity:1}}.zoom-dialog{background:var(--cl-surface);border:1px solid var(--cl-line);border-radius:var(--cl-radius);max-width:min(94vw,1440px);max-height:92vh;box-shadow:var(--cl-shadow-hover);animation:zoom-dialog-in var(--cl-transition-base);flex-direction:column;display:flex;overflow:hidden}@keyframes zoom-dialog-in{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:scale(1)}}.zoom-dialog:focus-visible{outline:none}.zoom-header{border-bottom:1px solid var(--cl-line);background:#fbfcfd;justify-content:space-between;align-items:center;gap:12px;padding:10px 14px;display:flex}.zoom-header-title{align-items:baseline;gap:10px;min-width:0;display:flex}.zoom-header-title strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.zoom-header-page{color:var(--cl-muted);flex:none;font-size:12px}.zoom-close{flex:none}.zoom-body{background:var(--cl-bg);flex:1;justify-content:center;align-items:center;min-height:0;padding:16px;display:flex;overflow:auto}.zoom-canvas{border:1px solid var(--cl-line);max-width:100%;height:auto;box-shadow:var(--cl-shadow-card);background:#fff}.zoom-loading{color:var(--cl-muted);padding:40px 0}.zoom-error{color:var(--cl-danger);padding:40px 0}.pnv-overlay{z-index:70;animation:zoom-backdrop-in var(--cl-transition-base);background:#0d1b2a9e;padding:16px;display:flex;position:fixed;inset:0}.pnv-dialog{background:var(--cl-surface);border:1px solid var(--cl-line);border-radius:var(--cl-radius);min-width:0;box-shadow:var(--cl-shadow-hover);flex-direction:column;flex:1;display:flex;overflow:hidden}.pnv-dialog:focus-visible{outline:none}.pnv-header{border-bottom:1px solid var(--cl-line);background:#fbfcfd;align-items:center;gap:12px;padding:8px 12px;display:flex}.pnv-title{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:600;overflow:hidden}.pnv-hud{color:var(--cl-muted);font-variant-numeric:tabular-nums;flex:none;align-items:center;gap:8px;margin-left:auto;font-size:12px;display:inline-flex}.pnv-hud-sep{color:var(--cl-line)}.pnv-close{flex:none;justify-content:center;align-items:center;display:inline-flex}.pnv-scroll{background:var(--cl-bg);touch-action:none;cursor:grab;contain:layout paint;flex:1;min-height:0;position:relative;overflow:hidden}.pnv-scroll:active{cursor:grabbing}.pnv-status{color:var(--cl-muted);flex-direction:column;justify-content:center;align-items:center;gap:12px;display:flex;position:absolute;inset:0}.pnv-status-error{color:var(--cl-danger)}.pnv-world{transform-origin:0 0;will-change:transform;position:absolute;top:0;left:0}.pnv-page{box-shadow:var(--cl-shadow-card);background:#fff;position:absolute}.pnv-page-canvas{width:100%;height:100%;display:block}.pnv-footer{border-top:1px solid var(--cl-line);text-align:center;background:#fbfcfd;padding:6px 12px}.pnv-textlayer{text-align:initial;opacity:1;letter-spacing:normal;word-spacing:normal;-webkit-text-size-adjust:none;-moz-text-size-adjust:none;text-size-adjust:none;forced-color-adjust:none;transform-origin:0 0;caret-color:canvastext;z-index:2;pointer-events:none;--min-font-size:1;--text-scale-factor:calc(var(--total-scale-factor,1) * var(--min-font-size));--min-font-size-inv:calc(1 / var(--min-font-size));line-height:1;position:absolute;top:0;left:0;overflow:clip}.pnv-textlayer :is(span,br){color:#0000;white-space:pre;cursor:text;transform-origin:0 0;pointer-events:auto;-webkit-user-select:text;user-select:text;position:absolute}.pnv-textlayer>:not(.markedContent),.pnv-textlayer .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))}.pnv-textlayer .markedContent{display:contents}.pnv-textlayer span[role=img]{-webkit-user-select:none;user-select:none;cursor:default}.pnv-textlayer ::selection{background:#c47f1052}.pnv-textlayer br::selection{background:0 0}.pnv-textlayer[data-main-rotation="90"]{transform:rotate(90deg)translateY(-100%)}.pnv-textlayer[data-main-rotation="180"]{transform:rotate(180deg)translate(-100%,-100%)}.pnv-textlayer[data-main-rotation="270"]{transform:rotate(270deg)translate(-100%)}.pnv-hilite{z-index:1;pointer-events:none;transform-origin:0 0;position:absolute;top:0;left:0}.pnv-hilite[data-main-rotation="90"]{transform:rotate(90deg)translateY(-100%)}.pnv-hilite[data-main-rotation="180"]{transform:rotate(180deg)translate(-100%,-100%)}.pnv-hilite[data-main-rotation="270"]{transform:rotate(270deg)translate(-100%)}.pnv-hilite-rect{mix-blend-mode:multiply;background:#c47f1057;border-radius:1px;position:absolute}.pnv-hilite-rect.is-active{outline:1px solid var(--cl-committed);background:#1e7a5573}.pnv-search{flex:none;align-items:center;gap:6px;margin-left:8px;display:inline-flex}.pnv-search-input{width:240px;max-width:34vw;font:inherit;color:var(--cl-ink);background:var(--cl-surface);border:1px solid var(--cl-line);border-radius:var(--cl-radius-sm);transition:border-color var(--cl-transition-fast), box-shadow var(--cl-transition-fast);padding:4px 8px;font-size:13px}.pnv-search-input:focus-visible{border-color:var(--cl-accent);box-shadow:var(--cl-shadow-focus);outline:none}.pnv-search-input:disabled{color:var(--cl-muted);background:var(--cl-bg);cursor:not-allowed}.pnv-search-count,.pnv-search-note{color:var(--cl-muted);white-space:nowrap;font-size:12px}.pnv-search-count{font-variant-numeric:tabular-nums}.pnv-search-nav{gap:2px;display:inline-flex}.pnv-toolbar{flex:none;align-items:center;gap:2px;display:inline-flex}.pnv-tool{transition:transform var(--cl-transition-fast), background-color var(--cl-transition-fast), color var(--cl-transition-fast);justify-content:center;align-items:center;display:inline-flex}.pnv-tool:hover{transform:translateY(-1px)}.pnv-tool[aria-pressed=true]{color:var(--cl-accent);background:var(--cl-row-hover)}.pnv-tool:focus-visible{box-shadow:var(--cl-shadow-focus);outline:none}.pnv-tool-sep{background:var(--cl-line);align-self:stretch;width:1px;margin:4px}.pnv-pagejump{color:var(--cl-muted);font-variant-numeric:tabular-nums;align-items:center;gap:4px;font-size:12px;display:inline-flex}.pnv-pagejump-input{text-align:center;width:42px;font:inherit;color:var(--cl-ink);background:var(--cl-surface);border:1px solid var(--cl-line);border-radius:var(--cl-radius-sm);font-variant-numeric:tabular-nums;padding:3px 5px;font-size:12px}.pnv-pagejump-input:focus-visible{border-color:var(--cl-accent);box-shadow:var(--cl-shadow-focus);outline:none}.pnv-body{flex:1;min-height:0;display:flex}.pnv-sidebar{width:0;transition:width var(--cl-transition-base);background:#fbfcfd;border-right:1px solid #0000;flex:none;overflow:hidden}.pnv-sidebar.is-open{border-right-color:var(--cl-line);width:168px}.pnv-sidebar-scroll{flex-direction:column;gap:10px;width:168px;height:100%;padding:10px;display:flex;overflow:hidden auto}.pnv-thumb{font:inherit;cursor:pointer;background:var(--cl-surface);border:1px solid var(--cl-line);border-radius:var(--cl-radius-sm);transition:border-color var(--cl-transition-fast), box-shadow var(--cl-transition-fast);flex-direction:column;align-items:center;gap:4px;padding:6px;display:flex}.pnv-thumb:hover{border-color:var(--cl-accent)}.pnv-thumb:focus-visible{box-shadow:var(--cl-shadow-focus);outline:none}.pnv-thumb.is-active{border-color:var(--cl-accent);box-shadow:0 0 0 2px #c47f1047}.pnv-thumb-canvas-wrap{border:1px solid var(--cl-line);background:#fff;justify-content:center;align-items:center;width:100%;min-height:40px;display:flex}.pnv-thumb-canvas{max-width:100%;height:auto;display:block}.pnv-thumb-num{color:var(--cl-muted);font-variant-numeric:tabular-nums;font-size:11px}.pnv-thumb.is-active .pnv-thumb-num{color:var(--cl-accent);font-weight:600}.pnv-hotspots{z-index:3;pointer-events:none;transform-origin:0 0;position:absolute;top:0;left:0}.pnv-hotspots[data-main-rotation="90"]{transform:rotate(90deg)translateY(-100%)}.pnv-hotspots[data-main-rotation="180"]{transform:rotate(180deg)translate(-100%,-100%)}.pnv-hotspots[data-main-rotation="270"]{transform:rotate(270deg)translate(-100%)}.pnv-hotspot{cursor:pointer;pointer-events:auto;transition:background-color var(--cl-transition-fast), box-shadow var(--cl-transition-fast);background:0 0;border:0;border-radius:2px;margin:0;padding:0;display:block;position:absolute}.pnv-hotspot:hover{background:#3884ff29;box-shadow:inset 0 0 0 1px #3884ff80}.pnv-hotspot:focus-visible{box-shadow:var(--cl-shadow-focus);outline:none}.pnv-status-msg{text-align:center;max-width:320px}.pnv-spinner{border:2px solid var(--cl-line);border-top-color:var(--cl-accent);border-radius:50%;width:24px;height:24px;animation:.7s linear infinite pnv-spin}@keyframes pnv-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.pnv-tool,.pnv-sidebar,.pnv-thumb,.pnv-hotspot,.pnv-search-input,.pnv-pagejump-input{transition:none}.pnv-tool:hover{transform:none}.pnv-spinner,.pnv-overlay{animation:none}}.doc-tabs{border-bottom:1px solid var(--cl-line);flex-wrap:wrap;gap:6px;margin-bottom:12px;padding-bottom:8px;display:flex}.doc-tab{max-width:220px;font:inherit;cursor:pointer;color:var(--cl-muted);background:var(--cl-surface);border:1px solid var(--cl-line);border-radius:var(--cl-radius-sm);transition:border-color var(--cl-transition-fast), color var(--cl-transition-fast), background-color var(--cl-transition-fast);align-items:center;gap:6px;padding:5px 10px;display:inline-flex}.doc-tab:hover{background:var(--cl-row-hover)}.doc-tab.is-active{color:var(--cl-accent);border-color:var(--cl-accent);background:var(--cl-draft-bg)}.doc-tab-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.doc-tab-badge{background:var(--cl-hash-bg);color:var(--cl-muted);border-radius:999px;flex:none;padding:2px 6px;font-size:11px;line-height:1}.doc-tab.is-active .doc-tab-badge{background:var(--cl-accent);color:var(--cl-accent-ink)}.range-select{flex-wrap:wrap;align-items:flex-end;gap:8px;margin-bottom:12px;display:flex}.range-select-field{color:var(--cl-muted);flex-direction:column;gap:3px;font-size:12px;display:flex}.range-select-field input{width:70px;font:inherit;border:1px solid var(--cl-line);border-radius:var(--cl-radius-sm);background:var(--cl-surface);color:var(--cl-ink);padding:4px 6px}.range-select-field input:focus{border-color:var(--cl-accent);box-shadow:var(--cl-shadow-focus);outline:none}@media (width<=820px){.estimate-grid,.documents-body{grid-template-columns:1fr}.detail-pane{position:static}}@media (width<=480px){.app-header-inner,.app-content{padding-left:14px;padding-right:14px}.page-head{flex-direction:column}.app-user-id{align-items:flex-start}.data-table th:first-child,.data-table td:first-child{display:none}}@media (prefers-reduced-motion:reduce){*{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}.thumb,.thumb:hover:not(.is-readonly),.thumb-check,.thumb-skeleton,.zoom-overlay,.zoom-dialog{transition:none!important;animation:none!important;transform:none!important}}
