.issue-layout { display: grid; grid-template-columns: minmax(440px, 1fr) minmax(0, 1.08fr); gap: 24px; align-items: start; }
.editor-panel { min-width: 0; padding: 0; overflow: hidden; }
.editor-heading { padding: 18px 22px; display: flex; justify-content: space-between; align-items: center; gap: 12px; border-bottom: 1px solid var(--border); }
.editor-heading h2 { font-size: 14px; margin: 0; }
.eyebrow { font-size: 11px; color: var(--muted); margin: 0 0 4px; }
.save-indicator { font-size: 11px; color: #7b8592; }
#validationSummary { margin: 16px 22px 0; }
.editor-section { border: 0; border-bottom: 1px solid #e8ebef; background: #fff; }
.editor-section summary { list-style: none; cursor: pointer; display: flex; align-items: center; gap: 10px; padding: 17px 22px; font-weight: 600; font-size: 13px; user-select: none; }
.editor-section summary::-webkit-details-marker { display: none; }
.editor-section summary::after { content: ""; width: 6px; height: 6px; border-right: 1.5px solid #8a95a2; border-bottom: 1.5px solid #8a95a2; transform: rotate(45deg); margin-left: auto; margin-right: 3px; }
.editor-section[open] summary::after { transform: rotate(225deg); }
.editor-section summary b { font-size: 11px; font-weight: 500; color: #91a0af; font-variant-numeric: tabular-nums; }
.section-content { padding: 0 22px 22px; }
.field-grid { display: grid; gap: 14px 16px; }
.two-columns { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.three-columns { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.party-grid { display: grid; gap: 22px; }
.party-card { min-width: 0; border: 0; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.party-card legend { font-size: 12px; font-weight: 500; color: #4d5a6a; margin-bottom: 12px; padding: 0; }
.party-card legend .badge { margin-left: 6px; }
.party-card .field:first-of-type { grid-column: 1 / -1; }
.party-card:not(.party-locked) .field { grid-column: 1 / -1; }
.party-locked { padding-top: 0; }
.items-toolbar { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-bottom: 14px; }
.items-toolbar p { margin: 0; font-size: 11px; color: var(--muted); max-width: 230px; }
.item-card { border: 1px solid var(--border); border-radius: 4px; padding: 14px; margin-bottom: 12px; }
.item-card-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px; }
.item-card-header strong { font-size: 11px; color: #6d7b8b; font-weight: 500; }
.remove-item { border: 0; background: transparent; color: #8b96a3; width: 24px; height: 24px; border-radius: 3px; cursor: pointer; font-size: 19px; line-height: 1; }
.remove-item:hover:not(:disabled) { background: #fcf0ee; color: var(--danger); }
.item-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; }
.item-grid .field:nth-child(-n+2) { grid-column: span 2; }
.item-grid .field input { padding: 7px 8px; font-size: 12px; }
.totals-card { display: flex; justify-content: space-between; gap: 16px; padding: 16px 0; margin: 0 0 12px; border-bottom: 1px solid var(--border); }
.totals-card span { display: block; font-size: 11px; color: var(--muted); margin-bottom: 5px; }
.totals-card strong { font-size: 14px; font-weight: 550; color: var(--text); font-variant-numeric: tabular-nums; }
.totals-card > div:first-child strong { font-size: 21px; }
.totals-card > div:last-child { text-align: right; }
.toggle-row { display: flex; align-items: center; gap: 7px; font-size: 12px; color: #526071; }
#uppercaseOverrideField { margin-top: 12px; }
.editor-footnote { padding: 16px 22px; background: #fafbfc; font-size: 11px; color: #7a8592; line-height: 1.8; }
.preview-panel { position: sticky; top: 88px; min-width: 0; border: 1px solid var(--border); border-radius: 6px; background: #fff; overflow: hidden; }
.preview-heading { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 16px 20px; }
.preview-heading h2 { font-size: 12px; color: #738090; margin: 0; font-weight: 400; }
.preview-heading .eyebrow { color: var(--text); font-size: 13px; font-weight: 600; }
.zoom-control { display: flex; align-items: center; gap: 8px; font-size: 11px; color: var(--muted); }
.zoom-control select { border: 1px solid var(--border); background: #fff; border-radius: 4px; padding: 5px 8px; font-size: 11px; color: #526071; }
.preview-stage { background: #e9edf1; border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); padding: 28px 20px; overflow: auto; max-height: calc(100vh - 290px); min-height: 260px; display: grid; align-items: center; }
.paper-wrap { width: min(100%, 1120px); margin: 0 auto; }
#receiptCanvas { width: 100%; height: auto; display: block; background: #fff; box-shadow: 0 3px 10px #2233441a; }
.export-bar { padding: 18px 20px; }
.export-meta { display: flex; justify-content: space-between; align-items: center; gap: 14px; margin-bottom: 16px; }
.export-meta strong { font-size: 11px; color: #6b7887; font-weight: 400; }
.export-meta span { font-size: 10px; color: #8a949f; }
.export-actions { display: flex; justify-content: flex-end; gap: 10px; }
.preview-notice { font-size: 11px; color: #7a8694; margin: 16px 20px 0; padding-bottom: 16px; line-height: 1.8; }
.batch-card { max-width: 900px; }
.batch-card h3 { font-size: 15px; }
.batch-actions { display: flex; gap: 10px; margin: 22px 0; flex-wrap: wrap; }
#batchIssueButton { margin-top: 20px; }
#batchIssues { margin-top: 16px; }
.batch-instructions { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; border-bottom: 1px solid var(--border); padding-bottom: 24px; margin-bottom: 24px; }
.batch-instructions span { color: #8b97a5; font-size: 11px; display: block; margin-bottom: 8px; }
.batch-instructions h3 { font-size: 13px; }
.batch-instructions p { font-size: 12px; color: var(--muted); margin: 0; }
.key-create { display: flex; gap: 8px; flex-wrap: wrap; }
.key-create input { border: 1px solid #d5dbe2; border-radius: 4px; padding: 8px 10px; font-size: 12px; min-width: 0; width: 220px; max-width: 100%; }
#keySecretNotice { margin-bottom: 18px; }
#keySecretNotice code { display: inline-block; overflow-wrap: anywhere; margin-top: 6px; }
.billing-grid { display: grid; grid-template-columns: 1.15fr 1fr; gap: 24px; align-items: start; }
.billing-grid > .card { min-width: 0; }
.billing-grid h3 { font-size: 15px; margin-bottom: 14px; }
.billing-stats { display: grid; grid-template-columns: 1fr 1fr; border-bottom: 1px solid var(--border); padding-bottom: 22px; gap: 24px; }
.billing-stats > div + div { border-left: 1px solid var(--border); padding-left: 24px; }
.billing-stats span { display: block; font-size: 12px; color: var(--muted); margin-bottom: 8px; }
.billing-stats strong { font-size: 30px; font-weight: 500; font-variant-numeric: tabular-nums; }
.billing-stats small { color: var(--muted); margin-left: 5px; font-size: 11px; }
.tiers-grid { display: grid; margin-top: 18px; border-top: 1px solid var(--border); }
.tier-card { display: flex; justify-content: space-between; align-items: center; gap: 12px; border-bottom: 1px solid var(--border); padding: 18px 0; }
.tier-card strong { font-size: 14px; font-weight: 550; }
.tier-card .tier-price { font-weight: 600; font-size: 16px; }
.tier-card .tier-note { display: block; font-size: 11px; color: var(--muted); }
.status-active, .status-void { font-size: 12px; }
.status-active { color: var(--success); }
.status-void { color: var(--danger); }
@media (max-width: 1180px) { .issue-layout { grid-template-columns: minmax(400px, 1fr) minmax(0, 1fr); gap: 18px; } .export-actions { flex-wrap: wrap; } .export-meta { align-items: flex-start; flex-direction: column; gap: 4px; } .billing-grid { grid-template-columns: 1fr; } }
@media (max-width: 1020px) { .issue-layout { grid-template-columns: 1fr; } .preview-panel { position: static; } .preview-stage { max-height: none; } }
@media (max-width: 520px) { .editor-heading, .editor-section summary { padding-left: 16px; padding-right: 16px; } .section-content { padding-left: 16px; padding-right: 16px; } .two-columns { grid-template-columns: 1fr; } .party-card { grid-template-columns: 1fr; } .item-grid { grid-template-columns: 1fr 1fr; } .item-grid .field:nth-child(-n+2) { grid-column: span 1; } .items-toolbar { align-items: flex-start; } .export-actions { flex-wrap: nowrap; } .export-actions .btn { padding: 9px 10px; font-size: 12px; } .preview-stage { padding: 22px 12px; min-height: 0; } .preview-heading { padding: 16px; } .preview-heading .zoom-control > span { display: none; } .batch-instructions { grid-template-columns: 1fr; gap: 18px; } .billing-stats { gap: 14px; } .billing-stats > div + div { padding-left: 14px; } }
.required-mark { color: var(--danger); font-style: normal; }

/* 开具确认：与工作台同一字体、按钮和额度表达，使用原生 modal 焦点管理。 */
.issue-dialog { width: min(480px, calc(100vw - 32px)); max-width: none; max-height: calc(100dvh - 40px); padding: 0; border: 1px solid #d9dfe6; border-radius: 8px; background: #fff; color: var(--text); box-shadow: 0 20px 70px #16263833; overflow-y: auto; overscroll-behavior: contain; }
.issue-dialog::backdrop { background: rgb(22 34 49 / 42%); }
.issue-dialog-header { position: relative; padding: 25px 26px 19px; border-bottom: 1px solid #edf0f3; }
.issue-dialog-heading { display: flex; align-items: center; gap: 10px; padding-right: 24px; }
.issue-dialog-heading h2 { margin: 0; font-size: 19px; font-weight: 600; letter-spacing: -.3px; }
.issue-dialog-icon { width: 22px; height: 22px; flex-shrink: 0; fill: none; stroke: var(--primary); stroke-width: 1.55; stroke-linecap: round; stroke-linejoin: round; }
.issue-dialog-close { position: absolute; right: 16px; top: 18px; display: grid; place-items: center; width: 32px; height: 32px; padding: 6px; border: 0; border-radius: 4px; background: transparent; color: #7d8996; cursor: pointer; }
.issue-dialog-close:hover { color: var(--text); background: #f1f3f6; }
.issue-dialog-close svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.5; stroke-linecap: round; }
.issue-dialog-header > p { margin: 10px 0 0; color: var(--muted); font-size: 12px; line-height: 1.8; }
.issue-dialog-body { padding: 23px 26px 21px; }
.issue-dialog-amount { display: flex; align-items: baseline; justify-content: space-between; gap: 20px; }
.issue-dialog-amount > span { font-size: 12px; color: var(--muted); flex-shrink: 0; }
.issue-dialog-amount > div { display: flex; align-items: baseline; gap: 5px; min-width: 0; }
.issue-dialog-amount .currency { font-size: 17px; color: #435367; }
.issue-dialog-amount strong { font-size: 30px; line-height: 1.35; font-weight: 550; font-variant-numeric: tabular-nums; letter-spacing: -.6px; overflow-wrap: anywhere; }
.issue-dialog-parties { display: grid; gap: 11px; margin: 20px 0 24px; }
.issue-dialog-parties > div { display: grid; grid-template-columns: 66px minmax(0, 1fr); gap: 20px; align-items: start; font-size: 12px; }
.issue-dialog-parties dt { color: var(--muted); }
.issue-dialog-parties dd { margin: 0; color: #354356; text-align: right; overflow-wrap: anywhere; }
.issue-dialog-quota { padding: 17px 18px; border: 1px solid #e3e8ee; border-radius: 5px; background: #f7f9fb; }
.issue-dialog-charge { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding-bottom: 14px; border-bottom: 1px solid #e3e8ee; font-size: 12px; }
.issue-dialog-charge > span { color: #5d6c7c; }
.issue-dialog-charge strong { font-size: 13px; font-weight: 550; color: var(--primary); }
.issue-dialog-quota > p { margin: 13px 0 11px; color: #7c8997; font-size: 10px; }
.issue-dialog-balances { display: grid; grid-template-columns: 1fr 1fr; margin: 0; }
.issue-dialog-balances > div + div { border-left: 1px solid #e0e6ed; padding-left: 22px; }
.issue-dialog-balances dt { color: #6c7989; font-size: 11px; }
.issue-dialog-balances dd { display: flex; align-items: baseline; gap: 5px; margin: 5px 0 0; }
.issue-dialog-balances strong { font-size: 22px; font-weight: 500; line-height: 1.35; font-variant-numeric: tabular-nums; }
.issue-dialog-balances dd span { font-size: 11px; color: #84909d; }
.issue-dialog-note { margin: 14px 0 0; color: #7a8694; font-size: 11px; line-height: 1.8; }
.issue-dialog-actions { display: flex; justify-content: flex-end; gap: 10px; padding: 17px 26px; border-top: 1px solid #e7ebef; background: #fafbfc; }
.issue-dialog-actions .btn { min-width: 102px; }
.issue-dialog[data-quota="empty"] .issue-dialog-charge strong { color: var(--warn); }
html:has(.issue-dialog[open]) { overflow: hidden; scrollbar-gutter: stable; }
@media (max-width: 520px) {
  .issue-dialog { max-height: calc(100dvh - 24px); }
  .issue-dialog-header { padding: 22px 20px 17px; }
  .issue-dialog-heading h2 { font-size: 18px; }
  .issue-dialog-body { padding: 20px; }
  .issue-dialog-amount strong { font-size: 26px; }
  .issue-dialog-parties > div { gap: 12px; }
  .issue-dialog-actions { padding: 16px 20px; }
  .issue-dialog-actions .btn { flex: 1; }
}
