:root {
  --angle-size: 150px;
  --bg: #222;
  --bg-display: #305e82;
  --bg-control: #2c96ba;

  --line-guide: #88878a;
  --line-rotation: #fefcfb;
  --line-rotation-control: #fefcfb;
  --angle: 0deg;
}

html,
body {
  margin: 0;
  padding: 0;
  width: 100%;
  height: 100%;
  overflow: hidden;
  box-sizing: border-box;
  font-family: sans-serif;
  display: flex;
  flex-direction: column;
}

main {
  flex-grow: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  background-color: var(--bg);
  padding: 32px;

  container-type: size;
}

.display {
  aspect-ratio: 1/1;
  height: 100%;
  background: #030003;
  overflow: hidden;
}
.screen {
  width: 100%;
  height: 100%;
  background: var(--bg-display);
  opacity: 0.8;
  position: relative;
  overflow: hidden;
  border-radius: 50%;
}

.control {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  padding: 16px;
}

.control .angle {
  position: relative;
}
.angle .angle-control {
  position: absolute;
  top: 50%;
  left: 50%;
  min-width: 80px;
  transform: translate(100%, 120%);
  user-select: none;
}
.angle-value {
  padding: 4px 8px;
  font-size: 1rem;
  font-weight: 600;
  color: rgb(255, 255, 255);
}

.angle-arc {
  position: absolute;
  width: 100%;
  height: 100%;
  border-radius: 50%;
  background: conic-gradient(
    #fcfcfe 0deg,
    #fcfcfe var(--angle),
    transparent var(--angle),
    transparent 360deg
  );
  pointer-events: none;
}

.angle {
  width: var(--angle-size);
  height: var(--angle-size);
  border-radius: 50%;
  background: var(--bg-control);
}

.angle:hover {
  cursor: grab;
}

.angle-placeholder {
  width: 100%;
  height: 100%;
  position: relative;
  border-radius: 50%;
}

.cross-lines {
  position: absolute;
  width: 100%;
  height: 100%;
  top: 0;
  left: 0;
  transform-origin: center center;
}

.cross-lines.cross-lines--rotation .line {
  background: var(--line-rotation);
}
.cross-lines.cross-lines--rotation.cross-lines--control .line {
  background: var(--line-rotation-control);
}

.line {
  position: absolute;
}

.pointer {
  position: absolute;
  transform: translate(-50%, -50%);
  pointer-events: none;
}

.cursor-guide .line {
  background: var(--line-guide);
}
.cursor-guide .horizontal,
.cross-lines .horizontal {
  top: 50%;
  left: 0;
  width: 100vw;
  height: 3px;
  transform: translateY(-50%);
}

.cursor-guide .vertical,
.cross-lines .vertical {
  top: 0;
  left: 50%;
  height: 100vh;
  width: 3px;
  transform: translateX(-50%);
}
