/* Presago Design System — Elements
 * 11 componenti con API modellata 1:1 su Mantine.
 * Tutti gli interattivi hanno stati idle/hover/pressed/focused/disabled
 * e ereditano il focus ring da tokens.css. */

/* ════════════════════════════════════════════════════
 * Heading — Mantine <Title order={1..6}>
 * ════════════════════════════════════════════════════ */
.presago-heading {
  margin: 0;
  color: var(--presago-color-text-default);
  font-family: var(--presago-font-family-heading);
  font-weight: var(--presago-font-weight-semibold);
  letter-spacing: var(--presago-letter-spacing-tight);
}

.presago-heading[data-level="1"] {
  font-size: var(--presago-font-size-heading-h1);
  line-height: var(--presago-line-height-heading-h1);
  font-weight: var(--presago-font-weight-bold);
}
.presago-heading[data-level="2"] {
  font-size: var(--presago-font-size-heading-h2);
  line-height: var(--presago-line-height-heading-h2);
}
.presago-heading[data-level="3"] {
  font-size: var(--presago-font-size-heading-h3);
  line-height: var(--presago-line-height-heading-h3);
}
.presago-heading[data-level="4"] {
  font-size: var(--presago-font-size-heading-h4);
  line-height: var(--presago-line-height-heading-h4);
}
.presago-heading[data-level="5"] {
  font-size: var(--presago-font-size-heading-h5);
  line-height: var(--presago-line-height-heading-h5);
}
.presago-heading[data-level="6"] {
  font-size: var(--presago-font-size-heading-h6);
  line-height: var(--presago-line-height-heading-h6);
}

/* ════════════════════════════════════════════════════
 * Icon — presentational SVG wrapper (Beta)
 * ════════════════════════════════════════════════════ */
.presago-icon {
  display: inline-flex;
  flex: none;
  align-items: center;
  justify-content: center;
  color: var(--presago-color-icon-default);
  width: 1.25em;
  height: 1.25em;
}

.presago-icon > svg {
  width: 100%;
  height: 100%;
  fill: none;
  stroke: currentColor;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.presago-icon[data-size="xs"] { width: 0.875rem; height: 0.875rem; }
.presago-icon[data-size="sm"] { width: 1rem; height: 1rem; }
.presago-icon[data-size="md"] { width: 1.25rem; height: 1.25rem; }
.presago-icon[data-size="lg"] { width: 1.5rem; height: 1.5rem; }
.presago-icon[data-size="xl"] { width: 2rem; height: 2rem; }

.presago-icon[data-color="subtle"] { color: var(--presago-color-icon-subtle); }
.presago-icon[data-color="brand"] { color: var(--presago-color-icon-brand); }
.presago-icon[data-color="success"] { color: var(--presago-color-icon-success); }
.presago-icon[data-color="warning"] { color: var(--presago-color-icon-warning); }
.presago-icon[data-color="danger"] { color: var(--presago-color-icon-danger); }
.presago-icon[data-color="info"] { color: var(--presago-color-icon-info); }

/* ════════════════════════════════════════════════════
 * Button — Mantine <Button>
 * Varianti: filled / light / outline / subtle
 * ════════════════════════════════════════════════════ */
.presago-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--presago-spacing-100);
  min-height: 2.25rem;
  padding: 0 var(--presago-spacing-200);
  border: var(--presago-border-width-thin) solid transparent;
  border-radius: var(--presago-radius-md);
  background-color: var(--presago-color-item-primary-idle);
  color: var(--presago-color-text-on-primary);
  font-family: inherit;
  font-size: var(--presago-font-size-body-sm);
  font-weight: var(--presago-font-weight-medium);
  line-height: 1;
  letter-spacing: var(--presago-letter-spacing-normal);
  text-decoration: none;
  cursor: pointer;
  user-select: none;
  transition: background-color var(--presago-motion-duration-fast) var(--presago-motion-easing-standard), color var(--presago-motion-duration-fast) var(--presago-motion-easing-standard), border-color var(--presago-motion-duration-fast) var(--presago-motion-easing-standard), box-shadow var(--presago-motion-duration-fast) var(--presago-motion-easing-standard);
}

