*{box-sizing:border-box;margin:0;padding:0}html,body,#root{width:100%;height:100%}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}select{color:#2c3e50;appearance:none;cursor:pointer;background-color:#fff;background-image:url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23667085' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6 9 12 15 18 9'%3e%3c/polyline%3e%3c/svg%3e");background-position:right .75rem center;background-repeat:no-repeat;background-size:15px;border:1px solid #d0d5dd;border-radius:6px;height:auto;padding:.65rem 2.4rem .65rem .85rem;font-family:inherit;font-size:.9rem;line-height:1.3;transition:border-color .15s,box-shadow .15s}select:hover:not(:disabled){border-color:#a0aec0}select:focus{border-color:#4886da;outline:none;box-shadow:0 0 0 3px #4886da26}select:disabled{color:#98a2b3;cursor:not-allowed;background-color:#f5f6f8}select option{color:#2c3e50}.home-page{background:linear-gradient(to bottom right,#4886da,#2c2873);flex-direction:column;min-height:100vh;display:flex}.home-header{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff1a;justify-content:space-between;align-items:center;padding:1rem 2rem;display:flex;box-shadow:0 2px 10px #0000001a}.logo{color:#fff;font-size:1.5rem;font-weight:700}.login-btn{color:#667eea;cursor:pointer;background:#fff;border:none;border-radius:8px;padding:.6rem 1.5rem;font-size:1.1rem;font-weight:700;transition:all .3s}.login-btn:hover{background:#f0f0f0;transform:translateY(-2px);box-shadow:0 4px 12px #00000026}.home-main{flex:1;justify-content:center;align-items:center;padding:2rem;display:flex}.home-container{text-align:center;color:#fff}.home-container h1{margin-bottom:1rem;font-size:3rem;font-weight:700}.subtitle{opacity:.9;margin-bottom:1rem;font-size:1.25rem}.description{opacity:.7;margin-bottom:2rem;font-size:1rem}.cta-btn{color:#667eea;cursor:pointer;background:#fff;border:none;border-radius:8px;padding:.6rem 1.5rem;font-size:1.1rem;font-weight:700;text-decoration:none;transition:all .3s;display:inline-block}.cta-btn:hover{background:#f0f0f0;transform:translateY(-2px);box-shadow:0 4px 12px #00000026}.login-page{background:linear-gradient(to bottom right,#4886da,#2c2873);flex-direction:column;min-height:100vh;display:flex}.login-header{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff1a;justify-content:space-between;align-items:center;padding:1rem 2rem;display:flex;box-shadow:0 2px 10px #0000001a}.home-link{color:#fff;cursor:pointer;background:0 0;border:1px solid #fff;border-radius:8px;padding:.6rem 1.5rem;font-size:1.1rem;font-weight:600;text-decoration:none;transition:all .3s}.home-link:hover{color:#667eea;background:#fff}.login-main{flex:1;justify-content:center;align-items:center;padding:2rem;display:flex}.login-container{background:#fff;border-radius:8px;width:100%;max-width:400px;padding:2rem;box-shadow:0 10px 40px #0003}.login-container h2{color:#333;text-align:center;margin-bottom:1.5rem}.error-message{color:#c33;background-color:#fee;border:1px solid #fcc;border-radius:4px;margin-bottom:1rem;padding:1rem;font-size:.95rem}.form-group label{color:#555;margin-bottom:.5rem;font-weight:600;display:block}.form-group input{border:1px solid #ddd;border-radius:4px;width:100%;padding:.75rem;font-size:1rem;transition:border-color .3s}.form-group input:focus{border-color:#667eea;outline:none;box-shadow:0 0 0 3px #667eea1a}.submit-btn{color:#fff;cursor:pointer;background:linear-gradient(to bottom right,#4886da,#2c2873);border:none;border-radius:8px;width:100%;padding:.75rem;font-size:1.1rem;font-weight:700;transition:all .3s}.submit-btn:hover{transform:translateY(-2px);box-shadow:0 4px 12px #667eea4d}.submit-btn:active{transform:translateY(0)}.submit-btn:disabled{opacity:.7;cursor:not-allowed}.signup-link{text-align:center;color:#666;margin-top:1rem}.signup-link a{color:#667eea;font-weight:600;text-decoration:none}.signup-link a:hover{text-decoration:underline}.databases-page{background-color:#0000;padding:0}.databases-header{justify-content:space-between;align-items:center;margin-bottom:2rem;display:flex}.databases-header h1{color:#2c3e50;margin:0;font-size:2rem;font-weight:700}.databases-search{margin-bottom:2rem}.databases-search input{border:1px solid #ddd;border-radius:4px;width:100%;max-width:400px;padding:.75rem 1rem;font-size:1rem;transition:border-color .3s}.databases-search input:focus{border-color:#667eea;outline:none;box-shadow:0 0 0 3px #667eea1a}.databases-grid{grid-template-columns:repeat(auto-fill,minmax(350px,1fr));gap:1.5rem;display:grid}.database-card{background:#fff;border-radius:8px;transition:all .3s;overflow:hidden;box-shadow:0 2px 8px #0000001a}.database-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #00000026}.card-header{background:#f8f9fa;border-bottom:1px solid #eee;justify-content:space-between;align-items:center;padding:1rem;display:flex}.type-badge{color:#fff;border-radius:4px;align-items:center;gap:.5rem;padding:.5rem 1rem;font-size:.85rem;font-weight:600;display:inline-flex}.card-actions{gap:.5rem;display:flex}.card-body h3{color:#2c3e50;margin:0 0 .5rem;font-size:1.1rem}.description{color:#666;margin-bottom:1rem;font-size:.9rem;line-height:1.4}.details{border-bottom:1px solid #eee;margin-bottom:1rem;padding-bottom:1rem}.detail-row{justify-content:space-between;align-items:center;margin-bottom:.5rem;font-size:.9rem;display:flex}.detail-row .label{color:#666;font-weight:600}.detail-row .value{color:#333;text-align:right;text-overflow:ellipsis;white-space:nowrap;flex:1;margin-left:1rem;font-family:Courier New,monospace;overflow:hidden}.detail-row .badge{color:#155724;background:#d4edda;border-radius:20px;align-items:center;gap:.25rem;padding:.25rem .75rem;font-size:.8rem;display:inline-flex}.btn-test-connection{color:#fff;cursor:pointer;background:#6c757d;border:none;border-radius:4px;justify-content:center;align-items:center;gap:.5rem;width:100%;padding:.75rem;font-weight:600;transition:background .3s;display:flex}.btn-test-connection:hover{background:#5a6268}@keyframes slideIn{0%{opacity:0;transform:translateY(-50px)}to{opacity:1;transform:translateY(0)}}.form-hint{color:#777;margin-top:.35rem;font-size:.8rem;display:block}.btn-test-full{color:#fff;cursor:pointer;background:#6c757d;border:none;border-radius:4px;justify-content:center;align-items:center;gap:.5rem;width:100%;margin-top:.5rem;padding:.75rem;font-weight:600;transition:background .3s;display:flex}.btn-test-full:hover{background:#5a6268}.test-result-error{color:#dc3545;background:#f8d7da}.test-result-success{color:#155724;background:#d4edda}.connection-type-picker{gap:.75rem;display:flex}.connection-type-option{cursor:pointer;text-transform:capitalize;color:#495057;background:#fff;border:2px solid #e0e0e0;border-radius:8px;flex-direction:column;flex:1;align-items:center;gap:.5rem;padding:1rem;font-weight:600;transition:all .2s;display:flex}.connection-type-option i{color:#667eea;font-size:1.25rem}.connection-type-option:hover{border-color:#b8c2f0}.connection-type-option.selected{color:#667eea;background:#f0f2ff;border-color:#667eea}@media (width<=768px){.databases-header{flex-direction:column;align-items:flex-start;gap:1rem}.databases-grid,.form-row{grid-template-columns:1fr}.modal-content{width:95%}.modal-actions{flex-direction:column-reverse}.btn{width:100%}}.sources-page{background-color:#0000;min-height:auto;padding:0}.sources-header{justify-content:space-between;align-items:center;margin-bottom:2rem;display:flex}.sources-header h1{color:#2c3e50;margin:0;font-size:2rem;font-weight:700}.sources-search{margin-bottom:2rem}.reader-picker{position:relative}.reader-picker-dropdown{z-index:20;background:#fff;border:1px solid #ddd;border-radius:4px;max-height:220px;margin-top:2px;position:absolute;top:100%;left:0;right:0;overflow-y:auto;box-shadow:0 4px 12px #0000001a}.reader-picker-option{cursor:pointer;justify-content:space-between;align-items:center;padding:.5rem .75rem;display:flex}.reader-picker-option:hover{background-color:#f5f6fa}.reader-picker-empty{color:#7f8c8d;padding:.5rem .75rem;font-size:.9rem}.sources-search input{border:1px solid #ddd;border-radius:4px;width:100%;max-width:400px;padding:.75rem 1rem;font-size:1rem;transition:border-color .3s}.sources-search input:focus{border-color:#667eea;outline:none;box-shadow:0 0 0 3px #667eea1a}.sources-table-container{background:#fff;border-radius:8px;overflow:hidden;box-shadow:0 2px 8px #0000001a}.sources-table{border-collapse:collapse;width:100%}.sources-table thead{background-color:#f8f9fa;border-bottom:2px solid #dee2e6}.sources-table th{text-align:left;color:#555;text-transform:uppercase;letter-spacing:.5px;padding:1rem;font-size:.9rem;font-weight:600}.sources-table tbody tr{border-bottom:1px solid #dee2e6;transition:background-color .2s}.sources-table tbody tr:hover{background-color:#f8f9fa}.sources-table td{color:#333;padding:1rem}.badge-type{color:#fff;background:linear-gradient(to bottom right,#4886da,#2c2873);border-radius:20px;padding:.25rem .75rem;font-size:.85rem;font-weight:500;display:inline-block}.badge-type-local{background:linear-gradient(to bottom right,#8a9199,#495057)}.badge-type-s3{background:linear-gradient(to bottom right,#ffb84d,#cc7a00)}.badge-active{color:#155724;background:#d4edda}.badge-builtin{color:#4b3f9e;vertical-align:middle;background:#e2e3f5;margin-left:.5rem}.location-cell,.table-cell{color:#666;text-overflow:ellipsis;white-space:nowrap;max-width:200px;font-family:Courier New,monospace;font-size:.9rem;overflow:hidden}.files-table{table-layout:fixed}.files-table th,.files-table td{text-overflow:ellipsis;white-space:nowrap;padding:.6rem .9rem;font-size:.88rem;overflow:hidden}.files-table .name-cell{gap:.5rem;font-weight:500}.files-table .path-cell{font-family:Courier New,monospace;font-size:.85rem}.files-table .size-cell{font-variant-numeric:tabular-nums;color:#666}.files-table .badge-type{padding:.2rem .6rem;font-size:.78rem}.text-unidentified,.text-error{color:#dc3545;font-weight:600}.status-error-cell{justify-content:center;align-items:center;gap:.35rem;display:inline-flex}.status-error-cell .btn-icon{color:#dc3545}.files-table th.resizable-th{cursor:pointer;-webkit-user-select:none;user-select:none;padding-right:1.25rem;position:relative}.files-table th.resizable-th:hover{color:#667eea}.files-table .th-label{align-items:center;gap:.4rem;display:inline-flex}.files-table .sort-icon{color:#667eea;font-size:.75rem}.files-table .col-resize-handle{cursor:col-resize;z-index:1;width:8px;height:100%;position:absolute;top:0;right:0}.files-table .col-resize-handle:hover,.files-table .col-resize-handle:active{background:#667eea59}.files-table .col-centered{text-align:center}.files-table th.col-centered .th-label{justify-content:center}.files-table-container{width:100%}.pagination{justify-content:space-between;align-items:center;margin-top:1rem;padding:.75rem 0;display:flex}.pagination-info{color:#666;font-size:.9rem}.pagination-controls{gap:.5rem;display:flex}.pagination-controls .btn{padding:.5rem 1rem;font-size:.9rem}.pagination-controls .btn:disabled{opacity:.5;cursor:not-allowed}.loading i{margin-right:.5rem}.form-section-hint{color:#666;margin-top:-.5rem;margin-bottom:.75rem;font-size:.85rem}.file-dropzone{cursor:pointer;text-align:center;background:#fafafa;border:2px dashed #ccc;border-radius:8px;justify-content:center;align-items:center;min-height:140px;padding:1rem;transition:border-color .2s,background .2s;display:flex;position:relative}.file-dropzone:hover{border-color:#667eea}.file-dropzone-active{background:#667eea14;border-color:#667eea}.file-dropzone-has-file{background:#f4fbf6;border-style:solid;border-color:#28a745}.file-dropzone-input{opacity:0;cursor:pointer;height:100%;top:0;left:0;border:none!important;width:100%!important;padding:0!important;position:absolute!important}.file-dropzone-placeholder,.file-dropzone-selected{color:#666;pointer-events:none;flex-direction:column;align-items:center;gap:.5rem;font-weight:500;display:flex}.file-dropzone-placeholder i{color:#999;font-size:2rem}.file-dropzone-selected{color:#28a745;flex-direction:row;font-weight:600}.file-dropzone-selected i{font-size:1.25rem}.file-dropzone-size{color:#666;font-weight:400}.form-row{grid-template-columns:1fr 1fr;gap:1rem;display:grid}.input-with-button{gap:.5rem;display:flex}.input-with-button input{flex:1}.btn-test{color:#fff;cursor:pointer;white-space:nowrap;background:#28a745;border:none;border-radius:4px;padding:.75rem 1rem;font-weight:600;transition:background .3s}.btn-test:hover{background:#218838}.test-result{border-radius:4px;margin-top:.5rem;padding:.5rem;font-weight:600;display:block}.btn-view-matches{align-items:center;gap:.5rem;margin-top:.75rem;padding:.5rem 1rem;font-size:.9rem;display:inline-flex}.modal-actions-split{justify-content:space-between}.btn-primary:disabled{color:#eee;opacity:1;box-shadow:none;cursor:not-allowed;background:#b0b4bb}.upload-queue{max-height:50vh;padding:1rem 0 .5rem;overflow-y:auto}.upload-queue-item{margin-bottom:1.1rem}.upload-queue-item:last-child{margin-bottom:0}.upload-progress-label{color:#333;margin-bottom:.5rem;font-size:.9rem;font-weight:600}.upload-progress-error{color:#dc3545}.upload-progress-error i{margin-right:.4rem}.upload-progress-bar-fill-error{background:#dc3545}.upload-queue-pending-list{margin:.75rem 0 0;padding:0;list-style:none}.upload-queue-pending-list li{color:#333;border-radius:4px;align-items:center;gap:.5rem;padding:.4rem .6rem;font-size:.9rem;display:flex}.upload-queue-pending-list li:hover{background:#f5f5f7}.upload-queue-pending-list li i.fa-file{color:#667eea}.upload-queue-pending-list li span:nth-child(2){text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.upload-queue-pending-list .btn-icon{padding:.25rem .4rem;font-size:.85rem}.upload-progress-bar{background:#eee;border-radius:6px;width:100%;height:12px;overflow:hidden}.upload-progress-bar-fill{background:linear-gradient(90deg,#4886da,#2c2873);border-radius:6px;height:100%;transition:width .2s}.upload-progress-bar-fill-done{background:#28a745}.upload-progress-done{color:#28a745}.upload-progress-done i{margin-right:.4rem}@media (width<=768px){.sources-header{flex-direction:column;align-items:flex-start;gap:1rem}.form-row{grid-template-columns:1fr}.modal-content{width:95%}.sources-table{font-size:.9rem}.sources-table th,.sources-table td{padding:.75rem .5rem}.modal-actions{flex-direction:column-reverse}.btn{width:100%}}.reader-opts-row{align-items:center;gap:1.5rem;margin-bottom:.75rem;display:flex}.reader-opts-inline{color:#333;align-items:center;gap:.5rem;font-size:.9rem;font-weight:600;width:auto!important;margin-bottom:0!important;display:flex!important}.reader-opts-inline input[type=checkbox]{width:auto!important}.reader-opts-delimiter{text-align:center;width:3rem!important}.reader-opts-sublabel{color:#555;margin:.75rem 0 .4rem;font-size:.85rem;font-weight:600;display:block}.reader-opts-table{border-collapse:collapse;width:100%;margin-bottom:.75rem}.reader-opts-table th{text-align:left;color:#666;border-bottom:1px solid #eee;padding:.4rem .5rem;font-size:.8rem}.reader-opts-table td{vertical-align:middle;padding:.3rem .5rem}.reader-opts-table td input{border:1px solid #ddd;border-radius:4px;width:100%;padding:.5rem;font-family:inherit;font-size:.95rem}.reader-opts-table .reader-opts-num{max-width:6rem}.reader-opts-table .btn-icon{padding:.4rem .6rem}.btn-add-row{padding:.4rem .9rem;font-size:.85rem}.reader-opts-sheet{width:16rem!important}.test-connection-select{max-width:50%;flex:0 auto!important;width:auto!important}.reader-opts-reorder{white-space:nowrap;gap:.15rem;display:flex}.btn-reorder{padding:.3rem .45rem!important}.btn-reorder:disabled{opacity:.3;cursor:not-allowed}.preview-file-select{flex:1;width:auto!important}.preview-table-wrapper{border:1px solid #eee;border-radius:6px;max-height:320px;margin-top:.75rem;overflow:auto}.preview-table-meta{color:#666;background:#fafafa;border-bottom:1px solid #eee;padding:.5rem .75rem;font-size:.8rem;position:sticky;top:0}.preview-table{border-collapse:collapse;white-space:nowrap;width:100%;font-size:.85rem}.preview-table th{text-align:left;background:#f5f5f7;border-bottom:1px solid #eee;padding:.5rem .75rem;position:sticky;top:1.9rem}.preview-table td{border-bottom:1px solid #f2f2f2;padding:.4rem .75rem}.preview-table tr:last-child td{border-bottom:none}.modal-content.preview-modal{width:70vw!important;max-width:70vw!important}.preview-modal .modal-body{padding-bottom:64px}.preview-modal-path-row{justify-content:space-between;align-items:center;gap:1rem;margin-bottom:.75rem;display:flex}.preview-table-select{background-color:#fff;border:1px solid #ccc;border-radius:6px;flex:none;width:auto;padding:.5rem 2.2rem .5rem .75rem;font-size:.85rem}.preview-modal-path{color:#666;text-overflow:ellipsis;white-space:nowrap;margin-bottom:.75rem;font-size:.85rem;overflow:hidden}.preview-modal-path-row .preview-modal-path{flex:auto;min-width:0;margin-bottom:0}.preview-modal .preview-table-wrapper{max-height:65vh}.btn-sm{padding:.3rem .7rem;font-size:.8rem}.event-json{white-space:pre-wrap;word-break:break-word;background:#f8f8f8;border:1px solid #ddd;border-radius:4px;max-height:60vh;padding:1rem;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:.8rem;overflow:auto}.preview-pagination{background:#f8f9fa;border-top:1px solid #dee2e6;justify-content:flex-end;align-items:center;gap:12px;padding:.5rem .75rem;font-size:13px;display:flex;position:sticky;bottom:0}.preview-table-area{position:relative}.preview-modal .preview-table-wrapper-fixed{height:65vh}.preview-table-overlay{color:#667eea;background:#fff9;border-radius:6px;justify-content:center;align-items:center;font-size:1.75rem;display:flex;position:absolute;inset:0}.preview-table.preview-table-virtual{table-layout:fixed;width:auto}.preview-table-virtual td{box-sizing:border-box;text-overflow:ellipsis;white-space:nowrap;height:32px;overflow:hidden}.preview-table-virtual tr.virtual-pad td{border:0;height:auto;padding:0}.preview-table-virtual th{box-sizing:border-box;text-overflow:ellipsis;height:40px;overflow:hidden}.pipelines-page{background-color:#0000;padding:0}.pipelines-header{justify-content:space-between;align-items:center;margin-bottom:2rem;display:flex}.pipelines-header h1{color:#2c3e50;margin:0;font-size:2rem;font-weight:700}.pipelines-search{margin-bottom:2rem}.pipelines-search input{border:1px solid #ddd;border-radius:4px;width:100%;max-width:400px;padding:.75rem 1rem;font-size:1rem;transition:border-color .3s}.pipelines-search input:focus{border-color:#667eea;outline:none;box-shadow:0 0 0 3px #667eea1a}.pipelines-table-container{background:#fff;border-radius:8px;overflow:hidden;box-shadow:0 2px 8px #0000001a}.pipelines-table{border-collapse:collapse;width:100%}.pipelines-table thead{background-color:#f8f9fa;border-bottom:2px solid #dee2e6}.pipelines-table th{text-align:left;color:#555;text-transform:uppercase;letter-spacing:.5px;padding:1rem;font-size:.9rem;font-weight:600}.pipelines-table tbody tr{border-bottom:1px solid #dee2e6;transition:background-color .2s}.pipelines-table tbody tr:hover{background-color:#f8f9fa}.pipelines-table td{color:#333;padding:1rem}.name-cell{align-items:center;gap:.75rem;font-weight:600;display:flex}.name-cell i{color:#667eea}.name-cell-clickable{cursor:pointer}.name-cell-clickable:hover{text-decoration:underline}.table-cell,.schedule-cell,.date-cell{color:#666;font-size:.9rem}.status-badge{color:#fff;border-radius:20px;padding:.25rem .75rem;font-size:.8rem;font-weight:600;display:inline-block}.actions-cell{gap:.5rem;display:flex}.pipeline-row-menu-open{display:block}.modal-content.modal-content-wide{width:70vw!important;max-width:70vw!important}.form-section{margin-bottom:1.5rem}.form-section h3{color:#667eea;margin-bottom:1rem;font-size:1rem}.form-group input,.form-group select,.form-group textarea{border:1px solid #ddd;border-radius:4px;width:100%;padding:.75rem;font-family:inherit;font-size:1rem;transition:border-color .3s}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:#667eea;outline:none;box-shadow:0 0 0 3px #667eea1a}.btn-secondary:hover:not(:disabled){background:#5a6268}.btn-secondary:disabled{opacity:.7;cursor:not-allowed}@media (width<=768px){.pipelines-header{flex-direction:column;align-items:flex-start;gap:1rem}.modal-content{width:95%}.pipelines-table{font-size:.9rem}.pipelines-table th,.pipelines-table td{padding:.75rem .5rem}.modal-actions{flex-direction:column-reverse}.btn{width:100%}}.pipelines-header-actions{gap:.5rem;display:flex}.code-editor-wrap{--ce-bg:#272822;--ce-border:#444;--ce-text:#f8f8f2;--ce-placeholder:#75715e;--ce-keyword:#66d9ef;--ce-string:#e6db74;--ce-comment:#75715e;--ce-number:#ae81ff;--ce-builtin:#a6e22e;--ce-decorator:#fd971f;--ce-paren:#f92672;--ce-scrollbar-thumb:#5a5a5a;--ce-scrollbar-track:#2f2f2f;width:100%;height:calc(var(--code-editor-rows) * 1.5em + 1.5rem);min-height:calc(var(--code-editor-rows) * 1.5em + 1.5rem);background:var(--ce-bg);border:1px solid var(--ce-border);resize:vertical;border-radius:4px;position:relative;overflow:hidden}.code-editor-wrap-fullscreen{z-index:5000;resize:none;box-shadow:0 10px 40px #00000080;width:auto!important;height:auto!important;min-height:0!important;position:fixed!important;inset:1.5rem!important}.code-editor-fullscreen-toggle{z-index:2;color:#f0f0f0;cursor:pointer;opacity:.7;background:#00000059;border:none;border-radius:4px;justify-content:center;align-items:center;width:26px;height:26px;padding:0;font-size:.8rem;transition:opacity .15s,background .15s;display:flex;position:absolute;top:.5rem;right:.5rem}.code-editor-fullscreen-toggle:hover{opacity:1;background:#0000008c}.code-editor-wrap[data-scheme=light] .code-editor-fullscreen-toggle{color:#333;background:#ffffff8c}.code-editor-wrap[data-scheme=light] .code-editor-fullscreen-toggle:hover{background:#ffffffd9}.code-editor-wrap[data-scheme=light]{--ce-bg:#fafafa;--ce-border:#ccc;--ce-text:#24292e;--ce-placeholder:#8a8a8a;--ce-keyword:#0550ae;--ce-string:#a31515;--ce-comment:#6a737d;--ce-number:#6f42c1;--ce-builtin:#22863a;--ce-decorator:#e36209;--ce-paren:#d73a49;--ce-scrollbar-thumb:#c1c1c1;--ce-scrollbar-track:#f0f0f0}.code-editor-wrap:focus-within{border-color:#667eea}.code-editor-textarea,.code-editor-highlight{white-space:pre-wrap;word-wrap:break-word;scrollbar-gutter:stable;margin:0;position:absolute;inset:0;overflow-y:auto;letter-spacing:normal!important;box-sizing:border-box!important;padding:.75rem!important;font-family:SFMono-Regular,Menlo,Consolas,Liberation Mono,monospace!important;font-size:.9rem!important;line-height:1.5!important}.code-editor-textarea{resize:none;height:100%;caret-color:var(--ce-text);z-index:1;scrollbar-color:var(--ce-scrollbar-thumb) var(--ce-scrollbar-track);color:#0000!important;background:0 0!important;border:none!important;width:100%!important}.code-editor-textarea::-webkit-scrollbar{width:10px}.code-editor-textarea::-webkit-scrollbar-track{background:var(--ce-scrollbar-track)}.code-editor-textarea::-webkit-scrollbar-thumb{background-color:var(--ce-scrollbar-thumb);border:2px solid var(--ce-scrollbar-track);border-radius:6px}.code-editor-textarea:focus{outline:none}.code-editor-textarea::placeholder{color:var(--ce-placeholder)}.code-editor-highlight{pointer-events:none;color:var(--ce-text);overflow-x:hidden}.code-editor-highlight::-webkit-scrollbar{display:none}.code-editor-highlight{scrollbar-width:none}.tok-keyword{color:var(--ce-keyword)}.tok-string{color:var(--ce-string)}.tok-comment{color:var(--ce-comment)}.tok-number{color:var(--ce-number)}.tok-builtin{color:var(--ce-builtin)}.tok-decorator{color:var(--ce-decorator)}.tok-paren{color:var(--ce-paren)}.code-editor-header{justify-content:space-between;align-items:center;gap:.75rem;width:100%;margin-bottom:.5rem!important;display:flex!important}.code-editor-field-label{color:#333;font-size:.95rem;font-weight:600;margin:0!important;display:inline!important}.code-editor-scheme-toggle{color:#555;cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:.5rem;font-size:.8rem;margin:0!important;font-weight:400!important;display:flex!important}.code-editor-scheme-switch{width:34px;height:18px;display:inline-block;position:relative}.code-editor-scheme-switch input{opacity:0;width:0;height:0}.code-editor-scheme-slider{background-color:#ccc;border-radius:999px;transition:background-color .15s;position:absolute;inset:0}.code-editor-scheme-slider:before{content:"";background-color:#fff;border-radius:50%;width:14px;height:14px;transition:transform .15s;position:absolute;top:2px;left:2px}.code-editor-scheme-switch input:checked+.code-editor-scheme-slider{background-color:#667eea}.code-editor-scheme-switch input:checked+.code-editor-scheme-slider:before{transform:translate(16px)}.help-page{flex-direction:column;flex:1;min-height:0;display:flex}.help-header{background:linear-gradient(90deg,#667eea38,#667eea14);border:1px solid #667eea59;border-radius:8px;align-items:center;gap:1rem;margin-bottom:1.5rem;padding:.9rem 1.25rem;display:flex}.modal-header.dag-help-header{background:linear-gradient(90deg,#667eea38,#667eea14);border-bottom:1px solid #667eea59}.help-title{color:#2c3e50;margin:0;font-size:2rem;font-weight:700}.help-layout{flex:1;align-items:flex-start;gap:1.5rem;min-height:0;display:flex}.help-nav{background:#fff;border:1px solid #e3e6ea;border-radius:8px;flex-direction:column;flex:0 0 220px;gap:.25rem;padding:.5rem;display:flex;position:sticky;top:0}.help-nav-item{text-align:left;color:#2c3e50;cursor:pointer;background:0 0;border:none;border-radius:6px;align-items:center;gap:.6rem;padding:.6rem .75rem;font-size:.95rem;display:flex}.help-nav-item i{text-align:center;color:#667eea;width:1.1rem}.help-nav-item:hover{background:#f1f3f9}.help-nav-item.active{color:#fff;background:#667eea}.help-nav-item.active i{color:#fff}.help-content{color:#2c3e50;background:#fff;border:1px solid #e3e6ea;border-radius:8px;flex:1;min-width:0;padding:1.5rem 2rem 2rem;line-height:1.6}.help-content p,.help-content ul,.help-content ol{margin:0 0 .9rem}.help-content ul,.help-content ol{padding-left:1.6rem}.help-content li{margin-bottom:.4rem}.help-content li>ul,.help-content li>ol{margin-top:.4rem;margin-bottom:0}.help-content h1{margin:0 0 .9rem;font-size:1.6rem}.help-content h2{border-bottom:1px solid #eceef2;margin:2rem 0 .75rem;padding-bottom:.3rem;font-size:1.2rem}.help-content h3{margin:1.25rem 0 .5rem;font-size:1rem}.help-content code{background:#f1f3f9;border-radius:4px;padding:.1rem .35rem;font-size:.88em}.help-snippet{--ce-keyword:#66d9ef;--ce-string:#e6db74;--ce-comment:#75715e;--ce-number:#ae81ff;--ce-builtin:#a6e22e;--ce-decorator:#fd971f;--ce-paren:#f92672;background:#1e1f29;border-radius:8px;margin:.75rem 0 1rem;overflow:hidden}.help-snippet-bar{color:#aab;text-transform:uppercase;letter-spacing:.05em;background:#2a2c3a;justify-content:space-between;align-items:center;padding:.35rem .75rem;font-size:.78rem;display:flex}.help-snippet-bar button{color:#cfd3ff;cursor:pointer;background:0 0;border:none;font-size:.8rem}.help-snippet-bar button:hover{color:#fff}.help-snippet pre{margin:0;padding:.9rem 1rem;overflow-x:auto}.help-content .help-snippet code{color:#e6e8f5;background:0 0;padding:0;font-size:.85rem;line-height:1.5}.help-table{border-collapse:collapse;width:100%;margin:.75rem 0 1rem;font-size:.9rem}.help-table th,.help-table td{text-align:left;vertical-align:top;border-bottom:1px solid #eceef2;padding:.5rem .75rem}.help-table th{background:#f7f8fb;font-weight:600}.help-note{background:#f3f5ff;border-left:4px solid #667eea;border-radius:4px;margin:1rem 0;padding:.75rem 1rem}.help-note-warn{background:#fff8e5;border-left-color:#e0a100}@media (width<=800px){.help-layout{flex-direction:column}.help-nav{flex:none;width:100%;position:static}}.pipeline-detail-page{flex-direction:column;flex:1;min-height:0;display:flex}.pipeline-detail-topbar{justify-content:space-between;align-items:center;margin-bottom:1rem;display:flex}.pipeline-run-controls{align-items:center;gap:.75rem;margin-top:.75rem;display:flex}.graph-mode-btn{min-width:80px}.run-btn{margin-right:1rem}.run-filters{align-items:center;gap:.5rem;display:flex}.runs-dropdown{min-width:220px;position:relative}.runs-dropdown>.btn{justify-content:space-between;width:100%}.runs-dropdown-caret{margin-left:.5rem;font-size:.75rem}.runs-dropdown-menu{z-index:1000;background:#fff;border-radius:6px;max-height:260px;padding:.4rem 0;position:absolute;top:calc(100% + .4rem);left:0;right:0;overflow-y:auto;box-shadow:0 4px 16px #0003}.runs-dropdown-empty{color:#6c757d;padding:.75rem 1rem;font-size:.9rem}.runs-dropdown-item{color:#2c3e50;cursor:pointer;text-align:left;background:0 0;border:none;justify-content:flex-start;align-items:center;gap:.6rem;width:100%;padding:.5rem 1rem;font-size:.85rem;display:flex}.runs-dropdown-item:hover{background-color:#f8f9fa}.runs-dropdown-item-active{background-color:#f0f2ff;font-weight:600}.runs-dropdown-clear{color:#6c757d;border-bottom:1px solid #eee}.run-status-dot{border:1px solid #00000026;border-radius:50%;flex-shrink:0;width:.6rem;height:.6rem}.pipeline-detail-title{align-items:center;gap:.75rem;display:flex}.pipeline-detail-title h1{color:#2c3e50;margin:0;font-size:1.75rem;font-weight:700}.pipeline-detail-description{color:#6c757d;margin:0 0 1.5rem}.dag-graph{--tree-level-height:6.5rem;background:#fff;border-radius:8px;flex-direction:column;flex:1;align-items:center;min-height:0;padding:.75rem 2rem calc(2rem + 200px);display:flex;position:relative;overflow:auto;box-shadow:0 2px 8px #0000001a}.dag-run-summary{align-items:center;gap:.5rem;display:flex;position:absolute;top:.75rem;right:.75rem}.dag-run-duration{color:#555;background:#f1f1f4;border-radius:6px;padding:.35rem .7rem;font-size:.85rem;font-weight:600}.dag-run-outcome{letter-spacing:.02em;border-radius:6px;padding:.35rem .85rem;font-size:.85rem;font-weight:600}.dag-run-outcome-succeeded{color:#198754;background:#d4edda}.dag-run-outcome-failed{color:#dc3545;background:#f8d7da}.dag-status-legend{color:#555;background:#f1f1f4;border-radius:6px;flex-wrap:wrap;align-items:center;gap:.75rem;padding:.35rem .7rem;font-size:.8rem;display:flex;position:absolute;bottom:.75rem;left:.75rem}.dag-status-legend-title{font-weight:600}.dag-status-legend-item{align-items:center;gap:.35rem;display:flex}.dag-info-btn{color:#667eea;cursor:pointer;background:0 0;border:none;border-left:1px solid #d3d4da;align-items:center;gap:.35rem;margin-left:.25rem;padding:0 0 0 .75rem;font-size:.8rem;font-weight:600;display:flex}.dag-info-btn:hover{color:#4b5bd0}.dag-help-body.help-content{border:none;padding:1rem 1.5rem 1.5rem}.dag-help-diagram{color:#e6e8f5;background:#1e1f29;border-radius:8px;margin:.75rem 0 1rem;padding:.9rem 1rem;font-size:.85rem;line-height:1.3;overflow-x:auto}.dag-node{-webkit-user-select:none;user-select:none;color:#2c3e50;background-color:#f8f9ff;border:2px solid #667eea;border-radius:6px;justify-content:center;align-items:center;gap:.6rem;min-width:200px;padding:.75rem 1.25rem;font-weight:600;display:flex;position:relative}.dag-node-tooltip{color:#f1f2f6;text-align:left;z-index:1000;pointer-events:none;background:#1f2430;border-radius:8px;min-width:220px;padding:.75rem .9rem;font-weight:400;position:fixed;box-shadow:0 8px 24px #00000040}.dag-node-tooltip-title{white-space:nowrap;text-overflow:ellipsis;border-bottom:1px solid #ffffff26;margin-bottom:.5rem;padding-bottom:.4rem;font-size:.9rem;font-weight:600;overflow:hidden}.dag-node-tooltip-row{justify-content:space-between;gap:1rem;font-size:.8rem;line-height:1.6;display:flex}.dag-node-tooltip-key{color:#9aa0ac}.dag-node-tooltip-status{font-weight:600}.dag-node-tooltip-status-succeeded{color:#4ade80}.dag-node-tooltip-status-failed{color:#f87171}.dag-node-tooltip-status-running{color:#22d3ee}.dag-node-tooltip-status-queued{color:#93c5fd}.dag-node-tooltip-status-pending{color:#d1d5db}.dag-node-start{cursor:context-menu;background-color:#eefbf0;border-width:3px;border-color:#198754}.dag-node-chevron{cursor:pointer;color:#198754;-webkit-text-stroke:1px currentColor;background:0 0;border:none;justify-content:center;align-items:flex-end;height:1rem;margin:0 0 -1px;padding:0;font-size:1.15rem;line-height:1;display:flex}.dag-node-label{text-transform:none;text-align:center}.dag-join-markers{pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0}.dag-join-markers path{stroke:#ccc;stroke-width:2px}.dag-join-marker{fill:#ccc;stroke:#667eea;stroke-width:2px}.extra-parents-picker{margin-bottom:60px;position:relative}.extra-parents-picker-open{margin-bottom:220px}.extra-parents-chips{flex-wrap:wrap;gap:.4rem;margin-bottom:.5rem;display:flex}.extra-parents-chip{color:#4c51bf;background:#eef0ff;border-radius:999px;align-items:center;gap:.4rem;padding:.25rem .4rem .25rem .75rem;font-size:.85rem;font-weight:500;display:inline-flex}.extra-parents-chip button{color:inherit;cursor:pointer;opacity:.7;background:0 0;border:none;align-items:center;padding:.15rem;font-size:.75rem;display:flex}.extra-parents-chip button:hover{opacity:1}.extra-parents-chip-primary{color:#fff;text-transform:uppercase;letter-spacing:.03em;background:#4c51bf;border-radius:999px;padding:.05rem .5rem;font-size:.7rem;font-weight:600}.dag-start-details{color:#495057;background-color:#f8f9fa;border-radius:6px;flex-direction:column;align-self:stretch;gap:.25rem;max-width:320px;margin-top:.5rem;padding:.75rem 1rem;font-size:.9rem;display:flex}.tree-connector-down{background-color:#ccc;width:2px;height:2rem}.tree-connector-down-half{height:1rem}.dag-node-task{cursor:context-menu;transition:box-shadow .15s,border-color .5s,background-color .5s}.dag-node-task:hover{box-shadow:0 0 0 3px #667eea26}.dag-node-sql{background-color:#3498db1f;border-color:#3498db}.dag-node-python{background-color:#a06e461f;border-color:#a06e46}.dag-node-bash{background-color:#5a646e1f;border-color:#5a646e}.dag-node-pipeline{background-color:#6f42c11f;border-color:#6f42c1}.pipeline-picker{position:relative}.pipeline-picker-dropdown{z-index:20;background:#fff;border:1px solid #ddd;border-radius:4px;max-height:220px;margin-top:2px;position:absolute;top:100%;left:0;right:0;overflow-y:auto;box-shadow:0 4px 12px #0000001a}.pipeline-picker-option{cursor:pointer;justify-content:space-between;align-items:center;padding:.5rem .75rem;display:flex}.pipeline-picker-option:hover{background-color:#f5f6fa}.pipeline-picker-empty{color:#7f8c8d;padding:.5rem .75rem;font-size:.9rem}.run-status-queued{border-width:3px;border-color:#adb5bd}.run-status-running{border-width:3px;border-color:#00bcd4;animation:1.2s ease-in-out infinite dag-running-pulse}@keyframes dag-running-pulse{0%,to{box-shadow:0 0 #00bcd400}50%{box-shadow:0 0 0 5px #00bcd440}}.run-status-retrying{border-width:3px;border-color:#ffd60a}.run-status-failed{border-width:3px;border-color:#dc3545}.run-status-succeeded{border-width:3px;border-color:#198754}.run-status-none,.run-status-pending{outline-offset:0;border-width:5px;border-color:#fff;outline:1px dotted #c9cbd1}.run-status-none:before,.run-status-pending:before{content:"";pointer-events:none;border:1px dotted #9a9ea6;position:absolute;inset:0}.run-status-dot.run-status-queued{background-color:#adb5bd}.run-status-dot.run-status-running{background-color:#00bcd4}.run-status-dot.run-status-retrying{background-color:#ffd60a}.run-status-dot.run-status-failed{background-color:#dc3545}.run-status-dot.run-status-succeeded{background-color:#198754}.run-status-dot.run-status-none,.run-status-dot.run-status-pending{background-color:#fff}.tree-level-add{color:#667eea;cursor:pointer;white-space:nowrap;background-color:#fff;border:2px dashed #667eea;border-radius:6px;align-items:center;gap:.5rem;padding:.75rem 1.25rem;font-size:.9rem;font-weight:600;display:flex}.tree-level-add:hover:not(:disabled){background-color:#f8f9ff}.tree-level-add:disabled{color:#999;cursor:not-allowed;border-color:#ccc}.tree-children{justify-content:center;display:flex}.tree-node-wrapper{padding:calc(var(--tree-node-base-gap,2rem) + (var(--extra-drop-levels,0) * var(--tree-level-height,6.5rem))) .75rem 0;box-sizing:content-box;flex-direction:column;align-items:center;display:flex;position:relative}.tree-node-wrapper:before{content:"";width:0;height:calc(var(--tree-node-base-gap,2rem) + (var(--extra-drop-levels,0) * var(--tree-level-height,6.5rem)));border-left:2px solid #ccc;position:absolute;top:0;left:calc(50% - 1px)}.tree-node-wrapper-join:before{display:none}.tree-node-wrapper:after{content:"";border-top:2px solid #ccc;position:absolute;top:0;left:0;right:0}.tree-node-wrapper:only-child:after{display:none}.tree-node-wrapper:first-child:after{left:50%}.tree-node-wrapper:last-child:after{right:50%}.dag-context-menu{z-index:1000;background:#fff;border-radius:6px;min-width:160px;padding:.4rem 0;position:fixed;box-shadow:0 4px 16px #0003}.dag-context-menu button{text-align:left;cursor:pointer;color:#2c3e50;background:0 0;border:none;align-items:center;gap:.6rem;width:100%;padding:.5rem 1rem;font-size:.9rem;display:flex}.dag-context-menu button:hover:not(:disabled){background-color:#f8f9fa}.dag-context-menu button:disabled{color:#b0b6bd;cursor:not-allowed}.dag-context-menu-danger{color:#dc3545!important}.dag-context-menu-danger:disabled{color:#e3b0b6!important}.run-param-row{gap:.5rem;margin-bottom:.5rem;display:flex}.run-param-row input{border:1px solid #ddd;border-radius:4px;flex:1;padding:.5rem .75rem}.run-param-row input:disabled{color:#6c757d;cursor:not-allowed;background-color:#e9ecef}.btn-add-param{margin-top:.25rem}.form-hint{color:#777;margin:0 0 .5rem;font-size:.85rem}.log-tabs{border-bottom:1px solid #eee;flex-wrap:wrap;gap:.4rem;margin-bottom:.75rem;padding-bottom:.75rem;display:flex}.log-tab{color:#495057;cursor:pointer;background:#fff;border:1px solid #dee2e6;border-radius:6px;align-items:center;gap:.4rem;padding:.35rem .7rem;font-size:.85rem;font-weight:600;display:flex}.log-tab:hover{border-color:#adb5bd}.log-tab-active{color:#4c56b0;background:#667eea14;border-color:#667eea}.log-entry{border:1px solid #eee;border-radius:6px;padding:.75rem}.log-entry-header{justify-content:space-between;align-items:center;margin-bottom:.5rem;display:flex}.log-entry-status{text-transform:uppercase;letter-spacing:.02em;border-radius:4px;padding:.2rem .6rem;font-size:.8rem;font-weight:600}.log-entry-status-queued{color:#495057;background:#f1f3f5}.log-entry-status-running{color:#00778a;background:#00bcd426}.log-entry-status-retrying{color:#8a6d00;background:#ffd60a33}.log-entry-status-succeeded{color:#198754;background:#d4edda}.log-entry-status-failed{color:#dc3545;background:#f8d7da}.log-entry-date{color:#6c757d;font-size:.85rem}.log-entry-text{white-space:pre-wrap;color:#495057;margin:0;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:.85rem}.inputs-table{border-collapse:collapse;width:100%}.inputs-table th,.inputs-table td{text-align:left;border-bottom:1px solid #eee;padding:.5rem .75rem;font-size:.9rem}.inputs-table th{color:#6c757d;font-weight:600}.step-parent-hint{margin:-.5rem 0 1rem;font-size:.85rem}.step-type-sql{color:#0d6efd;background-color:#e7f1ff}.step-type-python{color:#198754;background-color:#eefbf0}.code-textarea{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:.9rem}.category-picker{position:relative}.category-picker-selected{margin-bottom:.5rem}.category-picker-dropdown{z-index:20;background:#fff;border:1px solid #ddd;border-radius:4px;max-height:220px;margin-top:2px;position:absolute;top:100%;left:0;right:0;overflow-y:auto;box-shadow:0 4px 12px #0000001a}.category-picker-option{cursor:pointer;padding:.5rem .75rem}.category-picker-option:hover{background-color:#f5f6fa}.category-picker-empty{color:#7f8c8d;padding:.5rem .75rem;font-size:.9rem}.dag-help-body.help-content h2{color:#fff;text-shadow:0 1px 2px #1e287899;background:linear-gradient(90deg,#667eea99,#667eea33);border-bottom:none;border-left:4px solid #3f51c7;border-radius:0 6px 6px 0;padding:.4rem .75rem}.dag-help-body.help-content b{color:#3f51c7}.dag-help-body.help-content li::marker{color:#667eea}.dag-help-body.help-content code{color:#3f51c7;background:#667eea21}.dag-help-body.help-content .help-table th{color:#3f51c7;background:#667eea29;border-bottom:2px solid #667eea66}.query-tool{flex-direction:column;height:calc(100vh - 220px);min-height:500px;display:flex}.query-page-header{flex:none;justify-content:space-between;align-items:center;margin-bottom:1.5rem;display:flex}.query-page-header h1{color:#2c3e50;margin:0;font-size:2rem;font-weight:700}.query-workspace{background:#fff;border-radius:8px;flex-direction:column;flex:1;display:flex;overflow:hidden;box-shadow:0 2px 8px #0000001a}.query-tabs-bar{background:#f8f9fa;border-bottom:1px solid #dee2e6;flex:none;align-items:center;padding:0 10px;display:flex;overflow-x:auto}.query-tabs-list{flex:1;gap:5px;display:flex}.query-tab{cursor:pointer;white-space:nowrap;-webkit-user-select:none;user-select:none;color:#555;background:#fff;border:1px solid #ddd;border-bottom:none;border-radius:4px 4px 0 0;align-items:center;gap:.5rem;margin-top:8px;padding:.5rem .75rem;font-size:.85rem;display:flex}.query-tab:hover{background:#f0f0f0}.query-tab.active{color:#2c3e50;background:#fff;border-bottom:2px solid #667eea;font-weight:600}.query-tab-close{color:#999;font-size:.75rem}.query-tab-close:hover{color:#dc3545}.query-tab-add{color:#667eea;cursor:pointer;background:0 0;border:1px solid #ccc;border-radius:4px;flex-shrink:0;margin:8px 0;padding:.4rem .6rem}.query-tab-add:hover{background:#f0f0f0}.query-editor-pane{flex:0 0 220px;min-height:100px;padding:10px}.query-editor-wrap{--ce-text:#f8f8f2;--ce-keyword:#66d9ef;--ce-string:#e6db74;--ce-comment:#75715e;--ce-number:#ae81ff;--ce-builtin:#a6e22e;--ce-decorator:#fd971f;--ce-paren:#f92672;background:#272822;border:1px solid #333;border-radius:4px;width:100%;height:100%;position:relative;overflow:hidden}.query-editor-wrap:focus-within{border-color:#667eea}.query-editor,.query-editor-highlight{scrollbar-gutter:stable;white-space:pre-wrap;word-wrap:break-word;box-sizing:border-box;margin:0;padding:1rem;font-family:Monaco,Courier New,monospace;font-size:.85rem;line-height:1.5;position:absolute;inset:0}.query-editor{resize:none;color:#0000;caret-color:#f8f8f2;z-index:1;background:0 0;border:none;width:100%;height:100%}.query-editor::selection{background:#667eea66}.query-editor::placeholder{color:#75715e}.query-editor:focus{outline:none}.query-editor-highlight{pointer-events:none;color:var(--ce-text);overflow:hidden}.query-editor-highlight mark{color:inherit;background:#667eea4d;border-radius:2px}.query-resizer{cursor:row-resize;background:linear-gradient(#e0e0e0 0%,#f0f0f0 50%,#e0e0e0 100%);flex:0 0 6px}.query-resizer:hover{background:#667eea}.query-toolbar{background:#f8f9fa;border-top:1px solid #dee2e6;border-bottom:1px solid #dee2e6;flex-wrap:wrap;flex:none;align-items:center;gap:1.25rem;padding:.75rem 1.25rem;display:flex}.query-toolbar-group{align-items:center;gap:.5rem;display:flex}.query-toolbar-group label{color:#333;white-space:nowrap;font-size:.8rem;font-weight:600}.query-toolbar-group select{border:1px solid #ddd;border-radius:4px;width:220px;padding:.55rem 2.2rem .55rem .65rem;font-size:.9rem}.query-tables-group{position:relative}.query-tables-search-wrap{width:240px;position:relative}.query-tables-search-wrap input{box-sizing:border-box;border:1px solid #ddd;border-radius:4px;width:100%;padding:.5rem;font-size:.9rem}.query-tables-dropdown{z-index:20;background:#fff;border:1px solid #ccc;border-radius:4px;width:100%;max-height:280px;margin-top:2px;position:absolute;top:100%;left:0;overflow-y:auto;box-shadow:0 4px 12px #00000026}.query-tables-item{cursor:pointer;color:#222;border-bottom:1px solid #eee;padding:.5rem .75rem;font-family:Courier New,monospace;font-size:.85rem}.query-tables-item:last-child{border-bottom:none}.query-tables-item:hover{background:#f0f0f0}.query-tables-item-view{color:#06c}.query-tables-empty{color:#999;padding:.75rem;font-size:.85rem}.btn-run-query{white-space:nowrap;padding:.5rem 1.1rem;font-size:.9rem}.query-status-bar{color:#666;white-space:nowrap;margin-left:auto;font-size:.85rem}.query-results-pane{flex:1;padding:.5rem;overflow:auto}.query-error{white-space:pre-wrap;margin:.5rem;font-family:Courier New,monospace}.query-no-results{color:#999;justify-content:center;align-items:center;height:100%;display:flex}.query-no-results p{margin:0;font-size:1rem}.query-results-table-container{overflow:auto}.query-results-table{border-collapse:collapse;width:100%;font-size:.85rem}.query-results-table thead{background-color:#f8f9fa;position:sticky;top:0}.query-results-table th{text-align:left;color:#555;white-space:nowrap;border-bottom:2px solid #dee2e6;padding:.5rem .75rem;font-size:.75rem;font-weight:600}.query-results-table th.sortable-th{cursor:pointer;-webkit-user-select:none;user-select:none}.query-results-table th.sortable-th:hover{color:#333}.query-sort-icon{color:#667eea;margin-left:.4rem;font-size:.7rem}.query-results-table td{color:#333;white-space:nowrap;border-bottom:1px solid #eee;padding:.4rem .75rem;font-family:Courier New,monospace}.query-results-table tbody tr:hover{background-color:#f8f9fa}.query-null{color:#999;font-style:italic}@media (width<=900px){.query-toolbar{flex-direction:column;align-items:stretch}.query-toolbar-group select,.query-tables-search-wrap{width:100%}.query-status-bar{margin-left:0}}.query-pagination{align-items:center;gap:12px;padding:6px 10px;font-size:13px;display:flex}.query-pagination button:disabled{opacity:.5;cursor:not-allowed}.query-pagination{background:#f8f9fa;border-top:1px solid #dee2e6;flex:none;justify-content:flex-end;padding:.5rem 1.25rem}.query-pagination button,.preview-pagination button{color:#333;cursor:pointer;background:#fff;border:1px solid #6c757d;border-radius:4px;padding:.3rem .8rem}.query-pagination button:hover:not(:disabled),.preview-pagination button:hover:not(:disabled){background:#e9ecef}.page-input{text-align:center;border:1px solid #6c757d;border-radius:4px;width:4.5ch;min-width:3rem;padding:.2rem .3rem}.query-results-table.query-results-table-virtual{table-layout:fixed;width:auto}.query-results-table-virtual td{box-sizing:border-box;text-overflow:ellipsis;height:32px;overflow:hidden}.query-results-table-virtual tr.virtual-pad td{border:0;height:auto;padding:0}.query-results-table-virtual th{box-sizing:border-box;text-overflow:ellipsis;height:40px;overflow:hidden}.query-results-loading{opacity:.45;pointer-events:none}.query-results-spinner{z-index:3;text-align:center;color:#667eea;height:0;font-size:1.75rem;position:sticky;top:0;overflow:visible}.query-results-spinner i{position:relative;top:120px}.query-pagination .query-pagination-info{color:#666;margin-right:.75rem}.sites-page{background-color:#0000;padding:0}.sites-header{justify-content:space-between;align-items:center;margin-bottom:2rem;display:flex}.sites-header h1{color:#2c3e50;margin:0;font-size:2rem;font-weight:700}.sites-search{margin-bottom:2rem}.sites-search input{border:1px solid #ddd;border-radius:4px;width:100%;max-width:400px;padding:.75rem 1rem;font-size:1rem;transition:border-color .3s}.sites-search input:focus{border-color:#667eea;outline:none;box-shadow:0 0 0 3px #667eea1a}.sites-table-container{background:#fff;border-radius:8px;overflow:hidden;box-shadow:0 2px 8px #0000001a}.sites-table{border-collapse:collapse;width:100%}.sites-table thead{background:#f8f9fa}.sites-table th{text-align:left;color:#495057;text-transform:uppercase;border-bottom:2px solid #eee;padding:1rem;font-size:.85rem;font-weight:600}.sites-table th.text-center{text-align:center}.permission-info{margin-left:.35rem;display:inline-block;position:relative}.info-icon-btn{color:#adb5bd;cursor:help;vertical-align:middle;font-size:.9rem;line-height:1;transition:color .2s}.permission-info:hover .info-icon-btn,.permission-info:focus-visible .info-icon-btn{color:#667eea}.permission-info-popover{color:#fff;text-transform:none;white-space:normal;z-index:10;opacity:0;visibility:hidden;pointer-events:none;background:#2c3e50;border-radius:6px;width:220px;padding:.6rem .85rem;font-size:.8rem;font-weight:400;line-height:1.4;transition:opacity .15s,transform .15s,visibility .15s;position:absolute;top:130%;left:50%;transform:translate(-50%)translateY(-4px);box-shadow:0 4px 12px #0003}.permission-info:hover .permission-info-popover,.permission-info:focus-visible .permission-info-popover{opacity:1;visibility:visible;transform:translate(-50%)translateY(0)}.permission-info-popover:before{content:"";border:6px solid #0000;border-bottom-color:#2c3e50;position:absolute;bottom:100%;left:50%;transform:translate(-50%)}.sites-table tbody tr{border-bottom:1px solid #eee;transition:background .2s}.sites-table tbody tr:last-child{border-bottom:none}.sites-table tbody tr:hover{background:#f8f9fc}.sites-table td{color:#333;padding:1rem}.sites-table td select{color:#333;background-color:#fff;border:1px solid #ddd;border-radius:4px;padding:.5rem 2.2rem .5rem .6rem;font-family:inherit;font-size:.9rem}.sites-table td select:disabled{color:#999;cursor:not-allowed;background-color:#f0f0f0;border-color:#e0e0e0}.sites-table td.sites-actions{text-align:center;white-space:nowrap}.sites-table td.sites-actions>*+*{margin-left:.5rem}.status-badge{text-transform:capitalize;border-radius:20px;align-items:center;gap:.35rem;padding:.25rem .75rem;font-size:.8rem;font-weight:600;display:inline-flex}.status-badge.status-active{color:#155724;background:#d4edda}.status-badge.status-suspended{color:#721c24;background:#f8d7da}.status-badge.status-disabled{color:#383d41;background:#e2e3e5}.role-badge{border-radius:20px;align-items:center;gap:.35rem;padding:.25rem .75rem;font-size:.8rem;font-weight:600;display:inline-flex}.role-badge.role-admin{color:#856404;background:#fff3cd}.role-badge.role-site_admin{color:#0c5460;background:#d1ecf1}.role-badge.role-user{color:#383d41;background:#e2e3e5}.btn-manage-users{color:#667eea;cursor:pointer;background:#f0f2ff;border:1px solid #d6dcfa;border-radius:4px;align-items:center;gap:.4rem;padding:.5rem 1rem;font-size:.85rem;font-weight:600;transition:all .2s;display:inline-flex}.btn-manage-users:hover{background:#e4e8ff}.empty-state{text-align:center;background:#fff;border-radius:8px;padding:4rem 2rem;box-shadow:0 2px 8px #0000001a}.empty-state i{color:#ddd;margin-bottom:1rem;font-size:4rem}.empty-state h2{color:#2c3e50;margin-bottom:.5rem}.empty-state p{color:#666;margin-bottom:2rem}.loading{text-align:center;color:#667eea;background:#fff;border-radius:8px;padding:3rem;font-size:1.1rem}.alert{border-radius:4px;margin-bottom:1.5rem;padding:1rem}.alert-error{color:#721c24;background:#f8d7da;border:1px solid #f5c6cb}.alert-success{color:#155724;background:#d4edda;border:1px solid #c3e6cb}.breadcrumb-link{color:#667eea;cursor:pointer;background:0 0;border:none;padding:0;font-size:.9rem;font-weight:600}.breadcrumb-link:hover{text-decoration:underline}.checkmark-toggle{cursor:pointer;background:#fff;border:1px solid #ccc;border-radius:4px;justify-content:center;align-items:center;width:22px;height:22px;transition:all .2s;display:inline-flex}.checkmark-toggle.checked{color:#fff;background:#667eea;border-color:#667eea}.checkmark-toggle:disabled{cursor:not-allowed;opacity:.5}.permission-cell{text-align:center}.modal-overlay{z-index:1000;background:#00000080;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal-content{background:#fff;border-radius:8px;width:90%;max-width:600px;max-height:90vh;animation:.3s slideIn;overflow-y:auto;box-shadow:0 10px 40px #0003}.modal-header{border-bottom:1px solid #eee;justify-content:space-between;align-items:center;padding:1.5rem;display:flex}.modal-header h2{color:#2c3e50;margin:0;font-size:1.5rem}.btn-close{color:#666;cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;width:30px;height:30px;padding:0;font-size:1.5rem;transition:color .2s;display:flex}.btn-close:hover{color:#333}.modal-body{padding:1.5rem}.form-group{margin-bottom:1rem}.form-group label{color:#333;margin-bottom:.5rem;font-size:.95rem;font-weight:600;display:block}.form-group input,.form-group select{border:1px solid #ddd;border-radius:4px;width:100%;padding:.75rem;font-family:inherit;font-size:1rem;transition:border-color .3s}.form-group select{padding-right:2.4rem}.form-group input:focus,.form-group select:focus{border-color:#667eea;outline:none;box-shadow:0 0 0 3px #667eea1a}.form-group.checkbox{align-items:center;margin-bottom:1rem;display:flex}.form-group.checkbox label{cursor:pointer;align-items:center;gap:.75rem;margin:0;display:flex}.form-group.checkbox input{cursor:pointer;width:auto;margin:0}.permission-checkboxes{gap:1.5rem;margin-bottom:1rem;display:flex}.modal-actions{border-top:1px solid #eee;justify-content:flex-end;gap:1rem;margin-top:1.5rem;padding-top:1rem;display:flex}.btn{cursor:pointer;border:none;border-radius:4px;padding:.75rem 1.5rem;font-size:1rem;font-weight:600;transition:all .3s}.btn-primary{color:#fff;background:linear-gradient(to bottom right,#4886da,#2c2873);align-items:center;gap:.5rem;display:inline-flex}.btn-primary:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 4px 12px #667eea4d}.btn-primary:disabled{opacity:.7;cursor:not-allowed}.btn-secondary{color:#fff;background:#6c757d}.btn-secondary:hover{background:#5a6268}.btn.btn-danger{color:#fff;background:#dc3545}.btn.btn-danger:hover:not(:disabled){background:#c82333}.btn.btn-danger:disabled{opacity:.7;cursor:not-allowed}.btn-icon{color:#667eea;cursor:pointer;background:0 0;border:none;padding:.5rem;font-size:1rem;transition:all .2s}.btn-icon:hover{color:#764ba2;transform:scale(1.1)}.btn-icon.btn-danger{color:#dc3545}.btn-icon.btn-danger:hover{color:#c82333}@media (width<=768px){.sites-header{flex-direction:column;align-items:flex-start;gap:1rem}.sites-table-container{overflow-x:auto}.modal-content{width:95%}.modal-actions{flex-direction:column-reverse}.btn{width:100%}}.sites-form-section{margin:20px 0 4px;font-size:1rem}.sites-form-hint{color:#6b7280;margin:0 0 10px;font-size:.85rem}.sites-db-missing{color:#b45309}.sites-checkbox-label{align-items:center;gap:6px;font-weight:400;display:flex}.dashboard{background-color:#f8f9fa;flex-direction:column;min-height:100vh;display:flex}.topnav{color:#fff;background:linear-gradient(to bottom right,#4886da,#2c2873);justify-content:space-between;align-items:center;gap:2rem;padding:.75rem 1.5rem;display:flex;box-shadow:0 2px 10px #0000001a}.topnav-admin-mode{background:linear-gradient(to bottom right,#e74c3c,#7b1f1f)}.topnav-left{align-items:center;gap:1rem;display:flex}.navbar-brand{color:#fff;font-size:1.3rem;font-weight:700;text-decoration:none}.topnav-site-name{text-align:center;color:#fff;white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:1.1rem;font-weight:600;overflow:hidden}.site-switcher-dropdown{flex:1;justify-content:center;display:flex}.site-switcher-toggle{color:#fff;align-items:center;gap:.5rem;max-width:320px;font-size:1.1rem;font-weight:600;display:flex}.site-switcher-toggle span{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.site-switcher-toggle i{opacity:.8;font-size:.8rem}.site-switcher-menu{min-width:260px;max-height:380px;padding:.5rem 0;left:50%;right:auto;overflow-y:auto;transform:translate(-50%)}.site-switcher-search{box-sizing:border-box;border:1px solid #ddd;border-radius:4px;width:calc(100% - 1.5rem);margin:0 .75rem .4rem;padding:.5rem .65rem;font-size:.9rem}.site-switcher-search:focus{border-color:#4886da;outline:none}.site-switcher-divider{border-top:1px solid #eee;margin:.4rem 0}.site-switcher-menu a i{text-align:center;color:#999;width:1.1rem;margin-right:.4rem}.site-switcher-menu a.active{color:#4886da;font-weight:600}.site-switcher-empty{color:#999;padding:.75rem 1rem;font-size:.85rem}.topnav-right{align-items:center;gap:1rem;display:flex}.dropdown{position:relative}.dropdown-toggle{color:#fff;cursor:pointer;background:0 0;border:none;padding:.5rem;font-size:1.25rem}.user-menu-avatar{object-fit:cover;vertical-align:middle;border-radius:50%;width:28px;height:28px}.form-group label.btn-primary,.form-group label.btn-primary i{color:#fff}.switch{width:42px;height:24px;display:inline-block;position:relative}.switch input{opacity:0;width:0;height:0}.switch-slider{cursor:pointer;background:#ccc;border-radius:24px;transition:background .2s;position:absolute;inset:0}.switch-slider:before{content:"";background:#fff;border-radius:50%;width:18px;height:18px;transition:transform .2s;position:absolute;bottom:3px;left:3px}.switch input:checked+.switch-slider{background:linear-gradient(to bottom right,#4886da,#2c2873)}.switch input:checked+.switch-slider:before{transform:translate(18px)}.dropdown-menu{z-index:1000;background:#fff;border-radius:4px;min-width:150px;display:none;position:absolute;top:100%;right:0;box-shadow:0 4px 12px #00000026}.dropdown:hover .dropdown-menu,.dropdown-menu-open{display:block}.dropdown-menu a{color:#333;padding:.75rem 1rem;text-decoration:none;transition:background .3s;display:block}.dropdown-menu a:hover{background:#f8f9fa}.dropdown-menu hr{border:none;border-top:1px solid #eee;margin:.5rem 0}.env-dropdown-toggle{text-transform:capitalize;border:1px solid #fff6;border-radius:4px;align-items:center;gap:.5rem;padding:.4rem .75rem;font-size:.95rem;display:flex}.env-dropdown-toggle i{font-size:.75rem}.env-dropdown .dropdown-menu a{text-transform:capitalize}.env-dropdown .dropdown-menu a.active{font-weight:600}.env-text-production{color:#2ecc71}.env-text-staging{color:#f1c40f}.env-switch-overlay{z-index:2000;background:#00000080;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.env-switch-modal{color:#2c3e50;background:#fff;border-radius:8px;align-items:center;gap:.75rem;padding:2rem 3rem;font-size:1.1rem;font-weight:600;display:flex;box-shadow:0 10px 40px #0003}.env-switch-modal i{color:#4886da;font-size:1.25rem}.dashboard-container{flex:1;display:flex;overflow:hidden}.sidebar{--sidebar-width:225px;--sidebar-width-collapsed:64px;width:var(--sidebar-width);color:#fff;background:#2c3e50;flex-direction:column;flex-shrink:0;transition:width .25s;display:flex;position:relative;overflow:hidden auto}.sidebar.closed{width:var(--sidebar-width-collapsed)}.sidebar.closed .menu-heading,.sidebar.closed .menu-item span,.sidebar.closed .sidebar-edge-toggle span,.sidebar.closed .sidenav-footer{display:none}.sidebar.closed .menu-item{justify-content:center;padding:.75rem}.sidebar-edge-toggle{color:#ffffffd9;cursor:pointer;background:0 0;border:none;border-bottom:1px solid #ffffff1a;align-items:center;gap:.75rem;width:100%;padding:.75rem 1.5rem;font-size:.9rem;transition:background .2s,color .2s;display:flex}.sidebar.closed .sidebar-edge-toggle{justify-content:center;padding:.75rem}.sidebar-edge-toggle i{text-align:center;flex-shrink:0;width:1.1rem}.sidebar-edge-toggle:hover{color:#fff;background:#ffffff1a}.sidenav-menu{padding:.5rem 0 1rem}.menu-section{margin-bottom:1rem}.menu-heading{text-transform:uppercase;color:#ffffff80;white-space:nowrap;padding:1rem 1.5rem .5rem;font-size:.75rem;font-weight:700}.menu-item{color:#fffc;cursor:pointer;text-align:left;white-space:nowrap;background:0 0;border:none;border-left:3px solid #0000;align-items:center;gap:.75rem;width:100%;padding:.75rem 1.5rem;font-size:1rem;text-decoration:none;transition:all .2s;display:flex}.menu-item i:first-child{text-align:center;flex-shrink:0;width:1.1rem}.menu-item:hover{color:#fff;background:#ffffff1a}.menu-item.active{color:#fff;background:#4886da33;border-left-color:#4886da}.menu-item:disabled{color:#ffffff59;cursor:not-allowed}.menu-item:disabled:hover{color:#ffffff59;background:0 0}.menu-item i:last-child{margin-left:auto;transition:transform .3s}.menu-item.expanded i:last-child{transform:rotate(180deg)}.submenu{padding:0}.submenu a{color:#ffffffb3;padding:.5rem 1.5rem .5rem 3rem;font-size:.9rem;text-decoration:none;transition:color .3s;display:block}.submenu a:hover{color:#fff}.sidebar-item-tooltip{color:#5c4a00;white-space:nowrap;z-index:2000;pointer-events:none;background:#fff9db;border:1px solid #f5e08a;border-radius:6px;padding:.4rem .75rem;font-size:.85rem;font-weight:600;position:fixed;box-shadow:0 6px 16px #0003}.sidenav-footer{color:#ffffffb3;border-top:1px solid #ffffff1a;padding:1.5rem;font-size:.85rem}.small{font-size:.75rem}.main-content{flex-direction:column;flex:1;padding:10px 20px 0;display:flex;overflow-y:auto}.container{flex-direction:column;flex:1;min-height:0;padding:0;display:flex}.container h1{color:#2c3e50;margin-bottom:2rem;font-weight:700}.breadcrumb{background-color:#0000;margin-bottom:2rem;padding:0}.breadcrumb-item{color:#667eea}.stats-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1.5rem;margin-bottom:2rem;display:grid}.stat-card{text-align:center;color:#fff;border-radius:8px;padding:1.5rem}.stat-card.primary{background:linear-gradient(to bottom right,#4886da,#2c2873)}.stat-card.success{background:linear-gradient(135deg,#11998e 0%,#38ef7d 100%)}.stat-card.warning{background:linear-gradient(135deg,#f093fb 0%,#f5576c 100%)}.stat-card.info{background:linear-gradient(135deg,#4facfe 0%,#00f2fe 100%)}.stat-value{margin-bottom:.5rem;font-size:2rem;font-weight:700}.stat-label{opacity:.9;font-size:.9rem}.cards-grid{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1.5rem;margin-bottom:2rem;display:grid}.card{background:#fff;border:none;border-radius:8px;overflow:hidden;box-shadow:0 2px 8px #0000001a}.card-header{color:#333;background-color:#f8f9fa;border-bottom:1px solid #dee2e6;align-items:center;gap:.5rem;padding:1rem 1.5rem;font-weight:600;display:flex}.card-body{padding:1.5rem}.text-muted{color:#6c757d}.activity-list{padding:0;list-style:none}.activity-list li{color:#555;padding:.5rem 0;font-size:.9rem}.activity-list li:not(:last-child){border-bottom:1px solid #eee}.data-table{border-collapse:collapse;width:100%;font-size:.9rem}.data-table thead{background-color:#f8f9fa}.data-table th{text-align:left;color:#555;border-bottom:2px solid #dee2e6;padding:.75rem 1rem;font-weight:600}.data-table td{border-bottom:1px solid #dee2e6;padding:.75rem 1rem}.data-table tbody tr:hover{background-color:#f8f9fa}.badge{border-radius:20px;padding:.25rem .75rem;font-size:.8rem;font-weight:600;display:inline-block}.badge.success{color:#155724;background:#d4edda}.badge.info{color:#0c5460;background:#d1ecf1}.badge.warning{color:#856404;background:#fff3cd}.badge.danger{color:#721c24;background:#f8d7da}.dashboard-example-note{color:#dc3545;margin-bottom:.75rem;font-weight:600}.perf-success{color:#28a745;margin-left:auto;font-size:.9rem;font-weight:600}.perf-chart{align-items:flex-end;gap:3px;height:160px;margin-top:.5rem;display:flex}.perf-col{flex-direction:column;flex:1;justify-content:flex-end;align-items:stretch;min-width:0;height:100%;display:flex}.perf-count{text-align:center;color:#6c757d;height:1rem;font-size:.6rem}.perf-bar{border-radius:4px 4px 0 0;flex-direction:column;min-height:0;display:flex;overflow:hidden}.perf-seg{min-height:0}.perf-col{cursor:default}.perf-col:hover .perf-bar{filter:brightness(1.12)}.perf-tooltip{color:#f1f2f6;text-align:left;z-index:1000;pointer-events:none;background:#1f2430;border-radius:8px;min-width:220px;padding:.75rem .9rem;font-weight:400;position:fixed;box-shadow:0 8px 24px #00000040}.perf-tooltip-title{border-bottom:1px solid #ffffff26;margin-bottom:.5rem;padding-bottom:.4rem;font-size:.9rem;font-weight:600}.perf-tooltip-row{justify-content:space-between;gap:1rem;font-size:.8rem;line-height:1.6;display:flex}.perf-tooltip-key{color:#9aa0ac}.perf-tooltip-succeeded{color:#4ade80;font-weight:600}.perf-tooltip-failed{color:#f87171;font-weight:600}.perf-tooltip-other{color:#93c5fd;font-weight:600}.perf-label{text-align:center;white-space:nowrap;color:#6c757d;height:1rem;margin-top:.25rem;font-size:.65rem;overflow:visible}.perf-succeeded{background:#28a745}.perf-failed{background:#dc3545}.perf-other{background:#17a2b8}.perf-legend{color:#6c757d;flex-wrap:wrap;gap:1rem;margin-top:.75rem;font-size:.8rem;display:flex}.perf-dot{border-radius:2px;width:10px;height:10px;margin-right:.3rem;display:inline-block}.footer{background-color:#f8f9fa;border-top:1px solid #dee2e6;margin-top:auto}.footer-content{justify-content:space-between;align-items:center;padding:1rem 2rem;font-size:.9rem;display:flex}.footer-content a{color:#667eea;margin:0 .5rem;text-decoration:none}.footer-content a:hover{text-decoration:underline}@media (width<=768px){.sidebar{z-index:999;height:100vh;position:fixed;top:0;left:0}.stats-grid,.cards-grid{grid-template-columns:1fr}.topnav{flex-wrap:wrap}}html[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--d-page:#1b1c1f;--d-surface:#26282c;--d-raised:#2f3237;--d-hover:#33363c;--d-border:#3c4046;--d-text:#e4e6eb;--d-muted:#9aa0ac;--d-accent:#8b9cff}html[data-theme=dark] body,html[data-theme=dark] .dashboard{background-color:var(--d-page);color:var(--d-text)}html[data-theme=dark] input,html[data-theme=dark] textarea,html[data-theme=dark] select,html[data-theme=dark] .form-group input,html[data-theme=dark] .form-group select,html[data-theme=dark] .form-group textarea,html[data-theme=dark] .databases-search input,html[data-theme=dark] .pipelines-search input,html[data-theme=dark] .sources-search input,html[data-theme=dark] .sites-search input,html[data-theme=dark] .site-switcher-search,html[data-theme=dark] .run-param-row input,html[data-theme=dark] .reader-opts-table td input,html[data-theme=dark] .query-toolbar-group select,html[data-theme=dark] .query-tables-search-wrap input,html[data-theme=dark] .sites-table td select,html[data-theme=dark] .preview-table-select{background-color:var(--d-raised);color:var(--d-text);border-color:var(--d-border)}html[data-theme=dark] input::placeholder,html[data-theme=dark] textarea::placeholder{color:#7b818c}html[data-theme=dark] select:hover:not(:disabled){border-color:#5a606a}html[data-theme=dark] select option{background:var(--d-raised);color:var(--d-text)}html[data-theme=dark] select:disabled,html[data-theme=dark] input:disabled,html[data-theme=dark] textarea:disabled,html[data-theme=dark] .run-param-row input:disabled,html[data-theme=dark] .sites-table td select:disabled{color:#6c727d;border-color:var(--d-border);background-color:#222428}html[data-theme=dark] input:focus,html[data-theme=dark] textarea:focus,html[data-theme=dark] select:focus{border-color:var(--d-accent)}html[data-theme=dark] .container h1,html[data-theme=dark] .databases-header h1,html[data-theme=dark] .pipelines-header h1,html[data-theme=dark] .sources-header h1,html[data-theme=dark] .sites-header h1,html[data-theme=dark] .query-page-header h1,html[data-theme=dark] .pipeline-detail-title h1,html[data-theme=dark] .card-body h3,html[data-theme=dark] .empty-state h2,html[data-theme=dark] .modal-header h2{color:var(--d-text)}html[data-theme=dark] .text-muted,html[data-theme=dark] .description,html[data-theme=dark] .detail-row .label,html[data-theme=dark] .empty-state p,html[data-theme=dark] .pipeline-detail-description,html[data-theme=dark] .form-hint,html[data-theme=dark] .form-section-hint,html[data-theme=dark] .sites-form-hint,html[data-theme=dark] .perf-count,html[data-theme=dark] .perf-label,html[data-theme=dark] .perf-legend,html[data-theme=dark] .pagination-info,html[data-theme=dark] .preview-modal-path,html[data-theme=dark] .query-status-bar,html[data-theme=dark] .runs-dropdown-empty,html[data-theme=dark] .runs-dropdown-clear,html[data-theme=dark] .log-entry-date,html[data-theme=dark] .inputs-table th,html[data-theme=dark] .btn-close,html[data-theme=dark] .location-cell,html[data-theme=dark] .table-cell,html[data-theme=dark] .schedule-cell,html[data-theme=dark] .date-cell,html[data-theme=dark] .files-table .size-cell,html[data-theme=dark] .file-dropzone-placeholder,html[data-theme=dark] .file-dropzone-size,html[data-theme=dark] .signup-link{color:var(--d-muted)}html[data-theme=dark] .btn-close:hover,html[data-theme=dark] .form-group label,html[data-theme=dark] .detail-row .value,html[data-theme=dark] .activity-list li,html[data-theme=dark] .pipelines-table td,html[data-theme=dark] .sources-table td,html[data-theme=dark] .sites-table td,html[data-theme=dark] .query-results-table td,html[data-theme=dark] .query-toolbar-group label,html[data-theme=dark] .reader-opts-inline,html[data-theme=dark] .reader-opts-sublabel,html[data-theme=dark] .upload-progress-label,html[data-theme=dark] .upload-queue-pending-list li,html[data-theme=dark] .log-entry-text,html[data-theme=dark] .login-container h2,html[data-theme=dark] .query-tables-item,html[data-theme=dark] .dropdown-menu a{color:var(--d-text)}html[data-theme=dark] .form-section h3,html[data-theme=dark] .breadcrumb-item,html[data-theme=dark] .breadcrumb-link,html[data-theme=dark] .footer-content a,html[data-theme=dark] .name-cell i,html[data-theme=dark] .btn-icon,html[data-theme=dark] .loading,html[data-theme=dark] .signup-link a{color:var(--d-accent)}html[data-theme=dark] .btn-icon:hover{color:#b9a4ff}html[data-theme=dark] .btn-icon.btn-danger,html[data-theme=dark] .status-error-cell .btn-icon,html[data-theme=dark] .text-unidentified,html[data-theme=dark] .text-error,html[data-theme=dark] .dashboard-example-note{color:#ff6b7a}html[data-theme=dark] .card,html[data-theme=dark] .database-card,html[data-theme=dark] .empty-state,html[data-theme=dark] .loading,html[data-theme=dark] .pipelines-table-container,html[data-theme=dark] .sources-table-container,html[data-theme=dark] .sites-table-container,html[data-theme=dark] .modal-content,html[data-theme=dark] .login-container,html[data-theme=dark] .env-switch-modal,html[data-theme=dark] .dropdown-menu,html[data-theme=dark] .query-workspace{background:var(--d-surface);color:var(--d-text)}html[data-theme=dark] .modal-overlay,html[data-theme=dark] .env-switch-overlay{background:#000000b3}html[data-theme=dark] .card-header,html[data-theme=dark] .footer,html[data-theme=dark] .data-table thead,html[data-theme=dark] .pipelines-table thead,html[data-theme=dark] .sources-table thead,html[data-theme=dark] .sites-table thead,html[data-theme=dark] .query-results-table thead,html[data-theme=dark] .query-tabs-bar,html[data-theme=dark] .query-toolbar,html[data-theme=dark] .preview-table-meta,html[data-theme=dark] .preview-table th{background:var(--d-raised);color:var(--d-text)}html[data-theme=dark] .card-header{color:var(--d-text)}html[data-theme=dark] .data-table th,html[data-theme=dark] .pipelines-table th,html[data-theme=dark] .sources-table th,html[data-theme=dark] .sites-table th,html[data-theme=dark] .query-results-table th,html[data-theme=dark] .reader-opts-table th,html[data-theme=dark] .activity-list li:not(:last-child){color:#c3c7d0}html[data-theme=dark] .data-table tbody tr:hover,html[data-theme=dark] .pipelines-table tbody tr:hover,html[data-theme=dark] .sources-table tbody tr:hover,html[data-theme=dark] .sites-table tbody tr:hover,html[data-theme=dark] .query-results-table tbody tr:hover,html[data-theme=dark] .dropdown-menu a:hover,html[data-theme=dark] .runs-dropdown-item:hover,html[data-theme=dark] .pipeline-picker-option:hover,html[data-theme=dark] .category-picker-option:hover,html[data-theme=dark] .reader-picker-option:hover,html[data-theme=dark] .dag-context-menu button:hover:not(:disabled),html[data-theme=dark] .query-tab:hover,html[data-theme=dark] .query-tab-add:hover,html[data-theme=dark] .query-tables-item:hover,html[data-theme=dark] .upload-queue-pending-list li:hover,html[data-theme=dark] .login-btn:hover,html[data-theme=dark] .cta-btn:hover{background:var(--d-hover)}html[data-theme=dark] .card-header,html[data-theme=dark] .footer,html[data-theme=dark] .data-table th,html[data-theme=dark] .data-table td,html[data-theme=dark] .pipelines-table thead,html[data-theme=dark] .pipelines-table tbody tr,html[data-theme=dark] .sources-table thead,html[data-theme=dark] .sources-table tbody tr,html[data-theme=dark] .sites-table th,html[data-theme=dark] .sites-table tbody tr,html[data-theme=dark] .query-results-table th,html[data-theme=dark] .query-results-table td,html[data-theme=dark] .query-tabs-bar,html[data-theme=dark] .query-toolbar,html[data-theme=dark] .modal-header,html[data-theme=dark] .modal-actions,html[data-theme=dark] .details,html[data-theme=dark] .dropdown-menu hr,html[data-theme=dark] .site-switcher-divider,html[data-theme=dark] .runs-dropdown-clear,html[data-theme=dark] .log-tabs,html[data-theme=dark] .log-entry,html[data-theme=dark] .inputs-table th,html[data-theme=dark] .inputs-table td,html[data-theme=dark] .reader-opts-table th,html[data-theme=dark] .preview-table-wrapper,html[data-theme=dark] .preview-table-meta,html[data-theme=dark] .preview-table th,html[data-theme=dark] .preview-table td,html[data-theme=dark] .query-tables-item{border-color:var(--d-border)}html[data-theme=dark] .query-tables-dropdown,html[data-theme=dark] .pipeline-picker-dropdown,html[data-theme=dark] .category-picker-dropdown,html[data-theme=dark] .reader-picker-dropdown,html[data-theme=dark] .runs-dropdown-menu,html[data-theme=dark] .dag-context-menu,html[data-theme=dark] .event-json{background:var(--d-raised);border-color:var(--d-border);color:var(--d-text)}html[data-theme=dark] .runs-dropdown-item,html[data-theme=dark] .dag-context-menu button{color:var(--d-text)}html[data-theme=dark] .dag-context-menu button:disabled{color:#646a74}html[data-theme=dark] .runs-dropdown-item-active{background-color:#8b9cff29}html[data-theme=dark] .pipeline-picker-empty,html[data-theme=dark] .category-picker-empty,html[data-theme=dark] .reader-picker-empty,html[data-theme=dark] .query-tables-empty,html[data-theme=dark] .query-no-results,html[data-theme=dark] .query-null,html[data-theme=dark] .query-tab-close,html[data-theme=dark] .site-switcher-empty{color:#8a909b}html[data-theme=dark] .empty-state i{color:#4a4e56}html[data-theme=dark] .connection-type-option{background:var(--d-raised);border-color:var(--d-border);color:var(--d-text)}html[data-theme=dark] .connection-type-option:hover{border-color:#5b63a8}html[data-theme=dark] .connection-type-option.selected,html[data-theme=dark] .btn-manage-users{color:var(--d-accent);background:#8b9cff29;border-color:#8b9cff73}html[data-theme=dark] .btn-manage-users:hover{background:#8b9cff42}html[data-theme=dark] .alert-error,html[data-theme=dark] .test-result-error,html[data-theme=dark] .badge.danger,html[data-theme=dark] .status-badge.status-suspended,html[data-theme=dark] .dag-run-outcome-failed,html[data-theme=dark] .log-entry-status-failed,html[data-theme=dark] .error-message{color:#ff8a96;background:#dc35452e;border-color:#dc354566}html[data-theme=dark] .alert-success,html[data-theme=dark] .test-result-success,html[data-theme=dark] .badge.success,html[data-theme=dark] .badge-active,html[data-theme=dark] .detail-row .badge,html[data-theme=dark] .status-badge.status-active,html[data-theme=dark] .dag-run-outcome-succeeded,html[data-theme=dark] .log-entry-status-succeeded{color:#5fd37b;background:#28a74533;border-color:#28a74566}html[data-theme=dark] .badge.info,html[data-theme=dark] .role-badge.role-site_admin{color:#6fd6e8;background:#17a2b833}html[data-theme=dark] .badge.warning,html[data-theme=dark] .role-badge.role-admin{color:#ffd45c;background:#ffc1072e}html[data-theme=dark] .status-badge.status-disabled,html[data-theme=dark] .role-badge.role-user,html[data-theme=dark] .log-entry-status-queued,html[data-theme=dark] .badge-builtin{color:#c3c7d0;background:#a0a6b233}html[data-theme=dark] .btn-primary:disabled{color:#7b818c;background:#3a3d44}html[data-theme=dark] .checkmark-toggle{background:var(--d-raised);border-color:#50545c}html[data-theme=dark] .checkmark-toggle.checked{background:#667eea;border-color:#667eea}html[data-theme=dark] .switch-slider{background:#50545c}html[data-theme=dark] .file-dropzone{background:var(--d-raised);border-color:#50545c}html[data-theme=dark] .file-dropzone-has-file{background:#28a7451f;border-color:#28a745}html[data-theme=dark] .upload-progress-bar{background:#3a3d44}html[data-theme=dark] .query-tab{background:var(--d-surface);border-color:var(--d-border);color:var(--d-muted)}html[data-theme=dark] .query-tab.active{background:var(--d-page);color:var(--d-text)}html[data-theme=dark] .query-tab-add{border-color:var(--d-border);color:var(--d-accent)}html[data-theme=dark] .query-resizer{background:linear-gradient(#34373d 0%,#3f434a 50%,#34373d 100%)}html[data-theme=dark] .query-editor-wrap{border-color:var(--d-border);background:#0d0e10}html[data-theme=dark] .query-editor{color:#0000;background:0 0;border:none}html[data-theme=dark] .sidebar{background:#14151a}html[data-theme=dark] .sidebar-item-tooltip{color:#f1dd8a;background:#3b3515;border-color:#6b5d1a}html[data-theme=dark] .site-switcher-menu a i,html[data-theme=dark] .perf-label{color:var(--d-muted)}html[data-theme=dark] .permission-info-popover{border:1px solid var(--d-border);background:#14151a}html[data-theme=dark] .permission-info-popover:before{border-bottom-color:#14151a}html[data-theme=dark] .login-btn,html[data-theme=dark] .cta-btn{background:var(--d-surface);color:var(--d-accent)}html[data-theme=dark] .dag-graph{background:var(--d-surface)}html[data-theme=dark] .dag-node{color:var(--d-text);background-color:#2b2e45;border-color:#7d8cf0}html[data-theme=dark] .dag-node-sql{background-color:#3498db33;border-color:#3d9be0}html[data-theme=dark] .dag-node-python{background-color:#be875a33;border-color:#c08a5c}html[data-theme=dark] .dag-node-bash{background-color:#828c9633;border-color:#8a949e}html[data-theme=dark] .dag-node-pipeline{background-color:#8c5adc38;border-color:#9a6fe0}html[data-theme=dark] .dag-node-start{background-color:#19875433;border-color:#2fb872}html[data-theme=dark] .dag-node-chevron{color:#2fb872}html[data-theme=dark] .dag-start-details{background-color:var(--d-raised);color:#c3c7d0}html[data-theme=dark] .dag-run-duration,html[data-theme=dark] .dag-status-legend{background:var(--d-raised);color:#c3c7d0}html[data-theme=dark] .tree-connector-down{background-color:#565b64}html[data-theme=dark] .tree-node-wrapper:before{border-left-color:#565b64}html[data-theme=dark] .tree-node-wrapper:after{border-top-color:#565b64}html[data-theme=dark] .tree-level-add{color:#9aa7ff;background-color:#0000;border-color:#7d8cf0}html[data-theme=dark] .tree-level-add:hover:not(:disabled){background-color:#7d8cf024}html[data-theme=dark] .tree-level-add:disabled{color:#6c727d;border-color:#4a4e56}html[data-theme=dark] .extra-parents-chip{color:#aab4ff;background:#8b9cff2e}html[data-theme=dark] .extra-parents-chip-primary{color:#fff;background:#4c51bf}html[data-theme=dark] .dag-node.run-status-queued{border-color:#c3c7d0}html[data-theme=dark] .dag-node.run-status-running{border-color:#00bcd4}html[data-theme=dark] .dag-node.run-status-retrying{border-color:#ffd60a}html[data-theme=dark] .dag-node.run-status-failed{border-color:#dc3545}html[data-theme=dark] .dag-node.run-status-succeeded{border-color:#198754}html[data-theme=dark] .dag-node.run-status-none,html[data-theme=dark] .dag-node.run-status-pending{background-clip:padding-box;border-color:#0000;outline-color:#50545c}html[data-theme=dark] .run-status-none:before,html[data-theme=dark] .run-status-pending:before{border-color:#5a606a}html[data-theme=dark] .run-status-dot.run-status-none,html[data-theme=dark] .run-status-dot.run-status-pending{background-color:#3c4046;border-color:#6b7080}html[data-theme=dark] .run-status-dot{border-color:#fff3}html[data-theme=dark] .log-tab{background:var(--d-raised);border-color:var(--d-border);color:#c3c7d0}html[data-theme=dark] .log-tab:hover{border-color:#6b7080}html[data-theme=dark] .log-tab-active{border-color:var(--d-accent);color:var(--d-accent);background:#8b9cff29}html[data-theme=dark] .log-entry-status-running{color:#4dd8ea;background:#00bcd433}html[data-theme=dark] .log-entry-status-retrying{color:#ffd84d;background:#ffd60a2e}html[data-theme=dark] .step-type-sql{color:#7ab0ff;background-color:#0d6efd33}html[data-theme=dark] .step-type-python{color:#5fd37b;background-color:#19875433}html[data-theme=dark] .help-title{color:var(--d-text)}html[data-theme=dark] .help-nav,html[data-theme=dark] .help-content{background:var(--d-surface);border-color:var(--d-border);color:var(--d-text)}html[data-theme=dark] .help-nav-item{color:var(--d-text)}html[data-theme=dark] .help-nav-item i{color:var(--d-accent)}html[data-theme=dark] .help-nav-item:hover{background:var(--d-hover)}html[data-theme=dark] .help-nav-item.active{color:var(--d-accent);background:#8b9cff2e}html[data-theme=dark] .help-nav-item.active i{color:var(--d-accent)}html[data-theme=dark] .help-content h2{border-bottom-color:var(--d-border)}html[data-theme=dark] .help-content a{color:var(--d-accent)}html[data-theme=dark] .help-content code{background:var(--d-raised);color:var(--d-text)}html[data-theme=dark] .help-content .help-snippet code{color:#e6e8f5;background:0 0}html[data-theme=dark] .help-table th{background:var(--d-raised)}html[data-theme=dark] .help-table th,html[data-theme=dark] .help-table td{border-bottom-color:var(--d-border)}html[data-theme=dark] .help-note{border-left-color:var(--d-accent);background:#8b9cff1f}html[data-theme=dark] .help-note-warn{background:#e0a10024;border-left-color:#e0a100}html[data-theme=dark] .help-snippet,html[data-theme=dark] .dag-help-diagram{border:1px solid var(--d-border);background:#141519}html[data-theme=dark] .help-snippet-bar{background:#1d1f25}html[data-theme=dark] .dag-help-body.help-content{background:0 0}html[data-theme=dark] .dag-info-btn{color:var(--d-accent);border-left-color:var(--d-border)}html[data-theme=dark] .dag-info-btn:hover{color:#b4bfff}html[data-theme=dark] .help-header,html[data-theme=dark] .modal-header.dag-help-header{background:linear-gradient(90deg,#8b9cff47,#8b9cff1a);border-color:#8b9cff59}html[data-theme=dark] .dag-help-body.help-content h2{color:#fff;border-left-color:var(--d-accent);background:linear-gradient(90deg,#667eea8c,#667eea1f)}html[data-theme=dark] .dag-help-body.help-content b{color:#aab6ff}html[data-theme=dark] .dag-help-body.help-content li::marker{color:var(--d-accent)}html[data-theme=dark] .dag-help-body.help-content code{color:#c6cdff;background:#8b9cff2e}html[data-theme=dark] .dag-help-body.help-content .help-table th{color:#c6cdff;background:#8b9cff2e;border-bottom-color:#8b9cff66}html[data-theme=dark] .query-pagination,html[data-theme=dark] .preview-pagination{color:#ddd;background:#2a2a2a;border-top-color:#444}html[data-theme=dark] .query-pagination button,html[data-theme=dark] .preview-pagination button,html[data-theme=dark] .page-input{color:#ddd;background:#333;border-color:#888}html[data-theme=dark] .preview-table-overlay{background:#00000080}
