@include exports("spreadsheet/layout") {

    // Spreadsheet
    .k-spreadsheet {
        @include use-background-clip();
        width: 800px;
        height: 600px;
        border-width: $spreadsheet-border-width;
        border-style: solid;
        box-sizing: border-box;
        outline: 0;
        font-family: $spreadsheet-font-family;
        font-size: $spreadsheet-font-size;
        line-height: $spreadsheet-line-height;
        display: flex;
        flex-direction: column;
        cursor: default;
        position: relative;
        -webkit-touch-callout: none;
        -webkit-tap-highlight-color: $rgba-transparent;

        .k-vertical-align-center {
            position: relative;
            top: 50%;
            transform: translateY(-50%);
        }
        .k-vertical-align-bottom {
            position: relative;
            top: 100%;
            transform: translateY( -100% );
        }

    }


    // Header
    .k-spreadsheet .k-tabstrip-wrapper {
        border-width: 0 0 1px;
        border-style: solid;
        border-color: inherit;
        position: relative;
    }


    // Quick access toolbar
    .k-spreadsheet-quick-access-toolbar {
        padding: $toolbar-padding-y;
        display: inline-flex;
        flex-direction: row;
        position: absolute;
        z-index: 1;
        top: 0;
        left: 0;

        .k-button {}
        .k-button:not(:hover) {
            border-color: transparent;
            color: inherit;
            background-color: transparent;
            background-image: none;
        }
    }


    // Tabstrip
    .k-spreadsheet-tabstrip {
        padding-top: $toolbar-padding-y;
    }
    .k-spreadsheet-tabstrip .k-loading {
        display: none;
    }
    .k-spreadsheet-tabstrip .k-content {
        @include border-radius(0);
        padding: 0;
        border-width: 0;
        overflow: hidden;
    }


    // Toolbar
    .k-spreadsheet-toolbar {
        border-width: 0;


        // Tools
        [data-tool="backgroundColor"],
        [data-tool="textColor"],
        [data-tool="borders"],
        [data-tool="alignment"],
        [data-tool="merge"],
        [data-tool="freeze"] {
            width: auto;
            min-width: $form-line-height * 1em;
        }
        [data-tool="fontSize"] {
            width: 5 * $spacer;
        }
        [data-tool="fontFamily"] {
            width: 6 * $spacer;
        }
        [data-tool="format"] {
            width: 4 * $spacer;
        }
    }


    // Action bar
    .k-spreadsheet-action-bar {
        border-width: 0 0 1px;
        border-style: solid;
        border-color: inherit;
        font-size: 12px;
        font-family: Arial, Verdana, sans-serif;
        position: relative;
        display: flex;
        flex-direction: row;
    }
    .k-spreadsheet-name-editor {
        width: 10em;
        border-width: 0 1px 0 0;
        border-style: solid;
        border-color: inherit;

        .k-combobox {
            width: 100%;
            font-size: inherit;
        }
        .k-combobox .k-dropdown-wrap {
            @include border-radius( 0 );
            border-width: 0;
        }
        .k-combobox .k-select {
            @include border-radius( 0 );
        }
    }
    .k-spreadsheet-formula-bar {
        border-color: inherit;
        display: flex;
        flex-direction: row;
        align-items: center;
        flex: 1;

        &::before {
            @extend .k-i-formula-fx;
            font-size: $icon-size;
            font-family: "WebComponentsIcons";
            font-style: normal;
            font-variant: normal;
            font-weight: normal;
            line-height: 1;

            padding: 0 $padding-y;
            border-width: 0 1px 0 0;
            border-style: solid;
            border-color: inherit;
        }

        .k-tooltip,
        .k-group-header,
        .k-list-scroller {
            display: none;
        }

        .k-spreadsheet-formula-input {
            padding: $input-padding-y $input-padding-x;
            line-height: $input-line-height;

            &.k-spreadsheet-array-formula {
                &::before {
                    content: "{";
                    font-weight: 700;
                }
                &::after {
                    content: "}";
                    font-weight: 700;
                }
            }
        }
    }
    .k-spreadsheet-formula-input {
        outline: 0;
        white-space: pre;
        flex: 1;
        box-sizing: border-box;

        > .k-syntax-func.k-syntax-at-point,
        > .k-syntax-bool.k-syntax-at-point,
        > .k-syntax-ref.k-syntax-at-point,
        > .k-syntax-str.k-syntax-at-point,
        > .k-syntax-num.k-syntax-at-point {
            text-decoration: underline;
        }

        > .k-series-a,
        > .k-series-b,
        > .k-series-c,
        > .k-series-d {
            background-color: transparent;
        }
    }
    .k-spreadsheet-formula-list {
        min-width: 100px;

        .k-item {
            padding: $list-item-padding-y $list-item-padding-x;
        }
    }
    .k-syntax-func,
    .k-syntax-startexp {
        font-weight: bold;
    }


    // Cell editor
    .k-spreadsheet-cell-editor {
        padding: 0 3px;
        line-height: 20px;
        display: none;
        overflow: hidden;
        position: absolute;
        z-index: 2000;
    }


    // Sheets bar
    .k-spreadsheet-sheets-bar {
        padding: 0 $padding-y $padding-y;
        border-width: 1px 0 0;
        border-style: solid;
        border-color: inherit;
        display: flex;
        flex-direction: row;
        align-items: center;
        position: relative;
    }
    .k-spreadsheet-sheets-bar-add {
        margin-right: $padding-y;

        &:not(:hover) {
            border-color: transparent;
            color: inherit;
            background: none;
        }
    }
    .k-spreadsheet-sheets-items {
        margin-top: -1px;
        flex: 1;
        overflow: hidden;

        // sass-lint:disable no-important
        .k-tabstrip-items {
            margin: 0 $button-calc-size !important;
            border-width: 0;
        }
        .k-tabstrip-prev {
            left: 0 !important;
        }
        .k-tabstrip-next {
            right: 0 !important;
        }
        // sass-lint:enable no-important

        .k-item  {
            .k-link {
                display: inline-block;
            }

            .k-spreadsheet-sheets-remove {
                margin-right: $spacer / 2;
                margin-left: -$spacer / 2;
                padding: 0;
                line-height: 1;
                display: inline-flex;
                flex-direction: row;
                vertical-align: middle;
            }
        }
    }


    // Spreadsheet view
    // sass-lint:disable no-important
    .k-spreadsheet-view {
        height: auto !important;
        border-color: inherit;
        font-size: 12px;
        font-family: Arial, Verdana, Sans-serif;
        flex: 1;
        position: relative;

        // disabled cells in the Spreadsheet should allow navigation if link is used
        .k-state-disabled {
            pointer-events: auto;
        }
    }
    // sass-lint:enable no-important
    .k-spreadsheet-fixed-container {
        width: 100%;
        height: 100%;
        border-color: inherit;
        box-sizing: border-box;
        -webkit-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
        user-select: none;
        position: absolute;
        z-index: 2;
    }
    .k-spreadsheet-overflow {
        position: absolute;
        top: 0;
        bottom: 0;
        left: 0;
        right: 0;
        overflow: hidden;
        border-color: inherit;
    }
    .k-spreadsheet-pane {
        padding: 0 1px 0 0;
        border-width: 2px 0 0 2px;
        border-style: solid;
        border-color: inherit;
        box-sizing: border-box;
        position: absolute;
        overflow: hidden;

        @each $side in (top, left) {
            &.k-#{$side} { border-#{$side}-width: 0; }
        }

    }
    .k-spreadsheet-top-corner {
        border-width: 0 1px 1px 0;
        border-style: solid;
        box-sizing: border-box;
        position: absolute;
        top: 0;
        left: 0;
        z-index: 10000;

        &::after {
            content: "";
            display: block;
            width: 0;
            height: 0;
            overflow: hidden;
            position: absolute;
            bottom: 0;
            right: 0;
            border: 6px solid transparent;
            border-right-color: inherit;
            border-bottom-color: inherit;
        }
    }
    .k-spreadsheet-scroller {
        width: 100%;
        height: 100%;
        overflow: scroll;
        -webkit-overflow-scrolling: touch;
        position: absolute;
        z-index: 1;
    }


    // Grid lines
    .k-spreadsheet-haxis,
    .k-spreadsheet-vaxis {
        border: 0 solid;
        border-color: inherit;
        position: absolute;
    }
    .k-spreadsheet-haxis {
        border-width: 1px 0 0;
        left: 0;
    }
    .k-spreadsheet-vaxis {
        border-width: 0 0 0 1px;
        top: 0;
    }


    // Row / Column headers
    .k-spreadsheet-row-header,
    .k-spreadsheet-column-header {
        text-align: center;
        z-index: 100;

        > div {
            position: relative;
            box-sizing: border-box;
            border-width: 0;
            border-style: solid;
            border-color: inherit;

            &::after {
                content: "";
                border-width: 0;
                border-style: solid;
                border-color: inherit;
                display: none;
                position: absolute;
                top: 0;
                right: 0;
                bottom: 0;
                left: 0;
            }
        }
    }
    .k-spreadsheet-row-header {
        position: relative;
    }
    .k-spreadsheet-column-header {
        position: absolute;
    }
    .k-spreadsheet-row-header > div {
        border-top-width: 1px;

        &:first-child { border-top-width: 0; }
    }
    .k-spreadsheet-row-header > .k-selection-partial,
    .k-spreadsheet-row-header > .k-selection-full {
        &::after {
            border-right-width: 2px;
            display: block;
        }
    }
    .k-spreadsheet-column-header > div {
        border-left-width: 1px;

        &:first-child { border-left-width: 0; }
    }
    .k-spreadsheet-column-header > .k-selection-partial,
    .k-spreadsheet-column-header > .k-selection-full {
        &::after {
            border-bottom-width: 2px;
            display: block;
        }
    }


    // Spreadsheet data
    .k-spreadsheet-data {
        border-color: inherit;
        cursor: cell;
        position: relative;
    }


    // Cells
    .k-spreadsheet-cell {
        padding: 1px;
        box-sizing: border-box;
        position: absolute;
        line-height: normal;
        background-clip: padding-box;
        white-space: pre;
        overflow: hidden;
    }
    .k-spreadsheet-merged-cells-wrapers {
        position: relative;
    }


    // Selection
    .k-spreadsheet .k-selection-wrapper {
        position: relative;
        cursor: cell;
    }
    .k-spreadsheet .k-spreadsheet-selection {
        border-width: 1px;
        border-style: solid;
        box-sizing: border-box;
        position: absolute;
    }
    .k-spreadsheet .k-spreadsheet-selection-highlight {
        border-width: 1px;
        border-style: solid;
        box-sizing: border-box;
        position: absolute;
    }
    .k-spreadsheet .k-selection-wrapper .k-spreadsheet-editor-button {
        position: absolute;
        padding: 0;
        z-index: 60;
    }

    .k-spreadsheet-active-cell {
        // sass-lint:disable-block no-important
        // always show exact active cell border, regardless of inline cell styles
        outline-color: transparent !important;
        z-index: 10;
    }

    .k-spreadsheet .k-auto-fill-wrapper {
        position: relative;
    }
    .k-spreadsheet .k-auto-fill,
    .k-spreadsheet .k-auto-fill-punch,
    .k-spreadsheet .k-auto-fill-br-hint {
        box-sizing: border-box;
        position: absolute;
    }
    .k-spreadsheet .k-auto-fill {
        border-width: 1px;
        border-style: solid;
        cursor: crosshair;
    }

    .k-spreadsheet .k-single-selection {}
    .k-spreadsheet .k-single-selection::after {
        content: "";
        margin-bottom: -4px;
        margin-right: -4px;
        width: 6px;
        height: 6px;
        border-width: 1px;
        border-style: solid;
        border-radius: 50%;
        display: block;
        position: absolute;
        bottom: 0;
        right: 0;
        z-index: 100;
        cursor: crosshair;
    }

    .k-spreadsheet .k-selection-full,
    .k-spreadsheet .k-selection-partial {
        &::after {
            display: none;
        }
    }


    // Autofill
    .k-spreadsheet .k-autofill-wrapper {
        position: relative;
        cursor: cell;
    }


    // Border rendering
    .k-spreadsheet-vborder {
        position: absolute;
        border-left-style: solid;
        border-left-width: 1px;
    }

    .k-spreadsheet-hborder {
        position: absolute;
        border-top-style: solid;
        border-top-width: 1px;
    }


    // Comments
    .k-spreadsheet-has-comment::after {
        content: "";
        display: block;
        position: absolute;
        top: 0;
        right: 0;
        left: auto;
        border-width: 3px;
        border-style: solid;
    }

    // Validation
    .k-dirty {
        left: 0;
        right: auto;
    }
}



