.ui-icon-sprite {
  position: absolute;
  width: 0;
  height: 0;
  overflow: hidden;
  pointer-events: none;
}

.ui-icon {
  display: inline-block;
  flex: 0 0 auto;
  width: 1em;
  height: 1em;
  overflow: visible;
  stroke: currentColor;
  fill: none;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
  vertical-align: -0.125em;
}

.ui-icon--xs { font-size: 0.75rem; }
.ui-icon--sm { font-size: 0.875rem; }
.ui-icon--md { font-size: 1rem; }
.ui-icon--lg { font-size: 1.25rem; }
.ui-icon--xl { font-size: 1.5rem; }

/* Balanced is the stable server-rendered default. The pre-paint preference
   loader establishes the explicit root mode before stylesheets are parsed. */
.ui-icon--tier-expressive {
  display: none;
}

html[data-icon-presentation="minimal"] .ui-icon--tier-balanced {
  display: none;
}

html[data-icon-presentation="expressive"] .ui-icon--tier-expressive {
  display: inline-block;
}

.icon-label {
  display: inline-flex;
  align-items: center;
  gap: 0.375rem;
  min-width: 0;
}

.icon-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.375rem;
}

.button.secondary.icon-button > .ui-icon,
button.secondary.icon-button > .ui-icon {
  color: var(--brand);
}

.button.icon-button:not(.secondary) > .ui-icon,
button.icon-button:not(.secondary) > .ui-icon,
.button.danger.icon-button > .ui-icon,
button.danger.icon-button > .ui-icon {
  color: currentColor;
}

.message.success .ui-icon,
.status-success .ui-icon {
  color: var(--good);
}

.message.error .ui-icon,
.status-danger .ui-icon,
.button.danger .ui-icon,
button.danger .ui-icon {
  color: currentColor;
}

.attention-warning .ui-icon,
.status-warning .ui-icon {
  color: var(--warning);
}

.icon-tile {
  display: inline-grid;
  place-items: center;
  width: 2rem;
  height: 2rem;
  border-radius: var(--radius-sm);
  color: var(--accent-strong);
  background: var(--accent-soft);
}

@media (forced-colors: active) {
  .ui-icon {
    color: ButtonText;
    stroke: currentColor;
  }

  .icon-tile {
    background: Canvas;
    border: 1px solid ButtonText;
  }
}
