: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-committed-hover:#0c6841;--cl-option-hover:#5c36a3;--cl-line-hover:#c3c9d2;--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){border-color:var(--cl-line-hover);box-shadow:var(--cl-shadow-btn);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:var(--cl-accent-ink)}.btn-committed:hover:not(:disabled){background:var(--cl-committed-hover);border-color:var(--cl-committed-hover)}.btn-option{background:var(--cl-option);border-color:var(--cl-option);color:var(--cl-accent-ink)}.btn-option:hover:not(:disabled){background:var(--cl-option-hover);border-color:var(--cl-option-hover)}.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:1600px;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:1600px;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-committed);background:var(--cl-committed-bg);border-radius:var(--cl-radius-sm);align-items:center;gap:5px;padding:2px 9px;font-size:11px;font-weight:600;display:inline-flex}.status-tag:before{content:"";background:currentColor;border-radius:50%;width:6px;height:6px}.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{background:radial-gradient(1200px 600px at 50% -10%, #c47f100f, transparent 60%), linear-gradient(180deg, #eef2f8 0%, var(--cl-bg) 55%);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-hover);border-radius:12px;width:100%;max-width:380px;padding:32px 32px 28px;position:relative;overflow:hidden}.auth-card:before{content:"";background:linear-gradient(90deg, var(--cl-accent), #e0a93a);height:3px;position:absolute;top:0;left:0;right:0}.auth-brand{flex-direction:column;margin-bottom:24px;line-height:1.2;display:flex}.auth-title{letter-spacing:-.01em;margin-bottom:20px;font-size:20px}.auth-brand .brand-mark{letter-spacing:-.02em;color:var(--cl-accent);font-size:22px}.auth-brand .brand-eyebrow{margin-top:3px}.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-main{align-items:flex-start;gap:20px;display:flex}.estimate-main>.estimate-grid{flex:auto;min-width:0}.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-hover);padding:18px}.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}.diff-change-label{color:var(--cl-ink);font-weight:600;display:block}.diff-change-path{color:var(--cl-muted);font-size:11px;display:block}.diff-change-detail{color:var(--cl-ink)}.diff-raw{margin-top:6px}.diff-raw>summary{cursor:pointer;color:var(--cl-muted);font-size:11px}.diff-raw-grid{flex-wrap:wrap;gap:12px;margin-top:8px;display:flex}.diff-raw-label{color:var(--cl-muted);margin-bottom:4px;font-size:11px;font-weight:600;display:block}.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}.editor-roadmap{background:var(--cl-committed-bg);border:1px solid var(--cl-line);border-left:3px solid var(--cl-accent);border-radius:var(--cl-radius);margin:0 0 12px;padding:12px 14px}.editor-roadmap-title{color:var(--cl-ink);margin:0 0 4px;font-weight:600}.editor-roadmap-body{color:var(--cl-muted);margin:0;font-size:12px;line-height:1.5}.raw-snapshot-disclosure>summary{cursor:pointer;color:var(--cl-muted);margin-bottom:8px;font-size:12px}.raw-snapshot-body{margin-top:4px}.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-progress{color:var(--cl-accent);font-weight:600}.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);max-width:340px;color:var(--cl-accent-ink);border-radius:var(--cl-radius);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:none;margin-bottom:20px;padding:14px 18px}.documents-empty-strip{margin:4px 0 2px}.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);width:20px;height:20px;color:var(--cl-accent-ink);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;position:relative;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-annotations{z-index:4;pointer-events:none;transform-origin:0 0;position:absolute;top:0;left:0}.pnv-annotations[data-main-rotation="90"]{transform:rotate(90deg)translateY(-100%)}.pnv-annotations[data-main-rotation="180"]{transform:rotate(180deg)translate(-100%,-100%)}.pnv-annotations[data-main-rotation="270"]{transform:rotate(270deg)translate(-100%)}.pnv-annotation{position:absolute}.pnv-annotation-rect{mix-blend-mode:multiply;border-radius:1px}.pnv-annotation-line{top:0;left:0;overflow:visible}.pnv-annotation-pin{width:24px;height:30px;margin-top:-30px;margin-left:-12px}.pnv-pin-svg{width:24px;height:30px;display:block;overflow:visible}.pnv-pin-body{stroke:#fff;stroke-width:1.5px;filter:drop-shadow(0 1px 2px #00000059)}.pnv-pin-count{fill:#fff;text-anchor:middle;dominant-baseline:central;pointer-events:none;font-size:11px;font-weight:700;font-family:var(--cl-font,inherit)}.pnv-pin-glyph{fill:none;stroke:#fff;stroke-width:2.4px;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}.pnv-annotation-pin.is-resolved .pnv-pin-body{stroke:#fff}.pnv-annotations.is-interactive{pointer-events:auto;cursor:default}.pnv-annotations.is-interactive.is-drawing{cursor:crosshair}.pnv-annotation.is-interactive{pointer-events:auto;cursor:pointer}.pnv-annotation.is-selected{outline:2px solid var(--cl-accent);outline-offset:1px}.pnv-annotation-preview{border:1.5px dashed var(--cl-accent);pointer-events:none;background:#3884ff14;position:absolute}.pnv-annotation-chrome{background:var(--cl-surface);border:1px solid var(--cl-line);border-radius:var(--cl-radius-sm);box-shadow:var(--cl-shadow-card);pointer-events:auto;white-space:nowrap;z-index:5;align-items:center;gap:6px;padding:4px 6px;display:flex;position:absolute;transform:translateY(-110%)}.pnv-annotation-delete{width:20px;height:20px;color:var(--cl-text-muted);cursor:pointer;background:0 0;border:0;border-radius:4px;justify-content:center;align-items:center;padding:0;font-size:16px;line-height:1;display:inline-flex}.pnv-annotation-delete:hover{color:var(--cl-danger,#d6453d);background:var(--cl-surface-2,#0000000d)}.pnv-annotation-picker{align-items:center;gap:6px;display:inline-flex}.pnv-swatch-row{align-items:center;gap:4px;display:inline-flex}.pnv-swatch{border:1px solid var(--cl-line);cursor:pointer;border-radius:4px;width:18px;height:18px;padding:0;box-shadow:inset 0 0 0 1px #fff9}.pnv-swatch.is-active{outline:2px solid var(--cl-accent);outline-offset:1px;border-color:var(--cl-accent)}.pnv-annotation-picker-opacity{width:64px}.pnv-annotation-picker-stroke{width:44px;font:inherit;color:var(--cl-text);background:var(--cl-surface);border:1px solid var(--cl-line);border-radius:4px;padding:2px 4px}.pnv-palette{background:var(--cl-surface);border-bottom:1px solid var(--cl-line);box-shadow:var(--cl-shadow-card);align-items:center;gap:10px;padding:6px 12px;display:flex}.pnv-palette-sep{background:var(--cl-line);align-self:stretch;width:1px}.pnv-palette-field{align-items:center;gap:6px;display:inline-flex}.pnv-palette-label{color:var(--cl-text-muted);font-size:12px}.pnv-palette-opacity{width:80px}.pnv-palette-stroke{width:48px;font:inherit;color:var(--cl-text);background:var(--cl-surface);border:1px solid var(--cl-line);border-radius:4px;padding:2px 4px}.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}.chat-panel{flex-direction:row-reverse;flex:none;align-self:flex-start;align-items:stretch;max-height:calc(100vh - 112px);display:flex;position:sticky;top:96px}.chat-panel.is-collapsed{width:auto}.chat-panel.is-open{width:min(420px,40vw)}.chat-toggle{background:var(--cl-surface);color:var(--cl-ink);border:1px solid var(--cl-line);border-radius:var(--cl-radius);font:inherit;cursor:pointer;box-shadow:var(--cl-shadow-card);transition:transform var(--cl-transition-fast), box-shadow var(--cl-transition-fast), border-color var(--cl-transition-fast);align-self:flex-start;align-items:center;gap:6px;padding:8px 12px;font-weight:600;display:inline-flex}.chat-toggle:hover{box-shadow:var(--cl-shadow-hover);border-color:var(--cl-accent);transform:translateY(-1px)}.chat-toggle:focus-visible{border-color:var(--cl-accent);box-shadow:var(--cl-shadow-focus);outline:none}.chat-toggle-chevron{color:var(--cl-muted);font-size:16px;line-height:1}.chat-body{background:var(--cl-surface);border:1px solid var(--cl-line);border-radius:var(--cl-radius);box-shadow:var(--cl-shadow-hover);transition:transform var(--cl-transition-base), opacity var(--cl-transition-base);flex-direction:column;flex:auto;margin-right:8px;display:flex;overflow:hidden}.chat-head{border-bottom:1px solid var(--cl-line);background:var(--cl-bg);padding:12px 14px 8px}.chat-title{margin:0;font-size:14px}.chat-sub{color:var(--cl-muted);margin:4px 0 0;font-size:12px}.chat-messages{flex-direction:column;flex:auto;gap:10px;padding:12px 14px;display:flex;overflow-y:auto}.chat-empty,.chat-loading{color:var(--cl-muted);margin:0;font-size:13px}.chat-bubble{border-radius:var(--cl-radius);border:1px solid var(--cl-line);background:var(--cl-surface);max-width:86%;box-shadow:var(--cl-shadow-card);padding:8px 10px}.chat-bubble-user{background:var(--cl-row-hover);border-color:var(--cl-line);align-self:flex-end}.chat-bubble-assistant{background:#f4f1ea;border-color:#e7ddc7;align-self:flex-start}.chat-bubble-text{white-space:pre-wrap;word-wrap:break-word;font-size:13px;line-height:1.45}.chat-bubble-meta{color:var(--cl-muted);margin-top:4px;font-size:11px}.chat-readonly-note{color:var(--cl-muted);background:var(--cl-draft-bg);border-top:1px solid var(--cl-line);margin:0;padding:8px 14px;font-size:12px}.chat-input{border-top:1px solid var(--cl-line);background:var(--cl-bg);flex-direction:column;gap:6px;padding:10px 12px 12px;display:flex}.chat-textarea{width:100%;font:inherit;border:1px solid var(--cl-line);border-radius:var(--cl-radius-sm);background:var(--cl-surface);color:var(--cl-ink);resize:vertical;min-height:44px;transition:border-color var(--cl-transition-fast), box-shadow var(--cl-transition-fast);padding:8px 10px;font-size:13px}.chat-textarea:focus{border-color:var(--cl-accent);box-shadow:var(--cl-shadow-focus);outline:none}.chat-textarea:disabled{background:var(--cl-row-hover);color:var(--cl-muted)}.chat-input-actions{justify-content:flex-end;display:flex}.chat-error{color:var(--cl-danger);background:var(--cl-danger-bg);border-radius:var(--cl-radius-sm);flex-wrap:wrap;align-items:center;gap:6px;padding:6px 8px;font-size:12px;display:flex}.comment-panel{z-index:6;background:var(--cl-surface);border:1px solid var(--cl-line);border-radius:var(--cl-radius);width:min(340px,80vw);max-height:calc(100% - 96px);box-shadow:var(--cl-shadow-hover);flex-direction:column;display:flex;position:absolute;top:64px;right:14px;overflow:hidden}.comment-panel.is-resolved{border-color:var(--cl-accent)}.comment-head{border-bottom:1px solid var(--cl-line);background:var(--cl-bg);justify-content:space-between;align-items:center;gap:8px;padding:10px 12px;display:flex}.comment-title{margin:0;font-size:14px}.comment-resolved-tag{color:var(--cl-accent);font-weight:600}.comment-head-actions{align-items:center;gap:4px;display:flex}.comment-list{flex-direction:column;flex:auto;gap:10px;padding:12px;display:flex;overflow-y:auto}.comment-empty,.comment-loading{color:var(--cl-muted);margin:0;font-size:13px}.comment-item{border:1px solid var(--cl-line);border-radius:var(--cl-radius-sm);background:var(--cl-surface);box-shadow:var(--cl-shadow-card);padding:8px 10px}.comment-item-meta{color:var(--cl-muted);align-items:center;gap:8px;margin-bottom:4px;font-size:11px;display:flex}.comment-author{color:var(--cl-ink);font-weight:600}.comment-time{flex:auto}.comment-body{white-space:pre-wrap;word-wrap:break-word;font-size:13px;line-height:1.45}.comment-readonly-note{color:var(--cl-muted);background:var(--cl-draft-bg);border-top:1px solid var(--cl-line);margin:0;padding:8px 12px;font-size:12px}.comment-input{border-top:1px solid var(--cl-line);background:var(--cl-bg);flex-direction:column;gap:6px;padding:10px 12px 12px;display:flex}.comment-textarea{width:100%;font:inherit;border:1px solid var(--cl-line);border-radius:var(--cl-radius-sm);background:var(--cl-surface);color:var(--cl-ink);resize:vertical;min-height:44px;transition:border-color var(--cl-transition-fast), box-shadow var(--cl-transition-fast);padding:8px 10px;font-size:13px}.comment-textarea:focus{border-color:var(--cl-accent);box-shadow:var(--cl-shadow-focus);outline:none}.comment-textarea:disabled{background:var(--cl-row-hover);color:var(--cl-muted)}.comment-input-actions{justify-content:flex-end;display:flex}.comment-error{color:var(--cl-danger);background:var(--cl-danger-bg);border-radius:var(--cl-radius-sm);flex-wrap:wrap;align-items:center;gap:6px;padding:6px 8px;font-size:12px;display:flex}.app-nav{align-items:center;gap:8px;margin-left:18px;margin-right:auto;display:flex}.app-nav-link{color:var(--cl-muted);border-radius:var(--cl-radius);transition:color var(--cl-transition-fast), border-color var(--cl-transition-fast), background-color var(--cl-transition-fast);border:1px solid #0000;align-items:center;gap:6px;padding:6px 10px;font-weight:600;display:inline-flex}.app-nav-link:hover{color:var(--cl-accent);background:var(--cl-row-hover);text-decoration:none}.app-nav-link.is-active{color:var(--cl-accent);border-color:var(--cl-line);background:var(--cl-draft-bg)}.btn-danger{background:var(--cl-danger);border-color:var(--cl-danger);color:var(--cl-accent-ink)}.btn-danger:hover:not(:disabled){filter:brightness(.93)}.page-head .btn-primary,.admin-row-actions .btn,.admin-modal .form-actions .btn,.admin-temp-row .btn{align-items:center;gap:6px;display:inline-flex}.admin-filter{font:inherit;border:1px solid var(--cl-line);border-radius:var(--cl-radius);background:var(--cl-surface);width:100%;max-width:340px;color:var(--cl-ink);transition:border-color var(--cl-transition-fast), box-shadow var(--cl-transition-fast);margin-bottom:16px;padding:8px 10px}.admin-filter:focus{border-color:var(--cl-accent);box-shadow:var(--cl-shadow-focus);outline:none}.admin-skeleton{color:var(--cl-muted);align-items:center;gap:10px;padding:24px 0;display:flex}.admin-users-table .admin-actions-col{text-align:right}.admin-row-actions{flex-wrap:wrap;justify-content:flex-end;gap:6px;display:inline-flex}.admin-no-match{text-align:center;padding:20px 14px}.admin-pills{flex-wrap:wrap;gap:4px;display:inline-flex}.admin-status{border-radius:999px;align-items:center;padding:2px 9px;font-size:11px;font-weight:600;display:inline-flex}.admin-status-active{color:var(--cl-committed);background:var(--cl-committed-bg)}.admin-status-inactive{color:var(--cl-muted);background:var(--cl-hash-bg)}.admin-mcp{text-transform:uppercase;letter-spacing:.05em;color:var(--cl-draft);background:var(--cl-draft-bg);border-radius:var(--cl-radius-sm);margin-top:4px;padding:1px 7px;font-size:10px;font-weight:600;display:inline-block}.admin-modal-overlay{z-index:80;animation:zoom-backdrop-in var(--cl-transition-base);background:#0d1b2a8c;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.admin-modal{background:var(--cl-surface);border:1px solid var(--cl-line);border-radius:var(--cl-radius);width:100%;max-width:440px;max-height:90vh;box-shadow:var(--cl-shadow-hover);animation:zoom-dialog-in var(--cl-transition-base);overflow-y:auto}.admin-modal:focus-visible{outline:none}.admin-modal-head{border-bottom:1px solid var(--cl-line);background:var(--cl-bg);justify-content:space-between;align-items:center;gap:12px;padding:14px 18px;display:flex}.admin-modal-title{font-size:16px}.admin-modal-close{flex:none;justify-content:center;align-items:center;padding:4px 8px;display:inline-flex}.admin-modal-body{padding:18px}.admin-fieldset{border:1px solid var(--cl-line);border-radius:var(--cl-radius);margin:0 0 12px;padding:10px 12px}.admin-fieldset legend{color:var(--cl-muted);padding:0 4px;font-size:12px;font-weight:600}.admin-check{align-items:center;gap:8px;margin:6px 0;font-size:13px;display:flex}.admin-check input{width:15px;height:15px;accent-color:var(--cl-accent)}.admin-confirm-text{margin:0 0 14px;line-height:1.5}.admin-temp-warning{color:var(--cl-ink);background:var(--cl-draft-bg);border:1px solid var(--cl-line);border-left:3px solid var(--cl-accent);border-radius:var(--cl-radius-sm);margin:0 0 14px;padding:10px 12px;font-size:13px;line-height:1.5}.admin-temp-row{align-items:stretch;gap:8px;margin-bottom:14px;display:flex}.admin-temp-value{min-width:0;font-family:var(--cl-mono);word-break:break-all;background:var(--cl-hash-bg);border:1px solid var(--cl-line);border-radius:var(--cl-radius);flex:1;align-items:center;padding:8px 10px;font-size:14px;display:flex}@media (width<=820px){.estimate-main{flex-direction:column}.chat-panel{width:auto;max-height:none;position:static}.chat-panel.is-open{width:100%}.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,.chat-toggle,.chat-toggle:hover,.chat-body,.chat-textarea{transition:none!important;animation:none!important;transform:none!important}}.estimate-dock{flex-direction:column;flex:none;align-self:flex-start;gap:8px;width:min(440px,42vw);max-height:calc(100vh - 112px);display:flex;position:sticky;top:96px}.dock-tabs{background:var(--cl-bg);border:1px solid var(--cl-line);border-radius:var(--cl-radius);box-shadow:var(--cl-shadow-card);align-self:flex-start;gap:2px;padding:3px;display:inline-flex}.dock-tab{appearance:none;color:var(--cl-muted);font:inherit;border-radius:var(--cl-radius-sm);cursor:pointer;transition:background-color var(--cl-transition-fast), color var(--cl-transition-fast), border-color var(--cl-transition-fast);background:0 0;border:1px solid #0000;padding:5px 14px;font-size:13px;font-weight:600}.dock-tab:hover{color:var(--cl-ink)}.dock-tab.is-active{background:var(--cl-surface);color:var(--cl-ink);border-color:var(--cl-line);box-shadow:var(--cl-shadow-card)}.dock-tab:focus-visible{border-color:var(--cl-accent);box-shadow:var(--cl-shadow-focus);outline:none}.dock-panel-wrap{flex-direction:column;min-height:0;display:flex}.dock-panel-wrap[hidden]{display:none}.estimate-dock .chat-panel,.estimate-dock .takeoff-panel{width:100%;max-height:none;position:static}.estimate-dock .chat-panel.is-open{width:100%}.takeoff-panel{background:var(--cl-surface);border:1px solid var(--cl-line);border-radius:var(--cl-radius);min-height:0;box-shadow:var(--cl-shadow-hover);flex-direction:column;display:flex;overflow:hidden}.takeoff-head{border-bottom:1px solid var(--cl-line);background:var(--cl-bg);padding:12px 14px 10px}.takeoff-head-row{justify-content:space-between;align-items:center;gap:8px;display:flex}.takeoff-title{margin:0;font-size:14px}.takeoff-sub{color:var(--cl-muted);margin:4px 0 0;font-size:12px}.takeoff-dirty{color:var(--cl-draft);background:var(--cl-draft-bg);border-radius:var(--cl-radius-sm);padding:2px 8px;font-size:11px;font-weight:600}.takeoff-readonly-note{color:var(--cl-muted);margin:4px 0 0;font-size:12px}.takeoff-empty,.takeoff-loading{color:var(--cl-muted);margin:0;padding:16px 14px;font-size:13px}.takeoff-error{margin:12px 14px}.takeoff-empty-state{flex-direction:column;align-items:flex-start;gap:8px;padding:18px 14px;display:flex}.takeoff-empty-title{margin:0;font-size:13px;font-weight:600}.takeoff-empty-body{color:var(--cl-muted);margin:0;font-size:12px}.takeoff-scopes{flex-direction:column;flex:auto;gap:14px;padding:12px 14px;display:flex;overflow-y:auto}.takeoff-muted{color:var(--cl-muted)}.takeoff-scope{border:1px solid var(--cl-line);border-radius:var(--cl-radius);background:var(--cl-surface);box-shadow:var(--cl-shadow-card);flex-direction:column;gap:10px;padding:12px;display:flex}.takeoff-scope.is-out-of-scope{background:var(--cl-bg);opacity:.72}.takeoff-scope-head{flex-wrap:wrap;align-items:flex-end;gap:10px;display:flex}.takeoff-field{flex-direction:column;gap:3px;font-size:12px;display:flex}.takeoff-field>span{color:var(--cl-muted);font-weight:600}.takeoff-field input,.takeoff-field textarea{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;font-size:13px}.takeoff-field input:focus-visible,.takeoff-field textarea:focus-visible{border-color:var(--cl-accent);box-shadow:var(--cl-shadow-focus);outline:none}.takeoff-field input:disabled,.takeoff-field textarea:disabled{background:var(--cl-bg);color:var(--cl-muted)}.takeoff-field-grow{flex:140px;min-width:0}.takeoff-field-qty{flex:0 0 70px}.takeoff-field-qty input{width:100%}.takeoff-field-unit{flex:0 0 80px}.takeoff-field-unit input{width:100%}.takeoff-inscope{color:var(--cl-ink);align-items:center;gap:6px;padding-bottom:6px;font-size:12px;font-weight:600;display:inline-flex}.takeoff-spec>summary{cursor:pointer;color:var(--cl-muted);font-size:12px;font-weight:600}.takeoff-spec-summary{color:var(--cl-ink);margin-left:6px;font-weight:400}.takeoff-spec-grid{grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px;margin-top:8px;display:grid}.takeoff-items{flex-direction:column;gap:8px;display:flex}.takeoff-items-empty{margin:0;font-size:12px}.takeoff-item{border:1px solid var(--cl-line);border-radius:var(--cl-radius-sm);background:var(--cl-bg);flex-wrap:wrap;align-items:flex-end;gap:8px;padding:8px;display:flex}.takeoff-chip{letter-spacing:.04em;border-radius:var(--cl-radius-sm);align-self:center;padding:2px 6px;font-size:10px;font-weight:700}.takeoff-chip-ai{color:var(--cl-option);background:var(--cl-option-bg)}.takeoff-jump{align-self:center}.takeoff-item-remove{align-self:center;padding:4px 8px;font-size:16px;line-height:1}.takeoff-notes textarea{resize:vertical;width:100%}.takeoff-remove-confirm{color:var(--cl-muted);flex-wrap:wrap;align-items:center;gap:8px;font-size:12px;display:flex}.takeoff-remove-scope{color:var(--cl-muted);align-self:flex-start}.takeoff-add-scope{align-self:flex-start;margin:0 14px 12px}.takeoff-foot{border-top:1px solid var(--cl-line);background:var(--cl-bg);justify-content:flex-end;padding:10px 14px;display:flex}.takeoff-analyze-btn{flex:none}.takeoff-analyzing,.takeoff-analyze-empty{color:var(--cl-muted);background:var(--cl-bg);border:1px solid var(--cl-line);border-radius:var(--cl-radius-sm);margin:12px 14px;padding:10px 12px;font-size:12px}.takeoff-analyze-empty p{margin:0}.takeoff-analyze-error{margin:12px 14px}.takeoff-proposed{border:1px dashed var(--cl-option);border-radius:var(--cl-radius);background:var(--cl-option-bg);flex-direction:column;gap:10px;margin:0 14px 12px;padding:12px;display:flex}.takeoff-proposed-title,.takeoff-section-title{color:var(--cl-ink);margin:0;font-size:12px;font-weight:700}.takeoff-proposed-scope{flex-direction:column;gap:8px;display:flex}.takeoff-proposed-scope-head{align-items:baseline;gap:8px;font-size:12px;font-weight:600;display:flex}.takeoff-proposed-scopetype{color:var(--cl-ink)}.takeoff-proposed-foot{justify-content:flex-end;display:flex}.takeoff-item-proposed{background:var(--cl-surface)}.takeoff-item-proposed.is-pending{border-style:dashed;border-color:var(--cl-option)}.takeoff-item-proposed.is-confirmed{border-color:var(--cl-committed);background:var(--cl-committed-bg)}.takeoff-item-proposed.is-rejected{opacity:.55;border-color:var(--cl-line);text-decoration:line-through}.takeoff-proposed-controls{align-self:center;gap:4px;display:inline-flex}.takeoff-row-confirm,.takeoff-row-edit,.takeoff-row-reject{padding:4px 7px;font-size:13px;line-height:1}.takeoff-row-confirm{color:var(--cl-committed)}.takeoff-row-reject{color:var(--cl-danger)}.takeoff-warn{color:var(--cl-draft);cursor:help;align-self:center;font-size:13px}.takeoff-assumptions,.takeoff-scopemap{border:1px solid var(--cl-line);border-radius:var(--cl-radius-sm);background:var(--cl-bg);margin:0 14px 12px;padding:10px 12px}.takeoff-assumptions-list,.takeoff-scopemap-list{color:var(--cl-ink);flex-direction:column;gap:4px;margin:6px 0 0;padding-left:18px;font-size:12px;display:flex}.takeoff-scopemap-page{color:var(--cl-muted);font-weight:600}.takeoff-scopemap-doc{color:var(--cl-ink);margin-right:6px;font-weight:600}.pnv-focus{z-index:5;pointer-events:none;transform-origin:0 0;position:absolute;top:0;left:0}.pnv-focus[data-main-rotation="90"]{transform:rotate(90deg)translateY(-100%)}.pnv-focus[data-main-rotation="180"]{transform:rotate(180deg)translate(-100%,-100%)}.pnv-focus[data-main-rotation="270"]{transform:rotate(270deg)translate(-100%)}.pnv-focus .pnv-annotation-rect{outline:2px solid var(--cl-accent);outline-offset:1px;box-shadow:var(--cl-shadow-focus);animation:1.4s ease-out 2 takeoff-focus-pulse}@keyframes takeoff-focus-pulse{0%{box-shadow:0 0 #c47f1080}to{box-shadow:0 0 0 10px #c47f1000}}@media (width<=820px){.estimate-dock{width:100%;max-height:none;position:static}}
