@import "https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;500;600&family=Source+Serif+4:opsz,wght@8..60,600;8..60,650&display=swap";html{background:#f4f1ec}body{margin:0}#root{min-height:100vh}:root{--ink:#1c1917;--muted:#57534e;--line:#d6d3d1;--paper:#f7f1e8;--sheet:#fffcf7;--band:#eee6d8;--accent:#9a3412;--ui:#f4f1ec;--ok:#3f6212;--danger:#9f1239;--shadow:0 18px 40px #1c191714;color:var(--ink);background:var(--ui);font-synthesis:none;text-rendering:optimizelegibility;font-family:IBM Plex Sans,Source Han Sans SC,Noto Sans SC,PingFang SC,sans-serif;line-height:1.45}*{box-sizing:border-box}html,body,#root{height:100%;min-height:100%;margin:0}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}button,input,select,textarea{font:inherit;color:inherit}.app{grid-template-rows:auto 1fr;height:100dvh;min-height:100dvh;display:grid;overflow:hidden}.topbar{border-bottom:1px solid var(--line);z-index:5;background:#fffdf8;justify-content:space-between;align-items:center;gap:16px;padding:14px 22px;display:flex;position:sticky;top:0}.brand{flex-direction:column;gap:2px;display:flex}.brand strong{letter-spacing:.08em;font-family:"Source Serif 4",Noto Serif SC,Songti SC,serif;font-size:20px}.brand span{color:var(--muted);font-size:12px}.actions{flex-wrap:wrap;gap:8px;display:flex}.actions button,.actions label.file{border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:4px;padding:8px 12px}.actions button.primary{background:var(--ink);color:var(--paper);border-color:var(--ink)}.actions button.accent{background:var(--accent);color:#fff;border-color:var(--accent)}.actions button:hover,.actions label.file:hover{filter:brightness(1.05)}.actions input[type=file]{display:none}.workspace{grid-template-columns:minmax(0,42%) 8px minmax(0,1fr);min-height:0;display:grid;overflow:hidden}.editor{background:#f8f5f0;min-width:0;min-height:0;padding:0;overflow:auto}.editor-inner{transform-origin:0 0;width:max-content;min-width:720px;padding:20px 22px 48px}.editor-inner .items{width:max-content;min-width:100%}.split{z-index:6;cursor:col-resize;background:var(--line);touch-action:none;width:8px;margin:0 -2px;position:relative}.split:after{content:"";position:absolute;inset:0 -5px}.split:hover,.split:focus-visible,.split:active,body.is-resizing .split{background:var(--accent)}body.is-resizing{cursor:col-resize;-webkit-user-select:none;user-select:none}body.is-resizing *{cursor:col-resize!important}.preview-pane{background:radial-gradient(circle at top, #9a34120d, transparent 28%), var(--ui);flex-direction:column;gap:28px;min-width:0;min-height:0;padding:28px 24px 48px;display:flex;position:relative;overflow:auto}h2.sec{letter-spacing:.18em;text-transform:uppercase;color:var(--muted);margin:22px 0 10px;font-size:13px;font-weight:600}.grid-2,.grid-4{gap:10px;display:grid}.grid-2{grid-template-columns:1fr 1fr}.grid-4{grid-template-columns:1fr 1fr 1fr 1fr}label.field{color:var(--muted);flex-direction:column;gap:4px;font-size:12px;display:flex}label.field.span2{grid-column:span 2}label.field.span4{grid-column:1/-1}input,textarea,select{border:1px solid var(--line);background:#fff;border-radius:3px;outline:none;padding:8px 10px}input:focus,textarea:focus,select:focus{border-color:var(--ink)}textarea{resize:vertical;min-height:72px}.items{border-collapse:collapse;background:#fff;width:100%;font-size:13px}.items th,.items td{border:1px solid var(--line);vertical-align:middle;padding:0}.items th{background:var(--band);text-align:left;padding:8px 6px;font-size:12px;font-weight:600}.items input{background:0 0;border:0;border-radius:0;width:100%;padding:8px 6px}.items .params-cell{vertical-align:top;min-width:200px}.items td.remark-cell{vertical-align:top}.items td.remark-cell textarea{resize:vertical;white-space:pre-wrap;background:0 0;border:0;border-radius:0;width:100%;min-height:0;padding:8px 6px;font-size:12px;line-height:1.45}.ledger td.remark-cell,.remark-inline{white-space:pre-line;vertical-align:top;font-size:12px;line-height:1.45}.remark-inline{color:#78716c}.items .params-cell textarea{resize:vertical;white-space:pre-wrap;background:0 0;border:0;border-radius:0;width:100%;min-height:52px;padding:8px 6px;font-size:12px}.items .num input{text-align:right}.items .seq-edit{text-align:center;width:48px}.items .op{text-align:center;white-space:nowrap;width:84px}.head-edit{flex-direction:column;gap:4px;display:flex}.head-edit input{border:1px solid var(--line);background:#fff;width:100%;min-width:88px;padding:6px 8px;font-weight:600}.items tr.flash td,.ledger tr.flash td{background:#fde68a}.items button.link{color:var(--danger);cursor:pointer;background:0 0;border:0;padding:4px 6px;font-size:12px}.items button.link.add{color:var(--ok)}.items button.link:disabled{opacity:.35;cursor:not-allowed}.row-actions{gap:8px;margin-top:8px;display:flex}.total-options{flex-wrap:wrap;align-items:flex-end;gap:10px;margin-top:10px;display:flex}.total-options .hint{flex:100%}.total-options .field{min-width:180px}.option-line{align-items:center;gap:8px;display:flex}.option-line input{flex:1}.total-options button{border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:4px;padding:8px 12px}.param-switch-bar{flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 8px;display:flex}.param-switch-bar button{border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:4px;padding:6px 10px}.param-switch-bar span{color:var(--muted);font-size:12px}.param-switches{border:1px solid var(--line);background:#fff;margin:0 0 12px;padding:0;list-style:none}.param-switches li{border-bottom:1px solid var(--line);align-items:center;gap:10px;padding:8px 10px;display:flex}.param-switches li:last-child{border-bottom:0}.param-switches li.on{background:#f6f3ee}.param-switch-meta{flex-direction:column;gap:2px;min-width:0;display:flex}.param-switch-meta strong{font-size:13px;font-weight:600}.param-switch-meta span{color:var(--muted);font-size:12px}.switch{flex-shrink:0;width:36px;height:20px;position:relative}.param-switch-delete{color:var(--danger);cursor:pointer;background:0 0;border:0;flex-shrink:0;padding:0;font-size:12px}.switch input{opacity:0;cursor:pointer;z-index:1;margin:0;position:absolute;inset:0}.switch i{pointer-events:none;background:#d6d3d1;border-radius:99px;width:36px;height:20px;display:block;position:relative}.switch i:after{content:"";background:#fff;border-radius:50%;width:16px;height:16px;transition:transform .15s;position:absolute;top:2px;left:2px}.switch input:checked+i{background:var(--ok)}.switch input:checked+i:after{transform:translate(16px)}.switch input:focus-visible+i{outline:2px solid var(--ink);outline-offset:2px}.hint{color:var(--muted);margin:0 0 8px;font-size:12px}.appendix-edit textarea{resize:vertical;background:0 0;border:0;border-radius:0;width:100%;min-height:24px;padding:3px 6px;line-height:1.28}.appendix-edit input{padding:3px 6px;line-height:1.28}.sheet{background:var(--sheet);width:210mm;box-shadow:var(--shadow);box-sizing:border-box;min-height:297mm;color:var(--ink);margin:0 auto;padding:12mm 10mm 10mm}.sheet-head{text-align:center;border-bottom:2px solid var(--ink);margin-bottom:18px;padding-bottom:14px}.sheet-head h1{letter-spacing:.22em;margin:0 0 8px;font-family:"Source Serif 4",Noto Serif SC,Songti SC,serif;font-size:30px;font-weight:650}.meta-line{color:var(--muted);justify-content:space-between;gap:12px;font-size:12px;display:flex}.parties{grid-template-columns:1fr 1fr;gap:18px;margin-bottom:18px;font-size:13px;display:grid}.parties h3{letter-spacing:.16em;color:var(--accent);margin:0 0 6px;font-size:12px}.parties p{margin:2px 0}.ledger{border-collapse:collapse;width:100%;margin-bottom:12px;font-size:13px}.ledger th,.ledger td{border-bottom:1px solid #e7e5e4;padding:8px 6px}.ledger th{text-align:left;border-bottom:1px solid var(--ink);font-size:12px}.sheet-appendix{page-break-before:always;break-before:page;height:297mm;overflow:hidden}.ledger.appendix{font-size:12px}.ledger.appendix th,.ledger.appendix td{vertical-align:middle;padding:3px 6px;line-height:1.28}.ledger td.params{color:#44403c;white-space:pre-wrap;font-size:12px}.ledger.appendix td[rowspan]{vertical-align:top;background:#faf7f2}.ledger td.c,.ledger th.c{text-align:center}.ledger td.r,.ledger th.r{text-align:right}.ledger tfoot td{border-bottom:0;padding:5px 6px}.ledger .grand{border-top:1px solid var(--ink);font-size:15px;font-weight:700}.upper{background:var(--band);margin:8px 0 18px;padding:10px 12px;font-size:13px}.notes{color:var(--muted);white-space:pre-wrap;font-size:13px}.notes strong{color:var(--ink);margin:10px 0 4px;display:block}.sign{grid-template-columns:1fr 1fr;margin-top:36px;font-size:13px;display:grid}.saved{color:var(--ok);font-size:12px}.modal-mask{z-index:20;background:#1c191761;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.modal{border:1px solid var(--line);background:#fffdf8;grid-template-rows:auto auto 1fr auto;width:min(1080px,100%);max-height:calc(100vh - 48px);display:grid;overflow:hidden}.modal-head,.modal-toolbar,.modal-foot{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;display:flex}.modal button{border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:4px;padding:8px 12px}.modal-head h2{margin:0;font-size:16px}.modal-head p{color:var(--muted);margin:4px 0 0;font-size:12px}.modal-toolbar{border-bottom:1px solid var(--line)}.modal-toolbar .primary{background:var(--ink);color:var(--paper);border-color:var(--ink)}.resource-table tr{cursor:pointer}.resource-table td.ops{white-space:nowrap}.resource-table td.ops button{margin-right:6px}.resource-table td.ops button.danger{color:var(--danger);border-color:#fecdd3}.fixed-tag{color:var(--accent);background:#fff7ed;border:1px solid #fdba74;margin-right:6px;padding:2px 6px;font-size:12px;display:inline-block}.modal-body{padding:0 16px 16px;overflow:auto}.crumbs{flex-wrap:wrap;align-items:center;gap:4px;margin:10px 0;font-size:13px;display:flex}.crumbs .link{color:var(--ink);cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline}.resource-table td.ops a{margin-right:6px}.modal-toolbar input{flex:1}.modal-toolbar .check{white-space:nowrap;align-items:center;gap:6px;font-size:13px;display:flex}.modal-foot{border-top:1px solid var(--line);border-bottom:0;justify-content:space-between}.modal-foot-right{gap:8px;display:flex}.modal-foot .primary{background:var(--ink);color:var(--paper);border-color:var(--ink)}.modal-foot .danger{color:var(--danger);border-color:#fecdd3}.picker{border-collapse:collapse;width:100%;font-size:13px}.picker th,.picker td{border-bottom:1px solid var(--line);vertical-align:top;padding:8px 10px}.picker th{background:var(--band);text-align:left;position:sticky;top:0}.picker .r{text-align:right}.picker .c{text-align:center;width:36px}.picker tr{cursor:pointer}.picker tr.on{background:#f3ebe1}.picker td.r{font-variant-numeric:tabular-nums}.empty{text-align:center;color:var(--muted);padding:28px}.actions button:disabled{opacity:.45;cursor:not-allowed}@media (width<=1080px){.grid-4{grid-template-columns:1fr 1fr}}.appendix-measure{visibility:hidden;pointer-events:none;width:210mm;height:0;position:absolute;top:0;left:0;overflow:hidden}.appendix-measure .sheet-page-metrics{height:297mm}.appendix-measure .measure-table{width:190mm;margin:0 10mm}.pdf-capture{z-index:-1;pointer-events:none;background:var(--sheet);width:210mm;position:fixed;top:0;left:0}.pdf-capture .sheet{box-shadow:none;margin:0}@media print{@page{size:A4;margin:0}.topbar,.editor,.split,.modal-mask,.appendix-measure,.pdf-capture{display:none!important}.workspace{display:block}.preview-pane{background:#fff;gap:0;padding:0}.sheet{box-shadow:none;page-break-after:always;break-after:page;width:210mm;min-height:297mm;padding:12mm 10mm 10mm}.sheet:last-child{page-break-after:auto;break-after:auto}.sheet-appendix{page-break-before:always;break-before:page;page-break-inside:avoid;break-inside:avoid;height:297mm;overflow:hidden}.ledger thead{display:table-header-group}.ledger:not(.appendix) tr{break-inside:avoid;page-break-inside:avoid}}
