@import "https://fonts.googleapis.com/css2?family=Cormorant+Garamond:wght@400;500;600&family=DM+Mono:wght@400;500&family=Instrument+Sans:wght@400;500&display=swap";:root{--bg:#f1f4f8;--surface:#fff;--surface-2:#edf0f5;--border:#dde2ec;--border-hi:#c4cde0;--gold:#1a3fff;--gold-hi:#0a2be0;--gold-dim:#1a3fff14;--gold-glow:#1a3fff0d;--text:#0d1530;--text-2:#4a5880;--text-3:#8a94b8;--danger:#dc3545}[data-theme=dark]{--bg:#08090f;--surface:#0e1018;--surface-2:#141720;--border:#252d48;--border-hi:#333d60;--gold:#6080ff;--gold-hi:#7d96ff;--gold-dim:#6080ff26;--gold-glow:#6080ff14;--text:#eceef8;--text-2:#9aaad4;--text-3:#7080b8;--danger:#f06060}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;font-family:Instrument Sans,sans-serif;font-size:13px;line-height:1.5}.app{height:100vh;display:flex;overflow:hidden}.sidebar{background:var(--surface);border-right:1px solid var(--border);flex-direction:column;width:272px;min-width:272px;display:flex;overflow:hidden}.brand{border-bottom:1px solid var(--border);align-items:center;gap:13px;padding:22px 20px;display:flex}.brand-mark{flex-shrink:0;align-items:center;display:flex}.brand-name{letter-spacing:-.01em;color:var(--text);font-family:PT Mono,monospace;font-size:18px;font-weight:400;line-height:1.1}.brand-sub{letter-spacing:.18em;text-transform:uppercase;color:var(--text-3);margin-top:2px;font-family:DM Mono,monospace;font-size:8.5px}.sidebar-body{scrollbar-width:thin;scrollbar-color:var(--border-hi) transparent;flex:1;padding:18px 16px;overflow-y:auto}.section-header{justify-content:space-between;align-items:center;margin-bottom:14px;display:flex}.section-label{letter-spacing:.2em;text-transform:uppercase;color:var(--text-3);font-family:DM Mono,monospace;font-size:9px}.btn-add{border:1px solid var(--border-hi);width:22px;height:22px;color:var(--text-2);cursor:pointer;background:0 0;border-radius:5px;justify-content:center;align-items:center;transition:all .15s;display:flex}.btn-add:hover{border-color:var(--gold);color:var(--gold)}.empty-stamps{text-align:center;color:var(--text-3);flex-direction:column;align-items:center;gap:10px;padding:32px 12px;font-size:12px;display:flex}.empty-icon{opacity:.4}.btn-upload-stamp{border:1px solid var(--border-hi);color:var(--text-2);cursor:pointer;background:0 0;border-radius:5px;margin-top:4px;padding:7px 18px;font-family:inherit;font-size:12px;transition:all .15s}.btn-upload-stamp:hover{border-color:var(--gold);color:var(--gold)}.stamp-list{flex-direction:column;gap:6px;display:flex}.stamp-item{border:1px solid var(--border);background:var(--surface);cursor:pointer;border-radius:7px;align-items:center;gap:10px;padding:9px 10px;transition:border-color .15s,background .15s;display:flex;position:relative}.stamp-item:hover{border-color:var(--border-hi);background:var(--surface-2)}.stamp-item.active{border-color:var(--gold);background:var(--gold-dim)}.stamp-thumb{border:1px solid var(--border);background:#fff;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;width:44px;height:44px;display:flex;overflow:hidden}.stamp-thumb img{object-fit:contain;max-width:100%;max-height:100%}.stamp-label{color:var(--text);white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:12px;overflow:hidden}.stamp-del{width:20px;height:20px;color:var(--text-3);cursor:pointer;opacity:0;background:0 0;border:none;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;transition:opacity .15s,background .15s;display:flex}.stamp-item:hover .stamp-del{opacity:1}.stamp-del:hover{background:var(--danger);color:#fff}.btn-add-more{border:1px dashed var(--border-hi);color:var(--text-3);letter-spacing:.05em;cursor:pointer;background:0 0;border-radius:6px;width:100%;margin-top:2px;padding:8px;font-family:DM Mono,monospace;font-size:11px;transition:all .15s}.btn-add-more:hover{border-color:var(--gold);color:var(--gold)}.sidebar-footer{border-top:1px solid var(--border);background:var(--surface);flex-shrink:0;align-items:center;min-height:48px;padding:12px 16px;display:flex}.status-bar{color:var(--text-3);align-items:flex-start;gap:8px;font-size:11px;line-height:1.4;display:flex}.status-bar.active{color:var(--text-2)}.status-bar.active strong{color:var(--text);font-weight:500}.pulse{background:var(--gold);border-radius:50%;flex-shrink:0;width:7px;height:7px;margin-top:3px;animation:2s infinite pulse}@keyframes pulse{0%{box-shadow:0 0 #1a3fff80}70%{box-shadow:0 0 0 6px #1a3fff00}to{box-shadow:0 0 #1a3fff00}}[data-theme=dark] .pulse{animation:2s infinite pulse-dark}@keyframes pulse-dark{0%{box-shadow:0 0 #6080ff99}70%{box-shadow:0 0 0 6px #6080ff00}to{box-shadow:0 0 #6080ff00}}.dot{background:var(--border-hi);border-radius:50%;flex-shrink:0;width:7px;height:7px;margin-top:3px}.main{flex-direction:column;flex:1;min-width:0;display:flex;overflow:hidden}.topbar{border-bottom:1px solid var(--border);background:var(--surface);flex-shrink:0;justify-content:space-between;align-items:center;gap:16px;height:58px;padding:0 24px;display:flex}.topbar-left{align-items:center;gap:10px;min-width:0;display:flex}.file-chip{background:var(--surface-2);border:1px solid var(--border);color:var(--text-2);white-space:nowrap;text-overflow:ellipsis;border-radius:5px;align-items:center;gap:6px;max-width:300px;padding:4px 10px;font-family:DM Mono,monospace;font-size:11px;display:flex;overflow:hidden}.placed-count{color:var(--gold);letter-spacing:.05em;white-space:nowrap;font-family:DM Mono,monospace;font-size:10px}.topbar-right{flex-shrink:0;align-items:center;gap:10px;display:flex}.btn-theme{border:1px solid var(--border-hi);width:32px;height:32px;color:var(--text-2);cursor:pointer;background:0 0;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;transition:all .15s;display:flex}.btn-theme:hover{border-color:var(--gold);color:var(--gold)}.btn-secondary{border:1px solid var(--border-hi);color:var(--text-2);cursor:pointer;white-space:nowrap;background:0 0;border-radius:6px;padding:7px 16px;font-family:inherit;font-size:12.5px;transition:all .15s}.btn-secondary:hover{border-color:var(--text-2);color:var(--text)}.btn-download{background:var(--gold);border:1px solid var(--gold);color:#fff;cursor:pointer;white-space:nowrap;border-radius:6px;align-items:center;gap:7px;padding:7px 18px;font-family:inherit;font-size:12.5px;font-weight:500;transition:background .15s,border-color .15s;display:flex}.btn-download:hover{background:var(--gold-hi);border-color:var(--gold-hi)}.doc-area{background:var(--bg);background-image:radial-gradient(circle, var(--border) 1px, transparent 1px);background-size:22px 22px;flex:1;justify-content:center;align-items:flex-start;padding:32px 24px;display:flex;overflow:auto}.drop-zone{border:1.5px dashed var(--border-hi);cursor:pointer;text-align:center;background:var(--surface);border-radius:14px;flex-direction:column;justify-content:center;align-items:center;gap:14px;margin:auto;padding:72px 80px;transition:border-color .2s,background .2s;display:flex}.drop-zone:hover,.drop-zone.over{border-color:var(--gold);background:var(--gold-glow)}.drop-graphic{color:var(--text-3)}.drop-title{color:var(--text-2);letter-spacing:0;font-family:Instrument Sans,sans-serif;font-size:15px;font-weight:500}.drop-hint{color:var(--text-3);letter-spacing:.02em;font-family:DM Mono,monospace;font-size:11.5px}.canvas-wrapper{flex-direction:column;align-items:flex-start}.page-label{letter-spacing:.2em;text-transform:uppercase;color:var(--text-3);margin-bottom:10px;font-family:DM Mono,monospace;font-size:9px}.canvas-frame{box-shadow:0 2px 8px #00000014, 0 8px 32px #0000001a, 0 0 0 1px var(--border);border-radius:2px;position:relative}[data-theme=dark] .canvas-frame{box-shadow:0 2px 8px #0006, 0 8px 40px #00000080, 0 0 0 1px var(--border)}canvas{display:block}.overlay{position:absolute;top:0;left:0}.overlay.placing{cursor:crosshair}.placed{cursor:move;position:absolute}.placed:after{content:"";pointer-events:none;border:1.5px solid #0000;border-radius:3px;transition:border-color .1s;position:absolute;inset:-2px}.placed:hover:after{border-color:var(--gold)}.placed img{object-fit:contain;pointer-events:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;display:block}.placed-remove{background:var(--danger);cursor:pointer;z-index:20;border:none;border-radius:50%;justify-content:center;align-items:center;width:18px;height:18px;display:none;position:absolute;top:-9px;right:-9px}.placed:hover .placed-remove{display:flex}.placed-resize{background:var(--gold);cursor:se-resize;z-index:20;border-radius:2px;width:11px;height:11px;display:none;position:absolute;bottom:-5px;right:-5px}.placed:hover .placed-resize{display:block}.sidebar-tabs{border-bottom:1px solid var(--border);flex-shrink:0;display:flex}.s-tab{color:var(--text-3);cursor:pointer;letter-spacing:.01em;background:0 0;border:none;border-bottom:2px solid #0000;flex:1;margin-bottom:-1px;padding:11px 8px;font-family:inherit;font-size:11.5px;transition:color .15s}.s-tab:hover{color:var(--text-2)}.s-tab.active{color:var(--gold);border-bottom-color:var(--gold)}.create-panel{flex-direction:column;gap:14px;display:flex}.mode-toggle{gap:6px;display:flex}.mode-btn{background:var(--surface-2);border:1px solid var(--border);color:var(--text-2);cursor:pointer;border-radius:6px;flex:1;justify-content:center;align-items:center;gap:6px;padding:8px;font-family:inherit;font-size:12px;transition:all .15s;display:flex}.mode-btn:hover{border-color:var(--border-hi);color:var(--text)}.mode-btn.active{border-color:var(--gold);color:var(--gold);background:var(--gold-dim)}.sig-canvas-wrap{border:1px solid var(--border-hi);background:#fff;border-radius:8px;position:relative;overflow:hidden}.sig-canvas{-webkit-user-select:none;user-select:none;width:100%;height:auto;display:block}.sig-canvas.drawable{cursor:crosshair}.sig-hint{letter-spacing:.1em;color:#bbb;pointer-events:none;justify-content:center;align-items:center;font-family:DM Mono,monospace;font-size:10px;display:flex;position:absolute;inset:0}.draw-tools{justify-content:space-between;align-items:center;display:flex}.pen-sizes{align-items:center;gap:8px;display:flex}.pen-size-btn{background:var(--surface-2);border:1px solid var(--border);cursor:pointer;width:28px;height:28px;color:var(--text-2);border-radius:6px;justify-content:center;align-items:center;transition:all .15s;display:flex}.pen-size-btn:hover{border-color:var(--border-hi)}.pen-size-btn.active{border-color:var(--gold);color:var(--gold);background:var(--gold-dim)}.btn-clear{border:1px solid var(--border-hi);color:var(--text-3);letter-spacing:.05em;cursor:pointer;background:0 0;border-radius:5px;padding:5px 12px;font-family:DM Mono,monospace;font-size:11px;transition:all .15s}.btn-clear:hover{color:var(--text-2);border-color:var(--text-2)}.font-picker{flex-direction:column;gap:8px;display:flex}.font-picker-top{align-items:center;gap:6px;display:flex}.font-picker-top .font-search-row{flex:1}.btn-toggle-add-font{background:var(--surface);border:1px solid var(--border-hi);width:32px;height:32px;color:var(--text-3);cursor:pointer;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;transition:all .15s;display:flex}.btn-toggle-add-font:hover{border-color:var(--gold);color:var(--gold)}.btn-toggle-add-font.active{border-color:var(--gold);color:var(--gold);background:var(--gold-dim)}.add-font-panel{background:var(--surface-2);border:1px solid var(--border);border-radius:8px;flex-direction:column;gap:7px;padding:10px;display:flex}.sig-input{background:var(--surface);border:1px solid var(--border-hi);width:100%;color:var(--text);border-radius:6px;outline:none;padding:9px 12px;font-family:inherit;font-size:14px;transition:border-color .15s}.sig-input::placeholder{color:var(--text-3)}.sig-input:focus{border-color:var(--gold)}.font-search-row{background:var(--surface);border:1px solid var(--border-hi);color:var(--text-3);border-radius:6px;align-items:center;gap:7px;padding:7px 10px;display:flex}.font-search{color:var(--text);background:0 0;border:none;outline:none;flex:1;font-family:inherit;font-size:12px}.font-search::placeholder{color:var(--text-3)}.font-search-clear{color:var(--text-3);cursor:pointer;background:0 0;border:none;padding:0;font-size:15px;line-height:1;transition:color .1s}.font-search-clear:hover{color:var(--text-2)}.cat-chips{scrollbar-width:none;flex-wrap:nowrap;gap:4px;padding-bottom:1px;display:flex;overflow-x:auto}.cat-chips::-webkit-scrollbar{display:none}.cat-chip{border:1px solid var(--border);color:var(--text-3);cursor:pointer;white-space:nowrap;background:0 0;border-radius:20px;padding:3px 9px;font-family:inherit;font-size:10.5px;transition:all .15s}.cat-chip:hover{border-color:var(--border-hi);color:var(--text-2)}.cat-chip.active{border-color:var(--gold);color:var(--gold);background:var(--gold-dim)}.font-list{scrollbar-width:thin;scrollbar-color:var(--border-hi) transparent;flex-direction:column;gap:3px;max-height:260px;display:flex;overflow-y:auto}.font-item{background:var(--surface);border:1px solid var(--border);cursor:pointer;text-align:left;border-radius:6px;flex-direction:row;align-items:center;gap:8px;width:100%;padding:6px 10px;transition:border-color .12s,background .12s;display:flex}.font-item:hover{border-color:var(--border-hi);background:var(--surface-2)}.font-item.active{border-color:var(--gold);background:var(--gold-dim)}.fi-preview{color:#1a1a1a;white-space:nowrap;text-overflow:ellipsis;background:#fff;border-radius:3px;flex:1;min-width:0;padding:1px 4px;font-size:20px;line-height:1.2;transition:opacity .2s;display:block;overflow:hidden}.fi-name{letter-spacing:.06em;color:var(--text-3);white-space:nowrap;text-overflow:ellipsis;flex-shrink:0;max-width:80px;font-family:DM Mono,monospace;font-size:9px;overflow:hidden}.custom-font-list{border-bottom:1px solid var(--border);flex-direction:column;gap:3px;padding-bottom:6px;display:flex}.custom-font-label{letter-spacing:.18em;text-transform:uppercase;color:var(--gold);margin-bottom:2px;font-family:DM Mono,monospace;font-size:8.5px}.btn-upload-font{background:var(--surface-2);border:1px dashed var(--border-hi);color:var(--text-2);cursor:pointer;border-radius:6px;align-items:center;gap:7px;width:100%;padding:8px 12px;font-family:inherit;font-size:12px;transition:all .15s;display:flex}.btn-upload-font:hover{border-color:var(--gold);color:var(--gold)}.font-url-row{gap:6px;display:flex}.font-url-input{background:var(--surface);border:1px solid var(--border-hi);color:var(--text);border-radius:6px;outline:none;flex:1;min-width:0;padding:7px 10px;font-family:inherit;font-size:11.5px;transition:border-color .15s}.font-url-input::placeholder{color:var(--text-3);font-size:11px}.font-url-input:focus{border-color:var(--gold)}.btn-add-url{background:var(--surface-2);border:1px solid var(--border-hi);color:var(--text-2);cursor:pointer;white-space:nowrap;border-radius:6px;flex-shrink:0;padding:7px 12px;font-family:inherit;font-size:12px;transition:all .15s}.btn-add-url:hover{border-color:var(--gold);color:var(--gold)}.font-url-error{color:var(--danger);font-family:DM Mono,monospace;font-size:11px}.font-selected-badge{background:var(--gold-dim);border:1px solid var(--gold);color:var(--text-2);border-radius:6px;align-items:center;gap:6px;padding:5px 10px;font-size:11.5px;display:flex}.font-selected-badge strong{color:var(--gold);font-weight:500}.create-footer{flex-direction:column;gap:10px;width:100%;display:flex}.cf-selected{background:var(--surface-2);border:1px solid var(--border-hi);border-radius:8px;align-items:center;gap:10px;padding:8px 10px;display:flex;overflow:hidden}.cf-preview{color:#1a1a1a;white-space:nowrap;text-overflow:ellipsis;background:#fff;border-radius:4px;flex:1;min-width:0;padding:2px 8px;font-size:24px;line-height:1.4;overflow:hidden}.cf-meta{text-align:right;flex-direction:column;flex-shrink:0;gap:2px;max-width:90px;display:flex}.cf-font-name{letter-spacing:.1em;color:var(--gold);white-space:nowrap;text-overflow:ellipsis;font-family:DM Mono,monospace;font-size:9px;overflow:hidden}.cf-hint{color:var(--text-3);font-size:9.5px;line-height:1.3}.cf-draw-hint{color:var(--text-3);text-align:center;letter-spacing:.04em;font-family:DM Mono,monospace;font-size:11.5px}.btn-save-sig{background:var(--gold);color:#fff;cursor:pointer;border:none;border-radius:6px;width:100%;margin-top:auto;padding:10px;font-family:inherit;font-size:13px;font-weight:500;transition:background .15s}.btn-save-sig:hover:not(:disabled){background:var(--gold-hi)}.btn-save-sig:disabled{opacity:.35;cursor:not-allowed}
