.ztofd-viewer{display:flex;flex-direction:column;width:100%;height:100%;min-height:400px;background:#f2f2f2;font-family:Microsoft YaHei,PingFang SC,sans-serif}.ztofd-toolbar{display:flex;align-items:center;gap:4px;height:40px;padding:0 12px;background:#474747;color:#fff;flex-shrink:0}.ztofd-body{display:flex;flex:1;min-height:0}.ztofd-sidebar{flex-shrink:0;background:#fff;overflow:auto}.ztofd-sidebar-splitter{flex-shrink:0;width:8px;cursor:col-resize;background:#e4e4e4;border-left:1px solid #ccc;border-right:1px solid #ccc;touch-action:none;transition:background .15s}.ztofd-sidebar-splitter:hover,.ztofd-sidebar-splitter.is-dragging{background:#b8c9ff}body.ztofd-resizing,body.ztofd-resizing *{cursor:col-resize!important;-webkit-user-select:none!important;user-select:none!important}.ztofd-outline{padding:0 0 16px}.ztofd-outline-header{display:flex;align-items:center;justify-content:space-between;padding:8px 8px 8px 16px;border-bottom:1px solid #eee;margin-bottom:4px}.ztofd-outline-title{font-size:14px;font-weight:600;color:#333}.ztofd-outline-close{display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:none;border-radius:4px;background:transparent;color:#666;font-size:20px;line-height:1;cursor:pointer}.ztofd-outline-close:hover{background:#f0f0f0;color:#333}.ztofd-outline-list,.ztofd-outline-sublist{list-style:none;margin:0;padding:0}.ztofd-outline-link{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;padding:8px 12px 8px 16px;border:none;background:transparent;text-align:left;font-size:13px;color:#333;cursor:pointer;line-height:1.4;-webkit-user-select:none;user-select:none}.ztofd-outline-link:hover:not(:disabled){background:#f0f4ff;color:#3b5fe8}.ztofd-outline-link.is-active{background:#e8eeff;color:#3b5fe8;font-weight:500}.ztofd-outline-link:disabled{cursor:default}.ztofd-outline-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ztofd-outline-page{flex-shrink:0;font-size:12px;color:#999}.ztofd-btn.is-active{color:#00f5ff}.ztofd-btn{display:inline-flex;align-items:center;gap:4px;height:28px;padding:0 10px;border:none;border-radius:2px;background:transparent;color:inherit;font-size:13px;cursor:pointer}.ztofd-btn:hover:not(:disabled){color:#00f5ff}.ztofd-btn:disabled{opacity:.4;cursor:not-allowed}.ztofd-btn-primary{background:#3b5fe8;color:#fff;padding:8px 16px}.ztofd-select{height:28px;padding:0 8px;border:1px solid rgba(255,255,255,.3);border-radius:2px;background:#474747;color:#fff;font-size:13px}.ztofd-sep{width:1px;height:16px;margin:0 8px;background:#fff6}.ztofd-page-info{padding:0 8px;font-size:13px;min-width:72px;text-align:center;color:#fff}.ztofd-page-limit-hint{font-size:12px;color:#ffffffb3}.ztofd-license-banner{padding:8px 16px;font-size:13px;color:#8a6d3b;background:#fcf8e3;border-bottom:1px solid #faebcc;text-align:center}.ztofd-content{flex:1;overflow:auto;position:relative}.ztofd-pages{display:flex;flex-direction:column;align-items:center;padding:16px 0 32px;gap:16px}.ztofd-page{position:relative;background:#fff;box-shadow:0 2px 8px #00000026}.ztofd-canvas{display:block}.ztofd-canvas.ztofd-canvas--seal{cursor:pointer}.ztofd-loading,.ztofd-error,.ztofd-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:300px;color:#666;gap:12px}.ztofd-error{color:#c0392b}.ztofd-hidden{display:none!important}.ztofd-sidebar-right{width:280px;border-left:1px solid #ddd;border-right:none;flex-shrink:0;overflow:auto;background:#fff}.ztofd-panel-header{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;border-bottom:1px solid #eee;font-size:14px;font-weight:600;color:#333}.ztofd-panel-count{font-size:12px;font-weight:500;color:#999}.ztofd-panel-action{margin-left:auto;padding:4px 10px;font-size:12px;font-weight:500;color:#1677ff;background:#fff;border:1px solid #91caff;border-radius:4px;cursor:pointer}.ztofd-panel-action:disabled{opacity:.6;cursor:not-allowed}.ztofd-verify-badge{display:inline-flex;align-items:center;margin-left:0;padding:3px 10px;font-size:12px;font-weight:500;border-radius:999px;line-height:1.4;white-space:nowrap}.ztofd-panel-item-title .ztofd-verify-badge{margin-left:8px}.ztofd-verify-badge.is-valid{color:#389e0d;background:#f6ffed;border:1px solid #b7eb8f}.ztofd-verify-badge.is-invalid{color:#cf1322;background:#fff1f0;border:1px solid #ffa39e}.ztofd-verify-badge.is-error{color:#d4380d;background:#fff7e6;border:1px solid #ffd591}.ztofd-verify-badge.is-pending,.ztofd-verify-badge.is-muted{color:#8c8c8c;background:#f5f5f5;border:1px solid #d9d9d9}.ztofd-verify-banner{padding:8px 14px;font-size:12px;border-bottom:1px solid #eee}.ztofd-verify-banner.is-error{color:#cf1322;background:#fff1f0}.ztofd-page-wrap{position:relative}.ztofd-page-placeholder{width:100%;background:#fafafa}.ztofd-text-layer{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;-webkit-user-select:text;user-select:text;pointer-events:none;z-index:2}.ztofd-text-run{position:absolute;color:transparent;line-height:1;white-space:pre;pointer-events:auto}.ztofd-link-layer{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.ztofd-link-hit{position:absolute;padding:0;margin:0;border:none;background:transparent;cursor:pointer;pointer-events:auto}.ztofd-link-hit:hover{outline:1px dashed rgba(22,119,255,.45)}.ztofd-stamp-layer{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:4}.ztofd-stamp-hit{position:absolute;padding:0;margin:0;border:none;background:transparent;cursor:pointer;pointer-events:auto;z-index:1}.ztofd-stamp-hit:hover{outline:2px solid rgba(192,57,43,.55);background:#c0392b0f}.ztofd-seal-dialog{max-height:min(90vh,680px);padding:0;overflow:hidden;display:flex;flex-direction:column;border-radius:12px;box-shadow:0 12px 40px #0f172a2e}.ztofd-seal-dialog-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid #eef0f3;background:#fafbfc;flex-shrink:0}.ztofd-seal-dialog-title{margin:0;font-size:16px;font-weight:600;color:#1f2937}.ztofd-seal-dialog-close{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:none;background:transparent;color:#6b7280;cursor:pointer;border-radius:8px;transition:background .15s,color .15s}.ztofd-seal-dialog-close:hover{background:#eef0f3;color:#374151}.ztofd-seal-dialog-body{padding:16px 20px 20px;overflow-y:auto;flex:1}.ztofd-seal-verify-banner{display:flex;align-items:center;gap:12px;padding:14px 16px;margin-bottom:16px;border-radius:10px;border:1px solid #eef0f3;background:#fafbfc}.ztofd-seal-verify-banner.is-valid{background:linear-gradient(180deg,#f6ffed,#fff);border-color:#b7eb8f}.ztofd-seal-verify-banner.is-invalid{background:linear-gradient(180deg,#fff2f0,#fff);border-color:#ffccc7}.ztofd-seal-verify-banner.is-error{background:linear-gradient(180deg,#fff7e6,#fff);border-color:#ffd591}.ztofd-seal-verify-banner.is-pending,.ztofd-seal-verify-banner.is-muted{background:#fafbfc;border-color:#eef0f3}.ztofd-seal-verify-icon{flex-shrink:0;display:flex;align-items:center;justify-content:center}.ztofd-seal-verify-text{flex:1;min-width:0}.ztofd-seal-verify-title{margin:0;font-size:14px;font-weight:600;color:#111827;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ztofd-seal-verify-sub{margin:4px 0 0;font-size:12px;color:#6b7280;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ztofd-seal-tabs{display:flex;gap:0;margin-bottom:0;border-bottom:1px solid #e5e7eb}.ztofd-seal-tab{position:relative;padding:10px 20px;font-size:14px;font-weight:500;color:#6b7280;background:transparent;border:none;cursor:pointer;transition:color .15s}.ztofd-seal-tab:hover,.ztofd-seal-tab.is-active{color:#1677ff}.ztofd-seal-tab.is-active:after{content:"";position:absolute;left:12px;right:12px;bottom:-1px;height:2px;background:#1677ff;border-radius:2px 2px 0 0}.ztofd-seal-tab-panel{padding:16px 0 0}.ztofd-seal-tab-preview{display:flex;align-items:center;gap:12px;margin-bottom:16px;padding-bottom:16px;border-bottom:1px solid #f0f0f0}.ztofd-seal-tab-preview-name{font-size:18px;font-weight:600;color:#111827;white-space:nowrap}.ztofd-seal-info-table{margin:0;border:1px solid #f0f0f0;border-radius:8px;overflow-x:auto;background:#fff}.ztofd-seal-info-row{display:grid;grid-template-columns:96px 1fr;gap:12px;padding:10px 14px;border-bottom:1px solid #f0f0f0;font-size:13px;min-width:max-content}.ztofd-seal-info-row:last-child{border-bottom:none}.ztofd-seal-info-row dt{margin:0;color:#6b7280;white-space:nowrap}.ztofd-seal-info-row dd{margin:0;color:#111827;white-space:nowrap}.ztofd-seal-info-row dd.ztofd-seal-mono{font-family:ui-monospace,Consolas,Courier New,monospace;font-size:12px}.ztofd-seal-empty{padding:24px 0;text-align:center;color:#9ca3af;font-size:13px}.ztofd-seal-empty-hint{margin:8px 0 0;font-size:12px;color:#c0c4cc}.ztofd-seal-ref-card{margin-top:16px}.ztofd-seal-dialog-actions{display:flex;justify-content:flex-end;margin-top:16px;padding-top:12px;border-top:1px solid #f0f0f0}.ztofd-seal-spinner-sm{width:22px;height:22px}.ztofd-seal-dialog-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:48px 20px;color:#6b7280;font-size:13px}.ztofd-seal-spinner{width:28px;height:28px;border:2px solid #e5e7eb;border-top-color:#1677ff;border-radius:50%;animation:ztofd-spin .7s linear infinite}@keyframes ztofd-spin{to{transform:rotate(360deg)}}.ztofd-seal-hero{display:flex;gap:16px;padding:16px;margin-bottom:12px;background:linear-gradient(135deg,#fafbfc,#f3f4f6);border:1px solid #eef0f3;border-radius:10px}.ztofd-seal-hero-image{flex-shrink:0;width:88px;height:88px;display:flex;align-items:center;justify-content:center;background:#fff;border:1px solid #e5e7eb;border-radius:8px;box-shadow:0 1px 3px #0000000f}.ztofd-seal-hero-img{max-width:76px;max-height:76px;object-fit:contain}.ztofd-seal-hero-placeholder{font-size:28px;font-weight:600;color:#c0392b;opacity:.35}.ztofd-seal-hero-info{flex:1;min-width:0}.ztofd-seal-hero-name{font-size:18px;font-weight:600;color:#111827;margin-bottom:10px;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ztofd-seal-meta-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 16px;margin:0}.ztofd-seal-meta-item{display:flex;flex-direction:column;gap:2px;min-width:0}.ztofd-seal-meta-item dt{margin:0;font-size:11px;color:#9ca3af;font-weight:500}.ztofd-seal-meta-item dd{margin:0;font-size:13px;color:#374151;white-space:nowrap}.ztofd-seal-card{margin-top:12px;padding:14px 16px;background:#fff;border:1px solid #eef0f3;border-radius:10px}.ztofd-seal-card.is-valid{background:linear-gradient(180deg,#f6ffed,#fff);border-color:#b7eb8f}.ztofd-seal-card.is-invalid{background:linear-gradient(180deg,#fff2f0,#fff);border-color:#ffccc7}.ztofd-seal-card.is-error{background:linear-gradient(180deg,#fff7e6,#fff);border-color:#ffd591}.ztofd-seal-card.is-pending,.ztofd-seal-card.is-muted{background:#fafbfc;border-color:#eef0f3}.ztofd-seal-card-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}.ztofd-seal-card-title{font-size:13px;font-weight:600;color:#374151}.ztofd-seal-card-sub{font-size:12px;color:#9ca3af}.ztofd-seal-card-desc{margin:0 0 6px;font-size:13px;color:#374151;line-height:1.5;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ztofd-seal-card-meta{margin:0 0 4px;font-size:12px;color:#6b7280;line-height:1.45;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ztofd-seal-btn-outline{margin-top:10px;padding:6px 14px;font-size:12px;color:#1677ff;background:#fff;border:1px solid #91caff;border-radius:6px;cursor:pointer;transition:background .15s,border-color .15s}.ztofd-seal-btn-outline:hover:not(:disabled){background:#e6f4ff;border-color:#1677ff}.ztofd-seal-btn-outline:disabled{opacity:.55;cursor:not-allowed}.ztofd-seal-dialog-preview{margin-bottom:16px}.ztofd-seal-preview-lg{width:96px;height:96px;object-fit:contain}.ztofd-seal-dialog-name{font-size:16px;font-weight:600;color:#333;margin-bottom:6px}.ztofd-seal-section{margin-top:16px;padding-top:12px;border-top:1px solid #f0f0f0}.ztofd-seal-section-title{font-size:13px;font-weight:600;color:#333;margin-bottom:8px}.ztofd-seal-verify-row{display:flex;align-items:center;gap:12px;margin-bottom:8px}.ztofd-seal-dl{display:grid;grid-template-columns:64px 1fr;gap:8px 12px;margin:0;font-size:13px}.ztofd-seal-dl dt{margin:0;color:#9ca3af;font-size:12px}.ztofd-seal-dl dd{margin:0;color:#374151;word-break:break-all}.ztofd-seal-mono{font-family:ui-monospace,Consolas,Courier New,monospace;font-size:11px;color:#6b7280}.ztofd-seal-property{margin:0;font-size:12px;line-height:1.55;color:#6b7280;white-space:pre-wrap;word-break:break-all}.ztofd-seal-ref-list{list-style:none;margin:0;padding:0;max-height:200px;overflow:auto;border:1px solid #f0f0f0;border-radius:8px;background:#fafbfc}.ztofd-seal-ref-item{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 12px;border-bottom:1px solid #f0f0f0;font-size:12px;white-space:nowrap;width:max-content;min-width:100%;box-sizing:border-box}.ztofd-seal-ref-path{flex:1 0 auto;color:#4b5563;font-family:ui-monospace,Consolas,monospace;font-size:11px;white-space:nowrap}.ztofd-seal-ref-item:last-child{border-bottom:none}.ztofd-seal-ref-status{flex-shrink:0;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:500}.ztofd-seal-ref-status.is-valid{color:#389e0d;background:#f6ffed;border:1px solid #b7eb8f}.ztofd-seal-ref-status.is-invalid{color:#cf1322;background:#fff2f0;border:1px solid #ffccc7}.ztofd-seal-ref-status.is-muted{color:#8c8c8c;background:#f5f5f5;border:1px solid #d9d9d9}.ztofd-seal-ref-table{width:100%;border-collapse:collapse;font-size:12px}.ztofd-seal-ref-table th,.ztofd-seal-ref-table td{padding:6px 8px;border:1px solid #eee;text-align:left}.ztofd-seal-ref-table th{background:#fafafa;color:#666;font-weight:500}@media print{.ztofd-toolbar,.ztofd-sidebar,.ztofd-sidebar-splitter{display:none!important}.ztofd-content{overflow:visible!important;height:auto!important}}.ztofd-panel-list{list-style:none;margin:0;padding:0}.ztofd-panel-item{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 14px;border-bottom:1px solid #f0f0f0}.ztofd-panel-item-stack{flex-direction:column;align-items:flex-start}.ztofd-panel-item-clickable{cursor:pointer;transition:background .15s}.ztofd-panel-item-clickable:hover{background:#f5f9ff}.ztofd-panel-item-clickable:focus-visible{outline:2px solid rgba(22,119,255,.45);outline-offset:-2px}.ztofd-signature-row{display:flex;gap:10px;width:100%}.ztofd-seal-preview{width:56px;height:56px;object-fit:contain;flex-shrink:0;border:1px solid #eee;border-radius:4px;background:#fafafa}.ztofd-signature-body{flex:1;min-width:0}.ztofd-stamp-links{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}.ztofd-stamp-link{height:24px;padding:0 8px;font-size:12px;border:1px solid #d9d9d9;border-radius:4px;background:#fff;color:#1677ff;cursor:pointer}.ztofd-stamp-link:disabled{color:#bbb;cursor:not-allowed}.ztofd-panel-item-main{min-width:0;flex:1}.ztofd-panel-item-title{font-size:13px;color:#333;word-break:break-all}.ztofd-panel-item-meta{font-size:12px;color:#888;margin-top:2px}.ztofd-panel-empty{padding:16px 14px;margin:0;font-size:13px;color:#999}.ztofd-btn-sm{height:26px;padding:0 8px;font-size:12px;flex-shrink:0}@media(max-width:768px){.ztofd-select{display:none}}.ztofd-video-layer{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.ztofd-video-item{position:absolute;pointer-events:auto;object-fit:contain;background:#000}.ztofd-meta-section{padding:12px 14px;border-bottom:1px solid #eee}.ztofd-meta-section h4{margin:0 0 8px;font-size:13px;font-weight:600;color:#333}.ztofd-meta-row{margin:0;font-size:13px;color:#666}.ztofd-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:flex;align-items:center;justify-content:center;background:#00000073}.ztofd-modal{width:min(360px,92vw);padding:20px;background:#fff;border-radius:12px;box-shadow:0 12px 40px #0f172a2e}.ztofd-seal-dialog.ztofd-modal{width:min(800px,96vw);min-width:min(800px,96vw);padding:0}.ztofd-modal-title{margin:0 0 8px;font-size:16px}.ztofd-modal-desc{margin:0 0 12px;font-size:13px;color:#666}.ztofd-modal-input{width:100%;box-sizing:border-box;height:36px;padding:0 10px;margin-bottom:16px;border:1px solid #d9d9d9;border-radius:4px}.ztofd-modal-actions{display:flex;justify-content:flex-end;gap:8px}.ztofd-btn.is-disabled{opacity:.5}
