:root{--ink:#1b2430;--muted:#5b6675;--line:#d7dde5;--accent:#1565c0;--bad:#c62828;color:var(--ink);background:#eef2f6;font-family:PingFang SC,Microsoft YaHei,Noto Sans CJK SC,system-ui,sans-serif}*{box-sizing:border-box}body{margin:0}.page{max-width:960px;margin:0 auto;padding:16px}.toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.toolbar h1{margin:0;font-size:20px}.actions{flex-wrap:wrap;gap:8px;display:flex}button{font:inherit;border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:6px;padding:8px 14px}button.primary{background:var(--accent);border-color:var(--accent);color:#fff}button.link{color:var(--bad);background:0 0;border:none;padding:4px}.draft-status{color:var(--muted);margin:8px 0 12px;font-size:13px}.sheet{background:#fff;border-radius:10px;padding:24px;box-shadow:0 1px 3px #00000014}input,textarea{font:inherit;color:inherit;border:1px solid var(--line);background:#fff;border-radius:4px;width:100%;padding:6px 8px}textarea{resize:vertical;overflow-wrap:anywhere;field-sizing:content;min-height:2.2em}.title{text-align:center;border-color:#0000;font-size:24px;font-weight:700}.meta{grid-template-columns:repeat(3,1fr);gap:12px;margin:16px 0;display:grid}label{color:var(--muted);gap:4px;font-size:13px;display:grid}.lines{border-collapse:collapse;table-layout:fixed;width:100%}.lines th,.lines td{border-bottom:1px solid var(--line);text-align:left;vertical-align:top;padding:6px}.lines th{color:var(--muted);font-size:13px}.lines th:first-child{width:48px}.lines th:nth-child(3){width:90px}.lines th:nth-child(4),.lines th:nth-child(5){width:120px}.lines th:nth-child(6){width:60px}.num,.num input{text-align:right}.amount{font-variant-numeric:tabular-nums;padding-top:12px!important;padding-right:8px!important}tr.invalid td{background:#fff5f5}.error,.error-summary{color:var(--bad);margin-top:4px;font-size:12px}.add{margin-top:10px}.bottom{grid-template-columns:1fr 320px;align-items:start;gap:24px;margin-top:20px;display:grid}.notes{align-content:start}.totals{font-variant-numeric:tabular-nums;grid-template-columns:1fr 120px;align-items:center;gap:8px 12px;margin:0;display:grid}.totals dt{text-align:right;color:var(--muted)}.totals dd{text-align:right;margin:0}.totals input{text-align:right}.totals .grand{color:var(--ink);font-size:20px;font-weight:700}.rule{color:var(--muted);margin-top:16px;font-size:12px}.print-only{display:none}@media (width<=640px){.page{padding:8px}.sheet{padding:12px}.meta,.bottom{grid-template-columns:1fr}.lines thead{display:none}.lines,.lines tbody,.lines tr,.lines td{width:100%;display:block}.lines tr{border:1px solid var(--line);border-radius:8px;margin-bottom:10px;padding:6px}.lines td{text-align:left;border:none;grid-template-columns:90px 1fr;align-items:center;gap:8px;display:grid}.lines td:before{content:attr(data-label);color:var(--muted);font-size:12px}.lines td.no-print{text-align:right;display:block}.lines td.no-print:before{content:none}.num input{text-align:left}}@page{size:A4;margin:15mm}@media print{:root{background:#fff}.no-print{display:none!important}.page{max-width:none;padding:0}.sheet{box-shadow:none;padding:0}input,textarea{resize:none;background:0 0;border:none;padding:2px 0}.meta input{display:none}.print-only{color:var(--ink);font-size:14px;display:block}.amount{padding-top:8px!important}.num input{padding-right:8px}.lines tr{break-inside:avoid}.bottom{break-inside:avoid;grid-template-columns:1fr 300px}tr.invalid td{background:0 0}}
