/* l0ve.io -- style */
/* layout + typography base. all animation driven by engine.ts */

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

html, body {
  width: 100%;
  height: 100%;
  overflow: hidden;
  background: #0a0a0a;
}

#stage {
  position: relative;
  width: 100%;
  height: 100%;
  overflow: hidden;
}

/* color layers -- full viewport, stacked */
.color-layer {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  will-change: background-color, clip-path;
}

/* concentric rectangles emanating from the "0" */
.concentric-rect {
  position: absolute;
  border: 2px solid rgba(255, 51, 102, 0.35);
  pointer-events: none;
  will-change: transform, left, top, width, height, opacity;
}

/* text container -- cinematic left-third, bottom */
.text-container {
  position: absolute;
  bottom: 20%;
  left: 8%;
  z-index: 100;
  display: flex;
  align-items: baseline;
  pointer-events: none;
  user-select: none;
}

/* individual characters */
.char {
  display: inline-block;
  font-family: 'Space Mono', 'Courier New', monospace;
  font-size: clamp(2rem, 6vw, 8rem);
  font-weight: 700;
  color: #fff;
  text-shadow:
    0 0 20px rgba(255, 255, 255, 0.4),
    0 0 60px rgba(255, 255, 255, 0.15);
  will-change: transform;
  transform-origin: center bottom;
  letter-spacing: -0.02em;
}

/* the "0" -- primary pulse target */
.char-zero {
  color: #ff3366;
  text-shadow:
    0 0 30px rgba(255, 51, 102, 0.6),
    0 0 80px rgba(255, 51, 102, 0.3),
    0 0 120px rgba(255, 51, 102, 0.15);
}

/* the "o" in .io -- secondary pulse target */
.char-o {
  color: #ff6699;
  text-shadow:
    0 0 25px rgba(255, 102, 153, 0.5),
    0 0 70px rgba(255, 102, 153, 0.25);
}

/* the dot */
.char-dot {
  color: rgba(255, 255, 255, 0.6);
  font-size: clamp(1.5rem, 4vw, 6rem);
}
