body.v3-page .v3-ap-wrap{max-width:1200px;margin:0 auto;padding:24px max(24px,env(safe-area-inset-right,0px)) 0 max(24px,env(safe-area-inset-left,0px));background:transparent!important;font-family:var(--v3-font);font-size:14px;line-height:1.6;color:var(--v3-ink)}
:where(.v3-ap-wrap,.v3-ap-wrap *,.v3-ap-modal-backdrop,.v3-ap-modal-backdrop *){border-style:none;border-color:currentColor}
.v3-ap-wrap .v3-ic{display:inline-block;width:20px;height:20px;flex:none;background:currentColor;-webkit-mask:var(--i) center/contain no-repeat;mask:var(--i) center/contain no-repeat}
.v3-ap-back{display:inline-flex;align-items:center;gap:6px;font-size:14px;color:var(--v3-stone);text-decoration:none;margin-bottom:20px}
.v3-ap-back .v3-ic{width:16px;height:16px}
.v3-ap-layout{display:grid;grid-template-columns:300px minmax(0,1fr);gap:56px;align-items:start;margin-top:6px}
.v3-ap-intro{position:sticky;top:calc(var(--folio-nav-h) + 24px);display:grid;justify-items:start;gap:12px;padding-top:8px;min-width:0}
.v3-ap-logo{display:block;width:104px;height:72px;overflow:visible}
/* 阶段8：照定稿标志先描线再填丝带，不在重绘表单时重新挂载。 */
.v3-ap-logo{stroke-dasharray:1000;stroke-dashoffset:0;fill-opacity:1}
@media(prefers-reduced-motion:no-preference){.v3-ap-logo{animation:v3-ap-draw 1.5s cubic-bezier(.45,.05,.2,1) .15s both,v3-ap-fill .6s ease 1.35s both}}
@keyframes v3-ap-draw{0%{stroke-dashoffset:1000;opacity:0}6%{opacity:1}100%{stroke-dashoffset:0;opacity:1}}
@keyframes v3-ap-fill{from{fill-opacity:0}to{fill-opacity:1}}
.v3-ap-intro h1{margin:6px 0 0;font-size:28px;font-weight:600;line-height:1.3;letter-spacing:.04em;color:var(--v3-ink)}
.v3-ap-intro ul{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:12px}
.v3-ap-intro li{display:flex;align-items:center;gap:10px;font-size:14px;color:var(--v3-stone)}
.v3-ap-intro li .v3-ic{width:18px;height:18px;color:var(--v3-action);flex:none}
.v3-ap-content{min-width:0}
.v3-ap-form{display:grid;gap:16px;min-width:0}
body.v3-page main .v3-ap-section{margin:0;padding:22px 22px 24px!important;border:1px solid var(--v3-line);border-radius:16px;background:var(--v3-paper);min-width:0}
.v3-ap-section h2{display:flex;align-items:center;gap:10px;margin:0 0 18px;font-size:14px;font-weight:400;line-height:1.6;color:var(--v3-ink)}
.v3-ap-section h2 b{font-size:17px;font-weight:600}
.v3-ap-section h2 i{font-style:normal;font-size:12px;font-weight:600;color:var(--v3-action);font-variant-numeric:tabular-nums;letter-spacing:.04em}
.v3-ap-section h3{font-size:14px;font-weight:600;margin:4px 0 12px;padding-top:16px;border-top:1px solid var(--v3-line)}
.v3-ap-field{display:grid;gap:8px;margin:0 0 20px;min-width:0;scroll-margin-top:16px}
.v3-ap-field:last-child{margin-bottom:0}
.v3-ap-label{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 8px}
.v3-ap-label b{font-size:14px;font-weight:600;color:var(--v3-ink)}
.v3-ap-field--bad .v3-ap-label b{color:#B8322E}
.v3-ap-label em{font-style:normal;font-size:12px;color:var(--v3-smoke);padding:0 6px;border-radius:4px;background:var(--v3-sheet)}
.v3-ap-label small,.v3-ap-muted{font-size:12px;color:var(--v3-smoke);line-height:1.6}
body.v3-page .v3-ap-field>input,body.v3-page .v3-ap-field textarea{display:block;width:100%;min-width:0;height:40px;padding:0 12px;border:1px solid var(--v3-line-strong)!important;border-radius:8px!important;background:var(--v3-paper)!important;color:var(--v3-ink)!important;font-size:14px;outline:none!important}
body.v3-page .v3-ap-field textarea{height:auto;min-height:68px;max-height:320px;padding:10px 12px 28px;line-height:1.6;resize:none;field-sizing:content;overflow-y:auto}
body.v3-page .v3-ap-field textarea[rows="3"]{height:68px;min-height:68px;max-height:320px}
body.v3-page .v3-ap-field>input:focus,body.v3-page .v3-ap-field textarea:focus{border-color:var(--v3-action)!important;box-shadow:0 0 0 3px rgba(77,175,254,.18)!important}
.v3-ap-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 16px}
.v3-ap-grid--three{grid-template-columns:repeat(3,minmax(0,1fr))}
/* grid 的最后一项不能命中 field:last-child 提前抹掉行尾留白。 */
.v3-ap-grid>.v3-ap-field{margin-bottom:20px}
.v3-ap-section>.v3-ap-grid:last-child>.v3-ap-field{margin-bottom:0}
.v3-ap-handle{display:flex;align-items:center;min-width:0;height:40px;border:1px solid var(--v3-line-strong);border-radius:8px;background:var(--v3-paper);overflow:hidden}
.v3-ap-handle:focus-within{border-color:var(--v3-action);box-shadow:0 0 0 3px rgba(77,175,254,.18)}
.v3-ap-handle span{flex:none;padding:0 2px 0 12px;font-size:14px;color:var(--v3-smoke);white-space:nowrap}
.v3-ap-handle--readonly{justify-content:space-between;background:var(--v3-sheet);border-color:transparent;padding-right:4px}
.v3-ap-handle--readonly:focus-within{border-color:var(--v3-line-strong);box-shadow:none}
.v3-ap-handle--readonly span{color:var(--v3-stone)}
.v3-ap-handle--readonly span b{font-weight:600}
.v3-ap-handle--readonly a{display:inline-flex;align-items:center;gap:2px;height:30px;padding:0 8px;border-radius:6px;color:var(--v3-action);font-size:13px;text-decoration:none;white-space:nowrap}
.v3-ap-handle--readonly a:hover{background:var(--v3-paper);color:var(--v3-action-hover)}
.v3-ap-handle--readonly a .v3-ic{width:14px;height:14px}
body.v3-page .v3-ap-handle input{flex:1;width:100%;min-width:0;height:38px;padding:0 10px 0 0;border:0!important;border-radius:0!important;background:transparent!important;outline:none!important;box-shadow:none!important;color:var(--v3-ink)}
.v3-ap-textarea-wrap{position:relative;min-width:0}
.v3-ap-textarea-wrap small{position:absolute;right:12px;bottom:8px;font-size:12px;color:var(--v3-smoke);font-variant-numeric:tabular-nums;pointer-events:none}
.v3-ap-chips{display:flex;flex-wrap:wrap;gap:8px}
.v3-ap-chips button{display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 12px;border:1px solid var(--v3-line-strong);border-radius:999px;background:var(--v3-paper);font-size:13px;color:var(--v3-ink);cursor:pointer;transition:border-color .15s,background .15s}
.v3-ap-chips button[aria-pressed="true"]{border-color:var(--v3-action);background:var(--v3-tint);color:var(--v3-action-hover);font-weight:600}
.v3-ap-chips button .v3-ic{width:13px;height:13px}
.v3-ap-chips button:hover{border-color:rgba(22,119,210,.45)}
.v3-ap-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.v3-ap-cards button{display:flex;align-items:center;height:48px;padding:0 16px;border:1px solid var(--v3-line-strong);border-radius:12px;background:var(--v3-paper);font-size:14px;font-weight:600;color:var(--v3-ink);text-align:left;cursor:pointer;transition:border-color .15s,background .15s}
.v3-ap-cards button:hover{border-color:rgba(22,119,210,.45)}
.v3-ap-cards button[aria-checked="true"]{border-color:var(--v3-action);background:var(--v3-tint);box-shadow:inset 0 0 0 1px var(--v3-action);color:var(--v3-action-hover)}
.v3-ap-files{display:grid;gap:10px}
.v3-ap-file{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center;gap:6px 12px;padding:12px 14px;border:1px dashed var(--v3-line-strong);border-radius:12px;background:var(--v3-paper)}
.v3-ap-file--bad{border-color:rgba(214,58,54,.5)}
.v3-ap-file-icon{display:grid;place-items:center;width:36px;height:36px;border-radius:8px;background:var(--v3-sheet);color:var(--v3-stone)}
.v3-ap-file-icon .v3-ic{width:18px;height:18px}
.v3-ap-file-text{display:grid;gap:2px;min-width:0}
.v3-ap-file-text b{font-size:14px;font-weight:600}
.v3-ap-file-text small{font-size:12px;color:var(--v3-smoke);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.v3-ap-file .v3-ap-error{grid-column:2/-1}
.v3-ap-file .v3-button--small{gap:6px;white-space:nowrap}
.v3-ap-file .v3-button--small .v3-ic{width:16px;height:16px}
.v3-ap-text-action{padding:5px;border:0;background:none;color:var(--v3-action);font-size:13px;cursor:pointer}
.v3-ap-error{margin:0;color:#C2413B;font-size:12px;line-height:1.6}
.v3-ap-agree{display:flex;align-items:center;flex-wrap:wrap;gap:4px;font-size:13px}
.v3-ap-agree label{display:flex;align-items:center;gap:8px;cursor:pointer}
body.v3-page .v3-ap-agree input{accent-color:var(--v3-action);width:16px;height:16px}
.v3-ap-agree a{color:var(--v3-action);text-decoration:none}
.v3-ap-agree a:hover{text-decoration:underline}
.v3-ap-foot{display:flex;align-items:center;justify-content:flex-end;gap:10px;padding-top:2px}
.v3-ap-status{display:grid;gap:18px;padding:24px;border:1px solid var(--v3-line);border-radius:16px;background:var(--v3-paper)}
.v3-ap-timeline{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}
.v3-ap-timeline li{position:relative;display:grid;justify-items:start;gap:4px;padding-right:12px}
.v3-ap-timeline li:not(:last-child)::after{content:"";position:absolute;left:30px;right:6px;top:11px;height:2px;background:var(--v3-line)}
.v3-ap-timeline li.v3-ap-timeline--done:not(:last-child)::after{background:var(--v3-action)}
.v3-ap-timeline li.v3-ap-timeline--current:not(:last-child)::after{background:linear-gradient(90deg,var(--v3-action) 0,var(--v3-line) 70%)}
.v3-ap-timeline li:not(.v3-ap-timeline--done):not(.v3-ap-timeline--current) b{color:var(--v3-smoke);font-weight:500}
.v3-ap-timeline li span{display:grid;place-items:center;width:24px;height:24px;border:1.5px solid var(--v3-line-strong);border-radius:50%;background:var(--v3-paper);color:var(--v3-paper);font-size:13px}
.v3-ap-timeline li.v3-ap-timeline--done span{background:var(--v3-action);border-color:var(--v3-action)}
.v3-ap-timeline li span .v3-ic{width:14px;height:14px}
.v3-ap-timeline li.v3-ap-timeline--current span{border-color:var(--v3-action);box-shadow:inset 0 0 0 4px var(--v3-paper),inset 0 0 0 12px var(--v3-action)}
.v3-ap-timeline li.v3-ap-timeline--bad span{background:var(--v3-danger);border-color:var(--v3-danger)}
.v3-ap-timeline li b{font-size:14px;font-weight:600;margin-top:4px}
.v3-ap-timeline li small{min-height:18px;font-size:12px;font-variant-numeric:tabular-nums;color:var(--v3-smoke)}
.v3-ap-state{display:grid;gap:4px;padding:14px 16px;border-radius:12px;background:var(--v3-sheet)}
.v3-ap-state b{font-size:17px;font-weight:600}
.v3-ap-state p{margin:0;font-size:13px;color:var(--v3-stone);line-height:1.6}
.v3-ap-state--ok{background:rgba(46,158,107,.07)}
.v3-ap-state--ok b{color:var(--v3-success)}
.v3-ap-state--bad{background:rgba(214,58,54,.05)}
.v3-ap-state--bad b{color:#B8322E}
.v3-ap-summary{display:grid;grid-template-columns:120px minmax(0,1fr);gap:10px 16px;margin:0;padding:16px;border:1px solid var(--v3-line);border-radius:12px;font-size:13px}
.v3-ap-summary dt{color:var(--v3-smoke)}
.v3-ap-summary dd{margin:0;color:var(--v3-ink);line-height:1.6;overflow-wrap:anywhere}
.v3-ap-actions{display:flex;flex-wrap:wrap;gap:10px}
.v3-ap-gate{display:grid;justify-items:center;gap:6px;padding:56px 24px;border:1px solid var(--v3-line);border-radius:12px;background:transparent;text-align:center;font-size:14px;line-height:1.6}
.v3-ap-gate b{font-size:17px}
.v3-ap-gate p{margin:0;font-size:13px;color:var(--v3-smoke)}
.v3-ap-gate .v3-ap-actions{justify-content:center;margin-top:14px}
.v3-ap-modal-backdrop{position:fixed;inset:0;z-index:300;display:flex;align-items:center;justify-content:center;padding:16px;background:rgba(15,23,32,.32);font-family:var(--v3-font);font-size:14px;line-height:1.6;color:var(--v3-ink)}
.v3-ap-modal{width:min(480px,100%);max-height:calc(100vh - 32px);overflow:auto;padding:22px;border:0;border-radius:16px;background:var(--v3-paper);box-shadow:0 24px 60px rgba(15,23,32,.22)}
.v3-ap-modal h2{font-size:17px;font-weight:600;margin:0 0 8px}
.v3-ap-modal p{font-size:12px;color:var(--v3-smoke);line-height:1.6;margin:0}
.v3-ap-modal .v3-ap-actions{justify-content:flex-end;gap:8px}
/* 定稿 .zdform 用 grid gap 分隔标题、规则和动作，不把间距算在标题 margin 上。 */
.v3-ap-modal{display:block}
.v3-ap-modal-form{display:grid;gap:14px}
.v3-ap-modal h2{margin:0;line-height:1.6}
.v3-ap-modal .v3-ap-actions{margin-top:0}
.v3-ap-back{gap:4px;height:30px;padding:0 8px 0 4px;margin:0 0 10px -4px;border-radius:6px;font-size:13px}
.v3-ap-back:hover{background:var(--v3-sheet);color:var(--v3-ink);text-decoration:none}
.v3-ap-intro{top:calc(var(--stk,0px) + 24px)}
.v3-ap-intro .v3-badge{margin-top:-4px}
.v3-ap-intro .v3-tag{margin-top:-4px;font-size:12px;line-height:1.6;padding:2px 8px}
body.v3-page .v3-ap-field input,body.v3-page .v3-ap-field textarea{line-height:1.6}
.v3-ap-agree{min-height:32px;gap:2px}
.v3-ap-agree label{min-height:32px;padding:0 4px 0 2px}
/* 定稿 .apf[data-f="agree"] .zdrule：说明在错误之后，另留 2px 上边距。 */
.v3-ap-field[data-field="pii_consent"]>.v3-ap-muted{margin:2px 0 0}
.v3-ap-timeline li:not(:last-child)::after{border-radius:1px}
.v3-ap-timeline li span .v3-ic{width:13px;height:13px}
.v3-ap-summary{font-variant-numeric:tabular-nums}
.v3-ap-file:has(.v3-ap-file-icon .v3-ic[style*="success"]){border-style:solid;border-color:var(--v3-line)}
.v3-ap-file-icon .v3-ic[style*="success"]{color:var(--v3-success)}
.v3-ap-foot .v3-button{min-width:96px}
.v3-ap-wrap .v3-button{line-height:1.6}
.v3-ap-timeline--bad b{font-weight:600;color:var(--v3-ink)}
.v3-ap-gate>h3{font-size:18px;font-weight:600;line-height:1.6}
.v3-ap-gate>b{font-size:18px;font-weight:600;line-height:1.6}
.v3-ap-preview-reason{display:grid;gap:6px;font-size:13px;margin-bottom:14px}
.v3-ap-appeal-rule{margin:0;font-size:12px;line-height:1.6;color:var(--v3-smoke)}
.v3-ap-preview-reason textarea{width:100%;min-height:68px;padding:10px 12px!important;border:1px solid var(--v3-line-strong)!important;border-radius:8px!important;background:var(--v3-paper)!important;field-sizing:content;resize:none}
.v3-ap-preview-reason textarea:focus{border-color:var(--v3-action)!important;outline:none!important;box-shadow:var(--v3-focus)}
@media(max-width:1040px){.v3-ap-layout{grid-template-columns:minmax(0,1fr);gap:20px}.v3-ap-intro{position:static;grid-template-columns:auto 1fr;align-items:center;column-gap:16px;padding:0}.v3-ap-logo{grid-row:span 2;width:72px;height:50px}.v3-ap-intro h1{margin:0}.v3-ap-intro ul{display:none}}
@media(max-width:640px){.v3-ap-grid,.v3-ap-grid--three,.v3-ap-cards{grid-template-columns:minmax(0,1fr)}.v3-ap-file{grid-template-columns:auto minmax(0,1fr)}.v3-ap-file .v3-button,.v3-ap-file .v3-ap-text-action{grid-column:2;justify-self:start}.v3-ap-summary{grid-template-columns:minmax(0,1fr)}.v3-ap-summary dd{margin-bottom:6px}}
