/* CSS Variables for anchor positioning */
.morphingPopoverContainer {
  position: relative;
  display: inline-block;
  --anchor-name: morphing-trigger;
  --target-width: 220px;
  --target-height: 120px;
  --transition-duration: 0.2s;
}

/* Trigger button styles */
.morphingTrigger {
  anchor-name: var(--anchor-name);
  width: 44px;
  aspect-ratio: 1;
  border-radius: 50%;
  display: grid;
  place-items: center;
  font-size: 24px;
  cursor: pointer;
  border: none;
  background: transparent;
  transition: background-color 0.2s;
}

.morphingTrigger:hover {
  background-color: hsl(var(--muted) / 0.5);
}

/* Popover styles - anchored to trigger by default */
.morphingPopover {
  position-anchor: var(--anchor-name);
  left: anchor(left);
  top: anchor(top);
  width: anchor-size(width);
  min-height: 0;
  border-radius: 50%;
  overflow: hidden;
  padding: 0;
  height: anchor-size(height);
  transition-behavior: allow-discrete;
  transition-property: display, overlay, width, height, top,
    border-radius, left, position-anchor, transform, opacity;
  transition-duration: var(--transition-duration);
  transition-timing-function: ease-out;
  transform-origin: center center;
  opacity: 0;
}

/* When popover is open - expand to target size */
.morphingPopover:popover-open {
  position-anchor: fixed;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  width: var(--target-width);
  height: var(--target-height);
  border-radius: 12px;
  opacity: 1;
  border: 1px solid hsl(var(--border));
  background: hsl(var(--background));
  box-shadow: 0 10px 40px -10px hsl(var(--foreground) / 0.3);
}

/* Starting style for animation - browser support required */
@starting-style {
  .morphingPopover:popover-open {
    position-anchor: var(--anchor-name);
    left: anchor(left);
    top: anchor(top);
    transform: none;
    border-radius: 50%;
    width: anchor-size(width);
    height: anchor-size(height);
    opacity: 0;
  }
}

/* Fallback for browsers without anchor positioning */
@supports not (anchor-name: none) {
  .morphingPopover {
    position: fixed;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%) scale(0.8);
    opacity: 0;
    pointer-events: none;
  }

  .morphingPopover:popover-open {
    transform: translate(-50%, -50%) scale(1);
    opacity: 1;
    pointer-events: auto;
  }

  @starting-style {
    .morphingPopover:popover-open {
      transform: translate(-50%, -50%) scale(0.8);
      opacity: 0;
    }
  }
}

/* Variant: Morphing to a specific target element */
.morphingPopoverTargetContainer {
  position: relative;
  display: inline-block;
  --anchor-name: morphing-trigger;
  --target-anchor-name: morphing-target;
  --transition-duration: 0.2s;
}

.morphingPopoverTarget {
  position-anchor: var(--anchor-name);
  left: anchor(left);
  top: anchor(top);
  width: anchor-size(width);
  min-height: 0;
  border-radius: 50%;
  overflow: hidden;
  padding: 0;
  height: anchor-size(height);
  transition-behavior: allow-discrete;
  transition-property: display, overlay, width, height, top,
    border-radius, left, position-anchor, transform, opacity;
  transition-duration: var(--transition-duration);
  transition-timing-function: ease-out;
}

.morphingPopoverTarget:popover-open {
  position-anchor: var(--target-anchor-name);
  left: anchor(left);
  top: anchor(top);
  border-radius: 12px;
  min-width: 200px;
  min-height: 120px;
  border: 1px solid hsl(var(--border));
  background: hsl(var(--background));
  box-shadow: 0 10px 40px -10px hsl(var(--foreground) / 0.3);
  opacity: 1;
}

@starting-style {
  .morphingPopoverTarget:popover-open {
    position-anchor: var(--anchor-name);
    left: anchor(left);
    top: anchor(top);
    border-radius: 50%;
    width: anchor-size(width);
    height: anchor-size(height);
    opacity: 0;
  }
}

