/* ============================================
   CANVAS.CSS — Viewport & World Container
   ============================================ */

/* The viewport is the visible window */
.viewport {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  overflow: hidden;
  touch-action: none;
  user-select: none;
  -webkit-user-select: none;
  z-index: var(--z-canvas);
  background-color: var(--color-canvas);

  /* Clean white — like Umi reference */
  background-image: none;
}

/* The world is the pannable surface */
.world {
  position: absolute;
  top: 0;
  left: 0;
  width: 1px;
  height: 1px;
  transform-origin: 0 0;
  will-change: transform;
}

/* Each element on the canvas */
.canvas-element {
  position: absolute;
  transform-origin: center center;
  will-change: transform;
}

/* Depth layers for parallax */
.canvas-element[data-depth="0"] { z-index: 2; }
.canvas-element[data-depth="1"] { z-index: calc(var(--z-elements) + 1); }
.canvas-element[data-depth="2"] { z-index: calc(var(--z-elements) + 2); }
.canvas-element[data-depth="3"] { z-index: calc(var(--z-elements) + 3); }

/* FigJam-style dot grid */
.viewport::before {
  content: '';
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  z-index: 0;
  background-image: radial-gradient(circle, rgba(0, 0, 0, 0.15) 1px, transparent 1px);
  background-size: 24px 24px;
}

/* Drag hint */
.drag-hint {
  position: fixed;
  top: 24px;
  left: 50%;
  transform: translateX(-50%);
  z-index: var(--z-nav);
  display: flex;
  align-items: center;
  gap: var(--space-sm);
  padding: var(--space-sm) var(--space-lg);
  background: var(--color-white);
  border: 1px solid rgba(0, 0, 0, 0.1);
  border-radius: var(--radius-xl);
  font-family: var(--font-hand);
  font-size: var(--text-md);
  color: var(--color-ink-soft);
  pointer-events: none;
  opacity: 0;
  transition: opacity 0.6s var(--ease-out-expo);
}

.drag-hint.visible {
  opacity: 1;
}

.drag-hint svg {
  width: 20px;
  height: 20px;
  animation: dragHintBounce 2s ease-in-out infinite;
}

@keyframes dragHintBounce {
  0%, 100% { transform: translateX(0); }
  50% { transform: translateX(8px); }
}
