:host,:root{--d2h-bg-color:#fff;--d2h-border-color:#ddd;--d2h-dim-color:rgba(0,0,0,.3);--d2h-line-border-color:#eee;--d2h-file-header-bg-color:#f7f7f7;--d2h-file-header-border-color:#d8d8d8;--d2h-empty-placeholder-bg-color:#f1f1f1;--d2h-empty-placeholder-border-color:#e1e1e1;--d2h-selected-color:#c8e1ff;--d2h-ins-bg-color:#dfd;--d2h-ins-border-color:#b4e2b4;--d2h-ins-highlight-bg-color:#97f295;--d2h-ins-label-color:#399839;--d2h-del-bg-color:#fee8e9;--d2h-del-border-color:#e9aeae;--d2h-del-highlight-bg-color:#ffb6ba;--d2h-del-label-color:#c33;--d2h-change-del-color:#fdf2d0;--d2h-change-ins-color:#ded;--d2h-info-bg-color:#f8fafd;--d2h-info-border-color:#d5e4f2;--d2h-change-label-color:#d0b44c;--d2h-moved-label-color:#3572b0;--d2h-dark-color:#e6edf3;--d2h-dark-bg-color:#0d1117;--d2h-dark-border-color:#30363d;--d2h-dark-dim-color:#6e7681;--d2h-dark-line-border-color:#21262d;--d2h-dark-file-header-bg-color:#161b22;--d2h-dark-file-header-border-color:#30363d;--d2h-dark-empty-placeholder-bg-color:hsla(215,8%,47%,.1);--d2h-dark-empty-placeholder-border-color:#30363d;--d2h-dark-selected-color:rgba(56,139,253,.1);--d2h-dark-ins-bg-color:rgba(46,160,67,.15);--d2h-dark-ins-border-color:rgba(46,160,67,.4);--d2h-dark-ins-highlight-bg-color:rgba(46,160,67,.4);--d2h-dark-ins-label-color:#3fb950;--d2h-dark-del-bg-color:rgba(248,81,73,.1);--d2h-dark-del-border-color:rgba(248,81,73,.4);--d2h-dark-del-highlight-bg-color:rgba(248,81,73,.4);--d2h-dark-del-label-color:#f85149;--d2h-dark-change-del-color:rgba(210,153,34,.2);--d2h-dark-change-ins-color:rgba(46,160,67,.25);--d2h-dark-info-bg-color:rgba(56,139,253,.1);--d2h-dark-info-border-color:rgba(56,139,253,.4);--d2h-dark-change-label-color:#d29922;--d2h-dark-moved-label-color:#3572b0}.d2h-wrapper{text-align:left}.d2h-file-header{background-color:#f7f7f7;background-color:var(--d2h-file-header-bg-color);border-bottom:1px solid #d8d8d8;border-bottom:1px solid var(--d2h-file-header-border-color);display:-webkit-box;display:-ms-flexbox;display:flex;font-family:Source Sans Pro,Helvetica Neue,Helvetica,Arial,sans-serif;height:35px;padding:5px 10px}.d2h-file-header.d2h-sticky-header{position:sticky;top:0;z-index:1}.d2h-file-stats{display:-webkit-box;display:-ms-flexbox;display:flex;font-size:14px;margin-left:auto}.d2h-lines-added{border:1px solid #b4e2b4;border:1px solid var(--d2h-ins-border-color);border-radius:5px 0 0 5px;color:#399839;color:var(--d2h-ins-label-color);padding:2px;text-align:right;vertical-align:middle}.d2h-lines-deleted{border:1px solid #e9aeae;border:1px solid var(--d2h-del-border-color);border-radius:0 5px 5px 0;color:#c33;color:var(--d2h-del-label-color);margin-left:1px;padding:2px;text-align:left;vertical-align:middle}.d2h-file-name-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:15px;width:100%}.d2h-file-name{overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap}.d2h-file-wrapper{border:1px solid #ddd;border:1px solid var(--d2h-border-color);border-radius:3px;margin-bottom:1em}.d2h-file-collapse{-webkit-box-pack:end;-ms-flex-pack:end;cursor:pointer;display:none;font-size:12px;justify-content:flex-end;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border:1px solid #ddd;border:1px solid var(--d2h-border-color);border-radius:3px;padding:4px 8px}.d2h-file-collapse.d2h-selected{background-color:#c8e1ff;background-color:var(--d2h-selected-color)}.d2h-file-collapse-input{margin:0 4px 0 0}.d2h-diff-table{border-collapse:collapse;font-family:Menlo,Consolas,monospace;font-size:13px;width:100%}.d2h-files-diff{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%}.d2h-file-diff{overflow-y:hidden}.d2h-file-diff.d2h-d-none,.d2h-files-diff.d2h-d-none{display:none}.d2h-file-side-diff{display:inline-block;overflow-x:scroll;overflow-y:hidden;width:50%}.d2h-code-line{padding:0 8em;width:calc(100% - 16em)}.d2h-code-line,.d2h-code-side-line{display:inline-block;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;white-space:nowrap}.d2h-code-side-line{padding:0 4.5em;width:calc(100% - 9em)}.d2h-code-line-ctn{background:none;display:inline-block;padding:0;word-wrap:normal;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text;vertical-align:middle;white-space:pre;width:100%}.d2h-code-line del,.d2h-code-side-line del{background-color:#ffb6ba;background-color:var(--d2h-del-highlight-bg-color)}.d2h-code-line del,.d2h-code-line ins,.d2h-code-side-line del,.d2h-code-side-line ins{border-radius:.2em;display:inline-block;margin-top:-1px;-webkit-text-decoration:none;text-decoration:none}.d2h-code-line ins,.d2h-code-side-line ins{background-color:#97f295;background-color:var(--d2h-ins-highlight-bg-color);text-align:left}.d2h-code-line-prefix{background:none;display:inline;padding:0;word-wrap:normal;white-space:pre}.line-num1{float:left}.line-num1,.line-num2{-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;padding:0 .5em;text-overflow:ellipsis;width:3.5em}.line-num2{float:right}.d2h-code-linenumber{background-color:#fff;background-color:var(--d2h-bg-color);border:solid #eee;border:solid var(--d2h-line-border-color);border-width:0 1px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#0000004d;color:var(--d2h-dim-color);cursor:pointer;display:inline-block;position:absolute;text-align:right;width:7.5em}.d2h-code-linenumber:after{content:"​"}.d2h-code-side-linenumber{background-color:#fff;background-color:var(--d2h-bg-color);border:solid #eee;border:solid var(--d2h-line-border-color);border-width:0 1px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#0000004d;color:var(--d2h-dim-color);cursor:pointer;display:inline-block;overflow:hidden;padding:0 .5em;position:absolute;text-align:right;text-overflow:ellipsis;width:4em}.d2h-code-side-linenumber:after{content:"​"}.d2h-code-side-emptyplaceholder,.d2h-emptyplaceholder{background-color:#f1f1f1;background-color:var(--d2h-empty-placeholder-bg-color);border-color:#e1e1e1;border-color:var(--d2h-empty-placeholder-border-color)}.d2h-code-line-prefix,.d2h-code-linenumber,.d2h-code-side-linenumber,.d2h-emptyplaceholder{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.d2h-code-linenumber,.d2h-code-side-linenumber{direction:rtl}.d2h-del{background-color:#fee8e9;background-color:var(--d2h-del-bg-color);border-color:#e9aeae;border-color:var(--d2h-del-border-color)}.d2h-ins{background-color:#dfd;background-color:var(--d2h-ins-bg-color);border-color:#b4e2b4;border-color:var(--d2h-ins-border-color)}.d2h-info{background-color:#f8fafd;background-color:var(--d2h-info-bg-color);border-color:#d5e4f2;border-color:var(--d2h-info-border-color);color:#0000004d;color:var(--d2h-dim-color)}.d2h-file-diff .d2h-del.d2h-change{background-color:#fdf2d0;background-color:var(--d2h-change-del-color)}.d2h-file-diff .d2h-ins.d2h-change{background-color:#ded;background-color:var(--d2h-change-ins-color)}.d2h-file-list-wrapper{margin-bottom:10px}.d2h-file-list-wrapper a{-webkit-text-decoration:none;text-decoration:none}.d2h-file-list-wrapper a,.d2h-file-list-wrapper a:visited{color:#3572b0;color:var(--d2h-moved-label-color)}.d2h-file-list-header{text-align:left}.d2h-file-list-title{font-weight:700}.d2h-file-list-line{display:-webkit-box;display:-ms-flexbox;display:flex;text-align:left}.d2h-file-list{display:block;list-style:none;margin:0;padding:0}.d2h-file-list>li{border-bottom:1px solid #ddd;border-bottom:1px solid var(--d2h-border-color);margin:0;padding:5px 10px}.d2h-file-list>li:last-child{border-bottom:none}.d2h-file-switch{cursor:pointer;display:none;font-size:10px}.d2h-icon{fill:currentColor;margin-right:10px;vertical-align:middle}.d2h-deleted{color:#c33;color:var(--d2h-del-label-color)}.d2h-added{color:#399839;color:var(--d2h-ins-label-color)}.d2h-changed{color:#d0b44c;color:var(--d2h-change-label-color)}.d2h-moved{color:#3572b0;color:var(--d2h-moved-label-color)}.d2h-tag{background-color:#fff;background-color:var(--d2h-bg-color);display:-webkit-box;display:-ms-flexbox;display:flex;font-size:10px;margin-left:5px;padding:0 2px}.d2h-deleted-tag{border:1px solid #c33;border:1px solid var(--d2h-del-label-color)}.d2h-added-tag{border:1px solid #399839;border:1px solid var(--d2h-ins-label-color)}.d2h-changed-tag{border:1px solid #d0b44c;border:1px solid var(--d2h-change-label-color)}.d2h-moved-tag{border:1px solid #3572b0;border:1px solid var(--d2h-moved-label-color)}.d2h-dark-color-scheme{background-color:#0d1117;background-color:var(--d2h-dark-bg-color);color:#e6edf3;color:var(--d2h-dark-color)}.d2h-dark-color-scheme .d2h-file-header{background-color:#161b22;background-color:var(--d2h-dark-file-header-bg-color);border-bottom:#30363d;border-bottom:var(--d2h-dark-file-header-border-color)}.d2h-dark-color-scheme .d2h-lines-added{border:1px solid rgba(46,160,67,.4);border:1px solid var(--d2h-dark-ins-border-color);color:#3fb950;color:var(--d2h-dark-ins-label-color)}.d2h-dark-color-scheme .d2h-lines-deleted{border:1px solid rgba(248,81,73,.4);border:1px solid var(--d2h-dark-del-border-color);color:#f85149;color:var(--d2h-dark-del-label-color)}.d2h-dark-color-scheme .d2h-code-line del,.d2h-dark-color-scheme .d2h-code-side-line del{background-color:#f8514966;background-color:var(--d2h-dark-del-highlight-bg-color)}.d2h-dark-color-scheme .d2h-code-line ins,.d2h-dark-color-scheme .d2h-code-side-line ins{background-color:#2ea04366;background-color:var(--d2h-dark-ins-highlight-bg-color)}.d2h-dark-color-scheme .d2h-diff-tbody{border-color:#30363d;border-color:var(--d2h-dark-border-color)}.d2h-dark-color-scheme .d2h-code-side-linenumber{background-color:#0d1117;background-color:var(--d2h-dark-bg-color);border-color:#21262d;border-color:var(--d2h-dark-line-border-color);color:#6e7681;color:var(--d2h-dark-dim-color)}.d2h-dark-color-scheme .d2h-files-diff .d2h-code-side-emptyplaceholder,.d2h-dark-color-scheme .d2h-files-diff .d2h-emptyplaceholder{background-color:#6e76811a;background-color:var(--d2h-dark-empty-placeholder-bg-color);border-color:#30363d;border-color:var(--d2h-dark-empty-placeholder-border-color)}.d2h-dark-color-scheme .d2h-code-linenumber{background-color:#0d1117;background-color:var(--d2h-dark-bg-color);border-color:#21262d;border-color:var(--d2h-dark-line-border-color);color:#6e7681;color:var(--d2h-dark-dim-color)}.d2h-dark-color-scheme .d2h-del{background-color:#f851491a;background-color:var(--d2h-dark-del-bg-color);border-color:#f8514966;border-color:var(--d2h-dark-del-border-color)}.d2h-dark-color-scheme .d2h-ins{background-color:#2ea04326;background-color:var(--d2h-dark-ins-bg-color);border-color:#2ea04366;border-color:var(--d2h-dark-ins-border-color)}.d2h-dark-color-scheme .d2h-info{background-color:#388bfd1a;background-color:var(--d2h-dark-info-bg-color);border-color:#388bfd66;border-color:var(--d2h-dark-info-border-color);color:#6e7681;color:var(--d2h-dark-dim-color)}.d2h-dark-color-scheme .d2h-file-diff .d2h-del.d2h-change{background-color:#d2992233;background-color:var(--d2h-dark-change-del-color)}.d2h-dark-color-scheme .d2h-file-diff .d2h-ins.d2h-change{background-color:#2ea04340;background-color:var(--d2h-dark-change-ins-color)}.d2h-dark-color-scheme .d2h-file-wrapper{border:1px solid #30363d;border:1px solid var(--d2h-dark-border-color)}.d2h-dark-color-scheme .d2h-file-collapse{border:1px solid #0d1117;border:1px solid var(--d2h-dark-bg-color)}.d2h-dark-color-scheme .d2h-file-collapse.d2h-selected{background-color:#388bfd1a;background-color:var(--d2h-dark-selected-color)}.d2h-dark-color-scheme .d2h-file-list-wrapper a,.d2h-dark-color-scheme .d2h-file-list-wrapper a:visited{color:#3572b0;color:var(--d2h-dark-moved-label-color)}.d2h-dark-color-scheme .d2h-file-list>li{border-bottom:1px solid #0d1117;border-bottom:1px solid var(--d2h-dark-bg-color)}.d2h-dark-color-scheme .d2h-deleted{color:#f85149;color:var(--d2h-dark-del-label-color)}.d2h-dark-color-scheme .d2h-added{color:#3fb950;color:var(--d2h-dark-ins-label-color)}.d2h-dark-color-scheme .d2h-changed{color:#d29922;color:var(--d2h-dark-change-label-color)}.d2h-dark-color-scheme .d2h-moved{color:#3572b0;color:var(--d2h-dark-moved-label-color)}.d2h-dark-color-scheme .d2h-tag{background-color:#0d1117;background-color:var(--d2h-dark-bg-color)}.d2h-dark-color-scheme .d2h-deleted-tag{border:1px solid #f85149;border:1px solid var(--d2h-dark-del-label-color)}.d2h-dark-color-scheme .d2h-added-tag{border:1px solid #3fb950;border:1px solid var(--d2h-dark-ins-label-color)}.d2h-dark-color-scheme .d2h-changed-tag{border:1px solid #d29922;border:1px solid var(--d2h-dark-change-label-color)}.d2h-dark-color-scheme .d2h-moved-tag{border:1px solid #3572b0;border:1px solid var(--d2h-dark-moved-label-color)}@media (prefers-color-scheme:dark){.d2h-auto-color-scheme{background-color:#0d1117;background-color:var(--d2h-dark-bg-color);color:#e6edf3;color:var(--d2h-dark-color)}.d2h-auto-color-scheme .d2h-file-header{background-color:#161b22;background-color:var(--d2h-dark-file-header-bg-color);border-bottom:#30363d;border-bottom:var(--d2h-dark-file-header-border-color)}.d2h-auto-color-scheme .d2h-lines-added{border:1px solid rgba(46,160,67,.4);border:1px solid var(--d2h-dark-ins-border-color);color:#3fb950;color:var(--d2h-dark-ins-label-color)}.d2h-auto-color-scheme .d2h-lines-deleted{border:1px solid rgba(248,81,73,.4);border:1px solid var(--d2h-dark-del-border-color);color:#f85149;color:var(--d2h-dark-del-label-color)}.d2h-auto-color-scheme .d2h-code-line del,.d2h-auto-color-scheme .d2h-code-side-line del{background-color:#f8514966;background-color:var(--d2h-dark-del-highlight-bg-color)}.d2h-auto-color-scheme .d2h-code-line ins,.d2h-auto-color-scheme .d2h-code-side-line ins{background-color:#2ea04366;background-color:var(--d2h-dark-ins-highlight-bg-color)}.d2h-auto-color-scheme .d2h-diff-tbody{border-color:#30363d;border-color:var(--d2h-dark-border-color)}.d2h-auto-color-scheme .d2h-code-side-linenumber{background-color:#0d1117;background-color:var(--d2h-dark-bg-color);border-color:#21262d;border-color:var(--d2h-dark-line-border-color);color:#6e7681;color:var(--d2h-dark-dim-color)}.d2h-auto-color-scheme .d2h-files-diff .d2h-code-side-emptyplaceholder,.d2h-auto-color-scheme .d2h-files-diff .d2h-emptyplaceholder{background-color:#6e76811a;background-color:var(--d2h-dark-empty-placeholder-bg-color);border-color:#30363d;border-color:var(--d2h-dark-empty-placeholder-border-color)}.d2h-auto-color-scheme .d2h-code-linenumber{background-color:#0d1117;background-color:var(--d2h-dark-bg-color);border-color:#21262d;border-color:var(--d2h-dark-line-border-color);color:#6e7681;color:var(--d2h-dark-dim-color)}.d2h-auto-color-scheme .d2h-del{background-color:#f851491a;background-color:var(--d2h-dark-del-bg-color);border-color:#f8514966;border-color:var(--d2h-dark-del-border-color)}.d2h-auto-color-scheme .d2h-ins{background-color:#2ea04326;background-color:var(--d2h-dark-ins-bg-color);border-color:#2ea04366;border-color:var(--d2h-dark-ins-border-color)}.d2h-auto-color-scheme .d2h-info{background-color:#388bfd1a;background-color:var(--d2h-dark-info-bg-color);border-color:#388bfd66;border-color:var(--d2h-dark-info-border-color);color:#6e7681;color:var(--d2h-dark-dim-color)}.d2h-auto-color-scheme .d2h-file-diff .d2h-del.d2h-change{background-color:#d2992233;background-color:var(--d2h-dark-change-del-color)}.d2h-auto-color-scheme .d2h-file-diff .d2h-ins.d2h-change{background-color:#2ea04340;background-color:var(--d2h-dark-change-ins-color)}.d2h-auto-color-scheme .d2h-file-wrapper{border:1px solid #30363d;border:1px solid var(--d2h-dark-border-color)}.d2h-auto-color-scheme .d2h-file-collapse{border:1px solid #0d1117;border:1px solid var(--d2h-dark-bg-color)}.d2h-auto-color-scheme .d2h-file-collapse.d2h-selected{background-color:#388bfd1a;background-color:var(--d2h-dark-selected-color)}.d2h-auto-color-scheme .d2h-file-list-wrapper a,.d2h-auto-color-scheme .d2h-file-list-wrapper a:visited{color:#3572b0;color:var(--d2h-dark-moved-label-color)}.d2h-auto-color-scheme .d2h-file-list>li{border-bottom:1px solid #0d1117;border-bottom:1px solid var(--d2h-dark-bg-color)}.d2h-dark-color-scheme .d2h-deleted{color:#f85149;color:var(--d2h-dark-del-label-color)}.d2h-auto-color-scheme .d2h-added{color:#3fb950;color:var(--d2h-dark-ins-label-color)}.d2h-auto-color-scheme .d2h-changed{color:#d29922;color:var(--d2h-dark-change-label-color)}.d2h-auto-color-scheme .d2h-moved{color:#3572b0;color:var(--d2h-dark-moved-label-color)}.d2h-auto-color-scheme .d2h-tag{background-color:#0d1117;background-color:var(--d2h-dark-bg-color)}.d2h-auto-color-scheme .d2h-deleted-tag{border:1px solid #f85149;border:1px solid var(--d2h-dark-del-label-color)}.d2h-auto-color-scheme .d2h-added-tag{border:1px solid #3fb950;border:1px solid var(--d2h-dark-ins-label-color)}.d2h-auto-color-scheme .d2h-changed-tag{border:1px solid #d29922;border:1px solid var(--d2h-dark-change-label-color)}.d2h-auto-color-scheme .d2h-moved-tag{border:1px solid #3572b0;border:1px solid var(--d2h-dark-moved-label-color)}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:#f0f2f5;color:#1a1a2e;min-height:100vh}.app{display:flex;flex-direction:column;min-height:100vh}.app-header{background:#1e1b4b;border-bottom:3px solid #4f46e5;padding:0 24px}.header-inner{max-width:1600px;margin:0 auto;padding:16px 0;display:flex;align-items:center;justify-content:space-between}.header-brand{display:flex;align-items:center;gap:12px}.header-icon{width:32px;height:32px;color:#818cf8;flex-shrink:0}.header-title{font-size:1.3rem;font-weight:700;color:#fff;letter-spacing:-.02em}.header-subtitle{font-size:.8rem;color:#a5b4fc;margin-top:1px}.app-main{flex:1;max-width:1600px;width:100%;margin:0 auto;padding:24px 24px 32px;display:flex;flex-direction:column;gap:0}.input-section{display:flex;align-items:stretch;border:1px solid #e2e8f0;border-radius:8px 8px 0 0;overflow:hidden;background:#fff}.input-pane{flex:1;display:flex;flex-direction:column;min-width:0}.input-pane+.swap-col+.input-pane{border-left:1px solid #e2e8f0}.pane-header{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;background:#f8fafc;border-bottom:1px solid #e2e8f0;flex-shrink:0}.pane-label{font-size:.78rem;font-weight:600;color:#64748b;text-transform:uppercase;letter-spacing:.06em}.tab-group{display:flex;background:#e2e8f0;border-radius:5px;padding:2px;gap:2px}.tab-btn{padding:3px 10px;font-size:.75rem;font-weight:500;color:#64748b;background:transparent;border:none;border-radius:3px;cursor:pointer;transition:background .15s,color .15s}.tab-btn:hover{color:#1a1a2e}.tab-btn.active{background:#fff;color:#1a1a2e;box-shadow:0 1px 2px #00000014}.code-textarea{flex:1;width:100%;min-height:280px;padding:14px;font-family:JetBrains Mono,Fira Code,Cascadia Code,Consolas,monospace;font-size:.82rem;line-height:1.6;color:#1a1a2e;background:#fff;border:none;outline:none;resize:vertical}.code-textarea::placeholder{color:#94a3b8}.drop-zone{flex:1;min-height:280px;background:#fafbfc;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .15s,border-color .15s;border:2px dashed #e2e8f0;margin:12px;border-radius:6px}.drop-zone:hover:not(.has-file){background:#f5f3ff;border-color:#a5b4fc}.drop-zone.dragging{background:#ede9fe;border-color:#4f46e5}.drop-zone.has-file{cursor:default;border-style:solid;border-color:#e2e8f0;background:#fff}.drop-prompt{display:flex;flex-direction:column;align-items:center;gap:8px;padding:24px;text-align:center}.upload-icon{width:40px;height:40px;color:#94a3b8}.drop-text{font-size:.88rem;color:#64748b}.drop-link{color:#4f46e5;text-decoration:underline;text-underline-offset:2px}.drop-hint{font-size:.75rem;color:#94a3b8}.file-loaded{display:flex;flex-direction:column;align-items:center;gap:14px;padding:24px}.file-info{display:flex;align-items:center;gap:8px}.file-icon{width:22px;height:22px;color:#4f46e5;flex-shrink:0}.file-name{font-size:.88rem;font-weight:500;color:#1a1a2e;word-break:break-all}.file-actions{display:flex;gap:8px}.file-btn{padding:5px 14px;font-size:.78rem;font-weight:500;border-radius:5px;border:1px solid #e2e8f0;background:#fff;color:#64748b;cursor:pointer;transition:background .15s,color .15s}.file-btn:hover{background:#f8fafc;color:#1a1a2e}.file-btn-remove{color:#dc2626;border-color:#fecaca}.file-btn-remove:hover{background:#fff1f2;color:#b91c1c}.swap-col{width:40px;display:flex;align-items:center;justify-content:center;background:#f8fafc;border-left:1px solid #e2e8f0;border-right:1px solid #e2e8f0;flex-shrink:0}.swap-btn{width:30px;height:30px;display:flex;align-items:center;justify-content:center;border-radius:50%;border:1px solid #e2e8f0;background:#fff;color:#64748b;cursor:pointer;transition:background .15s,color .15s,border-color .15s}.swap-btn:hover{background:#4f46e5;color:#fff;border-color:#4f46e5}.swap-btn svg{width:16px;height:16px}.controls-bar{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:#fff;border:1px solid #e2e8f0;border-top:none;border-radius:0 0 8px 8px;gap:12px;flex-wrap:wrap}.controls-left{display:flex;align-items:center;gap:8px}.controls-right{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.btn{padding:7px 18px;font-size:.85rem;font-weight:600;border-radius:6px;border:none;cursor:pointer;transition:background .15s,color .15s,opacity .15s}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:#4f46e5;color:#fff}.btn-primary:hover:not(:disabled){background:#4338ca}.btn-ghost{background:transparent;color:#64748b;border:1px solid #e2e8f0}.btn-ghost:hover:not(:disabled){background:#f8fafc;color:#1a1a2e}.stats-badge{display:flex;align-items:center;gap:6px;padding:4px 10px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:20px;font-size:.8rem;font-weight:600}.stat-added{color:#16a34a}.stat-removed{color:#dc2626}.stat-label{color:#94a3b8;font-weight:400;font-size:.75rem}.view-toggle{display:flex;background:#f1f5f9;border-radius:6px;padding:2px;gap:2px}.toggle-btn{padding:5px 12px;font-size:.78rem;font-weight:500;color:#64748b;background:transparent;border:none;border-radius:4px;cursor:pointer;transition:background .15s,color .15s}.toggle-btn:hover{color:#1a1a2e}.toggle-btn.active{background:#fff;color:#4f46e5;box-shadow:0 1px 2px #00000014;font-weight:600}.diff-section{margin-top:20px}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;padding:64px 24px;background:#fff;border:1px solid #e2e8f0;border-radius:8px}.empty-icon{width:64px;height:64px;color:#e2e8f0}.empty-text{font-size:.9rem;color:#94a3b8;text-align:center}.diff-output{background:#fff;border:1px solid #e2e8f0;border-radius:8px;overflow:hidden}.diff-output .d2h-wrapper{margin:0}.diff-output .d2h-file-wrapper{border:none;border-radius:0;margin:0}.diff-output .d2h-file-header{background:#f8fafc;border-bottom:1px solid #e2e8f0;font-size:.8rem;padding:8px 14px}.diff-output .d2h-diff-table{font-family:JetBrains Mono,Fira Code,Cascadia Code,Consolas,monospace;font-size:.8rem}.diff-output .d2h-code-linenumber,.diff-output .d2h-code-side-linenumber{color:#94a3b8!important;background:#f8fafc!important}.app-footer{padding:14px 24px;text-align:center;font-size:.78rem;color:#94a3b8;border-top:1px solid #e2e8f0;background:#fff;display:flex;flex-direction:column;align-items:center;gap:8px}.footer-privacy{color:#94a3b8}.footer-author{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:center;color:#64748b}.footer-name{color:#4f46e5;text-decoration:none;font-weight:600}.footer-name:hover{text-decoration:underline;text-underline-offset:2px}.footer-divider{color:#cbd5e1}.footer-socials{display:flex;align-items:center;gap:10px}.social-link{display:flex;align-items:center;color:#94a3b8;transition:color .15s}.social-link:hover{color:#4f46e5}.social-link svg{width:16px;height:16px}.char-diff{background:#fff;border:1px solid #e2e8f0;border-radius:8px;overflow:auto}.char-diff-table{width:100%;border-collapse:collapse;font-family:JetBrains Mono,Fira Code,Cascadia Code,Consolas,monospace;font-size:.8rem;line-height:1.6;table-layout:fixed}.char-diff-numcol{width:52px}.char-num{width:52px;min-width:52px;padding:1px 10px;text-align:right;color:#94a3b8;background:#f8fafc;border-right:1px solid #e2e8f0;-webkit-user-select:none;user-select:none;white-space:nowrap}.char-code{padding:1px 12px;white-space:pre;overflow:hidden;text-overflow:ellipsis}.char-left{border-right:1px solid #e2e8f0}.char-row-unchanged .char-num,.char-row-unchanged .char-code{background:#fff;color:#1a1a2e}.char-row-changed .char-left{background:#fff5f5}.char-row-changed .char-right{background:#f0fdf4}.char-row-changed .char-num:first-child{background:#fff0f0}.char-row-changed .char-num:last-of-type{background:#e8faf0}.char-row-added .char-num,.char-row-added .char-code{background:#f0fdf4;color:#15803d}.char-row-removed .char-num,.char-row-removed .char-code{background:#fff5f5;color:#b91c1c}.char-hl-del{background:#fca5a5;color:#7f1d1d;border-radius:2px;padding:0 1px}.char-hl-ins{background:#86efac;color:#14532d;border-radius:2px;padding:0 1px}.theme-toggle{width:36px;height:36px;display:flex;align-items:center;justify-content:center;border-radius:8px;border:1px solid rgba(255,255,255,.15);background:#ffffff14;color:#a5b4fc;cursor:pointer;flex-shrink:0;transition:background .15s,color .15s}.theme-toggle:hover{background:#ffffff29;color:#fff}.theme-toggle svg{width:18px;height:18px}[data-theme=dark] body,[data-theme=dark]{background:#0d0d1a;color:#e2e8f0}[data-theme=dark] .app-header{background:#13112b;border-bottom-color:#4f46e5}[data-theme=dark] .input-section{background:#1a1829;border-color:#2a2740}[data-theme=dark] .pane-header{background:#13112b;border-bottom-color:#2a2740}[data-theme=dark] .pane-label{color:#94a3b8}[data-theme=dark] .tab-group{background:#2a2740}[data-theme=dark] .tab-btn{color:#94a3b8}[data-theme=dark] .tab-btn:hover{color:#e2e8f0}[data-theme=dark] .tab-btn.active{background:#1a1829;color:#e2e8f0;box-shadow:0 1px 2px #0006}[data-theme=dark] .code-textarea{background:#1a1829;color:#e2e8f0}[data-theme=dark] .code-textarea::placeholder{color:#4a4a6a}[data-theme=dark] .input-pane+.swap-col+.input-pane{border-left-color:#2a2740}[data-theme=dark] .swap-col{background:#13112b;border-color:#2a2740}[data-theme=dark] .swap-btn{background:#1a1829;border-color:#2a2740;color:#94a3b8}[data-theme=dark] .swap-btn:hover{background:#4f46e5;border-color:#4f46e5;color:#fff}[data-theme=dark] .drop-zone{background:#13112b;border-color:#2a2740}[data-theme=dark] .drop-zone:hover:not(.has-file){background:#1e1b3d;border-color:#6366f1}[data-theme=dark] .drop-zone.dragging{background:#1e1b3d;border-color:#4f46e5}[data-theme=dark] .drop-zone.has-file{background:#1a1829;border-color:#2a2740}[data-theme=dark] .upload-icon{color:#4a4a6a}[data-theme=dark] .drop-text{color:#94a3b8}[data-theme=dark] .drop-hint{color:#4a4a6a}[data-theme=dark] .file-name{color:#e2e8f0}[data-theme=dark] .file-btn{background:#1a1829;border-color:#2a2740;color:#94a3b8}[data-theme=dark] .file-btn:hover{background:#2a2740;color:#e2e8f0}[data-theme=dark] .file-btn-remove{color:#f87171;border-color:#3d1a1a}[data-theme=dark] .file-btn-remove:hover{background:#2d1a1a;color:#fca5a5}[data-theme=dark] .controls-bar{background:#1a1829;border-color:#2a2740}[data-theme=dark] .btn-ghost{color:#94a3b8;border-color:#2a2740}[data-theme=dark] .btn-ghost:hover:not(:disabled){background:#2a2740;color:#e2e8f0}[data-theme=dark] .stats-badge{background:#13112b;border-color:#2a2740}[data-theme=dark] .stat-label{color:#4a4a6a}[data-theme=dark] .view-toggle{background:#13112b}[data-theme=dark] .toggle-btn{color:#94a3b8}[data-theme=dark] .toggle-btn:hover{color:#e2e8f0}[data-theme=dark] .toggle-btn.active{background:#2a2740;color:#818cf8;box-shadow:0 1px 3px #00000080}[data-theme=dark] .empty-state{background:#1a1829;border-color:#2a2740}[data-theme=dark] .empty-icon{color:#2a2740}[data-theme=dark] .empty-text{color:#4a4a6a}[data-theme=dark] .diff-output{background:#1a1829;border-color:#2a2740}[data-theme=dark] .diff-output *{border-color:#2a2740!important}[data-theme=dark] .diff-output .d2h-file-wrapper{background:#1a1829!important}[data-theme=dark] .diff-output .d2h-file-header{background:#13112b!important;color:#94a3b8!important}[data-theme=dark] .diff-output .d2h-file-name,[data-theme=dark] .diff-output .d2h-file-stats{color:#a5b4fc!important}[data-theme=dark] .diff-output .d2h-tag{background:#2a2740!important;color:#94a3b8!important}[data-theme=dark] .diff-output .d2h-diff-table,[data-theme=dark] .diff-output tbody,[data-theme=dark] .diff-output tr,[data-theme=dark] .diff-output td{background:#1a1829!important;color:#e2e8f0!important}[data-theme=dark] .diff-output .d2h-code-linenumber,[data-theme=dark] .diff-output .d2h-code-side-linenumber{background:#13112b!important;color:#4a4a6a!important}[data-theme=dark] .diff-output .d2h-cntx td,[data-theme=dark] .diff-output .d2h-cntx .d2h-code-linenumber,[data-theme=dark] .diff-output .d2h-cntx .d2h-code-side-linenumber{background:#1a1829!important;color:#e2e8f0!important}[data-theme=dark] .diff-output .d2h-cntx .d2h-code-linenumber,[data-theme=dark] .diff-output .d2h-cntx .d2h-code-side-linenumber{color:#4a4a6a!important}[data-theme=dark] .diff-output .d2h-code-line,[data-theme=dark] .diff-output .d2h-code-side-line,[data-theme=dark] .diff-output .d2h-code-line-ctn{background:transparent!important;color:#e2e8f0!important}[data-theme=dark] .diff-output .d2h-ins td{background:#0d2b1a!important;color:#86efac!important}[data-theme=dark] .diff-output .d2h-ins .d2h-code-linenumber,[data-theme=dark] .diff-output .d2h-ins .d2h-code-side-linenumber{background:#0a2015!important;color:#4ade80!important}[data-theme=dark] .diff-output .d2h-ins .d2h-code-line-ctn,[data-theme=dark] .diff-output .d2h-ins .d2h-code-line{color:#86efac!important}[data-theme=dark] .diff-output .d2h-ins ins,[data-theme=dark] .diff-output .d2h-code-line ins{background:#166534!important;color:#bbf7d0!important;text-decoration:none!important}[data-theme=dark] .diff-output .d2h-del td{background:#2d0d0d!important;color:#fca5a5!important}[data-theme=dark] .diff-output .d2h-del .d2h-code-linenumber,[data-theme=dark] .diff-output .d2h-del .d2h-code-side-linenumber{background:#250a0a!important;color:#f87171!important}[data-theme=dark] .diff-output .d2h-del .d2h-code-line-ctn,[data-theme=dark] .diff-output .d2h-del .d2h-code-line{color:#fca5a5!important}[data-theme=dark] .diff-output .d2h-del del,[data-theme=dark] .diff-output .d2h-code-line del{background:#7f1d1d!important;color:#fecaca!important;text-decoration:none!important}[data-theme=dark] .diff-output .d2h-info td,[data-theme=dark] .diff-output .d2h-info{background:#1e1b3d!important;color:#818cf8!important}[data-theme=dark] .diff-output .d2h-emptyplaceholder,[data-theme=dark] .diff-output .d2h-code-side-emptyplaceholder,[data-theme=dark] .diff-output .d2h-emptyplaceholder td,[data-theme=dark] .diff-output .d2h-code-side-emptyplaceholder td{background:#13112b!important}[data-theme=dark] .char-diff{background:#1a1829;border-color:#2a2740}[data-theme=dark] .char-num{background:#13112b;border-right-color:#2a2740;color:#4a4a6a}[data-theme=dark] .char-left{border-right-color:#2a2740}[data-theme=dark] .char-row-unchanged .char-num,[data-theme=dark] .char-row-unchanged .char-code{background:#1a1829;color:#e2e8f0}[data-theme=dark] .char-row-changed .char-left{background:#2d1a1a}[data-theme=dark] .char-row-changed .char-right{background:#0d2b1a}[data-theme=dark] .char-row-changed .char-num:first-child{background:#250a0a}[data-theme=dark] .char-row-changed .char-num:last-of-type{background:#0a2015}[data-theme=dark] .char-row-added .char-num,[data-theme=dark] .char-row-added .char-code{background:#0d2b1a;color:#86efac}[data-theme=dark] .char-row-removed .char-num,[data-theme=dark] .char-row-removed .char-code{background:#2d1a1a;color:#fca5a5}[data-theme=dark] .char-hl-del{background:#7f1d1d;color:#fecaca}[data-theme=dark] .char-hl-ins{background:#14532d;color:#bbf7d0}[data-theme=dark] .app-footer{background:#1a1829;border-top-color:#2a2740;color:#4a4a6a}[data-theme=dark] .footer-author{color:#64748b}[data-theme=dark] .footer-divider{color:#2a2740}[data-theme=dark] .social-link{color:#4a4a6a}[data-theme=dark] .social-link:hover{color:#818cf8}
