:root{--bg:#0f1419;--panel:#1a2332;--text:#e7ecf3;--muted:#8b9bb4;--accent:#3d9cf0;--line:#2a3548;--warn:#e6a23c;--hot:#f07178;--good:#7fd99a}*{box-sizing:border-box}html,body,#root{min-height:100vh;margin:0}body{background:radial-gradient(900px 420px at 8% -8%, #1c3a5c 0%, transparent 55%), radial-gradient(700px 360px at 100% 0%, #243018 0%, transparent 50%), var(--bg);color:var(--text);font-family:IBM Plex Sans,Segoe UI,sans-serif;font-size:13px}main{max-width:1200px;margin:0 auto;padding:.9rem 1rem 1.5rem}h1{letter-spacing:-.02em;margin:0 0 .2rem;font-size:1.15rem;font-weight:650}p.sub{color:var(--muted);margin:0 0 .45rem;font-size:.82rem;line-height:1.35}p.warn-line{color:var(--warn);margin:0 0 .55rem;font-size:.75rem;line-height:1.35}.toolbar{flex-wrap:wrap;align-items:center;gap:.5rem .85rem;margin-bottom:.65rem;display:flex}.stats{grid-template-columns:repeat(auto-fill,minmax(7.5rem,1fr));gap:.4rem;margin-bottom:.75rem;display:grid}.stat{background:var(--panel);border:1px solid var(--line);min-width:0;padding:.4rem .55rem}.stat b{white-space:nowrap;text-overflow:ellipsis;font-size:.98rem;font-weight:650;line-height:1.2;display:block;overflow:hidden}.stat span{color:var(--muted);text-transform:uppercase;letter-spacing:.03em;font-size:.68rem}.stat.hot b{color:var(--hot)}.stat.devices-stat{border-color:color-mix(in srgb, var(--accent) 45%, var(--line));background:color-mix(in srgb, var(--accent) 8%, var(--panel))}.stat.devices-stat b{color:var(--text);font-size:1.2rem}.badge{border:1px solid var(--accent);color:var(--accent);text-transform:uppercase;letter-spacing:.04em;margin-bottom:.4rem;padding:.1rem .4rem;font-size:.65rem;display:inline-block}.badge.warn{border-color:var(--warn);color:var(--warn)}.mqtt-chip{border:1px solid var(--line);background:color-mix(in srgb, var(--panel) 80%, transparent);letter-spacing:.01em;white-space:nowrap;text-overflow:ellipsis;align-items:center;max-width:min(42rem,100%);padding:.18rem .5rem;font-size:.72rem;font-weight:550;line-height:1.25;display:inline-flex;overflow:hidden}.mqtt-chip.mqtt-ok{border-color:color-mix(in srgb, var(--good) 55%, var(--line));color:var(--good)}.mqtt-chip.mqtt-warn{border-color:color-mix(in srgb, var(--warn) 55%, var(--line));color:var(--warn)}.mqtt-chip.mqtt-bad{border-color:color-mix(in srgb, var(--hot) 55%, var(--line));color:var(--hot)}.mqtt-chip.mqtt-muted{color:var(--muted)}label.toggle{color:var(--muted);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:.35rem;font-size:.8rem;display:inline-flex}label.site-picker{color:var(--muted);align-items:center;gap:.35rem;font-size:.8rem;display:inline-flex}label.site-picker select,label.site-picker input{background:var(--bg);border:1px solid var(--line);color:var(--text);min-width:5.5rem;padding:.2rem .4rem;font-family:inherit;font-size:.78rem}label.site-picker input{width:5.5rem}col.c-site{width:3.5rem}col.c-mac{width:28%;min-width:7rem}col.c-fw{width:5.5rem;min-width:4.5rem}td.fw{font-variant-numeric:tabular-nums;white-space:nowrap}col.c-who{width:4.5rem;min-width:3.5rem}col.c-when{width:7.5rem}col.c-rate-num{width:4.8rem}col.c-rate-try{width:5.25rem;min-width:5.25rem}col.c-rate-now{width:5.5rem;min-width:5.5rem}col.c-outcome{width:7.25rem;min-width:7rem}col.c-detail{width:18%}.rate-cols-table td.rate-cell,.rate-cols-table td.who,.rate-cols-table td.st-attempting,.rate-cols-table td.st-likely,.rate-cols-table td.st-succeeded,.rate-cols-table td.st-failed{max-width:0;overflow:hidden}td.rate-cell{white-space:nowrap;vertical-align:middle}.rate-stack{flex-direction:column;gap:.05rem;min-width:0;line-height:1.15;display:flex}.rate-stack-main{white-space:nowrap;text-overflow:ellipsis;font-variant-numeric:tabular-nums;overflow:hidden}.rate-stack-delta{white-space:nowrap;text-overflow:ellipsis;font-size:.68rem;overflow:hidden}.table-scroll{border:1px solid var(--line);background:var(--panel);-webkit-overflow-scrolling:touch;max-height:min(70vh,100vh - 280px);overflow:auto}.table-scroll table{border:none}.table-scroll thead th{z-index:1;background:var(--panel);box-shadow:0 1px 0 var(--line);position:sticky;top:0}table{border-collapse:collapse;background:var(--panel);border:1px solid var(--line);table-layout:fixed;width:100%}th,td{text-align:left;border-bottom:1px solid var(--line);vertical-align:middle;padding:.32rem .45rem;font-size:.78rem}th{color:var(--muted);letter-spacing:.04em;text-transform:uppercase;font-size:.65rem;font-weight:600}button.th-sort{max-width:100%;color:inherit;font:inherit;letter-spacing:inherit;text-transform:inherit;cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:.28rem;margin:0;padding:0;display:inline-flex}button.th-sort:hover,button.th-sort.active{color:var(--text)}button.th-sort .sort-ind{opacity:.45;flex-shrink:0;font-size:.58rem}button.th-sort.active .sort-ind{opacity:.95;color:var(--hot)}th.rate,td.rate{color:var(--hot);white-space:nowrap;width:4.5rem;font-size:.85rem;font-weight:700}tr:hover td{background:#3d9cf00f}td.mac{max-width:0;overflow:hidden}code.mac{text-overflow:ellipsis;white-space:nowrap;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:.7rem;display:block;overflow:hidden}td.who,th.who{text-overflow:ellipsis;white-space:nowrap;max-width:5.5rem;overflow:hidden}td.cell-clip{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}td.cell-nowrap{white-space:nowrap}.muted{color:var(--muted)}.empty{text-align:center;color:var(--muted);padding:1.25rem;font-size:.85rem}button.squash{color:var(--warn);border:1px solid var(--warn);cursor:pointer;white-space:nowrap;background:0 0;align-items:center;gap:.3rem;padding:.2rem .4rem;font-family:inherit;font-size:.68rem;display:inline-flex}button.squash:disabled{opacity:.7;cursor:wait;color:var(--accent);border-color:var(--accent)}.st-never{color:var(--muted)}.st-attempting,.st-publishing{color:var(--accent)}.st-succeeded{color:var(--good)}.st-likely{color:#c9a227}.st-failed{color:var(--hot)}.st-line{align-items:center;gap:.3rem;display:inline-flex}.st-note{color:var(--accent);opacity:.9;margin-top:.12rem;font-size:.68rem;line-height:1.25}.st-detail{text-overflow:ellipsis;white-space:nowrap;max-width:14rem;margin-top:.1rem;font-size:.66rem;line-height:1.25;overflow:hidden}.st-error{color:var(--hot);max-width:14rem;margin-top:.12rem;font-size:.68rem;line-height:1.25}.spinner{border:1.5px solid;border-right-color:#0000;border-radius:50%;flex-shrink:0;width:.65rem;height:.65rem;animation:.7s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}tr.row-publishing td{background:#3d9cf012}col.c-rate{width:4.6rem}col.c-hits{width:3.2rem}col.c-th{width:7rem}col.c-sq{width:11rem}col.c-act{width:7rem}col.c-seen{width:8.5rem}.section-header{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.5rem 1rem;margin:1.1rem 0 .45rem;display:flex}.section-header .section-title{margin:0}.filter-bar{flex-wrap:wrap;align-items:flex-end;gap:.4rem .55rem;margin-bottom:.5rem;display:flex}.filter-field{color:var(--muted);text-transform:uppercase;letter-spacing:.03em;flex-direction:column;gap:.15rem;font-size:.65rem;display:flex}.filter-field.grow{flex:10rem;min-width:8rem}.filter-field.narrow{width:4.5rem}.filter-field input,.filter-field select,.fw-multi-btn{background:var(--bg);border:1px solid var(--line);color:var(--text);text-transform:none;letter-spacing:normal;min-width:0;padding:.22rem .4rem;font-family:inherit;font-size:.78rem}.filter-field.grow input{width:100%}.firmware-multi{min-width:7.25rem;position:relative}.fw-multi-btn{cursor:pointer;text-align:left;justify-content:space-between;align-items:center;gap:.3rem;width:100%;min-width:7.25rem;max-width:10.5rem;display:flex}.fw-multi-btn:disabled{opacity:.55;cursor:default}.fw-multi-label{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.fw-multi-caret{color:var(--muted);flex-shrink:0;font-size:.65rem}.fw-multi-menu{z-index:30;background:var(--panel);border:1px solid var(--line);width:max-content;min-width:100%;max-width:16rem;max-height:14rem;position:absolute;top:calc(100% + 2px);left:0;overflow-y:auto;box-shadow:0 6px 18px #00000059}.fw-multi-option{text-transform:none;letter-spacing:normal;color:var(--text);cursor:pointer;white-space:nowrap;align-items:center;gap:.35rem;padding:.28rem .45rem;font-size:.78rem;display:flex}.fw-multi-option:hover{background:#3d9cf01f}.fw-multi-option input{accent-color:var(--accent);margin:0}.fw-multi-option span{text-overflow:ellipsis;overflow:hidden}.filter-toggle{margin-bottom:.1rem}.filter-clear{margin-bottom:.05rem}.filter-count{white-space:nowrap;margin-bottom:.15rem;font-size:.72rem}.recent-table{margin-top:.15rem}.live-cap-note{border-bottom:1px solid var(--line);margin:0;padding:.35rem .55rem;font-size:.72rem}.recent-table td{font-size:.74rem}.error-banner{border:1px solid var(--hot);color:var(--hot);background:#f071781f;margin-bottom:.6rem;padding:.4rem .6rem;font-size:.78rem}.top-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.15rem;display:flex}.user-chip{align-items:center;gap:.55rem;font-size:.75rem;display:inline-flex}.login-main{justify-content:center;align-items:center;min-height:100vh;padding:1.5rem 1rem;display:flex}.login-card{background:var(--panel);border:1px solid var(--line);width:min(420px,100%);padding:1.25rem 1.35rem 1.4rem}.login-form{flex-direction:column;gap:.75rem;margin-top:.85rem;display:flex}.login-form label{color:var(--muted);flex-direction:column;gap:.3rem;font-size:.78rem;display:flex}.login-form input[type=email],.login-form input[type=password],.login-form input[type=text]{background:var(--bg);border:1px solid var(--line);color:var(--text);padding:.45rem .55rem;font-family:inherit;font-size:.9rem}.password-row{gap:.4rem;display:flex}.password-row input{flex:1;min-width:0}button.primary{background:var(--accent);color:#0a1220;cursor:pointer;border:none;padding:.5rem .75rem;font-family:inherit;font-size:.85rem;font-weight:650}button.primary:disabled{opacity:.55;cursor:wait}button.ghost{color:var(--muted);border:1px solid var(--line);cursor:pointer;background:0 0;padding:.3rem .55rem;font-family:inherit;font-size:.72rem}button.ghost:disabled{opacity:.5;cursor:wait}.mfa-row{justify-content:center;gap:.35rem;display:flex}.mfa-digit{text-align:center;background:var(--bg);border:1px solid var(--line);width:2.4rem;height:2.7rem;color:var(--text);font-family:inherit;font-size:1.15rem;font-weight:650}.section-title{letter-spacing:-.01em;margin:1.1rem 0 .45rem;font-size:.95rem;font-weight:650}.history-section{margin-top:1.25rem;padding-top:.25rem}.history-header{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.5rem 1rem;display:flex}.history-header .section-title{margin:0}.history-note{margin-top:.35rem!important}.history-tabs{gap:.35rem;display:inline-flex}button.tab{color:var(--muted);border:1px solid var(--line);cursor:pointer;background:0 0;padding:.28rem .55rem;font-family:inherit;font-size:.72rem}button.tab.active{color:var(--text);border-color:var(--accent);background:#3d9cf01a}.history-table{margin-top:.35rem}.history-table td{font-size:.74rem}@media (width<=900px){main{padding:.7rem .55rem 1.2rem}.table-scroll{max-height:min(65vh,100vh - 220px)}th,td{padding:.28rem .32rem;font-size:.72rem}col.c-who{width:4.5rem}col.c-th,col.c-seen{width:0}.col-optional{display:none}col.c-sq{width:7.5rem}col.c-act{width:5.5rem}button.squash{padding:.18rem .3rem;font-size:.64rem}}@media (width<=560px){.stats{grid-template-columns:repeat(auto-fill,minmax(5.5rem,1fr))}.table-scroll{max-height:min(60vh,100vh - 200px)}col.c-when{width:4.8rem}col.c-rate-num,col.c-rate-try,col.c-rate-now{width:4.2rem;min-width:4.2rem}col.c-outcome{width:6rem;min-width:5.5rem}code.mac{font-size:.62rem}}
