*,
*::before,
*::after {
  box-sizing: border-box;
}

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

body {
  background: #000;
  /* Center the letterboxed stage; black bars fill any off-ratio area. */
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 100vh;
  min-height: 100dvh;
  overflow: hidden;
  font-family: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
}

/*
 * The stage is full-bleed: it always spans the full viewport width (no side
 * bars), with its 16:9 height derived from that width. The 5 overlay columns
 * are percentage-based, so they stay pixel-aligned to the image's color bands
 * regardless of width. On viewports shorter than the derived height the stage
 * is centered and clipped top/bottom (vertical letterbox) — bands still align.
 */
.stage {
  position: relative;
  aspect-ratio: 16 / 9;
  width: 100vw;
  /* height is derived from width via aspect-ratio */
}

.stage__image {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: fill; /* stage matches the image ratio exactly, so no distortion */
  user-select: none;
  -webkit-user-drag: none;
}

/* Five equal 20%-wide transparent anchors over the image bands. */
.columns {
  position: absolute;
  inset: 0;
  display: flex;
}

.column {
  flex: 1 1 20%;
  display: block;
  height: 100%;
  text-decoration: none;
  outline: none;
  /* subtle hover affordance — image already carries the labels */
  transition: background-color 0.18s ease, box-shadow 0.18s ease;
}

.column__hit {
  display: block;
  width: 100%;
  height: 100%;
}

.column:hover,
.column:focus-visible {
  background-color: rgba(255, 255, 255, 0.12);
  box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.35);
}

.column:active {
  background-color: rgba(0, 0, 0, 0.14);
}

/* PROVE — present but inert until the 5th tool exists. */
.column--disabled {
  cursor: default;
}

.column--disabled:hover,
.column--disabled:focus-visible {
  background-color: rgba(255, 255, 255, 0.05);
  box-shadow: none;
}

@media (hover: none) {
  /* Avoid sticky hover states on touch devices; keep tap feedback only. */
  .column:hover {
    background-color: transparent;
    box-shadow: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  .column {
    transition: none;
  }
}
