:root{--ink:#262522;--ink-soft:#46433e;--muted-dark:#6d6962;--muted:#918b81;--surface:#fff;--surface-soft:#f8f7f4;--border:#e8e4dd;--border-strong:#d8d2c8;--teal:#0f766e;--teal-dark:#0b5f58;--teal-soft:#dff3ef;--teal-wash:#f1faf8;--shadow:0 18px 50px #403a311f;--sans:Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", sans-serif;--serif:"Songti SC", STSong, SimSun, serif;color:var(--ink-soft);font-family:var(--sans);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#f2efe9}*{box-sizing:border-box}html{background:#f2efe9;min-width:320px}body{min-width:320px;min-height:100vh;margin:0}button,input,textarea{font-family:inherit}button:focus-visible,input:focus-visible,textarea:focus-visible{outline:2px solid var(--teal);outline-offset:2px}::selection{color:#083d39;background:#bce9e1}.app-shell{min-height:100vh}.app-header{z-index:20;border-bottom:1px solid var(--border);background:color-mix(in srgb, var(--surface) 94%, transparent);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);justify-content:space-between;align-items:center;gap:20px;min-height:72px;padding:12px 24px;display:flex;position:sticky;top:0}.brand-lockup,.header-actions,.section-heading,.section-heading-main,.print-meta,.print-footer{align-items:center;display:flex}.brand-lockup{gap:12px}.brand-mark{color:#fff;width:40px;height:40px;font-family:var(--serif);background:linear-gradient(145deg,#0f766e,#0d9488);border-radius:12px;place-items:center;font-size:22px;font-weight:700;display:grid;box-shadow:0 8px 20px #0f766e38}.eyebrow{color:var(--muted);letter-spacing:.12em;text-transform:uppercase;margin:0 0 2px;font-size:11px;font-weight:700}.app-header h1{color:var(--ink);font-family:var(--serif);letter-spacing:.03em;margin:0;font-size:22px}.header-actions{flex-wrap:wrap;justify-content:flex-end;gap:10px}.source-badge{border:1px solid var(--border);color:var(--muted-dark);background:var(--surface-soft);border-radius:999px;align-items:center;gap:7px;padding:7px 10px;font-size:12px;font-weight:650;display:inline-flex}.source-badge:before{background:var(--teal);content:"";border-radius:50%;width:7px;height:7px}.source-badge--demo:before{background:#d97706}.button{min-height:38px;font:inherit;cursor:pointer;border:1px solid #0000;border-radius:9px;padding:0 14px;font-size:13px;font-weight:700;transition:all .15s}.button:hover:not(:disabled){transform:translateY(-1px)}.button:disabled{cursor:not-allowed;opacity:.48}.button--primary{color:#fff;background:var(--teal);box-shadow:0 6px 16px #0f766e2e}.button--primary:hover:not(:disabled){background:var(--teal-dark)}.button--secondary{border-color:var(--border-strong);color:var(--ink-soft);background:var(--surface)}.workspace{grid-template-columns:320px minmax(0,1fr);min-height:calc(100vh - 72px);display:grid}.controls-panel{z-index:2;border-right:1px solid var(--border);background:var(--surface);box-shadow:10px 0 30px #322f2a0a}.control-section{border-bottom:1px solid var(--border);padding:22px 20px}.section-heading{gap:10px;margin-bottom:18px}.section-heading--with-action{justify-content:space-between}.section-heading-main{gap:10px}.step-number{width:25px;height:25px;color:var(--teal-dark);background:var(--teal-soft);border-radius:8px;flex:none;place-items:center;font-size:12px;font-weight:800;display:grid}.section-heading h2{color:var(--ink);margin:0 0 2px;font-size:14px}.section-heading p{color:var(--muted);margin:0;font-size:11px}.field-label,.choice-group legend,.button-choice-group legend{color:var(--muted-dark);margin:0 0 7px;font-size:11px;font-weight:700;display:block}.text-input{box-sizing:border-box;border:1px solid var(--border-strong);width:100%;min-height:38px;color:var(--ink);background:var(--surface);font:inherit;border-radius:8px;outline:none;padding:9px 11px;font-size:13px;transition:all .15s}.text-input:focus{border-color:var(--teal);box-shadow:0 0 0 3px var(--teal-soft)}.text-area{resize:vertical;min-height:62px}.choice-group,.button-choice-group{border:0;margin:17px 0 0;padding:0}.choice-card{border:1px solid var(--border);background:var(--surface);cursor:pointer;border-radius:9px;align-items:flex-start;gap:10px;margin-top:7px;padding:10px;transition:all .15s;display:flex}.choice-card:hover:not(.choice-card--disabled),.choice-card--active{border-color:color-mix(in srgb, var(--teal) 50%, var(--border));background:var(--teal-wash)}.choice-card--disabled{cursor:not-allowed;opacity:.5}.choice-card input{accent-color:var(--teal);margin:3px 0 0}.choice-card span{gap:2px;display:grid}.choice-card strong{color:var(--ink-soft);font-size:12px}.choice-card small{color:var(--muted);font-size:10px;line-height:1.4}.button-choice-group{grid-template-columns:1fr 1fr;gap:7px;display:grid}.button-choice-group legend{grid-column:1/-1}.button-choice-group button{border:1px solid var(--border-strong);min-height:34px;color:var(--muted-dark);background:var(--surface);font:inherit;cursor:pointer;border-radius:8px;font-size:11px;font-weight:700}.button-choice-group button:hover,.button-choice-group button.active{border-color:var(--teal);color:var(--teal-dark);background:var(--teal-soft)}.text-button{color:var(--teal-dark);font:inherit;cursor:pointer;background:0 0;border:0;padding:4px;font-size:11px;font-weight:700}.column-list{border:1px solid var(--border);border-radius:9px;max-height:230px;display:grid;overflow:auto}.check-row,.switch-row{color:var(--ink-soft);align-items:center;font-size:12px;display:flex}.check-row{border-bottom:1px solid var(--border);cursor:pointer;gap:9px;min-height:34px;padding:0 10px}.check-row:last-child{border-bottom:0}.check-row:hover{background:var(--surface-soft)}.check-row input,.switch-row input{accent-color:var(--teal)}.switch-row{border-bottom:1px solid var(--border);justify-content:space-between;min-height:36px}.switch-row+.field-label{margin-top:16px}.preview-stage{background:linear-gradient(#f2efe9e0,#f2efe9e0),repeating-linear-gradient(0deg,#0000 0 19px,#877e700f 19px 20px);min-width:0;padding:28px;overflow:auto}.loading-card{border:1px solid var(--border);width:min(360px,100% - 40px);color:var(--ink-soft);background:var(--surface);box-shadow:var(--shadow);text-align:center;border-radius:16px;place-items:center;margin:100px auto;padding:30px;display:grid}.loading-card p{color:var(--muted);margin:7px 0 0;font-size:12px}.spinner{border:3px solid var(--teal-soft);border-top-color:var(--teal);border-radius:50%;width:24px;height:24px;margin-bottom:14px;animation:.75s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.error-banner{color:#991b1b;background:#fff1f2;border-bottom:1px solid #fecaca;align-items:center;gap:10px;padding:10px 24px;font-size:12px;display:flex}.error-banner span{flex:1}.error-banner button{color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;font-weight:800}.print-dialog-hint{color:#7c5400;text-align:center;background:#fff9e8;border-bottom:1px solid #f0d89b;padding:7px 18px;font-size:11px;line-height:1.45}.print-sheet{box-sizing:border-box;color:#201f1c;background:#fff;margin:0 auto;padding:10mm 7mm 12mm;transition:width .18s,min-height .18s;box-shadow:0 20px 60px #3c362d29}.print-sheet--landscape{width:297mm;min-height:210mm}.print-sheet--portrait{width:210mm;min-height:297mm}.print-header{text-align:center;margin-bottom:3.5mm}.print-header h2{font-family:var(--serif);letter-spacing:.04em;margin:0;font-size:18pt;font-weight:700}.report-table{border-collapse:collapse;table-layout:fixed;width:100%;font-family:var(--serif);font-size:var(--table-font-size)}.print-sheet--compact .report-table{font-size:var(--table-font-size)}.report-table th,.report-table td{overflow-wrap:anywhere;text-align:left;vertical-align:middle;border:.25mm solid #201f1c;padding:1.5mm .8mm;line-height:1.25}.print-sheet--compact .report-table th,.print-sheet--compact .report-table td{padding:1mm .55mm;line-height:1.2}.report-table th{color:#201f1c;font-family:var(--sans);text-align:center;background:#fff;font-weight:700}.report-table .index-column,.report-table .cell--center{text-align:center}.report-table td.cell--amount{font-variant-numeric:tabular-nums;text-align:right}.report-table th.cell--amount{text-align:center}.report-table .cell--nowrap{white-space:nowrap}.report-table td.cell--fund-source{text-align:center}.fund-source-value{overflow-wrap:anywhere;text-align:center;vertical-align:middle;width:3em;max-width:100%;display:inline-block}.two-line-text{white-space:nowrap;justify-items:center;line-height:1.2;display:inline-grid}.two-line-text>span{display:block}.approval-footer{min-height:13mm;font-family:var(--serif);grid-template-columns:repeat(5,minmax(0,1fr));margin-top:4.5mm;font-size:8.5pt;font-weight:700;display:grid}.approval-footer>span{white-space:nowrap;padding:0 3mm}.approval-footer>span:first-child{padding-left:2.5mm}.approval-date{text-align:right;align-self:end;font-size:10pt;font-weight:400;padding-right:2.5mm!important}.page-number-preview{font-family:var(--serif);text-align:center;margin-top:20mm;font-size:8pt}.print-empty{color:#6d6a63;text-align:center;border:.3mm dashed #aaa49a;align-content:center;place-items:center;gap:2mm;min-height:55mm;font-size:9pt;display:grid}.print-empty--rows{border-top:0;min-height:28mm}@media (width<=900px){.app-header{align-items:flex-start;padding:14px 16px;position:static}.header-actions{gap:7px}.source-badge{display:none}.workspace{grid-template-columns:1fr}.controls-panel{box-shadow:none;border-right:0}.preview-stage{padding:18px}}@media (width<=560px){.app-header{display:grid}.header-actions{justify-content:stretch}.header-actions .button{flex:1}}@media print{html,body,#root,.app-shell,.workspace,.preview-stage{background:#fff!important;width:auto!important;min-width:0!important;min-height:0!important;margin:0!important;padding:0!important;overflow:visible!important}.screen-only{display:none!important}.workspace{display:block!important}.print-sheet{width:auto!important;min-height:0!important;box-shadow:none!important;padding:0!important}.report-table thead{display:table-header-group}.report-table tr,.approval-footer{break-inside:avoid}.report-table th{-webkit-print-color-adjust:exact;print-color-adjust:exact}}
