*, *::before, *::after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

html, body {
  width: 100%;
  height: 100%;
  overflow: hidden;
  background: #1a1a1a;
  cursor: default;
  font-family: system-ui, -apple-system, sans-serif;
}

/* ── FIXED BACKDROP ── */
#backdrop {
  position: fixed;
  inset: 0;
  z-index: 0;
}

#backdrop .backdrop-fill {
  width: 100%;
  height: 100%;
  background: #1a1a1a;
}

/* ── STAGE — 16:9 canvas centered ── */
#stage {
  position: fixed;
  inset: 0;
  z-index: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  pointer-events: none;
}

#collage {
  position: relative;
  flex-shrink: 0;
  pointer-events: none;
}

/* ── DRAGGABLE PIECE ── */
.piece {
  position: absolute;
  cursor: grab;
  pointer-events: auto;
  user-select: none;
  opacity: 0;
  will-change: transform;
}

.piece.revealed {
  animation: pieceIn 0.75s ease forwards;
}

.piece:hover:not(.dragging):not(.piece-cta-group) {
  filter: drop-shadow(0 6px 20px rgba(0, 0, 0, 0.4));
  z-index: 50 !important;
}

.piece.dragging {
  cursor: grabbing;
  filter: drop-shadow(0 14px 38px rgba(0, 0, 0, 0.5));
  z-index: 200 !important;
  transition: none !important;
}

/* ── SITE NAME ── */
#site-name {
  position: fixed;
  top: 22px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 300;
  font-family: Georgia, 'Times New Roman', serif;
  letter-spacing: 0.52em;
  text-transform: uppercase;
  color: #c9a84c;
  font-weight: 600;
  pointer-events: none;
  white-space: nowrap;
  opacity: 0;
  animation: labelFade 1s ease 2.1s forwards;
  text-shadow: 0 2px 18px rgba(0, 0, 0, 0.6);
}

@keyframes pieceIn {
  from { opacity: 0; transform: translateY(14px); }
  to   { opacity: 1; transform: translateY(0); }
}

@keyframes labelFade {
  to { opacity: 1; }
}

/* ── FLOAT ── */
@keyframes floatA {
  0%, 100% { transform: translate(0, 0); }
  25% { transform: translate(3px, -5px); }
  50% { transform: translate(-2px, -8px); }
  75% { transform: translate(-4px, -3px); }
}

@keyframes floatB {
  0%, 100% { transform: translate(0, 0); }
  25% { transform: translate(-4px, -3px); }
  50% { transform: translate(2px, -7px); }
  75% { transform: translate(5px, -2px); }
}

@keyframes floatC {
  0%, 100% { transform: translate(0, 0); }
  25% { transform: translate(2px, -6px); }
  50% { transform: translate(-3px, -4px); }
  75% { transform: translate(-1px, -9px); }
}

.piece.revealed.float-a {
  animation: pieceIn 0.75s ease forwards, floatA 8s ease-in-out 1.5s infinite;
}

.piece.revealed.float-b {
  animation: pieceIn 0.75s ease forwards, floatB 10s ease-in-out 2s infinite;
}

.piece.revealed.float-c {
  animation: pieceIn 0.75s ease forwards, floatC 9s ease-in-out 1.8s infinite;
}

.piece:not(.dragging):not(.piece-cta-group) {
  transition: filter 0.3s ease, transform 0.4s ease;
}

.piece:hover:not(.dragging):not(.piece-cta-group) {
  transform: translate(-3px, -5px) !important;
  filter: drop-shadow(0 8px 24px rgba(0, 0, 0, 0.45));
}

/* ── INTRO VEIL ── */
#intro {
  position: fixed;
  inset: 0;
  background: #1a1a1a;
  z-index: 9999;
  pointer-events: none;
  animation: fadeOut 1.4s ease 0.1s forwards;
}

@keyframes fadeOut {
  to { opacity: 0; }
}
