@import"https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap";*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-text-size-adjust:100%}body{-webkit-font-smoothing:antialiased}:root{--clr-bg: #0A0A0A;--clr-surface: #141414;--clr-surface-2: #1C1C1C;--clr-border: #222222;--clr-border-2: #2E2E2E;--clr-primary: #FF1A1A;--clr-primary-dim: rgba(255,26,26,.12);--clr-primary-glow:rgba(255,26,26,.25);--clr-success: #22c55e;--clr-warning: #f59e0b;--clr-danger: #FF1A1A;--clr-info: #60a5fa;--clr-text: #F5F5F5;--clr-text-muted: #888888;--clr-text-dim: #555555;--clr-gpu: #8b5cf6;--clr-cpu: #3b82f6;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--space-12: 48px;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 20px;--radius-2xl: 24px;--radius-full: 9999px;--font-sans: "Inter", system-ui, sans-serif;--font-mono: "JetBrains Mono", "Cascadia Code", monospace;--transition-fast: .15s ease;--transition-base: .2s ease;--transition-slow: .3s ease;--shadow-sm: 0 1px 3px rgba(0,0,0,.5);--shadow-md: 0 4px 12px rgba(0,0,0,.6);--shadow-lg: 0 8px 24px rgba(0,0,0,.7);--shadow-glow: 0 0 20px var(--clr-primary-glow);--bottom-nav-h: 72px;--status-bar-h: 48px;--safe-bottom: env(safe-area-inset-bottom, 0px)}body{background:var(--clr-bg);color:var(--clr-text);font-family:var(--font-sans);line-height:1.5;min-height:100dvh;overflow-x:hidden}#root{min-height:100dvh;display:flex;flex-direction:column}a{color:inherit;text-decoration:none}button{cursor:pointer;font-family:inherit;border:none;background:none;color:inherit}input,textarea,select{font-family:inherit}img,svg{display:block}::selection{background:var(--clr-primary);color:#fff}::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--clr-border-2);border-radius:var(--radius-full)}.text-display{font-size:clamp(24px,5vw,32px);font-weight:700;letter-spacing:-.02em}.text-title{font-size:18px;font-weight:600}.text-body{font-size:15px}.text-caption{font-size:12px}.text-mono{font-family:var(--font-mono);font-size:13px}.text-primary{color:var(--clr-primary)}.text-muted{color:var(--clr-text-muted)}.text-success{color:var(--clr-success)}.text-warning{color:var(--clr-warning)}.text-danger{color:var(--clr-danger)}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app-shell{display:flex;flex-direction:column;min-height:100dvh}@media(min-width:1024px){.app-shell{flex-direction:row}}.main-content{flex:1;display:flex;flex-direction:column;min-height:0;padding-bottom:calc(var(--bottom-nav-h) + var(--safe-bottom))}@media(min-width:1024px){.main-content{padding-bottom:0}}.page-scroll{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}.page-content{max-width:900px;margin:0 auto;padding:var(--space-4)}@media(min-width:640px){.page-content{padding:var(--space-6) var(--space-8)}}.card{background:var(--clr-surface);border:1px solid var(--clr-border);border-radius:var(--radius-xl);transition:border-color var(--transition-base)}.card:hover{border-color:var(--clr-border-2)}.card--active{border-color:var(--clr-primary)!important;background:var(--clr-primary-dim)}.status-queued{color:var(--clr-text-muted)}.status-dispatched{color:var(--clr-info)}.status-running{color:var(--clr-warning)}.status-completed{color:var(--clr-success)}.status-failed{color:var(--clr-danger)}.status-cancelled{color:var(--clr-text-dim)}.status-checkpointed{color:var(--clr-warning)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:10px 20px;border-radius:var(--radius-full);font-size:14px;font-weight:500;transition:all var(--transition-base);min-height:44px;min-width:44px}.btn:active{transform:scale(.96)}.btn:disabled{opacity:.4;cursor:not-allowed}.btn:disabled:active{transform:none}.btn--primary{background:var(--clr-primary);color:#fff;box-shadow:0 0 16px var(--clr-primary-glow)}.btn--primary:hover:not(:disabled){background:#e00;box-shadow:0 0 24px var(--clr-primary-glow)}.btn--ghost{background:var(--clr-surface-2);border:1px solid var(--clr-border)}.btn--ghost:hover:not(:disabled){border-color:var(--clr-border-2);background:#222}.btn--danger{background:transparent;border:1px solid var(--clr-danger);color:var(--clr-danger)}.btn--danger:hover:not(:disabled){background:var(--clr-primary-dim)}.btn--sm{padding:6px 14px;font-size:12px;min-height:36px}.btn--icon{padding:10px}.input{width:100%;background:var(--clr-bg);border:1px solid var(--clr-border);border-radius:var(--radius-md);padding:12px 16px;color:var(--clr-text);font-size:15px;transition:border-color var(--transition-fast);min-height:44px}.input:focus{outline:none;border-color:var(--clr-primary)}.input::placeholder{color:var(--clr-text-dim)}textarea.input{resize:none;min-height:100px}.progress-bar{width:100%;height:4px;background:var(--clr-border);border-radius:var(--radius-full);overflow:hidden}.progress-bar__fill{height:100%;border-radius:var(--radius-full);background:var(--clr-primary);transition:width .3s ease-out;background:linear-gradient(90deg,var(--clr-primary),#ff6b35)}.progress-bar__fill--success{background:var(--clr-success)}.progress-bar__fill--warning{background:var(--clr-warning)}.badge{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:var(--radius-full);font-size:11px;font-family:var(--font-mono);font-weight:500;white-space:nowrap}.badge--gpu{background:#8b5cf626;color:#a78bfa;border:1px solid rgba(139,92,246,.3)}.badge--cpu{background:#3b82f626;color:#93c5fd;border:1px solid rgba(59,130,246,.3)}.badge--danger{background:var(--clr-primary-dim);color:var(--clr-primary);border:1px solid rgba(255,26,26,.3)}.badge--success{background:#22c55e1f;color:var(--clr-success);border:1px solid rgba(34,197,94,.3)}.badge--warning{background:#f59e0b1f;color:var(--clr-warning);border:1px solid rgba(245,158,11,.3)}.badge--muted{background:var(--clr-surface-2);color:var(--clr-text-muted);border:1px solid var(--clr-border)}.pulse-dot{width:8px;height:8px;border-radius:50%;display:inline-block}.pulse-dot--green{background:var(--clr-success);box-shadow:0 0 #22c55e66;animation:pulse-green 2s infinite}.pulse-dot--amber{background:var(--clr-warning);box-shadow:0 0 #f59e0b66;animation:pulse-amber 2s infinite}.pulse-dot--red{background:var(--clr-danger);box-shadow:0 0 #ff1a1a66;animation:pulse-red 2s infinite}.pulse-dot--grey{background:var(--clr-text-dim)}@keyframes pulse-green{0%,to{box-shadow:0 0 #22c55e66}50%{box-shadow:0 0 0 6px #22c55e00}}@keyframes pulse-amber{0%,to{box-shadow:0 0 #f59e0b66}50%{box-shadow:0 0 0 6px #f59e0b00}}@keyframes pulse-red{0%,to{box-shadow:0 0 #ff1a1a66}50%{box-shadow:0 0 0 6px #ff1a1a00}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes slide-up{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes slide-right{0%{opacity:0;transform:translate(-16px)}to{opacity:1;transform:translate(0)}}@keyframes slide-in-right{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes spin{to{transform:rotate(360deg)}}.anim-fade-in{animation:fade-in .3s ease forwards}.anim-slide-up{animation:slide-up .3s ease forwards}.anim-slide-right{animation:slide-right .3s ease forwards}.shimmer{background:linear-gradient(90deg,var(--clr-surface) 25%,var(--clr-surface-2) 50%,var(--clr-surface) 75%);background-size:200% 100%;animation:shimmer 1.4s ease-in-out infinite;border-radius:var(--radius-md)}.spinner{width:18px;height:18px;border:2px solid var(--clr-border);border-top-color:var(--clr-primary);border-radius:50%;animation:spin .8s linear infinite;display:inline-block}.spinner--sm{width:14px;height:14px;border-width:2px}.spinner--lg{width:28px;height:28px;border-width:3px}.divider{height:1px;background:var(--clr-border);margin:var(--space-4) 0}.sheet-overlay{position:fixed;inset:0;background:#000000b3;backdrop-filter:blur(6px);z-index:100;animation:fade-in .2s ease}.sheet{position:fixed;bottom:0;left:0;right:0;background:var(--clr-surface);border:1px solid var(--clr-border);border-top-left-radius:var(--radius-2xl);border-top-right-radius:var(--radius-2xl);z-index:101;max-height:90dvh;display:flex;flex-direction:column;animation:slide-up .25s ease;padding-bottom:var(--safe-bottom)}.sheet__handle{width:36px;height:4px;background:var(--clr-border-2);border-radius:var(--radius-full);margin:12px auto 0;flex-shrink:0}.sheet__header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--clr-border);flex-shrink:0}.sheet__body{flex:1;overflow-y:auto;padding:var(--space-5);-webkit-overflow-scrolling:touch}@media(min-width:640px){.sheet{inset:0 0 auto auto;width:min(480px,100vw);height:100dvh;max-height:none;border-radius:0;border-left:1px solid var(--clr-border);animation:slide-in-right .25s ease}.sheet__handle{display:none}}.timeline{position:relative;padding-left:24px}.timeline:before{content:"";position:absolute;left:7px;top:8px;bottom:8px;width:2px;background:linear-gradient(to bottom,var(--clr-border-2),transparent)}.timeline__item{position:relative;margin-bottom:var(--space-4);font-size:13px}.timeline__dot{position:absolute;left:-21px;top:4px;width:10px;height:10px;border-radius:50%;border:2px solid var(--clr-surface);background:var(--clr-border-2)}.timeline__dot--active{background:var(--clr-primary)}.timeline__dot--done{background:var(--clr-success)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.glass{background:#141414d9;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}.status-bar{height:var(--status-bar-h);display:flex;align-items:center;padding:0 var(--space-4);border-bottom:1px solid var(--clr-border);gap:var(--space-3);font-size:12px;flex-shrink:0;font-family:var(--font-mono);position:sticky;top:0;z-index:20;background:var(--clr-bg)}.bottom-nav{position:fixed;bottom:0;left:0;right:0;height:calc(var(--bottom-nav-h) + var(--safe-bottom));padding-bottom:var(--safe-bottom);display:flex;background:#0a0a0af2;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-top:1px solid var(--clr-border);z-index:50}@media(min-width:1024px){.bottom-nav{display:none}}.bottom-nav__item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:var(--space-2);font-size:10px;color:var(--clr-text-dim);transition:color var(--transition-fast);min-height:44px}.bottom-nav__item--active{color:var(--clr-primary)}.bottom-nav__item:hover{color:var(--clr-text-muted)}.sidebar{width:240px;flex-shrink:0;background:var(--clr-bg);border-right:1px solid var(--clr-border);display:none;flex-direction:column;height:100dvh;position:sticky;top:0}@media(min-width:1024px){.sidebar{display:flex}}.sidebar__logo{height:60px;display:flex;align-items:center;padding:0 var(--space-5);border-bottom:1px solid var(--clr-border);gap:var(--space-3);font-weight:700;letter-spacing:.05em}.sidebar__logo-icon{width:32px;height:32px;background:var(--clr-surface);border:1px solid var(--clr-border);border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center}.sidebar__nav{flex:1;padding:var(--space-3)}.sidebar__nav-item{display:flex;align-items:center;gap:var(--space-3);padding:10px var(--space-3);border-radius:var(--radius-md);font-size:14px;font-weight:500;color:var(--clr-text-muted);transition:all var(--transition-fast);cursor:pointer;width:100%;text-align:left}.sidebar__nav-item:hover{background:var(--clr-surface-2);color:var(--clr-text)}.sidebar__nav-item--active{background:var(--clr-primary-dim);color:var(--clr-primary)}.sidebar__footer{padding:var(--space-4);border-top:1px solid var(--clr-border)}.upload-zone{border:2px dashed var(--clr-border-2);border-radius:var(--radius-xl);padding:var(--space-12);text-align:center;cursor:pointer;transition:all var(--transition-slow);background:var(--clr-bg)}.upload-zone:hover,.upload-zone--drag-over{border-color:var(--clr-primary);background:var(--clr-primary-dim)}.upload-zone__icon{transition:transform var(--transition-slow)}.upload-zone:hover .upload-zone__icon{transform:translateY(-4px)}.pipeline-card{padding:var(--space-4);border:1px solid var(--clr-border);border-radius:var(--radius-lg);cursor:pointer;transition:all var(--transition-base)}.pipeline-card:hover{border-color:var(--clr-border-2)}.pipeline-card--selected{border-color:var(--clr-primary);background:var(--clr-primary-dim);box-shadow:0 0 12px var(--clr-primary-glow)}.task-card{padding:var(--space-4) var(--space-5);border:1px solid var(--clr-border);border-radius:var(--radius-lg);background:var(--clr-surface);cursor:pointer;transition:all var(--transition-base);display:flex;gap:var(--space-3);align-items:flex-start}.task-card:hover{border-color:#ff1a1a4d;box-shadow:0 4px 16px #0006}.task-card--running{border-color:#f59e0b40}.task-card--failed{border-color:#ff1a1a40}.task-card--completed{border-color:#22c55e33}.node-card{background:var(--clr-surface);border:1px solid var(--clr-border);border-radius:var(--radius-lg);padding:var(--space-5);transition:border-color var(--transition-base)}.node-card--warning{border-color:#f59e0b80;animation:border-pulse 2s infinite}.node-card--busy{border-color:#8b5cf64d}@keyframes border-pulse{0%,to{border-color:#f59e0b80}50%{border-color:#f59e0be6}}.metric-card{background:var(--clr-surface);border:1px solid var(--clr-border);border-radius:var(--radius-lg);padding:var(--space-5)}.metric-card__value{font-size:28px;font-weight:700;letter-spacing:-.02em}.metric-card__label{font-size:12px;color:var(--clr-text-muted);margin-top:2px}.danger-zone{border:1px solid rgba(255,26,26,.3);border-radius:var(--radius-lg);padding:var(--space-5);background:#ff1a1a0a}.steps{display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-6)}.step-dot{width:8px;height:8px;border-radius:50%;background:var(--clr-border-2);transition:background var(--transition-base)}.step-dot--active{background:var(--clr-primary);width:24px;border-radius:var(--radius-full)}.step-dot--done{background:var(--clr-success)}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-12) var(--space-8);text-align:center;gap:var(--space-4);border:1px dashed var(--clr-border);border-radius:var(--radius-2xl)}.empty-state__icon{color:var(--clr-border-2)}.webgl-container{width:100%;border-radius:var(--radius-xl);overflow:hidden;border:1px solid var(--clr-border);background:var(--clr-bg);position:relative}.webgl-fallback{display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#0f0f0f,#1a0505,#0f0f0f)}.live-badge{position:absolute;top:var(--space-3);left:var(--space-3);z-index:2;background:#000000b3;border:1px solid rgba(255,26,26,.3);color:var(--clr-primary);font-family:var(--font-mono);font-size:10px;padding:3px 10px;border-radius:var(--radius-full);display:flex;align-items:center;gap:6px}.network-banner{background:#f59e0b1a;border:1px solid rgba(245,158,11,.3);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);font-size:13px;color:var(--clr-warning);display:flex;align-items:center;gap:var(--space-3)}
