:root{--page-width:210mm;--page-height:297mm;--page-margin:8mm;--item-gap:5mm;--invoice-scale:1;--guide-color:rgba(28,95,156,0.38);--cut-line-color:#111827;color-scheme:light;font-family:Inter,"Segoe UI","Microsoft YaHei","PingFang SC",Arial,sans-serif;background:#eef1f4;color:#1f2933}*{box-sizing:border-box}body{margin:0}.top-bar{position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;height:48px;padding:0 24px;background:#185f99;color:#ffffff}.top-bar-title{margin:0;font-size:16px;font-weight:700;letter-spacing:0.5px}.top-bar-sep{margin:0 8px;font-weight:300;opacity:0.7}.top-bar-sub{font-weight:400;font-size:14px;opacity:0.85}button,input,select{font:inherit}.app{min-height:calc(100vh - 48px);display:grid;grid-template-columns:minmax(0,1fr) 320px}.panel{position:fixed;top:48px;right:0;width:320px;height:calc(100vh - 48px);overflow:hidden;padding:24px;background:#ffffff;border-left:1px solid #d9dee5;transition:overflow 200ms ease}.panel:hover{overflow-y:auto}.panel:hover::-webkit-scrollbar{width:5px}.panel:hover::-webkit-scrollbar-thumb{background:#b0bec5;border-radius:4px}.panel:hover::-webkit-scrollbar-track{background:transparent}#status{color:#5d6875;line-height:1.55}.upload{display:grid;gap:6px;padding:22px 18px;border:2px dashed #7b8fa6;border-radius:8px;background:#f8fafc;cursor:pointer;transition:border-color 160ms ease,background-color 160ms ease}.upload:hover{border-color:#1967a9}.upload.dragging{border-color:#1967a9;background:#eef7ff}.upload input{position:absolute;inline-size:1px;block-size:1px;opacity:0}.upload-title{font-weight:700}.upload-subtitle{color:#637083;font-size:14px}.control-group{margin-top:24px;display:grid;gap:14px}.control-group.checkbox-group{gap:8px}.control-group h2{margin:0;font-size:15px;color:#384656}.control-group label{display:grid;gap:8px;color:#354252;font-size:14px}.control-group label > span{display:flex;justify-content:space-between;gap:12px}select,input[type="range"]{width:100%}select{height:38px;padding:0 10px;border:1px solid #c8d0d9;border-radius:6px;background:#ffffff}input[type="range"]{accent-color:#1f6fab}.checkbox{grid-template-columns:auto 1fr;align-items:center}.checkbox input{width:16px;height:16px}.actions{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin-top:24px}button{min-height:40px;border:1px solid #b7c1cf;border-radius:6px;background:#ffffff;color:#243140;cursor:pointer}button:first-child{border-color:#185f99;background:#185f99;color:#ffffff}button:disabled{opacity:0.45;cursor:not-allowed}.invoice-list-section{margin-top:24px}.invoice-list-section h2{margin:0 0 12px;font-size:15px;color:#384656}.invoice-list-empty{margin:0;font-size:13px;color:#7b8fa6;text-align:center;padding:12px 0}.invoice-list{margin:0;padding:0;list-style:none;display:grid;gap:2px}.invoice-item{display:grid;grid-template-columns:24px 1fr 24px;align-items:center;gap:6px;padding:6px 8px;border-radius:4px;background:#f3f5f8;cursor:default;transition:background 120ms ease,box-shadow 120ms ease}.invoice-item:hover{background:#e8ecf2}.invoice-item.dragging{opacity:0.4}.invoice-item.drag-over{box-shadow:0 -2px 0 0 #185f99 inset}.drag-handle{cursor:grab;text-align:center;color:#7b8fa6;font-size:16px;user-select:none;line-height:1}.drag-handle:active{cursor:grabbing}.invoice-name{font-size:13px;color:#243140;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.invoice-delete{min-height:auto;height:20px;width:20px;padding:0;border:none;border-radius:50%;background:transparent;color:#7b8fa6;font-size:16px;line-height:1;display:grid;place-items:center}.invoice-delete:hover{background:#f04040;color:#ffffff}.workspace{min-width:0;padding:22px}.toolbar{display:flex;justify-content:flex-end;align-items:center;gap:20px;margin:0 auto 18px;max-width:1180px}.toolbar strong,.toolbar span{display:block}#status{font-size:12px}.toolbar strong{font-size:13px}.preview{display:grid;justify-content:center;gap:24px;padding-bottom:40px}.preview.empty{min-height:calc(100vh - 90px);place-items:center}.empty-state{display:grid;gap:8px;text-align:center;color:#697584}.sheet{position:relative;width:var(--sheet-width,var(--page-width));height:var(--sheet-height,var(--page-height));display:grid;gap:var(--item-gap);padding:var(--page-margin);background:#ffffff;box-shadow:0 10px 32px rgba(26,38,52,0.18);overflow:hidden;page-break-after:always;break-after:page}.sheet.portrait{--sheet-width:210mm;--sheet-height:297mm}.sheet.landscape{--sheet-width:297mm;--sheet-height:210mm}.sheet:last-child{page-break-after:auto;break-after:auto}.sheet.layout-1{grid-template-columns:1fr;grid-template-rows:1fr}.sheet.layout-2.portrait{grid-template-columns:1fr;grid-template-rows:repeat(2,1fr)}.sheet.layout-2.landscape{grid-template-columns:repeat(2,1fr);grid-template-rows:1fr}.sheet.layout-4{grid-template-columns:repeat(2,1fr);grid-template-rows:repeat(2,1fr)}.sheet.layout-6.landscape{grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(2,1fr)}.sheet.layout-6.portrait{grid-template-columns:repeat(2,1fr);grid-template-rows:repeat(3,1fr)}.sheet::before,.sheet::after{content:"";position:absolute;z-index:3;pointer-events:none;display:none;border-color:var(--cut-line-color)}.sheet.layout-2.portrait::before,.sheet.layout-4::before{display:block;left:var(--page-margin);right:var(--page-margin);top:50%;border-top:1px dashed var(--cut-line-color)}.sheet.layout-2.landscape::after,.sheet.layout-4::after{display:block;top:var(--page-margin);bottom:var(--page-margin);left:50%;border-left:1px dashed var(--cut-line-color)}.sheet.layout-6.landscape::before{display:block;left:var(--page-margin);right:var(--page-margin);top:50%;border-top:1px dashed var(--cut-line-color)}.sheet.layout-6.landscape::after{display:block;top:var(--page-margin);right:var(--page-margin);bottom:var(--page-margin);left:var(--page-margin);background-image:repeating-linear-gradient( to bottom,var(--cut-line-color) 0 4px,transparent 4px 8px ),repeating-linear-gradient( to bottom,var(--cut-line-color) 0 4px,transparent 4px 8px );background-position:33.333% 0,66.666% 0;background-repeat:no-repeat;background-size:1px 100%,1px 100%}.sheet.layout-6.portrait::before{display:block;top:var(--page-margin);right:var(--page-margin);bottom:var(--page-margin);left:var(--page-margin);background-image:repeating-linear-gradient( to right,var(--cut-line-color) 0 4px,transparent 4px 8px ),repeating-linear-gradient( to right,var(--cut-line-color) 0 4px,transparent 4px 8px );background-position:0 33.333%,0 66.666%;background-repeat:no-repeat;background-size:100% 1px,100% 1px}.sheet.layout-6.portrait::after{display:block;top:var(--page-margin);bottom:var(--page-margin);left:50%;border-left:1px dashed var(--cut-line-color)}.preview.hide-crop-marks .sheet::before,.preview.hide-crop-marks .sheet::after{display:none}.invoice-frame{margin:0;position:relative;min-width:0;min-height:0;display:grid;place-items:center;overflow:hidden;border:1px dashed var(--guide-color);background:#ffffff}.preview.hide-guides .invoice-frame{border-color:transparent}.invoice-image{width:calc(100% * var(--invoice-scale));height:calc(100% * var(--invoice-scale));object-fit:contain;display:block}.invoice-placeholder{border-color:transparent}.loading{opacity:0.65}@media (max-width:980px){.app{grid-template-columns:1fr}.panel{position:static;height:auto;border-right:0;border-bottom:1px solid #d9dee5}.workspace{overflow-x:auto}}@media print{:root{background:#ffffff}body{margin:0;background:#ffffff}.panel,.toolbar,.empty-state,.top-bar,.page-footer{display:none !important}.app,.workspace,.preview{display:block;min-height:0;padding:0;margin:0}.sheet{width:var(--sheet-width,var(--page-width));height:var(--sheet-height,var(--page-height));box-shadow:none;margin:0}}.about-btn{padding:4px 16px;height:30px;border:1px solid rgba(255,255,255,0.4);border-radius:4px;background:rgba(255,255,255,0.12);color:#ffffff;font-size:13px;cursor:pointer;transition:background 160ms ease}.about-btn:hover{background:rgba(255,255,255,0.25)}.modal-overlay{display:none;position:fixed;inset:0;z-index:100;background:rgba(0,0,0,0.45);place-items:center;padding:32px}.modal-overlay.active{display:grid}.modal{position:relative;width:100%;max-width:520px;max-height:80vh;overflow-y:auto;background:#ffffff;border-radius:12px;box-shadow:0 20px 60px rgba(0,0,0,0.25)}.modal-close{position:absolute;top:12px;right:14px;min-height:auto;width:32px;height:32px;padding:0;border:none;border-radius:6px;background:transparent;color:#6b7685;font-size:22px;line-height:1;cursor:pointer;transition:background 120ms ease}.modal-close:hover{background:#eef1f4;color:#1f2933}.modal-body{padding:28px 28px 24px}.modal-title{margin:0 0 12px;font-size:20px;color:#1a2733}.modal-body > p{margin:0 0 16px;font-size:14px;color:#4a5568;line-height:1.6}.modal-body h3{margin:20px 0 12px;font-size:16px;color:#1a2733}.feature{display:flex;gap:12px;margin-bottom:16px}.feature-num{flex-shrink:0;width:26px;height:26px;display:grid;place-items:center;border-radius:50%;background:#185f99;color:#ffffff;font-size:13px;font-weight:700;margin-top:2px}.feature strong{display:block;margin-bottom:4px;font-size:14px;color:#1a2733}.feature ul{margin:0;padding-left:18px;list-style:disc}.feature li{font-size:13px;color:#4a5568;line-height:1.7}.modal-footer-qr{margin-top:24px;padding-top:14px;border-top:1px solid #e5e9ef;text-align:center}.modal-footer-qr p{margin:0 0 10px;font-size:14px;font-weight:600;color:#4a5568}.modal-footer-qr img{width:140px;height:140px;border-radius:6px;border:1px solid #e5e9ef;object-fit:contain}.modal-footer-copyright{margin-top:12px;padding-top:10px;font-size:13px;color:#8896a6;text-align:center}.page-footer{display:flex;align-items:center;justify-content:center;gap:8px;padding:16px 24px;font-size:13px;color:#8896a6;background:#eef1f4}.page-footer-sep{color:#c8d0d9}.qr-overlay{display:none;position:fixed;inset:0;z-index:200;background:rgba(0,0,0,0.5);place-items:center;padding:24px}.qr-overlay.active{display:grid}.qr-modal{position:relative;width:100%;max-width:340px;background:#ffffff;border-radius:14px;box-shadow:0 20px 60px rgba(0,0,0,0.3);padding:28px 24px 24px;text-align:center}.qr-title{margin:0 0 18px;font-size:17px;font-weight:700;color:#1a2733}.qr-image-wrap{display:flex;justify-content:center;margin-bottom:22px}.qr-image{width:200px;height:200px;border-radius:8px;border:1px solid #e5e9ef;object-fit:contain}.qr-actions{display:grid;grid-template-columns:1fr 1fr;gap:12px}.qr-confirm-btn,.qr-cancel-btn{min-height:42px;border-radius:8px;font-size:15px;font-weight:600;cursor:pointer;transition:background 160ms ease,opacity 160ms ease}.qr-confirm-btn{border:none;background:#185f99;color:#ffffff}.qr-confirm-btn:disabled{opacity:0.5;cursor:not-allowed}.qr-confirm-btn:not(:disabled):hover{background:#135a8a}.qr-cancel-btn{border:1px solid #d1d5db;background:#ffffff;color:#4a5568}.qr-cancel-btn:hover{background:#f3f4f6}@keyframes qrShake{0%,100%{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-6px)}20%,40%,60%,80%{transform:translateX(6px)}}.qr-modal.shake{animation:qrShake 0.4s ease}#printBu