:root{--primary: #0f2d3a;--primary-light: #1a4a5e;--primary-bg: #f0f7fa;--bg: #f2f4f7;--card-bg: #ffffff;--border: #dfe3e8;--text: #1a2332;--text-light: #6b7280;--accent: #e8720c;--accent-hover: #cf6509;--accent-light: #fff7ed;--danger: #dc2626;--danger-bg: #fef2f2;--success: #16a34a;--success-bg: #f0fdf4;--warn: #d97706;--radius: 10px;--shadow: 0 1px 3px rgba(0, 0, 0, .05), 0 1px 2px rgba(0, 0, 0, .03);--shadow-md: 0 4px 14px rgba(0, 0, 0, .08);--heading: #0f2d3a;--chrome: #0f2d3a;--code-surface: #0f2d3a;--surface-2: #f8f9fb;--input-bg: #ffffff;--accent-ink: #c15c06;--expr-focus-bg: #fefce8;--tree-root-bg: linear-gradient(135deg, #e0ecf5 0%, #d6e4f0 100%);--tree-root-border: #c2d5e3;--btn-hover-border: #b0b7c0;--rule-border: #ebeef1;--lookup-border: #fde0b5;--lookup-tag-border: #fcd6a0;color-scheme:light}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;background:var(--bg);color:var(--text);line-height:1.5;min-height:100vh}header{background:var(--chrome);color:#fff;padding:6px 20px;position:sticky;top:0;z-index:100;box-shadow:0 2px 12px #00000040}.header-bar{display:flex;align-items:center;justify-content:space-between;gap:16px;max-width:1200px;margin:0 auto}.header-brand{display:flex;align-items:center;gap:10px;min-width:0}.app-logo{height:38px;width:auto;flex-shrink:0}.app-title-img{height:40px;width:auto;max-width:100%}.header-actions{display:flex;align-items:center;gap:6px;flex-shrink:0}header h1{display:none}@media(max-width:768px){.app-title-img{display:none}}#tab-bar{display:flex;gap:4px}.tab-btn{background:#ffffff14;border:none;color:#ffffffa6;padding:9px 22px;font-size:.82rem;font-weight:600;cursor:pointer;border-radius:8px 8px 0 0;white-space:nowrap;transition:all .2s ease;letter-spacing:.02em;text-transform:uppercase;position:relative}.tab-btn:hover{background:#ffffff24;color:#ffffffe6}.tab-btn.active{background:var(--accent);color:#fff;box-shadow:0 -2px 8px #e8720c4d}main{max-width:1200px;margin:0 auto;padding:20px 24px}.tab-content{display:none}.tab-content.active{display:block}.card{background:var(--card-bg);border-radius:var(--radius);padding:22px 24px;margin-bottom:18px;box-shadow:var(--shadow);border:1px solid var(--border);border-left:3px solid var(--accent)}.card h2{font-size:1rem;font-weight:700;margin-bottom:6px;color:var(--heading);letter-spacing:-.01em}.card p{color:var(--text-light);font-size:.84rem;margin-bottom:14px;line-height:1.55}.card code{background:var(--accent-light);color:var(--accent-hover);padding:2px 6px;border-radius:4px;font-size:.78rem;font-weight:500}button{padding:7px 15px;border:1px solid var(--border);border-radius:6px;background:var(--card-bg);color:var(--text);font-size:.82rem;cursor:pointer;font-weight:500;transition:all .15s ease}button:hover{background:var(--bg);border-color:var(--btn-hover-border)}.primary-btn{background:var(--accent);color:#fff;border-color:var(--accent);font-weight:600;padding:9px 22px;box-shadow:0 2px 6px #e8720c40}.primary-btn:hover{background:var(--accent-hover);border-color:var(--accent-hover);box-shadow:0 3px 10px #e8720c59}.danger-btn{color:var(--danger);border-color:var(--danger)}.danger-btn:hover{background:var(--danger-bg)}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;font-size:18px;line-height:1;border-radius:6px}.icon-btn:disabled{opacity:.35;cursor:not-allowed}.header-icon-btn{background:#ffffff14;border:none;color:#ffffffa6;justify-self:start}.header-icon-btn:hover:not(:disabled){background:#ffffff24;color:#fff}.btn-row{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}.btn-sm{padding:4px 8px;font-size:.75rem}.form-row{display:flex;align-items:center;gap:12px;margin-bottom:12px;flex-wrap:wrap}.form-row label{font-size:.84rem;font-weight:600;white-space:nowrap;color:var(--text)}select,input[type=text],input[type=number]{padding:7px 10px;border:1px solid var(--border);border-radius:6px;font-size:.84rem;font-family:inherit;background:var(--card-bg);color:var(--text);transition:border-color .15s,box-shadow .15s}select:focus,input[type=text]:focus,input[type=number]:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #e8720c1f}input[type=checkbox]{width:16px;height:16px;accent-color:var(--accent)}.table-scroll{overflow-x:auto;margin-bottom:12px}table{width:100%;border-collapse:collapse;font-size:.82rem}thead{position:sticky;top:0;z-index:1}th{background:var(--chrome);color:#fff;padding:8px 10px;text-align:left;font-weight:600;font-size:.78rem;white-space:nowrap;letter-spacing:.02em}th:first-child{border-radius:6px 0 0}th:last-child{border-radius:0 6px 0 0}td{padding:4px 6px;border-bottom:1px solid var(--border);vertical-align:middle}tr:nth-child(2n){background:var(--surface-2)}tr:hover{background:var(--accent-light)}td input[type=text],td input[type=number],td select{width:100%;padding:4px 6px;font-size:.8rem;border:1px solid transparent;border-radius:4px;background:transparent}td input[type=text]:focus,td input[type=number]:focus,td select:focus{background:var(--input-bg);border-color:var(--accent)}td input[type=number]{width:50px}td input[type=checkbox]{width:14px;height:14px}.status-text{font-size:.84rem;color:var(--text-light);margin-top:10px}.status-text.success{color:var(--success)}.status-text.error{color:var(--danger)}.placeholder-text{color:var(--text-light);font-style:italic}#column-mapping-container{display:grid;gap:5px}.mapping-row{display:grid;grid-template-columns:1fr 30px 1fr;align-items:center;gap:8px;padding:6px 10px;background:var(--surface-2);border-radius:6px;border:1px solid var(--border);transition:border-color .15s}.mapping-row-date{grid-template-columns:1fr 30px 1fr 20px 140px}.date-fmt-label{text-align:center;font-size:.9rem}.date-fmt-field{padding:5px 8px;border:1px solid var(--accent);border-radius:4px;font-size:.78rem;background:var(--input-bg);font-family:Cascadia Code,Fira Code,monospace;color:var(--accent-hover)}.mapping-row:hover{border-color:var(--accent)}.mapping-row .source-col{font-size:.84rem;font-weight:500;color:var(--text-light)}.mapping-row .arrow{text-align:center;color:var(--accent);font-weight:700}.mapping-row .mapped-field{padding:5px 8px;border:1px solid var(--border);border-radius:4px;font-size:.84rem;background:var(--input-bg)}.preview-box{background:var(--code-surface);color:#e2e8f0;padding:16px;border-radius:var(--radius);font-family:Cascadia Code,Fira Code,Consolas,monospace;font-size:.8rem;line-height:1.6;max-height:400px;overflow:auto;white-space:pre;min-height:60px}.preview-interactive{background:var(--code-surface);color:#e2e8f0;padding:16px;border-radius:var(--radius);font-family:Cascadia Code,Fira Code,Consolas,monospace;font-size:.8rem;line-height:1.6;max-height:520px;overflow:auto;min-height:60px}.preview-interactive details{padding-left:1.4em}.preview-interactive>details{padding-left:0;margin-bottom:8px;border-bottom:1px solid rgba(255,255,255,.08);padding-bottom:6px}.preview-interactive>details:last-child{border-bottom:none;margin-bottom:0}.ptree-summary{cursor:pointer;list-style:none;display:flex;align-items:center;gap:5px;padding:2px 4px;border-radius:4px;-webkit-user-select:none;user-select:none;white-space:nowrap}.ptree-summary::-webkit-details-marker{display:none}.ptree-summary::marker{display:none}.ptree-summary:hover{background:#ffffff14}details[open]>.ptree-summary:before{content:"▾ ";color:var(--accent)}details:not([open])>.ptree-summary:before{content:"▸ ";color:var(--text-light)}.ptree-icon{font-size:.9rem;flex-shrink:0;display:inline-flex;align-items:center}.ptree-leaf{display:flex;align-items:center;gap:5px;padding:2px 4px 2px calc(1.4em + 4px);color:#94a3b8;white-space:nowrap}.tree-empty-hint{color:var(--text-light);font-style:italic;font-size:.84rem;padding:20px;text-align:center}.log-box{background:var(--code-surface);color:#94a3b8;padding:16px;border-radius:var(--radius);font-family:Cascadia Code,Fira Code,Consolas,monospace;font-size:.75rem;line-height:1.5;max-height:350px;overflow:auto;white-space:pre-wrap;word-break:break-word;min-height:60px}#progress-container{display:flex;align-items:center;gap:12px;margin:12px 0}progress{flex:1;height:8px;border-radius:4px;appearance:none}progress::-webkit-progress-bar{background:var(--bg);border-radius:4px}progress::-webkit-progress-value{background:linear-gradient(90deg,var(--accent),#f59e0b);border-radius:4px;transition:width .3s ease}#progress-text{font-size:.84rem;font-weight:600;color:var(--accent);min-width:80px}.record-list-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.record-list-header label{font-size:.84rem;font-weight:600;display:flex;align-items:center;gap:6px;cursor:pointer}.record-count{font-size:.8rem;color:var(--text-light)}.gen-option{display:flex;align-items:center;gap:8px;font-size:.82rem;color:var(--text);margin-bottom:12px;cursor:pointer}#record-selection{max-height:250px;overflow-y:auto;padding:8px 10px;background:var(--surface-2);border-radius:var(--radius);border:1px solid var(--border);margin-bottom:12px}#record-selection:empty:after{content:"Load source data to see records.";font-size:.82rem;color:var(--text-light);font-style:italic}#record-selection label{display:flex;align-items:center;gap:6px;font-size:.82rem;padding:4px 6px;border-radius:4px;cursor:pointer;transition:background .1s}#record-selection label:hover{background:var(--accent-light)}#lookup-table-editor table{margin-top:12px}#lookup-table-editor .btn-row{margin-top:8px}.lookup-fields-bar{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:10px;padding:8px 10px;background:var(--accent-light);border-radius:6px;border:1px solid var(--lookup-border)}.lookup-fields-label{font-size:.8rem;font-weight:600;color:var(--accent-hover);white-space:nowrap}.lookup-field-tag{display:inline-flex;align-items:center;gap:2px;background:var(--input-bg);border:1px solid var(--lookup-tag-border);border-radius:14px;padding:2px 4px 2px 8px}.lookup-field-name{border:none!important;background:transparent!important;font-size:.78rem!important;font-weight:500;color:var(--accent-hover);width:80px;padding:2px 4px!important}.lookup-field-name:focus{outline:none}.lookup-field-tag .btn-sm{padding:1px 5px;font-size:.65rem;border-radius:50%;min-width:18px;min-height:18px}.lookup-usage-hint{margin-top:10px;padding:8px 12px;background:var(--accent-light);border-radius:6px;font-size:.78rem;color:var(--text-light);border:1px solid var(--lookup-border)}.lookup-usage-hint code{background:var(--input-bg);padding:1px 5px;border-radius:3px;font-size:.75rem;color:var(--accent-hover)}.field-chips-bar{background:var(--accent-light);border:1px solid var(--lookup-border);border-radius:var(--radius);padding:10px 14px;margin-bottom:14px}.field-chips-label{font-size:.82rem;font-weight:700;color:var(--accent-hover);margin-right:8px}.field-chips-hint{font-size:.75rem;color:var(--text-light);display:block;margin-bottom:8px}.field-chips{display:flex;flex-wrap:wrap;gap:6px}.field-chips:empty:after{content:"Load source data first to see available fields.";font-size:.8rem;color:var(--text-light);font-style:italic}.field-chip{display:inline-block;padding:4px 10px;background:var(--accent);color:#fff;border:none;border-radius:14px;font-size:.75rem;font-weight:600;cursor:pointer;transition:all .15s ease;line-height:1.3;box-shadow:0 1px 3px #e8720c40}.field-chip:hover{background:var(--accent-hover);transform:translateY(-1px);box-shadow:0 3px 6px #e8720c4d}.field-chip:active{transform:translateY(0)}.tree-builder{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2);padding:12px;min-height:80px;max-height:600px;overflow-y:auto;font-size:.84rem}.tree-node-header{display:flex;align-items:center;gap:4px;padding:4px 6px;border-radius:6px;min-height:34px;transition:background .1s}.tree-node-header:hover{background:var(--accent-light)}.tree-root>.tree-node-header{background:var(--tree-root-bg);font-weight:600;border-radius:8px;margin-bottom:4px;border:1px solid var(--tree-root-border)}.tree-root-label{font-weight:700;color:var(--heading);font-size:.88rem;-webkit-user-select:none;user-select:none}.tree-indent{display:inline-block;width:24px;flex-shrink:0}.tree-toggle{width:20px;height:20px;padding:0;border:none;background:transparent;color:var(--text-light);cursor:pointer;font-size:.65rem;flex-shrink:0;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all .15s}.tree-toggle:hover{background:var(--border);color:var(--text)}.tree-toggle-placeholder{width:20px;flex-shrink:0}.tree-icon{font-size:1rem;flex-shrink:0;width:20px;display:inline-flex;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none}.tree-node-name{flex:1;min-width:120px;padding:3px 6px;border:1px solid transparent;border-radius:4px;font-size:.84rem;background:transparent;font-family:inherit;transition:all .15s}.tree-node-name:hover{border-color:var(--border)}.tree-node-name:focus{background:var(--input-bg);border-color:var(--accent);outline:none;box-shadow:0 0 0 2px #e8720c26}input.expr-input:focus{background:var(--expr-focus-bg)!important;border-color:var(--accent)!important;box-shadow:0 0 0 2px #e8720c33!important}.tree-node-actions{display:flex;gap:3px;flex-shrink:0;opacity:0;transition:opacity .15s;margin-left:auto}.tree-node-header:hover .tree-node-actions,.tree-node-header:focus-within .tree-node-actions{opacity:1}.tree-root>.tree-node-header .tree-node-actions{opacity:1}.tree-add-btn{color:var(--accent-ink);border-color:var(--accent);font-size:.7rem;padding:2px 7px}.tree-icon svg,.ptree-icon svg{display:block}.tree-icon.icon-folder{color:var(--accent)}.tree-icon.icon-file{color:var(--text-light)}.ptree-icon.icon-folder{color:var(--accent)}.ptree-icon.icon-file{color:#94a3b8}.header-icon-btn svg{display:block}.tree-add-btn:hover{background:var(--accent-light)}.cond-builder{margin-bottom:6px}.cond-builder .cond-mode{flex:1}.cond-rows{display:flex;flex-direction:column;gap:5px;margin:6px 0}.cond-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.cond-join{font-size:.72rem;font-weight:700;text-transform:uppercase;color:var(--text-light);min-width:26px;text-align:right}.cond-row .cond-field{flex:1;min-width:90px}.cond-row .cond-op{width:48px;text-align:center}.cond-row .cond-value,.cond-prefix-row .cond-value{flex:1;min-width:80px}.cond-prefix-row .cond-prefix{flex:1;min-width:90px}.cond-eq{color:var(--text-light);font-weight:600}.cond-del{flex-shrink:0}.cond-add{margin-left:26px}.tree-node-preview{font-size:.72rem;color:var(--text-light);line-height:1.35;margin-bottom:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tree-node-preview .expr-arrow{color:var(--accent);font-weight:700}.tree-node-preview .expr-value{color:var(--text);font-family:Cascadia Code,Fira Code,Consolas,monospace}.cond-preview{font-size:.72rem;line-height:1.35;margin:-2px 0 6px 88px}.expr-warn{color:var(--warn);font-weight:600}.expr-ok{color:var(--success);font-weight:600}.expr-muted{color:var(--text-light)}.tree-node-details{padding:10px 14px;background:var(--surface-2);border:1px solid var(--border);border-radius:6px;margin-top:2px;margin-bottom:4px;border-left:3px solid var(--accent)}.tree-detail-row{display:flex;align-items:center;gap:8px;margin-bottom:6px}.tree-detail-row:last-child{margin-bottom:0}.tree-detail-row label{font-size:.8rem;font-weight:500;color:var(--text-light);min-width:80px;white-space:nowrap}.tree-detail-row input[type=text],.tree-detail-row select{flex:1;padding:4px 8px;font-size:.8rem;border:1px solid var(--border);border-radius:4px;background:var(--input-bg)}.tree-detail-row input[type=text]:focus,.tree-detail-row select:focus{border-color:var(--accent);box-shadow:0 0 0 2px #e8720c1f;outline:none}.tree-detail-row input[type=checkbox]{width:16px;height:16px}.tree-rules-section{margin-top:8px;padding-top:8px;border-top:1px solid var(--border)}.tree-rules-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}.tree-rules-header span{font-size:.8rem;font-weight:600;color:var(--accent-hover)}.tree-rules-table{width:100%;border-collapse:collapse;font-size:.78rem;margin-bottom:4px}.tree-rules-table th{background:var(--accent-light);color:var(--accent-hover);padding:4px 6px;font-size:.75rem;font-weight:600;text-align:left}.tree-rules-table td{padding:3px 4px;border-bottom:1px solid var(--rule-border)}.tree-rules-table td input,.tree-rules-table td select{width:100%;padding:3px 5px;font-size:.78rem;border:1px solid transparent;border-radius:3px;background:transparent}.tree-rules-table td input:focus,.tree-rules-table td select:focus{background:var(--input-bg);border-color:var(--accent);outline:none}.tree-node-children.collapsed{display:none}.tree-node.not-required>.tree-node-header{opacity:.5}.tree-node.not-required>.tree-node-header:hover{opacity:.8}.tree-builder-empty{color:var(--text-light);font-style:italic;font-size:.84rem;text-align:center;padding:20px}.modal-overlay{position:fixed;inset:0;background:#0f172a8c;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:1000;display:flex;align-items:center;justify-content:center;animation:fadeIn .15s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal-box{background:var(--card-bg);border-radius:14px;box-shadow:0 20px 60px #0000004d;padding:24px;max-width:420px;width:90%;animation:slideUp .2s ease}@keyframes slideUp{0%{transform:translateY(12px);opacity:0}to{transform:translateY(0);opacity:1}}.modal-body{font-size:.9rem;line-height:1.6;color:var(--text);margin-bottom:20px}.modal-actions{display:flex;justify-content:flex-end;gap:8px}.modal-actions button{min-width:80px}.config-list-item{display:flex;align-items:center;padding:10px 14px;border-radius:6px;cursor:pointer;margin-bottom:4px;border:1px solid var(--border);font-size:.85rem;transition:all .15s}.config-list-item:hover{background:var(--accent-light);border-color:var(--accent)}.config-list-item.selected{background:var(--accent-light);border-color:var(--accent);font-weight:600}.config-list-new{color:var(--accent);font-weight:600;border-style:dashed}footer{text-align:center;padding:24px 20px;color:var(--text-light);font-size:.75rem;border-top:1px solid var(--border);background:var(--input-bg);margin-top:40px}footer p{opacity:.8;font-weight:500}@media(max-width:768px){main{padding:12px}.card{padding:16px}.tab-btn{padding:8px 14px;font-size:.75rem}.mapping-row{grid-template-columns:1fr;gap:4px}.mapping-row .arrow{display:none}.tree-node-actions{opacity:1}}@media print{header,footer,#tab-bar,.tab-content:not(#tab-build){display:none!important}#tab-build{display:block!important}#tab-build .card:not(.preview-card){display:none!important}body{background:#fff;color:#000}.preview-interactive{background:#fff;color:#000;max-height:none;overflow:visible;border:1px solid #ccc}.ptree-summary,.ptree-leaf{color:#000}details[open]>.ptree-summary:before{color:#555!important}}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--primary-bg: #12242e;--chrome: #1a2635;--code-surface: #0b1219;--bg: #0e1621;--card-bg: #172230;--border: #2a3947;--text: #e4e9ef;--text-light: #9aa7b4;--accent: #ef7f1a;--accent-hover: #f2902f;--accent-light: rgba(232, 114, 12, .14);--danger: #f26666;--danger-bg: rgba(220, 38, 38, .16);--success: #34d399;--success-bg: rgba(22, 163, 74, .16);--warn: #fbbf24;--heading: #dfe8f0;--surface-2: #1e2a37;--input-bg: #101a25;--accent-ink: #f6a05a;--expr-focus-bg: rgba(232, 114, 12, .16);--tree-root-bg: linear-gradient(135deg, #202d3d 0%, #1a2431 100%);--tree-root-border: #33465a;--btn-hover-border: #3d4d5b;--rule-border: #253340;--lookup-border: rgba(232, 114, 12, .32);--lookup-tag-border: rgba(232, 114, 12, .38);--shadow: 0 1px 3px rgba(0, 0, 0, .4), 0 1px 2px rgba(0, 0, 0, .3);--shadow-md: 0 4px 14px rgba(0, 0, 0, .5)}}:root[data-theme=dark]{color-scheme:dark;--primary-bg: #12242e;--chrome: #1a2635;--code-surface: #0b1219;--bg: #0e1621;--card-bg: #172230;--border: #2a3947;--text: #e4e9ef;--text-light: #9aa7b4;--accent: #ef7f1a;--accent-hover: #f2902f;--accent-light: rgba(232, 114, 12, .14);--danger: #f26666;--danger-bg: rgba(220, 38, 38, .16);--success: #34d399;--success-bg: rgba(22, 163, 74, .16);--warn: #fbbf24;--heading: #dfe8f0;--surface-2: #1e2a37;--input-bg: #101a25;--accent-ink: #f6a05a;--expr-focus-bg: rgba(232, 114, 12, .16);--tree-root-bg: linear-gradient(135deg, #202d3d 0%, #1a2431 100%);--tree-root-border: #33465a;--btn-hover-border: #3d4d5b;--rule-border: #253340;--lookup-border: rgba(232, 114, 12, .32);--lookup-tag-border: rgba(232, 114, 12, .38);--shadow: 0 1px 3px rgba(0, 0, 0, .4), 0 1px 2px rgba(0, 0, 0, .3);--shadow-md: 0 4px 14px rgba(0, 0, 0, .5)}
