.drop-zone{border:2px dashed var(--border);border-radius:12px;padding:3rem 2rem;text-align:center;cursor:pointer;transition:border-color .2s,background .2s}.drop-zone.dragover,.drop-zone:hover{border-color:var(--accent);background:var(--bg-elev)}.drop-zone .empty-state{pointer-events:none}.page-toolbar{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1rem;background:var(--bg-elev);border:1px solid var(--border);border-radius:8px;margin-bottom:1rem}.page-toolbar__left{display:flex;align-items:center;gap:.75rem}.page-toolbar__right{display:flex;align-items:center;gap:.5rem}.page-count{font-size:.875rem;color:var(--text-muted)}.pages-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:1rem}.page-card{position:relative;background:var(--bg-elev);border:2px solid var(--border);border-radius:8px;padding:.5rem;cursor:grab;transition:border-color .15s,box-shadow .15s;user-select:none}.page-card:hover{border-color:var(--border-strong)}.page-card.selected{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-dim)}.page-card.dragging{opacity:.5}.page-card.drag-over{border-color:var(--accent);background:var(--bg-elev-2)}.page-card__canvas{width:100%;height:auto;border-radius:4px;background:#fff;display:block}.page-card__footer{display:flex;align-items:center;justify-content:space-between;margin-top:.5rem;padding:0 .25rem}.page-card__number{font-size:.75rem;color:var(--text-muted);font-family:var(--font-mono)}.page-card__source{font-size:.7rem;color:var(--text-dim);max-width:80px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.page-card__rotation{font-size:.7rem;color:var(--changed)}.drag-placeholder{border:2px dashed var(--accent);border-radius:8px;background:var(--accent-dim);opacity:.3;min-height:200px}.btn.danger{color:var(--removed)}.btn.danger:hover{background:var(--removed-bg)}.page-card__grip{position:absolute;top:.35rem;left:.35rem;opacity:0;transition:opacity .15s;color:var(--text-dim);font-size:1rem;cursor:grab;z-index:2}.page-card:hover .page-card__grip{opacity:.7}.page-card.dragging .page-card__grip{opacity:1;cursor:grabbing}.page-card__edit-hint{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.5);border-radius:6px;opacity:0;transition:opacity .15s;pointer-events:none;color:#fff;font-size:.75rem;gap:.25rem}.page-card:hover .page-card__edit-hint{opacity:1}.editor-backdrop{position:fixed;inset:0;z-index:1000;background:var(--bg);display:flex;flex-direction:column}.editor{display:flex;flex-direction:column;height:100%}.editor__toolbar{display:flex;align-items:center;justify-content:space-between;padding:.5rem 1rem;background:var(--bg-elev);border-bottom:1px solid var(--border);gap:1rem;flex-shrink:0}.editor__toolbar-center,.editor__toolbar-left,.editor__toolbar-right{display:flex;align-items:center;gap:.5rem}.editor__toolbar-left{min-width:0;flex:1}.editor__toolbar-right{flex:1;justify-content:flex-end}.editor__page-label{font-size:.85rem;color:var(--text-muted);white-space:nowrap}.editor__prop{display:flex;align-items:center;gap:.25rem;font-size:.85rem;color:var(--text-muted)}.editor__prop input[type=number]{width:3.5rem;padding:.2rem .4rem;border:1px solid var(--border);border-radius:4px;background:var(--bg);color:var(--text);font-size:.8rem;font-family:var(--font-mono)}.editor__prop input[type=color]{width:2rem;height:2rem;border:1px solid var(--border);border-radius:4px;background:0 0;cursor:pointer;padding:2px}.editor__canvas-wrap{flex:1;position:relative;overflow:auto;padding:2rem;background:var(--bg-elev-2)}.editor__canvas-sizer{position:relative;margin:0 auto;box-shadow:0 4px 24px rgba(0,0,0,.4)}.editor__canvas-sizer canvas{display:block;width:100%;height:100%;position:absolute;top:0;left:0}#editor-canvas-bg{z-index:1}#editor-canvas-overlay{z-index:2;cursor:crosshair}.editor__objects{position:absolute;top:0;left:0;width:100%;height:100%;z-index:2;pointer-events:none}.editor__canvas-wrap[data-tool=objects] .editor__objects{pointer-events:auto}.editor__annotations{position:absolute;top:0;left:0;width:100%;height:100%;z-index:3;pointer-events:none}.editor__zoom{display:flex;align-items:center;gap:.25rem}.editor__zoom-label{font-size:.8rem;font-family:var(--font-mono);color:var(--text-muted);min-width:3.5rem;text-align:center}.text-annotation{position:absolute;pointer-events:auto;cursor:move;min-width:20px;min-height:1em;outline:0;white-space:pre-wrap;word-break:break-word;font-family:sans-serif;line-height:1.2;padding:2px 4px;border:1px solid transparent;border-radius:2px}.text-annotation.active,.text-annotation:hover{border-color:var(--accent);background:rgba(59,130,246,.05)}.text-annotation.editing{cursor:text;border-color:var(--accent);background:rgba(255,255,255,.9)}.text-annotation.pdf-text{border:1px dashed transparent;padding:1px 2px;line-height:1.1;white-space:pre;color:transparent;font-family:inherit}.text-annotation.pdf-text:hover{border-color:var(--changed);background:rgba(245,158,11,.08);color:var(--pdf-text-color,#000)}.text-annotation.pdf-text.editing{border-color:var(--accent);background:rgba(255,255,255,.95);color:var(--pdf-text-color,#000)}.text-annotation.pdf-text.modified{border-color:var(--changed);background:var(--changed-bg);color:var(--pdf-text-color,#000)}.editor__canvas-wrap[data-tool=text] #editor-canvas-overlay{cursor:text}.editor__canvas-wrap[data-tool=draw] #editor-canvas-overlay{cursor:crosshair}.editor__canvas-wrap[data-tool=select] #editor-canvas-overlay{cursor:default;pointer-events:auto}.editor__canvas-wrap[data-tool=objects] #editor-canvas-overlay{pointer-events:none}.stream-obj{position:absolute;border:1px solid transparent;border-radius:2px;cursor:pointer;transition:border-color .12s,background .12s;box-sizing:border-box}.stream-obj:hover{border-color:var(--accent);background:rgba(59,130,246,.06)}.stream-obj.selected{border-color:var(--accent);background:rgba(59,130,246,.1);box-shadow:0 0 0 2px var(--accent-dim)}.stream-obj.text-obj{border-style:dashed}.stream-obj.text-obj:hover{border-style:solid}.stream-obj.path-obj{border-style:dotted}.stream-obj.path-obj.selected,.stream-obj.path-obj:hover{border-style:solid;border-color:var(--added);background:rgba(34,197,94,.06)}.stream-obj.image-obj{border-style:dashed;border-color:transparent}.stream-obj.image-obj.selected,.stream-obj.image-obj:hover{border-color:var(--highlight);background:rgba(250,204,21,.06)}.stream-obj__label{position:absolute;top:-18px;left:0;font-size:.65rem;font-family:var(--font-mono);color:var(--text-muted);background:var(--bg-elev);border:1px solid var(--border);border-radius:3px;padding:1px 4px;white-space:nowrap;opacity:0;transition:opacity .15s;pointer-events:none}.stream-obj.selected .stream-obj__label,.stream-obj:hover .stream-obj__label{opacity:1}.stream-obj.editing{border-color:var(--accent);background:rgba(255,255,255,.95);z-index:10}.stream-obj__text-edit{width:100%;height:100%;border:none;background:0 0;color:inherit;font:inherit;resize:none;outline:0;padding:0;overflow:hidden}.obj-action-bar{position:absolute;bottom:-32px;left:50%;transform:translateX(-50%);display:flex;gap:4px;background:var(--bg-elev);border:1px solid var(--border);border-radius:6px;padding:2px 4px;box-shadow:0 2px 8px rgba(0,0,0,.3);opacity:0;transition:opacity .15s;pointer-events:none;z-index:20}.stream-obj.selected .obj-action-bar{opacity:1;pointer-events:auto}.obj-action-bar button{background:0 0;border:none;color:var(--text-muted);cursor:pointer;font-size:1rem;padding:2px 4px;border-radius:3px}.obj-action-bar button:hover{color:var(--text);background:var(--bg-elev-2)}.obj-action-bar button.danger:hover{color:var(--removed)}@media (max-width:600px){.pages-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:.75rem}.page-toolbar{flex-wrap:wrap;gap:.5rem}.editor__toolbar{flex-wrap:wrap;padding:.5rem}.editor__toolbar-left,.editor__toolbar-right{flex:unset}}.loading-overlay{position:fixed;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.4);backdrop-filter:blur(2px)}.loading-spinner{width:48px;height:48px;border:4px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.toast-container{position:fixed;bottom:1.5rem;left:50%;transform:translateX(-50%);z-index:10000;display:flex;flex-direction:column;align-items:center;gap:.5rem;pointer-events:none}.toast{background:var(--bg-elev);border:1px solid var(--border);border-radius:8px;padding:.6rem 1.2rem;font-size:.85rem;color:var(--text);box-shadow:0 4px 16px rgba(0,0,0,.3);animation:.25s toast-in;pointer-events:auto}.toast.fade-out{animation:.3s forwards toast-out}@keyframes toast-in{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes toast-out{from{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-8px)}}#modal-download{z-index:5000}#modal-download .modal{max-width:360px;width:90%}.modal__body{padding:1rem 0}.modal__input{width:100%;padding:.5rem .75rem;border:1px solid var(--border);border-radius:6px;background:var(--bg);color:var(--text);font-family:var(--font-mono);font-size:.9rem}.modal__input:focus{outline:0;border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-dim)}.modal__footer{display:flex;justify-content:flex-end;gap:.5rem}.editor__page-label .unsaved-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--changed);margin-left:.4rem;vertical-align:middle}