/* Size */
.presago-button[data-size="xs"] { min-height: 1.625rem; padding: 0 var(--presago-spacing-150); font-size: var(--presago-font-size-body-xs); }
.presago-button[data-size="sm"] { min-height: 2rem;     padding: 0 var(--presago-spacing-200); font-size: var(--presago-font-size-body-sm); }
.presago-button[data-size="md"] { min-height: 2.25rem;  padding: 0 var(--presago-spacing-200); font-size: var(--presago-font-size-body-sm); }
.presago-button[data-size="lg"] { min-height: 2.625rem; padding: 0 var(--presago-spacing-300); font-size: var(--presago-font-size-body-md); }
.presago-button[data-size="xl"] { min-height: 3rem;     padding: 0 var(--presago-spacing-400); font-size: var(--presago-font-size-body-lg); }

/* Color — filled (default) — supporto primary/secondary/success/warning/danger/info */
.presago-button[data-color="primary"] {
  background-color: var(--presago-color-item-primary-idle);
  color: var(--presago-color-text-on-primary);
}
.presago-button[data-color="primary"]:hover { background-color: var(--presago-color-item-primary-hover); }
.presago-button[data-color="primary"]:active { background-color: var(--presago-color-item-primary-pressed); }

.presago-button[data-color="secondary"] {
  background-color: var(--presago-color-item-secondary-idle);
  color: var(--presago-color-text-on-secondary);
}
.presago-button[data-color="secondary"]:hover { background-color: var(--presago-color-item-secondary-hover); }
.presago-button[data-color="secondary"]:active { background-color: var(--presago-color-item-secondary-pressed); }

.presago-button[data-color="success"] {
  background-color: var(--presago-color-item-success-idle);
  color: var(--presago-color-text-on-success);
}
.presago-button[data-color="success"]:hover { background-color: var(--presago-color-item-success-hover); }
.presago-button[data-color="success"]:active { background-color: var(--presago-color-item-success-pressed); }

.presago-button[data-color="warning"] {
  background-color: var(--presago-color-item-warning-idle);
  color: var(--presago-color-text-on-warning);
}
.presago-button[data-color="warning"]:hover { background-color: var(--presago-color-item-warning-hover); }
.presago-button[data-color="warning"]:active { background-color: var(--presago-color-item-warning-pressed); }

.presago-button[data-color="danger"] {
  background-color: var(--presago-color-item-danger-idle);
  color: var(--presago-color-text-on-danger);
}
.presago-button[data-color="danger"]:hover { background-color: var(--presago-color-item-danger-hover); }
.presago-button[data-color="danger"]:active { background-color: var(--presago-color-item-danger-pressed); }

.presago-button[data-color="info"] {
  background-color: var(--presago-color-item-info-idle);
  color: var(--presago-color-text-on-info);
}
.presago-button[data-color="info"]:hover { background-color: var(--presago-color-item-info-hover); }
.presago-button[data-color="info"]:active { background-color: var(--presago-color-item-info-pressed); }

/* Variant · outline — contorno + testo colore item, bg trasparente */
.presago-button[data-variant="outline"] {
  background-color: transparent;
  border-color: currentColor;
}
.presago-button[data-variant="outline"][data-color="primary"] { color: var(--presago-color-item-primary-idle); }
.presago-button[data-variant="outline"][data-color="primary"]:hover { background-color: var(--presago-color-item-primary-idle); color: var(--presago-color-text-on-primary); }
.presago-button[data-variant="outline"][data-color="secondary"] { color: var(--presago-color-text-default); border-color: var(--presago-color-border-default); }
.presago-button[data-variant="outline"][data-color="secondary"]:hover { background-color: var(--presago-color-item-secondary-hover); }
.presago-button[data-variant="outline"][data-color="success"] { color: var(--presago-color-item-success-idle); }
.presago-button[data-variant="outline"][data-color="success"]:hover { background-color: var(--presago-color-item-success-idle); color: var(--presago-color-text-on-success); }
.presago-button[data-variant="outline"][data-color="warning"] { color: var(--presago-color-item-warning-idle); }
.presago-button[data-variant="outline"][data-color="warning"]:hover { background-color: var(--presago-color-item-warning-idle); color: var(--presago-color-text-on-warning); }
.presago-button[data-variant="outline"][data-color="danger"] { color: var(--presago-color-item-danger-idle); }
.presago-button[data-variant="outline"][data-color="danger"]:hover { background-color: var(--presago-color-item-danger-idle); color: var(--presago-color-text-on-danger); }
.presago-button[data-variant="outline"][data-color="info"] { color: var(--presago-color-item-info-idle); }
.presago-button[data-variant="outline"][data-color="info"]:hover { background-color: var(--presago-color-item-info-idle); color: var(--presago-color-text-on-info); }

