/*!
 * # Fomantic-UI - Header
 * https://github.com/fomantic/Fomantic-UI/
 *
 *
 * Released under the MIT license
 * https://opensource.org/licenses/MIT
 *
 */

/*******************************
            Theme
*******************************/

@type: "element";
@element: "header";

@import (multiple) "../../theme.config";

@notCenteredAligned: if(@variationHeaderAligned, e(":not(.centered):not(.aligned)"));
@notIcon: if(@variationHeaderIcon, e(":not(.icon)"));

/*******************************
            Header
*******************************/

/* Standard */
.ui.header {
    border: none;
    margin: @margin;
    padding: @verticalPadding @horizontalPadding;
    font-family: @fontFamily;
    font-weight: @fontWeight;
    line-height: @lineHeight;
    text-transform: @textTransform;
    color: @textColor;
}

.ui.header:first-child {
    margin-top: @firstMargin;
}
.ui.header:last-child {
    margin-bottom: @lastMargin;
}

& when (@variationHeaderSub) {
    /* --------------
       Sub Header
    --------------- */

    .ui.header .sub.header {
        display: block;
        font-weight: @normal;
        padding: 0;
        margin: @subHeaderMargin;
        font-size: @subHeaderFontSize;
        line-height: @subHeaderLineHeight;
        color: @subHeaderColor;
    }
}

/* --------------
      Icon
--------------- */

.ui.header > .icons,
.ui.header > i.icon {
    display: table-cell;
    opacity: @iconOpacity;
    font-size: @iconSize;
    padding-top: @iconOffset;
    vertical-align: @iconAlignment;
}

/* With Text Node */
.ui.header@{notIcon} > .icons:only-child,
.ui.header@{notIcon} > i.icon:only-child {
    display: inline-block;
    padding: 0;
    margin-right: @iconMargin;
}

/* -------------------
        Image
-------------------- */

.ui.header > .image:not(.icon),
.ui.header > img {
    display: inline-block;
    margin-top: @imageOffset;
    width: @imageWidth;
    height: @imageHeight;
    vertical-align: @imageAlignment;
}
.ui.header > .image:not(.icon):only-child,
.ui.header > img:only-child {
    margin-right: @imageMargin;
}

/* --------------
     Content
--------------- */

.ui.header .content {
    display: inline-block;
    vertical-align: @contentAlignment;
}

/* After Image */
.ui.header > img + .content,
.ui.header > .image + .content {
    padding-left: @imageMargin;
    vertical-align: @contentImageAlignment;
}

/* After Icon */
.ui.header@{notIcon}@{notCenteredAligned} > .icons + .content,
.ui.header@{notIcon}@{notCenteredAligned} > i.icon + .content {
    padding-left: @iconMargin;
    display: table-cell;
    vertical-align: @contentIconAlignment;
}

/* --------------
 Loose Coupling
--------------- */

.ui.header .ui.label {
    font-size: @labelSize;
    margin-left: @labelDistance;
    vertical-align: @labelVerticalAlign;
}

/* Positioning */
.ui.header + p {
    margin-top: @nextParagraphDistance;
}

/*******************************
            Types
*******************************/

/* --------------
     Page
--------------- */
& when not (@variationHeaderTags = false) {
    each(@variationHeaderTags, {
        @sf: @{value}SubHeaderFontSize;
        @s: @@value;
        @{value}.ui.header {
            font-size: @s;
        }
        & when (@variationHeaderSub) {
            @{value}.ui.header .sub.header {
                font-size: @@sf;
            }
        }
    });
}

/* --------------
 Content Heading
--------------- */

& when not (@variationHeaderSizes = false) {
    each(@variationHeaderSizes, {
        @sf: @{value}SubHeaderFontSize;
        @shf: @{value}SubHeadingSize;
        @s: @{value}FontSize;;
        .ui.@{value}.header {
            font-size: @@s;
            & when (@@s >= 2) {
                min-height: 1em;
            }
        }
        & when (@variationHeaderSub) {
            .ui.@{value}.header .sub.header {
                font-size: @@sf;
            }
            .ui.@{value}.sub.header {
                font-size: @@shf;
            }
        }
    });
}

