:root{--bg: #f4f5f7;--panel: #fff;--border: #e3e6ea;--text: #1f2328;--muted: #6b7280;--accent: #1f4e79;--accent-soft: #e8eff6;--danger: #b91c1c;--radius: 8px;font-family:Noto Sans TC,PingFang TC,Microsoft JhengHei,system-ui,sans-serif;font-size:14px;color:var(--text)}*{box-sizing:border-box}body{margin:0;background:var(--bg)}button{font:inherit;white-space:nowrap;cursor:pointer;border:1px solid var(--border);background:#fff;border-radius:6px;padding:6px 12px;color:var(--text)}button:hover{background:#f8f9fb}button.primary{background:var(--accent);color:#fff;border-color:var(--accent)}button.primary:hover{filter:brightness(1.1)}button.danger{color:var(--danger)}button.small{padding:3px 8px;font-size:12px}button:disabled{opacity:.5;cursor:default}input,select,textarea{font:inherit;border:1px solid var(--border);border-radius:6px;padding:6px 8px;width:100%;background:#fff}input[type=color]{padding:0;height:32px;width:48px}input[type=checkbox]{width:auto}textarea{min-height:72px;resize:vertical}label{display:block;font-size:12px;color:var(--muted);margin-bottom:3px}.field{margin-bottom:10px}.field.inline{display:flex;align-items:center;gap:8px}.field.inline label{margin:0}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}.topbar{height:52px;display:flex;align-items:center;gap:12px;padding:0 16px;background:var(--panel);border-bottom:1px solid var(--border)}.topbar .brand{font-weight:700;color:var(--accent);margin-right:12px}.topbar .spacer{flex:1}.topbar .status{font-size:12px;color:var(--muted)}.layout{display:grid;grid-template-columns:260px 1fr;height:calc(100vh - 52px)}.sidebar{background:var(--panel);border-right:1px solid var(--border);overflow:auto;padding:12px}.sidebar h3{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:8px 0}.tpl-item{padding:8px 10px;border-radius:6px;cursor:pointer;display:flex;justify-content:space-between;align-items:center}.tpl-item:hover{background:#f3f4f6}.tpl-item.active{background:var(--accent-soft);color:var(--accent);font-weight:600}.tag{font-size:10px;padding:1px 6px;border-radius:10px;background:#eef0f3;color:var(--muted)}.tag.default{background:#dcfce7;color:#166534}.designer{display:grid;grid-template-columns:400px 1fr;height:100%;overflow:hidden}.editor{background:var(--panel);border-right:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden}.tabs{display:flex;border-bottom:1px solid var(--border)}.tabs button{border:0;border-radius:0;padding:10px 12px;border-bottom:2px solid transparent;background:transparent}.tabs button.active{border-bottom-color:var(--accent);color:var(--accent);font-weight:600}.editor-body{padding:14px;overflow:auto;flex:1}.preview{background:#d9dce1;display:flex;flex-direction:column}.preview-toolbar{display:flex;gap:8px;padding:8px 12px;background:var(--panel);border-bottom:1px solid var(--border);align-items:center}.preview iframe{flex:1;border:0;width:100%;background:#fff}.block-list{display:flex;flex-direction:column;gap:6px}.block-item{border:1px solid var(--border);border-radius:var(--radius);background:#fff}.block-item.dragging{opacity:.4}.block-item.over{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}.block-head{display:flex;align-items:center;gap:8px;padding:8px 10px;cursor:grab}.block-head .handle{color:#c0c4cc}.block-head .name{flex:1;font-weight:600}.block-head .name.off{color:var(--muted);font-weight:400;text-decoration:line-through}.block-props{border-top:1px dashed var(--border);padding:10px;background:#fafbfc}.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{font-size:12px;padding:3px 8px;border-radius:12px;border:1px solid var(--border);cursor:pointer;background:#fff}.chip.on{background:var(--accent);color:#fff;border-color:var(--accent)}.add-block{display:flex;gap:6px;margin-top:10px}.add-block select{flex:1}pre.code{background:#0f172a;color:#e2e8f0;padding:12px;border-radius:var(--radius);font-size:12px;overflow:auto;white-space:pre-wrap}.hint{font-size:12px;color:var(--muted)}.error{color:var(--danger);font-size:12px;margin-top:6px}.empty{padding:40px;text-align:center;color:var(--muted)}.modal-bg{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000059;display:flex;align-items:center;justify-content:center}.modal{background:#fff;padding:24px;border-radius:12px;width:420px}table.docs{width:100%;border-collapse:collapse;font-size:13px}table.docs th,table.docs td{text-align:left;padding:6px 8px;border-bottom:1px solid var(--border)}.auth-bg{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg)}.auth-card{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:28px;width:380px}.page{padding:20px;max-width:1100px;margin:0 auto}.card{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:20px 24px;margin-bottom:16px}.card h2{font-size:17px;margin:0 0 6px}.card h3{font-size:13px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin:18px 0 8px}.grid4{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.logo-box{height:90px;border:1px dashed var(--border);border-radius:8px;display:flex;align-items:center;justify-content:center;margin-bottom:6px;background:#fafbfc}.logo-box img{max-height:80px;max-width:200px}code.key{font-family:ui-monospace,monospace;font-size:12px;background:#f3f4f6;padding:3px 8px;border-radius:4px}table.items-edit{width:100%;border-collapse:collapse}table.items-edit th{font-size:11px;color:var(--muted);font-weight:500;text-align:left;padding:2px 4px}table.items-edit th.n,table.items-edit td.n{text-align:right}table.items-edit td{padding:2px 4px}table.items-edit td.n input{text-align:right;width:80px}table.items-edit td.u input{width:56px}table.items-edit td.amount{white-space:nowrap;font-weight:600;padding-left:10px}table.items-edit td.x button{border:0;color:var(--danger);padding:0 4px}.totals-box{width:240px;background:#f8fafc;border:1px solid var(--border);border-radius:10px;padding:14px}.totals-box>div{display:flex;justify-content:space-between;padding:4px 0}.totals-box>div.grand{border-top:1px solid var(--accent);margin-top:4px;padding-top:8px;font-size:16px;color:var(--accent)}.msg.ok{color:#166534;font-size:12px}.grow{flex:1}.row{display:flex;align-items:center;gap:8px}.row .hint{margin-left:8px}label.radio{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--text)}label.radio input{width:auto}.warn{font-size:12px;color:#92400e;background:#fffbeb;border:1px solid #fde68a;border-radius:6px;padding:8px 10px;margin-top:8px}
