:root{--primary:#2563eb;--primary-hover:#1d4ed8;--primary-light:#eff6ff;--primary-border:#bfdbfe;--success:#16a34a;--success-light:#f0fdf4;--success-border:#bbf7d0;--warning:#ea580c;--warning-light:#fff7ed;--danger:#dc2626;--danger-light:#fef2f2;--danger-border:#fecaca;--bg-app:#f8fafc;--bg-surface:#fff;--bg-surface-alt:#f1f5f9;--bg-glass:#ffffffd9;--text-main:#0f172a;--text-muted:#64748b;--text-subtle:#94a3b8;--border-subtle:#e2e8f0;--border-strong:#cbd5e1;--shadow-sm:0 1px 2px 0 #0000000d;--shadow-md:0 4px 6px -1px #00000014, 0 2px 4px -2px #0000000a;--shadow-lg:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000000d;--shadow-xl:0 20px 25px -5px #0000001f, 0 8px 10px -6px #0000000f;--radius-sm:6px;--radius-md:10px;--radius-lg:14px;--radius-xl:20px;--radius-full:9999px;--font-sans:"Plus Jakarta Sans", "Noto Sans TC", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace}*{box-sizing:border-box;margin:0;padding:0}html,body{width:100%;min-height:100vh;font-family:var(--font-sans);background-color:var(--bg-app);color:var(--text-main);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.5}#root{flex-direction:column;min-height:100vh;display:flex}button{cursor:pointer;background:0 0;border:none;font-family:inherit;transition:all .15s ease-in-out}input,select,textarea{color:inherit;font-family:inherit}code{font-family:var(--font-mono)}.app-root{background-color:var(--bg-app);flex-direction:column;min-height:100vh;display:flex}.app-main-viewport{flex-direction:column;flex:1;display:flex}.app-header{z-index:100;background:var(--bg-glass);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--border-subtle);padding:10px 24px;position:sticky;top:0}.header-container{justify-content:space-between;align-items:center;gap:20px;max-width:1560px;margin:0 auto;display:flex}.brand-group{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:12px;display:flex}.brand-logo-icon{border-radius:var(--radius-md);background:linear-gradient(135deg,#2563eb,#3b82f6);justify-content:center;align-items:center;width:42px;height:42px;display:flex;box-shadow:0 4px 10px #2563eb4d}.brand-title-row{align-items:center;gap:8px;display:flex}.brand-name{letter-spacing:-.5px;color:var(--text-main);background:linear-gradient(135deg,#0f172a,#2563eb);-webkit-text-fill-color:transparent;-webkit-background-clip:text;font-size:20px;font-weight:800}.brand-tag{border-radius:var(--radius-sm);color:#475569;background:#e2e8f0;padding:1px 6px;font-size:11px;font-weight:700}.zero-cost-badge{border-radius:var(--radius-full);color:#15803d;background:linear-gradient(135deg,#f0fdf4,#dcfce7);border:1px solid #bbf7d0;align-items:center;gap:4px;padding:2px 8px;font-size:11px;font-weight:700;display:inline-flex}.brand-desc{color:var(--text-muted);font-size:12px}.nav-tabs{background:var(--bg-surface-alt);border-radius:var(--radius-lg);border:1px solid var(--border-subtle);align-items:center;gap:4px;padding:4px;display:flex}.nav-tab{color:var(--text-muted);border-radius:var(--radius-md);align-items:center;gap:8px;padding:8px 18px;font-size:13.5px;font-weight:600;display:flex;position:relative}.nav-tab:hover{color:var(--text-main);background:#fff9}.nav-tab.active{color:var(--primary);background:var(--bg-surface);box-shadow:var(--shadow-sm)}.nav-dot-badge{background-color:var(--primary);border-radius:50%;width:7px;height:7px;animation:1.8s infinite pulse}@keyframes pulse{0%{opacity:.8;transform:scale(.95)}50%{opacity:1;transform:scale(1.3)}to{opacity:.8;transform:scale(.95)}}.header-right-info{align-items:center;gap:12px;display:flex}.active-task-pill{border-radius:var(--radius-full);background:var(--bg-surface);border:1px solid var(--border-subtle);align-items:center;gap:8px;max-width:220px;padding:6px 14px;display:flex}.status-indicator-live{background:#22c55e;border-radius:50%;width:8px;height:8px;box-shadow:0 0 8px #22c55e99}.active-task-text{white-space:nowrap;text-overflow:ellipsis;color:var(--text-main);font-size:12.5px;font-weight:600;overflow:hidden}.shield-badge{color:#0369a1;border-radius:var(--radius-full);background:#f0f9ff;border:1px solid #bae6fd;align-items:center;gap:6px;padding:5px 12px;font-size:12px;font-weight:600;display:flex}.editor-layout{flex-direction:column;flex:1;display:flex}.editor-top-bar{background:var(--bg-surface);border-bottom:1px solid var(--border-subtle);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding:12px 24px;display:flex}.top-bar-left{flex:1;align-items:center;gap:14px;min-width:280px;display:flex}.document-title-input{color:var(--text-main);border-radius:var(--radius-sm);background:0 0;border:1px solid #0000;width:320px;max-width:100%;padding:6px 10px;font-size:16px;font-weight:700}.document-title-input:hover,.document-title-input:focus{border-color:var(--border-strong);background:var(--bg-surface-alt);outline:none}.file-sha-badge{font-size:11.5px;font-family:var(--font-mono);color:#64748b;border-radius:var(--radius-sm);background:#f1f5f9;border:1px solid #e2e8f0;padding:4px 8px}.top-bar-right{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.sample-btn{border-radius:var(--radius-md);color:#166534;background:linear-gradient(135deg,#f0fdf4,#dcfce7);border:1px solid #86efac;align-items:center;gap:6px;padding:8px 14px;font-size:13px;font-weight:600;display:inline-flex}.sample-btn:hover{background:#bbf7d0}.outline-btn{border-radius:var(--radius-md);background:var(--bg-surface);color:var(--text-main);border:1px solid var(--border-strong);align-items:center;gap:6px;padding:8px 13px;font-size:13px;font-weight:600;display:inline-flex}.outline-btn:hover{background:var(--bg-surface-alt);border-color:#94a3b8}.template-dropdown-wrapper{display:inline-block;position:relative}.template-select{opacity:0;cursor:pointer;width:100%;height:100%;position:absolute;top:0;left:0}.primary-action-btn{border-radius:var(--radius-md);color:#fff;background:linear-gradient(135deg,#2563eb,#1d4ed8);align-items:center;gap:8px;padding:8px 18px;font-size:13.5px;font-weight:700;display:inline-flex;box-shadow:0 4px 12px #2563eb40}.primary-action-btn:hover{background:linear-gradient(135deg,#1d4ed8,#1e40af);transform:translateY(-1px)}.editor-main{flex:1;height:calc(100vh - 130px);display:flex;overflow:hidden}.editor-sidebar{background:var(--bg-surface);border-right:1px solid var(--border-subtle);flex-direction:column;gap:20px;width:340px;min-width:340px;padding:16px;display:flex;overflow-y:auto}.sidebar-section{flex-direction:column;gap:10px;display:flex}.section-header{justify-content:space-between;align-items:center;display:flex}.section-title{color:var(--text-main);font-size:14px;font-weight:700}.small-icon-btn{border-radius:var(--radius-sm);background:var(--bg-surface-alt);width:28px;height:28px;color:var(--primary);border:1px solid var(--border-subtle);justify-content:center;align-items:center;display:flex}.small-icon-btn:hover{background:var(--primary-light);border-color:var(--primary-border)}.section-tip{color:var(--text-muted);font-size:11.5px;line-height:1.4}.roles-list{flex-direction:column;gap:8px;display:flex}.role-item-card{background:var(--bg-app);border:1px solid var(--border-subtle);border-radius:var(--radius-md);cursor:pointer;align-items:stretch;transition:all .15s;display:flex;overflow:hidden}.role-item-card:hover{border-color:var(--border-strong);background:#fff}.role-item-card.active-role{border-color:var(--primary);background:#fff;box-shadow:0 0 0 2px #2563eb26}.role-color-bar{width:6px;min-height:100%}.role-inputs-col{flex-direction:column;flex:1;gap:4px;padding:8px 10px;display:flex}.role-name-row{justify-content:space-between;align-items:center;gap:6px;display:flex}.role-title-input{color:var(--text-main);background:0 0;border:none;width:100%;font-size:13.5px;font-weight:700}.role-title-input:focus{outline:none}.field-count-pill{border-radius:var(--radius-sm);color:#475569;white-space:nowrap;background:#e2e8f0;padding:1px 6px;font-size:11px;font-weight:600}.role-person-input{color:var(--text-muted);border-radius:var(--radius-sm);background:0 0;border:1px solid #0000;padding:2px 4px;font-size:12px}.role-person-input:hover,.role-person-input:focus{border-color:var(--border-subtle);background:var(--bg-surface-alt);outline:none}.role-del-btn{color:#94a3b8;justify-content:center;align-items:center;padding:0 10px;display:flex}.role-del-btn:hover{color:var(--danger);background:#fee2e2}.options-group{flex-direction:column;gap:8px;display:flex}.checkbox-label{border-radius:var(--radius-md);border:1px solid var(--border-subtle);background:var(--bg-surface-alt);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:flex-start;gap:10px;padding:10px;display:flex}.checkbox-label:hover{background:#e2e8f0}.checkbox-label input[type=checkbox]{accent-color:var(--primary);width:16px;height:16px;margin-top:3px}.checkbox-text{flex-direction:column;gap:2px;display:flex}.checkbox-title{color:var(--text-main);font-size:13px;font-weight:700}.checkbox-desc{color:var(--text-muted);font-size:11px;line-height:1.35}.summary-box{border-radius:var(--radius-md);border:1px solid var(--border-subtle);background:#f8fafc;margin-top:auto;padding:12px}.summary-row{color:var(--text-muted);justify-content:space-between;padding:3px 0;font-size:12.5px;display:flex}.summary-row strong{color:var(--text-main)}.editor-canvas-pane{background:#cbd5e1;flex-direction:column;flex:1;display:flex;overflow:hidden}.canvas-pagination-bar{background:var(--bg-surface);border-bottom:1px solid var(--border-subtle);justify-content:center;align-items:center;gap:16px;padding:8px 24px;display:flex;position:relative}.page-nav-btn{border-radius:var(--radius-sm);background:var(--bg-surface-alt);border:1px solid var(--border-subtle);color:var(--text-main);align-items:center;gap:4px;padding:6px 12px;font-size:12.5px;font-weight:600;display:inline-flex}.page-nav-btn:hover:not(:disabled){background:#e2e8f0}.page-nav-btn:disabled{opacity:.4;cursor:not-allowed}.page-indicator{color:var(--text-muted);font-size:13px}.page-indicator strong{color:var(--text-main)}.active-role-hint{color:var(--text-muted);align-items:center;gap:8px;font-size:12.5px;display:flex;position:absolute;right:24px}.active-role-badge{color:#fff;border-radius:var(--radius-full);padding:3px 10px;font-size:12px;font-weight:700}.pdf-viewport-container{flex:1;justify-content:center;align-items:flex-start;padding:30px;display:flex;overflow:auto}.pdf-overlay-wrapper{-webkit-user-select:none;user-select:none;cursor:crosshair;background:#fff;border-radius:4px;position:relative;overflow:hidden;box-shadow:0 10px 30px #0003}.pdf-page-canvas{display:block}.signature-box-marker{cursor:pointer;border:2px dashed;border-radius:4px;flex-direction:column;transition:transform .1s;display:flex;position:absolute;overflow:hidden}.signature-box-marker:hover{transform:scale(1.01);box-shadow:0 4px 10px #00000026}.box-marker-header{color:#fff;justify-content:space-between;align-items:center;padding:2px 6px;font-size:11px;font-weight:700;display:flex}.box-marker-body{flex:1;justify-content:space-between;align-items:center;padding:4px 8px;display:flex}.box-sign-hint{color:#475569;font-size:10px;font-weight:600}.box-required-badge{color:#fff;background:#ef4444;border-radius:2px;padding:1px 4px;font-size:9.5px;font-weight:700}.box-tool-del{color:#fff;opacity:.8;align-items:center;display:flex}.box-tool-del:hover{opacity:1}.signature-box-drawing{pointer-events:none;background:#2563eb26;border:2px solid;border-radius:4px;position:absolute}.drawing-badge{color:#fff;border-radius:2px;padding:1px 6px;font-size:10px;font-weight:700;position:absolute;top:-18px;left:0}.canvas-loading-state,.canvas-empty-state{color:#475569;text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:16px;padding:60px;display:flex}.empty-icon{color:#94a3b8}.spinner{border:3px solid #cbd5e1;border-top-color:var(--primary);border-radius:50%;width:36px;height:36px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.signer-wizard-layout{background:#f1f5f9;flex-direction:column;flex:1;padding-bottom:90px;display:flex}.signer-top-bar{background:var(--bg-surface);border-bottom:1px solid var(--border-subtle);flex-direction:column;gap:12px;padding:14px 24px;display:flex}.signer-title-row{justify-content:space-between;align-items:center;gap:16px;display:flex}.signer-title-text{align-items:center;gap:12px;display:flex}.doc-title{color:var(--text-main);font-size:18px;font-weight:800}.security-tag{color:#059669;border-radius:var(--radius-full);background:#ecfdf5;align-items:center;gap:4px;padding:3px 8px;font-size:11.5px;font-weight:600;display:inline-flex}.overall-progress-pill{color:#1e40af;border-radius:var(--radius-full);background:#eff6ff;border:1px solid #bfdbfe;padding:4px 12px;font-size:13px;font-weight:700}.signer-roles-strip{align-items:center;gap:10px;padding-bottom:4px;display:flex;overflow-x:auto}.roles-strip-label{color:var(--text-muted);white-space:nowrap;align-items:center;gap:6px;font-size:13px;font-weight:700;display:flex}.roles-strip-tabs{align-items:center;gap:8px;display:flex}.role-strip-tab{border-radius:var(--radius-full);background:var(--bg-surface-alt);color:var(--text-main);white-space:nowrap;border:1.5px solid #0000;align-items:center;gap:6px;padding:6px 12px;font-size:13px;font-weight:600;transition:all .15s;display:flex}.role-strip-tab.selected{box-shadow:0 2px 6px #00000014}.role-color-dot{border-radius:50%;width:8px;height:8px}.role-tab-badge{color:#475569;background:#e2e8f0;border-radius:10px;padding:1px 6px;font-size:11px}.signer-guide-banner{flex-direction:column;gap:10px;width:100%;max-width:1000px;margin:16px auto 0;padding:0 20px;display:flex}.guide-step-card{border-radius:var(--radius-lg);background:var(--bg-surface);border:1px solid var(--border-subtle);box-shadow:var(--shadow-sm);flex-wrap:wrap;align-items:center;gap:14px;padding:12px 18px;display:flex}.guide-step-card.step-done{background:#f0fdf4;border-color:#86efac}.step-number{background:var(--primary);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:28px;height:28px;font-size:13px;font-weight:700;display:flex}.guide-step-card.step-done .step-number{background:#22c55e}.step-content{flex-direction:column;flex:1;min-width:200px;display:flex}.step-title{color:var(--text-main);font-size:14px;font-weight:700}.step-subtitle{color:var(--text-muted);font-size:12px}.step-actions-group{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.field-shortcut-btn{border-radius:var(--radius-sm);border:1px solid var(--border-strong);color:var(--text-main);background:#fff;align-items:center;gap:5px;padding:6px 12px;font-size:12px;font-weight:600;display:inline-flex}.field-shortcut-btn.signed{color:#15803d;background:#dcfce7;border-color:#86efac}.field-shortcut-btn.pending{color:#1d4ed8;background:#eff6ff;border-color:#3b82f6}.step-preview-thumb-box{cursor:pointer;align-items:center;gap:8px;display:flex}.step-thumb-img{object-fit:cover;border-radius:var(--radius-sm);border:1px solid var(--border-subtle);width:44px;height:44px}.re-snap-text{color:#2563eb;font-size:11.5px;text-decoration:underline}.signer-canvas-area{flex-direction:column;align-items:center;width:100%;max-width:1000px;margin:16px auto;padding:0 20px;display:flex}.signer-pagination{align-items:center;gap:12px;margin-bottom:12px;display:flex}.page-btn{border-radius:var(--radius-sm);background:var(--bg-surface);border:1px solid var(--border-subtle);align-items:center;gap:4px;padding:6px 12px;font-size:12.5px;font-weight:600;display:inline-flex}.page-text{color:var(--text-muted);font-size:13px}.signer-pdf-frame{box-shadow:var(--shadow-lg);border-radius:var(--radius-sm);background:#fff;max-width:100%;position:relative;overflow:hidden}.signer-pdf-canvas{max-width:100%;height:auto;display:block}.signer-field-box{cursor:pointer;border:2px solid;border-radius:4px;justify-content:center;align-items:center;transition:all .15s;display:flex;position:absolute;overflow:hidden}.signer-field-box.is-active-target{animation:2s infinite boxGlow}@keyframes boxGlow{0%{box-shadow:0 0 #2563eb66}70%{box-shadow:0 0 0 8px #2563eb00}to{box-shadow:0 0 #2563eb00}}.unsigned-prompt-box{flex-direction:column;align-items:center;gap:2px;padding:4px;display:flex}.field-role-tag{color:#fff;border-radius:2px;padding:1px 6px;font-size:9.5px;font-weight:700}.field-prompt-action{align-items:center;gap:4px;display:flex}.prompt-text{color:#0f172a;font-size:10.5px;font-weight:700}.signed-preview-box{justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:relative}.signed-preview-img{object-fit:contain;max-width:90%;max-height:90%}.signed-badge-pill{color:#fff;border-radius:2px;padding:1px 4px;font-size:8.5px;font-weight:700;position:absolute;bottom:2px;right:2px}.signer-floating-bottom-bar{background:var(--bg-glass);-webkit-backdrop-filter:blur(16px);border-top:1px solid var(--border-subtle);z-index:90;padding:12px 24px;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -4px 15px #0000000d}.signer-floating-bottom-bar>div{justify-content:space-between;align-items:center;gap:20px;max-width:1000px;margin:0 auto;display:flex}.completion-stats{align-items:center;gap:12px;display:flex}.stats-label{color:var(--text-muted);font-size:12.5px;font-weight:600}.stats-progress-bar{background:#e2e8f0;border-radius:4px;width:120px;height:8px;overflow:hidden}.stats-progress-fill{background:linear-gradient(90deg,#3b82f6,#22c55e);height:100%;transition:width .3s}.stats-text{color:var(--text-main);font-size:13px;font-weight:700}.bottom-bar-right{align-items:center;gap:10px;display:flex}.next-role-btn{border-radius:var(--radius-md);color:#1d4ed8;background:#eff6ff;border:1px solid #bfdbfe;align-items:center;gap:6px;padding:10px 18px;font-size:14px;font-weight:700;display:inline-flex}.next-role-btn:hover{background:#dbeafe}.final-submit-btn{border-radius:var(--radius-md);color:#fff;align-items:center;gap:8px;padding:10px 24px;font-size:14.5px;font-weight:800;transition:all .2s;display:inline-flex}.final-submit-btn.ready-to-submit{background:linear-gradient(135deg,#16a34a,#15803d);animation:2s infinite readyPulse;box-shadow:0 4px 15px #16a34a59}@keyframes readyPulse{0%{transform:scale(1)}50%{transform:scale(1.02)}to{transform:scale(1)}}.final-submit-btn.disabled{color:#64748b;cursor:not-allowed;background:#cbd5e1}.modal-backdrop{z-index:1000;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0f172ab3;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal-container{border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);background:#fff;flex-direction:column;width:100%;max-width:580px;animation:.2s ease-out modalIn;display:flex;overflow:hidden}@keyframes modalIn{0%{opacity:0;transform:scale(.96)translateY(8px)}to{opacity:1;transform:scale(1)translateY(0)}}.modal-header{border-bottom:1px solid var(--border-subtle);justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.modal-title-group{align-items:center;gap:12px;display:flex}.modal-badge{color:#fff;border-radius:var(--radius-full);padding:4px 10px;font-size:11.5px;font-weight:700}.modal-badge-green{color:#16a34a;background:#dcfce7;border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;display:flex}.modal-title{color:var(--text-main);font-size:16px;font-weight:800}.modal-subtitle{color:var(--text-muted);font-size:12px}.icon-button{color:#94a3b8;padding:4px}.icon-button:hover{color:var(--text-main)}.signature-canvas-wrapper{background:#f8fafc;flex-direction:column;align-items:center;padding:20px;display:flex;position:relative}.signature-canvas{border-radius:var(--radius-md);touch-action:none;background:#fff;border:1.5px dashed #cbd5e1;width:100%;height:240px}.signature-guide-line{pointer-events:none;text-align:center;border-bottom:1px solid #e2e8f0;position:absolute;bottom:50px;left:40px;right:40px}.signature-guide-line span{color:#94a3b8;background:#f8fafc;padding:0 8px;font-size:10px}.modal-footer{border-top:1px solid var(--border-subtle);background:#fff;justify-content:space-between;align-items:center;gap:12px;padding:14px 20px;display:flex}.footer-actions-right{align-items:center;gap:8px;display:flex}.primary-button{border-radius:var(--radius-md);background:var(--primary);color:#fff;align-items:center;gap:6px;padding:8px 18px;font-size:13.5px;font-weight:700;display:inline-flex}.primary-button:hover{opacity:.92}.primary-button.large{padding:12px 24px;font-size:15px}.primary-button.small{padding:6px 12px;font-size:12px}.secondary-button{border-radius:var(--radius-md);background:var(--bg-surface-alt);color:var(--text-main);border:1px solid var(--border-strong);align-items:center;gap:6px;padding:8px 14px;font-size:13px;font-weight:600;display:inline-flex}.secondary-button:hover{background:#e2e8f0}.neutral-button{color:var(--text-muted);padding:8px 14px;font-size:13px}.danger-button{border-radius:var(--radius-md);color:#b91c1c;background:#fee2e2;border:1px solid #fca5a5;align-items:center;gap:6px;padding:8px 14px;font-size:13px;font-weight:600;display:inline-flex}.danger-button:hover{background:#fecaca}.selfie-notice-box{border-radius:var(--radius-md);color:#1e40af;background:#eff6ff;border:1px solid #bfdbfe;align-items:flex-start;gap:10px;margin:14px 20px 0;padding:10px 14px;font-size:12px;line-height:1.4;display:flex}.selfie-viewport-box{justify-content:center;padding:16px 20px;display:flex}.selfie-video-container{border-radius:var(--radius-lg);background:#000;justify-content:center;align-items:center;width:100%;height:320px;display:flex;position:relative;overflow:hidden}.selfie-live-video{object-fit:cover;width:100%;height:100%}.selfie-face-guide{pointer-events:none;flex-direction:column;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.face-oval-marker{border:2px dashed #ffffffbf;border-radius:50%;width:160px;height:220px;box-shadow:0 0 0 9999px #00000059}.face-guide-tip{color:#fff;border-radius:var(--radius-full);background:#0009;margin-top:12px;padding:2px 10px;font-size:12px}.selfie-stream-fallback{color:#cbd5e1;text-align:center;background:#1e293b;justify-content:center;align-items:center;padding:20px;font-size:13px;display:flex;position:absolute;inset:0}.selfie-preview-container{border-radius:var(--radius-lg);width:100%;box-shadow:var(--shadow-md);position:relative;overflow:hidden}.selfie-preview-img{width:100%;display:block}.selfie-preview-tag{color:#fff;border-radius:var(--radius-full);background:#16a34ae6;align-items:center;gap:4px;padding:3px 8px;font-size:11px;font-weight:700;display:flex;position:absolute;top:12px;right:12px}.completion-card-container{flex:1;justify-content:center;align-items:center;padding:40px 20px;display:flex}.completion-card{background:var(--bg-surface);border-radius:var(--radius-xl);width:100%;max-width:620px;box-shadow:var(--shadow-xl);text-align:center;border:1px solid var(--border-subtle);flex-direction:column;align-items:center;gap:16px;padding:36px 30px;display:flex}.completion-icon-wrapper{background:#dcfce7;border-radius:50%;justify-content:center;align-items:center;width:72px;height:72px;display:flex}.completion-title{color:var(--text-main);font-size:22px;font-weight:800}.completion-desc{color:var(--text-muted);font-size:14px;line-height:1.6}.completion-details-box{background:var(--bg-surface-alt);border-radius:var(--radius-md);text-align:left;flex-direction:column;gap:10px;width:100%;padding:14px 18px;display:flex}.detail-item{justify-content:space-between;align-items:center;gap:10px;font-size:13px;display:flex}.detail-label{color:var(--text-muted);font-weight:600}.detail-value{color:var(--text-main);font-weight:700}.hash-code{font-size:11px;font-family:var(--font-mono);border-radius:var(--radius-sm);background:#fff;border:1px solid #e2e8f0;padding:2px 6px}.completion-actions{flex-direction:column;align-items:stretch;gap:12px;width:100%;margin-top:12px;display:flex}.share-app-action-btn{cursor:pointer;justify-content:center;align-items:center;gap:10px;display:inline-flex;color:#fff!important;border-radius:var(--radius-md)!important;background:linear-gradient(135deg,#059669 0%,#047857 100%)!important;border:none!important;padding:14px 20px!important;font-size:15px!important;font-weight:700!important;transition:all .2s!important;box-shadow:0 8px 20px -4px #05966966!important}.share-app-action-btn:hover{transform:translateY(-1px);background:linear-gradient(135deg,#10b981 0%,#059669 100%)!important;box-shadow:0 12px 24px -4px #05966980!important}.text-link-button{color:var(--primary-accent);cursor:pointer;background:0 0;border:none;padding:8px;font-size:13px;text-decoration:underline;transition:color .15s}.text-link-button:hover{color:#1d4ed8}.audit-view-layout{flex:1;height:calc(100vh - 65px);display:flex;overflow:hidden}.audit-sidebar{background:var(--bg-surface);border-right:1px solid var(--border-subtle);flex-direction:column;width:320px;min-width:320px;display:flex}.audit-sidebar-header{border-bottom:1px solid var(--border-subtle);justify-content:space-between;align-items:center;padding:16px;display:flex}.sidebar-title-row{color:var(--text-main);align-items:center;gap:8px;font-size:15px;font-weight:700;display:flex}.small-action-btn{border-radius:var(--radius-sm);background:var(--bg-surface-alt);border:1px solid var(--border-subtle);align-items:center;gap:4px;padding:5px 10px;font-size:12px;font-weight:600;display:inline-flex}.audit-tasks-list{flex-direction:column;flex:1;gap:6px;padding:10px;display:flex;overflow-y:auto}.audit-task-item{border-radius:var(--radius-md);border:1px solid var(--border-subtle);background:var(--bg-surface);cursor:pointer;flex-direction:column;gap:6px;padding:12px 14px;transition:all .15s;display:flex}.audit-task-item:hover{background:var(--bg-surface-alt)}.audit-task-item.active{border-color:var(--primary);background:#eff6ff}.task-item-top{justify-content:space-between;align-items:center;gap:8px;display:flex}.task-title-text{color:var(--text-main);white-space:nowrap;text-overflow:ellipsis;font-size:13.5px;font-weight:700;overflow:hidden}.status-badge-pill{border-radius:var(--radius-full);padding:2px 7px;font-size:10.5px;font-weight:700}.status-badge-pill.completed{color:#15803d;background:#dcfce7}.status-badge-pill.signing{color:#0369a1;background:#e0f2fe}.status-badge-pill.draft{color:#475569;background:#f1f5f9}.task-item-meta{color:var(--text-muted);justify-content:space-between;align-items:center;font-size:11.5px;display:flex}.audit-main-content{background:#f8fafc;flex:1;padding:24px;overflow-y:auto}.audit-details-card{flex-direction:column;gap:20px;max-width:1050px;margin:0 auto;display:flex}.details-header{background:var(--bg-surface);border-radius:var(--radius-lg);border:1px solid var(--border-subtle);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding:20px 24px;display:flex}.title-row{align-items:center;gap:12px;display:flex}.title-row h2{font-size:20px;font-weight:800}.task-id-text{color:var(--text-muted);font-size:12px;font-family:var(--font-mono);margin-top:4px}.details-header-actions{align-items:center;gap:10px;display:flex}.crypto-seals-grid{grid-template-columns:1fr 1fr;gap:16px;display:grid}.seal-box{background:var(--bg-surface);border-radius:var(--radius-md);border:1px solid var(--border-subtle);flex-direction:column;gap:6px;padding:16px;display:flex}.seal-label{color:var(--text-muted);align-items:center;gap:6px;font-size:12.5px;font-weight:700;display:flex}.seal-value{color:#334155;word-break:break-all;border-radius:var(--radius-sm);background:#f1f5f9;padding:6px 10px;font-size:11px}.seal-value.highlight{color:#166534;background:#f0fdf4;border:1px solid #bbf7d0}.audit-section-block{background:var(--bg-surface);border-radius:var(--radius-lg);border:1px solid var(--border-subtle);flex-direction:column;gap:14px;padding:20px;display:flex}.section-subtitle{color:var(--text-main);font-size:15px;font-weight:800}.roles-audit-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px;display:grid}.role-audit-card{background:var(--bg-app);border:1px solid var(--border-subtle);border-radius:var(--radius-md);flex-direction:column;gap:10px;padding:14px;display:flex}.role-card-top{border-left:4px solid;justify-content:space-between;align-items:center;padding-left:8px;display:flex}.role-card-identity{align-items:center;gap:8px;display:flex}.role-person-name{font-size:13.5px;font-weight:700}.audit-selfie-row{border-radius:var(--radius-sm);border:1px solid var(--border-subtle);background:#fff;align-items:center;gap:10px;padding:8px;display:flex}.audit-selfie-thumb{object-fit:cover;border-radius:var(--radius-sm);width:48px;height:48px}.audit-selfie-info{flex-direction:column;gap:2px;display:flex}.selfie-verified-title{color:#15803d;font-size:12px;font-weight:700}.selfie-time{color:var(--text-muted);font-size:10.5px}.selfie-watermark-tag{color:#0284c7;font-size:9.5px}.audit-fields-list{flex-direction:column;gap:6px;display:flex}.audit-field-item{color:var(--text-muted);border-radius:var(--radius-sm);background:#fff;justify-content:space-between;align-items:center;padding:6px 10px;font-size:12px;display:flex}.field-signed-thumb{align-items:center;gap:6px;display:flex}.field-signed-thumb img{max-width:60px;height:22px}.signed-time-pill{color:#16a34a;font-size:10px}.audit-log-table-container{overflow-x:auto}.audit-log-table{border-collapse:collapse;width:100%;font-size:12.5px}.audit-log-table th{text-align:left;background:var(--bg-surface-alt);color:var(--text-muted);padding:8px 12px;font-weight:600}.audit-log-table td{border-bottom:1px solid var(--border-subtle);padding:10px 12px}.log-time-cell{font-family:var(--font-mono);color:#475569;white-space:nowrap;font-size:11.5px}.log-role-badge{background:#e2e8f0;border-radius:2px;margin-right:6px;padding:2px 6px;font-size:11px;font-weight:700}.log-action-tag{border-radius:var(--radius-full);padding:2px 8px;font-size:11px;font-weight:700}.log-action-tag.task_created{color:#475569;background:#f1f5f9}.log-action-tag.photo_captured{color:#059669;background:#ecfdf5}.log-action-tag.signature_completed{color:#1d4ed8;background:#eff6ff}.log-action-tag.final_submitted{color:#16a34a;background:#f0fdf4}.log-ua-sub{color:#94a3b8;font-size:10.5px;font-family:var(--font-mono)}.share-modal{max-width:680px}.share-modal-body{flex-direction:column;gap:16px;padding:20px;display:flex}.share-card{border:1px solid var(--border-subtle);border-radius:var(--radius-lg);background:var(--bg-surface-alt);padding:16px}.share-card.primary-card{background:#eff6ff;border-color:#93c5fd}.recommend-badge{color:#fff;border-radius:var(--radius-full);background:#2563eb;padding:2px 8px;font-size:11px;font-weight:800}.share-card-title-row{align-items:center;gap:8px;margin-bottom:4px;display:flex}.share-card-desc{color:var(--text-muted);margin-bottom:12px;font-size:12.5px;line-height:1.4}.share-link-row{align-items:center;gap:8px;display:flex}.share-url-input{font-size:12px;font-family:var(--font-mono);border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:#fff;flex:1;padding:8px 10px}.copy-btn{border-radius:var(--radius-sm);border:1px solid var(--border-strong);color:var(--text-main);white-space:nowrap;background:#fff;align-items:center;gap:4px;padding:8px 12px;font-size:12px;font-weight:700;display:inline-flex}.copy-btn:hover{background:#f1f5f9}.open-btn{border-radius:var(--radius-sm);color:#fff;white-space:nowrap;background:#2563eb;align-items:center;gap:4px;padding:8px 14px;font-size:12.5px;font-weight:700;display:inline-flex}.individual-links-list{flex-direction:column;gap:8px;display:flex}.individual-link-row{border-radius:var(--radius-sm);border:1px solid var(--border-subtle);background:#fff;align-items:center;gap:8px;padding:6px 10px;display:flex}.role-tag-pill{color:#fff;border-radius:var(--radius-sm);white-space:nowrap;padding:2px 8px;font-size:11px;font-weight:700}.signer-name-display{color:var(--text-main);min-width:70px;font-size:12.5px;font-weight:600}.sig-library-modal{flex-direction:column;max-height:88vh;display:flex;width:90%!important;max-width:820px!important}.sig-lib-title-row{align-items:center;gap:10px;display:flex}.operator-only-pill{color:#d97706;background:#f59e0b1f;border:1px solid #f59e0b4d;border-radius:999px;padding:2px 8px;font-size:11px;font-weight:700}.sig-lib-toolbar{background:var(--bg-surface-secondary);border-bottom:1px solid var(--border-subtle);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding:14px 24px;display:flex}.sig-lib-search{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-md);flex:1;align-items:center;gap:8px;min-width:220px;padding:6px 12px;display:flex}.sig-lib-search input{color:var(--text-main);background:0 0;border:none;outline:none;width:100%;font-size:13.5px}.sig-lib-actions{align-items:center;gap:8px;display:flex}.sig-lib-create-box{border-bottom:1px solid var(--border-subtle);background:#2563eb0a;flex-direction:column;gap:12px;padding:16px 24px;display:flex}.create-inputs-row{gap:12px;display:flex}.create-inputs-row input{border:1px solid var(--border-subtle);border-radius:var(--radius-md);background:var(--bg-surface);color:var(--text-main);flex:1;padding:8px 12px;font-size:13px}.create-canvas-wrapper{border:2px dashed var(--border-accent);border-radius:var(--radius-md);background:#fff;justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.create-canvas{touch-action:none;cursor:crosshair;background:0 0}.create-canvas-hint{color:#94a3b8;pointer-events:none;font-size:11px;position:absolute;bottom:6px;right:12px}.create-actions-row{justify-content:flex-end;gap:10px;display:flex}.sig-lib-body{max-height:480px;padding:20px 24px;overflow-y:auto}.sig-lib-empty{text-align:center;color:var(--text-muted);flex-direction:column;justify-content:center;align-items:center;gap:10px;padding:40px 20px;display:flex}.sig-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px;display:grid}.sig-card{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);flex-direction:column;gap:10px;padding:12px;transition:all .2s;display:flex}.sig-card:hover{border-color:var(--primary-accent);box-shadow:var(--shadow-md);transform:translateY(-2px)}.sig-card-preview{border-radius:var(--radius-md);background-color:#fff;background-image:linear-gradient(45deg,#f1f5f9 25%,#0000 25%),linear-gradient(-45deg,#f1f5f9 25%,#0000 25%),linear-gradient(45deg,#0000 75%,#f1f5f9 75%),linear-gradient(-45deg,#0000 75%,#f1f5f9 75%);background-position:0 0,0 6px,6px -6px,-6px 0;background-repeat:repeat;background-size:12px 12px;background-attachment:scroll;background-origin:padding-box;background-clip:border-box;border:1px solid #0000000f;justify-content:center;align-items:center;height:90px;padding:8px;display:flex}.sig-card-preview img{object-fit:contain;max-width:100%;max-height:100%}.sig-card-meta{flex-direction:column;gap:4px;display:flex}.sig-meta-header{justify-content:space-between;align-items:center;gap:6px;display:flex}.sig-name{color:var(--text-main);text-overflow:ellipsis;white-space:nowrap;font-size:13.5px;font-weight:700;overflow:hidden}.sig-role-badge{color:var(--primary-accent);border-radius:var(--radius-sm);white-space:nowrap;background:#2563eb1a;padding:1px 6px;font-size:10.5px;font-weight:600}.sig-date{color:var(--text-muted);font-size:11px}.sig-card-actions{align-items:center;gap:6px;margin-top:auto;display:flex}.apply-btn{flex:1;justify-content:center;align-items:center;gap:4px;font-size:12px;display:flex}.icon-action-btn{background:var(--bg-surface-secondary);border:1px solid var(--border-subtle);border-radius:var(--radius-md);color:var(--text-muted);cursor:pointer;justify-content:center;align-items:center;padding:6px;transition:all .15s;display:flex}.icon-action-btn:hover{color:var(--text-main);border-color:var(--text-muted)}.icon-action-btn.delete:hover{color:#ef4444;background:#ef444414;border-color:#ef4444}.sig-lib-footer-info{color:var(--text-muted);font-size:12.5px}.ttl-quick-selector{flex-wrap:wrap;gap:6px;margin-top:8px;display:flex}.ttl-chip-btn{background:var(--bg-surface);border:1px solid var(--border-subtle);color:var(--text-muted);cursor:pointer;border-radius:999px;padding:4px 10px;font-size:11.5px;font-weight:600;transition:all .15s}.ttl-chip-btn:hover{border-color:var(--primary-accent);color:var(--primary-accent)}.ttl-chip-btn.active{background:var(--primary-accent);border-color:var(--primary-accent);color:#fff}.ttl-meta-display{border:1px solid var(--border-subtle);border-radius:var(--radius-md);background:#00000005;flex-direction:column;gap:3px;margin-top:8px;padding:8px 10px;font-size:11.5px;display:flex}.ttl-meta-display strong{color:var(--text-main);font-size:12px}.ttl-countdown-text{color:#d97706;font-weight:600}.box-header-tools{align-items:center;gap:4px;display:flex}.box-tool-vault{color:#fff;cursor:pointer;background:#ffffff40;border:none;border-radius:2px;justify-content:center;align-items:center;padding:2px;display:flex}.box-tool-vault:hover{background:#ffffff73}.box-signed-display{justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:relative}.box-sig-img{object-fit:contain;max-width:90%;max-height:85%}.box-applied-pill{color:#fff;background:#10b981d9;border-radius:2px;padding:1px 4px;font-size:9px;font-weight:700;position:absolute;bottom:2px;left:4px}.box-sig-clear-btn{color:#fff;cursor:pointer;background:#ef4444cc;border:none;border-radius:50%;justify-content:center;align-items:center;width:16px;height:16px;font-size:10px;display:flex;position:absolute;top:2px;right:2px}.box-sig-clear-btn:hover{background:#ef4444}.box-unsigned-display{flex-direction:column;justify-content:center;align-items:center;gap:4px;height:100%;display:flex}.box-apply-stamp-btn{color:var(--primary-accent);cursor:pointer;background:#2563eb1a;border:1px solid #2563eb4d;border-radius:3px;align-items:center;gap:3px;padding:2px 6px;font-size:10px;font-weight:600;transition:all .15s;display:flex}.box-apply-stamp-btn:hover{background:var(--primary-accent);color:#fff}.sidebar-header-actions-group{align-items:center;gap:6px;display:flex}.vault-btn{color:#d97706!important;background:#f59e0b1a!important;border-color:#f59e0b4d!important}.vault-btn:hover{color:#fff!important;background:#d97706!important}.field-signed-container{flex-direction:column;gap:6px;display:flex}.save-sig-vault-btn{color:var(--primary-accent);border-radius:var(--radius-sm);cursor:pointer;background:#2563eb14;border:1px solid #2563eb40;align-items:center;gap:4px;width:fit-content;padding:4px 8px;font-size:11px;font-weight:600;transition:all .15s;display:inline-flex}.save-sig-vault-btn:hover{background:var(--primary-accent);color:#fff}.share-meta-banner{background:var(--bg-surface-secondary);border-bottom:1px solid var(--border-subtle);flex-direction:column;gap:6px;padding:12px 24px;font-size:12.5px;display:flex}.meta-banner-row{color:var(--text-main);align-items:center;gap:8px;display:flex}.expired-card{border:1px solid #ef44444d!important}@media (width<=768px){.header-container{flex-direction:column;align-items:stretch}.editor-main{flex-direction:column;height:auto}.editor-sidebar{width:100%;min-width:100%;max-height:380px}.crypto-seals-grid{grid-template-columns:1fr}}.login-page-wrapper{box-sizing:border-box;background:radial-gradient(circle at 50% 20%,#1e293b 0%,#0f172a 60%,#020617 100%);justify-content:center;align-items:center;width:100%;min-height:100vh;padding:24px;display:flex}.login-card{-webkit-backdrop-filter:blur(20px);background:#1e293bbf;border:1px solid #ffffff1f;border-radius:20px;flex-direction:column;gap:24px;width:100%;max-width:440px;padding:40px 32px;animation:.3s ease-out loginFadeIn;display:flex;box-shadow:0 25px 50px -12px #00000080,0 0 0 1px #ffffff0d}@keyframes loginFadeIn{0%{opacity:0;transform:translateY(16px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.login-brand-header{text-align:center;flex-direction:column;align-items:center;gap:12px;display:flex}.login-brand-icon{color:#fff;background:linear-gradient(135deg,#2563eb,#1d4ed8);border-radius:18px;justify-content:center;align-items:center;width:64px;height:64px;display:flex;box-shadow:0 10px 25px -5px #2563eb80}.login-title{color:#f8fafc;letter-spacing:-.02em;margin:0;font-size:22px;font-weight:800}.login-subtitle{color:#94a3b8;margin:0;font-size:13px}.login-error-banner{color:#fca5a5;background:#ef444426;border:1px solid #ef444466;border-radius:10px;align-items:center;gap:10px;padding:12px 16px;font-size:13.5px;animation:.3s ease-in-out shakeError;display:flex}@keyframes shakeError{0%,to{transform:translate(0)}25%{transform:translate(-4px)}75%{transform:translate(4px)}}.login-form{flex-direction:column;gap:18px;display:flex}.login-field{text-align:left;flex-direction:column;gap:8px;display:flex}.login-field label{color:#cbd5e1;font-size:13px;font-weight:600}.login-input-group{align-items:center;display:flex;position:relative}.login-input-group .input-icon{color:#64748b;pointer-events:none;position:absolute;left:14px}.login-input-group input{box-sizing:border-box;color:#f8fafc;background:#0f172a99;border:1px solid #ffffff1f;border-radius:12px;width:100%;padding:13px 14px 13px 44px;font-size:14.5px;transition:all .2s}.login-input-group input:focus{background:#0f172ad9;border-color:#3b82f6;outline:none;box-shadow:0 0 0 4px #3b82f633}.toggle-password-btn{color:#64748b;cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;padding:6px;transition:color .15s;display:flex;position:absolute;right:12px}.toggle-password-btn:hover{color:#94a3b8}.login-submit-btn{color:#fff;cursor:pointer;background:linear-gradient(135deg,#2563eb,#1d4ed8);border:none;border-radius:12px;justify-content:center;align-items:center;gap:10px;margin-top:8px;padding:14px 20px;font-size:15px;font-weight:700;transition:all .2s;display:flex;box-shadow:0 8px 20px -4px #2563eb80}.login-submit-btn:hover:not(:disabled){background:linear-gradient(135deg,#3b82f6,#2563eb);transform:translateY(-1px);box-shadow:0 12px 24px -4px #2563eb99}.login-submit-btn:active:not(:disabled){transform:translateY(0)}.login-submit-btn:disabled{opacity:.6;cursor:not-allowed}.login-security-notice{color:#94a3b8;background:#0f172a66;border:1px solid #ffffff0f;border-radius:10px;align-items:flex-start;gap:10px;padding:12px 14px;font-size:12px;line-height:1.5;display:flex}.login-security-notice svg{color:#38bdf8;flex-shrink:0;margin-top:2px}.header-logout-btn{color:#ef4444;cursor:pointer;background:#ef444414;border:1px solid #ef444433;border-radius:8px;align-items:center;gap:6px;padding:6px 12px;font-size:12px;font-weight:600;transition:all .15s;display:inline-flex}.header-logout-btn:hover{color:#fff;background:#ef4444}.admin-preview-topbar{color:#f8fafc;z-index:99;background:#1e293b;border-bottom:1px solid #ffffff1a;justify-content:space-between;align-items:center;padding:8px 16px;font-size:12.5px;display:flex}.admin-preview-badge{color:#f59e0b;font-weight:700}.admin-preview-return-btn{color:#f8fafc;cursor:pointer;background:#ffffff1a;border:1px solid #fff3;border-radius:6px;padding:4px 10px;font-size:12px;transition:all .15s}.admin-preview-return-btn:hover{background:#2563eb;border-color:#2563eb}.signer-clean-viewport{margin-top:0!important;padding-top:8px!important}
