:root{--bg:#f6f7f9;--surface:#fff;--border:#e3e6ea;--text:#1a1d21;--text-muted:#6b7280;--ok:#17803d;--ok-soft:#dcfce7;--warn:#b45309;--warn-soft:#fef3c7;--crit:#b91c1c;--crit-soft:#fee2e2;--info:#1d4ed8;--info-soft:#dbeafe;--radius:10px;--shadow:0 1px 2px #1018280f, 0 1px 3px #1018281a;--mono:ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace}@media (prefers-color-scheme:dark){:root{--bg:#0f1115;--surface:#171a20;--border:#272b33;--text:#e6e8eb;--text-muted:#9099a6;--ok:#4ade80;--ok-soft:#14321f;--warn:#fbbf24;--warn-soft:#362a10;--crit:#f87171;--crit-soft:#3b1618;--info:#60a5fa;--info-soft:#14243f;--shadow:0 1px 2px #0006}}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;margin:0;font:14px/1.5 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}.boot{text-align:center;color:var(--text-muted);padding:3rem}.muted{color:var(--text-muted)}.login-page{place-items:center;min-height:100vh;padding:1rem;display:grid}.login-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);flex-direction:column;width:100%;max-width:340px;padding:2rem;display:flex}.login-card h1{margin:0;font-size:1.35rem}.login-sub{color:var(--text-muted);margin:.15rem 0 1.5rem;font-size:.85rem}.login-card label{margin-bottom:.3rem;font-size:.8rem;font-weight:600}.login-card input{border:1px solid var(--border);background:var(--bg);color:var(--text);border-radius:6px;margin-bottom:1rem;padding:.6rem .7rem;font-size:.95rem}.login-card input:focus{outline:2px solid var(--info);outline-offset:1px}.login-card button{background:var(--info);color:#fff;cursor:pointer;border:0;border-radius:6px;padding:.65rem;font-weight:600}.login-card button:disabled{opacity:.55;cursor:not-allowed}.login-error{background:var(--crit-soft);color:var(--crit);border-radius:6px;margin:0 0 1rem;padding:.5rem .65rem;font-size:.85rem}.app{max-width:1280px;margin:0 auto;padding:1rem}.topbar{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1rem;padding:.85rem 1rem;display:flex}.topbar-left{flex-wrap:wrap;align-items:center;gap:.7rem;display:flex}.topbar h1{margin:0;font-size:1.05rem}.topbar-right{align-items:center;gap:.9rem;display:flex}.topbar-summary{color:var(--text-muted);font-size:.85rem}.alert-text{color:var(--crit)}.warn-text{color:var(--warn)}.beacon{border-radius:50%;flex-shrink:0;width:10px;height:10px}.beacon-ok{background:var(--ok);box-shadow:0 0 0 3px var(--ok-soft)}.beacon-alert{background:var(--crit);box-shadow:0 0 0 3px var(--crit-soft);animation:2s ease-in-out infinite pulse}.beacon-warn{background:var(--warn);box-shadow:0 0 0 3px var(--warn-soft)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.45}}@media (prefers-reduced-motion:reduce){.beacon-alert{animation:none}}.link-button{color:var(--info);cursor:pointer;background:0 0;border:0;padding:0;font-size:.85rem}.banner{border-radius:var(--radius);margin-bottom:1rem;padding:.7rem .9rem;font-size:.88rem}.banner-error{background:var(--crit-soft);color:var(--crit)}.grid{grid-template-columns:repeat(auto-fit,minmax(340px,1fr));align-items:start;gap:1rem;display:grid}.widget{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:1rem 1.1rem 1.1rem;overflow:hidden}.widget-wide{grid-column:1/-1}.widget-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.9rem;display:flex}.widget-head h2{align-items:center;gap:.5rem;margin:0;font-size:.95rem;display:flex}.widget-foot{margin:.8rem 0 0;font-size:.78rem}.badge{border-radius:999px;padding:.12rem .5rem;font-size:.72rem;font-weight:600}.badge-ok{background:var(--ok-soft);color:var(--ok)}.badge-critical{background:var(--crit-soft);color:var(--crit)}.badge-warn{background:var(--warn-soft);color:var(--warn)}.badge-muted{background:var(--border);color:var(--text-muted)}.app-subtext{margin-top:.15rem;font-size:.72rem}.parked-group{margin-top:.9rem}.parked-group summary{cursor:pointer;padding:.3rem 0;font-size:.82rem}.parked-group[open] summary{margin-bottom:.5rem}.freshness{color:var(--text-muted);white-space:nowrap;align-items:center;gap:.35rem;font-size:.75rem;display:inline-flex}.freshness-dot{background:var(--ok);border-radius:50%;width:6px;height:6px}.freshness-stale .freshness-dot{background:var(--warn)}.freshness-stale{color:var(--warn)}.freshness-dead .freshness-dot{background:var(--crit)}.freshness-dead{color:var(--crit);font-weight:600}.app-table{border-collapse:collapse;width:100%;font-size:.85rem}.app-table th{text-align:left;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);border-bottom:1px solid var(--border);padding:0 .5rem .5rem;font-size:.72rem;font-weight:600}.app-table td{border-bottom:1px solid var(--border);vertical-align:middle;padding:.55rem .5rem}.app-table tr:last-child td{border-bottom:0}.row-down{background:var(--crit-soft)}.app-name{align-items:center;gap:.4rem;font-weight:600;display:flex}.status-pill{border-radius:999px;padding:.1rem .5rem;font-size:.72rem;font-weight:600;display:inline-block}.status-pill.up{background:var(--ok-soft);color:var(--ok)}.status-pill.down{background:var(--crit-soft);color:var(--crit)}.infra-list{margin:0;padding:0;font-size:.85rem;list-style:none}.infra-list li{border-bottom:1px solid var(--border);align-items:center;gap:.6rem;padding:.4rem 0;display:flex}.infra-list li:last-child{border-bottom:0}.infra-list li.row-down{background:var(--crit-soft);margin:0 -1.1rem;padding:.4rem 1.1rem}.infra-name{flex:1;font-weight:600}.tag{font-size:.68rem;font-family:var(--mono);color:var(--text-muted);background:var(--bg);border:1px solid var(--border);border-radius:4px;margin-left:.3rem;padding:0 .3rem}.tag-warn{color:var(--warn);border-color:var(--warn)}.deploy-state{font-family:var(--mono);font-size:.78rem}.deploy-current{color:var(--ok)}.deploy-behind{color:var(--warn);font-weight:600}.deploy-unknown{color:var(--text-muted)}.tick{color:var(--ok);font-weight:700}.sparkline{display:block}.spark-up{fill:var(--ok);opacity:.75}.spark-down{fill:var(--crit)}.spark-line{stroke:var(--info);stroke-width:1.5px}.spark-area{fill:var(--info);opacity:.14}.spark-empty{color:var(--text-muted);font-size:.72rem}.progress-wrap{align-items:center;gap:.7rem;margin-bottom:.9rem;display:flex}.progress-bar{background:var(--border);border-radius:999px;flex:1;height:8px;overflow:hidden}.progress-fill{background:linear-gradient(90deg, var(--ok), var(--info));border-radius:999px;height:100%;transition:width .6s}.progress-label{color:var(--text-muted);white-space:nowrap;font-size:.78rem}.status-counts{flex-wrap:wrap;gap:.4rem;margin:0 0 .9rem;padding:0;list-style:none;display:flex}.count-chip{background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:.15rem .5rem;font-size:.75rem}.chip-urgent{background:var(--crit-soft);color:var(--crit);border-color:#0000}.chip-blocked{background:var(--warn-soft);color:var(--warn);border-color:#0000}.chip-done{background:var(--ok-soft);color:var(--ok);border-color:#0000}.item-list{margin:0;padding:0;list-style:none}.item{border-bottom:1px solid var(--border);align-items:baseline;gap:.5rem;padding:.4rem 0;font-size:.83rem;display:flex}.item:last-child{border-bottom:0}.dot{background:var(--info);border-radius:50%;flex-shrink:0;width:7px;height:7px}.dot-urgent{background:var(--crit)}.dot-open{background:var(--info)}.dot-blocked{background:var(--warn)}.dot-low{background:var(--text-muted)}.item-label{flex:1;min-width:0}.item-detail{color:var(--text-muted);white-space:nowrap;font-size:.72rem}.vitals-grid{grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:.9rem;display:grid}.vitals-metric{flex-direction:column;gap:.25rem;display:flex}.vitals-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;font-size:.72rem}.vitals-value{font-size:1.4rem;font-weight:700;font-family:var(--mono)}.metric-ok{color:var(--ok)}.metric-warn{color:var(--warn)}.metric-crit{color:var(--crit)}.item-label a{color:var(--info);font-weight:600;text-decoration:none}.item-label a:hover{text-decoration:underline}.footer{text-align:center;padding:1.2rem 0 .5rem;font-size:.78rem}@media (width<=640px){.app{padding:.6rem}.app-table{font-size:.78rem}.app-table th:nth-child(5),.app-table td:nth-child(5),.app-table th:nth-child(6),.app-table td:nth-child(6){display:none}}
