:root{--red:#a61d2d;--deep:#791724;--ink:#25282c;--muted:#73777d;--line:#e4e5e8;--soft:#faf0f1;--paper:#fff;font-family:"Microsoft YaHei UI","Microsoft YaHei","PingFang SC",sans-serif;color:var(--ink);font-size:14px}
*{box-sizing:border-box}body{margin:0;background:#f5f6f7}button,input,textarea{font:inherit}button,a,input,textarea,summary{-webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit}a{color:inherit}button:focus-visible,a:focus-visible,summary:focus-visible,input:focus-visible,textarea:focus-visible{outline:3px solid #bf7180;outline-offset:3px}[hidden]{display:none!important}button{border:0;background:none}button:hover{color:var(--red)}.topbar{height:62px;display:flex;align-items:center;gap:28px;padding:0 30px;border-bottom:1px solid var(--line);background:white}.home{text-decoration:none;color:var(--muted);font-size:12px}.topbar>strong{font-size:16px}.topbar #saveState{margin-left:auto;color:#597568;font-size:12px}.workspace{display:grid;grid-template-columns:minmax(340px,40%) minmax(0,60%);height:calc(100dvh - 62px);max-width:1800px;margin:auto}.editor{background:white;overflow-y:auto;padding:32px 30px 24px;border-right:1px solid var(--line)}.eyebrow{color:var(--red);font-size:12px;letter-spacing:1px}h1{font-size:26px;letter-spacing:-.7px;margin:12px 0}p{line-height:1.65}.intro p{color:var(--muted);margin:0 0 24px}.fields{margin-bottom:20px}label{display:block;font-size:13px;font-weight:600}input,textarea{display:block;width:100%;border:1px solid #dfe1e4;border-radius:6px;background:#fff;padding:10px 12px;margin-top:7px;resize:vertical;color:var(--ink)}input::placeholder,textarea::placeholder{color:#96999d;font-weight:400}.contact{margin-top:13px}.contact summary{cursor:pointer;font-size:12px;color:var(--muted)}.contact-fields{display:grid;gap:12px;padding-top:14px}.selection{display:flex;align-items:center;justify-content:space-between;padding:15px 0 10px;border-top:1px solid var(--line)}.selection strong{font-size:13px}.selection button{font-size:12px;padding:6px}.material{display:flex;gap:10px;align-items:flex-start;padding:13px 0;border-bottom:1px solid #eee}.material label{display:flex;gap:11px;align-items:flex-start;flex:1;cursor:pointer;font-weight:400;min-width:0}.material input{width:16px;height:16px;flex-shrink:0;margin:3px 0 0;accent-color:var(--red)}.material strong{display:block;font-size:14px;font-weight:600;line-height:1.55;overflow-wrap:anywhere}.material small{display:block;font-size:12px;line-height:1.6;color:var(--muted);margin-top:3px;overflow-wrap:anywhere}.material .conditional{font-size:10px;color:var(--red);font-weight:400;display:inline-block;margin-left:5px}.remove{font-size:20px;line-height:1;padding:4px;color:#888}.add{border:1px dashed #d4aab0;border-radius:6px;padding:12px;width:100%;margin-top:18px;color:var(--red)}.editor-note{font-size:11px;color:var(--muted);margin:16px 0 0}.preview{display:flex;flex-direction:column;min-height:0;padding:20px 26px 18px;gap:12px;min-width:0}.preview-head{display:flex;justify-content:space-between;gap:10px;align-items:center;flex-shrink:0}.preview-head strong{display:block;font-size:14px}.preview-head span{font-size:11px;color:var(--muted);display:block;margin-top:5px}.scales{display:flex;border:1px solid #dfe1e4;border-radius:6px;background:white;padding:3px}.scales button{font-size:11px;padding:5px 10px;border-radius:4px;white-space:nowrap}.scales .active{background:var(--red);color:white}.stage{flex:1;overflow:auto;min-height:0;padding:10px;display:flex;align-items:flex-start;justify-content:center;background:#e9ecef;border-radius:7px}.frame{flex-shrink:0;position:relative}.paper{width:794px;min-height:1123px;padding:35px 43px 28px;background:white;box-shadow:0 5px 25px #17233014;border-top:7px solid var(--red);transform-origin:top left;overflow-wrap:anywhere}.paper-top{display:flex;justify-content:space-between;font-size:11px;color:var(--muted);letter-spacing:.5px}.paper-title{margin:23px 0 20px}.paper-title>span{font-size:12px;color:var(--red)}.paper-title h2{font-size:32px;letter-spacing:2px;margin:8px 0 14px;font-family:"STZhongsong","SimSun",serif}.paper-title p{margin:0;font-size:15px;font-weight:600}.section-title{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);padding-bottom:9px}.paper h3{margin:0;color:var(--red);font-size:13px;letter-spacing:.5px}.paper h3 span{color:var(--ink);margin-left:8px;font-size:15px}.small{font-size:10px;color:var(--muted)}.paper-list{list-style:none;padding:0;margin:4px 0 0;counter-reset:materials}.paper-list li{display:grid;grid-template-columns:22px 205px 1fr;gap:5px;padding:10px 0;border-bottom:1px solid #efeff1;break-inside:avoid;font-size:12px;line-height:1.65;counter-increment:materials}.paper-list li:before{content:counter(materials,decimal-leading-zero);color:#9b9ea3;font-size:10px;padding-top:2px}.paper-list strong{font-size:13px;font-weight:600}.paper-list .requirement{color:#666a71}.downloads{margin-top:23px;break-inside:avoid}.download-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:11px}.download{display:flex;align-items:center;justify-content:space-between;border:1px solid #e1c7cc;border-radius:5px;padding:11px 13px;text-decoration:none;background:#fffafb;gap:8px}.download:hover{border-color:var(--red);background:var(--soft)}.download strong{display:block;font-size:13px;color:var(--red)}.download small{display:block;font-size:10px;color:var(--muted);margin-top:5px}.download b{color:var(--red);font-size:21px;font-weight:400}.download-tip{font-size:10px;color:var(--muted);margin:8px 0 0}.booking{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-top:22px;padding:20px;background:#f8f8f9;break-inside:avoid}.booking-key{font-size:13px;margin:12px 0 10px}.booking-key strong{color:var(--red);margin:0 3px}.booking-steps{list-style:none;padding:0;margin:0;display:grid;gap:7px;font-size:12px}.booking-steps li{display:flex;gap:7px;align-items:center}.booking-steps li>span{border:1px solid #d8c3c7;color:var(--red);width:18px;height:18px;display:inline-flex;align-items:center;justify-content:center;font-size:10px;border-radius:50%;flex-shrink:0}.booking-steps strong{font-weight:600}.same-phone{font-size:10px;color:var(--muted);max-width:330px;margin:10px 0 0}.qr{flex-shrink:0;text-align:center}.qr img{width:144px;height:144px;background:white;padding:7px;display:block;object-fit:contain}.save-qr{display:inline-block;font-size:11px;color:var(--red);margin-top:9px;text-decoration:none}.paper-footer{border-top:1px solid var(--line);margin-top:23px;padding-top:12px;font-size:11px;color:#656970}.paper-footer p{margin:3px 0;white-space:pre-wrap}.paper-footer>span{display:block;margin-top:8px;color:var(--muted);font-size:10px}.actions{display:flex;justify-content:flex-end;gap:10px;flex-shrink:0}.actions button,.dialog-actions button{padding:11px 23px;border-radius:6px;font-size:13px}.primary{background:var(--red);color:white!important;border:1px solid var(--red)}.primary:hover{background:var(--deep)}.secondary{background:white;border:1px solid #d9dbdf}.print-links{display:none}dialog{border:1px solid var(--line);border-radius:12px;padding:25px;width:min(440px,calc(100vw - 32px));box-shadow:0 20px 70px #0003}dialog::backdrop{background:#14202b55}dialog h2{font-size:21px;margin:0 0 20px}dialog label+label{margin-top:15px}.dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:22px}#toast{position:fixed;bottom:28px;left:50%;transform:translateX(-50%);background:#293238;color:white;z-index:5;max-width:90%;padding:13px 21px;border-radius:7px;font-size:13px;box-shadow:0 4px 16px #0002}.no-script{padding:20px;color:var(--red)}
@media screen and (max-width:1100px) and (min-width:801px){.topbar{padding:0 20px}.editor{padding:25px 20px}.preview{padding:20px 15px}.workspace{grid-template-columns:350px minmax(0,1fr)}}
@media screen and (max-width:800px){.topbar{height:auto;min-height:58px;padding:12px 16px;gap:12px;flex-wrap:wrap}.topbar>strong{font-size:14px}.topbar #saveState{font-size:10px}.home{font-size:11px}.workspace{display:block;height:auto}.editor{padding:27px 20px;border-right:0;border-bottom:1px solid var(--line);overflow:visible}h1{font-size:25px}.preview{padding:23px 12px 25px}.scales{display:none}.stage{display:block;overflow:visible;background:none;padding:0;margin-top:8px}.frame{width:100%!important;height:auto!important}.paper{width:100%;min-height:0;transform:none!important;padding:25px 20px 22px;border-top-width:5px;box-shadow:0 3px 12px #1723300a}.paper-title h2{font-size:27px}.paper-list li{grid-template-columns:22px minmax(0,1fr);padding:12px 0}.paper-list .requirement{grid-column:2}.download-grid{grid-template-columns:1fr}.download{padding:13px}.download strong{font-size:14px}.download small{font-size:11px}.booking{flex-direction:column;align-items:stretch;padding:18px;gap:15px}.booking-key{font-size:13px}.booking-steps{font-size:13px}.same-phone{font-size:11px}.qr{display:flex;flex-direction:column;align-items:center}.qr img{width:170px;height:170px}.save-qr{font-size:12px}.actions{position:static;margin-top:6px;display:grid;grid-template-columns:1fr 1fr}.actions button{padding:13px 5px}.preview-head span{font-size:10px}.paper-footer{font-size:12px}.paper-footer>span,.download-tip{font-size:11px}}
.presets{border:1px solid #ecd9dc;border-radius:7px;padding:13px;margin:0 0 16px;background:#fffafb}.preset-heading{display:flex;justify-content:space-between;gap:8px;align-items:center}.preset-heading strong{font-size:12px}.preset-heading>span,.presets>p{font-size:10px;color:var(--muted)}.presets>p{margin:8px 0 0}.preset-buttons{display:flex;flex-wrap:wrap;gap:7px;margin-top:10px}.preset-buttons button{border:1px solid #dec6cb;border-radius:5px;background:#fff;padding:8px 9px;color:var(--red);font-size:11px;display:flex;gap:10px;justify-content:space-between}.preset-buttons button:hover{background:#f8e9ec}.material{display:block;padding:11px 0}.material-head{display:flex;gap:8px;align-items:flex-start}.material-toggle{flex:1}.material.unselected .material-head strong{color:#73777d}.material .material-note,.physical-hint{margin:6px 0 0 27px;font-size:11px;line-height:1.55}.format-options{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0 0 27px}.format-options .format-choice{display:flex;flex:0 0 auto;gap:5px;align-items:center;padding:5px 7px;border:1px solid #e0e1e5;border-radius:4px;background:#fff;font-size:11px;font-weight:400;cursor:pointer;line-height:1.2}.format-options .format-choice:has(input:checked){border-color:#d197a1;background:#fbf0f2;color:var(--red)}.format-options input{appearance:auto;width:13px;height:13px;margin:0;padding:0;accent-color:var(--red)}.paper-groups{display:flex;gap:13px;margin-top:12px}.format-column{flex:1;min-width:0;border-top:3px solid #a61d2d;background:#fcf8f9;padding:11px 12px}.format-column.stamped_copy{border-color:#b88640;background:#fcfaf5}.format-column.electronic{border-color:#417e86;background:#f5fafb}.format-column h4{font-size:14px;margin:0 0 5px}.group-hint{margin:0 0 9px;color:var(--muted);font-size:10px}.group-list{padding:0;list-style:none;margin:0}.group-list li{position:relative;padding:6px 0 6px 11px;font-size:12px;line-height:1.65;break-inside:avoid;overflow-wrap:anywhere}.group-list li:before{content:'·';position:absolute;left:0;color:#8b8f94}.physical-list{font-size:12px;font-weight:600;background:#f5f5f6;padding:10px 12px;margin:10px 0 0;break-inside:avoid}.material-notes{margin:10px 0 0;padding-left:14px;color:#666a71;font-size:10px;line-height:1.75}.material-notes li{margin:3px 0;break-inside:avoid}.service-cards{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:20px}.booking,.manager-card{display:block;padding:16px;background:#f8f8f9;margin:0;min-width:0;break-inside:avoid}.booking h3 span,.manager-card h3 span{font-size:14px}.booking-key{font-size:11px;color:var(--red);margin:10px 0;font-weight:600;min-height:36px;line-height:1.6}.booking-body,.manager-body{display:flex;align-items:center;justify-content:space-between;gap:8px}.booking-steps{font-size:10px;gap:9px}.booking-steps li{gap:4px}.booking-steps li>span{width:15px;height:15px;font-size:9px}.qr img{width:120px;height:120px;padding:5px}.qr-caption{display:block;font-size:10px;margin-top:6px;color:#555}.qr .save-qr{font-size:10px;margin-top:5px}.qr .wechat-crop{display:block;width:120px;height:120px;position:relative;overflow:hidden;background:white}.qr .wechat-crop img{position:absolute;width:143.85965%;height:auto;max-width:none;left:-21.929825%;top:-64.03509%;padding:0;object-fit:initial}.manager-intro{font-size:11px;color:var(--muted);margin:10px 0;min-height:36px}.manager-details{display:flex;flex-direction:column;gap:9px;min-width:0}.manager-details>strong{font-size:20px;color:var(--ink)}.manager-details>a{font-size:13px;color:var(--red);font-weight:600;text-decoration:none;white-space:nowrap}.manager-details>span{font-size:10px;color:var(--muted)}.same-phone{font-size:9px;margin:10px 0 0}.paper-footer{margin-top:18px}#newFormats{border:0;padding:0;margin:17px 0}#newFormats legend{font-size:13px;font-weight:600}#newFormats .format-options{margin-left:0}#newFormatError{color:var(--red);font-size:12px}
@media screen and (max-width:800px){.material{padding:12px 0}.format-options .format-choice{padding:7px 8px;font-size:12px}.format-options{gap:5px}.material .material-note{font-size:11px}.preset-buttons button{font-size:12px;padding:9px}.paper-groups{display:block}.format-column{margin-bottom:12px;padding:13px 14px}.format-column h4{font-size:15px}.group-list li{font-size:13px}.group-hint,.material-notes{font-size:11px}.physical-list{font-size:12px}.service-cards{grid-template-columns:1fr}.booking,.manager-card{padding:18px}.booking-key,.manager-intro{min-height:0;font-size:12px}.booking-steps{font-size:12px}.booking .qr,.manager-card .qr{display:block}.qr .save-qr,.qr-caption{font-size:11px}.same-phone{font-size:10px}.manager-details>a{font-size:14px}.group-list li{padding-top:6px;padding-bottom:6px}}



/* Each material is rendered once; all selected formats belong to that row. */
.material-table{width:100%;border-collapse:collapse;table-layout:fixed;margin-top:10px;text-align:left;font-size:12px}
.material-table thead th{background:#f6f6f7;color:#767a80;font-weight:400;font-size:10px;padding:8px 10px;border-bottom:1px solid #e3e4e7}
.material-table thead th:first-child{width:57%}
.material-table tbody th,.material-table tbody td{padding:10px;border-bottom:1px solid #e8e9eb;vertical-align:middle}
.material-table tbody th{font-weight:400}.material-table tbody th>strong{font-size:13px;font-weight:600}
.material-table tr{break-inside:avoid}.row-note{display:block;margin-top:4px;font-size:10px;line-height:1.6;color:#73777d;font-weight:400}
.format-badges{display:flex;flex-wrap:wrap;gap:5px}.format-badge{display:inline-block;white-space:nowrap;padding:4px 6px;border:1px solid #e2c3ca;border-radius:3px;background:#fcf2f4;color:#942035;font-size:10px;line-height:1.3}
.format-badge.stamped_copy{border-color:#e5d4b8;background:#fcf8ef;color:#8a6427}.format-badge.electronic{border-color:#c5dfe1;background:#f1f9fa;color:#346c73}.format-badge.physical{border-color:#dcdee2;background:#f5f5f6;color:#5e6268}
@media screen and (max-width:800px){.material-table thead th:first-child{width:55%}.material-table tbody th,.material-table tbody td{padding:10px 5px}.material-table thead th{padding:8px 5px}.material-table tbody th>strong{font-size:12px}.row-note{font-size:10px}.format-badge{font-size:10px;padding:4px}.format-badges{gap:4px}}


.remove{font-size:11px;line-height:1.5;padding:4px 6px;flex-shrink:0}.signing-guide{font-size:10px;line-height:1.7;margin:9px 0 0;color:#656970}.signing-guide strong{color:var(--ink)}.booking-destination{font-size:11px;line-height:1.6;margin:0 0 10px;color:var(--red);overflow-wrap:anywhere}

/* Shared card rows keep both QR images, captions and download links aligned. */
.service-cards{grid-template-rows:auto auto auto;column-gap:12px;row-gap:0}
.service-cards>.booking,.service-cards>.manager-card{display:grid;grid-template-rows:subgrid;grid-row:span 3;gap:0;align-items:stretch;justify-content:normal;padding:16px;border:1px solid #ececef;border-radius:6px}
.service-cards h3{padding-bottom:10px;border-bottom:1px solid #e5e5e8}
.service-intro{padding:10px 0 12px}
.service-intro .booking-key,.service-intro .manager-intro{min-height:0;margin:0;font-size:11px;line-height:1.65}
.service-intro .booking-destination{margin:6px 0 0;font-size:11px;line-height:1.65}
.booking-body,.manager-body{display:grid;grid-template-columns:minmax(0,1fr) 120px;gap:12px;align-items:center}
.service-cards .qr{display:grid;justify-items:center;grid-template-rows:120px auto auto;row-gap:7px;width:120px;text-align:center}
.service-cards .qr-image{display:block;width:120px;height:120px;padding:6px;border:1px solid #e5e5e8;border-radius:4px;background:#fff}
.service-cards .qr-image>img{display:block;width:100%;height:100%;padding:0;object-fit:contain}
.service-cards .qr .wechat-crop{display:block;width:100%;height:100%}
.service-cards .qr-caption{margin:0;line-height:1.4;font-size:10px}
.service-cards .qr .save-qr{margin:0;line-height:1.5;font-size:10px;text-underline-offset:3px}
.service-cards .qr .save-qr:hover{text-decoration:underline}
.service-cards .manager-details{gap:8px}
.service-cards .manager-details>a{font-variant-numeric:tabular-nums;letter-spacing:.2px}
.service-cards+.same-phone{max-width:none;margin:9px 0 0;text-align:center;color:var(--muted);font-size:10px}
@media screen and (max-width:800px){
 .service-cards{grid-template-rows:none;row-gap:12px}
 .service-cards>.booking,.service-cards>.manager-card{grid-row:auto;grid-template-rows:auto auto auto;padding:16px}
 .service-intro .booking-key,.service-intro .manager-intro,.service-intro .booking-destination{font-size:12px}
 .booking-body,.manager-body{gap:10px}
 .service-cards .booking-steps{font-size:11px}
 .service-cards .manager-details>a{font-size:12px}
 .service-cards .qr-caption,.service-cards .qr .save-qr{font-size:11px}
}
@media screen and (max-width:360px){
 .booking-body,.manager-body{grid-template-columns:minmax(0,1fr) 104px;gap:8px}
 .service-cards .qr{width:104px;grid-template-rows:104px auto auto}
 .service-cards .qr-image{width:104px;height:104px;padding:5px}
 .service-cards>.booking,.service-cards>.manager-card{padding:12px}
 .service-cards .manager-details>a{font-size:11px;letter-spacing:0}
 .service-cards .booking-steps{font-size:10px}
}


/* Mobile actions stay reachable while the editor and reading preview scroll. */
.mobile-actions { display: none; }
.undo-row { display: flex; justify-content: flex-end; margin: 8px 0 12px; }
.undo-row button { min-height: 36px; padding: 6px 12px; border: 1px solid #bfc7ca; border-radius: 5px; background: white; color: #39454a; cursor: pointer; }
.undo-row button:disabled { color: #687078; background: #f3f4f4; cursor: default; }
.mobile-actions button:focus-visible, .undo-row button:focus-visible { outline: 3px solid #a61d2d; outline-offset: 2px; }
@media screen and (max-width: 800px) {
  html { scroll-padding-bottom: calc(88px + env(safe-area-inset-bottom)); }
  body { padding-bottom: calc(88px + env(safe-area-inset-bottom)); }
  button, input, textarea, summary, [tabindex] { scroll-margin-top: 16px; scroll-margin-bottom: calc(88px + env(safe-area-inset-bottom)); }
  .mobile-actions { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 6px; position: fixed; bottom: 0; left: 0; right: 0; z-index: 50; border-top: 1px solid #cbd0d2; background: #fff; padding: 8px 10px calc(8px + env(safe-area-inset-bottom)); }
  .mobile-actions button { min-width: 0; min-height: 44px; border: 1px solid #d3d7d9; border-radius: 5px; background: #fff; color: #344046; font-size: 13px; font-weight: 600; padding: 6px 2px; cursor: pointer; }
  .mobile-actions button:last-child { background: #a61d2d; border-color: #a61d2d; color: white; }
  .mobile-count { font-size: 12px; }
  .undo-row button { min-height: 44px; font-size: 14px; }
  dialog input, dialog textarea { font-size: 16px; }
  dialog button { min-height: 44px; }
  #toast { bottom: calc(80px + env(safe-area-inset-bottom)); max-width: calc(100vw - 32px); width: max-content; font-size: 14px; }
}


.remove { color: #595f65; }
@media screen and (max-width: 800px) {
  .fields input, .fields textarea, dialog input, dialog textarea { font-size: 16px; min-height: 44px; }
  .fields label, .contact summary, .intro p, .editor-note { font-size: 14px; }
  .material-toggle strong { font-size: 16px; }
  .material-toggle { min-height: 44px; }
  .material .material-note, .physical-hint { font-size: 13px; }
  .format-options .format-choice { min-height: 44px; font-size: 14px; padding: 8px; }
  .remove, .selection button { min-width: 44px; min-height: 44px; font-size: 14px; }
  .selection { flex-wrap: wrap; gap: 8px; }
  .selection > div { display: flex; gap: 8px; flex-wrap: wrap; }
  .preset-buttons button, .add, .actions button { min-height: 44px; font-size: 14px; }
  .preset-heading > span, .presets > p, .conditional { font-size: 12px; }
  .paper .material-table tbody th > strong { font-size: 16px; }
  .paper .format-badge, .paper .row-note { font-size: 13px; }
  .paper .material-table thead th { font-size: 13px; }
  .paper .signing-guide, .paper .paper-footer, .paper .download-tip { font-size: 14px; }
  .paper .download small { font-size: 13px; }
  .paper .section-title .small { font-size: 12px; }
}

@media screen and (max-width:800px) { .paper .section-title { flex-wrap: wrap; gap: 8px; } .material .conditional { font-size: 12px; } }