@include exports( "spreadsheet/filter/layout" ) {

    $filter-menu-padding-left: calc( #{$icon-size} + #{2 * $padding-y} );

    // Filter button
    .k-spreadsheet .k-filter-wrapper {
        position: relative;
        z-index: 50;
    }
    .k-spreadsheet .k-filter-range {
        border-width: 1px;
        border-style: solid;
        position: absolute;
        box-sizing: border-box;
    }
    .k-spreadsheet-filter {
        @include border-radius();
        line-height: 1;
        position: absolute;
        cursor: pointer;

        .k-icon { vertical-align: middle; }
    }


    // Filter menu
    .k-spreadsheet-filter-menu {
        width: 280px;

        .k-animation-container {
            position: relative;
        }

        > .k-menu,
        > .k-menu.k-menu-vertical {
            border-width: 0;

            .k-item {
                color: inherit;
            }
            .k-link {
                padding-left: $filter-menu-padding-left;
            }
            .k-icon {
                margin-left: calc(-1 * ( #{$icon-size} + #{$padding-y} ) );
                margin-right: $padding-y;
            }

        }

        .k-spreadsheet-value-treeview-wrapper {
            height: 200px;
            border-width: 1px;
            border-style: solid;
            overflow-y: scroll;
            overflow-x: auto;

            .k-treeview {
                padding: $padding-y;
                overflow: visible;
            }
        }

        // Details
        .k-details {
            padding: 0;
            border-width: 1px 0 0;
            border-style: solid;
            border-color: inherit;
        }
        .k-details-summary {
            padding: $padding-y;
            cursor: pointer;

            > .k-icon {
                margin-right: $padding-y;
            }
        }
        .k-details-content {
            padding: $padding-y $padding-x $padding-y $filter-menu-padding-left;

            > .k-textbox,
            > .k-widget {
                width: 100%;
                margin-bottom: 3px;
            }

            .k-space-right {
                background-image: none;
            }

            .k-filter-and {
                width: 75px;
                margin: 8px 0;
            }
        }

    }

}




@include exports( "spreadsheet/tools/layout" ) {

    .k-spreadsheet-popup {
        padding: 0;

        .k-separator {
            display: block;
        }

        .k-button {
            @include border-radius( 0 );
            border-width: 0;
            color: inherit;
            background: none;
        }
        .k-button-icontext {
            display: flex;
            justify-content: flex-start;
        }

        .k-reset-color,
        .k-custom-color {
            @include border-radius( 0 );
            width: 100%;
            border-width: 0;
            box-sizing: border-box;
            display: flex;
        }
        .k-reset-color { border-bottom-width: 1px; }
        .k-custom-color { border-top-width: 1px; }
        .k-spreadsheet-color-palette {
            padding: $popup-padding-y;
        }
        .k-spreadsheet-border-type-palette {
            width: 12.5rem;
            height: 5rem;
            display: flex;
            flex-flow: row wrap;
            align-content: space-around;
            justify-content: space-around;
        }

    }

    .k-spreadsheet-format-popup {
        .k-item { justify-content: space-between; }
        .k-spreadsheet-sample { order: 1; }
    }
    .k-spreadsheet-sample {
        opacity: .7;
    }
}




@include exports( "spreadsheet/clipboard/layout" ) {

    .k-spreadsheet-clipboard,
    .k-spreadsheet-clipboard-paste {
        margin: 0;
        padding: 0;
        width: 1px;
        height: 1px;
        border: 0;
        opacity: 0;
        position: absolute;
        top: 0;
        left: 0;
        overflow: hidden;
    }

}




@include exports( "spreadsheet/window/layout" ) {

    .k-spreadsheet-window {}
    .k-spreadsheet-window .k-edit-form-container {
        width: auto;
        min-width: 0;
    }


    // Format preview window
    .k-spreadsheet-format-cells {

        .k-spreadsheet-preview {
            margin-top: ($spacer / 2);
            text-align: center;
        }

        .k-list-scroller {
            margin-top: ($spacer / 2);
            height: 210px;
            border-width: 1px;
            border-style: solid;
            border-color: inherit;
        }
    }


    // Export dialog
    .k-export-config {
        clear: both;
        position: relative;

        &::after {
            content: "";
            clear: both;
            display: block;
        }


        .k-edit-field {
            margin-left: 5%;
            width: 45%;
            float: left;
        }

        .k-page-orientation {
            position: absolute;
            right: 0;
            top: ($spacer-y / 2);

            .k-icon {
                font-size: 6em;
            }
        }
    }


    // Insert comment dialog
    .k-spreadsheet-insert-comment textarea {
        height: auto;
    }

    // Insert image dialog
    .k-spreadsheet-insert-image-dialog {
        @include border-radius( $spreadsheet-insert-image-dialog-preview-border-radius );
        border-style: $spreadsheet-insert-image-dialog-border-style;
        border-width: $spreadsheet-insert-image-dialog-border-width;

        label {
            display: flex;
            justify-content: center;
            min-width: 100%;
            width: $spreadsheet-insert-image-dialog-preview-width;
            height: $spreadsheet-insert-image-dialog-preview-height;
            background-image: url(map-get($data-uris, $spreadsheet-insert-image-dialog-preview-img));
            background-size: auto 70%;
            background-position: 50% 30%;
            background-repeat: no-repeat;

            div {
                display: flex;
                align-self: flex-end;
                margin-bottom: $spreadsheet-insert-image-dialog-text-margin-bottom;
                pointer-events: none;
            }

            input {
                display: none;
            }
        }

        .k-spreadsheet-has-image {
            background-size: auto 90%;
            background-position: 50% 50%;

            &:hover div,
            &.k-state-hovered div {
                margin: 0;
                align-self: center;
                opacity: 1;
            }

            div {
                opacity: 0;
            }
        }
    }

}




@include exports("spreadsheet/layout/images") {

    .k-spreadsheet-drawing {
        position: absolute;
        box-sizing: border-box;
        z-index: 101;

        &.k-spreadsheet-active-drawing {
            outline-style: $spreadsheet-drawing-outline-style;
            outline-width:  $spreadsheet-drawing-outline-width;
        }

        .k-spreadsheet-drawing-image {
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background-position: 50% 50%;
            background-size: 100% 100%;
            background-repeat: no-repeat;
            cursor: move;
        }

        .k-spreadsheet-drawing-handle {
            width: $spreadsheet-drawing-handle-width;
            height: $spreadsheet-drawing-handle-height;
            border-style: $spreadsheet-drawing-handle-border-style;
            border-width: $spreadsheet-drawing-handle-border-width;
            border-radius: $spreadsheet-drawing-handle-border-radius;
            position: absolute;
            transform: translate(-50%, -50%);

            // sass-lint:disable class-name-format, one-declaration-per-line
            &.N { left: 50%; top: 0; cursor: ns-resize; }
            &.NE { left: 100%; top: 0; cursor: nesw-resize; }
            &.E { left: 100%; top: 50%; cursor: ew-resize; }
            &.SE { left: 100%; top: 100%; cursor: nwse-resize; }
            &.S { left: 50%; top: 100%; cursor: ns-resize; }
            &.SW { left: 0; top: 100%; cursor: nesw-resize; }
            &.W { left: 0; top: 50%; cursor: ew-resize; }
            &.NW { left: 0; top: 0; cursor: nwse-resize; }
            // sass-lint:enable class-name-format, one-declaration-per-line
        }

        .k-spreadsheet-insert-image-dialog {
            .k-spreadsheet-has-image {
                &:hover,
                &.k-state-hovered {
                    border-radius: $spreadsheet-insert-image-dialog-preview-overlay-border-radius;
                }
            }
        }
    }

}




@include exports("spreadsheet/layout/rtl") {
    .k-rtl .k-spreadsheet,
    .k-spreadsheet[dir="rtl"] {

        .k-dirty {
            right: 0;
            left: auto;
        }

        .k-spreadsheet-has-comment::after {
            left: 0;
            right: auto;
        }

    }

}
