:root{--background:#0f172a;--surface:#162334;--surface-hover:#1b2a3d;--text:#f8fafc;--muted:#94a3b8;--success:#22c55e;--failure:#ef4444;--running:#3b82f6;--stopped:#60a5fa;--warning:#f59e0b;--shadow:0 8px 24px #00000040;--radius:16px;--spacing:1rem}*{box-sizing:border-box}body{background:var(--background);color:var(--text);margin:0;padding:3rem;font-family:Inter,system-ui,sans-serif}#dashboard{grid-template-columns:repeat(auto-fit,minmax(420px,1fr));gap:2.5rem;display:grid}.card{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.25rem;transition:transform .12s,background .12s}.card:hover{background:var(--surface-hover)}.card .card-header{justify-content:space-between;align-items:center;margin-bottom:2rem;display:flex}.card .card-title{margin:0;font-size:1.5rem;font-weight:700;line-height:1.2}.card .card-subtitle{color:var(--muted);font-size:.85rem}.updated{color:var(--muted);font-size:.8rem}.status svg{width:24px;height:24px;display:block}.status.success circle{fill:var(--success)}.status.failed circle{fill:var(--failure)}.status.unknown circle{fill:var(--muted)}.status.success path,.status.failed path{fill:none;stroke:#fff;stroke-width:2.5px;stroke-linecap:round;stroke-linejoin:round}.smoke-tests .projects{flex-direction:column;gap:1rem;display:flex}.spinner{box-sizing:border-box;border:2px solid #3b82f640;border-top-color:var(--running);border-radius:50%;animation:.9s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.project-row{border-radius:10px;grid-template-columns:30px max-content 1fr max-content;align-items:center;gap:.75rem;min-height:42px;padding:.35rem .5rem;transition:background-color .12s,transform .12s;display:grid}.project-row:hover{background:#ffffff0a}.project-row:not(:last-child){border-bottom:1px solid #ffffff0f;padding-bottom:.9rem}.project-row.disabled .project-name{color:var(--muted)}.project-row.disabled .project-history,.project-row.disabled .project-status{opacity:.3}.project-row .project-status{justify-content:center;align-items:center;display:flex}.project-row .project-status .status svg{filter:drop-shadow(0 2px 3px #0003);width:24px;height:24px}.project-row .project-status .status svg path{fill:none;stroke:#fff;stroke-width:2.5px;stroke-linecap:round;stroke-linejoin:round}.project-row .project-status .status.disabled circle{fill:var(--muted)}.project-row .project-status .status.success circle{fill:var(--success)}.project-row .project-status .status.failed circle{fill:var(--failure)}.project-row .project-status .status.unknown circle{fill:var(--muted)}.project-row .project-name{font-weight:600}.project-row .project-state{color:var(--muted);font-size:.9rem}.project-row .project-history{flex-shrink:0;justify-content:flex-end;align-items:center;gap:.4rem;display:flex}.project-row .project-history .history-dot{border-radius:50%;display:block}.project-row .project-history .history-dot.success{background:var(--success)}.project-row .project-history .history-dot.failed{background-color:var(--failure)}.project-row .project-history .history-dot.queued{background-color:var(--running);opacity:.5}.project-row .project-history .history-dot,.project-row .project-history .history-spinner{flex:0 0 10px;width:10px;height:10px}:is(.project-row .project-history .history-dot,.project-row .project-history .history-spinner).latest{filter:brightness(1.15);flex-basis:12px;width:12px;height:12px}.project-row .project-history .history-spinner{justify-content:center;align-items:center;display:flex}.project-row .project-history .history-spinner .spinner{width:100%;height:100%}a.project-row{color:inherit;text-decoration:none}a.project-row:hover{background:#ffffff0a}.dev-environment .environment-state{border-bottom:1px solid #ffffff0a;flex-direction:column;align-items:center;gap:.35rem;margin:2rem 0 1.5rem;padding-bottom:1.5rem;display:flex}.dev-environment .environment-state.running .status circle{fill:var(--success)}.dev-environment .environment-state.failed .status circle{fill:var(--failure)}.dev-environment .environment-state.stopped .status circle{fill:var(--stopped)}.dev-environment .environment-state .state-summary{align-items:center;gap:.75rem;font-size:1.35rem;font-weight:600;display:flex}.dev-environment .environment-state .state-summary .state-icon .status svg{width:32px;height:32px}.dev-environment .environment-state .state-summary .state-label{font-size:1.35rem;font-weight:600}.dev-environment .environment-state .state-since{color:#ffffff80;font-size:.9rem}.dev-environment .environment-state .status{font-size:2.5rem}.dev-environment .events{flex-direction:column;gap:.5rem;display:flex}.dev-environment .events .event{justify-content:space-between;align-items:center;display:flex}.dev-environment .events .event .event-name{align-items:center;gap:.6rem;font-weight:500;display:flex}.dev-environment .events .event .event-time{color:#ffffffb3;font-size:.95rem}.omniscience .project-status{width:1rem;height:1rem}.omniscience .project-status.running .spinner{width:100%;height:100%}.refresh-control{z-index:1000;cursor:pointer;font:inherit;border:none;border-radius:999px;padding:.45rem .8rem;font-size:.85rem;font-weight:600;transition:background .15s,transform .15s,opacity .15s;position:fixed;bottom:1rem;right:1rem}.refresh-control.running{background:var(--success);color:#fff}.refresh-control.paused{background:var(--warning);color:#fff}.refresh-control:hover{transform:translateY(-1px)}.refresh-control:active{transform:translateY(0)}
