*,*:before,*:after{box-sizing:border-box}:root{--bg: #080b10;--bg-elevated: #0e1319;--surface: #121820;--surface-hover: #171f28;--border: #243041;--border-subtle: #1a2330;--text: #e8edf4;--text-secondary: #94a3b8;--text-muted: #64748b;--accent: #14b8a6;--accent-hover: #0d9488;--accent-soft: rgba(20, 184, 166, .12);--accent-text: #5eead4;--danger: #ef4444;--danger-soft: rgba(239, 68, 68, .12);--warning: #f59e0b;--success: #22c55e;--engine-mysql: #f2a65a;--engine-postgres: #7fa8f5;--radius: 10px;--radius-sm: 6px;--font: "DM Sans", system-ui, sans-serif;--mono: "JetBrains Mono", ui-monospace, monospace;--sidebar-w: 240px;--shadow: 0 8px 32px rgba(0, 0, 0, .35);--focus: 0 0 0 2px var(--bg), 0 0 0 4px var(--accent)}html{font-size:16px}body{margin:0;font-family:var(--font);background:var(--bg);color:var(--text);line-height:1.55;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}::selection{background:var(--accent-soft);color:var(--text)}a{color:var(--accent-text);text-decoration:none}a:hover{text-decoration:underline;text-underline-offset:3px}.mono{font-family:var(--mono);font-size:.8125rem;font-variant-numeric:tabular-nums}.app-shell{display:flex;min-height:100vh}.sidebar{width:var(--sidebar-w);flex-shrink:0;background:var(--bg-elevated);border-right:1px solid var(--border-subtle);display:flex;flex-direction:column;padding:1.25rem .875rem}.sidebar-brand{display:flex;align-items:center;gap:.75rem;padding:.5rem .625rem 1.25rem}.brand-mark{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:var(--radius-sm);background:var(--accent-soft);color:var(--accent-text)}.brand-title{display:block;font-weight:700;font-size:1rem;letter-spacing:-.02em;line-height:1.2}.brand-sub{display:block;font-size:.6875rem;color:var(--text-muted);letter-spacing:.02em}.sidebar-nav{display:flex;flex-direction:column;gap:.25rem;flex:1}.nav-item{display:flex;align-items:center;gap:.625rem;padding:.55rem .75rem;border-radius:var(--radius-sm);color:var(--text-secondary);font-size:.875rem;font-weight:500;text-decoration:none;transition:background .15s ease,color .15s ease}.nav-item:hover{background:var(--surface);color:var(--text);text-decoration:none}.nav-item.active{background:var(--accent-soft);color:var(--accent-text)}.sidebar-foot{padding:.75rem .625rem 0;font-size:.6875rem;color:var(--text-muted);line-height:1.4}.main-column{flex:1;min-width:0;padding:1.75rem 2rem 3rem;max-width:1200px}.page{animation:page-in .35s cubic-bezier(.22,1,.36,1)}@keyframes page-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1.5rem;margin-bottom:1.75rem}.page-title{margin:0;font-size:1.625rem;font-weight:700;letter-spacing:-.03em;line-height:1.2;text-wrap:balance}.page-desc{margin:.35rem 0 0;font-size:.9375rem;color:var(--text-secondary);max-width:52ch}.page-header-actions{display:flex;gap:.5rem;flex-shrink:0}.back-link{display:inline-flex;align-items:center;gap:.25rem;font-size:.8125rem;color:var(--text-secondary);margin-bottom:1rem;text-decoration:none}.back-link:hover{color:var(--accent-text);text-decoration:none}.section{margin-bottom:2rem}.section-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:.75rem}.section-title{margin:0;font-size:.8125rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted)}.section-body{background:var(--surface);border:1px solid var(--border-subtle);border-radius:var(--radius);overflow:hidden}.stats-strip{display:flex;flex-wrap:wrap;gap:1.5rem 2.5rem;padding:1rem 1.25rem}.stat-item{display:flex;align-items:center;gap:.5rem;font-size:.875rem}.stat-label{color:var(--text-muted)}.stat-value{font-weight:600;color:var(--text)}.stat-value.mono{font-weight:500}.data-table{width:100%;border-collapse:collapse;font-size:.875rem}.data-table th{text-align:left;padding:.65rem 1rem;font-size:.6875rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--text-muted);background:var(--bg-elevated);border-bottom:1px solid var(--border-subtle)}.data-table td{padding:.75rem 1rem;border-bottom:1px solid var(--border-subtle);vertical-align:middle}.data-table tbody tr:last-child td{border-bottom:none}.data-table tbody tr:hover td{background:var(--surface-hover)}.data-table th.check,.data-table td.check{width:2.5rem;padding-left:1rem;padding-right:.25rem;text-align:center;vertical-align:middle}.data-table tbody tr.selected td{background:var(--accent-soft)}.table-check{width:1rem;height:1rem;margin:0;accent-color:var(--accent);cursor:pointer}.table-check:focus-visible{outline:none;box-shadow:var(--focus)}.table-check:disabled{cursor:not-allowed;opacity:.4}.data-table .link-cell a{font-weight:600;color:var(--text)}.data-table .link-cell a:hover{color:var(--accent-text)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;font-family:var(--font);font-size:.8125rem;font-weight:600;line-height:1;padding:.5rem .875rem;border:none;border-radius:var(--radius-sm);cursor:pointer;background:var(--accent);color:#042f2e;transition:background .15s ease,transform .1s ease}.btn:hover:not(:disabled){background:var(--accent-hover);color:#fff}.btn:active:not(:disabled){transform:scale(.98)}.btn:focus-visible{outline:none;box-shadow:var(--focus)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.secondary{background:var(--surface-hover);color:var(--text);border:1px solid var(--border)}.btn.secondary:hover:not(:disabled){background:var(--border-subtle);color:var(--text)}.btn.danger{background:var(--danger-soft);color:#fca5a5;border:1px solid transparent}.btn.danger:hover:not(:disabled){background:var(--danger);color:#fff}.btn.ghost{background:transparent;color:var(--text-secondary);border:1px solid transparent}.btn.ghost:hover:not(:disabled){background:var(--surface-hover);color:var(--text)}.btn.sm{padding:.35rem .6rem;font-size:.75rem}.btn.icon-only{width:32px;height:32px;padding:0}.btn-group{display:flex;flex-wrap:wrap;gap:.375rem}.status-badge{display:inline-flex;align-items:center;gap:.4rem;font-size:.75rem;font-weight:500;padding:.2rem .55rem .2rem .45rem;border-radius:999px;background:var(--surface-hover);color:var(--text-secondary)}.status-dot{width:6px;height:6px;border-radius:50%;background:var(--text-muted)}.status-running{background:#22c55e1f;color:#86efac}.status-running .status-dot{background:var(--success);box-shadow:0 0 6px #22c55e99}.status-stopped,.status-pending{color:var(--text-muted)}.status-failed,.status-error{background:var(--danger-soft);color:#fca5a5}.status-failed .status-dot,.status-error .status-dot{background:var(--danger)}.status-completed{background:#22c55e1f;color:#86efac}.status-completed .status-dot{background:var(--success)}.job-progress-cell{min-width:12rem}.job-progress-row{display:flex;align-items:center;gap:.625rem}.job-progress-pct{flex:0 0 2.75rem;font-size:.8125rem;font-family:var(--mono);font-variant-numeric:tabular-nums;color:var(--text-secondary);text-align:right}.job-progress{flex:1;position:relative;height:.5rem;border-radius:999px;background:var(--surface-hover);overflow:hidden}.job-progress-bar{width:100%;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--accent),#60a5fa);transform-origin:left center;transform:scaleX(0)}.job-progress-message{display:block;margin-top:.25rem;font-size:.75rem;color:var(--text-secondary)}.job-progress-error{display:block;margin-top:.25rem;font-size:.7rem;color:var(--danger)}.status-running .status-dot,.status-importing .status-dot{animation:pulse 2s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.45}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.engine-mysql{--engine: var(--engine-mysql)}.engine-postgres{--engine: var(--engine-postgres)}.storage-option{--engine: var(--accent)}.engine-tag{display:inline-flex;align-items:center;gap:.4rem;padding:.18rem .55rem .18rem .45rem;border-radius:var(--radius-sm);font-size:.75rem;font-weight:600;line-height:1.3;white-space:nowrap;color:color-mix(in srgb,var(--engine) 82%,#fff);background:color-mix(in srgb,var(--engine) 13%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--engine) 22%,transparent)}.engine-glyph{width:7px;height:7px;border-radius:2px;background:var(--engine);transform:rotate(45deg)}.page-meta{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem .75rem;margin-top:.5rem;font-size:.875rem;color:var(--text-secondary)}.page-meta-sep{width:3px;height:3px;border-radius:50%;background:var(--text-muted)}.engine-picker{border:0;margin:0 0 1.25rem;padding:0;min-width:0}.engine-picker legend{padding:0;margin-bottom:.35rem;font-size:.75rem;font-weight:600;color:var(--text-secondary)}.engine-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem}.engine-option{position:relative;display:flex;align-items:center;gap:.75rem;padding:.75rem .875rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);cursor:pointer;transition:border-color .15s ease,background .2s ease,box-shadow .15s ease}.engine-option input{position:absolute;top:0;right:0;bottom:0;left:0;margin:0;opacity:0;cursor:inherit}.engine-option:hover{border-color:color-mix(in srgb,var(--engine) 45%,var(--border))}.engine-option:has(input:checked){border-color:color-mix(in srgb,var(--engine) 70%,transparent);background:color-mix(in srgb,var(--engine) 9%,var(--bg))}.engine-option:has(input:focus-visible){box-shadow:var(--focus)}.engine-option:has(input:disabled){cursor:not-allowed;border-style:dashed;border-color:var(--border-subtle);background:transparent}.engine-option:has(input:disabled) .engine-option-name{color:var(--text-muted)}.engine-radio{flex-shrink:0;width:16px;height:16px;border-radius:50%;border:1.5px solid var(--border);display:grid;place-items:center;transition:border-color .15s ease}.engine-radio:after{content:"";width:8px;height:8px;border-radius:50%;background:var(--engine);transform:scale(0);transition:transform .22s cubic-bezier(.22,1,.36,1)}.engine-option:has(input:checked) .engine-radio{border-color:var(--engine)}.engine-option:has(input:checked) .engine-radio:after{transform:scale(1)}.engine-option-text{display:flex;flex-direction:column;gap:.1rem;min-width:0}.engine-option-name{font-size:.875rem;font-weight:600;color:var(--text)}.engine-option-meta{font-size:.75rem;color:var(--text-muted)}.stat-engines{display:flex;align-items:center;gap:.5rem}.engine-tag.unavailable{color:var(--text-muted);background:transparent;box-shadow:inset 0 0 0 1px var(--border);text-decoration:line-through;text-decoration-color:var(--text-muted)}.engine-tag.unavailable .engine-glyph{background:var(--text-muted)}.field{margin-bottom:1rem}.field label{display:block;font-size:.75rem;font-weight:600;color:var(--text-secondary);margin-bottom:.35rem}.field-hint{font-size:.75rem;color:var(--text-muted);margin-top:.25rem}input:not([type]),input[type=text],input[type=password],input[type=number],input[type=file],select,textarea{width:100%;font-family:var(--font);font-size:.875rem;background:var(--bg);border:1px solid var(--border);color:var(--text);padding:.5rem .75rem;border-radius:var(--radius-sm);transition:border-color .15s ease,box-shadow .15s ease}input:focus-visible,select:focus-visible,textarea:focus-visible{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}input::placeholder{color:var(--text-muted)}.checkbox-row{display:flex;align-items:center;gap:.5rem;font-size:.875rem;color:var(--text-secondary)}.form-grid{display:grid;gap:.75rem}.form-grid.two{grid-template-columns:repeat(2,1fr)}.form-actions{display:flex;gap:.5rem;margin-top:1.25rem}.inline-form{display:flex;flex-wrap:wrap;gap:.5rem;align-items:flex-end;padding:1rem;border-bottom:1px solid var(--border-subtle)}.inline-form .field{margin-bottom:0;flex:1;min-width:140px}.tab-list{display:flex;gap:.25rem;margin-bottom:1.25rem;padding:.25rem;background:var(--surface);border:1px solid var(--border-subtle);border-radius:var(--radius-sm)}.tab-list button{flex:1;font-family:var(--font);font-size:.8125rem;font-weight:600;padding:.5rem 1rem;border:none;border-radius:4px;background:transparent;color:var(--text-secondary);cursor:pointer}.tab-list button.active{background:var(--accent-soft);color:var(--accent-text)}.tab-list button:focus-visible{outline:none;box-shadow:var(--focus)}.conn-block{padding:1rem 1.25rem;border-bottom:1px solid var(--border-subtle)}.conn-block:last-child{border-bottom:none}.conn-head{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:.75rem}.conn-name{font-weight:600;font-size:.9375rem}.conn-pre{margin:0;padding:.875rem 1rem;background:var(--bg);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);font-family:var(--mono);font-size:.75rem;line-height:1.6;color:var(--text-secondary);overflow-x:auto}.alert{padding:.75rem 1rem;border-radius:var(--radius-sm);font-size:.875rem;margin-bottom:1rem}.alert-error{background:var(--danger-soft);color:#fca5a5;border:1px solid rgba(239,68,68,.25)}.alert-warning{background:#f59e0b1f;color:#fcd34d;border:1px solid rgba(245,158,11,.25)}.alert-success{background:#22c55e1f;color:#86efac;border:1px solid rgba(34,197,94,.25)}.empty-state{padding:2.5rem 1.5rem;text-align:center}.empty-title{margin:0;font-weight:600;font-size:.9375rem}.empty-desc{margin:.35rem 0 0;font-size:.8125rem;color:var(--text-muted);max-width:36ch;margin-left:auto;margin-right:auto}.empty-action{margin-top:1rem}.modal{border:none;padding:0;background:transparent;max-width:none;max-height:none}.modal::backdrop{background:#000000a6;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal-panel{width:min(440px,calc(100vw - 2rem));margin:auto;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;border-bottom:1px solid var(--border-subtle)}.modal-title{margin:0;font-size:1rem;font-weight:600}.modal-body{padding:1.25rem}.modal-foot{display:flex;justify-content:flex-end;gap:.5rem;padding:1rem 1.25rem;border-top:1px solid var(--border-subtle)}.spinner-wrap{display:flex;align-items:center;gap:.75rem;padding:2rem;justify-content:center;color:var(--text-muted);font-size:.875rem}.spinner{width:20px;height:20px;border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.spinner-label{font-size:.8125rem}.code-block{margin:0;padding:1rem 1.25rem;background:var(--bg);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);font-family:var(--mono);font-size:.75rem;line-height:1.65;color:var(--text-secondary);overflow-x:auto}.sheet{margin:0 0 0 auto;padding:0;border:none;border-left:1px solid var(--border);width:min(800px,100vw);max-width:100vw;height:100dvh;max-height:100dvh;background:var(--bg-elevated);color:var(--text);box-shadow:-24px 0 56px #00000073}.sheet[open]{animation:sheet-in .45s cubic-bezier(.16,1,.3,1)}.sheet::backdrop{background:#0000008c;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.sheet[open]::backdrop{animation:backdrop-in .3s ease-out}@keyframes sheet-in{0%{transform:translate(48px);opacity:.5}to{transform:none;opacity:1}}@keyframes backdrop-in{0%{opacity:0}}.sheet-panel{display:flex;flex-direction:column;height:100%}.sheet-head{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;padding:1.25rem 1.5rem 1rem;border-bottom:1px solid var(--border-subtle)}.sheet-heading{min-width:0}.sheet-title{margin:0;font-size:1.25rem;font-weight:700;letter-spacing:-.02em;line-height:1.25}.sheet-meta{margin-top:.4rem}.sheet-body{flex:1;overflow-y:auto;overscroll-behavior:contain;padding:1.5rem 1.5rem .5rem}.sheet-body .section{margin-bottom:1.75rem}.sheet-foot{padding:.875rem 1.5rem;background:var(--surface);border-top:1px solid var(--border);box-shadow:0 -12px 28px #00000047}.sheet-foot.expanded{max-height:74dvh;overflow-y:auto;overscroll-behavior:contain;padding:1.125rem 1.5rem 1.25rem}.coll-default{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1.125rem 1.25rem}.coll-default-main{display:flex;flex-direction:column;gap:.25rem;min-width:0}.coll-default-name{font-size:1.125rem;font-weight:600;color:var(--text);overflow-wrap:anywhere}.coll-default-meta{font-size:.8125rem;color:var(--text-secondary)}.coll-default-meta .mono{color:var(--text)}.coll-editor{display:flex;flex-direction:column;gap:.875rem;padding:1.125rem 1.25rem 1.25rem;border-top:1px solid var(--border-subtle);background:color-mix(in srgb,var(--bg) 45%,var(--surface))}.coll-note,.coll-inline-alert{margin:0}.empty-action .coll-inline-alert{margin-top:.75rem}.coll-editor-actions{display:flex;justify-content:flex-end;gap:.5rem}.coll-toolbar{padding:.75rem;border-bottom:1px solid var(--border-subtle)}.coll-table-wrap{overflow-x:auto}.coll-table td{padding-top:.6rem;padding-bottom:.6rem}.data-table th.num,.data-table td.num{text-align:right}.coll-table-name{font-weight:600;color:var(--text)}.coll-cell{display:flex;flex-direction:column;gap:.2rem}.coll-value{display:inline-flex;align-items:center;flex-wrap:wrap;gap:.45rem}.coll-sub{font-size:.75rem;color:var(--text-muted)}.coll-muted{font-size:.8125rem;color:var(--text-muted)}.coll-no-match{padding:1.5rem 1rem;text-align:center;color:var(--text-muted)}.coll-dot{flex-shrink:0;width:6px;height:6px;border-radius:50%;background:var(--warning)}.btn.coll-differ-btn{gap:.5rem;color:var(--text-secondary)}.coll-tag{padding:.1rem .4rem;border-radius:4px;font-size:.6875rem;font-weight:600;line-height:1.4;white-space:nowrap;color:var(--accent-text);background:var(--accent-soft)}.coll-tag.subtle{color:var(--text-secondary);background:transparent;box-shadow:inset 0 0 0 1px var(--border)}.coll-tag.warn{color:#fcd34d;background:#f59e0b1f}.coll-notice{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;margin-bottom:1.5rem}.coll-notice .btn.icon-only{flex-shrink:0;width:24px;height:24px;color:inherit}.coll-notice-body{display:flex;flex-direction:column;gap:.6rem;min-width:0}.coll-failures{display:flex;flex-direction:column;gap:.4rem;margin:0;padding:0;list-style:none}.coll-failures li{display:flex;flex-direction:column;gap:.15rem;padding:.5rem .65rem;border-radius:4px;background:#00000038}.coll-failure-error{font-family:var(--mono);font-size:.75rem;color:#fecaca;overflow-wrap:anywhere}.tray-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.75rem 1rem}.tray-summary{margin:0;font-size:.875rem;color:var(--text-secondary)}.tray-summary strong{color:var(--text)}.tray-form{display:flex;flex-direction:column;gap:.875rem}.tray-title-row{display:flex;align-items:center;justify-content:space-between;gap:1rem}.tray-title{margin:0;font-size:.9375rem;font-weight:600}.picker{display:flex;flex-direction:column;gap:.5rem}.picker-head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem}.picker-label{font-size:.75rem;font-weight:600;color:var(--text-secondary)}.picker-value{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--accent-text)}.picker-search,.coll-filter{position:relative}.picker-search input,.coll-filter input{padding-left:2.1rem}.picker-search input{padding-right:3rem}.picker-search-icon{position:absolute;top:50%;left:.7rem;transform:translateY(-50%);color:var(--text-muted);pointer-events:none}.picker-count{position:absolute;top:50%;right:.75rem;transform:translateY(-50%);font-size:.6875rem;color:var(--text-muted);pointer-events:none}.picker-list{position:relative;max-height:15rem;overflow-y:auto;overscroll-behavior:contain;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg)}.picker-group{position:sticky;top:0;z-index:1;padding:.4rem .75rem;font-size:.6875rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--text-muted);background:var(--bg-elevated);border-bottom:1px solid var(--border-subtle)}.picker-option{display:flex;align-items:center;gap:.5rem;padding:.4rem .75rem;color:var(--text-secondary);cursor:pointer}.picker-option:hover{background:var(--surface-hover);color:var(--text)}.picker:focus-within .picker-option.active{background:var(--surface-hover);color:var(--text);box-shadow:inset 2px 0 0 var(--accent)}.picker-option.selected{background:var(--accent-soft);color:var(--accent-text)}.picker-option[aria-disabled=true]{cursor:not-allowed;opacity:.6}.picker-check{display:inline-flex;flex-shrink:0;width:14px}.picker-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.picker-empty{margin:0;padding:1rem .75rem;font-size:.8125rem;color:var(--text-muted)}*{scrollbar-width:thin;scrollbar-color:var(--border) var(--bg)}@media (max-width: 768px){.app-shell{flex-direction:column}.sidebar{width:100%;border-right:none;border-bottom:1px solid var(--border-subtle);padding:.75rem}.sidebar-nav{flex-direction:row;overflow-x:auto}.sidebar-foot{display:none}.main-column{padding:1.25rem 1rem 2rem}.page-header{flex-direction:column}.form-grid.two{grid-template-columns:1fr}}@media (max-width: 600px){.hide-sm{display:none}.sheet{border-left:none}.sheet-head,.sheet-body,.sheet-foot,.sheet-foot.expanded{padding-left:1rem;padding-right:1rem}.coll-default{flex-direction:column;align-items:flex-start}.sheet-foot .picker-list{max-height:10.5rem}.sheet-body .section-head{flex-wrap:wrap}}@media (max-width: 420px){.engine-options{grid-template-columns:1fr}}@media (prefers-reduced-motion: reduce){.engine-radio:after,.engine-option{transition:none}.sheet[open],.sheet[open]::backdrop{animation:none}}