& when (@variationHeaderSub) {
    /* --------------
       Sub Heading
    --------------- */

    .ui.sub.header {
        padding: 0;
        margin-bottom: @subHeadingDistance;
        font-weight: @subHeadingFontWeight;
        font-size: @subHeadingFontSize;
        text-transform: @subHeadingTextTransform;
        color: @subHeadingColor;
    }
}

& when (@variationHeaderIcon) {
    /* -------------------
            Icon
    -------------------- */

    .ui.icon.header {
        display: inline-block;
        text-align: center;
        margin: @iconHeaderTopMargin 0 @iconHeaderBottomMargin;
    }
    .ui.icon.header::after {
        content: "";
        display: block;
        height: 0;
        clear: both;
        visibility: hidden;
    }

    .ui.icon.header:first-child {
        margin-top: @iconHeaderFirstMargin;
    }
    .ui.icon.header > .image.icon,
    .ui.icon.header > .icons,
    .ui.icon.header > i.icon {
        float: none;
        display: block;
        width: auto;
        height: auto;
        line-height: 1;
        padding: 0;
        font-size: @iconHeaderSize;
        margin: 0 auto @iconHeaderMargin;
        opacity: @iconHeaderOpacity;
    }
    .ui.icon.header .corner.icon {
        font-size: @cornerIconHeaderSize;
    }
    .ui.icon.header .content {
        display: block;
        padding: 0;
    }
    .ui.icon.header > i.circular {
        font-size: @circularHeaderIconSize;
    }
    .ui.icon.header > i.square {
        font-size: @squareHeaderIconSize;
    }
    & when (@variationHeaderBlock) {
        .ui.block.icon.header > .image.icon,
        .ui.block.icon.header > .icons,
        .ui.block.icon.header > i.icon {
            margin-bottom: 0;
        }
    }
    & when (@variationHeaderAligned) {
        .ui.icon.header.aligned {
            margin-left: auto;
            margin-right: auto;
            display: block;
        }
    }
}

/*******************************
            States
*******************************/
& when (@variationHeaderDisabled) {
    .ui.disabled.header {
        opacity: @disabledOpacity;
    }
}

/*******************************
           Variations
*******************************/

& when (@variationHeaderInverted) {
    /* -------------------
          Inverted
    -------------------- */

    .ui.inverted.header {
        color: @invertedColor;
    }
    .ui.inverted.header .sub.header {
        color: @invertedSubHeaderColor;
    }
    & when (@variationHeaderAttached) {
        .ui.inverted.attached.header {
            background: @invertedAttachedBackground;
            box-shadow: none;
            border-color: transparent;
        }
    }
    & when (@variationHeaderBlock) {
        .ui.inverted.block.header {
            background: @invertedBlockBackground;
            box-shadow: none;
            border-bottom: none;
        }
    }
}

/* -------------------
       Colors
-------------------- */
& when not (@variationHeaderColors = false) {
    each(@variationHeaderColors, {
        @color: @value;
        @c: @colors[@@color][color];
        @l: @colors[@@color][light];
        @h: @colors[@@color][hover];
        @lh: @colors[@@color][lightHover];

        .ui.@{color}.header {
            color: @c;
        }
        a.ui.@{color}.header:hover {
            color: @h;
        }
        & when (@variationHeaderDividing) {
            .ui.@{color}.dividing.header {
                border-bottom: @dividedColoredBorderWidth solid @c;
            }
        }
        & when (@variationHeaderInverted) {
            .ui.inverted.@{color}.header.header.header {
                color: @l;
            }
            a.ui.inverted.@{color}.header.header.header:hover {
                color: @lh;
            }
            .ui.inverted.@{color}.dividing.header {
                border-bottom: @dividedColoredBorderWidth solid @l;
            }
        }
    });
}

