:root{color:#1f2933;background:#f5f6f8;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility}@font-face{font-family:tuniaoFont;src:url(/assets/tuniao-ce83dc48.woff) format("woff"),url(/assets/tuniao-e04b00a9.ttf) format("truetype");font-weight:400;font-style:normal;font-display:block}[class*=tn-icon-]{font-family:tuniaoFont!important;font-style:normal;-webkit-font-smoothing:antialiased;text-align:center;text-decoration:none}.tn-icon-left:before{content:""}.tn-icon-order:before{content:""}.tn-icon-logout:before{content:""}*{box-sizing:border-box}html,body,#app{min-height:100%;margin:0}body{background:#f5f6f8}button,input{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}.page,.sign-page,.login-page{min-height:100vh;padding:calc(58px + env(safe-area-inset-top)) 16px calc(24px + env(safe-area-inset-bottom))}.page{padding-bottom:calc(86px + env(safe-area-inset-bottom))}.app-header{position:fixed;top:0;left:0;right:0;z-index:30;height:calc(58px + env(safe-area-inset-top));padding:env(safe-area-inset-top) 14px 0;display:flex;align-items:center;justify-content:center;background:rgba(255,255,255,.96);border-bottom:1px solid #e6e8eb;backdrop-filter:blur(10px)}.app-header h1{margin:0;position:absolute;left:72px;right:72px;text-align:center;font-size:18px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.header-slot{position:absolute;right:14px;top:env(safe-area-inset-top);height:58px;display:flex;align-items:center;justify-content:flex-end}.icon-button{position:absolute;left:14px;top:env(safe-area-inset-top);width:40px;height:40px;border:0;border-radius:8px;background:transparent;color:#202833;font-size:24px;line-height:1}.text-button{border:0;background:transparent;color:#3f72d8;font-size:14px}.button{min-height:44px;border:1px solid transparent;border-radius:8px;padding:0 18px;display:inline-flex;align-items:center;justify-content:center;font-weight:700;text-decoration:none}.button.primary{background:#2f6fed;color:#fff}.button.secondary{background:#fff;color:#243044;border-color:#d9dee7}.button.wechat{width:100%;background:#07c160;color:#fff}.login-page{display:grid;align-content:center;gap:42px;background:#fff}.app-notice,.login-notice{margin:0 0 14px;padding:12px 14px;border-radius:8px;font-size:14px;line-height:1.5}.app-notice.info,.login-notice.info{color:#2f6fed;background:#eef4ff}.app-notice.success,.login-notice.success{color:#027a48;background:#ecfdf3}.app-notice.error,.login-notice.error{color:#b42318;background:#fef3f2}.confirm-backdrop{position:fixed;inset:0;z-index:60;background:rgba(15,23,42,.38);display:grid;place-items:center;padding:20px}.confirm-dialog{width:min(360px,100%);background:#fff;border-radius:12px;padding:20px}.confirm-dialog h3{margin:0 0 10px;font-size:17px}.confirm-dialog p{margin:0;color:#475467;font-size:14px;line-height:1.6}.confirm-actions{margin-top:18px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.brand-block{text-align:center}.brand-mark{width:88px;height:88px;margin:0 auto 24px;border-radius:50%;display:grid;place-items:center;background:#2f6fed;color:#fff;font-size:38px;font-weight:800;box-shadow:0 18px 36px #2f6fed38}.brand-block h1{margin:0 0 10px;font-size:28px}.brand-block p,.login-panel p{margin:0;color:#667085}.login-panel{display:grid;gap:18px}.login-panel h2{margin:0;font-size:20px}.login-switch{min-height:42px;padding:4px;display:grid;grid-template-columns:repeat(2,1fr);gap:4px;background:#eef0f3;border-radius:8px}.login-switch button{border:0;border-radius:6px;background:transparent;color:#667085;font-size:14px;font-weight:700}.login-switch button.active{background:#fff;color:#1f2933;box-shadow:0 2px 8px #121d2b14}.login-form{display:grid;gap:14px}.login-form .button{width:100%}.login-disabled{min-height:44px;display:grid;place-items:center;color:#b42318;font-size:14px}.field{display:grid;gap:8px}.field span{color:#344054;font-size:14px;font-weight:700}.field input{width:100%;min-height:44px;border:1px solid #d9dee7;border-radius:8px;padding:0 12px;background:#fff;color:#1f2933}.code-field{display:grid;grid-template-columns:1fr 112px;gap:8px}.code-button{min-height:44px;border:1px solid #2f6fed;border-radius:8px;background:#fff;color:#2f6fed;font-size:14px;font-weight:700}.tabs{position:sticky;top:calc(58px + env(safe-area-inset-top));z-index:20;margin:-1px -16px 14px;padding:0 16px;display:grid;grid-template-columns:repeat(4,1fr);gap:6px;background:#fff;border-bottom:1px solid #e6e8eb}.tabs button{height:48px;border:0;border-bottom:3px solid transparent;background:transparent;color:#667085;font-size:14px}.tabs button.active{color:#1f2933;border-bottom-color:#2f6fed;font-weight:700}.public-contract-notice{margin:0 0 14px;padding:12px 14px;color:#2f6fed;background:#eef4ff;border:0;border-radius:8px;font-size:14px;font-weight:700;line-height:1.5}.state-block{min-height:260px;display:grid;place-content:center;gap:10px;text-align:center;color:#667085}.state-block.fill{min-height:calc(100vh - 82px)}.state-block strong{color:#344054}.empty-state{min-height:260px;padding:28px 18px;display:grid;place-content:center;justify-items:center;gap:10px;text-align:center;color:#667085}.empty-state.fill{min-height:calc(100vh - 82px)}.empty-state-image{width:min(190px,54vw);height:auto;display:block;margin-bottom:4px}.empty-state strong{color:#344054;font-size:16px}.empty-state span{max-width:280px;font-size:14px;line-height:1.6}.contract-list{display:grid;gap:12px}.contract-card,.detail-head,.info-list,.plain-section,.sign-meta{background:#fff;border:1px solid #e6e8eb;border-radius:8px}.contract-card{padding:16px;display:grid;grid-template-columns:1fr auto;gap:12px}.contract-card-head{min-width:0}.contract-card h2,.detail-head h2{margin:0 0 6px;font-size:16px}.contract-card p{margin:0;color:#667085;font-size:13px}.contract-card dl,.info-list{grid-column:1 / -1;margin:0;display:grid;gap:10px}.contract-card dl{grid-template-columns:1fr 1fr;padding-top:12px;border-top:1px solid #eef0f3}.contract-card-actions{grid-column:1 / -1;display:flex;justify-content:flex-end;padding-top:12px;border-top:1px solid #eef0f3}.contract-card-actions .button{min-width:112px}.contract-card dt,.info-list dt{color:#667085;font-size:12px}.contract-card dd,.info-list dd{margin:4px 0 0;color:#263241;font-size:13px}.status-badge{height:28px;padding:0 10px;border-radius:999px;display:inline-flex;align-items:center;font-size:12px;font-weight:700}.status-badge.is-pending{background:#fff4dc;color:#9b5d00}.status-badge.is-signed{background:#dcf7e6;color:#04773b}.status-badge.is-expired{background:#ffe5e5;color:#b42318}.status-badge.is-unknown{background:#eceff3;color:#667085}.load-more{width:100%;height:44px;margin-top:16px;border:1px solid #d9dee7;border-radius:8px;background:#fff}.detail-stack{display:grid;gap:12px}.detail-head{padding:16px;display:flex;justify-content:space-between;gap:12px}.info-list{padding:16px}.info-list div{display:flex;justify-content:space-between;gap:18px;padding-bottom:10px;border-bottom:1px solid #eef0f3}.info-list div:last-child{padding-bottom:0;border-bottom:0}.info-list dd{text-align:right}.plain-section{padding:16px}.plain-section h3{margin:0 0 10px;font-size:16px}.plain-section p{margin:0;color:#667085;line-height:1.7}.sign-page{height:100vh;padding-bottom:calc(74px + env(safe-area-inset-bottom));display:flex;flex-direction:column;overflow:hidden}.sign-meta{margin-bottom:10px;padding:12px;display:flex;justify-content:space-between;gap:12px;font-size:13px}.sign-meta div{display:grid;gap:4px}.sign-meta span{color:#667085}.sign-meta-side{display:grid;gap:4px;justify-items:end;white-space:nowrap}.guest-sign-form{margin-bottom:10px;padding:12px;display:grid;grid-template-columns:1fr 1fr;gap:12px;background:#fff;border:1px solid #e6e8eb;border-radius:8px}.participant-info{margin-bottom:10px;padding:12px;color:#1f7a4d;background:#ecfdf3;border:1px solid #b7ebc6;border-radius:8px;font-size:14px;font-weight:700}.pdf-stage{position:relative;flex:1;min-height:360px;overflow:hidden;background:#f5f6f8;border:1px solid #e6e8eb;border-radius:8px}.pdf-stage.image-stage{overflow:auto;background:#f5f6f8;align-self:stretch}.pdf-page-image{width:100%;height:auto;display:block;background:#fff}.pdf-object,.pdf-object iframe{width:100%;height:100%;border:0;display:block}.pdf-empty{height:100%;min-height:360px}.sign-actions{position:fixed;left:0;right:0;bottom:0;z-index:35;padding:12px 14px calc(12px + env(safe-area-inset-bottom));display:grid;grid-template-columns:1fr 1fr 1.4fr;gap:10px;background:#fff;border-top:1px solid #e6e8eb}.sign-actions.two-actions{grid-template-columns:repeat(2,minmax(0,1fr))}.sign-actions.three-actions{grid-template-columns:1fr 1fr 1.4fr}.sign-actions.control-mode{grid-template-columns:1fr}.app-tabbar{position:fixed;left:0;right:0;bottom:0;z-index:34;min-height:calc(62px + env(safe-area-inset-bottom));padding:8px 12px calc(8px + env(safe-area-inset-bottom));display:grid;grid-template-columns:1fr 1fr;gap:8px;background:#fff;border-top:1px solid #e6e8eb}.tabbar-item{border:0;border-radius:8px;background:transparent;color:#667085;display:grid;place-items:center;gap:2px;font-size:12px;font-weight:700}.tabbar-item.active{color:#2f6fed;background:#eef4ff}.public-tabbar{grid-template-columns:minmax(120px,1fr);justify-content:center}.public-tabbar .tabbar-item{justify-self:center;width:min(180px,100%)}.public-tabbar .tabbar-item.active{background:transparent}.tabbar-item.danger{color:#d92d20}.tabbar-icon{font-size:20px;line-height:1}.page-toolbar{margin-bottom:10px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.page-toolbar .button{min-height:38px;padding:0 10px;font-size:14px}.file-button input{display:none}.file-button.disabled{cursor:not-allowed;opacity:.55}.drag-item{position:absolute;z-index:10;display:grid;place-items:center;box-sizing:border-box;overflow:visible;touch-action:none;user-select:none}.drag-item img{width:100%;height:100%;object-fit:contain;object-position:center center;pointer-events:none}.drag-item.selected{outline:2px dashed #2f6fed;background:rgba(47,111,237,.04)}.drag-size{position:absolute;top:-22px;left:50%;min-height:18px;padding:0 4px;border-radius:0;background:rgba(255,255,255,.9);color:#409eff;display:inline-flex;align-items:center;justify-content:center;font-size:12px;line-height:1;white-space:nowrap;pointer-events:none;transform:translate(-50%)}.sign-control-button{position:absolute;z-index:9;box-sizing:border-box;padding:0;display:flex;align-items:center;justify-content:center;border:1px dashed #2f6fed;border-radius:6px;color:#2f6fed;background:rgba(238,244,255,.92);font:inherit;font-size:14px;font-weight:800;line-height:1;appearance:none;-webkit-appearance:none;cursor:pointer;touch-action:manipulation}.drag-delete{position:absolute;top:-12px;right:-12px;width:28px;height:28px;border:1px solid #ff4d4f;border-radius:50%;background:#fff;color:#d92d20;font-size:18px}.drag-handle{position:absolute;right:-8px;bottom:-8px;width:18px;height:18px;border:2px solid #fff;background:#2f6fed}.modal-backdrop{position:fixed;inset:0;z-index:50;background:#fff}.signature-pad{height:100%;display:flex;flex-direction:row;background:#fbfbfb;overflow:hidden}.signature-side{width:62px;height:100%;position:relative;display:flex;flex-shrink:0}.signature-side-actions{align-items:center;justify-content:flex-start;padding:0}.signature-side-title{flex-direction:column;align-items:center;justify-content:center}.signature-side-title strong{transform:rotate(90deg);color:#666;font-size:16px;font-weight:500;white-space:nowrap}.signature-close{position:absolute;top:14px;left:50%;width:36px;height:36px;transform:translate(-50%) rotate(90deg);border:0;background:transparent;color:#999;font-size:30px;line-height:1}.signature-side-button{position:absolute;left:50%;min-width:86px;min-height:38px;padding:0 20px;transform:translate(-50%) rotate(90deg);border:0;border-radius:4px;background:#fff;color:#666;font-size:15px;font-weight:700;line-height:1;box-shadow:0 1px 4px #10182814}.signature-side-actions .signature-side-button:first-child{top:92px}.signature-side-button-primary{bottom:88px;background:#008ef6;color:#fff}.signature-side-button:disabled{opacity:.55}.signature-canvas-area{position:relative;flex:1;height:100%;min-width:0;overflow:hidden;border:2px dashed #e9e9e9;background:#fff;box-sizing:border-box}.signature-tip{position:absolute;inset:0;z-index:1;display:grid;place-items:center;pointer-events:none;user-select:none}.signature-tip span{transform:rotate(90deg);color:#00000024;font-size:38px;font-weight:300;letter-spacing:8px;white-space:nowrap}.signature-canvas{position:relative;z-index:2;width:100%;height:100%;display:block;background:transparent;touch-action:none}@media (max-width: 420px){.signature-side{width:52px}.signature-side-button{min-width:74px;min-height:34px;padding:0 14px;font-size:14px}.signature-tip span{font-size:32px;letter-spacing:6px}}@media (max-width: 520px){.guest-sign-form{grid-template-columns:1fr}}@media (min-width: 760px){.page,.login-page{max-width:520px;margin:0 auto}.sign-page{max-width:780px;margin:0 auto}.sign-actions,.app-tabbar{left:50%;width:min(780px,100vw);transform:translate(-50%)}}
