.observation{margin:0 0 12px;border:1px solid #344b5d;border-radius:8px;background:linear-gradient(110deg,#172b3a,#122130);overflow:hidden}.watch-heading{display:flex;align-items:center;gap:9px;padding:10px 13px;font-size:12px}.watch-heading>strong{color:#ffeb3b;white-space:nowrap}.watch-heading #watch-state{color:#c5d4de}.watch-heading #watch-countdown{margin-left:auto;color:#92aab9;font-variant-numeric:tabular-nums;white-space:nowrap}.watch-dot{width:7px;height:7px;flex-shrink:0;border-radius:50%;background:#8dd8e2;box-shadow:0 0 10px #65c8d855;animation:watch-breathe 3s ease-in-out infinite}.watch-track{height:2px;background:#263b4b}.watch-track span{display:block;height:100%;background:#8dd8e2;transform-origin:left;transform:scaleX(0);transition:transform 1s linear}.watch-warning .watch-dot,.watch-warning .watch-track span{background:#e2b764}.watch-warning #watch-state{color:#e2c68b}#watch-events{list-style:none;margin:0;padding:6px 13px;font-size:11px;color:#a9bac6}#watch-events li{padding:3px 0;display:flex;gap:9px;flex-wrap:wrap}#watch-events li>span{font-variant-numeric:tabular-nums;color:#849aab}#watch-events strong{color:#e1eaf0;font-weight:500}#watch-events small{margin-left:auto;color:#849aab}#nodes>tr.is-recent{background:#203c4b;transition:background-color .8s}#nodes>tr.is-new-node{box-shadow:inset -3px 0 #ffeb3b}#nodes>tr.live-detail>td{padding:0!important;border:0!important}.live-reveal{height:0;overflow:hidden;transition:height .55s cubic-bezier(.22,.61,.36,1)}.live-content{position:relative;display:flex;gap:13px;align-items:center;padding:15px 20px 17px;background:linear-gradient(100deg,#243e50,#172b3a);border-left:3px solid #8dd8e2}.live-symbol{color:#ffeb3b;font-size:25px}.live-content strong{font-size:14px;color:#edf4f7}.live-content p{font-size:12px;line-height:1.6;margin:3px 0 0;color:#b9cad6}.live-duration{position:absolute;bottom:0;left:0;height:2px;width:100%;background:#8dd8e2;transform-origin:left;animation:live-duration 8s linear forwards}.node-activity-card{display:none!important}@keyframes watch-breathe{50%{opacity:.4;box-shadow:0 0 2px #65c8d822}}@keyframes live-duration{to{transform:scaleX(0)}}@media(max-width:650px){.watch-heading{flex-wrap:wrap}.watch-heading #watch-state{flex-basis:80%}.watch-heading #watch-countdown{font-size:10px}.live-content{padding:12px}.live-content p{font-size:11px}}@media(prefers-reduced-motion:reduce){.watch-dot,.live-duration{animation:none}.live-reveal,.watch-track span{transition:none}}

/* Quiet heartbeat in place of a sweeping progress indicator. */
.watch-track{height:1px;background:#2b4050;overflow:hidden}.watch-track span{width:100%;background:#a6c5d1;transform:none!important;opacity:.12;animation:monitor-pulse 4s ease-in-out infinite;transition:none}@keyframes monitor-pulse{50%{opacity:.28}}
/* Spanning observation rows must not renegotiate the node columns. */
.scroll>table{table-layout:fixed}.scroll>table th:nth-child(1){width:43%}.scroll>table th:nth-child(2){width:14%}.scroll>table th:nth-child(3){width:17%}.scroll>table th:nth-child(4){width:12%}.scroll>table th:nth-child(5){width:14%}#nodes>tr:not(.live-detail)>td{overflow-wrap:anywhere}#nodes>tr:not(.live-detail)>td:last-child{position:relative}.detail{max-width:100%}.detail dl{grid-template-columns:1fr}.live-content{min-width:0}.live-content>div{min-width:0;overflow-wrap:anywhere}@media(prefers-reduced-motion:reduce){.watch-track span{animation:none;opacity:.18}}

/* A small travelling pulse, with its fading tail behind it. */
.watch-track{height:2px;position:relative;background:#263b4b}
.watch-track span{position:absolute;inset:0;width:100%;background:none;opacity:1;animation:none;transform:none!important}
.watch-track span::after{content:"";position:absolute;top:0;left:-64px;width:64px;height:2px;background:linear-gradient(90deg,transparent,rgba(158,201,218,.08) 30%,rgba(158,201,218,.3) 80%,rgba(205,235,245,.7) 96%,rgba(205,235,245,.85));animation:monitor-travel 6s linear infinite}
@keyframes monitor-travel{from{left:-64px}to{left:100%}}
@media(prefers-reduced-motion:reduce){.watch-track span::after{animation:none;left:0;width:100%;opacity:.15}}

/* The bright tip follows the same 15-second clock as Next check. */
.watch-track span::after{left:var(--pulse-position,0%);transform:translateX(-100%);animation:none}
@media(prefers-reduced-motion:reduce){.watch-track span::after{left:0;transform:none}}

/* Leave the travelling energy pulse suspended without a visible rail. */
.watch-track{background:transparent;border:0;box-shadow:none}

.node-inspector{width:min(560px,calc(100vw - 32px));max-height:80vh;margin:auto;padding:0;border:1px solid #476173;border-radius:10px;background:#13222e;color:#ecf3f6;box-shadow:0 16px 70px #0008}.node-inspector::backdrop{background:#061019a6}.inspector-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 16px;border-bottom:1px solid #2b4150}.inspector-heading h2{font-size:16px;overflow-wrap:anywhere}.inspector-body{padding:8px;overflow:auto}.node-inspector .detail{background:transparent}.node-inspector .detail dl{grid-template-columns:115px minmax(0,1fr);gap:8px 12px}.node-inspector .detail dd{overflow-wrap:anywhere}

/* The connector overlay must never create a vertical scrollbar or resize
   the table scroller while its height is animated. */
.scroll{overflow-x:auto;overflow-y:hidden}
.scroll .owner-thread-map{width:84px;max-width:84px;overflow:hidden;contain:layout paint}
html{scrollbar-gutter:stable}

/* Compact Known nodes heading, including freshness and association status. */
.known-heading{align-items:center;gap:12px}.known-heading-content{display:flex;flex:1;align-items:center;flex-wrap:wrap;gap:4px 16px;min-width:0}.known-heading #known-title{flex-shrink:0;white-space:nowrap}.known-heading #status,.known-heading #association-status{padding:0!important;margin:0;font-size:11px!important;line-height:1.4}.known-heading #refresh{flex-shrink:0}@media(max-width:650px){.known-heading-content{gap:3px 12px}.known-heading{align-items:flex-start}}

.scroll th:first-child{font-size:10px;font-weight:700;letter-spacing:.075em;text-transform:uppercase}

.scroll th:first-child{color:#b7cddd}

/* Keep the page title and observation credit on the same header line. */
main>header>div{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 16px}main>header .eyebrow,main>header .intro{margin:0}main>header .intro{max-width:none}

.watch-heading>strong{font-size:17px}

main>header .eyebrow{font-size:14px}

/* Countdown follows the actual close deadline, even across table refreshes. */
.live-duration{animation:none;transition:none;transform:scaleX(1)}

main>header>div{flex:1;min-width:0}#request-help-open{flex-shrink:0;margin-left:auto;color:#ffeb3b;font-size:12px;font-weight:650;background:#203642;border-color:#466072}
.request-help{position:fixed;inset:0;margin:auto;width:min(610px,calc(100vw - 32px));max-height:calc(100dvh - 40px);padding:0;border:1px solid #476173;border-radius:10px;background:#13222e;color:#edf5fb;box-shadow:0 18px 80px #0009;overflow:auto}.request-help::backdrop{background:#061019b0}.request-help-heading{position:sticky;top:0;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 16px;background:#192f3e;border-bottom:1px solid #344d5e}.request-help-heading h2{font-size:17px;color:#ffeb3b}.request-help-body{padding:4px 16px 12px;font-size:13px;line-height:1.6}.request-help-body p{margin:10px 0}.request-help-body code{color:#ffeb86;font-size:12px}.request-command-list{display:grid;grid-template-columns:70px minmax(0,1fr);gap:0;margin:14px 0}.request-command-list dt,.request-command-list dd{padding:7px 0;border-top:1px solid #2b4150}.request-command-list dt{font-weight:700}.request-command-list dd{margin:0;color:#d1dee7}.request-help-note{font-size:11px;color:#a7bdcd}
