:root{--color-primary: #3b5bdb;--color-primary-hover: #2f4ac0;--color-primary-soft: #eef2ff;--color-primary-text: #364fc7;--color-danger: #e03131;--color-danger-hover: #c92a2a;--color-danger-soft: #ffe3e3;--color-success: #2b8a3e;--color-success-soft: #d3f9d8;--color-warning: #b45309;--color-warning-soft: #fff3bf;--color-surface: #fff;--color-surface-muted: #f8fafc;--color-bg: #f4f6fb;--color-control-bg: #eef2f7;--color-control-bg-hover: #e8edf4;--color-border: #e2e8f0;--color-border-strong: #cbd5e1;--color-text: #1a1a2e;--color-text-secondary: #475569;--color-muted: #868e96;--color-placeholder: #94a3b8;--radius-sm: 8px;--radius-md: 10px;--radius-lg: 12px;--radius-xl: 14px;--radius-pill: 999px;--radius-card: 12px;--shadow-sm: 0 1px 2px rgba(15, 23, 42, .06);--shadow-md: 0 8px 24px rgba(0, 0, 0, .12);--shadow-lg: 0 16px 48px rgba(0, 0, 0, .2);--shadow-focus: 0 0 0 2px rgba(59, 91, 219, .18);--control-height: 2.35rem;--control-height-sm: 2rem;--spacing-page: 1.5rem;--font-size-sm: .875rem;--font-size-base: .95rem;--transition-fast: .15s ease;font-family:Segoe UI,system-ui,sans-serif;line-height:1.5;color:var(--color-text);background:var(--color-bg)}.ui-control,.form-group input:not([type=checkbox]):not([type=radio]),.form-group select,.form-group textarea,.mapping-select,.admin-limit-input,.result-toolbar-input{min-height:var(--control-height);border:none;border-radius:var(--radius-md);font-size:var(--font-size-sm);line-height:1.25;color:var(--color-text);background:var(--color-control-bg);transition:background var(--transition-fast),box-shadow var(--transition-fast)}.ui-control::placeholder,.form-group input::placeholder,.result-toolbar-input::placeholder{color:var(--color-placeholder)}.ui-control:hover,.form-group input:not([type=checkbox]):not([type=radio]):hover,.form-group select:hover,.form-group textarea:hover,.mapping-select:hover,.admin-limit-input:hover,.result-toolbar-input:hover{background:var(--color-control-bg-hover)}.ui-control:focus,.form-group input:not([type=checkbox]):not([type=radio]):focus,.form-group select:focus,.form-group textarea:focus,.mapping-select:focus,.admin-limit-input:focus,.result-toolbar-input:focus{outline:none;background:var(--color-surface);box-shadow:var(--shadow-focus)}.form-group input:not([type=checkbox]):not([type=radio]),.form-group select,.form-group textarea,.mapping-select,.admin-limit-input{width:100%;padding:0 .85rem}.form-group select,.mapping-select{-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;padding-right:2.25rem;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%2364748b' d='M3 4.5L6 7.5L9 4.5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .75rem center}.ui-control-pill,.result-toolbar-input{border-radius:var(--radius-pill)}.ui-check,.settings-checkbox,.enrichment-check,.enrichment-radio,.result-settings-item{display:flex;align-items:flex-start;gap:.5rem;margin:0;font-size:var(--font-size-base);line-height:1.35;color:var(--color-text);cursor:pointer}.ui-check input,.settings-checkbox input,.enrichment-check input,.enrichment-radio input,.result-settings-item input{margin-top:.2rem;flex-shrink:0;accent-color:var(--color-primary)}.ui-limit-bar{height:.45rem;border-radius:var(--radius-pill);background:var(--color-control-bg);overflow:hidden}.ui-limit-bar-fill{height:100%;border-radius:inherit;background:var(--color-primary);transition:width var(--transition-fast)}.ui-chip,.result-settings-add-column-btn{display:inline-flex;align-items:center;border:none;border-radius:var(--radius-pill);padding:.35rem .75rem;background:var(--color-control-bg);color:var(--color-text-secondary);font-size:var(--font-size-sm);line-height:1.2;cursor:pointer;transition:background var(--transition-fast)}.ui-chip:hover,.result-settings-add-column-btn:hover{background:var(--color-control-bg-hover)}.ui-panel,.enrichment-fieldset,.result-settings-menu,.result-add-menu{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm)}.ui-hint,.page-hint,.modal-hint,.result-settings-add-columns-title{margin:0 0 .5rem;font-size:var(--font-size-sm);color:var(--color-muted);line-height:1.4}.ui-section-title,.result-settings-section-title,.enrichment-columns h3{margin:0 0 .5rem;font-size:var(--font-size-sm);font-weight:600;color:var(--color-text-secondary)}.ui-select-field{display:flex;flex-direction:column;gap:.3rem;min-width:0}.ui-select-field-label{font-size:.75rem;font-weight:600;color:var(--color-text-secondary);line-height:1.2}.ui-select,.ui-select-field select{width:100%;min-height:var(--control-height-sm);padding:0 2.25rem 0 .75rem;border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--font-size-sm);line-height:1.25;color:var(--color-text);background-color:var(--color-surface);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%2364748b' d='M3 4.5L6 7.5L9 4.5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .7rem center;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;transition:border-color var(--transition-fast),box-shadow var(--transition-fast),background-color var(--transition-fast)}.ui-select:hover:not(:disabled),.ui-select-field select:hover:not(:disabled){border-color:var(--color-border-strong)}.ui-select:focus,.ui-select-field select:focus{outline:none;border-color:var(--color-primary);box-shadow:var(--shadow-focus)}.ui-select:disabled,.ui-select-field select:disabled{opacity:.55;cursor:not-allowed}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0}a{color:var(--color-primary);text-decoration:none}a:hover{text-decoration:underline}.app-shell{display:flex;height:100vh;height:100dvh;overflow:hidden}.sidebar{flex-shrink:0;width:240px;height:100%;background:#1a1a2e;color:#fff;display:flex;flex-direction:column;padding:1.25rem 1rem;overflow:hidden}.sidebar-brand{padding:0 .5rem 1.25rem}.sidebar-brand-link{display:flex;align-items:center;color:#fff;text-decoration:none}.sidebar-brand-link:hover{text-decoration:none;opacity:.92}.app-logo{display:flex;align-items:center;gap:.65rem;min-width:0}.app-logo-mark{width:2rem;height:2rem;flex-shrink:0;display:block}.app-logo-text{font-size:1.05rem;font-weight:700;letter-spacing:-.02em;line-height:1.2}.sidebar-nav{display:flex;flex-direction:column;gap:.25rem}.sidebar-link{display:block;padding:.65rem .75rem;border-radius:8px;color:#dee2e6;text-decoration:none;font-size:.95rem;transition:background .15s,color .15s}.sidebar-link:hover{background:#ffffff14;color:#fff;text-decoration:none}.sidebar-link.active{background:#3b5bdb59;color:#fff;font-weight:600}.sidebar-link-with-icon{display:flex;align-items:center;gap:.65rem;width:100%}.sidebar-link-with-icon svg{width:1.2rem;height:1.2rem;flex-shrink:0;display:block}.sidebar-footer{margin-top:auto;padding:1rem .5rem 0;border-top:1px solid rgba(255,255,255,.12);display:flex;flex-direction:column;gap:.5rem}.sidebar-user{font-size:.85rem;color:#adb5bd;word-break:break-word}.sidebar-logout{color:#dee2e6;font-size:.9rem;text-decoration:none}.sidebar-logout:hover{color:#fff;text-decoration:underline}.app-main{flex:1;min-width:0;min-height:0;overflow:hidden;display:flex;flex-direction:column}.app-page{flex:1;min-height:0;max-width:960px;width:100%;margin:0;padding:1.5rem;display:flex;flex-direction:column;overflow:hidden}.app-page-wide{max-width:none}.container{max-width:960px;margin:0;padding:1.5rem}.page-fill{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden;gap:1rem}.page-header{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-shrink:0}.page-title{margin:0;font-size:1.5rem;min-width:0;word-break:break-word}.page-header-actions{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center;flex-shrink:0}.page-back-link{margin:0 0 1rem}.page-hint{margin:0 0 1rem;color:var(--color-muted);font-size:.95rem}.page-default{flex:1;min-height:0}.loading-state,.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;flex:1;min-height:120px;color:var(--color-muted);text-align:center}.empty-state p{margin:0}.form-row{display:flex;gap:.5rem;flex-wrap:wrap;align-items:flex-end}.btn-row{margin-top:1rem}.form-group-grow{flex:1;min-width:200px;margin-bottom:0}.hidden-input{display:none}.card-section h2{margin:0 0 1rem}.card-section h2+.form-group,.card-section h2+form{margin-top:0}.card-subtitle{margin:1.25rem 0 .75rem;font-size:1rem}.scenario-section{margin-top:1.25rem;padding-top:1.25rem;border-top:1px solid var(--color-border)}.scenario-list{display:flex;flex-direction:column;gap:.75rem;margin-bottom:.75rem}.scenario-row{display:flex;gap:.75rem;align-items:flex-end;padding:.85rem 1rem;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface-muted)}.scenario-row-fields{flex:1;min-width:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.75rem}.scenario-field{margin-bottom:0}.scenario-field-narrow{max-width:9rem}.scenario-row-actions{display:flex;flex-shrink:0;padding-bottom:.1rem}.scenario-empty{margin:0 0 .75rem;font-size:.9rem;color:var(--color-muted)}.settings-checkbox{margin:1rem 0 0}.admin-limit-input{width:7rem}.admin-limit-hint{margin-top:.25rem;font-size:.82rem;color:var(--color-danger)}.admin-user-email{font-weight:600}.admin-user-badge{display:inline-block;margin-top:.25rem;padding:.15rem .45rem;border-radius:var(--radius-pill);background:var(--color-primary-soft);color:var(--color-primary-text);font-size:.78rem;font-weight:600}.admin-status-toggle{margin:0}.row-inactive-user{background:#fff5f5}.table-scroll-list{flex:1;min-height:0;overflow:auto}.table-row-actions{display:flex;gap:.35rem;flex-wrap:nowrap}.page-fill .card-fill{flex:1;min-height:0;overflow:auto;margin-bottom:0}.page-fill .card-static{flex-shrink:0;margin-bottom:0}.page-scroll{flex:1;min-height:0;overflow-y:auto;padding-right:.25rem}.auth-page{display:flex;align-items:center;justify-content:center;min-height:100vh;min-height:100dvh;padding:1.5rem}.auth-card{width:100%;max-width:420px;margin-bottom:0}.auth-card h1{margin-top:0}.auth-footer{margin:1rem 0 0}.card{background:var(--color-surface);border-radius:var(--radius-card);padding:var(--spacing-page);box-shadow:var(--shadow-sm);margin-bottom:1rem}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.35rem;min-height:var(--control-height);padding:0 1rem;border:none;border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:600;line-height:1;cursor:pointer;white-space:nowrap;transition:background var(--transition-fast),box-shadow var(--transition-fast),transform .1s}.btn-primary{background:var(--color-primary);color:#fff}.btn-primary:hover{background:var(--color-primary-hover)}.btn-primary:disabled{background:#9aa8e8;cursor:not-allowed}.btn-danger{background:var(--color-danger);color:#fff}.btn-danger:hover{background:var(--color-danger-hover)}.btn-danger:disabled{background:#f0a8a8;cursor:not-allowed}.btn-secondary{background:var(--color-control-bg);color:var(--color-text)}.btn-secondary:hover{background:var(--color-control-bg-hover)}.btn-secondary:disabled{background:#f1f3f5;color:#adb5bd;cursor:not-allowed}.btn-sm{min-height:var(--control-height-sm);padding:0 .75rem;font-size:.85rem}.form-group{margin-bottom:1rem}.form-group label{display:block;margin-bottom:.35rem;font-weight:600;font-size:var(--font-size-sm);color:var(--color-text-secondary)}.form-group textarea{min-height:5rem;padding-top:.65rem;padding-bottom:.65rem;resize:vertical}.error{color:var(--color-danger);font-size:var(--font-size-sm);margin-top:.5rem}.success{color:var(--color-success);font-size:var(--font-size-sm);margin-top:.5rem}.toast-viewport{position:fixed;right:1.25rem;bottom:1.25rem;z-index:1000;display:flex;flex-direction:column;gap:.5rem;max-width:min(360px,calc(100vw - 2rem));pointer-events:none}.toast{pointer-events:auto;padding:.75rem 1rem;border-radius:var(--radius-md);box-shadow:var(--shadow-md);font-size:var(--font-size-base);line-height:1.35;animation:toast-in .2s ease}.toast-success{background:var(--color-success);color:#fff}.toast-error{background:var(--color-danger);color:#fff}@keyframes toast-in{0%{opacity:0;transform:translateY(.5rem)}to{opacity:1;transform:translateY(0)}}table{width:100%;border-collapse:collapse}th,td{padding:.6rem .75rem;text-align:left;border-bottom:1px solid #e9ecef}th{font-weight:600;background:#f8f9fa}.dropzone{border:2px dashed var(--color-border-strong);border-radius:var(--radius-lg);padding:2rem;text-align:center;cursor:pointer;background:var(--color-surface-muted);color:var(--color-text-secondary);transition:border-color var(--transition-fast),background var(--transition-fast)}.dropzone:hover,.dropzone.active{border-color:var(--color-primary);background:var(--color-primary-soft)}.tag{background:var(--color-primary-soft);color:var(--color-primary-text);padding:.25rem .6rem;border-radius:var(--radius-pill);font-size:var(--font-size-sm)}.tag-list{display:flex;flex-wrap:wrap;gap:.4rem}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#1a1a2e8c;display:flex;align-items:center;justify-content:center;z-index:1000;padding:1rem}.modal{background:var(--color-surface);border-radius:var(--radius-xl);width:min(920px,100%);max-height:90vh;overflow-y:auto;padding:1.5rem;box-shadow:var(--shadow-lg)}.modal-mapping{width:min(1280px,100%)}.modal-enrichment{width:min(1100px,100%)}.enrichment-steps{display:flex;flex-wrap:wrap;gap:.5rem;margin:0 0 1rem}.enrichment-step{display:inline-flex;align-items:center;gap:.45rem;padding:.35rem .7rem;border-radius:var(--radius-pill);background:var(--color-control-bg);color:var(--color-muted);font-size:var(--font-size-sm)}.enrichment-step-active{background:var(--color-primary-soft);color:var(--color-primary-text);font-weight:600}.enrichment-step-done{background:var(--color-success-soft);color:var(--color-success)}.enrichment-step-index{display:inline-flex;align-items:center;justify-content:center;width:1.35rem;height:1.35rem;border-radius:999px;background:#ffffffbf;font-size:.75rem;font-weight:700}.enrichment-panel{margin-bottom:1rem}.enrichment-upload{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem;margin-bottom:.75rem}.enrichment-file-input{display:none}.enrichment-file-name{font-size:.9rem;color:#334155}.enrichment-options-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1rem;margin-bottom:1rem}.enrichment-fieldset{margin:0;padding:.85rem 1rem;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface-muted)}.enrichment-fieldset legend{padding:0 .35rem;font-size:var(--font-size-sm);font-weight:600;color:var(--color-text-secondary)}.enrichment-check,.enrichment-radio{display:flex;align-items:center;gap:.5rem;margin:.35rem 0;font-size:.9rem;color:#1e293b}.enrichment-columns h3{margin:0 0 .65rem;font-size:.95rem}.enrichment-columns-list{display:flex;flex-wrap:wrap;gap:.65rem 1rem}.enrichment-summary{display:flex;flex-wrap:wrap;gap:1rem;margin-bottom:1rem}.enrichment-summary-item{flex:1 1 140px;padding:.85rem 1rem;border:1px solid var(--color-border);border-radius:var(--radius-lg);background:linear-gradient(180deg,var(--color-primary-soft) 0%,var(--color-surface-muted) 100%);text-align:center}.enrichment-summary-value{display:block;font-size:1.6rem;font-weight:700;color:var(--color-primary-text);line-height:1.1}.enrichment-summary-label{display:block;margin-top:.25rem;font-size:var(--font-size-sm);color:var(--color-text-secondary)}.enrichment-warnings{margin:0;padding-left:1.2rem;color:var(--color-warning);font-size:var(--font-size-sm)}.table-scroll-mapping{max-height:50vh;overflow:auto;margin-bottom:.5rem}.modal-header{display:flex;align-items:center;justify-content:space-between;gap:1rem}.modal-header h2{margin:0}.modal-close{border:none;background:var(--color-control-bg);width:2rem;height:2rem;border-radius:var(--radius-pill);font-size:1.25rem;cursor:pointer;line-height:1;color:var(--color-text-secondary);transition:background var(--transition-fast)}.modal-close:hover{background:var(--color-control-bg-hover)}.modal-subtitle{margin:.5rem 0 1rem;color:var(--color-text-secondary)}.modal-stats{display:flex;flex-wrap:wrap;gap:1rem;margin-bottom:1rem;font-size:var(--font-size-sm);color:var(--color-text-secondary)}.modal-section{margin-bottom:1.25rem}.modal-section h3{margin:0 0 .75rem;font-size:1rem}.modal-actions{display:flex;justify-content:flex-end;gap:.5rem;margin-top:1rem;padding-top:1rem;border-top:1px solid var(--color-border)}.mapping-table .mapping-arrow{text-align:center;color:#868e96;width:2rem}.mapping-table-interactive td{vertical-align:middle}.mapping-key{font-size:.8rem;color:#868e96;margin-top:.15rem}.mapping-select{font-size:var(--font-size-sm)}.status-badge{display:inline-block;padding:.2rem .55rem;border-radius:var(--radius-pill);font-size:.8rem;font-weight:600}.status-ok{background:var(--color-success-soft);color:var(--color-success)}.status-error{background:var(--color-danger-soft);color:var(--color-danger)}.status-pending{background:var(--color-warning-soft);color:var(--color-warning)}.table-scroll{overflow-x:auto}.table-sticky-header thead th{position:sticky;top:0;z-index:2;background:#f8f9fa;box-shadow:0 1px #e9ecef}.table-column-mapping .mapping-select-row th{position:sticky;top:0;z-index:3;background:#eef2ff;padding:.5rem;vertical-align:bottom}.table-column-mapping thead tr:nth-child(2) th{top:3.25rem;z-index:2}details.modal-section summary{cursor:pointer;font-weight:600;color:#3b5bdb}.cell-input{width:100%;min-width:72px;border:1px solid #dee2e6;padding:.35rem .5rem;border-radius:4px;font-size:.9rem;background:#fff}.cell-input:focus{outline:none;border-color:#3b5bdb;box-shadow:0 0 0 2px #3b5bdb26}.table-editable td{padding:.25rem;vertical-align:middle}.btn-icon-only{padding:.45rem;min-width:2.25rem;line-height:0}.btn-icon-only svg{width:1.1rem;height:1.1rem;display:block}.row-duplicate,.row-incomplete,.row-incomplete.row-duplicate,tr.row-selected td,tr.row-selected.row-duplicate td,tr.row-partial-selected td{background:inherit}.result-dashboard{width:100%;margin-top:.5rem;margin-bottom:0;padding:.65rem .75rem}.result-dashboard-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:.75rem}.result-metric{background:#f8f9fa;border-radius:10px;padding:.5rem .75rem;display:flex;flex-direction:column;gap:.25rem;min-width:0}.result-metric-label{font-size:.8rem;color:#868e96;line-height:1.3}.result-metric-value{font-size:1.1rem;font-weight:700;color:#1a1a2e;line-height:1.2;word-break:break-word}.table-editable thead .warn-col{background:#f8f9fa}.markup-rules-card .markup-rules-head-row{margin-bottom:1rem}.markup-rules-head-row h2.ui-section-title{margin:0;font-size:1rem;color:var(--color-text)}.markup-rules-header{display:flex;justify-content:space-between;gap:1rem;margin-bottom:1rem}.markup-rules-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.75rem}.markup-rule-item{display:grid;grid-template-columns:auto 1fr auto;gap:.75rem;align-items:start;padding:.85rem 1rem;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface-muted)}.markup-rule-step{width:1.75rem;height:1.75rem;border-radius:var(--radius-pill);background:var(--color-primary);color:var(--color-surface);display:flex;align-items:center;justify-content:center;font-weight:600;font-size:.8125rem}.markup-rule-title{font-weight:600;font-size:var(--font-size-sm);color:var(--color-text)}.markup-rule-desc{color:var(--color-muted);font-size:.8125rem;margin-top:.15rem;line-height:1.4}.markup-rule-inline{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.5rem;margin-top:.5rem}.markup-rule-inline .markup-rule-value{margin-top:0;flex-direction:column;align-items:stretch;min-width:5.5rem;flex:1}.markup-rule-inline .markup-rule-value .ui-control{width:100%}.markup-rule-value{margin-top:.5rem;display:flex;align-items:center;gap:.5rem}.markup-rule-value label{font-size:.8125rem;color:var(--color-text-secondary);font-weight:500}.markup-rule-value .ui-control{width:7rem;min-height:var(--control-height-sm);padding:0 .65rem}.markup-rule-actions{display:inline-flex;align-items:stretch;flex-shrink:0;border:1px solid var(--color-border);border-radius:var(--radius-sm);overflow:hidden;background:var(--color-surface);box-shadow:var(--shadow-sm)}.markup-rule-action-btn{display:inline-flex;align-items:center;justify-content:center;min-width:2rem;min-height:2rem;padding:0;border:none;border-right:1px solid var(--color-border);border-radius:0;background:var(--color-surface);color:var(--color-text-secondary);cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast)}.markup-rule-action-btn:last-child{border-right:none}.markup-rule-action-btn:hover:not(:disabled){background:var(--color-control-bg);color:var(--color-text)}.markup-rule-action-btn:disabled{opacity:.35;cursor:not-allowed}.markup-rule-action-btn--danger:hover:not(:disabled){background:var(--color-danger-soft);color:var(--color-danger)}.markup-rule-action-btn svg{width:1rem;height:1rem;display:block}.markup-chain-preview{margin:.75rem 0;padding:.65rem .85rem;background:var(--color-primary-soft);border:1px solid color-mix(in srgb,var(--color-primary) 18%,transparent);border-radius:var(--radius-sm);font-size:var(--font-size-sm);color:var(--color-primary-text);line-height:1.4}.markup-add-rule{margin-top:0}.markup-rules-empty{color:var(--color-muted);margin:0 0 .75rem;font-size:var(--font-size-sm);font-style:italic}.col-derived{white-space:nowrap}.col-derived-badge{display:inline-block;margin-left:.35rem;padding:.1rem .4rem;border-radius:var(--radius-pill);background:var(--color-primary-soft);color:var(--color-primary-text);font-size:.7rem;font-weight:600;vertical-align:middle}.cell-derived{background:var(--color-surface-muted)}.cell-readonly{display:block;min-height:1.9rem;padding:.35rem .5rem;border-radius:var(--radius-sm);background:var(--color-primary-soft);color:var(--color-primary-text);font-size:var(--font-size-sm);line-height:1.3}.result-toolbar{display:flex;justify-content:flex-start;margin-bottom:.75rem}.result-add-column{position:relative}.result-add-menu{position:absolute;top:calc(100% + .35rem);left:0;z-index:10;min-width:280px;background:#fff;border:1px solid #dee2e6;border-radius:10px;box-shadow:0 8px 24px #0000001f;overflow:hidden}.result-add-menu-item{display:flex;flex-direction:column;align-items:flex-start;gap:.15rem;width:100%;padding:.75rem 1rem;border:none;background:#fff;text-align:left;cursor:pointer}.result-add-menu-item:hover{background:#eef2ff}.result-add-menu-label{font-weight:600;color:#1a1a2e}.result-add-menu-hint{font-size:.82rem;color:#868e96}.result-page{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden;gap:1rem}.result-page-download-group{display:flex;gap:.35rem;align-items:center}.result-table-toolbar{display:flex;flex-wrap:wrap;gap:.65rem;align-items:flex-end;padding:.65rem 1rem;border-bottom:1px solid var(--color-border);margin-bottom:0;background:var(--color-surface-muted)}.result-search-wrap{position:relative;display:flex;align-items:center;flex:1 1 220px;min-width:180px}.result-search-icon{position:absolute;left:.85rem;width:1rem;height:1rem;color:var(--color-placeholder);pointer-events:none}.result-toolbar-input{width:100%;padding:0 .95rem 0 2.35rem}.result-search-input{flex:1 1 auto;min-width:0}.result-group-field{flex:0 0 auto;min-width:11rem}.result-toolbar-actions{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;margin-left:auto}.result-toolbar-action-btn{min-height:var(--control-height)}.ui-control:disabled{opacity:.55;cursor:not-allowed}.confirm-dialog-overlay{z-index:1100}.confirm-dialog{width:min(480px,100%)}.confirm-dialog-message{margin:0 0 1.25rem;color:#334155;line-height:1.5}.result-toolbar-field{display:flex;flex-direction:column;gap:.2rem;font-size:.8rem;color:var(--text-muted, #6b7280)}.result-toolbar-field select{padding:.4rem .5rem;border:1px solid var(--border-color, #d1d5db);border-radius:6px;font-size:.9rem}.result-toolbar-mode{display:flex;flex-wrap:wrap;gap:.75rem;align-items:center}.col-selector{width:40px;min-width:40px;text-align:center;vertical-align:middle}.col-expander{width:32px;min-width:28px;text-align:center;vertical-align:middle;padding:.25rem}.col-selector input[type=checkbox]{cursor:pointer}.row-actions-col{width:40px;text-align:center;vertical-align:middle}.row-delete-btn{min-width:1.75rem;padding:.15rem .35rem;font-size:1.1rem;line-height:1}.row-num-cell{display:flex;align-items:center;justify-content:center;gap:.35rem}.row-group-toggle{display:inline-flex;align-items:center;justify-content:center;width:1.25rem;height:1.25rem;padding:0;border:1px solid var(--border-color, #d1d5db);border-radius:4px;background:#fff;font-size:.85rem;line-height:1;cursor:pointer;flex-shrink:0}.row-group-toggle:hover{background:#f3f4f6}.row-expander-cell{display:flex;align-items:center;justify-content:center;min-height:100%}.row-expander-rail{width:4px;align-self:stretch;min-height:1.75rem;margin:0 auto;border-radius:2px;background:#3b82f6}.row-num-group{font-weight:700}.row-num-sub{font-weight:500;color:#2563eb;font-size:.82rem}.row-group-merge-btn{margin-top:.15rem;padding:.1rem .45rem;font-size:.65rem;line-height:1.2;border:none;border-radius:var(--radius-pill);background:var(--color-primary-soft);color:var(--color-primary-text);cursor:pointer;white-space:nowrap;transition:background var(--transition-fast)}.row-group-merge-btn:hover{background:var(--color-control-bg-hover)}.row-num-cell-child{flex-direction:column;align-items:center}.result-settings-wrap{position:relative}.result-page-download-group .result-settings-btn{padding:.6rem .75rem;min-width:2.75rem}.result-settings-wrap .btn-primary.is-active,.result-settings-wrap .btn-primary:hover{background:#2f4ac0}.result-settings-menu{position:absolute;top:calc(100% + .35rem);right:0;z-index:20;min-width:320px;max-width:min(420px,calc(100vw - 2rem));max-height:min(70vh,520px);overflow-y:auto;padding:.75rem}.result-settings-item+.result-settings-item{border-top:1px solid var(--color-border);padding-top:.45rem;margin-top:.45rem}.result-settings-add-columns{margin-top:.75rem;padding-top:.75rem;border-top:1px solid var(--color-border)}.result-settings-add-columns-list{display:flex;flex-wrap:wrap;gap:.4rem}.dashboard-stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.75rem;flex-shrink:0}.dashboard-stat-card{display:flex;flex-direction:column;gap:.25rem;padding:.85rem 1rem;border-radius:var(--radius-md);background:var(--color-surface);border:1px solid var(--color-border);box-shadow:var(--shadow-sm);min-width:0}.dashboard-stat-card--success{border-color:color-mix(in srgb,var(--color-success) 25%,var(--color-border));background:color-mix(in srgb,var(--color-success-soft) 60%,var(--color-surface))}.dashboard-stat-card--accent{border-color:color-mix(in srgb,var(--color-primary) 25%,var(--color-border));background:color-mix(in srgb,var(--color-primary-soft) 70%,var(--color-surface))}.dashboard-stat-label{font-size:.75rem;font-weight:600;color:var(--color-text-secondary);line-height:1.3}.dashboard-stat-value{font-size:1.35rem;font-weight:700;color:var(--color-text);line-height:1.2}.dashboard-limit-widget{display:flex;flex-direction:column;gap:.3rem;min-width:8rem}.dashboard-limit-label{font-size:var(--font-size-sm);font-weight:600;color:var(--color-text-secondary);text-align:right}.dashboard-upload-card{flex-shrink:0}.dashboard-section-head{margin-bottom:1rem}.dashboard-section-head h2,.dashboard-history-head h2{margin:0 0 .25rem;font-size:1.05rem}.dashboard-section-desc{margin:0;font-size:var(--font-size-sm);color:var(--color-muted)}.dashboard-mode-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:.65rem;margin-bottom:1rem}.dashboard-mode-card{display:flex;flex-direction:column;align-items:flex-start;gap:.35rem;padding:.85rem 1rem;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface-muted);text-align:left;cursor:pointer;transition:border-color var(--transition-fast),background var(--transition-fast),box-shadow var(--transition-fast)}.dashboard-mode-card:hover{border-color:var(--color-border-strong);background:var(--color-control-bg)}.dashboard-mode-card.is-active{border-color:var(--color-primary);background:var(--color-primary-soft);box-shadow:var(--shadow-focus)}.dashboard-mode-icon{width:1.35rem;height:1.35rem;color:var(--color-primary)}.dashboard-mode-title{font-size:var(--font-size-sm);font-weight:600;color:var(--color-text)}.dashboard-mode-desc{font-size:.75rem;color:var(--color-muted);line-height:1.35}.dashboard-append-select{margin-bottom:1rem}.dashboard-dropzone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.35rem;min-height:9rem;padding:1.5rem}.dashboard-dropzone.has-file{border-style:solid;background:var(--color-primary-soft)}.dashboard-dropzone-icon{width:2rem;height:2rem;color:var(--color-primary);margin-bottom:.25rem}.dashboard-dropzone-text{margin:0;font-size:var(--font-size-base);font-weight:600;color:var(--color-text)}.dashboard-dropzone-filename{margin:0;font-size:var(--font-size-sm);color:var(--color-primary-text);word-break:break-word}.dashboard-dropzone-hint{margin:0;font-size:var(--font-size-sm);color:var(--color-muted)}.dashboard-upload-actions{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1rem}.dashboard-history-card{min-height:0}.dashboard-history-head{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:.75rem;margin-bottom:.75rem}.dashboard-history-filters{display:flex;flex-wrap:wrap;gap:.35rem}.dashboard-filter-chip{border:none;border-radius:var(--radius-pill);padding:.35rem .75rem;background:var(--color-control-bg);color:var(--color-text-secondary);font-size:.8125rem;font-weight:500;cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast)}.dashboard-filter-chip:hover{background:var(--color-control-bg-hover);color:var(--color-text)}.dashboard-filter-chip.is-active{background:var(--color-primary-soft);color:var(--color-primary-text);font-weight:600}.dashboard-search-wrap{margin-bottom:.75rem;max-width:420px}.dashboard-history-table tbody tr.dashboard-history-row.is-clickable{cursor:pointer}.dashboard-history-table tbody tr.dashboard-history-row.is-clickable:hover td{background:var(--color-primary-soft)}.dashboard-col-date{white-space:nowrap;font-size:var(--font-size-sm);color:var(--color-text-secondary)}.dashboard-col-file{font-weight:500;max-width:280px;word-break:break-word}.dashboard-col-rows{width:4.5rem;text-align:center;white-space:nowrap}@media(max-width:768px){.dashboard-history-head{flex-direction:column}.dashboard-col-date,.dashboard-col-rows{display:none}}.result-settings-section{padding:.45rem 0;border-top:1px solid var(--color-border)}.result-settings-columns{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.15rem .75rem}.result-page-layout{display:grid;grid-template-columns:minmax(0,1fr) 400px;gap:1rem;align-items:stretch;flex:1;min-height:0}.result-page-main{margin-bottom:0;min-width:0;height:100%;display:flex;flex-direction:column;padding:0;overflow:hidden;position:relative}.result-page-main--selection-active{padding-bottom:4rem}.result-selection-bar{position:absolute;left:0;right:0;bottom:0;z-index:10;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.75rem;padding:.75rem 1rem;background:#fff;border-top:1px solid var(--border-color, #e5e7eb);box-shadow:0 -4px 16px #00000014;transform:translateY(100%);transition:transform .25s ease;pointer-events:none}.result-selection-bar--visible{transform:translateY(0);pointer-events:auto}.result-selection-bar-count{font-size:.9rem;font-weight:500;color:var(--text-muted, #6b7280)}.result-selection-bar-actions{display:flex;flex-wrap:wrap;gap:.5rem;margin-left:auto}.result-page-sidebar{height:100%;min-height:0}.markup-rules-sidebar{margin-bottom:0;height:100%;display:flex;flex-direction:column;min-height:0;padding:1rem;overflow:hidden}.markup-rules-head-row{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.markup-rules-head-row h2{margin:0;font-size:1rem;min-width:0}.markup-rules-sidebar-head{flex-shrink:0}.markup-rules-sidebar-head .markup-rules-head-row{margin-bottom:.75rem}.markup-rules-sidebar-body{flex:1;min-height:0;overflow-y:auto;padding-right:.15rem}.markup-rules-sidebar-foot{flex-shrink:0;padding-top:.75rem;border-top:1px solid var(--color-border);margin-top:.75rem}.markup-supplier-field{margin-bottom:.75rem}.markup-rules-sidebar .markup-rule-item{grid-template-columns:auto 1fr;grid-template-areas:"step body" "actions actions"}.markup-rules-sidebar .markup-rule-step{grid-area:step}.markup-rules-sidebar .markup-rule-body{grid-area:body;min-width:0}.markup-rules-sidebar .markup-rule-actions{grid-area:actions;justify-self:end;margin-top:.35rem}.markup-rules-sidebar .markup-rule-inline{flex-direction:column;align-items:stretch}.markup-rules-sidebar .markup-rule-inline .markup-rule-value{min-width:0}.markup-rules-sidebar .markup-rule-value{flex-wrap:wrap}.markup-rules-sidebar .markup-rule-value .ui-control{width:100%;max-width:8rem}.markup-rules-sidebar .markup-chain-preview{margin-top:.75rem;margin-bottom:0;font-size:.82rem;word-break:break-word}.markup-rules-sidebar .markup-add-rule{margin-bottom:.75rem}.table-scroll-result{flex:1;min-height:0;overflow:auto;padding:0 1rem 1rem;outline:none}.table-scroll-result:focus-visible{box-shadow:inset 0 0 0 2px #94a3b859}.table-scroll-result .table-resizable{table-layout:fixed;width:max-content;min-width:100%;border-collapse:separate;border-spacing:0;border:1px solid #e9ecef;border-radius:8px}.table-scroll-result .table-resizable thead th{position:sticky;top:0;z-index:2;background:#eef1f4;box-shadow:0 1px #dee2e6,0 2px 6px #0f172a0f;padding:0;height:2rem;vertical-align:middle;font-size:.8rem}.table-scroll-result .table-resizable th,.table-scroll-result .table-resizable td{border-right:1px solid #e9ecef;border-bottom:1px solid #e9ecef;overflow:hidden;text-overflow:ellipsis}.table-scroll-result .table-resizable th:last-child,.table-scroll-result .table-resizable td:last-child{border-right:none}.table-scroll-result tbody tr.row-even>td{background-color:#fafafa}.table-scroll-result tbody tr.row-odd>td{background-color:#fff}.table-scroll-result.table-grouped-view tbody tr.row-group-head>td{background-color:#dde3ec;font-weight:600;color:#1e293b;border-top:2px solid #64748b}.table-scroll-result.table-grouped-view tbody tr.row-group-head.row-group-expanded>td.col-expander{box-shadow:inset 4px 0 #2563eb;background-color:#dbeafe}.table-scroll-result.table-grouped-view tbody tr.row-group-head:not(.row-group-expanded)>td.col-expander{box-shadow:inset 4px 0 #475569}.table-scroll-result.table-grouped-view tbody tr.row-group-child>td{background-color:#eff6ff}.table-scroll-result.table-grouped-view tbody tr.row-group-child.row-group-expanded>td.col-expander{background-color:#dbeafe;box-shadow:inset 4px 0 #2563eb}.table-scroll-result.table-grouped-view tbody tr.row-group-child.row-group-expanded>td.col-selector,.table-scroll-result.table-grouped-view tbody tr.row-group-child.row-group-expanded>td.row-num-col{background-color:#eff6ff;box-shadow:inset 3px 0 #93c5fd}.table-scroll-result.table-grouped-view tbody tr.row-group-child.row-group-expanded>td:not(.col-expander):not(.col-selector):not(.row-num-col){background-color:#f8fbff;border-left:1px solid #bfdbfe}.table-scroll-result.table-grouped-view tbody tr.row-group-block-end>td{border-bottom:2px solid #93c5fd}.table-scroll-result.table-grouped-view tbody tr.row-group-head:hover>td{background-color:#d4dce8}.table-scroll-result.table-grouped-view tbody tr.row-group-child:hover>td{background-color:#dbeafe}.table-scroll-result.table-grouped-view tbody tr.row-group-child:hover>td.col-expander{background-color:#bfdbfe}.table-scroll-result.table-grouped-view tbody tr:not(.row-group-head):not(.row-group-child)>td{background-color:#fff}.table-scroll-result.table-grouped-view tbody tr.row-group-child>td.col-selector,.table-scroll-result.table-grouped-view tbody tr.row-group-child>td.row-num-col{padding-left:.35rem}.table-scroll-result.table-grouped-view tbody tr.row-group-child>td:not(.col-expander):not(.col-selector):not(.row-num-col){padding-left:.85rem;color:#334155;font-size:.92em}.table-scroll-result tbody tr.row-focused>td{background-color:#f8fafc}.table-scroll-result .table-resizable tbody tr.row-even:hover>td{background-color:#f3f4f6}.table-scroll-result .table-resizable tbody tr.row-odd:hover>td{background-color:#f3f4f6}.table-scroll-result .table-resizable tbody tr.row-group-head:hover>td{background-color:#d4dce8}.table-scroll-result .table-resizable tbody tr.row-group-child:hover>td{background-color:#f8fafc}.table-scroll-result .table-resizable td.cell-active{outline:2px solid #94a3b8;outline-offset:-2px;background-color:#fff!important}.table-scroll-result .resizable-th{padding-right:.75rem}.table-scroll-result .th-content{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.table-scroll-result .sortable-th{padding:0}.table-scroll-result .th-sort-btn{display:flex;align-items:center;gap:.25rem;width:100%;min-height:2rem;padding:.25rem .45rem;border:none;background:transparent;font:inherit;font-weight:600;font-size:.8rem;color:inherit;text-align:left;cursor:pointer}.table-scroll-result .th-sort-btn:hover{background:#eef2ff}.table-scroll-result .sort-indicator{flex-shrink:0;font-size:.75rem;line-height:1}.table-scroll-result .sort-indicator-idle{color:#ced4da}.table-scroll-result .sort-indicator-active{color:#3b5bdb;font-weight:700}.table-scroll-result .col-resize-handle{position:absolute;top:0;right:0;width:7px;height:100%;cursor:col-resize;-webkit-user-select:none;user-select:none;touch-action:none}.table-scroll-result .col-resize-handle:hover,.table-scroll-result .col-resize-handle:active{background:#3b5bdb33}.table-scroll-result .cell-input{border:none;border-radius:0;padding:.3rem .45rem;background:transparent;box-shadow:none;width:100%;font-size:.9rem;line-height:1.25}.table-scroll-result .cell-input:focus{outline:none;border:none;box-shadow:none;background:transparent}.table-scroll-result .table-resizable td:focus-within{outline:none}.table-scroll-result .table-resizable .cell-derived,.table-scroll-result .cell-derived .cell-readonly{background-color:transparent}.row-num-col{width:3.5rem;min-width:3.5rem;text-align:center;color:#868e96;font-size:.85rem;vertical-align:middle}.table-editable thead .row-num-col{font-weight:600;color:#495057}@media(max-width:1100px){.result-dashboard-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.result-page-layout{grid-template-columns:1fr;grid-template-rows:minmax(0,1fr) minmax(0,1fr);flex:1;min-height:0}.result-page-main,.result-page-sidebar{height:100%;min-height:0}.markup-rules-sidebar{min-height:0}.table-scroll-result{max-height:none}}@media(max-width:768px){.result-dashboard-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.result-page .page-header{flex-direction:column;align-items:stretch}.result-page .page-header-actions{justify-content:flex-start}.app-shell{flex-direction:column;height:100vh;height:100dvh}.sidebar{width:100%;height:auto;flex-shrink:0;flex-direction:row;flex-wrap:wrap;align-items:center;gap:.5rem 1rem;padding:.75rem 1rem}.app-main{flex:1;min-height:0}.sidebar-brand{padding:0;flex:1 1 auto}.sidebar-nav{flex-direction:row;flex-wrap:wrap;gap:.35rem}.sidebar-link{padding:.45rem .65rem}.sidebar-footer{margin-top:0;padding:0;border-top:none;flex-direction:row;align-items:center;gap:.75rem;width:100%}.sidebar-user{flex:1;min-width:0}.app-page{padding:1rem}}.supplier-page-layout{flex:1;min-height:0;display:flex;flex-direction:column}.supplier-list-card{min-height:0}.supplier-list-toolbar{display:flex;flex-wrap:wrap;gap:.65rem;align-items:center;margin-bottom:.75rem}.supplier-search-wrap{flex:1 1 220px;min-width:180px}.supplier-table tbody tr.supplier-row{cursor:pointer}.supplier-table tbody tr.supplier-row:hover td,.supplier-table tbody tr.supplier-row.is-selected td{background:var(--color-primary-soft)}.supplier-name-cell{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}.supplier-template-badge{font-size:.7rem;padding:.15rem .5rem}.supplier-col-count{width:5rem;text-align:center;white-space:nowrap}.supplier-col-updated{white-space:nowrap;font-size:var(--font-size-sm);color:var(--color-text-secondary)}.supplier-drawer-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:900;background:#0f172a59}.supplier-drawer{position:fixed;top:0;right:0;z-index:901;display:flex;flex-direction:column;width:min(520px,100vw);height:100%;background:var(--color-surface);border-left:1px solid var(--color-border);box-shadow:var(--shadow-lg)}.supplier-drawer-header{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;padding:1rem 1rem .75rem;border-bottom:1px solid var(--color-border);flex-shrink:0}.supplier-drawer-title-wrap{min-width:0;flex:1}.supplier-drawer-title{margin:0;font-size:1.1rem;font-weight:600;word-break:break-word}.supplier-drawer-header-actions{display:flex;align-items:center;gap:.35rem;flex-shrink:0}.supplier-drawer-close{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;border:none;border-radius:var(--radius-sm);background:var(--color-control-bg);color:var(--color-text-secondary);font-size:1.35rem;line-height:1;cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast)}.supplier-drawer-close:hover{background:var(--color-control-bg-hover);color:var(--color-text)}.supplier-panel-tabs{display:flex;gap:.25rem;padding:.65rem 1rem;border-bottom:1px solid var(--color-border);overflow-x:auto;flex-shrink:0}.supplier-panel-tab{border:none;border-radius:var(--radius-pill);padding:.4rem .85rem;background:transparent;color:var(--color-text-secondary);font-size:var(--font-size-sm);font-weight:500;cursor:pointer;white-space:nowrap;transition:background var(--transition-fast),color var(--transition-fast)}.supplier-panel-tab:hover{background:var(--color-control-bg);color:var(--color-text)}.supplier-panel-tab.is-active{background:var(--color-primary-soft);color:var(--color-primary-text);font-weight:600}.supplier-drawer-body{flex:1;min-height:0;overflow-y:auto;padding:1rem}.supplier-drawer-form,.supplier-panel-section{display:flex;flex-direction:column;gap:.75rem}.supplier-drawer .markup-rules-card{margin-bottom:0;box-shadow:none}@media(max-width:768px){.supplier-col-count,.supplier-col-updated{display:none}.supplier-drawer{width:100vw}}.settings-page{max-width:960px}.settings-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.settings-card h2{margin:0 0 1rem;font-size:1.05rem}.settings-card-wide{grid-column:1 / -1}.settings-dl{margin:0;display:flex;flex-direction:column;gap:.75rem}.settings-dl-row{display:grid;grid-template-columns:9rem 1fr;gap:.75rem;align-items:baseline}.settings-dl-row dt{margin:0;font-size:var(--font-size-sm);font-weight:600;color:var(--color-text-secondary)}.settings-dl-row dd{margin:0}.settings-readonly-value{font-size:var(--font-size-sm);color:var(--color-text);word-break:break-word}.settings-limit-text{margin:0 0 .65rem;font-size:var(--font-size-base);color:var(--color-text)}.settings-hint{margin:.5rem 0 0;font-size:var(--font-size-sm);color:var(--color-muted)}.settings-password-form{display:flex;flex-direction:column;gap:.75rem;max-width:420px}@media(max-width:768px){.settings-grid{grid-template-columns:1fr}.settings-dl-row{grid-template-columns:1fr;gap:.25rem}}
