@import"https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500&display=swap";:root{color-scheme:light;--bg: #ffffff;--fg: #000000;--muted: #f2f2f2;--border: #e5e5e5;--ease: cubic-bezier(.2, 0, .2, 1);--ls: .15em}*{box-sizing:border-box}body{margin:0;min-height:100vh;font-family:Inter,sans-serif;color:var(--fg);background:var(--bg)}button,input{font:inherit}h1{font-size:2rem;font-weight:300;text-transform:uppercase;line-height:1.15;letter-spacing:.15em}h2{font-size:1rem;font-weight:500;text-transform:uppercase;letter-spacing:.2em;white-space:nowrap}h3{font-size:1rem;font-weight:500;text-transform:uppercase;letter-spacing:.4em}h4,h5,h6{font-size:.8rem;font-weight:500;text-transform:uppercase;opacity:.6}p{font-size:.85rem;font-weight:400;line-height:1.7;opacity:.8;letter-spacing:.02em}h1,h2,h3,h4,h5,h6{margin:0}#app{display:grid;grid-template-columns:minmax(320px,420px) minmax(0,1fr);gap:1px;background:var(--border)}.control-shell,.preview-shell{min-height:100vh;border:none;border-radius:0;background:var(--bg);-webkit-backdrop-filter:none;backdrop-filter:none;padding:40px}.control-shell,.preview-shell{display:flex;flex-direction:column;gap:24px}.hero-card{padding:0 0 40px;border-radius:0;background:none;border:none;border-bottom:1px solid var(--border)}.eyebrow{font-size:.6rem;letter-spacing:.4em;text-transform:uppercase;color:var(--fg);opacity:.4;margin:0 0 16px}.hero-copy{margin:16px 0 0}.muted{font-size:.8rem;font-weight:400;letter-spacing:.05em;opacity:.5}.panel{padding:24px;border:1px solid var(--border);border-radius:0;background:var(--bg)}.panel-heading,.preview-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.panel-heading-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:8px 16px}.preview-header{padding-bottom:24px;border-bottom:1px solid var(--border)}.upload-field{display:flex;justify-content:center;align-items:center;width:100%;min-height:68px;margin-top:14px;padding:16px 32px;border:1px solid var(--border);border-radius:0;background:none;font-size:.7rem;text-transform:uppercase;letter-spacing:.3em;cursor:pointer;transition:border-color .4s var(--ease),background .4s var(--ease),color .4s var(--ease)}.upload-field:hover{border-color:var(--fg)}.sr-only-input{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.signature-pad-shell{position:relative;margin-top:14px;height:190px;border:1px solid var(--border);border-radius:0;background:var(--bg);overflow:hidden}.fullscreen-signature-pad-preview{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;pointer-events:none;z-index:1}.fullscreen-signature-pad-preview[hidden]{display:none}#signatureCanvas{width:100%;height:100%}.source-switch{display:grid;grid-template-columns:1fr 1fr 1fr;gap:1px;margin-top:14px;background:var(--border);border:1px solid var(--border);border-radius:0;padding:0}.source-switch button{background:var(--bg);border:none;border-radius:0;min-height:44px;font-size:.7rem;text-transform:uppercase;letter-spacing:.3em;color:var(--fg);opacity:.4;transition:opacity .4s var(--ease),background .4s var(--ease)}.source-switch button[data-active=true]{opacity:1;background:var(--muted)}.image-upload-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;margin-top:14px}.stamp-preview{display:block;max-width:100%;max-height:120px;margin-top:12px;padding:10px;border-radius:0;border:1px solid var(--border);background:var(--bg);object-fit:contain}.stamp-preview[hidden]{display:none}.source-section{margin-top:14px}.source-section[hidden]{display:none}.text-input{width:100%;min-height:80px;padding:12px;border:1px solid var(--border);border-radius:0;background:var(--bg);font-family:inherit;font-size:.85rem;line-height:1.6;color:var(--fg);resize:vertical}.text-input:focus{outline:none;border-color:var(--fg)}.text-input::placeholder{color:var(--fg);opacity:.3}.text-font-select{width:100%;padding:8px;border:1px solid var(--border);border-radius:0;background:var(--bg);font:inherit;font-size:.8rem;color:var(--fg);cursor:pointer}.text-font-select:focus{outline:none;border-color:var(--fg)}.toolbar-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:16px}.toolbar-grid.compact{grid-template-columns:1fr 1fr}.toolbar-grid label{display:flex;flex-direction:column;gap:8px;font-size:.8rem;font-weight:500;text-transform:uppercase;letter-spacing:.2em;opacity:.6}input[type=color],input[type=range]{border-radius:0}button{background:none;border:1px solid var(--fg);padding:16px 32px;font-size:.7rem;text-transform:uppercase;letter-spacing:.3em;cursor:pointer;transition:background .4s var(--ease),color .4s var(--ease);border-radius:0;min-height:44px}button:hover:not(:disabled){background:var(--fg);color:var(--bg);transform:none}button:disabled{cursor:not-allowed;opacity:.3}.primary-button{background:var(--fg);color:var(--bg);border:1px solid var(--fg)}.primary-button:hover:not(:disabled){background:var(--bg);color:var(--fg)}.accent-button{background:var(--fg);color:var(--bg);border:1px solid var(--fg)}.accent-button:hover:not(:disabled){background:var(--bg);color:var(--fg)}.accent-button[data-active=true]{background:var(--bg);color:var(--fg)}.secondary-button{border:1px solid var(--border);opacity:.6;background:none}.secondary-button:hover:not(:disabled){opacity:1;background:var(--fg);color:var(--bg);border-color:var(--fg)}.ghost-button{border:none;color:#888;background:none;padding:16px 0}.ghost-button:hover:not(:disabled){background:none;color:#888;text-decoration:underline}.ghost-button.small{min-height:36px}.status-message{margin:14px 0 0;padding:16px 0;border-radius:0;background:none;border-bottom:1px solid var(--border);font-size:.8rem;letter-spacing:.05em;opacity:.8}.status-message[data-alert=true]{border-color:var(--fg);color:var(--fg);background:none;opacity:1}.placement-list{list-style:none;margin:16px 0 0;padding:0;display:flex;flex-direction:column;gap:0}.placement-item{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:16px 0;border-bottom:1px solid var(--border);border-radius:0;background:none}.placement-item div{display:flex;flex-direction:column;gap:4px}.placement-item span{opacity:.6;font-size:.8rem;letter-spacing:.05em}.empty-item{justify-content:center;opacity:.5}.pdf-stage{position:relative;flex:1;min-height:640px;border:1px solid var(--border);border-radius:0;background:var(--muted);overflow:auto}.pdf-stage[data-loading=true]:after{content:"正在生成 PDF 预览…";position:absolute;inset:24px;display:grid;place-items:center;border-radius:0;background:var(--bg);color:var(--fg);font-weight:500;font-size:.8rem;letter-spacing:.3em;text-transform:uppercase;opacity:.6}.pdf-stage.loaded{border-color:var(--fg)}.pdf-stage.empty{display:grid;place-items:center}.empty-state{opacity:.5;text-align:center}.pdf-surface{position:relative;display:inline-block;margin:24px}#pdfCanvas{display:block;border-radius:0;border:none;background:var(--bg)}.signature-overlay{position:absolute;inset:0;pointer-events:none}.signature-preview{position:absolute;opacity:.86;pointer-events:auto;cursor:grab;touch-action:none;box-sizing:border-box}.signature-preview:hover{outline:1px solid rgba(0,0,0,.35);box-shadow:0 0 0 1px #fff9}.signature-preview.selected{outline:2px solid var(--fg);box-shadow:0 0 0 1px #fffc}.signature-preview.dragging{cursor:grabbing;opacity:.7}.signature-preview .overlay-preview{display:block;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;user-select:none}.signature-preview.image-preview{opacity:.94}.resize-handle{position:absolute;width:10px;height:10px;background:var(--fg);border:1px solid var(--bg);box-sizing:border-box;pointer-events:auto;touch-action:none;z-index:1}.resize-handle-nw{top:-5px;left:-5px;cursor:nwse-resize}.resize-handle-ne{top:-5px;right:-5px;cursor:nesw-resize}.resize-handle-sw{bottom:-5px;left:-5px;cursor:nesw-resize}.resize-handle-se{bottom:-5px;right:-5px;cursor:nwse-resize}.rotate-handle{position:absolute;top:-12px;right:-12px;left:auto;transform:none;width:24px;height:24px;min-height:24px;margin:0;padding:0;border:1px solid var(--bg);border-radius:50%;background:var(--fg);color:var(--bg);font-size:14px;letter-spacing:0;text-transform:none;line-height:1;display:flex;align-items:center;justify-content:center;cursor:pointer;pointer-events:auto;opacity:1;touch-action:manipulation;z-index:2}@media(max-width:1080px){#app{grid-template-columns:1fr;background:var(--bg)}.control-shell,.preview-shell{min-height:auto}}.fullscreen-signature-overlay{position:fixed;inset:0;z-index:1100;display:flex;align-items:center;justify-content:center;padding:24px;background:#00000080;opacity:0;pointer-events:none;transition:opacity .22s var(--ease)}.fullscreen-signature-overlay[data-visible=true]{opacity:1;pointer-events:auto}.fullscreen-signature-overlay[hidden]{display:none}.fullscreen-signature-modal{display:flex;flex-direction:column;min-height:0;width:min(90vw,1200px);max-width:90vw;height:min(80vh,900px);max-height:80vh;border:1px solid var(--border);background:var(--bg);box-shadow:0 24px 64px #0003;opacity:0;transform:translateY(8px);transition:opacity .22s var(--ease),transform .22s var(--ease)}.fullscreen-signature-overlay[data-visible=true] .fullscreen-signature-modal{opacity:1;transform:translateY(0)}.fullscreen-signature-header{display:flex;flex-wrap:wrap;align-items:center;gap:12px 20px;padding:16px 20px;border-bottom:1px solid var(--border)}.fullscreen-signature-header h3{margin-right:auto}.fullscreen-signature-controls{display:flex;flex-wrap:wrap;align-items:center;gap:12px 20px}.fullscreen-signature-controls label{display:flex;flex-direction:column;gap:6px;font-size:.65rem;font-weight:500;text-transform:uppercase;letter-spacing:var(--ls);opacity:.6}.fullscreen-signature-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.fullscreen-signature-actions button{min-height:40px;padding:12px 20px}.fullscreen-signature-body{flex:1;min-height:0;overflow:hidden;position:relative}#fullscreenSignatureCanvas{display:block;width:100%;height:100%;touch-action:none;background:var(--bg)}body.fullscreen-signature-open{overflow:hidden}@media(max-width:720px){.fullscreen-signature-overlay{padding:0}.fullscreen-signature-modal{width:100vw;max-width:none;height:100vh;max-height:none;border:none;box-shadow:none}.fullscreen-signature-header{padding:10px 12px;gap:8px 10px}.fullscreen-signature-header h3{font-size:.75rem;letter-spacing:.25em}.fullscreen-signature-controls label{font-size:.55rem;gap:4px}.fullscreen-signature-actions button{min-height:36px;padding:8px 12px;font-size:.6rem;letter-spacing:.2em}}@media(max-width:720px){.control-shell,.preview-shell{padding:24px}.toolbar-grid,.toolbar-grid.compact,.image-upload-row{grid-template-columns:1fr}.panel-heading,.preview-header,.placement-item{flex-direction:column;align-items:stretch}.pdf-stage{min-height:420px}.pdf-surface{margin:14px}}