& when (@variationHeaderAligned) {
    /* -------------------
           Aligned
    -------------------- */

    .ui.left.aligned.header {
        text-align: left;
    }
    .ui.right.aligned.header {
        text-align: right;
    }
    .ui.centered.header,
    .ui.center.aligned.header {
        text-align: center;
    }
}

& when (@variationHeaderJustified) {
    .ui.justified.header {
        text-align: justify;
    }
    .ui.justified.header::after {
        display: inline-block;
        content: "";
        width: 100%;
    }
}

& when (@variationHeaderFloated) {
    /* -------------------
           Floated
    -------------------- */

    .ui.floated.header,
    .ui[class*="left floated"].header {
        float: left;
        margin-top: 0;
        margin-right: @floatedMargin;
    }
    .ui[class*="right floated"].header {
        float: right;
        margin-top: 0;
        margin-left: @floatedMargin;
    }
}

& when (@variationHeaderFitted) {
    /* -------------------
           Fitted
    -------------------- */

    .ui.fitted.header {
        padding: 0;
    }
}

& when (@variationHeaderDividing) {
    /* -------------------
          Dividing
    -------------------- */

    .ui.dividing.header {
        padding-bottom: @dividedBorderPadding;
        border-bottom: @dividedBorder;
    }
    & when (@variationHeaderSub) {
        .ui.dividing.header .sub.header {
            padding-bottom: @dividedSubHeaderPadding;
        }
    }
    .ui.dividing.header i.icon {
        margin-bottom: @dividedIconPadding;
    }
    & when (@variationHeaderInverted) {
        .ui.inverted.dividing.header {
            border-bottom-color: @invertedDividedBorderColor;
        }
    }
}

& when (@variationHeaderBlock) {
    /* -------------------
            Block
    -------------------- */

    .ui.block.header {
        background: @blockBackground;
        padding: @blockVerticalPadding @blockHorizontalPadding;
        box-shadow: @blockBoxShadow;
        border: @blockBorder;
        border-radius: @blockBorderRadius;
    }
    .ui.block.header:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6) {
        font-size: @mediumBlock;
    }
    & when not (@variationHeaderSizes = false) {
        each(@variationHeaderSizes, {
            @s: @{value}Block;
            .ui.@{value}.block.header {
                font-size: @@s;
            }
        });
    }
}

& when (@variationHeaderAttached) {
    /* -------------------
           Attached
    -------------------- */

    .ui.attached.header {
        background: @attachedBackground;
        padding: @attachedVerticalPadding @attachedHorizontalPadding;
        margin: 0 @attachedOffset;
        box-shadow: @attachedBoxShadow;
        border: @attachedBorder;
        border-radius: 0;
    }
    & when (@variationHeaderBlock) {
        .ui.attached.block.header {
            background: @blockBackground;
        }
    }
    .ui.attached:not(.top).header {
        border-top: none;
    }
    .ui.top.attached.header {
        border-radius: @attachedBorderRadius @attachedBorderRadius 0 0;
    }
    .ui.bottom.attached.header {
        border-radius: 0 0 @attachedBorderRadius @attachedBorderRadius;
    }
    & when (@variationHeaderSeamless) {
        .ui.seamless.attached:not(.bottom).header {
            border-bottom: none;
        }
    }

    /* Attached Sizes */
    .ui.attached.header:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6) {
        font-size: @mediumAttachedSize;
    }
    & when not (@variationHeaderSizes = false) {
        each(@variationHeaderSizes, {
            @s: @{value}AttachedSize;
            .ui.@{value}.attached.header {
                font-size: @@s;
            }
        });
    }
}

/* -------------------
        Sizing
-------------------- */

.ui.header:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6) {
    font-size: @mediumFontSize;
}

// stylelint-disable no-invalid-position-at-import-rule
@import (multiple, optional) "../../overrides.less";
