:root{color-scheme:light;--sidebar-w: 260px;--topbar-h: 56px;--bg: #ebedef;--surface: #ffffff;--surface-2: #f5f6f8;--border: #e4e7ec;--text: #2b2f38;--text-dim: #7a8194;--text-faint: #a6acba;--accent: #4a5fee;--accent-hover: #3b4fe0;--accent-soft: rgba(74, 95, 238, .12);--green: #2eb85c;--green-soft: rgba(46, 184, 92, .12);--yellow: #f9b115;--yellow-soft: rgba(249, 177, 21, .12);--red: #e55353;--red-soft: rgba(229, 83, 83, .12);--sidebar-bg: #1c2333;--sidebar-bg-2: #262e42;--sidebar-text: #b9c2d4;--sidebar-text-active: #ffffff;--sidebar-border: rgba(255, 255, 255, .08);--sidebar-accent: var(--accent);--topbar-bg: #ffffff;--topbar-border: var(--border);--topbar-text: var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}:root[data-theme=purple]{--accent: #9152f0;--accent-hover: #7f3ce8;--accent-soft: rgba(145, 82, 240, .14);--sidebar-bg: #6f3cea;--sidebar-bg-2: #7e4ef0;--sidebar-text: rgba(255, 255, 255, .75);--sidebar-text-active: #ffffff;--sidebar-border: rgba(255, 255, 255, .16);--sidebar-accent: #ffffff;--topbar-bg: linear-gradient(90deg, #7440ec, #9152f0);--topbar-border: transparent;--topbar-text: #ffffff}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-size:14px}#root{min-height:100vh}button{font-family:inherit}a{color:inherit}.app-shell{display:flex;min-height:100vh}.app-main{flex:1;min-width:0;margin-left:var(--sidebar-w);display:flex;flex-direction:column}.app-content{padding:20px 24px 48px;flex:1}.page-header{margin-bottom:20px}.page-header h1{font-size:1.5rem;margin:0 0 2px;color:var(--text)}.breadcrumb{color:var(--text-dim);font-size:.85rem}.breadcrumb .sep{margin:0 6px;color:var(--text-faint)}.sidebar{position:fixed;top:0;left:0;bottom:0;width:var(--sidebar-w);background:var(--sidebar-bg);border-right:1px solid var(--sidebar-border);display:flex;flex-direction:column;z-index:20}.sidebar-brand{display:flex;align-items:center;gap:10px;padding:0 20px;height:var(--topbar-h);color:#fff;font-weight:700;font-size:1.05rem;border-bottom:1px solid var(--sidebar-border);flex-shrink:0}.sidebar-brand .logo-badge{width:28px;height:28px;border-radius:8px;background:var(--accent);display:flex;align-items:center;justify-content:center;flex-shrink:0}.sidebar-nav{flex:1;overflow-y:auto;padding:14px 10px 20px}.sidebar-section-title{font-size:.68rem;letter-spacing:.08em;text-transform:uppercase;color:var(--sidebar-text);opacity:.55;padding:16px 12px 6px}.sidebar-section-title:first-child{padding-top:4px}.sidebar-link{display:flex;align-items:center;gap:12px;width:100%;background:none;border:none;text-align:left;color:var(--sidebar-text);padding:9px 12px;border-radius:8px;font-size:.9rem;cursor:pointer;margin-bottom:2px}.sidebar-link svg{flex-shrink:0;opacity:.85}.sidebar-link:hover{background:var(--sidebar-bg-2);color:var(--sidebar-text-active)}.sidebar-link.active{background:var(--sidebar-bg-2);color:var(--sidebar-text-active);box-shadow:inset 3px 0 0 var(--sidebar-accent)}.sidebar-link .badge{margin-left:auto;font-size:.65rem;font-weight:700;padding:1px 7px;border-radius:999px;background:var(--accent);color:#fff}.sidebar-link .badge.pro{background:var(--red)}.sidebar-footer{padding:14px 20px;border-top:1px solid var(--sidebar-border);color:var(--sidebar-text);font-size:.78rem;opacity:.7}.topbar{position:sticky;top:0;z-index:10;height:var(--topbar-h);background:var(--topbar-bg);border-bottom:1px solid var(--topbar-border);display:flex;align-items:center;justify-content:space-between;padding:0 20px;gap:16px;color:var(--topbar-text)}.topbar-search{display:flex;align-items:center;gap:8px;background:var(--surface-2);border:1px solid var(--border);border-radius:8px;padding:7px 12px;width:100%;max-width:280px;color:var(--text-dim)}:root[data-theme=purple] .topbar-search{background:#ffffff29;border-color:transparent;color:#ffffffd9}.topbar-search input{border:none;background:none;outline:none;color:inherit;font-size:.88rem;width:100%}.topbar-search input::placeholder{color:currentColor;opacity:.6}.topbar-actions{display:flex;align-items:center;gap:6px;flex-shrink:0}.topbar-icon-btn{position:relative;background:none;border:none;color:inherit;opacity:.8;width:34px;height:34px;border-radius:8px;display:flex;align-items:center;justify-content:center;cursor:pointer}.topbar-icon-btn:hover{opacity:1;background:var(--accent-soft)}.topbar-menu-btn{display:none}:root[data-theme=purple] .topbar-icon-btn:hover{background:#ffffff29}.topbar-icon-btn .dot{position:absolute;top:6px;right:6px;width:7px;height:7px;border-radius:50%;background:var(--red);border:1.5px solid var(--topbar-bg)}.topbar-avatar{width:32px;height:32px;border-radius:50%;background:var(--accent);color:#fff;border:none;display:flex;align-items:center;justify-content:center;font-size:.78rem;font-weight:700;margin-left:4px;flex-shrink:0;cursor:pointer;font-family:inherit}.theme-switch{display:flex;gap:6px;align-items:center}.theme-swatch{width:20px;height:20px;border-radius:6px;border:2px solid transparent;cursor:pointer;padding:0}.theme-swatch.light{background:#1c2333}.theme-swatch.purple{background:linear-gradient(135deg,#7440ec,#9152f0)}.theme-swatch.selected{border-color:var(--accent)}:root[data-theme=purple] .theme-swatch.selected{border-color:#fff}.grid{display:grid;gap:18px}.grid.cols-4{grid-template-columns:repeat(4,1fr)}.grid.cols-2{grid-template-columns:2fr 1fr}@media(max-width:1100px){.grid.cols-4{grid-template-columns:repeat(2,1fr)}.grid.cols-2{grid-template-columns:1fr}}.card{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:20px;margin-bottom:0;box-shadow:0 1px 2px #1418260a;min-width:0}.card-title{font-size:.95rem;font-weight:600;color:var(--text);margin:0 0 2px}.card-subtitle{color:var(--text-dim);font-size:.82rem;margin:0 0 14px}.card-head{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:4px}.stat-tile{display:flex;align-items:center;gap:14px;padding:18px 20px}.stat-tile .icon{width:44px;height:44px;border-radius:10px;display:flex;align-items:center;justify-content:center;flex-shrink:0;background:var(--accent-soft);color:var(--accent)}.stat-tile .icon.green{background:var(--green-soft);color:var(--green)}.stat-tile .icon.yellow{background:var(--yellow-soft);color:var(--yellow)}.stat-tile .icon.red{background:var(--red-soft);color:var(--red)}.stat-tile .label{color:var(--text-dim);font-size:.8rem;margin:0 0 2px}.stat-tile .value{font-size:1.35rem;font-weight:700;color:var(--text);margin:0}.stat-highlight{border-radius:10px;padding:18px 20px;color:#fff}.stat-highlight.blue{background:linear-gradient(135deg,#4a5fee,#6c7bf5)}.stat-highlight.yellow{background:linear-gradient(135deg,#f9b115,#f7c948)}.stat-highlight .value{font-size:1.5rem;font-weight:700}.stat-highlight .label{opacity:.9;font-size:.8rem}.subtitle{color:var(--text-dim);margin-top:0;margin-bottom:16px}.row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}button.primary{background:var(--accent);color:#fff;border:none;border-radius:6px;padding:9px 18px;font-size:.9rem;cursor:pointer}button.primary:hover:not(:disabled){background:var(--accent-hover)}button.primary:disabled{opacity:.5;cursor:not-allowed}button.secondary{background:var(--surface-2);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:8px 16px;cursor:pointer}button.secondary:hover:not(:disabled){background:var(--border)}.file-name{color:var(--text-dim);font-size:.88rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:260px}.file-name.selected{color:var(--text);font-weight:600}.progress-track{background:var(--surface-2);border-radius:999px;height:8px;overflow:hidden;margin:12px 0 6px}.progress-fill{height:100%;background:var(--accent);transition:width .3s ease}.progress-fill.status-done{background:var(--green)}.progress-fill.status-error{background:var(--red)}.progress-message{font-size:.85rem;color:var(--text-dim)}.job-log{background:var(--surface-2);border:1px solid var(--border);border-radius:6px;padding:10px 12px;max-height:220px;overflow-y:auto;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.78rem;color:var(--text-dim);margin-top:12px}.job-log div{padding:2px 0;white-space:pre-wrap;word-break:break-word}table{width:100%;border-collapse:collapse;font-size:.86rem}th,td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--border)}th{color:var(--text-dim);font-weight:600;font-size:.75rem;text-transform:uppercase;letter-spacing:.03em;position:sticky;top:0;background:var(--surface)}tbody tr:hover{background:var(--surface-2)}.table-scroll{max-height:480px;overflow:auto;border:1px solid var(--border);border-radius:8px}.flag-true{color:var(--green);font-weight:700}.flag-false{color:var(--text-faint)}.status-badge{display:inline-block;padding:3px 11px;border-radius:999px;font-size:.74rem;font-weight:700;text-transform:uppercase;letter-spacing:.02em}.status-badge.running{background:var(--accent-soft);color:var(--accent)}.status-badge.done{background:var(--green-soft);color:var(--green)}.status-badge.error{background:var(--red-soft);color:var(--red)}.status-badge.queued{background:var(--surface-2);color:var(--text-dim)}.empty-state{color:var(--text-dim);font-size:.9rem}.field-row{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:16px}input[type=text],input[type=number],input[type=date],input[type=search],input[type=email],input[type=password],select{background:var(--surface-2);border:1px solid var(--border);color:var(--text);border-radius:6px;padding:8px 10px;font-size:.88rem;font-family:inherit}input[type=text]:focus,input[type=number]:focus,input[type=date]:focus,input[type=search]:focus,input[type=email]:focus,input[type=password]:focus,select:focus{outline:none;border-color:var(--accent)}input[type=text]:disabled,input[type=number]:disabled,input[type=date]:disabled,input[type=search]:disabled,input[type=email]:disabled,input[type=password]:disabled,select:disabled{opacity:.6;cursor:not-allowed}select{cursor:pointer}input[type=date]::-webkit-calendar-picker-indicator{cursor:pointer;opacity:.6}.info-tooltip{position:relative;display:inline-flex;align-items:center;color:var(--text-faint);cursor:help;outline:none}.info-tooltip:hover,.info-tooltip:focus-visible{color:var(--accent)}.info-tooltip-bubble{position:absolute;bottom:calc(100% + 9px);left:50%;transform:translate(-50%) translateY(4px);width:260px;background:var(--text);color:var(--surface);font-size:.76rem;font-weight:400;line-height:1.45;padding:10px 12px;border-radius:8px;box-shadow:0 8px 24px #14182633;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .15s ease,transform .15s ease;z-index:30}.info-tooltip-bubble:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:5px solid transparent;border-top-color:var(--text)}.info-tooltip:hover .info-tooltip-bubble,.info-tooltip:focus-visible .info-tooltip-bubble{opacity:1;visibility:visible;transform:translate(-50%) translateY(0)}@media(max-width:480px){.info-tooltip-bubble{width:min(260px,calc(100vw - 48px));left:auto;right:-12px;transform:translateY(4px)}.info-tooltip-bubble:after{left:auto;right:14px;transform:none}.info-tooltip:hover .info-tooltip-bubble,.info-tooltip:focus-visible .info-tooltip-bubble{transform:translateY(0)}}.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}.auth-page .card{width:100%;max-width:380px}.auth-page .field-row{flex-direction:column;gap:6px;margin-bottom:14px}.auth-page .field-row label{font-size:.82rem;color:var(--text-dim)}.auth-page .field-row input{width:100%}.auth-page button.primary{width:100%;padding:10px 18px;margin-top:4px}.auth-page .auth-switch{margin-top:16px;text-align:center;font-size:.85rem;color:var(--text-dim)}.auth-page .auth-switch button{background:none;border:none;color:var(--accent);cursor:pointer;font-size:inherit;padding:0}.sidebar-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f121c73;z-index:15}@media(min-width:901px){.sidebar-backdrop{display:none}}@media(max-width:900px){.sidebar{transform:translate(-100%);transition:transform .22s ease;box-shadow:2px 0 16px #0f121c40}.sidebar.open{transform:translate(0)}.app-main{margin-left:0}.topbar-menu-btn{display:flex}}@media(max-width:640px){.app-content{padding:16px 14px 32px}.topbar{padding:0 12px;gap:10px}.topbar-search,.topbar-decorative{display:none}.grid.cols-4{grid-template-columns:1fr}.card{padding:16px}}
