*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.hidden{display:none}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:#172033;background:#f5f7fb;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{margin:0;min-width:320px}button,input,select{font:inherit}button{cursor:pointer}.app{min-height:100vh;display:flex;background:#f5f7fb;color:#172033}.sidebar{width:238px;flex:0 0 238px;background:#fff;border-right:1px solid #e8ebf1;padding:27px 16px 18px;display:flex;flex-direction:column;min-height:100vh}.brand{display:flex;align-items:center;gap:11px;padding:0 11px 41px}.brand-mark{width:35px;height:35px;display:grid;place-items:center;border-radius:11px;background:#356cf6;color:#fff;font-weight:800;font-size:19px;box-shadow:0 5px 12px #356cf633}.brand b{display:block;font-size:14px;letter-spacing:-.3px}.brand small{display:block;color:#9aa3b5;font-size:9px;font-weight:700;letter-spacing:1.4px;margin-top:3px}.nav-label{color:#a4adbd;font-size:9px;font-weight:800;letter-spacing:1.5px;padding:0 12px 9px}.nav-item{display:flex;align-items:center;gap:12px;color:#788398;text-decoration:none;padding:11px 12px;margin:2px 0;border-radius:8px;font-size:12px;font-weight:600}.nav-item.active{background:#eff4ff;color:#3266e8}.nav-icon{width:17px;font-size:16px;text-align:center}.sidebar-bottom{margin-top:auto;padding:15px 10px 0}.local-badge{border:1px solid #e9edf3;border-radius:8px;padding:10px;font-size:11px;font-weight:600;color:#4a586e;display:flex;align-items:center;gap:7px}.status-dot{width:7px;height:7px;background:#30b87a;border-radius:50%}.sidebar-foot{font-size:10px;color:#a1aabc;line-height:1.5;padding:11px 2px 0}.main{flex:1;min-width:0}.topbar{height:66px;padding:0 38px;background:#fff;border-bottom:1px solid #e9edf3;display:flex;justify-content:space-between;align-items:center;font-size:11px}.breadcrumb{color:#a0a9b8}.topbar-actions{display:flex;align-items:center;gap:15px}.icon-button,.avatar{border:0;background:none;color:#69758a;font-size:17px}.avatar{width:30px;height:30px;border-radius:50%;background:#e8eefc;color:#396de8;font-size:11px;font-weight:700}.content{max-width:1370px;margin:auto;padding:31px 38px 28px}.page-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:0 0 24px}.eyebrow{color:#3a6ef3!important;font-size:9px!important;font-weight:800;letter-spacing:1.5px;margin:0 0 7px!important}.page-heading h1{margin:0;font-size:25px;letter-spacing:-.8px}.page-heading p:not(.eyebrow){margin:6px 0 0;font-size:12px;color:#8a94a6}.button{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;border-radius:.375rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;border:1px solid transparent;border-radius:7px;padding:9px 13px;font-size:11px;font-weight:700;transition:.15s ease}.button:disabled{opacity:.5;cursor:not-allowed}.button-primary{background:#356cf6;color:#fff;box-shadow:0 3px 8px #356cf622}.button-primary:hover:not(:disabled){background:#255be2}.button-secondary{background:#fff;color:#3f4b60;border-color:#e3e7ed}.button-secondary:hover:not(:disabled),.button-quiet:hover:not(:disabled){background:#f5f7fb}.button-quiet{background:#f5f7fb;color:#657187}.button-row{display:flex;gap:9px;margin-top:17px}.button-row .button-primary{margin-left:auto}.notice{border:1px solid #cfe6d9;background:#f1fbf5;color:#27794e;border-radius:8px;padding:11px 14px;font-size:11px;margin:-7px 0 17px;display:flex;justify-content:space-between;gap:12px}.notice button{border:0;background:none;color:inherit;font-size:17px}.stats-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px;margin-bottom:18px}.stat-card,.panel{background:#fff;border:1px solid #e9edf3;border-radius:10px;box-shadow:0 2px 5px #17203305}.stat-card{min-height:112px;padding:15px 16px}.stat-top{display:flex;align-items:center;justify-content:space-between;color:#7d8799;font-size:10px;font-weight:600}.stat-icon{width:28px;height:28px;border-radius:8px;background:#eff4ff;color:#3c70ed;display:grid;place-items:center;font-size:14px}.stat-icon.warning{color:#d89032;background:#fff6e8}.stat-value{font-size:24px;font-weight:750;letter-spacing:-.7px;margin:4px 0 0}.stat-card small{font-size:10px;color:#a2aaba}.workspace-grid{display:grid;grid-template-columns:1.35fr 1fr;gap:15px;align-items:start}.panel{padding:18px;margin-bottom:15px}.panel-heading{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:17px}.panel-heading h2{font-size:13px;margin:0;letter-spacing:-.2px}.panel-heading p{color:#9aa3b2;font-size:10px;margin:5px 0 0}.count-pill{background:#f2f5fa;color:#6b778b;border-radius:12px;padding:4px 9px;font-size:10px;font-weight:700}.field-label{display:block;font-size:10px;font-weight:700;color:#68748a;margin:0 0 7px}.select{width:100%;padding:9px 11px;border:1px solid #e2e7ef;border-radius:7px;color:#344158;background:#fff;font-size:11px;outline:none}.select:focus{border-color:#7ea0fa;box-shadow:0 0 0 3px #356cf616}.upload-card{margin-top:15px;background:#f9faff;border:1px dashed #d9e1ef;border-radius:8px;padding:14px;display:grid;grid-template-columns:33px 1fr;gap:0 10px}.upload-icon{width:31px;height:31px;background:#edf3ff;border-radius:8px;color:#4775e8;font-size:18px;display:grid;place-items:center;grid-row:span 2}.upload-card b{font-size:11px}.upload-card p{margin:3px 0 10px;color:#949eaf;font-size:10px}.upload-actions{grid-column:1 / -1;display:flex;flex-wrap:wrap;gap:7px}.upload-actions input{min-width:120px;flex:1;border:1px solid #e2e7ef;border-radius:7px;padding:8px 9px;font-size:10px;color:#344158}.upload-actions .button{padding:7px 9px;font-size:10px}.helper-text{display:block;margin-top:9px;color:#a0a9b7;font-size:9px;line-height:1.5}.upload-card .helper-text{grid-column:1 / -1}.automation-row,.toggle-row{display:flex;justify-content:space-between;align-items:center;gap:10px}.automation-row{border-top:1px solid #eef0f4;margin-top:16px;padding-top:13px}.automation-row b,.toggle-row b{font-size:10px;display:block}.automation-row small,.toggle-row small{display:block;color:#9ba4b3;font-size:9px;margin-top:4px}.switch{width:30px;height:17px;border-radius:12px;padding:2px;border:0;background:#d9dee7;flex:0 0 auto;transition:background .15s}.switch span{width:13px;height:13px;display:block;background:#fff;border-radius:50%;box-shadow:0 1px 3px #0002;transition:transform .15s}.switch.on{background:#3c70ed}.switch.on span{transform:translate(13px)}.shadcn-switch{position:relative;display:inline-flex;height:1.25rem;width:2.25rem;flex-shrink:0;cursor:pointer;align-items:center;border-radius:9999px;border-width:2px;border-color:transparent;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.shadcn-switch:focus-visible{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000);--tw-ring-opacity: 1;--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity, 1));--tw-ring-offset-width: 2px}.shadcn-switch:disabled{cursor:not-allowed;opacity:.5}.shadcn-switch{background:#d9dee7}.shadcn-switch[data-state=checked]{background:#3c70ed}.shadcn-switch-thumb{pointer-events:none;display:block;height:1rem;width:1rem;border-radius:9999px;--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transform:translate(0)}.shadcn-switch-thumb[data-state=checked]{transform:translate(16px)}.settings-icon{color:#74839b;font-size:15px}.setting-select-row{display:flex;justify-content:space-between;gap:10px;align-items:center;margin:1px 0 6px}.setting-select-row label{font-size:10px;font-weight:700;color:#566278}.select.compact{width:155px;padding:7px 8px}.toggle-row{border-top:1px solid #f0f2f5;padding:11px 0}.settings-note{padding:10px;background:#f8faff;color:#8994a8;font-size:9px;line-height:1.5;border-radius:7px;margin-top:5px}.settings-note span{display:inline-grid;place-items:center;margin-right:6px;width:14px;height:14px;border-radius:50%;background:#e9efff;color:#5179df;font-weight:700}.settings-note code{color:#596b88}.analysis-panel,.jobs-panel,.exports-panel{margin-top:15px}.success-tag{font-size:9px;color:#33825a;background:#effaf3;padding:6px 9px;border-radius:12px;white-space:nowrap}.warning-box{background:#fff9ee;color:#90651f;border:1px solid #f3e5c7;border-radius:7px;padding:10px 12px;font-size:10px;margin-bottom:12px}.warning-box ul{margin:6px 0 0;padding-left:17px;line-height:1.6}.page-list{border-top:1px solid #eef0f4}.page-row{display:grid;grid-template-columns:16px 25px 1fr auto;align-items:center;gap:10px;min-height:51px;border-bottom:1px solid #f1f3f6}.page-row input{accent-color:#356cf6}.page-index{font-size:9px;font-weight:700;color:#7590d9}.page-title b{display:block;font-size:10px}.page-title small{display:block;font-size:9px;color:#a0a9b7;margin-top:3px}.reorder{display:flex;gap:3px}.reorder button{width:22px;height:22px;border:1px solid #e8ebf1;border-radius:5px;color:#78849a;background:#fff}.reorder button:disabled{opacity:.35;cursor:default}.text-link,.report-link{color:#3f6fdf;font-size:10px;font-weight:700;text-decoration:none;white-space:nowrap}.job-list,.export-list{border-top:1px solid #eef0f4}.job-row,.export-row{display:flex;align-items:center;gap:11px;min-height:58px;border-bottom:1px solid #f1f3f6}.file-icon{width:31px;height:34px;display:grid;place-items:center;border-radius:6px;background:#fff1f0;color:#e76d67;font-size:8px;font-weight:800;flex:0 0 auto}.file-icon.completed{background:#edf8f2;color:#3b9b69}.file-icon.queued{background:#f2f5fa;color:#8591a5}.file-icon.running{background:#eff4ff;color:#4974e5}.job-info{min-width:0;flex:1}.job-info b{display:block;font-size:10px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.job-info small{display:block;font-size:9px;color:#a0a9b8;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;margin-top:4px}.status-tag{display:flex;align-items:center;gap:5px;padding:5px 8px;border-radius:12px;font-size:9px;white-space:nowrap}.status-tag.completed{background:#eff9f3;color:#3b8b60}.status-tag.failed{background:#fff1f0;color:#d36760}.status-tag.queued{background:#f4f6f9;color:#768297}.status-tag.running{background:#eef4ff;color:#4770de}.spinner{width:8px;height:8px;border:1px solid #b9c9f8;border-top-color:#4770de;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.retry{padding:6px 8px;font-size:9px}.download{padding:7px 9px;font-size:9px;white-space:nowrap;text-decoration:none}.report-link{margin:0 7px}.empty{padding:21px 8px;color:#a1aaba;font-size:10px;text-align:center}.empty span{color:#c4cbd7;font-size:20px;vertical-align:middle;margin-right:8px}footer{color:#a2aabb;text-align:center;font-size:9px;padding:5px 0 0}footer span{padding:0 4px}.dark{background:#111827;color:#e6eaf1}.dark .sidebar,.dark .topbar,.dark .panel,.dark .stat-card{background:#1b2535;border-color:#2a3548}.dark .nav-item{color:#a1acc0}.dark .nav-item.active{background:#25365a;color:#8eafff}.dark .breadcrumb,.dark .page-heading p:not(.eyebrow),.dark .panel-heading p{color:#8e9bb1}.dark .select,.dark .upload-actions input,.dark .reorder button,.dark .button-secondary{background:#202c3e;border-color:#354156;color:#dce3ee}.dark .upload-card,.dark .settings-note{background:#202c3e;border-color:#354156}.dark .automation-row,.dark .toggle-row,.dark .page-list,.dark .page-row,.dark .job-list,.dark .job-row,.dark .export-list,.dark .export-row{border-color:#2d394d}.dark .job-info small,.dark .page-title small{color:#8793a7}.dark .count-pill{background:#2a3548;color:#b4bfd2}@media (max-width: 980px){.sidebar{width:190px;flex-basis:190px}.content{padding:25px 23px}.topbar{padding:0 23px}.workspace-grid{grid-template-columns:1fr}}@media (max-width: 700px){.sidebar{display:none}.content{padding:21px 14px}.topbar{padding:0 15px}.stats-grid{grid-template-columns:repeat(2,1fr);gap:8px}.stat-card{min-height:100px}.page-heading{align-items:flex-start;flex-direction:column}.page-heading .button{width:100%}.panel{padding:14px}.upload-actions input{flex-basis:100%}.button-row{flex-wrap:wrap}.button-row .button{flex:1}.button-row .button-primary{margin-left:0}.export-row{flex-wrap:wrap;padding:8px 0}.download{margin-left:42px}}.login-page{min-height:100vh;display:grid;place-items:center;background:#f5f7fb}.login-card{width:340px;display:flex;flex-direction:column;gap:8px;padding:28px;background:#fff;border:1px solid #e3e7ed;border-radius:12px}.login-card h1{font-size:20px;margin:8px 0 0}.login-card p{font-size:12px;color:#657187;margin:0 0 8px}.login-card label{font-size:11px;font-weight:700}.login-card input{padding:9px 10px;border:1px solid #e3e7ed;border-radius:7px;font-size:13px}.login-card .button{margin-top:10px;padding:11px}.login-error{background:#fdecec;color:#b42318;border-radius:7px;padding:8px 10px;font-size:12px}
