:root{--bg: #f7f7f8;--fg: #18181b;--fg-muted: #6b7280;--border: #e4e4e7;--accent: #2563eb;--accent-hover: #1d4ed8;--danger: #dc2626;--success: #16a34a;--panel-bg: #ffffff;--highlight: rgba(250, 204, 21, .35);--highlight-hover: rgba(250, 204, 21, .55);font-family:system-ui,-apple-system,Hiragino Kaku Gothic ProN,sans-serif;font-size:14px;color:var(--fg);background:var(--bg)}*{box-sizing:border-box}body{margin:0}.app{display:grid;grid-template-columns:1fr 360px;grid-template-rows:auto 1fr;height:100vh}.topbar{grid-column:1 / 3;height:48px;display:flex;align-items:center;gap:12px;padding:0 16px;border-bottom:1px solid var(--border);background:var(--panel-bg);font-size:13px}.topbar h1{font-size:14px;margin:0;font-weight:600}.topbar .sep{color:var(--fg-muted)}.topbar button{padding:4px 10px;border:1px solid var(--border);border-radius:4px;background:var(--panel-bg);cursor:pointer;font-size:12px}.topbar button:hover{background:var(--bg)}.viewer{overflow:auto;padding:16px 0;background:var(--bg)}.sidebar{border-left:1px solid var(--border);background:var(--panel-bg);overflow-y:auto;padding:12px}.pdf-page{position:relative;margin:0 auto 16px;background:#fff;box-shadow:0 1px 4px #00000014}.pdf-page canvas{display:block}.pdf-page .text-layer{position:absolute;inset:0;overflow:hidden;line-height:1;user-select:text;color:transparent;pointer-events:auto}.pdf-page .text-layer>span{position:absolute;white-space:pre;cursor:text;transform-origin:0% 0%}.pdf-page .text-layer ::selection{background:#2563eb4d}.pdf-page .annotation-layer{position:absolute;inset:0;pointer-events:none}.pdf-page .annotation-highlight{position:absolute;background:var(--highlight);border-radius:2px;pointer-events:auto;cursor:pointer;transition:background .15s}.pdf-page .annotation-highlight:hover,.pdf-page .annotation-highlight.active{background:var(--highlight-hover)}.popover{position:fixed;background:var(--fg);color:#fff;padding:6px 8px;border-radius:6px;font-size:12px;z-index:100;box-shadow:0 4px 12px #00000026}.popover button{all:unset;padding:2px 8px;cursor:pointer;border-radius:3px}.popover button:hover{background:#ffffff1f}.dialog-backdrop{position:fixed;inset:0;background:#00000059;display:flex;align-items:center;justify-content:center;z-index:200}.dialog{background:var(--panel-bg);border-radius:8px;width:min(520px,90vw);padding:16px;display:flex;flex-direction:column;gap:12px;box-shadow:0 20px 40px #0003}.dialog h2{font-size:15px;margin:0}.dialog .quote-preview{padding:8px 10px;background:var(--bg);border-left:3px solid var(--accent);font-size:13px;color:var(--fg-muted);max-height:120px;overflow-y:auto;white-space:pre-wrap}.dialog label{font-size:12px;color:var(--fg-muted);display:flex;flex-direction:column;gap:4px}.dialog input,.dialog textarea,.dialog select{font:inherit;padding:6px 8px;border:1px solid var(--border);border-radius:4px;background:var(--panel-bg)}.dialog textarea{min-height:100px;resize:vertical}.dialog .actions{display:flex;gap:8px;justify-content:flex-end}.dialog button{padding:6px 14px;border-radius:4px;border:1px solid var(--border);background:var(--panel-bg);cursor:pointer;font:inherit}.dialog button.primary{background:var(--accent);color:#fff;border-color:var(--accent)}.dialog button.primary:hover{background:var(--accent-hover)}.threads h2{font-size:13px;color:var(--fg-muted);margin:0 0 12px;text-transform:uppercase;letter-spacing:.06em}.thread{border:1px solid var(--border);border-radius:6px;padding:10px;margin-bottom:10px;cursor:pointer;transition:border-color .15s}.thread:hover,.thread.active{border-color:var(--accent)}.thread .head{display:flex;gap:8px;align-items:center;font-size:11px;color:var(--fg-muted);margin-bottom:4px}.thread .quote{font-size:12px;color:var(--fg-muted);padding-left:8px;border-left:2px solid var(--border);margin:4px 0}.thread .comment{font-size:13px;white-space:pre-wrap}.thread .kind-badge{padding:1px 6px;border-radius:10px;background:var(--bg);font-size:10px;font-weight:600}.kind-badge.typo{background:#fef3c7;color:#92400e}.kind-badge.suggestion{background:#dbeafe;color:#1e40af}.kind-badge.question{background:#f3e8ff;color:#6b21a8}.kind-badge.praise{background:#dcfce7;color:#14532d}.empty-state{color:var(--fg-muted);text-align:center;padding:24px;font-size:13px}.loading{padding:24px;text-align:center;color:var(--fg-muted)}.error{padding:12px;color:var(--danger);background:#fef2f2;border-radius:4px;margin:12px}
