/* Semantic Observatory under the pitch.dog bar: the app fills the viewport below it. */
html[data-pdn-surface="observatory"] body { display: flex; flex-direction: column; }
html[data-pdn-surface="observatory"] body > .pdn { flex: none; }
html[data-pdn-surface="observatory"] #app { position: relative; flex: 1 1 auto; min-height: 0; overflow: hidden; }
/* The drawer keeps the app's own margins (146px, 160px on phones) inside #app, which now ends at the viewport bottom. */
html[data-pdn-surface="observatory"] .control-drawer { max-height: calc(100% - 146px - var(--safe-top, 0px) - var(--safe-bottom, 0px)); }
@media (max-width: 760px) {
  html[data-pdn-surface="observatory"] .control-drawer { max-height: calc(100% - 160px - var(--safe-top, 0px) - var(--safe-bottom, 0px)); }
}
/* Without JavaScript the app's full-screen notice starts below the bar instead of covering it. */
html[data-pdn-surface="observatory"] .sky-noscript { top: var(--pdn-h); }