/* Variant · subtle */
.presago-button[data-variant="subtle"] {
  background-color: transparent;
  border-color: transparent;
  color: var(--presago-color-text-subtle);
}

.presago-button[data-variant="subtle"]:hover,
.presago-button[data-variant="subtle"][aria-current="true"],
.presago-button[data-variant="subtle"][aria-current="page"] {
  background-color: var(--presago-color-background-ui);
  color: var(--presago-color-text-default);
}

/* Disabled */
.presago-button:disabled,
.presago-button[aria-disabled="true"] {
  background-color: var(--presago-color-item-disabled);
  color: var(--presago-color-text-disabled);
  border-color: transparent;
  cursor: not-allowed;
  pointer-events: none;
}

.presago-button__label {
  transition: opacity var(--presago-motion-duration-fast) var(--presago-motion-easing-standard);
}

/* Loading — spinner inline */
.presago-button[data-loading="true"] {
  cursor: progress;
  pointer-events: none;
}
.presago-button[data-loading="true"] .presago-button__label {
  opacity: 0;
}
.presago-button[data-loading="true"]::after {
  content: "";
  position: absolute;
  width: 1em;
  height: 1em;
  border: 2px solid currentColor;
  border-right-color: transparent;
  border-radius: var(--presago-radius-full);
  animation: presago-spin var(--presago-motion-duration-spin) var(--presago-motion-easing-linear) infinite;
}
.presago-button[data-loading="true"] {
  position: relative;
}

.presago-button__section {
  display: inline-flex;
  align-items: center;
  flex: none;
}

/* ════════════════════════════════════════════════════
 * IconButton — Mantine <ActionIcon>
 * Richiede aria-label (validato in JS).
 * ════════════════════════════════════════════════════ */
.presago-icon-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.25rem;
  height: 2.25rem;
  padding: 0;
  border: var(--presago-border-width-thin) solid transparent;
  border-radius: var(--presago-radius-md);
  background-color: var(--presago-color-item-primary-idle);
  color: var(--presago-color-text-on-primary);
  cursor: pointer;
  transition: background-color var(--presago-motion-duration-fast) var(--presago-motion-easing-standard), color var(--presago-motion-duration-fast) var(--presago-motion-easing-standard);
}

.presago-icon-button[data-size="xs"] { width: 1.625rem; height: 1.625rem; }
.presago-icon-button[data-size="sm"] { width: 2rem; height: 2rem; }
.presago-icon-button[data-size="md"] { width: 2.25rem; height: 2.25rem; }
.presago-icon-button[data-size="lg"] { width: 2.625rem; height: 2.625rem; }
.presago-icon-button[data-size="xl"] { width: 3rem; height: 3rem; }

.presago-icon-button[data-color="secondary"] { background-color: var(--presago-color-item-secondary-idle); color: var(--presago-color-text-default); }
.presago-icon-button[data-color="secondary"]:hover { background-color: var(--presago-color-item-secondary-hover); }
.presago-icon-button[data-color="danger"] { background-color: var(--presago-color-item-danger-idle); color: var(--presago-color-text-on-danger); }
.presago-icon-button[data-color="danger"]:hover { background-color: var(--presago-color-item-danger-hover); }

.presago-icon-button[data-variant="subtle"] {
  background-color: transparent;
  color: var(--presago-color-icon-default);
}
.presago-icon-button[data-variant="subtle"]:hover {
  background-color: var(--presago-color-item-secondary-hover);
}

.presago-icon-button:disabled,
.presago-icon-button[aria-disabled="true"] {
  background-color: var(--presago-color-item-disabled);
  color: var(--presago-color-text-disabled);
  cursor: not-allowed;
  pointer-events: none;
}

/* ════════════════════════════════════════════════════
 * TextInput — Mantine <TextInput>
 * ════════════════════════════════════════════════════ */
.presago-field {
  display: flex;
  flex-direction: column;
  gap: var(--presago-spacing-075);
}

.presago-field__label {
  color: var(--presago-color-text-default);
  font-size: var(--presago-font-size-body-sm);
  font-weight: var(--presago-font-weight-medium);
}

.presago-field__required {
  color: var(--presago-color-text-danger);
  margin-inline-start: var(--presago-spacing-025);
}

.presago-field__description {
  color: var(--presago-color-text-subtle);
  font-size: var(--presago-font-size-body-xs);
}

