:root{--bg:#0f172a;--bg-elev:#1e293b;--surface:#334155;--text:#f1f5f9;--text-muted:#94a3b8;--border:#334155;--accent:#6366f1;--accent-hover:#818cf8;--page-bg:#fff;--shadow:#0006;--toolbar-h:52px}:root[data-theme=light]{--bg:#f1f5f9;--bg-elev:#fff;--surface:#e2e8f0;--text:#0f172a;--text-muted:#64748b;--border:#cbd5e1;--accent:#6366f1;--accent-hover:#4f46e5;--page-bg:#fff;--shadow:#0f172a26}*{box-sizing:border-box}[hidden]{display:none!important}html,body{background:var(--bg);height:100%;color:var(--text);margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}#app,.app-shell{height:100%}.app-shell{flex-direction:column;display:flex}.toolbar{height:var(--toolbar-h);background:var(--bg-elev);border-bottom:1px solid var(--border);z-index:5;flex:none;align-items:center;gap:10px;padding:0 14px;display:flex}.brand{letter-spacing:-.02em;align-items:center;font-size:18px;font-weight:700;display:flex}.brand-mark{background:var(--accent);color:#fff;border-radius:6px;margin-right:2px;padding:2px 6px;font-size:13px}.brand-name{color:var(--text)}.spacer{flex:auto}.btn-group{background:var(--bg);border:1px solid var(--border);border-radius:8px;align-items:center;gap:4px;padding:3px;display:inline-flex}.page-info{color:var(--text-muted);text-align:right;min-width:90px;font-size:13px}.zoom-level{text-align:center;min-width:46px;color:var(--text-muted);font-size:13px}button{font:inherit;cursor:pointer;background:var(--surface);color:var(--text);border:none;border-radius:7px;padding:7px 12px;transition:background .12s,opacity .12s}button:hover:not([disabled]){background:var(--accent-hover);color:#fff}button[disabled]{opacity:.4;cursor:default}button.primary{background:var(--accent);color:#fff}button.primary:hover{background:var(--accent-hover)}button.ghost{background:0 0}button.icon{background:0 0;padding:6px 10px;font-size:15px;line-height:1}.app-body{flex:auto;min-height:0;display:flex}.sidebar{background:var(--bg-elev);border-right:1px solid var(--border);flex:none;width:180px;overflow-y:auto}.thumb-list{flex-direction:column;gap:10px;padding:12px;display:flex}.thumb{background:var(--surface);border:2px solid #0000;border-radius:6px;justify-content:center;min-height:180px;padding:0;display:flex;position:relative}.thumb:hover{border-color:var(--accent-hover);background:0 0}.thumb.active{border-color:var(--accent)}.thumb.drag-src{opacity:.4}.thumb.drag-over{border-color:var(--accent-hover);border-style:dashed}.thumb canvas{cursor:grab;width:100%;height:auto;box-shadow:0 1px 4px var(--shadow);background:var(--page-bg);border-radius:4px}.thumb-label{color:#fff;background:#0f172abf;border-radius:4px;padding:1px 6px;font-size:11px;position:absolute;bottom:4px;right:4px}.viewport{background:var(--bg);flex:auto;position:relative;overflow:auto}.pages{flex-direction:column;align-items:center;gap:18px;padding:24px;display:flex}.page{background:var(--page-bg);box-shadow:0 4px 20px var(--shadow);border-radius:2px;line-height:0;position:relative}.page canvas{display:block}.page-controls{z-index:5;opacity:0;gap:4px;transition:opacity .12s;display:flex;position:absolute;top:8px;right:8px}.page:hover .page-controls{opacity:1}.page-ctrl{color:#fff;width:30px;height:30px;box-shadow:0 1px 4px var(--shadow);background:#0f172ad1;border-radius:6px;padding:0;font-size:14px;line-height:1}.page-ctrl:hover:not([disabled]){background:var(--accent)}.text-layer{z-index:2;line-height:1;position:absolute;inset:0;overflow:hidden}.text-layer span{white-space:pre;color:#0000;transform-origin:0 0;cursor:text;position:absolute}.text-layer span::selection{background:#6366f166}.konva-overlay{z-index:4;position:absolute;inset:0}.text-edit-input{z-index:10;outline:2px solid var(--accent);resize:none;box-shadow:0 2px 8px var(--shadow);border:none;border-radius:2px;margin:0;padding:0 2px;font-family:system-ui,sans-serif;overflow:hidden}.text-select-rect{z-index:9;border:1px solid var(--accent);pointer-events:none;background:#6366f126;position:absolute}.toolstrip{background:var(--bg-elev);border-bottom:1px solid var(--border);flex:none;align-items:center;gap:4px;padding:6px 14px;display:flex;overflow-x:auto}.toolstrip .tool{white-space:nowrap;background:0 0;border-radius:6px;padding:5px 10px;font-size:13px}.toolstrip .tool.active{background:var(--accent);color:#fff}.tool-color{border:1px solid var(--border);background:var(--bg);cursor:pointer;border-radius:6px;width:32px;height:28px;margin-left:4px;padding:2px}.empty-state{place-items:center;padding:24px;display:grid;position:absolute;inset:0}.empty-card{text-align:center;max-width:440px}.empty-card h1{letter-spacing:-.03em;margin:0 0 8px;font-size:42px}.empty-card p{color:var(--text);margin:6px 0}.empty-card .muted{color:var(--text-muted)}.empty-card .small{font-size:13px}.empty-actions{flex-wrap:wrap;justify-content:center;gap:8px;margin:16px 0 6px;display:flex}.empty-card .empty-actions button{margin:0;padding:11px 22px;font-size:15px}.empty-card .empty-actions .ghost{border:1px solid var(--border)}.app-shell.dragging:after{content:"Drop your PDF to open";z-index:50;color:#fff;border:3px dashed var(--accent-hover);backdrop-filter:blur(2px);background:#6366f159;place-items:center;font-size:22px;font-weight:600;display:grid;position:fixed;inset:0}.tools-menu{display:inline-block;position:relative}.tools-dropdown{z-index:20;background:var(--bg-elev);border:1px solid var(--border);box-shadow:0 8px 28px var(--shadow);border-radius:10px;flex-direction:column;min-width:190px;padding:6px;display:flex;position:absolute;top:calc(100% + 6px);right:0}.tools-item{text-align:left;background:0 0;border-radius:6px;padding:8px 12px;font-size:14px}.modal-backdrop{z-index:100;background:#0f172a8c;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.form-panel{background:var(--bg-elev);color:var(--text);border:1px solid var(--border);box-shadow:0 12px 40px var(--shadow);border-radius:12px;width:min(480px,100%);max-height:85vh;padding:20px 22px;overflow-y:auto}.form-panel h2{margin:0 0 14px;font-size:18px}.form-fields{flex-direction:column;gap:10px;display:flex}.form-field{grid-template-columns:1fr 1.4fr;align-items:center;gap:10px;display:grid}.form-field label{color:var(--text-muted);word-break:break-word;font-size:13px}.form-field input[type=text],.form-field select{border:1px solid var(--border);background:var(--bg);color:var(--text);font:inherit;border-radius:6px;padding:6px 8px}.flatten-row{color:var(--text-muted);align-items:center;gap:8px;margin:16px 0 4px;font-size:13px;display:flex}.modal-actions{justify-content:flex-end;gap:8px;margin-top:18px;display:flex}.about-panel p{margin:8px 0;line-height:1.5}.about-panel h3{margin:18px 0 6px;font-size:15px}.about-panel strong{color:var(--text)}.ocr-status{min-height:18px;margin:10px 0 6px}.ocr-bar{background:var(--surface);border-radius:3px;height:6px;overflow:hidden}.ocr-bar-fill{background:var(--accent);width:0;height:100%;transition:width .2s}.ocr-output{border:1px solid var(--border);background:var(--bg);width:100%;min-height:180px;color:var(--text);resize:vertical;border-radius:8px;margin-top:12px;padding:10px;font:13px/1.5 ui-monospace,monospace}.sign-tabs{gap:6px;margin-bottom:12px;display:flex}.sign-content{flex-direction:column;align-items:flex-start;gap:10px;min-height:170px;display:flex}.sign-pad{border:1px dashed var(--border);touch-action:none;cursor:crosshair;background:#fff;border-radius:8px;width:100%;height:160px}.sign-type-input{border:1px solid var(--border);color:#111;background:#fff;border-radius:8px;width:100%;padding:12px;font-family:Segoe Script,Snell Roundhand,Brush Script MT,cursive;font-size:26px}.sign-preview{background:#fff;border-radius:6px;max-width:100%;max-height:120px}.toast{background:var(--bg-elev);color:var(--text);border:1px solid var(--border);box-shadow:0 6px 24px var(--shadow);opacity:0;z-index:100;border-radius:10px;max-width:90vw;padding:12px 18px;transition:opacity .25s,transform .25s;position:fixed;bottom:24px;left:50%;transform:translate(-50%)translateY(20px)}.toast.show{opacity:1;transform:translate(-50%)translateY(0)}
