:root {
  color-scheme:dark;
  --bg:#080d18;
  --panel:rgba(16,24,39,.75);
  --line:rgba(165,188,221,.13);
  --text:#ecf1fa;
  --muted:#8794a9;
  --faint:#526077;
  --gold:#e8bd7d;
  --blue:#8cbef5;
  --mono:"Cascadia Code","SFMono-Regular",Consolas,monospace;
  font-family:"Segoe UI","Microsoft YaHei","PingFang SC",sans-serif;
  background:var(--bg);
  color:var(--text);
}

* {
  box-sizing:border-box;
}

html,body {
  margin:0;
  min-width:320px;
  min-height:100%;
  width:100%;
}

body {
  overflow-x:hidden;
}

button,a,input {
  -webkit-tap-highlight-color:transparent;
}

button,input {
  font:inherit;
}

button {
  color:inherit;
  cursor:pointer;
}

button:disabled {
  cursor:wait;
  opacity:.5;
}

a {
  color:inherit;
  text-decoration:none;
}

button:focus-visible,a:focus-visible {
  outline:2px solid var(--blue);
  outline-offset:4px;
}

button {
  touch-action:manipulation;
}

svg {
  width:22px;
  height:22px;
  fill:none;
  stroke:currentColor;
  stroke-width:1.5;
  stroke-linecap:round;
  stroke-linejoin:round;
  flex-shrink:0;
}

.icon-definitions {
  position:absolute;
  width:0;
  height:0;
  overflow:hidden;
}

[hidden] {
  display:none!important;
}

.mono {
  font-family:var(--mono);
}

