/* Shared mindmap styles - transitions and base node styling */

/* ── Node Transitions ── */
.mind-node {
  transition:
    transform 420ms cubic-bezier(0.22, 1, 0.36, 1),
    width 320ms cubic-bezier(0.22, 1, 0.36, 1),
    height 320ms cubic-bezier(0.22, 1, 0.36, 1),
    opacity 220ms ease,
    box-shadow 180ms ease;
}

.mind-node.entering {
  opacity: 0;
  transform: scale(0.95);
}

.mind-node.leaving {
  opacity: 0;
  pointer-events: none;
}

/* ── Link Transitions ── */
.mind-link {
  transition: d 520ms cubic-bezier(0.22, 1, 0.36, 1), opacity 220ms ease;
}

.mind-link.entering {
  animation: link-draw 920ms cubic-bezier(0.22, 1, 0.36, 1) both;
}

.mind-link.leaving {
  opacity: 0;
}

@keyframes link-draw {
  from {
    stroke-dashoffset: 1;
  }
  to {
    stroke-dashoffset: 0;
  }
}

/* ── Node Base Styling ── */
.mind-node {
  position: absolute;
  border-radius: 8px;
  border: 2px solid var(--node-color, var(--clr-primary, #2563EB));
  background: #fff;
  cursor: pointer;
  user-select: none;
  pointer-events: auto;
  box-sizing: border-box;
  transform-origin: center center;
}

.mind-node:hover {
  box-shadow: 0 2px 12px rgba(0, 0, 0, 0.12);
}

.mind-node.selected {
  box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.3), 0 2px 12px rgba(0, 0, 0, 0.12);
}

.mind-node.is-root {
  border-width: 3px;
  background: var(--node-color, var(--clr-primary, #2563EB));
}

/* ── Node Content ── */
.node-content {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
  padding: 0;
  text-align: center;
  font-size: 14px;
  line-height: 1.4;
  color: var(--text, #0F172A);
  overflow: hidden;
  border-radius: 6px;
  transition:
    background 180ms ease,
    transform 180ms ease,
    box-shadow 180ms ease;
}

.mind-node.is-root .node-content {
  color: #fff;
  font-weight: 600;
  font-size: 16px;
}

.node-subtitle {
  display: none;
  font-size: 12px;
  color: #64748B;
  margin-bottom: 4px;
}

.node-content.has-subtitle .node-subtitle {
  display: block;
}

.node-title {
  white-space: pre-wrap;
  word-break: break-word;
  padding: 8px 12px;
}

/* ── Editing Style (XMind-like: blue bg + white text + scale) ── */
.mind-node.editing {
  z-index: 10;
  transform: scale(1.08);
}

.mind-node.editing .node-content {
  background: var(--node-color, var(--clr-primary, #2563EB));
  box-shadow: 0 4px 16px rgba(37, 99, 235, 0.25);
}

.mind-node.editing.is-root .node-content {
  /* Root already has blue background, just add shadow */
  box-shadow: 0 6px 20px rgba(37, 99, 235, 0.35);
}

.mind-node.editing .node-title {
  color: #fff;
  font-weight: 600;
}

.mind-node.editing .node-subtitle {
  color: rgba(255, 255, 255, 0.8);
}

/* ── Node Editor (textarea) ── */
.node-editor {
  display: none;
  width: 100%;
  height: 100%;
  min-width: 12rem;
  min-height: 3rem;
  padding: 10px 16px;
  border: none;
  border-radius: 6px;
  background: transparent;
  color: #fff;
  font-size: 16px;
  font-weight: 600;
  line-height: 1.35;
  resize: none;
  white-space: pre-wrap;
  overflow: hidden;
  text-align: center;
}

.node-editor:focus {
  outline: none;
}

.mind-node.editing .node-editor {
  display: flex;
  align-items: center;
  justify-content: center;
}

.mind-node.editing .node-title,
.mind-node.editing .node-subtitle {
  display: none;
}

/* ── Collapse Toggle Button ── */
.collapse-toggle {
  position: absolute;
  right: -8px;
  top: 50%;
  transform: translateY(-50%);
  width: 16px;
  height: 16px;
  border-radius: 50%;
  border: 1px solid var(--node-color, var(--clr-primary, #2563EB));
  background: #fff;
  color: var(--node-color, var(--clr-primary, #2563EB));
  font-size: 10px;
  line-height: 16px;
  text-align: center;
  padding: 0;
  cursor: pointer;
  z-index: 5;
  transition: background 150ms ease, color 150ms ease;
}

.collapse-toggle:hover {
  background: var(--node-color, var(--clr-primary, #2563EB));
  color: #fff;
}

.collapse-toggle.left-side {
  right: auto;
  left: -8px;
}

/* ── Link Styling ── */
.mind-link {
  fill: none;
  stroke-width: 2;
  stroke-linecap: round;
  stroke: var(--link-color, var(--clr-link, #94A3B8));
  opacity: 0.6;
}

.mind-link.path-link {
  opacity: 0.85;
  stroke-width: 2.5;
}

/* ── Node Measurer (hidden) ── */
.node-measurer {
  position: fixed;
  top: -10000px;
  left: -10000px;
  visibility: hidden;
  pointer-events: none;
}

/* ── Active State (Presenter style) ── */
.mind-node.active .node-content {
  border-color: var(--node-color, var(--clr-primary, #2563EB));
  border-width: 3px;
  background: var(--node-color, var(--clr-primary, #2563EB));
}

.mind-node.active .node-title {
  color: #ffffff;
}

.mind-node.active .node-subtitle {
  color: rgba(255, 255, 255, 0.85);
}

/* ── Path Node (Presenter style) ── */
.mind-node.path-node {
  opacity: 1;
}

/* ── Complete Node (Presenter style) ── */
.mind-node.complete-node {
  opacity: 0.75;
}