:root{--bg:#161618;--panel:#1f1f22;--panel-2:#2a2a2e;--border:#3a3a40;--text:#e6e6e8;--muted:#9a9aa2;--accent:#3d9bff;--red:#e5484d;--yellow:#e0b000;--green:#3fb950;--purple:#a371f7;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;color:var(--text);background:var(--bg);font:13px/1.4 system-ui,-apple-system,Segoe UI,sans-serif}*{box-sizing:border-box}html,body,#root{background:var(--bg);height:100%;margin:0}button,select,input{font:inherit;color:var(--text);background:var(--panel-2);border:1px solid var(--border);border-radius:4px;padding:3px 8px}button{cursor:pointer}button[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:#fff}.muted{color:var(--muted)}.app{flex-direction:column;height:100%;display:flex}.header,.toolbar{background:var(--panel);border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:12px;padding:8px 12px;display:flex}fieldset{border:none;min-width:0;margin:0;padding:0}.group{align-items:center;gap:2px;display:inline-flex}.differ-count.bad{color:var(--red);font-weight:600}.promoted-count{color:var(--purple)}.promotions-warning{color:var(--red);overflow-wrap:anywhere;font-weight:600}.error-banner{color:#ffd7d8;background:#4a1d1f;margin:0;padding:8px 12px}.empty{color:var(--muted);padding:16px}.body{flex:1;min-height:0;display:flex}.grid{flex:1;grid-template-columns:repeat(auto-fill,326px);align-content:start;gap:12px;padding:12px;display:grid;overflow-y:auto}.strip{border-right:1px solid var(--border);flex-direction:column;flex:none;gap:8px;width:190px;padding:8px;display:flex;overflow-y:auto}.tile{text-align:left;background:var(--panel);border:3px solid #0000;border-radius:4px;flex-direction:column;padding:0;display:flex;overflow:hidden}.tile img{aspect-ratio:16/9;object-fit:contain;background:#000;width:320px;display:block}.strip .tile img{width:100%}.tile-noimage{aspect-ratio:16/9;width:320px;color:var(--muted);background:#000;justify-content:center;align-items:center;display:flex}.strip .tile-noimage{width:100%}.tile.border-red{border-color:var(--red)}.tile.border-yellow{border-color:var(--yellow)}.tile.border-no-golden{border-color:var(--red);border-style:dashed}.tile.border-promoted{border-color:var(--purple)}.tile.selected{outline:2px solid var(--accent);outline-offset:1px}.tile[aria-pressed=true] .tile-meta{color:inherit}.tile-text{flex-direction:column;padding:4px 6px;display:flex}.tile-title{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.tile-meta{color:var(--muted);flex-wrap:wrap;column-gap:8px;font-size:12px;display:flex}.viewer{flex-direction:column;flex:1;min-width:0;display:flex}.toolbar .close,.toolbar .update-golden{margin-left:auto}.toolbar .already-golden{color:var(--purple)}.toolbar .update-golden+.close{margin-left:0}.modal-backdrop{z-index:100;background:#0009;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.modal{background:var(--panel);border:1px solid var(--border);border-radius:6px;width:min(560px,100%);max-height:100%;padding:16px 20px;overflow-y:auto;box-shadow:0 8px 32px #00000080}.modal h2{margin:0 0 8px;font-size:15px}.modal-frames{font-variant-numeric:tabular-nums;max-height:200px;margin:8px 0;padding-left:20px;overflow-y:auto}.modal-result{overflow-wrap:anywhere}.modal-result a{color:var(--accent)}.modal-result.error{color:#ffd7d8}.modal-actions{justify-content:flex-end;gap:8px;margin-top:12px;display:flex}button.danger{background:var(--red);border-color:var(--red);color:#fff}button:disabled{cursor:default;opacity:.6}.badge{background:var(--panel-2);border-radius:3px;padding:1px 6px}.badge.red,.badge.no-golden{background:var(--red);color:#fff}.badge.yellow{background:var(--yellow);color:#000}.badge.identical,.badge.within-tolerance{background:var(--green);color:#000}.badge.promoted{background:var(--purple);color:#000}.legend{color:var(--muted);flex-basis:100%;order:10;margin:0;font-size:12px}.legend .badge,.tile-meta .badge{font-size:11px}.stage{touch-action:none;-webkit-user-select:none;user-select:none;background:repeating-conic-gradient(#202024 0% 25%,#18181b 0% 50%) 0 0/16px 16px;flex:1;min-height:0;position:relative;overflow:hidden}.layer{pointer-events:none;position:absolute;inset:0}.layer canvas{transform-origin:0 0;position:absolute;top:0;left:0}svg.line{pointer-events:none;position:absolute;inset:0}svg.line line{stroke:#fff;stroke-width:2px;filter:drop-shadow(0 0 2px #000)}.hover-box{pointer-events:none;outline:1px solid #ff0;position:absolute;box-shadow:0 0 0 1px #000}.label{color:#fff;pointer-events:none;background:#000a;padding:2px 6px;font-size:11px;position:absolute;bottom:8px}.label.left{left:8px}.label.right{right:8px}.notice{pointer-events:none;background:#000c;border-radius:4px;padding:4px 8px;position:absolute;top:8px;left:50%;transform:translate(-50%)}.notice.error{color:#ffb4b6}.pixel-panel{cursor:default;background:#1d1d1fee;border:1px solid #666;border-radius:6px;min-width:260px;font-size:12px;position:absolute;box-shadow:0 4px 14px #0008}.pixel-panel-title{cursor:move;-webkit-user-select:none;user-select:none;background:#333;border-radius:6px 6px 0 0;justify-content:space-between;align-items:center;padding:4px 8px;display:flex}.pixel-panel-title .roll{background:0 0;border:none;padding:0 4px}.pixel-panel table{border-collapse:collapse;font-variant-numeric:tabular-nums;margin:4px 8px 8px}.pixel-panel th{text-align:left;color:var(--muted);vertical-align:top;white-space:nowrap;padding:2px 12px 2px 0;font-weight:400}.pixel-panel td{text-align:right;white-space:nowrap;padding:2px 0;font-family:ui-monospace,SF Mono,Menlo,monospace}.pixel-panel .num{text-align:right;display:inline-block}.channels{flex-direction:column;display:flex}.scrubber{background:var(--panel);border-top:1px solid var(--border);gap:2px;padding:6px 12px;display:flex}.tick{background:#444;border:1px solid #0000;border-radius:2px;flex:1;min-width:4px;height:18px;padding:0}.tick.within-tolerance{background:#4a6a4a}.tick.yellow{background:var(--yellow)}.tick.red,.tick.no-golden{background:var(--red)}.tick[aria-current=true]{outline:2px solid var(--accent);border-color:#fff}.icon{fill:currentColor;vertical-align:-4px;flex:none;width:18px;height:18px}button:has(>.icon){justify-content:center;align-items:center;gap:4px;display:inline-flex}.group.filters{grid-auto-columns:1fr;grid-auto-flow:column;display:grid}.run-select,.run-select option,.run-time{font-variant-numeric:tabular-nums;font-family:ui-monospace,SF Mono,Menlo,monospace}.header{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;display:grid}.header-run{flex-wrap:wrap;grid-area:1/1;align-items:center;gap:12px;min-width:0;display:flex}.header .filters{grid-area:1/2}.header input[type=search]{grid-area:1/3;justify-self:end;width:min(220px,100%);min-width:0}.header .legend{grid-area:2/1/auto/-1}.run-select,.run-time{text-overflow:ellipsis;white-space:nowrap;min-width:0;max-width:100%;overflow:hidden}@media (width<=860px){.header{grid-template-columns:minmax(0,1fr)}.header .filters{grid-area:2/1;justify-self:center}.header input[type=search]{grid-area:3/1;justify-self:stretch;width:auto}.header .legend{grid-area:4/1}}.filters button[data-kind=red]{background:#e5484d2e}.filters button[data-kind=yellow]{background:#e0b0002e}.filters button[data-kind=promoted]{background:#a371f72e}.filters button[data-kind=green]{background:#3fb9502e}.filters button[data-kind=red][aria-pressed=true]{border-color:var(--red);background:#e5484d99}.filters button[data-kind=yellow][aria-pressed=true]{border-color:var(--yellow);color:#000;background:#e0b000bf}.filters button[data-kind=promoted][aria-pressed=true]{border-color:var(--purple);background:#a371f799}.filters button[data-kind=green][aria-pressed=true]{border-color:var(--green);background:#3fb95099}.filters button[aria-pressed=true]{box-shadow:inset 0 0 0 1px}.alarm{margin:0;padding:6px 12px}.alarm.ok{color:var(--green);font-size:12px}.alarm.bad{border-bottom:2px solid var(--red);background:#e5484d2e}.alarm.bad ul{margin:4px 0 0;padding-left:20px}.alarm a{color:var(--text);overflow-wrap:anywhere}.now{flex:1;padding:8px 12px;overflow:auto}.now-note{color:var(--muted);margin:0 0 8px}.now-table{border-collapse:collapse;width:100%}.now-table th,.now-table td{text-align:left;vertical-align:top;border-bottom:1px solid var(--border);padding:4px 8px}.now-table th{color:var(--muted);font-weight:400}.now-table a{color:var(--text)}.now-row td:first-child{border-left:3px solid #0000}.now-row.red td:first-child,.now-row.no-golden td:first-child{border-left-color:var(--red)}.now-row.yellow td:first-child{border-left-color:var(--yellow)}.now-row.promoted td:first-child{border-left-color:var(--purple)}.now-warning{color:var(--yellow);overflow-wrap:anywhere;font-size:12px;display:block}.now-newer{color:var(--muted);font-size:12px;display:block}.now-id{color:var(--muted);overflow-wrap:anywhere;font-size:12px;display:block}.now-table .badge+.badge{margin-left:4px}.tile-wrap{flex-direction:column;display:flex;position:relative}.tile-mark{display:flex;position:absolute;top:6px;right:6px}.progress-mark{vertical-align:middle;flex:none;width:16px;height:16px;padding:0;display:inline-block}.pie{border:2px solid var(--purple);background:var(--bg);border-radius:50%}.pie.quarter{background:conic-gradient(var(--purple) 0 25%, var(--bg) 25% 100%)}.pie.half{background:conic-gradient(var(--purple) 0 50%, var(--bg) 50% 100%)}.alert-triangle{background:var(--red);clip-path:polygon(50% 0,100% 100%,0 100%);color:#fff;text-align:center;border:none;border-radius:0;width:18px;font-size:10px;font-weight:700;line-height:20px}.failure-panel{z-index:20;background:var(--panel);border:1px solid var(--red);border-radius:6px;width:min(420px,100% - 32px);padding:12px 16px;position:fixed;top:64px;right:16px}.failure-panel h2{margin:0 0 4px;font-size:14px}.failure-panel a{color:var(--accent);align-self:center}.toast{z-index:30;background:var(--panel-2);border:1px solid var(--purple);border-radius:6px;max-width:calc(100% - 32px);padding:8px 14px;position:fixed;bottom:16px;left:50%;transform:translate(-50%)}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.alarm.stale{color:var(--muted);font-size:12px}.now.stale .now-table{opacity:.55;filter:grayscale()}.now-stale,.alarm-stale{color:var(--yellow);margin:0 0 8px;font-size:12px}
