/* Shared square makes the stationary threads and rotating dial concentric. */
.controls .fields { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.compass-wrap {
  width: 100%;
  max-width: 440px;
  aspect-ratio: 1;
  min-height: 0;
  flex: none;
  align-self: center;
  margin: 24px auto 32px;
  overflow: visible;
}
.compass-wrap .dial {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}
.compass-wrap .luopan-crosshair {
  inset: 0;
  width: 100%;
  height: 100%;
  transform: none;
}
.ticks span {
  align-items: flex-start;
  inset: 0;
  padding-top: 5%;
}
.ticks span em {
  /* Radial lettering: top toward the centre, baseline toward the rim. */
  transform: rotate(180deg);
  flex: none;
  height: auto;
  min-width: 0;
  padding: 1px;
  font-size: clamp(10px, 2.6vw, 17px);
  line-height: 1.1;
  color: #fff3cf;
  background: #160a03;
  border: 0;
  box-shadow: none;
}
.ticks span b { top: 21%; }
.period strong { font-size: 1.7rem; white-space: nowrap; }
.period p { font-size: .8rem; }
.compass-panel, .chart-panel { min-width: 0; }
.portrait-notice { display: none; }
html.portrait-required .portrait-notice {
  position: fixed;
  inset: 0;
  z-index: 1000;
  display: grid;
  align-content: center;
  justify-items: center;
  padding: 24px;
  text-align: center;
  background: #090807;
  color: #f0c649;
}
html.portrait-required .shell { visibility: hidden; }
html.portrait-required { overflow: hidden; }
.production-footer {
  padding: 24px 8px calc(16px + env(safe-area-inset-bottom, 0px));
  text-align: center;
  font-size: 0.8rem;
  line-height: 1.5;
}
.production-footer a {
  display: inline-block;
  padding: 10px 4px;
  color: var(--muted);
  text-decoration: none;
}
.production-footer a:hover,
.production-footer a:focus-visible {
  color: var(--bright-yellow);
  text-decoration: underline;
}
