:root {
  color-scheme: dark;
  --cabinet: #171714;
  --cabinet-edge: #363225;
  --screen-glass: #020305;
  --lamp-red: #c7362f;
  --lamp-amber: #d7a339;
  --lamp-green: #4ab36d;
}

* {
  box-sizing: border-box;
}

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

body {
  overflow: hidden;
  background:
    linear-gradient(180deg, #20201d 0%, #080809 100%);
  color: #f2f2f2;
  font-family: Monaco, "Courier New", monospace;
}

.stage {
  min-height: 100svh;
  display: grid;
  place-items: center;
  padding: 22px;
}

.terminal {
  width: min(100%, 1020px);
}

.bezel {
  position: relative;
  padding: clamp(14px, 3vw, 30px);
  border: 4px solid var(--cabinet-edge);
  border-radius: 8px;
  background: var(--cabinet);
  box-shadow:
    0 26px 70px rgba(0, 0, 0, 0.55),
    inset 0 2px 0 rgba(255, 255, 255, 0.08),
    inset 0 -8px 18px rgba(0, 0, 0, 0.42);
}

.screen-wrap {
  position: relative;
  width: 100%;
  max-height: calc(100svh - 118px);
  aspect-ratio: 4 / 3;
  overflow: hidden;
  border-radius: 4px;
  border: 2px solid #050505;
  background: var(--screen-glass);
  box-shadow:
    inset 0 0 34px rgba(0, 0, 0, 0.9),
    0 0 0 1px rgba(255, 255, 255, 0.05);
}

.screen-wrap::before,
.screen-wrap::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
}

.screen-wrap::before {
  background:
    linear-gradient(
      180deg,
      rgba(255, 255, 255, 0.08),
      rgba(255, 255, 255, 0) 19%,
      rgba(0, 0, 0, 0.28) 100%
    );
  mix-blend-mode: screen;
  opacity: 0.38;
}

.screen-wrap::after {
  background:
    repeating-linear-gradient(
      180deg,
      rgba(255, 255, 255, 0.07) 0,
      rgba(255, 255, 255, 0.07) 1px,
      rgba(0, 0, 0, 0.18) 2px,
      rgba(0, 0, 0, 0.18) 4px
    );
  opacity: 0.34;
}

#screen {
  display: block;
  width: 100%;
  height: 100%;
  image-rendering: pixelated;
  image-rendering: crisp-edges;
  background: #000;
}

.pal-preview #screen {
  filter: blur(0.28px) saturate(1.22) contrast(1.1);
}

.leds {
  position: absolute;
  right: clamp(16px, 3vw, 34px);
  bottom: 9px;
  display: flex;
  gap: 9px;
}

.leds span {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  box-shadow: 0 0 9px currentColor;
}

.leds span:nth-child(1) {
  color: var(--lamp-red);
  background: var(--lamp-red);
}

.leds span:nth-child(2) {
  color: var(--lamp-amber);
  background: var(--lamp-amber);
  opacity: 0.82;
}

.leds span:nth-child(3) {
  color: var(--lamp-green);
  background: var(--lamp-green);
}
