/**
 * Mindmap Canvas Styles
 *
 * SVG 캔버스 및 관련 스타일
 */

/* Canvas */
.mindmap-canvas {
  width: 100%;
  height: 100%;
  cursor: grab;
  user-select: none;
}

.mindmap-canvas--dragging {
  cursor: grabbing;
}

.mindmap-canvas--connecting {
  cursor: crosshair;
}

/* Grid Background */
.mindmap-canvas__grid {
  fill: url(#grid-pattern);
}

/* Selection Box */
.mindmap-canvas__selection {
  fill: rgba(33, 150, 243, 0.1);
  stroke: var(--color-primary-500);
  stroke-width: 1;
  stroke-dasharray: 4 2;
}

/* Connection Lines */
.connection {
  fill: none;
  stroke: var(--color-neutral-400);
  stroke-width: 2;
  transition: stroke var(--transition-fast);
}

.connection:hover {
  stroke: var(--color-primary-400);
}

.connection--selected {
  stroke: var(--color-primary-500);
  stroke-width: 2.5;
}

/* Connection Styles */
.connection--straight {
  /* 직선 */
}

.connection--curved {
  /* 곡선 - cubic bezier */
}

.connection--orthogonal {
  /* 직각선 */
}

/* Connection Arrow */
.connection__arrow {
  fill: var(--color-neutral-400);
}

.connection:hover .connection__arrow {
  fill: var(--color-primary-400);
}

/* Temporary Connection (while creating) */
.connection--temp {
  stroke: var(--color-primary-300);
  stroke-dasharray: 5 5;
  opacity: 0.7;
}

/* Drop Zone Indicator */
.drop-zone {
  fill: rgba(33, 150, 243, 0.2);
  stroke: var(--color-primary-500);
  stroke-width: 2;
  stroke-dasharray: 8 4;
  opacity: 0;
  transition: opacity var(--transition-fast);
}

.drop-zone--active {
  opacity: 1;
}

/* Zoom Info Overlay */
.canvas-info {
  position: absolute;
  top: var(--spacing-4);
  right: var(--spacing-4);
  padding: var(--spacing-2) var(--spacing-3);
  background-color: rgba(255, 255, 255, 0.9);
  border-radius: var(--radius-md);
  font-size: var(--font-size-xs);
  color: var(--color-text-secondary);
  z-index: var(--z-toolbar);
}

/* Canvas Loading */
.canvas-loading {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  background-color: rgba(255, 255, 255, 0.8);
  z-index: var(--z-toolbar);
}

.canvas-loading__spinner {
  width: 48px;
  height: 48px;
  border: 4px solid var(--color-neutral-200);
  border-top-color: var(--color-primary-500);
  border-radius: 50%;
  animation: spin 1s linear infinite;
}

/* Empty State */
.canvas-empty {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  text-align: center;
  color: var(--color-text-secondary);
}

.canvas-empty__icon {
  width: 64px;
  height: 64px;
  margin: 0 auto var(--spacing-4);
  opacity: 0.5;
}

.canvas-empty__text {
  font-size: var(--font-size-lg);
  margin-bottom: var(--spacing-2);
}

.canvas-empty__hint {
  font-size: var(--font-size-sm);
}
