:root{ --bg:#f6f8fc; --panel:#fff; --soft:#fbfdff; --line:#dfe5ee; --line-strong:#c9d4e3; --text:#101828; --muted:#667085; --blue:#2563eb; --blue-soft:#dbeafe; --green:#16a34a; --green-soft:#dcfce7; --amber:#f59e0b; --amber-soft:#fff7ed; --red:#e11d48; --red-soft:#ffe4e6; --shadow:0 10px 24px rgba(16,24,40,.06); --radius:16px; } *{box-sizing:border-box;min-width:0} html,body{margin:0;background:var(--bg);color:var(--text);font:14px/1.45 Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif} button,input,select,textarea{font:inherit} button{cursor:pointer} a{text-decoration:none;color:var(--blue)} label{display:grid;gap:7px;font-size:12px;font-weight:700;color:#344054} input,select,textarea{width:100%;border:1px solid var(--line-strong);border-radius:9px;padding:10px 11px;background:#fff;color:var(--text);outline:none} input:focus,select:focus,textarea:focus{border-color:#93c5fd;box-shadow:0 0 0 3px var(--blue-soft)} textarea{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono",monospace;font-size:12px;line-height:1.5;resize:vertical} strong,p,h1,h2,h3,h4,span,a,button,div,li{overflow-wrap:break-word;word-break:normal;hyphens:none} [hidden],.support-elements{display:none!important} .app-shell{max-width:1540px;margin:0 auto;padding:20px} .onepage-main{display:grid;gap:14px} .topbar{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:18px;margin-bottom:16px} .brand{display:flex;gap:12px;align-items:center} .brand-mark{font-size:28px;line-height:1} .brand h1{margin:0;font-size:21px;letter-spacing:-.03em} .brand p{margin:2px 0 0;color:var(--muted);font-size:13px} .top-actions{display:flex;gap:14px;justify-content:flex-end;align-items:center;flex-wrap:wrap} .panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px} .section-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;margin-bottom:12px} .section-head h2,.section-head h3{margin:0;font-size:16px;letter-spacing:-.02em} .panel-icon{color:var(--blue);margin-right:7px;font-weight:900} .muted{color:var(--muted)} .primary,.secondary,.link-btn,.bucket-pill,.user-chip,.logout-link,.filter,.badge{display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:9px;padding:9px 12px;white-space:nowrap;border:1px solid transparent} .primary{background:var(--blue);color:#fff;font-weight:800;border-color:var(--blue)} .primary.small{padding:10px 14px} .secondary,.link-btn,.bucket-pill,.logout-link{background:#fff;color:#101828;border-color:var(--line-strong)} .primary:disabled,.secondary:disabled{opacity:.5;cursor:not-allowed} .full{width:100%} .user-chip{background:#fff;border-color:var(--line-strong);font-weight:700} .status-dot{width:8px;height:8px;border-radius:999px;display:inline-block;background:#98a2b3} .status-dot.green{background:var(--green)} .status-dot.amber-dot{background:var(--amber)} .bucket-pill{background:#ecfdf3;border-color:#bbf7d0;color:#166534;font-weight:800} .badge{padding:6px 10px;font-size:12px;font-weight:800} .badge.neutral{background:#eef2ff;color:#475569} .badge.running,.pill.running{background:var(--blue-soft);color:var(--blue)} .badge.success,.pill.success,.pill.full_inference_success{background:var(--green-soft);color:var(--green)} .badge.warn,.pill.warn,.pill.manual_hardware_required,.pill.generated_needs_manual_hardware{background:var(--amber-soft);color:#c2410c} .badge.error,.pill.failed,.pill.error,.pill.blocked,.pill.technical_blocker{background:var(--red-soft);color:var(--red)} .badge.stale,.pill.stale{background:#f2f4f7;color:#667085} .link-btn.disabled{pointer-events:none;opacity:.5} .operation-status,.auth-panel{border-radius:12px;padding:10px 12px;border:1px solid var(--line-strong);background:#fff} .operation-status.info{background:var(--blue-soft);border-color:#bfdbfe;color:#1d4ed8} .operation-status.success{background:var(--green-soft);border-color:#bbf7d0;color:#166534} .operation-status.warning,.auth-panel.warning{background:var(--amber-soft);border-color:#fed7aa;color:#9a3412} .operation-status.error{background:var(--red-soft);border-color:#fecaca;color:#991b1b} .workspace-grid{display:grid;grid-template-columns:minmax(300px,420px) minmax(460px,1fr) minmax(300px,420px);gap:14px;align-items:start} .left-stack{display:grid;gap:12px} .bucket-setup-panel{display:grid;gap:10px} .bucket-source-line{display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:10px;padding:9px 10px;background:var(--soft);font-size:12px} .bucket-actions{display:grid;grid-template-columns:1fr 1fr} .runs-pagination{display:flex;justify-content:center;align-items:center;gap:8px;margin-top:10px;color:var(--muted);font-size:12px} .all-events-panel{margin-top:0} .all-events-panel summary{cursor:pointer;font-weight:800;color:#344054} .field-stack{display:grid;gap:13px} .form-grid{display:grid;gap:12px} .two-cols{grid-template-columns:1fr 1fr} .build-panel{display:grid;gap:12px} .compact-toggles{display:grid;gap:10px;margin:2px 0} .compact-toggles label{display:flex;align-items:center;justify-content:flex-start;gap:10px;font-weight:600;color:#344054} .compact-toggles input{width:auto;appearance:none;width:32px;height:18px;border-radius:999px;padding:0;border:0;background:#d0d5dd;position:relative;order:-1} .compact-toggles input:checked{background:var(--blue)} .compact-toggles input:before{content:"";position:absolute;width:14px;height:14px;border-radius:999px;background:#fff;left:2px;top:2px;transition:.15s} .compact-toggles input:checked:before{left:16px} .build-gate{margin:0;text-align:center;font-size:12px} .quick-links{display:flex;gap:8px;flex-wrap:wrap;align-items:center} .active-run-panel{display:grid;gap:12px} .active-meta{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:12px 0} .active-meta div:nth-child(4),.active-meta div:nth-child(5){grid-column:auto} .summary-meta span,.detail-grid span,.validation-grid span{display:block;font-size:11px;color:var(--muted);margin-bottom:4px} .summary-meta strong,.detail-grid strong,.validation-grid strong{font-size:12px;line-height:1.25} .progress-caption{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:#344054;margin-top:2px} .progress-bar{height:7px;background:#e5e7eb;border-radius:999px;overflow:hidden} .progress-bar>div{height:100%;background:var(--blue);border-radius:999px} .timeline{display:grid;grid-template-columns:repeat(9,minmax(48px,1fr));gap:0;align-items:start} .step{position:relative;display:grid;gap:5px;text-align:center;padding:10px 2px 0;border:0;background:transparent} .step:before{content:"";position:absolute;left:0;right:0;top:20px;height:2px;background:#d0d5dd;z-index:0} .step:first-child:before{left:50%} .step:last-child:before{right:50%} .step-dot{position:relative;z-index:1;width:24px;height:24px;border-radius:999px;border:2px solid #cfd6e3;background:#fff;margin:0 auto;display:grid;place-items:center;color:#667085;font-size:11px;font-weight:900} .step.completed:before{background:var(--green)} .step.completed .step-dot{background:var(--green);border-color:var(--green);color:#fff} .step.running:before{background:linear-gradient(90deg,var(--green) 0 50%,#d0d5dd 50%)} .step.running .step-dot{border-color:var(--blue);color:var(--blue);background:#fff;box-shadow:0 0 0 4px #eff6ff} .step.failed .step-dot,.step.blocked .step-dot{border-color:var(--red);color:var(--red)} .step strong{font-size:10px;line-height:1.15} .step small{display:none} .manual-action,.blockers{border:1px solid #fed7aa;background:var(--amber-soft);border-radius:12px;padding:11px;margin:0} .manual-action p,.blockers p{margin:4px 0 0;color:#9a3412} .inline-actions{display:flex;gap:8px;flex-wrap:wrap} .mini-panel{border:1px solid var(--line);border-radius:13px;background:#fff;padding:12px} .mini-panel h4{margin:0 0 8px;font-size:13px} .card-title-row{display:flex;justify-content:space-between;align-items:center;gap:10px} .linkish{border:0;background:transparent;color:var(--blue);font-weight:700;padding:0;white-space:nowrap} .activity-feed{display:grid} .activity-row{display:grid;grid-template-columns:72px 12px minmax(0,1fr) auto;gap:8px;align-items:center;border-top:1px solid var(--line);padding:9px 0} .activity-row:first-child{border-top:0} .activity-row time{font-size:11px;color:var(--muted)} .activity-row .activity-dot{width:8px;height:8px;border-radius:999px;background:#98a2b3} .activity-row.success .activity-dot{background:var(--green)} .activity-row.running .activity-dot{background:var(--blue)} .activity-row.warning .activity-dot{background:var(--amber)} .activity-row.error .activity-dot{background:var(--red)} .activity-row strong{font-size:12px} .activity-row p{margin:2px 0 0;color:var(--muted);font-size:11px} .activity-row em{font-style:normal;font-size:10px;border-radius:999px;padding:3px 7px;background:#f2f4f7;color:#344054} .search-wrap{position:relative} .search-wrap input{padding-right:34px} .search-wrap span{position:absolute;right:12px;top:50%;transform:translateY(-50%);color:var(--muted)} .run-filters{display:flex;gap:6px;flex-wrap:wrap;margin:10px 0} .filter{padding:6px 10px;background:#fff;border-color:var(--line-strong);font-size:12px;color:#344054} .filter.active{border-color:#93c5fd;background:#eff6ff;color:var(--blue)} .runs-table{border:1px solid var(--line);border-radius:12px;overflow:hidden;background:#fff} .run-row{width:100%;display:grid;grid-template-columns:10px minmax(0,1fr) auto;gap:8px;align-items:center;padding:10px 0;border:0;border-bottom:1px solid var(--line);background:#fff;text-align:left} .run-row:last-child{border-bottom:0} .run-row:hover,.run-row.selected{background:#f8fafc} .run-row .dot{width:7px;height:7px;border-radius:999px;background:#98a2b3;margin-left:4px} .dot.running{background:var(--blue)} .dot.success,.dot.full_inference_success{background:var(--green)} .dot.manual_hardware_required,.dot.generated_needs_manual_hardware{background:var(--amber)} .dot.failed,.dot.blocked,.dot.technical_blocker{background:var(--red)} .dot.stale{background:#98a2b3} .run-row strong{font-size:12px} .run-row span{font-size:11px;color:var(--muted)} .run-row span:nth-child(4),.run-row span:nth-child(5){grid-column:2 / -1} .run-row span:nth-child(6){display:none} .run-row .pill{font-size:11px;font-style:normal;font-weight:800;border-radius:999px;padding:4px 8px;background:#f2f4f7;color:#344054;margin-right:4px} .selected-run-card{margin-top:12px;border-top:1px solid var(--line);padding-top:12px} .selected-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px} .selected-grid div:nth-child(1),.selected-grid div:nth-child(3),.selected-grid div:nth-child(5){grid-column:1} .selected-grid div:nth-child(2),.selected-grid div:nth-child(4),.selected-grid div:nth-child(6){grid-column:2} .selected-links-row{margin:10px 0} .selected-links-row .link-btn{font-size:12px;padding:8px 10px} .selected-run-card .secondary.full{margin-top:8px} .space-test-panel{padding:16px} .space-test-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(300px,450px);gap:18px;align-items:start} .test-top-row{grid-template-columns:minmax(220px,1.2fr) minmax(150px,.8fr) minmax(150px,.8fr) 110px} .editor-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:12px} .validation-result-card{border:1px solid #bfdbfe;background:#f8fbff;border-radius:13px;padding:14px} .validation-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px} .report-preview,.events{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono",monospace;background:#101828;color:#d0d5dd;border:1px solid #1d2939;border-radius:12px;padding:12px;white-space:pre-wrap;font-size:12px;line-height:1.5;max-height:300px;overflow:auto} .artifact-list{display:grid;gap:6px;font-size:13px} .artifact-list a{display:flex;justify-content:space-between;gap:8px;color:var(--blue);border-bottom:1px solid var(--line);padding:6px 0} .empty{padding:12px;color:var(--muted);font-size:13px} .support-elements,[hidden]{display:none!important} @media (max-width: 1380px){ .workspace-grid{grid-template-columns:minmax(280px,390px) minmax(430px,1fr) minmax(280px,390px)} .timeline{grid-template-columns:repeat(9,minmax(42px,1fr))} } @media (max-width: 1180px){ .workspace-grid{grid-template-columns:1fr 1fr} .runs-explorer-panel{grid-column:1 / -1} .space-test-grid{grid-template-columns:1fr} } @media (max-width: 720px){ .app-shell{padding:12px} .topbar,.workspace-grid,.space-test-grid,.editor-grid,.test-top-row,.two-cols,.active-meta,.selected-grid,.validation-grid,.bucket-actions{grid-template-columns:1fr} .top-actions,.quick-links,.inline-actions,.active-run-actions{display:grid;grid-template-columns:1fr;align-items:stretch} .primary,.secondary,.link-btn,.bucket-pill,.user-chip,.logout-link,.filter{width:100%;white-space:normal} .timeline{grid-template-columns:1fr} .step{grid-template-columns:32px minmax(0,1fr);text-align:left;align-items:center;padding:8px;border:1px solid var(--line);border-radius:12px;background:#fff} .step:before{display:none} .step-dot{grid-column:1;grid-row:1 / span 2} .step strong,.step small{grid-column:2} .step small{display:block} .activity-row{grid-template-columns:54px 10px minmax(0,1fr)} .activity-row em{grid-column:3;justify-self:start;white-space:normal} .brand p{display:none} } .secondary.danger{border-color:#fecdd3;color:#be123c;background:#fff1f2} .secondary.danger:hover{background:#ffe4e6} .timeline{overflow-x:auto;scrollbar-width:thin;padding-bottom:4px} .timeline .step{min-width:72px} @media (min-width:721px){ .timeline{grid-template-columns:repeat(26,minmax(72px,1fr))} } .active-run-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center} .active-run-actions .link-btn{padding:8px 10px;font-size:12px} .active-run-actions #cancelRun{margin-left:auto} /* v56 feedback motion */ .progress-bar{position:relative} .progress-bar>div{ transition:width .75s cubic-bezier(.22,1,.36,1), background-color .25s ease, filter .25s ease; will-change:width,transform,filter; position:relative; overflow:hidden; } .progress-bar>div.is-running::after{ content:""; position:absolute; inset:0; background:linear-gradient(90deg,transparent,rgba(255,255,255,.45),transparent); transform:translateX(-100%); animation:progress-shimmer 1.4s linear infinite; } .progress-bar>div.progress-bump{ animation:progress-bump .55s ease-out; } .value-bump{ animation:value-bump .55s ease-out; } .badge.status-bump{ animation:status-bump .7s ease-out; } .step{ transition:background-color .25s ease,border-color .25s ease,transform .25s ease,opacity .25s ease; } .step:before{ transition:background .55s ease; } .step-dot{ transition:background-color .35s ease,border-color .35s ease,color .35s ease,box-shadow .35s ease,transform .35s ease; } .step.running .step-dot{ animation:step-running-pulse 1.25s ease-in-out infinite; } .step.status-flash{ animation:step-status-flash .9s ease-out; } .step-dot.dot-pop{ animation:dot-pop .55s cubic-bezier(.34,1.56,.64,1); } .activity-row{ animation:activity-enter .28s ease-out; } @keyframes progress-shimmer{ to{transform:translateX(100%)} } @keyframes progress-bump{ 0%{filter:brightness(1);transform:scaleY(1)} 40%{filter:brightness(1.18);transform:scaleY(1.35)} 100%{filter:brightness(1);transform:scaleY(1)} } @keyframes value-bump{ 0%{transform:translateY(0);color:inherit} 40%{transform:translateY(-2px);color:var(--blue)} 100%{transform:translateY(0);color:inherit} } @keyframes status-bump{ 0%{transform:scale(1)} 35%{transform:scale(1.06)} 100%{transform:scale(1)} } @keyframes step-running-pulse{ 0%,100%{box-shadow:0 0 0 4px #eff6ff} 50%{box-shadow:0 0 0 8px rgba(37,99,235,.16)} } @keyframes step-status-flash{ 0%{background:rgba(37,99,235,.12);transform:translateY(-1px)} 100%{background:transparent;transform:translateY(0)} } @keyframes dot-pop{ 0%{transform:scale(.72)} 55%{transform:scale(1.2)} 100%{transform:scale(1)} } @keyframes activity-enter{ from{opacity:.2;transform:translateY(-4px)} to{opacity:1;transform:translateY(0)} } @media (prefers-reduced-motion: reduce){ .progress-bar>div, .progress-bar>div::after, .step, .step:before, .step-dot, .activity-row, .badge, .value-bump{ transition:none!important; animation:none!important; } } .active-run-cancel-only{justify-content:flex-end}.active-run-cancel-only #cancelRun{margin-left:auto} .selected-actions-stack{display:grid;gap:8px;margin-top:8px} /* v64: clearer timeline states and compact events */ .activity-feed.show-all{max-height:235px;overflow-y:auto;border-top:1px solid var(--line);border-bottom:1px solid var(--line)} .activity-feed.show-all .activity-row{min-height:44px} .activity-feed:not(.show-all) .activity-row:nth-child(n+4){display:none} .step.status-done:before{background:var(--green)} .step.status-done .step-dot{background:var(--green);border-color:var(--green);color:#fff} .step.status-running:before{background:linear-gradient(90deg,var(--green) 0 50%,#d0d5dd 50%)} .step.status-running .step-dot{border-color:var(--blue);color:var(--blue);background:#fff;box-shadow:0 0 0 4px #eff6ff} .step.status-failed .step-dot{border-color:var(--red);color:var(--red);background:#fff1f2} .step.status-stopped .step-dot{border-color:#94a3b8;color:#64748b;background:#f8fafc;box-shadow:none!important;animation:none!important} .step.status-muted{opacity:.48} .step.status-muted .step-dot{border-style:dashed;background:#fff;color:#98a2b3} .step.status-pending .step-dot{background:#fff;color:#98a2b3} .step.status-stopped:before,.step.status-muted:before,.step.status-pending:before{background:#d0d5dd} .progress-bar>div:not(.is-running)::after{display:none} /* v65: fixed floating notifications */ .toast-layer{ position:fixed; top:16px; left:50%; transform:translateX(-50%); z-index:9999; width:min(720px,calc(100vw - 24px)); pointer-events:none; } .floating-toast{ box-shadow:0 18px 40px rgba(15,23,42,.18); pointer-events:auto; animation:toast-enter .22s ease-out; } .operation-status.loading{ background:#eef2ff; border-color:#c7d2fe; color:#3730a3; } @keyframes toast-enter{ from{opacity:0;transform:translateY(-8px)} to{opacity:1;transform:translateY(0)} } .step.status-stopped .step-dot{ border-color:#94a3b8; color:#64748b; background:#f8fafc; box-shadow:none!important; animation:none!important; } .step.status-stopped:before{background:#d0d5dd} .step.status-running .step-dot{animation:step-running-pulse 1.25s ease-in-out infinite} /* v68: timeline auto-centering + stable activity feed */ .timeline{ scroll-behavior:smooth; overscroll-behavior-x:contain; } .activity-feed.show-all{ max-height:235px; overflow-y:auto; } /* v70: simpler events list and visible-only timeline scrolling */ .activity-feed.show-all{max-height:184px;overflow-y:auto;scrollbar-width:thin} .timeline{scroll-behavior:smooth} /* v71: compact timeline groups */ @media (min-width:721px){ .timeline{grid-template-columns:repeat(7,minmax(112px,1fr))} .timeline .step{min-width:112px} } /* v74: grouped timeline dots with circular substep progress */ .timeline .step-dot{ width:28px; height:28px; border:0; background: radial-gradient(circle at center,#fff 0 52%,transparent 54%), conic-gradient(var(--blue) 0 var(--step-progress,0%),#d0d5dd var(--step-progress,0%) 100%); box-shadow:inset 0 0 0 1px #cfd6e3; } .timeline .step-dot span{ position:relative; z-index:1; width:18px; height:18px; border-radius:999px; display:grid; place-items:center; margin:auto; background:#fff; } .step.status-done .step-dot{ background: radial-gradient(circle at center,#fff 0 52%,transparent 54%), conic-gradient(var(--green) 0 100%,#d0d5dd 100% 100%); } .step.status-running .step-dot{ background: radial-gradient(circle at center,#fff 0 52%,transparent 54%), conic-gradient(var(--blue) 0 var(--step-progress,0%),#d0d5dd var(--step-progress,0%) 100%); } .step.status-failed .step-dot{ background: radial-gradient(circle at center,#fff 0 52%,transparent 54%), conic-gradient(var(--red) 0 max(var(--step-progress,0%),8%),#fecaca max(var(--step-progress,0%),8%) 100%); } .step.status-stopped .step-dot{ background: radial-gradient(circle at center,#fff 0 52%,transparent 54%), conic-gradient(#94a3b8 0 max(var(--step-progress,0%),8%),#d0d5dd max(var(--step-progress,0%),8%) 100%); } .step small{ display:block; margin-top:2px; color:var(--muted); font-size:9px; line-height:1.15; } @media (min-width:721px){ .timeline{grid-template-columns:repeat(11,minmax(92px,1fr))} .timeline .step{min-width:92px} } /* v75: stronger grouped timeline rings and 12 precise stages */ .timeline .step-dot{ width:32px; height:32px; padding:3px; background:conic-gradient(var(--ring-color,var(--blue)) 0 var(--step-progress,0%),#d7dde7 var(--step-progress,0%) 100%); box-shadow:0 0 0 1px #cfd6e3 inset,0 1px 2px rgba(15,23,42,.08); } .timeline .step-dot span{ width:22px; height:22px; color:#475467; } .step.status-done{--ring-color:var(--green)} .step.status-running{--ring-color:var(--blue)} .step.status-failed{--ring-color:var(--red)} .step.status-stopped{--ring-color:#64748b} .step.status-pending,.step.status-muted{--ring-color:#cbd5e1} .step.status-running .step-dot{animation:step-running-pulse 1.6s ease-in-out infinite} @media (min-width:721px){ .timeline{grid-template-columns:repeat(12,minmax(90px,1fr))} .timeline .step{min-width:90px} } .cost-note{margin:6px 0 2px;font-size:11px;line-height:1.35;color:#7c2d12;background:#fff7ed;border:1px solid #fed7aa;border-radius:10px;padding:7px 9px} /* v76: coherent status color system */ .progress-bar>div.is-success{background:var(--green)} .progress-bar>div.is-error{background:var(--red)} .progress-bar>div.is-running-state{background:var(--blue)} .progress-bar>div.is-stopped{background:#64748b} .progress-bar>div.is-neutral{background:#98a2b3} #progressStatus.error,.badge.error{background:#fff1f2;color:#be123c;border-color:#fecdd3} #progressStatus.success,.badge.success{background:#ecfdf3;color:#027a48;border-color:#bbf7d0} #progressStatus.running,.badge.running{background:#eff6ff;color:#1d4ed8;border-color:#bfdbfe} #progressStatus.stopped,.badge.stopped{background:#f8fafc;color:#475569;border-color:#cbd5e1} .step.status-failed:before{background:var(--red)} .step.status-failed .step-dot{--ring-color:var(--red);color:var(--red)} .step.status-stopped .step-dot{--ring-color:#64748b;color:#64748b} .activity-row.warn .activity-dot,.activity-row.warning .activity-dot{background:var(--amber)} .activity-row.recovered .activity-dot{background:var(--amber)} .activity-row.recovered strong{color:#92400e} .activity-row.recovered p{color:#92400e} .activity-row.error strong{color:#be123c} /* v78: report preview is useful by itself */ /* v80: timeline failed-history / recovered feedback */ .step.status-warn{--ring-color:var(--amber)} .step.status-warn:before{background:var(--amber)} .step.status-warn .step-dot{--ring-color:var(--amber);color:#92400e} .step.status-warn small{color:#92400e} .top-actions .bucket-pill{display:none!important} /* v81: post-failure timeline state */ .step.status-after-fail{--ring-color:#94a3b8;opacity:.72} .step.status-after-fail:before{background:linear-gradient(90deg,var(--red) 0 35%,#cbd5e1 35% 100%)} .step.status-after-fail .step-dot{--ring-color:#94a3b8;color:#64748b} .step.status-after-fail small{color:#64748b} /* v82: explicit failure trace design */ .timeline-trace-note{ border:1px solid var(--line); border-radius:12px; padding:9px 11px; display:grid; gap:3px; background:#fff; } .timeline-trace-note strong{ display:flex; align-items:center; gap:7px; font-size:12px; } .timeline-trace-note strong span{ width:18px; height:18px; border-radius:999px; display:grid; place-items:center; font-size:11px; font-weight:900; } .timeline-trace-note p{ margin:0; font-size:11px; line-height:1.35; color:var(--muted); } .timeline-trace-note.failed{ border-color:#fecdd3; background:linear-gradient(180deg,#fff1f2 0%,#fff 100%); } .timeline-trace-note.failed strong{color:#be123c} .timeline-trace-note.failed strong span{background:#be123c;color:white} .timeline-trace-note.recovered{ border-color:#fed7aa; background:linear-gradient(180deg,#fff7ed 0%,#fff 100%); } .timeline-trace-note.recovered strong{color:#92400e} .timeline-trace-note.recovered strong span{background:var(--amber);color:#78350f} .timeline.trace-failed .step.trace-breakpoint{ transform:translateY(-2px); } .timeline.trace-failed .step.trace-breakpoint:after, .timeline.trace-recovered .step.trace-recovered:after{ content:""; position:absolute; left:50%; top:0; transform:translateX(-50%); width:2px; height:44px; border-radius:999px; z-index:0; } .timeline.trace-failed .step.trace-breakpoint:after{background:var(--red)} .timeline.trace-recovered .step.trace-recovered:after{background:var(--amber)} .timeline.trace-failed .step.trace-breakpoint .step-dot{ box-shadow:0 0 0 5px #fff1f2,0 0 0 7px #fecdd3; } .timeline.trace-recovered .step.trace-recovered .step-dot{ box-shadow:0 0 0 5px #fff7ed,0 0 0 7px #fed7aa; } .timeline.trace-failed .step.trace-post-failure{ opacity:.58; } .timeline.trace-failed .step.trace-post-failure:before{ background:repeating-linear-gradient(90deg,#cbd5e1 0 6px,transparent 6px 11px); } .timeline.trace-failed .step.trace-post-failure .step-dot{ background: repeating-linear-gradient(135deg,#f8fafc 0 4px,#e2e8f0 4px 8px); color:#64748b; } .timeline.trace-failed .step.trace-post-failure strong, .timeline.trace-failed .step.trace-post-failure small{ color:#64748b; } /* v84: hardware fallback is a routing decision, not an incident */ .step.status-fallback{--ring-color:var(--blue)} .step.status-fallback:before{background:var(--blue)} .step.status-fallback .step-dot{--ring-color:var(--blue);color:var(--blue)} .step.status-fallback small{color:#1d4ed8} .timeline-trace-note.fallback{ border-color:#bfdbfe; background:linear-gradient(180deg,#eff6ff 0%,#fff 100%); } .timeline-trace-note.fallback strong{color:#1d4ed8} .timeline-trace-note.fallback strong span{background:#1d4ed8;color:white} .timeline.trace-fallback .step.trace-fallback:after{ content:""; position:absolute; left:50%; top:0; transform:translateX(-50%); width:2px; height:44px; border-radius:999px; z-index:0; background:#1d4ed8; } .timeline.trace-fallback .step.trace-fallback .step-dot{ box-shadow:0 0 0 5px #eff6ff,0 0 0 7px #bfdbfe; } .activity-row.hardware-fallback .activity-dot{background:var(--blue)} .activity-row.hardware-fallback strong{color:#1d4ed8} .activity-row.hardware-fallback p{color:#1d4ed8} /* v85: failure/fallback reasons */ .timeline-trace-note .trace-reason{ margin-top:4px; padding:7px 8px; border-radius:9px; background:rgba(255,255,255,.72); border:1px solid rgba(148,163,184,.25); color:#344054; } .timeline-trace-note .trace-reason b{color:inherit} .step .step-reason{ margin-top:3px; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; font-size:9px; color:#475467; } .step.status-fallback .step-reason{color:#1d4ed8} .step.status-failed .step-reason{color:#be123c} .step.status-warn .step-reason{color:#92400e} .activity-row .event-reason{ margin-top:3px; color:#475467; font-size:10px; line-height:1.3; } .activity-row.error .event-reason{color:#be123c} .activity-row.hardware-fallback .event-reason{color:#1d4ed8}