.status-badge{display:inline-block;padding:2px 10px;border-radius:3px;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;font-family:JetBrains Mono,Fira Code,monospace}.status-badge--pending,.status-badge--queued{background:#3a3a00;color:#ffd600;border:1px solid #ffd600}.status-badge--running{background:#002a4a;color:#29b6f6;border:1px solid #29b6f6;animation:pulse 1.5s ease-in-out infinite}.status-badge--success,.status-badge--succeeded,.status-badge--healthy{background:#030;color:#00e676;border:1px solid #00e676}.status-badge--failed,.status-badge--unhealthy{background:#3a0000;color:#ff5252;border:1px solid #ff5252}.header{display:flex;align-items:center;justify-content:space-between;background:#0f0f1a;border-bottom:2px solid #ff9100;padding:0 20px;height:48px;position:sticky;top:0;z-index:100}.header__brand{display:flex;align-items:center;gap:10px}.header__logo{color:#ff9100;font-size:1.4rem}.header__title{color:#ff9100;font-family:JetBrains Mono,Fira Code,monospace;font-size:.9rem;font-weight:700;letter-spacing:.15em;text-transform:uppercase}.header__right{display:flex;align-items:center;gap:14px}.header__health{display:flex;align-items:center;gap:6px}.header__label{color:#888;font-size:.7rem;font-family:JetBrains Mono,monospace;text-transform:uppercase}.header__btn{background:transparent;border:1px solid #444;color:#ccc;padding:4px 10px;border-radius:3px;cursor:pointer;font-family:JetBrains Mono,monospace;font-size:.75rem;transition:all .2s}.header__btn:hover{background:#1a2733;border-color:#ff9100;color:#ff9100}.sidebar{width:180px;min-height:calc(100vh - 48px);background:#0a0a14;border-right:1px solid #222;display:flex;flex-direction:column;padding-top:12px}.sidebar__link{display:flex;align-items:center;gap:10px;padding:10px 16px;color:#888;text-decoration:none;font-family:JetBrains Mono,monospace;font-size:.75rem;transition:all .15s;border-left:3px solid transparent}.sidebar__link:hover{color:#e0e0e0;background:#112}.sidebar__link--active{color:#ff9100;border-left-color:#ff9100;background:#112}.sidebar__icon{font-size:.9rem}.sidebar__label{text-transform:uppercase;letter-spacing:.06em}.ticker{background:#0f0f1a;border-top:1px solid #333;height:28px;display:flex;align-items:center;overflow:hidden;position:fixed;bottom:0;left:0;right:0;z-index:100}.ticker__track{display:flex;gap:32px;padding:0 20px;animation:scroll-ticker 30s linear infinite;white-space:nowrap}.ticker__item{color:#00e676;font-family:JetBrains Mono,monospace;font-size:.7rem;text-transform:uppercase;letter-spacing:.05em}@keyframes scroll-ticker{0%{transform:translate(0)}to{transform:translate(-50%)}}.dashboard{padding:20px}.dashboard__loading{color:#29b6f6;font-size:.8rem;margin-bottom:12px;animation:pulse 1.5s ease-in-out infinite}.dashboard__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px}.dashboard__card{background:#0a0a14;border:1px solid #333;border-radius:4px;overflow:hidden}.dashboard__card-header{background:#1a1a2e;color:#ff9100;padding:8px 14px;font-family:JetBrains Mono,monospace;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;border-bottom:1px solid #ff9100}.dashboard__card-body{padding:14px;display:flex;flex-wrap:wrap;gap:16px}.dashboard__metric{display:flex;align-items:center;gap:8px}.dashboard__metric-label{color:#888;font-size:.75rem;font-family:JetBrains Mono,monospace}.dashboard__stat{display:flex;flex-direction:column;align-items:center;min-width:60px}.dashboard__stat-value{color:#00e676;font-size:1.6rem;font-weight:700;font-family:JetBrains Mono,monospace}.dashboard__stat-value--running{color:#29b6f6}.dashboard__stat-value--failed{color:#ff5252}.dashboard__stat-label{color:#888;font-size:.65rem;text-transform:uppercase;letter-spacing:.05em;font-family:JetBrains Mono,monospace}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.data-table-wrapper{overflow-x:auto;border:1px solid #333;border-radius:4px;background:#0a0a0a}.data-table{width:100%;border-collapse:collapse;font-size:.8rem;font-family:JetBrains Mono,Fira Code,monospace}.data-table th{background:#1a1a2e;color:#ff9100;text-align:left;padding:8px 12px;border-bottom:2px solid #ff9100;text-transform:uppercase;font-size:.7rem;letter-spacing:.08em;position:sticky;top:0;z-index:1}.data-table td{padding:6px 12px;border-bottom:1px solid #222;color:#e0e0e0;white-space:nowrap}.data-table tbody tr:hover{background:#1a2733}.data-table__row--clickable{cursor:pointer}.data-table__empty{text-align:center;color:#666;padding:24px 12px;font-style:italic}.tooltip-container{position:relative;display:inline-flex;align-items:center;cursor:help}.tooltip-box{position:absolute;background-color:var(--color-bg-tertiary, #1f2937);color:var(--color-text-primary, #f9fafb);padding:6px 10px;border-radius:4px;font-size:12px;white-space:nowrap;z-index:1000;pointer-events:none;opacity:.95;box-shadow:0 4px 6px #0000004d;border:1px solid var(--color-border, #374151)}.tooltip-top{bottom:100%;left:50%;transform:translate(-50%) translateY(-6px)}.tooltip-bottom{top:100%;left:50%;transform:translate(-50%) translateY(6px)}.tooltip-left{right:100%;top:50%;transform:translateY(-50%) translate(-6px)}.tooltip-right{left:100%;top:50%;transform:translateY(-50%) translate(6px)}.terminal-log{background:#0d0d0d;border:1px solid #333;border-radius:4px;overflow-y:auto;font-family:JetBrains Mono,Fira Code,monospace;font-size:.75rem}.terminal-log__header{background:#1a1a2e;color:#00e676;padding:4px 12px;font-weight:700;font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;border-bottom:1px solid #333;position:sticky;top:0}.terminal-log__body{padding:8px 0}.terminal-log__line{display:flex;padding:1px 12px}.terminal-log__line:hover{background:#1a2733}.terminal-log__lineno{color:#555;min-width:36px;text-align:right;margin-right:12px;-webkit-user-select:none;user-select:none}.terminal-log__text{color:#ccc;white-space:pre-wrap;word-break:break-all}.jobs-page{padding:20px}.jobs-page__launcher{background:#0a0a14;border:1px solid #333;border-radius:4px;margin-bottom:16px;overflow:hidden}.jobs-page__launcher-header{background:#1a1a2e;color:#ff9100;padding:8px 14px;font-family:JetBrains Mono,monospace;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;border-bottom:1px solid #ff9100}.jobs-page__launcher-body{padding:12px 14px;display:flex;gap:10px;align-items:center;flex-wrap:wrap}.jobs-page__select{background:#111;color:#e0e0e0;border:1px solid #444;padding:6px 10px;border-radius:3px;font-family:JetBrains Mono,monospace;font-size:.75rem;min-width:160px}.jobs-page__select:focus{outline:none;border-color:#ff9100}.jobs-page__btn{background:#1a1a2e;color:#00e676;border:1px solid #00e676;padding:6px 16px;border-radius:3px;cursor:pointer;font-family:JetBrains Mono,monospace;font-size:.75rem;text-transform:uppercase;transition:all .2s}.jobs-page__btn:hover{background:#030}.jobs-page__btn--secondary{color:#888;border-color:#444}.jobs-page__btn--secondary:hover{background:#1a2733;color:#ccc}.jobs-page__detail{margin-top:16px;border:1px solid #333;border-radius:4px;overflow:hidden}.jobs-page__detail-header{background:#1a1a2e;color:#29b6f6;padding:8px 14px;font-family:JetBrains Mono,monospace;font-size:.75rem;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #333}.jobs-page__detail-close{background:transparent;border:none;color:#ff5252;cursor:pointer;font-size:1rem}.forecasts-page,.series-page,.catalog-page{padding:20px}.catalog-page__empty{color:#666;font-style:italic;font-size:.8rem}.catalog-page__service{margin-bottom:20px;border:1px solid #333;border-radius:4px;overflow:hidden}.catalog-page__service-header{background:#1a1a2e;color:#ff9100;padding:8px 14px;font-family:JetBrains Mono,monospace;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;border-bottom:1px solid #ff9100}.catalog-page__table{width:100%;border-collapse:collapse;font-family:JetBrains Mono,monospace;font-size:.75rem}.catalog-page__table th{background:#0f0f1a;color:#888;text-align:left;padding:6px 12px;text-transform:uppercase;font-size:.65rem;letter-spacing:.08em;border-bottom:1px solid #222}.catalog-page__table td{padding:6px 12px;color:#e0e0e0;border-bottom:1px solid #1a1a1a}.catalog-page__table tbody tr:hover{background:#1a2733}.catalog-page__cmd{color:#00e676;font-weight:700}.catalog-page__args{color:#888;font-size:.7rem}.schedules-page{display:flex;flex-direction:column;gap:1.25rem}.page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}.page-header__actions{display:inline-flex;align-items:center;gap:.6rem}.schedules-page__title{margin-bottom:.35rem}.page-subtitle{color:#9ca3af;margin-top:.2rem}.btn-primary,.btn-secondary{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;border-radius:8px;padding:.56rem .9rem;font-size:.9rem;font-weight:600;font-family:inherit;cursor:pointer;transition:all .18s ease}.btn-primary{border:1px solid #ff9100;background:linear-gradient(180deg,#ff9f1c,#ff9100);color:#111827;box-shadow:0 3px 12px #ff91003d}.btn-primary:hover{transform:translateY(-1px);filter:brightness(1.03);box-shadow:0 6px 18px #ff910052}.btn-primary:active{transform:translateY(0)}.btn-secondary{border:1px solid #334155;background:#0f172a;color:#e5e7eb}.btn-secondary:hover{border-color:#475569;background:#111f36}.calendar-panel{border:1px solid #1f2937;border-radius:12px;background:#0b1220;padding:.9rem}.calendar-panel__header{color:#ff9100;font-weight:700;font-size:.82rem;letter-spacing:.06em;text-transform:uppercase;margin-bottom:.75rem}.calendar-panel__topbar{display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap}.calendar-view-switch{display:inline-flex;align-items:center;gap:.35rem;background:#0f172a;border:1px solid #243041;border-radius:9px;padding:.2rem}.calendar-view-btn{border:1px solid transparent;background:transparent;color:#9ca3af;padding:.32rem .55rem;border-radius:7px;font-size:.78rem;font-weight:600;cursor:pointer}.calendar-view-btn:hover{color:#e5e7eb;background:#1e293be6}.calendar-view-btn.active{border-color:#334155;color:#e5e7eb;background:#1e293b}.calendar-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.75rem}.calendar-day-card{background:#111827;border:1px solid #263244;border-radius:10px;padding:.75rem}.calendar-day-title{color:#e5e7eb;font-weight:600;margin-bottom:.55rem}.calendar-events{list-style:none;display:flex;flex-direction:column;gap:.45rem}.calendar-event{display:flex;align-items:center;gap:.55rem;font-size:.82rem}.calendar-event__time{color:#93c5fd;min-width:52px;font-family:JetBrains Mono,monospace}.calendar-event__job{color:#d1d5db;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.calendar-detailed-list{display:flex;flex-direction:column;gap:.55rem}.calendar-detailed-item{border:1px solid #263244;background:#101b2e;border-radius:10px;padding:.65rem .75rem;display:flex;align-items:center;justify-content:space-between;gap:.75rem}.calendar-detailed-item__main{display:inline-flex;align-items:center;gap:.55rem;min-width:0}.calendar-detailed-item__meta{display:inline-flex;align-items:center;gap:.6rem;color:#9ca3af;font-size:.78rem}.calendar-detailed-item__cron{font-family:JetBrains Mono,monospace;color:#93c5fd}.icon-btn{width:32px;height:32px;border-radius:8px;border:1px solid #334155;background:#0f172a;color:#cbd5e1;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:all .18s ease}.icon-btn:hover{border-color:#475569;color:#fff;transform:translateY(-1px)}.icon-btn.danger{border-color:#7f1d1d;color:#fca5a5;background:#7f1d1d2e}.icon-btn.danger:hover{border-color:#ef4444;color:#fee2e2;background:#ef444438}.schedules-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1rem}.schedule-card{background:var(--card-bg, #111827);border:1px solid var(--border-color, #1f2937);border-radius:12px;padding:1rem}.schedule-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}.job-type-badge{font-weight:600;font-size:.9rem}.schedule-actions{display:flex;gap:.5rem}.schedule-details{display:flex;flex-direction:column;gap:.5rem}.detail-row{display:flex;align-items:center;gap:.5rem}.cron-expr{font-size:.85rem}.schedule-params{margin-top:.75rem;padding-top:.75rem;border-top:1px solid var(--border-color, #1f2937)}.params-title{font-size:.8rem;opacity:.8;margin-bottom:.25rem}.params-code{background:#00000040;border-radius:8px;padding:.5rem;overflow:auto;font-size:.75rem}.empty-state,.loading-state{border:1px dashed var(--border-color, #374151);border-radius:12px;padding:2rem;text-align:center}.empty-icon{opacity:.65;margin-bottom:.75rem}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;display:flex;align-items:center;justify-content:center;z-index:50}.modal-content{width:min(680px,92vw);background:var(--card-bg, #111827);border:1px solid var(--border-color, #1f2937);border-radius:12px;padding:1rem}.modal-header,.modal-footer{display:flex;justify-content:space-between;align-items:center}.modal-header{margin-bottom:.3rem}.modal-footer{margin-top:.85rem}.form-group{display:flex;flex-direction:column;gap:.5rem;margin:.75rem 0}.form-group input,.form-group select,.form-group textarea{background:#0f172a;border:1px solid var(--border-color, #334155);border-radius:8px;color:#e5e7eb;padding:.6rem .75rem}.help-icon{display:inline-flex;width:16px;height:16px;align-items:center;justify-content:center;border-radius:999px;border:1px solid var(--border-color, #475569);margin-left:.4rem;font-size:.75rem}.close-btn{background:transparent;border:1px solid #334155;color:#cbd5e1;width:32px;height:32px;border-radius:8px;font-size:1.25rem;line-height:1;cursor:pointer}.close-btn:hover{border-color:#475569;color:#fff;background:#0f172a}*{margin:0;padding:0;box-sizing:border-box}html,body,#root{height:100%;background:#060612;color:#e0e0e0;font-family:JetBrains Mono,Fira Code,Consolas,monospace;font-size:14px;-webkit-font-smoothing:antialiased}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:#0a0a14}::-webkit-scrollbar-thumb{background:#333;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#555}.app{display:flex;flex-direction:column;min-height:100vh}.app__body{display:flex;flex:1;padding-bottom:28px}.app__main{flex:1;overflow-y:auto;max-height:calc(100vh - 76px)}.page{padding:20px}.page-title{color:#ff9100;font-family:JetBrains Mono,monospace;font-size:1rem;text-transform:uppercase;letter-spacing:.15em;margin:0 0 20px;border-bottom:1px solid #333;padding-bottom:8px}::selection{background:#ff9100;color:#000}