.presago-field__error {
  display: flex;
  align-items: center;
  gap: var(--presago-spacing-050);
  color: var(--presago-color-text-danger);
  font-size: var(--presago-font-size-body-xs);
  font-weight: var(--presago-font-weight-medium);
}

.presago-text-input__wrapper {
  position: relative;
  display: flex;
  align-items: center;
  background-color: var(--presago-color-background-page);
  border: var(--presago-border-width-thin) solid var(--presago-color-border-input);
  border-radius: var(--presago-radius-md);
  transition: border-color var(--presago-motion-duration-fast) var(--presago-motion-easing-standard), box-shadow var(--presago-motion-duration-fast) var(--presago-motion-easing-standard);
}

.presago-text-input__wrapper:hover {
  border-color: var(--presago-color-text-subtle);
}

.presago-text-input__wrapper:focus-within {
  border-color: var(--presago-color-border-focused);
  box-shadow: 0 0 0 var(--presago-focus-ring-width) var(--presago-color-border-focused);
}

.presago-text-input__wrapper[data-error="true"] {
  border-color: var(--presago-color-border-danger);
}

.presago-text-input__wrapper[data-error="true"]:focus-within {
  box-shadow: 0 0 0 var(--presago-focus-ring-width) var(--presago-color-border-danger);
}

.presago-text-input {
  flex: 1;
  min-width: 0;
  min-height: 2.25rem;
  padding: 0 var(--presago-spacing-150);
  border: 0;
  background-color: transparent;
  color: var(--presago-color-text-default);
  font-family: inherit;
  font-size: var(--presago-font-size-body-sm);
  line-height: 1.2;
  outline: none;
}

.presago-text-input::placeholder {
  color: var(--presago-color-text-subtle);
}

.presago-text-input[data-size="xs"] { min-height: 1.625rem; font-size: var(--presago-font-size-body-xs); }
.presago-text-input[data-size="sm"] { min-height: 2rem; }
.presago-text-input[data-size="md"] { min-height: 2.25rem; }
.presago-text-input[data-size="lg"] { min-height: 2.625rem; font-size: var(--presago-font-size-body-md); }
.presago-text-input[data-size="xl"] { min-height: 3rem; font-size: var(--presago-font-size-body-lg); }

.presago-text-input:disabled {
  color: var(--presago-color-text-disabled);
  cursor: not-allowed;
}

.presago-text-input__section {
  display: inline-flex;
  align-items: center;
  padding: 0 var(--presago-spacing-100);
  color: var(--presago-color-icon-subtle);
}

/* ════════════════════════════════════════════════════
 * TextArea — Mantine <Textarea>
 * ════════════════════════════════════════════════════ */
.presago-text-area {
  width: 100%;
  min-height: 5rem;
  padding: var(--presago-spacing-100) var(--presago-spacing-150);
  background-color: var(--presago-color-background-page);
  color: var(--presago-color-text-default);
  border: var(--presago-border-width-thin) solid var(--presago-color-border-input);
  border-radius: var(--presago-radius-md);
  font-family: inherit;
  font-size: var(--presago-font-size-body-sm);
  line-height: var(--presago-line-height-md);
  resize: vertical;
  transition: border-color var(--presago-motion-duration-fast) var(--presago-motion-easing-standard), box-shadow var(--presago-motion-duration-fast) var(--presago-motion-easing-standard);
}

.presago-text-area:hover {
  border-color: var(--presago-color-text-subtle);
}

.presago-text-area:focus-visible {
  outline: none;
  border-color: var(--presago-color-border-focused);
  box-shadow: 0 0 0 var(--presago-focus-ring-width) var(--presago-color-border-focused);
}

.presago-text-area[data-error="true"] {
  border-color: var(--presago-color-border-danger);
}

.presago-text-area:disabled {
  color: var(--presago-color-text-disabled);
  cursor: not-allowed;
}

.presago-text-area::placeholder {
  color: var(--presago-color-text-subtle);
}

/* ════════════════════════════════════════════════════
 * Select (native <select>) — Mantine <Select>
 * ════════════════════════════════════════════════════ */
