:root{--ink: #0f6178;--line: rgba(15, 97, 120, .9);--fill-ink: #101010;--paper: #fbfbf8;--screen-bg: #eef1ef;--control-text: #18242b;--muted: #6b747b;--control-line: #d7dce0;color:var(--control-text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:var(--screen-bg)}*{box-sizing:border-box}body{margin:0;min-width:1120px}button,input,select,textarea{font:inherit}button{border:0}.app-shell{display:grid;grid-template-columns:430px minmax(780px,1fr);min-height:100vh}.control-panel{display:flex;flex-direction:column;gap:18px;max-height:100vh;overflow:auto;padding:22px;border-right:1px solid var(--control-line);background:#fff}.control-panel__title{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.control-panel h1,.control-panel h2,.control-panel p{margin:0}.control-panel h1{font-size:22px;line-height:1.25}.control-panel h2{font-size:15px;line-height:1.4}.reminder-label{display:block;flex-shrink:0;min-height:38px;padding:8px 12px;border:1px solid var(--control-line);border-radius:6px;background:#fff;color:#18242b;font-size:14px;line-height:1.35;white-space:pre-line}.reminder-label span{display:block;min-height:1.35em}.control-panel p{margin-top:6px;color:var(--muted);font-size:13px;line-height:1.55}.primary-button{border:1px solid #1b6f82;border-radius:6px;background:#1b6f82;color:#fff;cursor:pointer;font-size:14px;line-height:1}.primary-button{min-width:72px;padding:11px 16px}.primary-button[aria-pressed=true]{background:#0f4e5f}.plain-button,.icon-button{border:1px solid var(--control-line);border-radius:6px;background:#fff;color:#2e3c43;cursor:pointer;line-height:1}.plain-button{padding:7px 10px;font-size:12px;white-space:nowrap}.icon-button{display:flex;align-items:center;justify-content:center;width:34px;height:34px;padding:0;color:#8a2f25;font-size:18px}.plain-button:disabled,.icon-button:disabled{cursor:not-allowed;opacity:.42}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.form-grid label,.expense-line label,.payment-form-grid label,.bottom-inputs label,.remark-extra{display:flex;flex-direction:column;gap:6px;color:#34434b;font-size:13px}.form-grid input,.form-grid select,.expense-line input,.expense-line select,.payment-form-grid input,.bottom-inputs input,.remark-extra textarea{width:100%;border:1px solid var(--control-line);border-radius:6px;background:#fff;color:var(--control-text);font-size:14px;line-height:1.4}.form-grid input,.form-grid select,.expense-line input,.expense-line select,.payment-form-grid input,.bottom-inputs input{height:38px;padding:0 10px}.remark-extra textarea{min-height:64px;resize:vertical;padding:8px 10px}.config-panel{display:flex;flex-direction:column;gap:16px;padding:14px 0 16px;border-top:1px solid var(--control-line);border-bottom:1px solid var(--control-line)}.config-panel__header,.config-section__header{display:flex;align-items:center;justify-content:space-between;gap:10px}.config-panel h2,.config-section h3{margin:0}.config-section h3{color:#34434b;font-size:13px;line-height:1.3}.config-section,.config-section__body{display:flex;flex-direction:column;gap:8px}.config-field{display:flex;flex-direction:column;gap:6px;color:#34434b;font-size:13px}.config-row{display:grid;gap:8px;align-items:center}.config-row--single{grid-template-columns:minmax(0,1fr) 34px}.config-row--project{grid-template-columns:minmax(84px,.36fr) minmax(0,1fr) 34px}.config-field input,.config-field textarea,.config-row input,.remark-config-row textarea{width:100%;min-width:0;border:1px solid var(--control-line);border-radius:6px;background:#fff;color:var(--control-text);font-size:13px;line-height:1.4}.config-field input,.config-row input{height:34px;padding:0 9px}.config-field textarea{min-height:58px;resize:vertical;padding:8px 9px}.remark-config-row{display:flex;flex-direction:column;gap:7px}.remark-config-row__header{display:flex;align-items:center;justify-content:space-between;gap:8px;color:#34434b;font-size:12px;line-height:1.3}.remark-config-row textarea{min-height:58px;resize:vertical;padding:8px 9px}.empty-config{color:var(--muted);font-size:12px;line-height:1.4}.field-error{color:#bb3d2a;font-size:12px;line-height:1.3}.expense-panel,.payment-panel,.bottom-inputs{display:flex;flex-direction:column;gap:12px}.expense-panel__header{display:flex;align-items:center;justify-content:space-between;gap:10px}.expense-lines{display:flex;flex-direction:column;gap:10px}.expense-line{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) 104px 34px;gap:8px;align-items:start;padding:10px;border:1px solid var(--control-line);border-radius:6px;background:#fbfcfc}.expense-line__remove{margin-top:24px}.bottom-inputs{padding-top:4px}.payment-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.recommendation-list{display:flex;flex-wrap:wrap;gap:8px;margin-top:-4px}.recommendation-button{max-width:100%;border:1px solid var(--control-line);border-radius:6px;background:#fbfcfc;color:#34434b;cursor:pointer;padding:7px 9px;font-size:12px;line-height:1.25;overflow:hidden;text-align:left;text-overflow:ellipsis;white-space:nowrap}.project-panel{display:flex;flex-direction:column;gap:12px;padding-top:2px}.project-panel__header{display:flex;flex-direction:column;gap:10px}.project-list{display:flex;flex-direction:column;gap:6px;max-height:252px;overflow:auto}.project-option{display:grid;grid-template-columns:auto 82px minmax(0,1fr);align-items:start;gap:8px;min-height:38px;padding:8px;border:1px solid var(--control-line);border-radius:6px;background:#fbfcfc;color:#34434b;cursor:pointer;font-size:12px;line-height:1.35}.project-option input{margin:2px 0 0}.project-code{color:#4b5961;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;white-space:nowrap}.project-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:normal}.project-name--wide{grid-column:2 / 4}.remark-option{grid-template-columns:auto minmax(0,1fr)}.remark-option__text{grid-column:2 / 3;white-space:pre-line}.preview-area{display:flex;align-items:flex-start;justify-content:center;overflow:auto;padding:34px}.document-switcher{position:fixed;left:50%;bottom:18px;z-index:20;display:flex;gap:4px;padding:4px;border:1px solid var(--control-line);border-radius:8px;background:#fff;box-shadow:0 10px 28px #222b3024;transform:translate(-50%)}.document-switcher__button{min-width:108px;border-radius:6px;background:transparent;color:#34434b;cursor:pointer;padding:9px 14px;font-size:13px;line-height:1}.document-switcher__button[aria-selected=true]{background:#1b6f82;color:#fff}.voucher{position:relative;width:260mm;height:154mm;flex:0 0 auto;color:var(--ink);background:var(--paper);box-shadow:0 18px 46px #222b3029;font-family:KaiTi,STKaiti,Kaiti SC,SimKai,Songti SC,SimSun,serif}.voucher-header{position:absolute;inset:10mm 11mm auto;height:28mm}.voucher-header h2{margin:0;text-align:center;font-size:8.2mm;font-weight:500;line-height:1;letter-spacing:1.2mm}.title-rule{width:116mm;height:1.3mm;margin:2.5mm auto 0;border-top:.45mm double var(--line)}.voucher-meta{display:grid;grid-template-columns:1fr 1fr 1fr;align-items:end;margin-top:8mm;font-size:5mm;line-height:1}.meta-department span,.meta-date span,.meta-pages span{display:inline-block;min-width:18mm;text-align:center;color:var(--fill-ink)}.meta-date{text-align:center}.meta-pages{text-align:right}.voucher-table{position:absolute;left:11mm;top:38mm;display:grid;width:238mm;height:102mm;grid-template-columns:49mm 70mm 50mm 11mm 58mm;grid-template-rows:7mm 8mm repeat(5,13mm) 10mm 12mm;border:.32mm solid var(--line);background:transparent;font-size:5.1mm;line-height:1}.cell{min-width:0;min-height:0;border-right:.28mm solid var(--line);border-bottom:.28mm solid var(--line)}.table-heading{display:flex;align-items:center;justify-content:center;font-size:5.6mm}.project-heading{grid-column:1 / 2;grid-row:1 / 3}.summary-heading{grid-column:2 / 3;grid-row:1 / 3;letter-spacing:7mm;padding-left:7mm}.amount-heading{grid-column:3 / 4;grid-row:1 / 2;font-size:4.9mm;letter-spacing:4.8mm;padding-left:4.8mm}.amount-subheading{grid-column:3 / 4;grid-row:2 / 3}.amount-subheading,.amount-row{display:grid;grid-template-columns:repeat(8,1fr)}.amount-subheading span,.amount-row span{display:flex;align-items:center;justify-content:center;min-width:0;border-right:.24mm solid var(--line);font-size:4.2mm}.amount-subheading span:last-child,.amount-row span:last-child{border-right:0}.amount-row{grid-column:3 / 4;position:relative;color:var(--fill-ink);font-family:Times New Roman,KaiTi,serif;font-size:5.2mm}.amount-empty-slash{grid-column:3 / 4;position:relative;z-index:3;pointer-events:none;background:linear-gradient(to bottom right,transparent calc(50% - .15mm),var(--line) calc(50% - .15mm),var(--line) calc(50% + .15mm),transparent calc(50% + .15mm))}.text-cell{display:flex;align-items:center;justify-content:center;color:var(--fill-ink);padding:1.4mm 2mm;overflow:hidden;text-align:center;line-height:1.25;overflow-wrap:anywhere}.project-cell{grid-column:1 / 2}.summary-cell{grid-column:2 / 3}.remark-label{grid-column:4 / 5;grid-row:1 / 6;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10mm;font-size:5mm}.remark-box{grid-column:5 / 6;grid-row:1 / 6;display:flex;align-items:flex-start;justify-content:flex-start;color:var(--fill-ink);padding:6mm 5mm;border-right:0;font-size:4.8mm;line-height:1.45;overflow-wrap:anywhere}.remark-box span{white-space:pre-line}.approval-label{grid-column:4 / 5;grid-row:6 / 9;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2.4mm;font-size:5mm}.approval-box{grid-column:5 / 6;grid-row:6 / 9;border-right:0}.total-label{grid-column:1 / 3;grid-row:8 / 9;display:flex;align-items:center;justify-content:center;font-size:5.4mm}.bottom-band{grid-column:1 / 6;grid-row:9 / 10;display:grid;grid-template-columns:119mm 61mm 58mm;border-bottom:.28mm solid var(--line);font-size:4.9mm;line-height:1;background:var(--paper);z-index:2}.bottom-band>div{display:flex;align-items:center;min-width:0;padding:0 3mm;border-right:.28mm solid var(--line)}.bottom-band>div:last-child{border-right:0}.uppercase-line{display:grid;grid-template-columns:auto 1fr;gap:3mm}.uppercase-line strong{display:flex;align-items:center;flex:0 0 auto;font-weight:500;white-space:nowrap}.uppercase-slots{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));align-items:center;min-width:0;column-gap:1.6mm}.uppercase-slot{display:grid;grid-template-columns:1em 1em;align-items:baseline;justify-content:center;column-gap:0;min-width:0;white-space:nowrap;font-size:4.8mm}.slot-mark{display:block;width:1em;color:var(--fill-ink);font-family:KaiTi,STKaiti,Kaiti SC,SimKai,Songti SC,SimSun,serif;text-align:center}.slot-mark:empty:before{content:" "}.slot-unit{display:block;width:1em;font-family:KaiTi,STKaiti,Kaiti SC,SimKai,Songti SC,SimSun,serif;text-align:center}.loan-line span,.refund-line span{flex:1;min-width:0;height:6mm;color:var(--fill-ink);text-align:center}.signature-row{position:absolute;left:20mm;right:22mm;bottom:8mm;display:grid;grid-template-columns:repeat(4,1fr);align-items:center;color:var(--ink);font-size:5.5mm;line-height:1}.signature-row span{text-align:center}.payment-voucher__header{position:absolute;inset:10mm 11mm auto;height:29mm}.payment-voucher__header h2{margin:0;text-align:center;font-size:8.8mm;font-weight:600;line-height:1;letter-spacing:1.8mm}.payment-title-rule{width:145mm;height:1.2mm;margin:3mm auto 0;border-top:.45mm solid var(--line)}.payment-date{position:absolute;left:50%;top:22mm;color:var(--ink);font-size:5.2mm;line-height:1;transform:translate(-50%);white-space:nowrap}.payment-date span{display:inline-block;min-width:14mm;color:var(--fill-ink);text-align:center}.payment-attachment{position:absolute;right:15mm;top:22mm;color:var(--ink);font-size:5mm;line-height:1;white-space:nowrap}.payment-attachment span{display:inline-block;min-width:14mm;color:var(--fill-ink);text-align:center}.payment-table{position:absolute;left:11mm;top:38mm;display:grid;width:238mm;height:96mm;grid-template-columns:34mm 24mm 70mm 20mm 90mm;grid-template-rows:13mm 14mm 14mm 13mm 25mm 17mm;border:.32mm solid var(--line);color:var(--ink);font-size:5.1mm;line-height:1}.payment-cell{min-width:0;min-height:0;border-right:.28mm solid var(--line);border-bottom:.28mm solid var(--line)}.payment-label{display:flex;align-items:center;justify-content:center;font-size:5.2mm;font-weight:600}.payment-fill{display:flex;align-items:center;justify-content:flex-start;overflow:hidden;padding:1.8mm 3mm;color:var(--fill-ink);font-size:4.6mm;line-height:1.35;overflow-wrap:anywhere;white-space:pre-line}.payment-payer-label{grid-column:1 / 2;grid-row:1 / 2}.payment-payer-value{grid-column:2 / 4;grid-row:1 / 2}.payment-method-label{grid-column:4 / 5;grid-row:1 / 2;font-size:4.8mm;white-space:nowrap}.payment-methods{grid-column:5 / 6;grid-row:1 / 2;display:flex;align-items:center;gap:2.2mm;overflow:hidden;padding:0 2.8mm;border-right:0;font-size:4.1mm;white-space:nowrap}.payment-method{display:inline-flex;align-items:center;gap:.7mm}.payment-checkbox{position:relative;display:inline-block;width:3mm;height:3mm;flex:0 0 auto;border:.28mm solid var(--line)}.payment-checkbox--checked:after{position:absolute;left:.15mm;top:-1.15mm;color:var(--fill-ink);content:"✓";font-family:SimSun,serif;font-size:4.2mm;line-height:1}.payment-payee-label{grid-column:1 / 2;grid-row:2 / 4}.payment-name-label{grid-column:2 / 3;grid-row:2 / 3}.payment-name-value{grid-column:3 / 6;grid-row:2 / 3;border-right:0}.payment-bank-label{grid-column:2 / 3;grid-row:3 / 4}.payment-bank-value{grid-column:3 / 4;grid-row:3 / 4}.payment-account-label{grid-column:4 / 5;grid-row:3 / 4}.payment-account-value{grid-column:5 / 6;grid-row:3 / 4;border-right:0}.payment-upper-label{grid-column:1 / 2;grid-row:4 / 5}.payment-upper-value{grid-column:2 / 4;grid-row:4 / 5;font-size:4.6mm}.payment-yuan-label{grid-column:4 / 5;grid-row:4 / 5;font-size:6mm;font-family:Times New Roman,SimSun,serif;font-weight:400}.payment-yuan-value{grid-column:5 / 6;grid-row:4 / 5;border-right:0;font-family:Times New Roman,KaiTi,serif;font-size:5.2mm}.payment-purpose-label{grid-column:1 / 2;grid-row:5 / 6}.payment-purpose-value{grid-column:2 / 6;grid-row:5 / 6;align-items:flex-start;border-right:0}.payment-note-label{grid-column:1 / 2;grid-row:6 / 7;border-bottom:0}.payment-note-value{grid-column:2 / 6;grid-row:6 / 7;align-items:flex-start;border-right:0;border-bottom:0}.payment-signature-row{position:absolute;left:11mm;right:11mm;bottom:9mm;display:grid;grid-template-columns:1fr 1.08fr 1.08fr 1.18fr 1fr;color:var(--ink);font-size:5.2mm;font-weight:600;line-height:1}.payment-signature-row span{text-align:center}@media(max-width:1280px){body{min-width:0}.app-shell{grid-template-columns:1fr}.control-panel{border-right:0;border-bottom:1px solid var(--control-line)}}@media print{@page{size:A5 landscape;margin:5mm}:root{--paper: #fff;background:#fff}html,body{min-width:0;background:#fff;-webkit-print-color-adjust:exact;print-color-adjust:exact}.control-panel,.document-switcher{display:none}.app-shell{display:block;min-height:auto;background:#fff}.preview-area{display:block;overflow:visible;width:200mm;height:118.5mm;margin:0 auto;padding:0;background:#fff}.voucher{margin:0;background:#fff;box-shadow:none;transform:scale(.76923);transform-origin:top left}}
