:root{--bg:#e8eaee;--chrome:#fff;--border:#d4d7dd;--text:#1a1d23;--muted:#6b7280;--accent:#4f46e5;--accent-soft:#eef2ff;--danger:#b91c1c;--radius:8px;--shadow:0 1px 3px #0000001f, 0 4px 16px #00000014}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{color:var(--text);background:var(--bg);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:14px}button{font:inherit;color:inherit}.app{flex-direction:column;height:100%;display:flex}.toolbar{background:var(--chrome);border-bottom:1px solid var(--border);z-index:10;flex-wrap:wrap;align-items:center;gap:12px;padding:8px 12px;display:flex}.toolbar-group{align-items:center;gap:6px;display:flex}.file-info{min-width:0}.file-name{text-overflow:ellipsis;white-space:nowrap;max-width:220px;font-weight:600;overflow:hidden}.sep{background:var(--border);align-self:stretch;width:1px;margin:4px}.zoom-value{text-align:center;min-width:48px;color:var(--muted);font-variant-numeric:tabular-nums}.page-indicator{color:var(--muted);white-space:nowrap;margin-left:10px}.privacy-chip{color:#166534;white-space:nowrap;background:#dcfce7;border-radius:999px;align-items:center;gap:5px;padding:4px 10px;font-size:12px;font-weight:600;display:inline-flex}.btn{border-radius:var(--radius);cursor:pointer;white-space:nowrap;background:0 0;border:1px solid #0000;align-items:center;gap:6px;padding:6px 12px;font-size:13.5px;display:inline-flex}.btn:hover:not(:disabled){background:#f1f2f5}.btn:disabled{opacity:.4;cursor:default}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover:not(:disabled){background:#4338ca}.btn-danger{color:var(--danger);border-color:var(--border)}.btn-danger:hover:not(:disabled){background:#fef2f2}.btn-active{background:var(--accent-soft);color:var(--accent)}.btn-icon{padding:6px}.btn-quiet{color:var(--muted)}.btn-quiet:hover:not(:disabled){color:var(--danger);background:#fef2f2}.main{flex:1;min-height:0;display:flex}.viewer{flex:1;min-width:0;padding:24px;overflow:auto}.viewer>.pages{flex-direction:column;align-items:center;gap:24px;display:flex}.sidebar{background:var(--chrome);border-left:1px solid var(--border);flex-direction:column;flex-shrink:0;gap:20px;width:280px;padding:16px;display:flex;overflow-y:auto}.sidebar h3{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:0 0 10px;font-size:13px}.sidebar-section{flex-direction:column;gap:10px;display:flex}.sidebar-empty{color:var(--muted);text-align:center;flex-direction:column;align-items:center;gap:8px;padding:12px 4px;font-size:13px;display:flex}.hint{color:var(--muted);font-size:12px}.page-frame{box-shadow:var(--shadow);background:#fff;flex-shrink:0;position:relative}.page-canvas{display:block}.page-placeholder{background-color:#0000;background-image:linear-gradient(45deg,#f3f4f6 25%,#0000 25% 75%,#f3f4f6 75%),linear-gradient(45deg,#f3f4f6 25%,#0000 25% 75%,#f3f4f6 75%);background-position:0 0,12px 12px;background-repeat:repeat,repeat;background-size:24px 24px;background-attachment:scroll,scroll;background-origin:padding-box,padding-box;background-clip:border-box,border-box;width:100%;height:100%}.page-overlay{position:absolute;inset:0}.cursor-crosshair{cursor:crosshair}.cursor-copy{cursor:copy}.el-text{color:#111;-webkit-user-select:none;user-select:none;position:absolute}.el-text.selected{outline:1.5px dashed var(--accent);outline-offset:3px}.el-text.editing{outline:none}.el-text-line{white-space:pre;position:absolute;left:0;right:0}.el-text-edit{outline:1.5px dashed var(--accent);outline-offset:3px;resize:none;white-space:pre;background:0 0;border:none;margin:0;padding:0 12px;position:absolute;top:0;left:0;overflow:hidden}.el-text-edit::placeholder{color:#9ca3af}.el-stamp{cursor:move;position:absolute}.el-stamp.selected{outline:1.5px solid var(--accent);outline-offset:2px}.el-stamp img{pointer-events:none;display:block}.el-stamp-resize{background:var(--accent);cursor:nwse-resize;border:2px solid #fff;border-radius:50%;width:12px;height:12px;position:absolute;bottom:-6px;right:-6px;box-shadow:0 1px 3px #00000059}.ghost-stamp{opacity:.5;pointer-events:none;z-index:5;position:absolute}.stamp-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.stamp-item{border:1px solid var(--border);border-radius:var(--radius);align-items:center;gap:8px;padding:6px;display:flex}.stamp-item.active{border-color:var(--accent);background:var(--accent-soft)}.stamp-thumb{border:1px solid var(--border);cursor:pointer;background:repeating-conic-gradient(#f3f4f6 0% 25%,#fff 0% 50%) 0 0/12px 12px;border-radius:4px;justify-content:center;align-items:center;width:96px;height:44px;padding:4px;display:flex;overflow:hidden}.stamp-thumb img{max-width:100%;max-height:100%}.stamp-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:13px;overflow:hidden}.props-grid{grid-template-columns:auto 1fr;align-items:center;gap:8px 10px;font-size:13px;display:grid}.props-grid label{color:var(--muted)}select,input[type=number],input[type=text]{border:1px solid var(--border);border-radius:var(--radius);font:inherit;background:#fff;min-width:0;padding:6px 8px}input[type=color]{border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;background:#fff;width:34px;height:30px;padding:2px}input[type=range]{accent-color:var(--accent)}.dialog-backdrop{z-index:100;background:#11141a73;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.dialog{background:var(--chrome);border-radius:12px;flex-direction:column;gap:14px;max-width:calc(100vw - 40px);padding:20px;display:flex;box-shadow:0 8px 40px #00000040}.dialog-header{justify-content:space-between;align-items:center;display:flex}.dialog-header h2{margin:0;font-size:18px}.tabs{border-bottom:1px solid var(--border);gap:4px;display:flex}.tab{cursor:pointer;font:inherit;color:var(--muted);background:0 0;border:none;border-bottom:2px solid #0000;padding:8px 18px}.tab.active{color:var(--accent);border-bottom-color:var(--accent);font-weight:600}.draw-canvas{border:1px solid var(--border);border-radius:var(--radius);touch-action:none;background:repeating-conic-gradient(#f8fafc 0% 25%,#fff 0% 50%) 0 0/16px 16px}.controls-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.swatch{cursor:pointer;border:2px solid #0000;border-radius:50%;width:24px;height:24px;padding:0}.swatch.active{border-color:var(--accent);box-shadow:inset 0 0 0 2px #fff}.swatch:hover{transform:scale(1.1)}.text-input{flex:1;min-width:140px}.checkerboard{background:repeating-conic-gradient(#f3f4f6 0% 25%,#fff 0% 50%) 0 0/16px 16px}.type-preview{border:1px solid var(--border);border-radius:var(--radius);justify-content:center;align-items:center;min-height:140px;padding:10px;display:flex;overflow:hidden}.save-row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.welcome{justify-content:center;align-items:center;height:100%;padding:20px;display:flex;overflow:auto}.welcome-card{background:var(--chrome);border:2px dashed var(--border);text-align:center;border-radius:16px;flex-direction:column;align-items:center;gap:18px;width:100%;max-width:520px;padding:40px 48px;display:flex}.welcome-card.drag-over{border-color:var(--accent);background:var(--accent-soft)}.welcome-icon{color:var(--accent);gap:12px;display:flex}.welcome h1{margin:0;font-size:28px}.welcome-sub{color:var(--muted);margin:0}.dropzone{border:2px dashed var(--border);cursor:pointer;border-radius:12px;width:100%;padding:28px 20px;transition:border-color .15s}.dropzone:hover,.welcome-card.drag-over .dropzone{border-color:var(--accent)}.dropzone-title{margin:0;font-weight:600}.dropzone-sub{color:var(--muted);margin:4px 0 0;font-size:13px}.features{color:var(--muted);text-align:left;flex-direction:column;gap:10px;margin:0;padding:0;font-size:13px;list-style:none;display:flex}.features li{align-items:center;gap:10px;display:flex}.features li svg{color:var(--accent);flex-shrink:0}.toasts{z-index:200;flex-direction:column;gap:8px;display:flex;position:fixed;bottom:20px;left:50%;transform:translate(-50%)}.toast{color:#fff;border-radius:var(--radius);box-shadow:var(--shadow);cursor:pointer;background:#1a1d23;max-width:80vw;padding:10px 18px}.toast-error{background:var(--danger)}@media (width<=800px){.sidebar{z-index:20;position:fixed;top:49px;bottom:0;right:0;box-shadow:-4px 0 16px #0000001f}.btn-label{display:none}.btn{padding:8px}}
