// The only class we need for icons is .icon
// Standardize the size, padding and alignment for all icons in Moodle.
.icon {
    width: 16px;
    height: 16px;
    vertical-align: middle;
    margin: 0;
    padding: 0;
    box-sizing: content-box;
    margin-right: 0.5rem;
}

a:first-of-type > .icon,
span:first-of-type > .icon {
    margin-left: 0.5rem;
}

// Fix the first icon for an action menu. This rule exists to reverse the
// icon margin defined in the a:first-of-type > .icon rule.
.action-menu .dropdown a:first-of-type > .icon {
    margin-left: 0;
}

.pull-xs-right {
    // Now we need to override the .action-menu .dropdown a:first-of-type > .icon
    // rule above for when actions menus are in the pull-xs-right class.
    .action-menu .dropdown a:first-of-type > .icon {
        margin-left: 0.5rem;
    }

    .icon {
        margin-right: 0;
        margin-left: 0.5rem;
    }
}

// Fix the space between the dropdown icon and the caret.
.action-menu {
    .dropdown-toggle {
        .icon {
            // Use a negative margin on the icon to ensure that the dropdown toggle
            // is an icon and not just text in which case the margin is needed.
            margin-right: -$caret-width;
        }
    }
}

// YUI 2 Tree View icons must not have a margin left.
.ygtvcell .icon {
    margin-left: 0 !important; /* stylelint-disable-line declaration-no-important */
}

// In the navigation, tree icons should not have margins.
.block_navigation,
.block_settings {
    .tree_item .icon {
        margin-left: 0;
    }
}

[data-action=toggle-drawer] .icon {
    margin: 0;
}

// Apply in special cases where the default icons styles does not work properly. Eg file picker buttons.
.icon-no-spacing a > .icon {
    margin: 0;
}