.presago-select {
  width: 100%;
  min-height: 2.25rem;
  padding: 0 var(--presago-spacing-400) 0 var(--presago-spacing-150);
  background-color: var(--presago-color-background-page);
  color: var(--presago-color-text-default);
  border: var(--presago-border-width-thin) solid var(--presago-color-border-input);
  border-radius: var(--presago-radius-md);
  font-family: inherit;
  font-size: var(--presago-font-size-body-sm);
  line-height: 1.2;
  appearance: none;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23475569' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'/></svg>");
  background-repeat: no-repeat;
  background-position: right var(--presago-spacing-150) center;
  transition: border-color var(--presago-motion-duration-fast) var(--presago-motion-easing-standard), box-shadow var(--presago-motion-duration-fast) var(--presago-motion-easing-standard);
}

.presago-select:hover {
  border-color: var(--presago-color-text-subtle);
}

.presago-select:focus-visible {
  outline: none;
  border-color: var(--presago-color-border-focused);
  box-shadow: 0 0 0 var(--presago-focus-ring-width) var(--presago-color-border-focused);
}

.presago-select[data-error="true"] {
  border-color: var(--presago-color-border-danger);
}

.presago-select:disabled {
  color: var(--presago-color-text-disabled);
  cursor: not-allowed;
  background-color: var(--presago-color-background-ui);
}

/* ════════════════════════════════════════════════════
 * CheckBox — Mantine <Checkbox>
 * ════════════════════════════════════════════════════ */
.presago-checkbox {
  display: inline-flex;
  align-items: flex-start;
  gap: var(--presago-spacing-100);
  cursor: pointer;
  user-select: none;
}

.presago-checkbox__input {
  appearance: none;
  flex: none;
  width: 1.125rem;
  height: 1.125rem;
  margin: 0;
  background-color: var(--presago-color-background-page);
  border: var(--presago-border-width-thick) solid var(--presago-color-border-input);
  border-radius: var(--presago-radius-xs);
  cursor: inherit;
  transition: background-color var(--presago-motion-duration-fast) var(--presago-motion-easing-standard), border-color var(--presago-motion-duration-fast) var(--presago-motion-easing-standard);
}

.presago-checkbox__input:hover {
  border-color: var(--presago-color-text-subtle);
}

.presago-checkbox__input:checked,
.presago-checkbox__input:indeterminate {
  background-color: var(--presago-color-item-primary-idle);
  border-color: var(--presago-color-item-primary-idle);
  background-repeat: no-repeat;
  background-position: center;
  background-size: 80% 80%;
}

.presago-checkbox__input:checked {
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'><polyline points='20 6 9 17 4 12'/></svg>");
}

.presago-checkbox__input:indeterminate {
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3' stroke-linecap='round'><line x1='5' y1='12' x2='19' y2='12'/></svg>");
}

.presago-checkbox__input:disabled {
  background-color: var(--presago-color-item-disabled);
  border-color: var(--presago-color-border-disabled);
  cursor: not-allowed;
}

.presago-checkbox__input[data-error="true"]:not(:checked) {
  border-color: var(--presago-color-border-danger);
}

.presago-checkbox__label {
  color: var(--presago-color-text-default);
  font-size: var(--presago-font-size-body-sm);
  line-height: 1.3;
  padding-top: 1px;
}

.presago-checkbox__input:disabled + .presago-checkbox__label {
  color: var(--presago-color-text-disabled);
}

/* ════════════════════════════════════════════════════
 * RadioGroup — Mantine <Radio.Group>
 * ════════════════════════════════════════════════════ */
.presago-radio-group {
  border: 0;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--presago-spacing-100);
}

.presago-radio-group[data-orientation="horizontal"] {
  flex-direction: row;
  flex-wrap: wrap;
  gap: var(--presago-spacing-200);
}

.presago-radio-group__legend {
  padding: 0;
  margin-bottom: var(--presago-spacing-050);
  color: var(--presago-color-text-default);
  font-size: var(--presago-font-size-body-sm);
  font-weight: var(--presago-font-weight-medium);
}

.presago-radio {
  display: inline-flex;
  align-items: center;
  gap: var(--presago-spacing-100);
  cursor: pointer;
}

.presago-radio__input {
  appearance: none;
  flex: none;
  width: 1.125rem;
  height: 1.125rem;
  margin: 0;
  background-color: var(--presago-color-background-page);
  border: var(--presago-border-width-thick) solid var(--presago-color-border-input);
  border-radius: var(--presago-radius-full);
  cursor: inherit;
  transition: border-color var(--presago-motion-duration-fast) var(--presago-motion-easing-standard);
}

.presago-radio__input:hover {
  border-color: var(--presago-color-text-subtle);
}

