.speedtest-bench[data-style=observatory] .observatory-panel{display:block;margin:24px 0;padding:24px;border:1px solid #bba776;border-radius:20px;background:linear-gradient(145deg,#1e3b41,#111e2d);color:#eee3c6;--show-card:#122b36;--show-ink:#f9e6b9;--show-muted:#b1d2ce}
.speedtest-bench[data-style=observatory] :is(.speedtest-instruments,.bloat-instrument){display:none}.speedtest-bench[data-style=observatory] .bloat-panel{grid-template-columns:1fr}
.obs-title{fill:#f7dfac;font:24px Georgia,serif;letter-spacing:3px}.obs-label{fill:#f7dfac;font:700 17px Georgia,serif;letter-spacing:3px}.obs-unit{fill:#a8cec5;font:10px ui-monospace,monospace;letter-spacing:1.2px}.obs-scale{fill:#e7d9b8;font:11px ui-monospace,monospace}.obs-tiny{fill:#e7d9b8;font:7px ui-monospace,monospace}.obs-domain{fill:#c3c4b3;font:14px Georgia,serif}
.obs-boost{opacity:0;transition:opacity .6s;filter:drop-shadow(0 0 5px #ffd18c)}.observatory-panel[data-overdrive=true] .obs-boost{opacity:.9}.observatory-panel[data-overdrive=true] .obs-dome{filter:drop-shadow(0 0 10px #6aefd466)}.obs-node{filter:drop-shadow(0 0 4px #86f3d9)}.observatory-panel [data-hot=true] .obs-meter-glow{stroke-width:6;filter:drop-shadow(0 0 8px var(--obs-energy))}.observatory-panel [data-speed-hand]{transition:transform .45s ease}
.observatory-links{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;border-top:1px solid #78928d44;padding-top:18px}.observatory-links a{display:flex;flex-direction:column;overflow:hidden;border:1px solid #78928d66;border-radius:10px;background:#07121d;font-size:.8rem;color:#c4d9d0;text-align:center;text-decoration:none;transition:border-color .2s,box-shadow .2s}.observatory-links img{display:block;width:100%;height:auto;aspect-ratio:1.65;object-fit:contain;background:#020711}.observatory-links span{padding:10px 8px;overflow-wrap:anywhere}.observatory-links a:hover{color:#ffe5aa;border-color:#e5c17b;box-shadow:0 0 15px #e5c17b22}.observatory-links a:focus-visible{outline:3px solid #ffe5aa;outline-offset:3px}.observatory-links [aria-disabled=true]{opacity:.55;pointer-events:none}
@media(max-width:550px){.observatory-links{grid-template-columns:1fr;gap:12px}.observatory-links a{max-width:340px;width:100%;justify-self:center}}
@media(max-width:650px){.speedtest-bench[data-style=observatory] .observatory-panel{padding:15px 9px}}

.obs-brand-pulse{transform-box:view-box;transform-origin:0 0;animation:obs-brand-pulse 4s ease-in-out infinite;animation-play-state:paused}.obs-brand-mark{opacity:0;animation:obs-brand-fade 12s linear var(--brand-delay) infinite;animation-play-state:paused}.observatory-panel[data-brand-motion=true] :is(.obs-brand-pulse,.obs-brand-mark){animation-play-state:running}
@keyframes obs-brand-pulse{0%,100%{transform:scale(.97)}50%{transform:scale(1.03)}}
@keyframes obs-brand-fade{0%,25%,100%{opacity:1}33.333%,91.666%{opacity:0}}
@media(prefers-reduced-motion:reduce){.observatory-panel .obs-brand-pulse,.observatory-panel .obs-brand-mark{animation:none!important;transform:none}.observatory-panel .obs-brand-mark{opacity:0}.observatory-panel .obs-brand-mark:first-child{opacity:1}}

.obs-packet{stroke-dasharray:1 24;stroke-dashoffset:0;animation:obs-packet-out 2.8s linear var(--packet-delay) infinite;animation-play-state:paused;filter:drop-shadow(0 0 4px currentColor)}
[data-packet-flow=download]{color:#7ff4bd}[data-packet-flow=upload]{color:#ffca7d}
[data-packet-flow=upload] .obs-packet{animation-name:obs-packet-in}
.obs-signal-packets{opacity:0}
.observatory-panel[data-state=running][data-motion=true]:is([data-phase=download],[data-phase=upload]) .obs-signal-packets{opacity:1}
[data-packet-flow]{opacity:0}
.observatory-panel[data-phase=download] [data-packet-flow=download],.observatory-panel[data-phase=upload] [data-packet-flow=upload]{opacity:1}
.observatory-panel[data-state=running][data-motion=true][data-phase=download] [data-packet-flow=download] .obs-packet,.observatory-panel[data-state=running][data-motion=true][data-phase=upload] [data-packet-flow=upload] .obs-packet{animation-play-state:running}
@keyframes obs-packet-out{to{stroke-dashoffset:25}}
@keyframes obs-packet-in{to{stroke-dashoffset:-25}}
@media(prefers-reduced-motion:reduce){.obs-signal-packets{display:none}.obs-packet{animation:none}}