.space-background {
  position:fixed;
  inset:0;
  z-index:-1;
  pointer-events:none;
  overflow:hidden;
  background:radial-gradient(ellipse at 70% 42%,#111d32 0%,#080d18 50%,#070b13 100%);
}

.nebula {
  position:absolute;
  inset:-25%;
  opacity:.58;
  background:radial-gradient(ellipse at 78% 26%,rgba(106,75,144,.16),transparent 29%),radial-gradient(ellipse at 66% 68%,rgba(45,89,136,.15),transparent 30%);
  transform:rotate(-20deg);
}

.stars {
  position:absolute;
  inset:0;
  background-image:url('./assets/stars.svg');
  background-size:1100px 760px;
}

.stars-near {
  opacity:.62;
}

.stars-far {
  opacity:.25;
  transform:rotate(180deg) scale(1.35);
  background-size:800px 580px;
}

.observatory {
  max-width:1920px;
  min-height:100svh;
  margin:auto;
  display:flex;
  flex-direction:column;
}

.topbar {
  height:88px;
  flex-shrink:0;
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:0 44px;
  border-bottom:0;
  background:rgba(8,13,23,.47);
  gap:24px;
}

.brand {
  display:flex;
  align-items:center;
  gap:14px;
}

.brand-mark {
  color:var(--gold);
  display:grid;
  place-items:center;
  width:43px;
  height:43px;
  border:1px solid rgba(232,189,125,.35);
  border-radius:50%;
}

.brand-mark img {
  display:block;
  width:29px;
  height:29px;
}

.brand-wordmark {
  font-size:25px;
  font-weight:650;
  letter-spacing:5px;
  line-height:1.1;
}

.brand-wordmark>span {
  display:block;
  font-size:8px;
  letter-spacing:2px;
  color:var(--muted);
  font-weight:400;
  margin-top:7px;
}

.header-title {
  display:flex;
  align-items:center;
  gap:12px;
  color:#a5b1c2;
  font-size:13px;
  letter-spacing:2px;
}

.header-title .mono {
  font-size:10px;
  letter-spacing:1px;
  color:var(--faint);
}

.header-divider {
  height:12px;
  width:1px;
  background:var(--line);
  margin:0 4px;
}

.status-dot {
  display:inline-block;
  width:5px;
  height:5px;
  flex-shrink:0;
  background:#83c7b6;
  border-radius:50%;
  box-shadow:0 0 9px #83c7b63a;
}

.header-meta {
  display:flex;
  align-items:center;
  gap:20px;
}

.header-meta time {
  font-size:11px;
  letter-spacing:1px;
  color:var(--muted);
}

.demo-badge {
  border:1px solid var(--line);
  padding:5px 8px;
  border-radius:4px;
  color:var(--muted);
  font-size:10px;
  letter-spacing:1px;
}

.workspace {
  flex:1;
  display:grid;
  grid-template-columns:300px minmax(0,1fr);
  gap:44px;
  padding:32px 44px 24px;
  min-height:0;
}

.explorer-menu {
  position:relative;
  z-index:5;
  display:flex;
  flex-direction:column;
  gap:17px;
}

.eyebrow {
  display:flex;
  align-items:center;
  gap:8px;
  color:var(--muted);
  font-family:var(--mono);
  font-size:9px;
  letter-spacing:1.5px;
  line-height:1.5;
}

.intro .eyebrow {
  color:#768497;
  font-size:8px;
  letter-spacing:1.2px;
}

.intro .eyebrow>span {
  width:15px;
  height:1px;
  background:var(--gold);
}

.intro h1 {
  font-size:36px;
  font-weight:500;
  letter-spacing:3px;
  line-height:1.5;
  margin:16px 0 10px;
}

.intro h1>span {
  color:var(--gold);
}

.intro p {
  color:var(--muted);
  font-size:12px;
  line-height:1.9;
  letter-spacing:.7px;
  margin:0 0 10px;
}

.menu-card {
  --accent:var(--blue);
  --accent-rgb:140,190,245;
  border:1px solid var(--line);
  background:linear-gradient(120deg,rgba(21,30,46,.78),rgba(11,18,30,.56));
  border-radius:10px;
  position:relative;
  overflow:hidden;
  transition:border-color .3s,background .3s,box-shadow .3s;
}

.satellite-menu {
  --accent:var(--gold);
  --accent-rgb:232,189,125;
}

.menu-card.is-active {
  border-color:rgba(var(--accent-rgb),.47);
  background:linear-gradient(120deg,rgba(var(--accent-rgb),.08),rgba(13,21,35,.8));
  box-shadow:0 10px 35px #00000013;
}

.menu-card.is-active::before {
  content:"";
  position:absolute;
  left:0;
  top:23px;
  width:2px;
  height:26px;
  background:var(--accent);
  box-shadow:0 0 14px rgba(var(--accent-rgb),.5);
}

.menu-heading {
  display:flex;
  align-items:center;
  width:100%;
  border:0;
  background:transparent;
  text-align:left;
  gap:12px;
  padding:20px 20px 0;
}

.menu-heading:focus-visible {
  outline-offset:-5px;
  border-radius:10px;
}

.menu-icon {
  display:grid;
  place-items:center;
  width:37px;
  height:37px;
  border:1px solid rgba(var(--accent-rgb),.2);
  border-radius:9px;
  color:var(--accent);
  background:rgba(var(--accent-rgb),.05);
}

.menu-icon svg {
  width:22px;
  height:22px;
}

.menu-title {
  flex:1;
}

.menu-title small {
  display:block;
  color:var(--faint);
  font-size:8px;
  letter-spacing:1px;
  font-family:var(--mono);
  margin-bottom:5px;
}

.menu-title strong {
  font-size:16px;
  letter-spacing:1px;
  font-weight:500;
}

.menu-arrow {
  width:17px;
  color:var(--faint);
  transition:transform .25s,color .25s;
}

.menu-heading:hover .menu-arrow {
  transform:translateX(3px);
  color:var(--accent);
}

.is-active .menu-title small {
  color:var(--accent);
  opacity:.7;
}

.is-active .menu-arrow {
  color:var(--accent);
}

.menu-body {
  padding:0 20px;
}

.menu-description {
  font-size:11px;
  color:var(--muted);
  margin:15px 0;
}

.ocean-options {
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:7px;
}

.ocean-options button {
  background:rgba(7,13,24,.45);
  border:1px solid var(--line);
  min-height:42px;
  border-radius:5px;
  color:var(--muted);
  font-size:12px;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:7px;
  transition:.2s;
}

.ocean-options button:hover {
  background:rgba(140,190,245,.1);
  color:var(--text);
}

.ocean-menu.is-active .ocean-options .active {
  color:#c0ddff;
  border-color:#8cbef566;
  background:#8cbef513;
}

.layer-dot {
  width:5px;
  height:5px;
  border-radius:50%;
  background:var(--blue);
}

.current-dot {
  background:#82c9bd;
}

.wind-dot {
  background:#b3a0da;
}

.menu-footnote {
  display:flex;
  align-items:center;
  gap:6px;
  border-top:1px solid var(--line);
  padding:12px 0;
  margin-top:15px;
  color:var(--faint);
  font-size:9px;
  letter-spacing:.4px;
}

.menu-footnote>span:last-child {
  margin-left:auto;
}

.mini-line {
  width:9px;
  height:2px;
  background:var(--blue);
  opacity:.55;
}

.menu-footnote .status-dot {
  width:4px;
  height:4px;
  background:var(--gold);
  box-shadow:none;
}

.orbit-options {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:8px;
}

.orbit-option {
  position:relative;
  display:flex;
  align-items:center;
  gap:8px;
  min-height:41px;
  padding:0 10px;
  cursor:pointer;
  user-select:none;
  background:rgba(7,13,24,.4);
  border:1px solid var(--line);
  border-radius:5px;
  font-size:11px;
  color:var(--muted);
  transition:.2s;
}

.orbit-option:hover {
  background:rgba(232,189,125,.08);
  color:var(--text);
}

.orbit-option.active {
  border-color:rgba(232,189,125,.28);
  background:rgba(232,189,125,.07);
  color:#edcf9d;
}

.orbit-option input {
  position:absolute;
  opacity:0;
  inset:0;
  margin:0;
  cursor:pointer;
  width:100%;
  height:100%;
  z-index:2;
}

.orbit-option:has(input:focus-visible) {
  outline:2px solid var(--gold);
  outline-offset:3px;
}

.check-box {
  display:grid;
  place-items:center;
  width:11px;
  height:11px;
  border:1px solid #526077;
  border-radius:3px;
  margin-left:auto;
  flex-shrink:0;
}

.check-box svg {
  width:9px;
  height:9px;
  stroke-width:2.5;
  opacity:0;
}

.active .check-box {
  border-color:var(--gold);
  background:var(--gold);
  color:#121925;
}

.active .check-box svg {
  opacity:1;
}

.orbit-symbol {
  width:16px;
  height:10px;
  border:1px solid #d5b277;
  border-radius:50%;
  transform:rotate(-35deg);
  flex-shrink:0;
}

.polar-symbol {
  border-color:var(--blue);
  transform:rotate(80deg);
}

.enhanced-symbol {
  border-color:#b4a0db;
  box-shadow:0 0 0 2px #b4a0db25;
}

.link-symbol {
  border-radius:0;
  border-top:0;
  border-right:0;
  border-color:#83c7b6;
  width:10px;
  height:10px;
  transform:rotate(-45deg);
  margin:0 3px;
}

.menu-caption {
  display:flex;
  align-items:center;
  gap:9px;
  font-size:10px;
  color:var(--faint);
  padding:0 4px;
  margin-top:auto;
}

.crosshair {
  color:var(--gold);
  font-size:19px;
  font-weight:200;
  opacity:.6;
}

.scene {
  min-width:0;
  display:flex;
  flex-direction:column;
  position:relative;
}

.scene-heading {
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:1px 4px 0 7px;
  gap:10px;
}

.scene-heading .eyebrow {
  font-size:8px;
  gap:12px;
  color:var(--faint);
}

.gold-line {
  display:block;
  width:21px;
  height:1px;
  background:var(--gold);
}

.scene-heading h2 {
  font-size:25px;
  letter-spacing:4px;
  line-height:1.5;
  font-weight:450;
  margin:9px 0 3px;
}

.scene-heading p {
  font-size:11px;
  color:var(--muted);
  letter-spacing:1px;
  margin:0;
}

.earth-identifier {
  text-align:right;
  display:flex;
  flex-direction:column;
  gap:6px;
  color:var(--faint);
  font-size:9px;
}

.earth-identifier>.mono {
  font-size:16px;
  letter-spacing:5px;
  color:#aebacd;
}

.earth-identifier small {
  font-size:8px;
  letter-spacing:1px;
}

.earth-stage {
  position:relative;
  overflow:hidden;
  flex:1;
  min-height:350px;
  height:calc(100svh - 379px);
  max-height:950px;
  margin-top:6px;
  isolation:isolate;
}

.earth-canvas {
  position:absolute;
  inset:0;
  z-index:2;
  opacity:1;
  transition:opacity 1.2s ease;
  touch-action:none;
}

.earth-canvas.is-seed {
  opacity:0;
}

.earth-canvas .cesium-widget,.earth-canvas .cesium-widget canvas {
  width:100%;
  height:100%;
  background:transparent!important;
}

.earth-canvas .cesium-viewer,.earth-canvas .cesium-viewer-cesiumWidgetContainer {
  width:100%;
  height:100%;
}

.cesium-widget-credits {
  font-size:8px!important;
  opacity:.55;
  bottom:0!important;
  left:10px!important;
}

.earth-halo {
  position:absolute;
  z-index:1;
  pointer-events:none;
  opacity:0;
  transition:opacity 1.2s;
}

.earth-halo.is-visible {
  opacity:1;
}

.ring {
  position:absolute;
  border-radius:50%;
}

.ring-outer {
  inset:0;
  border:1px dashed rgba(139,172,211,.19);
  animation:spin 150s linear infinite;
}

.ring-inner {
  inset:5%;
  border:1px solid rgba(139,172,211,.06);
}

.spark {
  position:absolute;
  left:50%;
  top:-3px;
  width:5px;
  height:5px;
  border-radius:50%;
  background:var(--gold);
  box-shadow:0 0 12px #e8bd7d8a;
}

.halo-north {
  position:absolute;
  left:50%;
  top:-18px;
  transform:translateX(-50%);
  font-size:8px;
  color:#728ba7;
}

.viewport-corner {
  position:absolute;
  width:17px;
  height:17px;
  z-index:4;
  pointer-events:none;
}

.corner-tl {
  left:7px;
  top:21px;
  border-left:1px solid #59728e36;
  border-top:1px solid #59728e36;
}

.corner-br {
  right:3px;
  bottom:18px;
  border-right:1px solid #59728e36;
  border-bottom:1px solid #59728e36;
}

.view-tools {
  position:absolute;
  right:3px;
  top:50%;
  transform:translateY(-50%);
  z-index:5;
  pointer-events:auto;
  touch-action:manipulation;
  display:flex;
  flex-direction:column;
  gap:2px;
  border:1px solid var(--line);
  border-radius:7px;
  padding:4px;
  background:rgba(11,19,31,.65);
  backdrop-filter:blur(10px);
}

.view-tools.is-dragging {
  user-select:none;
}

.view-tools button {
  display:grid;
  place-items:center;
  background:transparent;
  border:0;
  width:34px;
  height:34px;
  color:#879bb4;
  border-radius:4px;
}

.view-tools button:hover {
  background:#8cbef516;
  color:#d0e4ff;
}

.view-tools button svg {
  width:15px;
  height:15px;
}

.view-tools .view-tools-drag {
  height:20px;
  cursor:grab;
  color:#627b99;
  border-bottom:1px solid rgba(140,190,245,.1);
  border-radius:3px 3px 1px 1px;
  touch-action:none;
}

.view-tools .view-tools-drag:hover,
.view-tools .view-tools-drag:focus-visible {
  color:#a8d4ff;
  background:rgba(140,190,245,.08);
}

.view-tools .view-tools-drag svg {
  width:14px;
  height:14px;
}

.view-tools.is-dragging .view-tools-drag {
  cursor:grabbing;
  color:#d6ebff;
  background:rgba(140,190,245,.12);
}

.view-tools>span {
  height:1px;
  background:var(--line);
  margin:3px 6px;
}

.globe-caption {
  position:absolute;
  bottom:23px;
  left:19px;
  z-index:4;
  font-size:8px;
  color:var(--faint);
  display:flex;
  align-items:center;
  gap:8px;
  pointer-events:none;
}

.globe-caption b {
  font-weight:400;
  color:var(--muted);
  letter-spacing:.5px;
}

.caption-line {
  width:22px;
  height:1px;
  background:#59728e66;
}

.scene-toolbar {
  position:relative;
  z-index:5;
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:0 5px 15px 7px;
  min-height:36px;
  color:var(--faint);
  font-size:10px;
}

.interaction-hint {
  display:flex;
  align-items:center;
  gap:7px;
}

.interaction-hint svg {
  width:15px;
  height:15px;
}

.mobile-hint {
  display:none;
}

.motion-button {
  display:flex;
  align-items:center;
  gap:5px;
  background:transparent;
  border:0;
  color:var(--muted);
  font-size:10px;
  padding:6px 0 6px 12px;
}

.motion-button:hover {
  color:var(--gold);
}

.motion-button svg {
  width:13px;
  height:13px;
}

.motion-button[aria-pressed="true"] svg {
  fill:currentColor;
  stroke:none;
  clip-path:polygon(25% 12%,90% 50%,25% 88%);
  background:currentColor;
}

.is-motion-paused .ring {
  animation-play-state:paused;
}

.observation-panel {
  position:relative;
  z-index:5;
  display:flex;
  align-items:center;
  gap:25px;
  min-height:110px;
  border:1px solid var(--line);
  border-radius:9px;
  padding:21px 26px;
  background:linear-gradient(105deg,rgba(22,31,48,.72),rgba(12,20,34,.61));
  backdrop-filter:blur(14px);
}

.observation-label {
  display:flex;
  flex-direction:column;
  gap:7px;
  min-width:160px;
  flex:1;
}

.observation-label .eyebrow {
  font-family:inherit;
  font-size:9px;
  letter-spacing:1px;
  color:var(--faint);
}

.observation-label strong {
  font-weight:450;
  font-size:14px;
  letter-spacing:1px;
}

.observation-label>span:last-child {
  font-size:9px;
  color:var(--muted);
  line-height:1.5;
  max-width:260px;
}

.metric-group {
  display:flex;
  gap:30px;
  flex:1.6;
  border-left:1px solid var(--line);
  padding-left:30px;
  justify-content:space-between;
}

.metric {
  min-width:0;
  flex:1;
}

.metric>span:first-child {
  font-size:10px;
  color:var(--muted);
  letter-spacing:.5px;
  white-space:nowrap;
}

.metric>div {
  display:flex;
  align-items:baseline;
  gap:6px;
  margin-top:5px;
  white-space:nowrap;
}

.metric strong {
  font-family:var(--mono);
  font-size:29px;
  font-weight:400;
  letter-spacing:-1px;
}

.metric small {
  font-size:9px;
  color:var(--faint);
}

.metric-rule {
  display:block;
  width:21px;
  height:2px;
  background:var(--gold);
  opacity:.5;
  margin-top:6px;
}

.metric:nth-child(2) .metric-rule {
  background:var(--blue);
}

.metric:nth-child(3) .metric-rule {
  background:#83c7b6;
}

.ocean-metrics .metric strong {
  font-family:inherit;
  font-size:19px;
  letter-spacing:0;
  margin-top:6px;
}

.scene-note {
  font-size:9px;
  color:var(--faint);
  margin:10px 2px 0;
  text-align:right;
  line-height:1.5;
  letter-spacing:.5px;
}

.footer {
  display:flex;
  justify-content:space-between;
  align-items:center;
  padding:0 44px;
  height:44px;
  flex-shrink:0;
  border-top:1px solid var(--line);
  font-size:9px;
  color:var(--faint);
  gap:15px;
}

.footer>span:first-child {
  display:flex;
  align-items:center;
  gap:8px;
}

.footer .status-dot {
  width:4px;
  height:4px;
}

.footer-slash {
  margin:0 6px;
  opacity:.5;
}

.footer .mono {
  font-size:8px;
  letter-spacing:1.4px;
}

.version {
  color:#a0aab9;
  margin-left:10px;
}

.loading-tip {
  position:absolute;
  inset:0;
  display:flex;
  flex-direction:column;
  gap:18px;
  align-items:center;
  justify-content:center;
  color:var(--muted);
  font-size:12px;
  z-index:3;
  pointer-events:none;
}

.loading-tip small {
  font-size:8px;
  letter-spacing:2px;
  color:var(--faint);
}

.loading-orbit {
  width:48px;
  height:48px;
  border:1px solid var(--line);
  border-top-color:var(--gold);
  border-radius:50%;
  animation:spin 1.5s linear infinite;
}

.error-banner {
  display:none;
  position:absolute;
  z-index:15;
  inset:35% 10% auto;
  padding:18px;
  border:1px solid #dd8d7766;
  border-radius:8px;
  background:#271e25ee;
  color:#efc5b9;
  font-size:13px;
  line-height:1.8;
}

.error-banner.is-visible {
  display:block;
}

.noscript-tip {
  position:fixed;
  inset:40% 10% auto;
  background:#162335;
  border:1px solid var(--line);
  padding:30px;
  z-index:30;
  text-align:center;
}

@keyframes spin {
  to {
    transform:rotate(360deg);
  }
}

@media(min-width:1600px) {
  .workspace {
    grid-template-columns:340px minmax(0,1fr);
    gap:64px;
    padding:44px 64px 32px;
  }
  .topbar,.footer {
    padding-left:64px;
    padding-right:64px;
  }
  .intro h1 {
    font-size:43px;
  }
  .explorer-menu {
    gap:22px;
  }
  .menu-heading {
    padding-top:23px;
  }
  .menu-body {
    padding:0 23px;
  }
  .menu-description {
    margin:19px 0;
  }
  .orbit-option {
    min-height:47px;
  }
  .ocean-options button {
    min-height:47px;
  }
  .menu-footnote {
    padding:16px 0;
  }
  .earth-stage {
    height:calc(100svh - 410px);
  }
}

@media(max-width:1150px) {
  .topbar {
    padding:0 28px;
    height:76px;
  }
  .workspace {
    padding:26px 28px 22px;
    gap:26px;
    grid-template-columns:270px minmax(0,1fr);
  }
  .intro h1 {
    font-size:31px;
  }
  .menu-heading {
    padding:17px 16px 0;
    gap:9px;
  }
  .menu-body {
    padding:0 16px;
  }
  .menu-title small {
    font-size:7px;
  }
  .menu-title strong {
    font-size:15px;
  }
  .menu-description {
    font-size:10px;
  }
  .orbit-option {
    padding:0 8px;
    gap:6px;
    font-size:10px;
  }
  .header-title .mono,.header-divider {
    display:none;
  }
  .observation-panel {
    padding:19px 18px;
    gap:16px;
  }
  .observation-label {
    min-width:120px;
  }
  .observation-label strong {
    font-size:12px;
  }
  .metric-group {
    gap:15px;
    padding-left:20px;
  }
  .metric strong {
    font-size:25px;
  }
  .metric>span:first-child {
    font-size:9px;
  }
  .footer {
    padding:0 28px;
  }
  .earth-stage {
    min-height:345px;
  }
  .scene-heading h2 {
    font-size:23px;
  }
}

@media(max-width:900px) and (min-width:761px) {
  .workspace {
    gap:16px;
    grid-template-columns:245px minmax(0,1fr);
    padding:23px 22px;
  }
  .menu-heading {
    padding:16px 13px 0;
  }
  .menu-body {
    padding:0 13px;
  }
  .menu-description {
    font-size:9px;
  }
  .orbit-option {
    gap:5px;
    padding:0 6px;
  }
  .orbit-symbol {
    width:13px;
  }
  .observation-panel {
    gap:15px;
    align-items:flex-start;
    flex-direction:column;
  }
  .observation-label {
    display:grid;
    grid-template-columns:auto 1fr;
    gap:5px 10px;
  }
  .observation-label>span:last-child {
    grid-column:1 / -1;
  }
  .metric-group {
    border:0;
    border-top:1px solid var(--line);
    padding:13px 0 0;
    width:100%;
  }
  .earth-identifier {
    display:none;
  }
  .intro .eyebrow {
    font-size:7px;
  }
  .scene-heading .eyebrow {
    font-size:7px;
    gap:7px;
  }
  .earth-stage {
    height:390px;
  }
  .footer-center {
    display:none;
  }
}

@media(max-width:760px) {
  .observatory {
    min-height:100svh;
  }
  .topbar {
    height:70px;
    padding:0 20px;
    gap:12px;
  }
  .brand {
    gap:10px;
  }
  .brand-mark {
    width:34px;
    height:34px;
  }
  .brand-mark img {
    width:24px;
    height:24px;
  }
  .brand-wordmark {
    font-size:21px;
    letter-spacing:4px;
  }
  .brand-wordmark>span {
    font-size:6px;
    letter-spacing:1.4px;
    margin-top:5px;
  }
  .header-title {
    display:none;
  }
  .header-meta {
    gap:10px;
    flex-direction:column;
    align-items:flex-end;
  }
  .header-meta time {
    font-size:8px;
    letter-spacing:.5px;
  }
  .demo-badge {
    font-size:8px;
    padding:3px 7px;
  }
  .workspace {
    display:flex;
    flex-direction:column;
    gap:23px;
    padding:25px 20px 26px;
  }
  .scene {
    order:0;
  }
  .explorer-menu {
    order:1;
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:12px;
  }
  .intro {
    display:none;
  }
  .scene-heading {
    padding:0;
  }
  .scene-heading h2 {
    font-size:22px;
    letter-spacing:3px;
    margin:8px 0 4px;
  }
  .scene-heading p {
    font-size:10px;
    letter-spacing:.5px;
  }
  .scene-heading .eyebrow {
    font-size:7px;
    gap:8px;
    letter-spacing:1px;
  }
  .gold-line {
    width:14px;
  }
  .earth-identifier {
    gap:5px;
  }
  .earth-identifier>.mono {
    font-size:12px;
    letter-spacing:3px;
  }
  .earth-identifier>span:not(.mono) {
    font-size:7px;
  }
  .earth-identifier small {
    font-size:6px;
  }
  .earth-stage {
    height:380px;
    min-height:0;
    max-height:none;
    flex:auto;
    margin:7px -10px 0;
  }
  .corner-tl {
    top:17px;
    left:1px;
  }
  .corner-br {
    right:1px;
    bottom:18px;
  }
  .view-tools {
    right:0;
    padding:3px;
    background:rgba(11,19,31,.7);
  }
  .view-tools button {
    width:29px;
    height:34px;
  }
  .view-tools button svg {
    width:14px;
    height:14px;
  }
  .globe-caption {
    font-size:7px;
    bottom:19px;
    left:12px;
  }
  .globe-caption .caption-line {
    width:12px;
  }
  .scene-toolbar {
    padding:0 0 12px;
    min-height:34px;
    font-size:9px;
  }
  .desktop-hint {
    display:none;
  }
  .mobile-hint {
    display:inline;
  }
  .motion-button {
    font-size:9px;
    min-height:36px;
  }
  .observation-panel {
    padding:17px 18px;
    gap:17px;
    min-height:0;
  }
  .observation-label {
    min-width:100px;
  }
  .observation-label strong {
    font-size:12px;
    line-height:1.5;
  }
  .observation-label>span:last-child {
    font-size:8px;
  }
  .metric-group {
    gap:16px;
    padding-left:20px;
  }
  .metric strong {
    font-size:24px;
  }
  .metric>span:first-child {
    font-size:9px;
    letter-spacing:0;
  }
  .metric small {
    font-size:8px;
  }
  .scene-note {
    font-size:8px;
    margin-top:8px;
  }
  .menu-heading {
    padding:15px 13px 0;
    gap:8px;
  }
  .menu-icon {
    width:30px;
    height:30px;
    border-radius:7px;
  }
  .menu-icon svg {
    width:18px;
    height:18px;
  }
  .menu-title small {
    font-size:6px;
    letter-spacing:.4px;
  }
  .menu-title strong {
    font-size:13px;
  }
  .menu-arrow {
    width:13px;
  }
  .menu-body {
    padding:0 13px;
  }
  .menu-description {
    font-size:9px;
    line-height:1.6;
    min-height:28px;
    margin:12px 0;
  }
  .ocean-options {
    gap:5px;
    grid-template-columns:1fr;
  }
  .ocean-options button {
    min-height:42px;
    font-size:11px;
  }
  .orbit-options {
    grid-template-columns:1fr;
    gap:6px;
  }
  .orbit-option {
    min-height:42px;
    font-size:10px;
    padding:0 9px;
  }
  .menu-footnote {
    font-size:7px;
    padding:11px 0;
    margin-top:13px;
    gap:4px;
    letter-spacing:0;
  }
  .menu-footnote>span:last-child {
    display:none;
  }
  .menu-caption {
    grid-column:1/-1;
    font-size:9px;
    justify-content:center;
    margin-top:0;
  }
  .footer {
    height:auto;
    min-height:52px;
    padding:14px 20px max(14px,env(safe-area-inset-bottom));
    font-size:8px;
    gap:8px;
  }
  .footer .mono {
    font-size:7px;
    letter-spacing:.7px;
  }
  .footer-center {
    display:none;
  }
  .footer-slash {
    margin:0 1px;
  }
  .version {
    margin-left:3px;
  }
  .ocean-metrics .metric strong {
    font-size:14px;
  }
  .error-banner {
    inset:30% 7% auto;
    font-size:12px;
  }
}

@media(max-width:480px) {
  .earth-stage {
    height:calc(100vw - 4px);
    min-height:300px;
    max-height:390px;
  }
  .observation-panel {
    flex-direction:column;
    align-items:stretch;
    gap:14px;
    padding:15px 17px;
  }
  .observation-label {
    display:grid;
    grid-template-columns:auto 1fr;
    gap:4px 10px;
    align-items:center;
  }
  .observation-label strong {
    text-align:right;
    font-size:12px;
  }
  .observation-label>span:last-child {
    grid-column:1/-1;
    max-width:none;
    font-size:8px;
  }
  .metric-group {
    border-left:0;
    border-top:1px solid var(--line);
    padding:13px 0 0;
    gap:20px;
  }
  .metric strong {
    font-size:26px;
  }
  .metric-rule {
    margin-top:5px;
    height:1px;
  }
  .scene-heading p {
    font-size:9px;
  }
  .ocean-metrics .metric strong {
    font-size:17px;
  }
  .menu-description {
    font-size:8px;
  }
  .footer>span:last-child {
    font-size:6px;
  }
  .footer {
    font-size:7px;
  }
}

@media(max-width:359px) {
  .topbar {
    padding:0 14px;
  }
  .workspace {
    padding-left:14px;
    padding-right:14px;
  }
  .earth-identifier>span:not(.mono) {
    display:none;
  }
  .menu-title strong {
    font-size:12px;
  }
  .menu-icon {
    width:26px;
    height:26px;
  }
  .menu-heading {
    gap:6px;
    padding-left:10px;
    padding-right:10px;
  }
  .menu-body {
    padding:0 10px;
  }
  .menu-title small {
    font-size:5px;
  }
  .menu-arrow {
    display:none;
  }
  .footer {
    padding-left:14px;
    padding-right:14px;
  }
  .footer .version {
    display:none;
  }
  .scene-toolbar .interaction-hint {
    display:none;
  }
}

.cesium-credit-logoContainer img {
  max-height:13px;
  width:auto;
  vertical-align:0!important;
}

.menu-title {
  min-width:0;
}

.menu-title small,.menu-title strong {
  white-space:nowrap;
}

@media(max-width:760px) {
  .menu-title small {
    font-size:5.5px;
    letter-spacing:0;
  }
  .menu-arrow {
    width:12px;
  }
  .view-tools button {
    min-height:40px;
  }
  .view-tools .view-tools-drag {
    min-height:24px;
    height:24px;
  }
}

@media(min-width:761px) and (max-height:820px) {
  .topbar {
    height:65px;
  }
  .workspace {
    padding-top:21px;
    padding-bottom:20px;
    gap:32px;
  }
  .explorer-menu {
    gap:10px;
  }
  .intro h1 {
    font-size:28px;
    line-height:1.35;
    margin:8px 0 6px;
  }
  .intro p {
    font-size:10px;
    line-height:1.7;
    margin-bottom:3px;
  }
  .intro .eyebrow {
    font-size:7px;
  }
  .menu-heading {
    padding-top:15px;
  }
  .menu-icon {
    width:32px;
    height:32px;
  }
  .menu-title strong {
    font-size:14px;
  }
  .menu-description {
    font-size:10px;
    margin:10px 0;
  }
  .menu-footnote {
    padding:8px 0;
    margin-top:12px;
  }
  .orbit-option {
    min-height:37px;
  }
  .ocean-options button {
    min-height:37px;
  }
  .menu-caption {
    font-size:9px;
  }
  .scene-heading h2 {
    font-size:23px;
    margin-top:7px;
  }
  .scene-heading p {
    font-size:10px;
  }
  .earth-stage {
    min-height:285px;
    height:calc(100svh - 338px);
  }
  .scene-toolbar {
    padding-bottom:10px;
    min-height:32px;
  }
  .observation-panel {
    min-height:94px;
    padding-top:15px;
    padding-bottom:15px;
  }
  .metric strong {
    font-size:26px;
  }
  .footer {
    height:36px;
  }
  body[data-scene="ocean"] .earth-stage {
    min-height:250px;
    height:calc(100svh - 399px);
  }
}

@media(prefers-reduced-motion:reduce) {
  *,*::before,*::after {
    animation-duration:.01ms!important;
    animation-iteration-count:1!important;
    transition-duration:.01ms!important;
    scroll-behavior:auto!important;
  }
}

.starlink-option {
  grid-column:1 / -1;
}

.starlink-symbol {
  width:18px;
  height:7px;
  border-color:#b9f4ff;
  box-shadow:0 0 8px rgba(185,244,255,.38),inset 0 0 5px rgba(185,244,255,.18);
  transform:rotate(-12deg);
}

.starlink-option.active {
  border-color:rgba(185,244,255,.38);
  color:#d9f9ff;
}

@media(max-width:760px) {
  .starlink-option {
    grid-column:auto;
  }
}

/* Full-page globe composition: the Viewer is the page background and UI floats above it. */
body::after {
  content:"";
  position:fixed;
  inset:0;
  z-index:1;
  pointer-events:none;
  background:
    linear-gradient(90deg,rgba(5,10,18,.78) 0,rgba(5,10,18,.48) 23%,transparent 48%),
    linear-gradient(180deg,rgba(5,9,17,.32),transparent 22%,transparent 78%,rgba(5,9,17,.5));
}

.observatory {
  position:relative;
  z-index:2;
}

.topbar {
  position:relative;
  z-index:10;
  background:linear-gradient(180deg,rgba(7,12,21,.76),rgba(7,12,21,.25));
  backdrop-filter:blur(5px);
}

.workspace {
  min-height:calc(100svh - 132px);
}

.explorer-menu,.scene-heading,.scene-toolbar {
  position:relative;
  z-index:7;
}

.scene-heading h2,.scene-heading p,.scene-heading .eyebrow {
  text-shadow:0 2px 16px rgba(0,0,0,.9),0 0 4px rgba(0,0,0,.7);
}

.menu-card {
  background:linear-gradient(120deg,rgba(15,24,39,.86),rgba(8,15,27,.7));
  backdrop-filter:blur(16px);
}

.earth-stage {
  position:fixed;
  inset:0;
  z-index:0;
  width:100vw;
  height:100svh;
  min-height:0;
  max-height:none;
  margin:0;
  overflow:hidden;
  pointer-events:none;
}

.earth-canvas {
  pointer-events:auto;
}

.earth-halo,.viewport-corner,.view-tools,.globe-caption,.loading-tip,.error-banner {
  position:fixed;
}

.view-tools {
  right:26px;
}

.globe-caption {
  left:auto;
  right:34px;
  bottom:88px;
}

.corner-tl {
  left:330px;
  top:112px;
}

.corner-br {
  right:25px;
  bottom:82px;
}

.scene-toolbar {
  position:fixed;
  right:34px;
  bottom:42px;
  z-index:8;
  gap:22px;
  padding:0;
}

.footer {
  position:fixed;
  left:0;
  right:0;
  bottom:0;
  z-index:10;
  background:rgba(6,11,19,.58);
  backdrop-filter:blur(8px);
}

@media(max-width:760px) {
  body::after {
    background:linear-gradient(180deg,rgba(5,10,18,.18),transparent 48%,rgba(5,10,18,.82) 76%);
  }
  .workspace {
    min-height:calc(100svh - 70px);
    padding-bottom:76px;
  }
  .scene {
    min-height:calc(100svh - 118px);
  }
  .earth-stage {
    height:100svh;
  }
  .earth-canvas {
    touch-action:pan-y pinch-zoom;
  }
  .scene-heading {
    min-height:104px;
  }
  .scene-toolbar {
    position:absolute;
    right:0;
    bottom:18px;
  }
  .view-tools {
    right:12px;
    top:42%;
  }
  .globe-caption {
    left:20px;
    right:auto;
    bottom:126px;
  }
  .corner-tl {
    left:14px;
    top:150px;
  }
  .corner-br {
    right:14px;
    bottom:118px;
  }
  .explorer-menu {
    padding-top:8px;
  }
}

/* Mobile command deck: both themes stay visible without page scrolling. */
@media(max-width:760px) {
  html,
  body {
    height:100%;
    overflow:hidden;
    overscroll-behavior:none;
  }

  .observatory {
    height:100svh;
    min-height:0;
    overflow:hidden;
  }

  .topbar {
    position:fixed;
    inset:0 0 auto;
    z-index:30;
  }

  .workspace {
    display:block;
    height:100svh;
    min-height:0;
    padding:0;
  }

  .scene {
    height:100svh;
    min-height:0;
  }

  .scene-heading {
    display:none;
  }

  .explorer-menu {
    position:fixed;
    left:12px;
    right:12px;
    top:78px;
    z-index:22;
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:8px;
    padding:0;
  }

  .menu-card {
    min-width:0;
    overflow:visible;
    border-radius:9px;
    background:linear-gradient(120deg,rgba(12,22,37,.92),rgba(7,14,26,.84));
    box-shadow:0 10px 26px rgba(0,0,0,.22);
    -webkit-backdrop-filter:none;
    backdrop-filter:none;
  }

  .menu-card.is-active::before {
    top:13px;
    height:28px;
  }

  .menu-heading {
    min-height:54px;
    padding:8px 9px;
    gap:8px;
  }

  .menu-icon {
    width:32px;
    height:32px;
    flex:0 0 32px;
  }

  .menu-title small {
    overflow:hidden;
    margin-bottom:2px;
    font-size:5.5px;
    line-height:1.2;
    text-overflow:ellipsis;
  }

  .menu-title strong {
    display:block;
    font-size:13px;
    line-height:1.2;
    letter-spacing:.5px;
  }

  .menu-arrow {
    width:11px;
    flex:0 0 11px;
  }

  .menu-body {
    display:none;
  }

  .menu-card.is-active .menu-body {
    position:fixed;
    left:12px;
    right:12px;
    top:140px;
    z-index:21;
    display:block;
    padding:10px;
    border:1px solid rgba(var(--accent-rgb),.28);
    border-radius:9px;
    background:linear-gradient(120deg,rgba(12,22,37,.94),rgba(7,14,26,.9));
    box-shadow:0 16px 36px rgba(0,0,0,.28);
    backdrop-filter:blur(16px);
  }

  .menu-description,
  .menu-footnote,
  .menu-caption {
    display:none;
  }

  .ocean-options,
  .orbit-options {
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:6px;
  }

  .ocean-options button,
  .orbit-option {
    min-height:42px;
    padding:0 8px;
    font-size:10px;
  }

  .starlink-option {
    grid-column:auto;
  }

  .earth-canvas {
    touch-action:none;
  }

  .scene-toolbar {
    position:fixed;
    right:12px;
    bottom:calc(60px + env(safe-area-inset-bottom));
    z-index:20;
    padding:0;
  }

  .viewport-corner,
  .globe-caption {
    display:none;
  }

  .view-tools {
    right:8px;
    top:46%;
  }
}

@media(max-width:760px) and (max-height:680px) {
  .menu-card.is-active .menu-body {
    top:136px;
    padding:7px;
  }

  .ocean-options button,
  .orbit-option {
    min-height:36px;
  }

}

/* Desktop viewport sizing: keep every module between the header and footer. */
@media(min-width:761px) {
  html,
  body {
    height:100%;
    overflow:hidden;
    overscroll-behavior:none;
  }

  .observatory {
    --desktop-header-height:88px;
    --desktop-footer-height:44px;
    height:100svh;
    min-height:0;
    overflow:hidden;
  }

  .topbar {
    height:var(--desktop-header-height);
    flex:0 0 var(--desktop-header-height);
  }

  .workspace {
    height:calc(100svh - var(--desktop-header-height) - var(--desktop-footer-height));
    min-height:0;
    flex:0 0 auto;
    overflow:hidden;
  }

  .explorer-menu,
  .scene {
    height:100%;
    min-height:0;
    max-height:100%;
    overflow:hidden;
  }

  .footer {
    height:var(--desktop-footer-height);
  }
}

@media(min-width:761px) and (max-width:1150px) {
  .observatory {
    --desktop-header-height:76px;
  }
}

/* Wide but shorter displays need the same content with tighter vertical rhythm. */
@media(min-width:761px) and (max-height:1020px) {
  .workspace {
    padding-top:24px;
    padding-bottom:18px;
  }

  .explorer-menu {
    gap:12px;
  }

  .intro h1 {
    font-size:32px;
    line-height:1.35;
    margin:10px 0 7px;
  }

  .intro p {
    font-size:11px;
    line-height:1.7;
    margin-bottom:4px;
  }

  .menu-heading {
    padding:17px 18px 0;
  }

  .menu-body {
    padding:0 18px;
  }

  .menu-description {
    margin:12px 0;
  }

  .ocean-options button,
  .orbit-option {
    min-height:39px;
  }

  .menu-footnote {
    margin-top:12px;
    padding:9px 0;
  }
}

@media(min-width:761px) and (max-height:820px) {
  .observatory {
    --desktop-header-height:65px;
    --desktop-footer-height:36px;
  }

  .workspace {
    padding-top:18px;
    padding-bottom:14px;
  }

  .explorer-menu {
    gap:9px;
  }

  .intro h1 {
    font-size:28px;
    line-height:1.3;
    margin:7px 0 5px;
  }

  .intro p {
    font-size:10px;
    line-height:1.55;
    margin-bottom:2px;
  }

  .menu-heading {
    padding-top:14px;
  }

  .menu-description {
    margin:9px 0;
  }

  .ocean-options button,
  .orbit-option {
    min-height:35px;
  }

  .menu-footnote {
    margin-top:9px;
    padding:7px 0;
  }
}

@media(min-width:761px) and (max-height:680px) {
  .workspace {
    padding-top:13px;
    padding-bottom:11px;
  }

  .explorer-menu {
    gap:7px;
  }

  .intro h1 {
    font-size:24px;
    line-height:1.15;
    margin:5px 0 0;
  }

  .intro p,
  .menu-description,
  .menu-footnote {
    display:none;
  }

  .menu-heading {
    padding:10px 14px 0;
  }

  .menu-body {
    padding:0 14px 10px;
  }

  .ocean-options,
  .orbit-options {
    margin-top:9px;
    gap:6px;
  }

  .ocean-options button,
  .orbit-option {
    min-height:33px;
  }
}

.mobile-menu-toggle {
  display:none;
}

/* Collapsible mobile explorer: visible trigger, unobstructed globe when closed. */
@media(max-width:760px) {
  .mobile-menu-toggle {
    position:fixed;
    left:12px;
    bottom:calc(60px + env(safe-area-inset-bottom));
    z-index:26;
    display:flex;
    align-items:center;
    gap:9px;
    min-height:38px;
    padding:6px 12px 6px 7px;
    border:1px solid rgba(140,190,245,.32);
    border-radius:20px;
    color:var(--text);
    background:rgba(8,16,28,.88);
    box-shadow:0 10px 30px rgba(0,0,0,.3),0 0 20px rgba(94,162,226,.08);
    backdrop-filter:blur(14px);
  }

  .mobile-menu-toggle>span:last-child {
    display:flex;
    flex-direction:column;
    align-items:flex-start;
  }

  .mobile-menu-toggle small {
    color:var(--faint);
    font-family:var(--mono);
    font-size:5px;
    letter-spacing:1px;
    line-height:1.2;
  }

  .mobile-menu-toggle strong {
    font-size:10px;
    font-weight:500;
    letter-spacing:.4px;
    line-height:1.3;
  }

  .mobile-menu-toggle-icon {
    display:grid;
    place-items:center;
    width:26px;
    height:26px;
    border-radius:50%;
    color:var(--blue);
    background:rgba(140,190,245,.1);
  }

  .mobile-menu-toggle-icon svg {
    width:13px;
    height:13px;
    transition:transform .25s ease;
  }

  body.mobile-menu-open .mobile-menu-toggle-icon svg {
    transform:rotate(90deg);
  }

  .explorer-menu {
    top:auto;
    bottom:calc(108px + env(safe-area-inset-bottom));
    z-index:25;
    grid-template-columns:repeat(2,minmax(0,1fr));
    padding:9px;
    border:1px solid rgba(140,190,245,.2);
    border-radius:12px;
    background:rgba(7,14,25,.92);
    box-shadow:0 18px 46px rgba(0,0,0,.38);
    opacity:0;
    visibility:hidden;
    pointer-events:none;
    transform:translateY(16px) scale(.98);
    transform-origin:bottom left;
    transition:opacity .2s ease,transform .25s ease,visibility .2s;
    backdrop-filter:blur(18px);
  }

  body.mobile-menu-open .explorer-menu {
    opacity:1;
    visibility:visible;
    pointer-events:auto;
    transform:none;
  }

  .menu-card {
    display:contents;
  }

  .menu-card::before {
    display:none;
  }

  .menu-heading {
    min-width:0;
    border:1px solid var(--line);
    border-radius:8px;
    background:rgba(9,18,31,.72);
  }

  .menu-card.is-active .menu-heading {
    border-color:rgba(var(--accent-rgb),.42);
    background:rgba(var(--accent-rgb),.08);
  }

  .ocean-menu .menu-heading {
    grid-column:1;
  }

  .satellite-menu .menu-heading {
    grid-column:2;
  }

  .menu-card.is-active .menu-body {
    position:static;
    grid-column:1 / -1;
    grid-row:2;
    left:auto;
    right:auto;
    top:auto;
    z-index:auto;
    margin-top:0;
    padding:8px 0 0;
    border:0;
    border-radius:0;
    background:transparent;
    box-shadow:none;
    backdrop-filter:none;
  }

}

@media(max-width:760px) and (max-height:680px) {
  .explorer-menu {
    bottom:calc(104px + env(safe-area-inset-bottom));
    padding:7px;
  }

  .menu-heading {
    min-height:48px;
    padding-top:6px;
    padding-bottom:6px;
  }

  .mobile-menu-toggle {
    bottom:calc(58px + env(safe-area-inset-bottom));
  }
}
