/* GiveBack Ops monitor styles. Design tokens come from the design handoff. */
:root{--bg:#FCFBF8;--elev:#FFFFFF;--inset:#F6F4EE;--tint:#FCF8E8;--track:#ECE9E1;--fg:#1A1815;--muted:#524F47;--subtle:#898478;--faint:#B3AFA3;--accent:#E5B617;--hair:rgba(26,24,21,.08);--strong:rgba(26,24,21,.16);--ok-bg:#F0F8F2;--ok-fg:#1F6236;--amber-bg:#FCF8E8;--amber-fg:#6E4D0D;--info-bg:#F0F4FC;--info-fg:#26417C;--neutral-bg:#F6F4EE;--neutral-fg:#524F47;--err-bg:#FDF1F0;--err-fg:#8B2F24}
*{box-sizing:border-box}
html,body{margin:0}
body{background:var(--bg);color:var(--fg);font:15px/1.45 Geist,system-ui,sans-serif;font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased}
a{color:var(--fg);text-decoration:none}
a:hover{text-decoration:underline;text-underline-offset:.2em;text-decoration-thickness:1px}
button,input,select{font:inherit}
code,.mono{font-family:"Geist Mono",ui-monospace,monospace}
@keyframes nrpulse{0%,100%{opacity:1}50%{opacity:.35}}
.hdr{position:sticky;top:0;z-index:20;height:64px;display:flex;align-items:center;gap:24px;padding:0 32px;background:rgba(255,255,255,.82);backdrop-filter:blur(20px) saturate(140%);border-bottom:1px solid var(--hair);white-space:nowrap}
.brand{display:flex;align-items:center;gap:12px}.brand:hover{text-decoration:none}
.brand img{height:36px;width:auto;display:block;mix-blend-mode:multiply}
.vr{width:1px;height:24px;background:rgba(26,24,21,.12)}
.nav{display:flex;gap:4px}
.nav a{padding:7px 12px;border-radius:8px;font-size:14px;color:var(--muted)}
.nav a:hover{background:var(--inset);text-decoration:none}
.nav a.on{color:var(--fg);font-weight:500;background:var(--inset)}
.spacer{flex:1}
.live-pill{display:flex;align-items:center;gap:8px;padding:5px 12px 5px 10px;border-radius:999px;background:var(--tint);color:var(--amber-fg);font-size:12px;font-weight:500;letter-spacing:.04em}
.live-pill:hover{background:#F8EFC8;text-decoration:none}
.dot{width:6px;height:6px;border-radius:999px;background:currentColor;display:inline-block}
.dot.pulse{animation:nrpulse 1.6s ease-in-out infinite}
.who{display:flex;align-items:center;gap:10px}
.avatar{width:28px;height:28px;border-radius:999px;background:var(--inset);border:1px solid var(--hair);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;color:var(--muted)}
.linklike{background:none;border:0;padding:0;color:var(--muted);font-size:13px;cursor:pointer}
.linklike:hover{text-decoration:underline}
main{max-width:1240px;margin:0 auto;padding:40px 32px 96px;display:flex;flex-direction:column;gap:20px}
.eyebrow{font-size:11px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--subtle)}
h1.display{font:400 48px/1.05 "Instrument Serif",serif;letter-spacing:-.02em;margin:4px 0 0}
.titlerow{display:flex;align-items:flex-end;gap:24px;flex-wrap:wrap}
.grow{flex:1}
.muted{color:var(--muted)}.subtle{color:var(--subtle)}
.stack{display:flex;flex-direction:column;gap:20px}
.card{background:var(--elev);border:1px solid var(--hair);border-radius:16px;padding:20px 24px;box-shadow:0 1px 0 rgba(26,24,21,.03),0 1px 2px rgba(26,24,21,.04)}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px}
.kpi{display:block;color:inherit}
.kpi:hover{text-decoration:none;background:var(--inset)}
.kpi .label{font-size:12px;color:var(--subtle)}
.kpi .val{font:500 28px/1.2 "Geist Mono",monospace;margin:4px 0}
.kpi .sub{font-size:13px;color:var(--muted)}
.kpi .delta{font-size:12px;margin-top:4px}
.good{color:#1F6236}.bad{color:#8B2F24}.flat{color:var(--muted)}
.pill{display:inline-flex;align-items:center;gap:6px;padding:2px 10px;border-radius:999px;font-size:12px;font-weight:500;white-space:nowrap}
.pill.ok{background:var(--ok-bg);color:var(--ok-fg)}
.pill.amber{background:var(--amber-bg);color:var(--amber-fg)}
.pill.info{background:var(--info-bg);color:var(--info-fg)}
.pill.neutral{background:var(--neutral-bg);color:var(--neutral-fg)}
.pill.err{background:var(--err-bg);color:var(--err-fg)}
.chips{display:flex;gap:8px;flex-wrap:wrap}
.chip{display:inline-block;padding:3px 10px;border-radius:4px;font-size:12px;background:var(--neutral-bg);color:var(--neutral-fg)}
.chip:hover{text-decoration:none;background:var(--track)}
.chip.on{background:var(--fg);color:#fff}
.seg{display:inline-flex;background:var(--inset);border-radius:10px;padding:3px}
.seg a{padding:5px 12px;border-radius:8px;font-size:13px;color:var(--muted)}
.seg a:hover{text-decoration:none}
.seg a.on{background:#fff;color:var(--fg);box-shadow:0 1px 2px rgba(26,24,21,.08)}
.tbl-scroll{overflow-x:auto}
table.tbl{width:100%;border-collapse:collapse;font-size:14px}
.tbl th{text-align:left;font-size:11px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--subtle);padding:10px 12px;border-bottom:1px solid var(--hair);white-space:nowrap}
.tbl td{padding:12px;border-bottom:1px solid var(--hair);vertical-align:middle}
.tbl tr[data-href]{cursor:pointer}
.tbl tr.row:hover td{background:var(--inset)}
.tbl tr.running td{background:#FFFDF5}
.num{text-align:right}
.zero{color:var(--faint)}
.tabs{display:flex;gap:24px;border-bottom:1px solid var(--hair);overflow-x:auto;white-space:nowrap}
.tabs a{padding:12px 0;color:var(--muted);border-bottom:2px solid transparent}
.tabs a:hover{text-decoration:none;color:var(--fg)}
.tabs a.on{color:var(--fg);border-color:var(--accent)}
.bar{height:4px;border-radius:2px;background:var(--track);overflow:hidden}
.bar>i{display:block;height:100%;background:#7FB894;transition:width .42s cubic-bezier(.16,1,.3,1)}
.bar.info>i{background:#8FA8D8}
.banner{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;padding:16px 24px;border-radius:16px;background:var(--tint);border:1px solid rgba(229,182,23,.35);color:var(--fg)}
.banner:hover{text-decoration:none}
.banner.err{background:var(--err-bg);border-color:rgba(139,47,36,.3)}
.chart{display:flex;align-items:flex-end;gap:6px;height:200px;border-bottom:1px solid var(--hair)}
.bar-col{flex:1;max-width:72px;display:flex;flex-direction:column;justify-content:flex-end;height:100%;min-width:4px}
.bar-col:hover{text-decoration:none;opacity:.8}
.bar-col .ok{background:#E8E3D6;border-radius:4px 4px 0 0;min-height:2px}
.bar-col.live .ok{background:var(--accent)}
.bar-col .bad{background:#D9796C;border-radius:4px 4px 0 0}
[data-tip]{position:relative;cursor:help}
[data-tip]:hover::after{content:attr(data-tip);position:absolute;left:0;top:100%;z-index:30;background:var(--fg);color:#fff;padding:6px 10px;border-radius:8px;font-size:12px;white-space:normal;width:max-content;max-width:360px}
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(#FCF8E8,#FCFBF8 46%)}
.login-card{background:#fff;border:1px solid var(--hair);border-radius:20px;padding:32px}
.btn{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:0 20px;border-radius:12px;border:0;background:var(--accent);color:var(--fg);font-weight:500;cursor:pointer}
.btn:hover{background:#ECC54B;text-decoration:none}
.btn:active{transform:scale(.98)}
.err-text{color:var(--err-fg)}
.job-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:16px}
.job.planned{background:transparent;border-style:dashed;box-shadow:none}.job.planned h3{color:var(--muted)}.job.planned .badge{color:var(--subtle)}
.job h3{margin:0 0 2px;font-size:16px;line-height:1.25}
.metrics{display:flex;gap:32px;flex-wrap:wrap;margin-top:16px}
.metric .v{font:500 28px "Geist Mono",monospace}
.metric .l{font-size:12px;color:var(--subtle)}
.elapsed{font:400 64px/1 "Instrument Serif",serif;letter-spacing:-.02em}
.evidence{font:12px/1.5 "Geist Mono",monospace;color:var(--muted);white-space:pre-wrap;word-break:break-word}
.scroll-y{max-height:430px;overflow:auto}
.switcher{display:flex;align-items:center;gap:12px;font-size:14px;color:var(--muted)}
.filters{display:flex;gap:16px;flex-wrap:wrap;align-items:center}
.filters input[type=search],.filters select{height:36px;border:1px solid rgba(26,24,21,.12);border-radius:8px;padding:0 12px;background:#fff}
.pager{display:flex;justify-content:space-between;align-items:center;color:var(--muted);font-size:13px}
.empty{padding:32px;text-align:center;color:var(--muted)}
@media (max-width:900px){.hdr{padding:0 16px}main{padding:24px 16px 64px}h1.display{font-size:36px}.elapsed{font-size:48px}}
@media (max-width:600px){.hdr{gap:6px;padding:0 10px}.brand img{height:28px}.brand span,.hdr .vr,.live-pill{display:none}.nav{gap:0}.nav a{padding:6px 7px;font-size:13px}.who{gap:6px}.filters{gap:8px}.card{overflow-x:auto}}
.field{display:flex;flex-direction:column;gap:6px;margin:16px 0}
.field label{font-size:13px;color:var(--muted)}
.field input{height:44px;border:1px solid rgba(26,24,21,.12);border-radius:8px;padding:0 12px;background:#fff;width:100%}
.field input:focus{outline:2px solid var(--accent);outline-offset:1px}
.pw-wrap{position:relative}
.pw-wrap input{padding-right:64px}
.pw-wrap button{position:absolute;right:8px;top:50%;transform:translateY(-50%);background:none;border:0;color:var(--muted);cursor:pointer;font-size:13px}
.form-error{color:var(--err-fg);margin:12px 0}
.small{font-size:13px}

/* ---- polish to match the design handoff */
.kpi .label{text-transform:uppercase;letter-spacing:.1em;font-size:11px;font-weight:500}
.kpi .delta{margin-top:12px;padding-top:10px;border-top:1px solid var(--hair)}
.kpi .val{font-size:30px}
.btn.small{min-height:36px;padding:0 16px;font-size:14px}
.banner{background:linear-gradient(#FCF8E8,#FFFDF5)}
.card.hero{background:linear-gradient(#FCF8E8,#fff)}
.metric .l{text-transform:uppercase;letter-spacing:.1em;font-size:11px}
.jobhead{display:flex;align-items:center;gap:12px;margin-bottom:12px}
.badge{width:28px;height:28px;border-radius:8px;background:var(--inset);display:flex;align-items:center;justify-content:center;font-weight:600;font-size:13px;flex:none}
.job:not(.planned) .badge{background:var(--tint);color:var(--amber-fg)}
.legend{display:flex;gap:16px;font-size:12px;color:var(--muted)}
.legend .sw{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:6px;background:#E8E3D6}
.legend .sw.bad{background:#D9796C}.legend .sw.live{background:var(--accent)}
.chart-wrap{position:relative;padding-left:32px}
.axis-top{position:absolute;left:0;top:0;font-size:11px;color:var(--faint)}
.xlabels{display:flex;gap:6px;margin-top:8px;font-size:11px;color:var(--subtle)}
.xlabels span{flex:1;max-width:72px;text-align:center;white-space:nowrap;overflow:hidden}
@media (max-width:600px){.chart-wrap{padding-left:0}.axis-top{display:none}}
.jobhead .grow{min-width:0}
.jobhead .pill{flex:none;align-self:flex-start}
@media (max-width:420px){.job-grid{grid-template-columns:1fr}}

/* ---- fixed-width tables: every value on ONE line, cut with an ellipsis, full value in the tooltip (title) */
table.tbl.fixed{table-layout:fixed;min-width:860px}
.tbl.fixed th,.tbl.fixed td{white-space:nowrap}
.tbl.fixed td.cut{overflow:hidden;text-overflow:ellipsis}
.tbl.fixed td.cut .pill{max-width:100%;overflow:hidden;text-overflow:ellipsis;display:inline-block}
.tbl .num{text-align:right}
.manifest-card{padding:0}
.manifest-head{display:flex;gap:32px;align-items:flex-start;flex-wrap:wrap;padding:24px 24px 8px}
.manifest-head h2.display{font:400 40px/1.05 "Instrument Serif",serif;letter-spacing:-.02em;margin:4px 0 6px}
.manifest-head p{margin:0}
.stats{display:flex;gap:56px;flex-wrap:wrap}
.stat .v{font:500 28px/1.2 "Geist Mono",monospace}
.stat .v.ok{color:var(--ok-fg)}.stat .v.info{color:var(--info-fg)}
.stat .l{font:12px "Geist Mono",monospace;color:var(--subtle)}
.actions{display:flex;gap:10px;flex-wrap:wrap;padding:12px 24px 18px;border-bottom:1px solid var(--hair)}
.action{font:13px "Geist Mono",monospace;padding:7px 14px;border:1px solid var(--hair);border-radius:999px;color:var(--muted)}
.action b{font-weight:400;color:var(--subtle);margin-left:6px}
.action:hover{text-decoration:none;background:var(--inset)}
.action.on{background:#fff;border-color:var(--strong);color:var(--fg)}
.manifest-card .tbl-scroll{padding:0}
.manifest-card .tbl th{background:var(--bg);padding:14px 12px}
.manifest-card .tbl th:first-child,.manifest-card .tbl td:first-child{padding-left:24px}
.manifest-card .tbl th:last-child,.manifest-card .tbl td:last-child{padding-right:24px}
.action-cell{overflow:visible}
.pill.neutral{font-family:"Geist Mono",monospace}
.info-dot{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border:1px solid var(--strong);border-radius:999px;font:italic 11px serif;color:var(--subtle);cursor:help;margin-left:6px;position:relative}
.info-dot[data-tip]:hover::after{left:auto;right:0}
.tbl.fixed tbody td{height:48px;padding-top:0;padding-bottom:0;line-height:1.2}
