/* ═══════════════════════════════════════════════════════════════
   DIVIDER-N — Horizontal or vertical divider with optional label.
   ═══════════════════════════════════════════════════════════════ */

@scope (divider-ui) {
  :where(:scope) {
    /* ── Tokens ── */
    --divider-color-default:    var(--a-border-subtle);
    --divider-size-default:     1px;
    --divider-spacing-default:  var(--a-space-3);
    --divider-label-font-default: var(--a-ui-sm);
    --divider-label-fg-default: var(--a-fg-muted);
    --divider-label-px-default: var(--a-space-2);
  }

  /* ── Horizontal (default) ── */
  :scope {
    box-sizing: border-box;
    display: flex;
    align-items: center;
    width: 100%;
    margin-block: var(--divider-spacing, var(--divider-spacing-default));
  }

  /* Horizontal line without label */
  :scope:not(:has([slot="label"]))::before {
    content: '';
    flex: 1;
    height: var(--divider-size, var(--divider-size-default));
    background: var(--divider-color, var(--divider-color-default));
  }

  /* Horizontal line with label — left line */
  :scope:has([slot="label"])::before {
    content: '';
    flex: 1;
    height: var(--divider-size, var(--divider-size-default));
    background: var(--divider-color, var(--divider-color-default));
  }

  /* Horizontal line with label — right line */
  :scope:has([slot="label"])::after {
    content: '';
    flex: 1;
    height: var(--divider-size, var(--divider-size-default));
    background: var(--divider-color, var(--divider-color-default));
  }

  /* ── Label ── */
  [slot="label"] {
    padding-inline: var(--divider-label-px, var(--divider-label-px-default));
    font-size: var(--divider-label-font, var(--divider-label-font-default));
    color: var(--divider-label-fg, var(--divider-label-fg-default));
    white-space: nowrap;
    line-height: 1;
  }

  /* ── Vertical ── */
  :scope[vertical] {
    display: inline-flex;
    flex-direction: column;
    width: auto;
    height: auto;
    align-self: stretch;
    margin-block: 0;
    margin-inline: var(--divider-spacing, var(--divider-spacing-default));
  }

  /* Vertical line without label */
  :scope[vertical]:not(:has([slot="label"]))::before {
    content: '';
    flex: 1;
    width: var(--divider-size, var(--divider-size-default));
    height: auto;
    background: var(--divider-color, var(--divider-color-default));
  }

  /* Vertical line with label — top line */
  :scope[vertical]:has([slot="label"])::before {
    content: '';
    flex: 1;
    width: var(--divider-size, var(--divider-size-default));
    height: auto;
    background: var(--divider-color, var(--divider-color-default));
  }

  /* Vertical line with label — bottom line */
  :scope[vertical]:has([slot="label"])::after {
    content: '';
    flex: 1;
    width: var(--divider-size, var(--divider-size-default));
    height: auto;
    background: var(--divider-color, var(--divider-color-default));
  }

  /* Vertical label */
  :scope[vertical] [slot="label"] {
    padding-inline: 0;
    padding-block: var(--divider-label-px, var(--divider-label-px-default));
    writing-mode: vertical-lr;
  }
}