.presago-radio__input:checked {
  border-color: var(--presago-color-item-primary-idle);
  background-color: var(--presago-color-item-primary-idle);
  background-image: radial-gradient(circle, var(--presago-color-background-page) 30%, transparent 35%);
}

.presago-radio__input:disabled {
  background-color: var(--presago-color-item-disabled);
  border-color: var(--presago-color-border-disabled);
  cursor: not-allowed;
}

.presago-radio__label {
  color: var(--presago-color-text-default);
  font-size: var(--presago-font-size-body-sm);
  line-height: 1.3;
}

/* ════════════════════════════════════════════════════
 * Toggle — Mantine <Switch>
 * ════════════════════════════════════════════════════ */
.presago-toggle {
  display: inline-flex;
  align-items: center;
  gap: var(--presago-spacing-150);
  cursor: pointer;
  user-select: none;
}

.presago-toggle__input {
  appearance: none;
  position: relative;
  flex: none;
  width: 2.25rem;
  height: 1.25rem;
  margin: 0;
  background-color: var(--presago-color-item-secondary-idle);
  border: var(--presago-border-width-thin) solid var(--presago-color-border-input);
  border-radius: var(--presago-radius-full);
  cursor: inherit;
  transition: background-color var(--presago-motion-duration-fast) var(--presago-motion-easing-standard), border-color var(--presago-motion-duration-fast) var(--presago-motion-easing-standard);
}

.presago-toggle__input::before {
  content: "";
  position: absolute;
  top: 50%;
  left: 2px;
  width: 0.875rem;
  height: 0.875rem;
  background-color: var(--presago-color-background-page);
  border-radius: var(--presago-radius-full);
  transform: translateY(-50%);
  transition: left var(--presago-motion-duration-fast) var(--presago-motion-easing-emphasized);
  box-shadow: var(--presago-shadow-xs);
}

.presago-toggle__input:checked {
  background-color: var(--presago-color-item-primary-idle);
  border-color: var(--presago-color-item-primary-idle);
}

.presago-toggle__input:checked::before {
  left: calc(100% - 1rem);
}

.presago-toggle__input:disabled {
  background-color: var(--presago-color-item-disabled);
  border-color: var(--presago-color-border-disabled);
  cursor: not-allowed;
}

.presago-toggle__label {
  color: var(--presago-color-text-default);
  font-size: var(--presago-font-size-body-sm);
}

.presago-toggle__input:disabled + .presago-toggle__label {
  color: var(--presago-color-text-disabled);
}

/* ════════════════════════════════════════════════════
 * Spinner — Mantine <Loader>
 * ════════════════════════════════════════════════════ */
.presago-spinner {
  display: inline-block;
  width: 1.5rem;
  height: 1.5rem;
  border: 2px solid var(--presago-color-item-primary-idle);
  border-right-color: transparent;
  border-radius: var(--presago-radius-full);
  animation: presago-spin var(--presago-motion-duration-spin) var(--presago-motion-easing-linear) infinite;
}

.presago-spinner[data-size="xs"] { width: 0.875rem; height: 0.875rem; border-width: 2px; }
.presago-spinner[data-size="sm"] { width: 1.125rem; height: 1.125rem; border-width: 2px; }
.presago-spinner[data-size="md"] { width: 1.5rem; height: 1.5rem; border-width: 2px; }
.presago-spinner[data-size="lg"] { width: 2rem; height: 2rem; border-width: 3px; }
.presago-spinner[data-size="xl"] { width: 2.75rem; height: 2.75rem; border-width: 3px; }

.presago-spinner[data-color="secondary"] { border-color: var(--presago-color-text-subtle); border-right-color: transparent; }
.presago-spinner[data-color="success"] { border-color: var(--presago-color-item-success-idle); border-right-color: transparent; }
.presago-spinner[data-color="warning"] { border-color: var(--presago-color-item-warning-idle); border-right-color: transparent; }
.presago-spinner[data-color="danger"] { border-color: var(--presago-color-item-danger-idle); border-right-color: transparent; }
.presago-spinner[data-color="info"] { border-color: var(--presago-color-item-info-idle); border-right-color: transparent; }

@keyframes presago-spin {
  to { transform: rotate(360deg); }
}

/* Rispetta prefers-reduced-motion: spinner statico */
@media (prefers-reduced-motion: reduce) {
  .presago-spinner {
    animation: none;
    border-right-color: currentColor;
    opacity: 0.5;
  }
}
