:root{--indigo: #4f46e5;--teal: #14b8a6;--brand-gradient: linear-gradient(135deg, var(--indigo), var(--teal));--bg: #f8fafc;--surface: #ffffff;--border: #e2e8f0;--text: #0f172a;--muted: #475569;--faint: #94a3b8;--accent: var(--indigo);--success-bg: #ecfdf5;--success-fg: #047857;--error-bg: #fef2f2;--error-fg: #b91c1c;--warn-bg: #fffbeb;--warn-fg: #b45309;color-scheme:light;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;color:var(--text)}*{box-sizing:border-box}body{margin:0;background:var(--bg);font-size:15px;line-height:1.5}code,.mono{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,monospace;font-size:.9em}.muted{color:var(--muted)}.small{font-size:.875em}.app-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.75rem 1.5rem;background:var(--surface);border-bottom:1px solid var(--border)}.brand{display:inline-flex;align-items:center;gap:.5rem;font-weight:700;font-size:1.1rem;letter-spacing:-.01em;color:var(--text);text-decoration:none}.brand:before{content:"";width:1.5rem;height:1.5rem;border-radius:7px;background:var(--brand-gradient);-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 40'%3E%3Cpath d='M11 20.5l6 6 12-13' stroke='black' stroke-width='4' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 100% no-repeat,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude}.brand-word{white-space:nowrap}.brand-accent{color:var(--indigo)}.header-right{display:flex;align-items:center;gap:1rem}.app-main{max-width:1100px;margin:0 auto;padding:1.5rem}.app-main.wide{max-width:min(100%,2000px)}.page-header{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;margin-bottom:1.25rem}.page-header h1{margin:.25rem 0 0;font-size:1.5rem}.centred{min-height:100vh;display:grid;place-items:center;padding:1.5rem}.centred .card{max-width:22rem;text-align:center}.brand-title{margin:0 0 .5rem;font-size:1.875rem;font-weight:800;letter-spacing:-.02em}.card{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:1.25rem;margin-bottom:1.25rem}.card.empty{text-align:center}.card.instructions ol{padding-left:1.25rem}.card.instructions li{margin-bottom:.5rem}.notice,.detail-grid dd,.data-table td,.mono{overflow-wrap:anywhere}.notice{padding:.75rem 1rem;border-radius:6px;margin-bottom:1rem}.notice.error{background:var(--error-bg);color:var(--error-fg)}.notice.success{background:var(--success-bg);color:var(--success-fg)}.notice-title{display:block;margin-bottom:.25rem}.notice-body{margin:0 0 .5rem}.notice-detail{margin:0 0 .75rem;font-size:.8125rem;opacity:.75}.notice.warn{background:var(--warn-bg);color:var(--warn-fg)}.checkbox-row{display:flex;gap:10px;align-items:flex-start;margin:20px 0 4px;font-size:.9375rem;line-height:1.5;cursor:pointer}.checkbox-row input[type=checkbox]{margin-top:.2rem;flex-shrink:0}.status-warn{color:var(--warn-fg);font-weight:600}.badge{display:inline-block;padding:.125rem .5rem;border-radius:999px;font-size:.8125rem;font-weight:500}.badge-connected{background:var(--success-bg);color:var(--success-fg)}.badge-pending{background:var(--warn-bg);color:var(--warn-fg)}.badge-error{background:var(--error-bg);color:var(--error-fg)}form.card label{display:block;margin-bottom:1rem}form.card label>span{display:block;font-weight:500;margin-bottom:.25rem}input{width:100%;padding:.5rem .625rem;border:1px solid var(--border);border-radius:6px;font:inherit;background:var(--surface);color:inherit}input[type=radio],input[type=checkbox]{width:auto;padding:0}input:focus-visible,select:focus-visible,button:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:1px}form.card small{display:block;margin-top:.25rem}.form-actions{display:flex;justify-content:flex-end;align-items:center;gap:.75rem;margin-top:1rem}button,.button-link{padding:.5rem .875rem;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:inherit;font:inherit;cursor:pointer;text-decoration:none;display:inline-block}button:hover:not(:disabled),.button-link:hover{border-color:var(--muted)}button:disabled{opacity:.55;cursor:not-allowed}button.primary,.primary.button-link{background:var(--brand-gradient);border-color:transparent;color:#fff;font-weight:600}button.primary:hover:not(:disabled),.primary.button-link:hover{filter:brightness(1.07);border-color:transparent}button.link-button{border:none;background:none;color:var(--accent);padding:.5rem 0}.toolbar{display:flex;gap:.5rem;align-items:center;margin-bottom:1rem}.toolbar input{max-width:20rem}.table-scroll{overflow:auto;max-height:calc(100vh - 16rem);border:1px solid var(--border);border-radius:8px;background:var(--surface)}.data-table{width:100%;border-collapse:collapse;background:var(--surface)}.table-scroll .data-table{border-radius:0}.data-table th,.data-table td{text-align:left;padding:.5rem .75rem;border-bottom:1px solid var(--border);white-space:nowrap}.data-table th{font-size:.8125rem;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);background:var(--bg);position:sticky;top:0;z-index:1;box-shadow:inset 0 -1px 0 var(--border)}.data-table tbody tr:last-child td{border-bottom:none}.cell-input{width:100%;min-width:0;padding:.125rem .25rem;border:1px solid transparent;border-radius:4px;background:transparent;font:inherit;color:inherit;text-overflow:ellipsis}.cell-input:hover{border-color:var(--border)}.cell-input:focus{outline:none;border-color:var(--accent);background:var(--surface)}.cell-changed{background:var(--warn-bg)}.cell-changed .cell-input{font-weight:600}.cell-locked{color:var(--muted)}.th-attribute{color:var(--accent)}.attribute-tag{margin-left:.375rem;padding:.0625rem .3125rem;border-radius:3px;background:var(--accent);color:#fff;font-size:.625rem;font-weight:600;letter-spacing:.02em;text-transform:uppercase;vertical-align:middle}.status-pill{display:inline-block;padding:.0625rem .5rem;border-radius:999px;font-size:.75rem;font-weight:600}.status-written{background:var(--success-bg);color:var(--success-fg)}.status-skipped{background:var(--warn-bg);color:var(--warn-fg)}.status-failed{background:var(--error-bg);color:var(--error-fg)}.data-table td.wrap{white-space:normal;max-width:40rem}.change-count{padding:.25rem .625rem;border-radius:999px;background:var(--warn-bg);color:var(--warn-fg);font-size:.875rem;font-weight:600}.diff-table .diff-before{color:var(--error-fg);background:var(--error-bg)}.diff-table .diff-after{color:var(--success-fg);background:var(--success-bg)}.detail-grid{display:grid;grid-template-columns:max-content 1fr;gap:.5rem 1.5rem;margin:0 0 1rem}.detail-grid dt{color:var(--muted)}.detail-grid dd{margin:0}.pager{display:flex;align-items:center;justify-content:center;gap:1rem;margin-top:1rem}a{color:var(--accent)}.choice-group{border:none;padding:0;margin:0 0 1.25rem;display:grid;gap:.5rem}.choice-group legend{padding:0;margin-bottom:.5rem;font-weight:600}.choice{display:flex;gap:.625rem;align-items:flex-start;padding:.75rem;border:1px solid var(--border);border-radius:6px;background:var(--surface);cursor:pointer}.choice:hover{border-color:var(--accent)}.choice:has(input:checked){border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.choice input{margin-top:.2rem}.choice>span{display:flex;flex-direction:column;gap:.125rem}form.card select{width:100%;padding:.5rem .625rem;border:1px solid var(--border);border-radius:6px;background:var(--surface);font:inherit;color:inherit}.entity-switch{display:flex;gap:.5rem;margin-top:.75rem}.entity-tab{padding:.5rem .875rem;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:inherit;font:inherit;cursor:pointer}.entity-tab:hover:not(:disabled){border-color:var(--muted)}.entity-tab.current:disabled{background:var(--brand-gradient);border-color:transparent;color:#fff;font-weight:600;opacity:1;cursor:default}.duplicate-head{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;margin-bottom:.875rem}.score-pill{padding:.125rem .625rem;border-radius:999px;font-size:.8125rem;font-weight:600;white-space:nowrap}.score-high{background:var(--error-bg);color:var(--error-fg)}.score-mid{background:var(--warn-bg);color:var(--warn-fg)}.score-low{background:var(--bg);color:var(--muted)}.duplicate-records{display:grid;grid-template-columns:repeat(auto-fit,minmax(18rem,1fr));gap:.75rem}.duplicate-record{display:flex;flex-direction:column;gap:.125rem;padding:.75rem;border:1px solid var(--border);border-radius:6px;background:var(--bg)}.section-heading{margin:0 0 .25rem;font-size:1rem;font-weight:600}.merge-choice{display:grid;grid-template-columns:repeat(auto-fit,minmax(18rem,1fr));gap:.75rem;margin-top:.875rem}.merge-card{display:flex;flex-direction:column;gap:.5rem;padding:1rem;border:1px solid var(--border);border-radius:8px;background:var(--bg);cursor:pointer}.merge-card:hover{border-color:var(--accent)}.merge-card.selected{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent);background:var(--surface)}.merge-card-head{display:flex;align-items:center;gap:.5rem}.merge-card-head input{width:auto;margin:0}.keep-tag{margin-left:auto;padding:.125rem .5rem;border-radius:999px;font-size:.75rem;font-weight:600;background:var(--success-bg);color:var(--success-fg)}.merge-history{display:flex;flex-direction:column;gap:.125rem}.merge-history strong{font-size:1.25rem}.merge-table td.merge-value{vertical-align:top}.merge-pick{display:flex;align-items:baseline;gap:.5rem;padding:.375rem .5rem;margin:-.375rem -.5rem;border-radius:6px;cursor:pointer}.merge-pick:hover{background:var(--bg)}.merge-pick input{width:auto;margin:0;flex:none}.merge-pick.chosen{background:var(--success-bg);color:var(--success-fg);font-weight:500}.merge-summary{margin:.875rem 0;padding-left:1.25rem;display:flex;flex-direction:column;gap:.375rem}.nested-tag{margin-left:.375rem;padding:.0625rem .375rem;border-radius:999px;font-size:.6875rem;font-weight:500;background:var(--bg);color:var(--faint);text-transform:none}.data-table.resizable th:first-child,.data-table.resizable td:first-child{position:sticky;left:0;z-index:2;background:var(--surface);box-shadow:inset -1px 0 0 var(--border)}.data-table.resizable th:first-child{z-index:3;background:var(--bg)}.data-table th .attribute-tag,.data-table th .nested-tag,.data-table th .th-readonly{display:block;width:fit-content;margin-left:0;margin-top:.1875rem}.th-readonly{padding:.0625rem .375rem;border-radius:999px;background:var(--bg);color:var(--faint);font-size:.6875rem;font-weight:500;letter-spacing:0;text-transform:none}.count-badge{margin-left:.5rem;padding:.0625rem .375rem;border-radius:999px;font-size:.75rem;font-weight:600;background:var(--bg);color:var(--muted)}.column-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(14rem,1fr));gap:.125rem 1rem;margin:.75rem 0}.column-option{display:flex;align-items:center;gap:.5rem;padding:.3125rem .5rem;margin:0 -.5rem;border-radius:6px;cursor:pointer}.column-option:hover{background:var(--bg)}.column-option input{width:auto;margin:0;flex:none}.column-option.fixed{cursor:default;color:var(--faint)}.column-option.fixed:hover{background:none}.data-table.resizable{table-layout:fixed}.data-table.resizable.measuring{table-layout:auto;width:max-content;min-width:100%}.data-table.resizable.measuring td,.data-table.resizable.measuring th{overflow:visible;text-overflow:clip}.data-table.resizable th{position:relative}.data-table.resizable td{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.data-table.resizable th{overflow:hidden;white-space:nowrap}.col-resize{position:absolute;top:0;right:-4px;width:9px;height:100%;cursor:col-resize;z-index:1;touch-action:none;-webkit-user-select:none;user-select:none}.col-resize:after{content:"";position:absolute;top:20%;bottom:20%;left:4px;width:1px;background:var(--border)}.col-resize:hover:after,.col-resize:active:after{top:0;bottom:0;background:var(--accent);width:2px}
