/**
 * Roundcube Webmail styles for the Elastic skin
 *
 * Copyright (c) The Roundcube Dev Team
 *
 * The contents are subject to the Creative Commons Attribution-ShareAlike
 * License. It is allowed to copy, distribute, transmit and to adapt the work
 * by keeping credits to the original authors in the README.md file.
 * See http://creativecommons.org/licenses/by-sa/3.0/ for details.
 */


/*** Text Editor widget (and TinyMCE editor) ***/

// use of div.tox instead of just .tox is to have prio over TinyMCE styles
div.tox {
    font-size: 1rem;

    &, :not(.svg) {
        .font-family();
    }

    &.tox-tinymce {
        border-radius: .25rem;
        border: 1px solid @color-input-border;
    }

    &.focused {
        border-color: @color-input-border-focus !important;
        box-shadow: 0 0 0 .2rem @color-input-border-focus-shadow !important;
    }

    .tox-toolbar-overlord {
        z-index: 1; // for sticky header feature

        & > div {
            // The svg is copied from TinyMCE with modified height params
            background: url("data:image/svg+xml;charset=utf8,%3Csvg height='33px' viewBox='0 0 40 33px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='32px' width='100' height='1' fill='%23cccccc'/%3E%3C/svg%3E");
            background-color: @color-input-addon-background;
        }
    }

    .tox-toolbar__primary {
        border-top: 0;
    }

    // This one is for mobile
    .tox-toolbar {
        background-color: @color-input-addon-background;
    }

    .tox-edit-area {
        border: 0;
    }

    .tox-dialog {
        border-radius: 0;
        border-color: @color-layout-border;
        box-shadow: none;
        align-self: unset !important;

        .tox-form__group {
            margin-top: 0;
            margin-bottom: .75rem;
        }

        .tox-dialog__body-nav-item--active {
            color: @color-link;
            border-color: transparent;

            &:hover {
                color: @color-link-hover;
            }
        }
    }

    .tox-dialog__body-content {
        overflow: unset;
    }

    .tox-dialog__content-js {
        overflow: auto;
    }

    .tox-dialog-wrap__backdrop {
        background-color: @color-dialog-overlay-background;
    }

    .tox-dialog__header {
        height: (@layout-header-height - 1px);
        border-bottom: 1px solid @color-dialog-header-border;
        justify-content: flex-end; // fixes close button position when dialog has no title
        padding: 0;

        .tox-button {
            color: @color-dialog-header;
            right: 0;
            height: (@layout-header-height - .7rem);
            width: 2.25em;
            margin-right: .4rem;

            &:hover {
                background: transparent;
                border-color: transparent;
            }

            .tox-icon {
                display: none;
            }

            &:before {
                &:extend(.font-icon-class);
                content: @fa-var-times;
                line-height: 1.5rem;
                margin: 0 !important;
            }
        }
    }

    .tox-dialog__footer {
        height: (@layout-footer-height - 1px) !important;
        border: 0;
        margin: 0;
        padding: 0 1rem;

        @media screen and (max-width: @screen-width-xs) {
            border-top: 1px solid @color-dialog-header-border;
        }

        & > div {
            white-space: nowrap;
            max-height: (@layout-footer-height - 1px);

            button:first-child {
                margin: 0;
            }
        }

        .tox-button {
            .btn-primary();
            font-weight: normal;
            padding: .5rem .75rem;

            &:before {
                &:extend(.font-icon-class);
                width: 1em;
                content: @fa-var-check;
                line-height: 1;
            }

            // this is redundant, but required because of tinymce styles interference
            &:focus:not(:disabled) {
                background: @color-btn-primary-background;
                border-color: @color-btn-primary-background;
            }

            &.tox-button--secondary {
                .btn-secondary();
                color: @color-btn-secondary;

                &:before {
                    content: @fa-var-times;
                }

                // this is redundant, but required because of tinymce styles interference
                &:focus:not(:disabled) {
                    background: @color-btn-secondary-background;
                    border-color: @color-btn-secondary-background;
                }
            }
        }
    }

    .tox-search-dialog {
        .tox-form__group:not(:first-child) {
            flex: initial !important;
        }

        .tox-dialog__footer-start {
            button {
                padding: .25rem;
            }
        }

        .tox-dialog__footer-end {
            button {
                &:before {
                    content: @fa-var-pencil-alt !important;
                }

                &:nth-of-type(1):before {
                    content: @fa-var-search !important;
                }
            }
        }
    }

    .tox-dialog__title {
        line-height: calc(@layout-header-height - 1px);
        font-size: 1.25rem;
        font-weight: bold;
        padding: 0 0 0 1rem;
        width: 100%;
        color: @color-dialog-header;
    }

    // Make toolbar buttons smaller
    .tox-tbtn {
        height: 28px;

        &:not(.tox-tbtn--select,.tox-split-button__chevron) {
            width: 32px;
        }
    }

    .tox-button {
        line-height: 1.5;
    }

    .tox-label {
        color: @color-font;
        padding-bottom: .25rem;
    }

    // Adding .form-control does not work with TinyMCE skins,
    // so we have to overwrite some props here
    .tox-color-input > input,
    .tox-listboxfield .tox-listbox--select,
    .tox-textarea,
    .tox-textfield {
        .font-family() !important;
        font-size: @page-font-size;
        line-height: 1.5;
        color: @color-font;
        border-radius: .25rem;
        min-height: 0;
        padding: .375rem .75rem;

        &:focus {
            border-color: @color-input-border-focus;
            box-shadow: 0 0 0 .2rem @color-input-border-focus-shadow;
        }
    }

    .tox-listbox__select-label {
        margin: 0;
    }

    .tox-color-input span {
        top: 5px;
    }

    .custom-switch {
        position: relative;
        font-size: 1rem;
        margin-top: .15rem;

        .tox-checkbox__icons {
            display: none;
        }

        .tox-checkbox__label {
            margin: 0;
        }
    }

    .image-selector {
        font-size: 1rem;
        button {
            .btn-secondary();
            padding: .5rem .75rem;
            line-height: 1.5;
        }
    }

    // small fix for image dialog
    .tox-form__controls-h-stack div:not(:last-child) {
        flex: 1;
    }

    .tox-collection__item-label {
        white-space: nowrap; // fix TinyMCE bug
    }
}

@media screen and (max-width: @screen-width-xs) {
    div.tox {
        .tox-dialog {
            margin: 0 !important;
            width: 100% !important;
            height: 100%;
            left: 0 !important;
            top: 0 !important;
            border-width: 0 !important;
        }

        .tox-dialog__header {
            background-color: @color-layout-mobile-header-background;

            .tox-button {
                display: none;
            }
        }

        .tox-dialog__title {
            font-size: 1rem;
            text-align: center;
            padding: 0 1rem;
        }

        .tox-dialog__footer {
            background-color: @color-layout-mobile-footer-background;

            .tox-button {
                color: @color-font !important;
                background: transparent !important;
                padding: .45rem;
                margin: 0 !important;
                border: 0;
                font-size: 90%;

                &:before {
                    display: block;
                    float: none;
                    width: 100%;
                    margin: 0;
                    line-height: 1.75;
                    height: 1.75rem;
                }

                &:active,
                &:focus,
                &:hover {
                    background: transparent;
                    border: 0;
                    box-shadow: none;
                    color: @color-font;
                }
            }

            & > div {
                justify-content: space-evenly;
                display: flex;
                width: 100%;

                &:empty {
                    display: none;
                }
            }
        }
    }
}

/*** Media file selector for TinyMCE ***/

.image-selector {
    padding: 1rem .5rem 10rem .5rem !important;

    &.droptarget {
        border: .2rem dashed @color-table-border;

        &:after {
            margin-top: 2rem;
        }
    }

    form {
        position: absolute;
        top: 0;
    }

    .attachmentslist {
        margin: 0;
        overflow-x: hidden;
        overflow-y: auto;
        height: 19.1em;
        padding: 0 !important;

        li {
            padding: .25rem;
            cursor: pointer;

            &:before {
                display: none;
            }

            &:hover,
            &:focus {
                background: @color-list-selected-background;
            }

            span.name {
                flex: 1;
                margin: auto;
                padding-left: 1rem;
                .overflow-ellipsis();
            }

            span.img {
                height: 80px;
                width: 80px;
                display: flex;
                border: 1px solid @color-list-border;
                background: white;
                border-radius: .75rem;
                overflow: hidden;
            }

            img {
                margin: auto;
            }
        }

        html.layout-phone & {
            height: auto;
        }
    }
}


/*** HTML editor widget ***/

.html-editor {
    position: relative;
    margin-bottom: .2rem;

    .editor-toolbar {
        position: absolute;
        left: 1px;
        top: 1px;
        right: 1px;
        border-radius: .25rem .25rem 0 0;
        border-bottom: 1px solid @color-input-border;
        background-color: @color-input-addon-background;

        .mce-i-html {
            display: block;
            margin: 2px 2px 2px 4px;
            width: 34px;
            height: 28px;
            border-radius: .25rem;
            color: #222f3e; // from TinyMCE

            &:focus,
            &:hover {
                text-decoration: none;
                border-color: #e2e4e7;
                background-color: #dee0e2; // from TinyMCE
            }

            &:before {
                &:extend(.font-icon-class);
                content: @fa-var-image;
                margin: 0;
                width: 34px;
                line-height: 28px;
            }

            &[disabled] {
                opacity: .7;
                cursor: not-allowed;
            }
        }
    }

    // hide toolbar in html mode and in mailvelope mode
    &.mailvelope .editor-toolbar,
    .tox-tinymce + .editor-toolbar {
        display: none;
    }

    & > .googie_edit_layer,
    & > textarea {
        font-family: monospace;
        font-size: 13px;
        width: 100% !important;
        padding-top: 40px;
    }

    & > iframe { // e.g. mailvelope frame
        border-radius: .3rem;
        border: 1px solid @color-input-border;
        min-height: 30em;
    }
}


/*** GoogieSpell widget ***/

.googie_window {
    width: 16rem;
    height: auto;
}

.googie_edit_layer {
    font-family: monospace;

    // from Bootstrap's textarea
    padding: .5rem .75rem;
    border: 1px solid @color-input-border;
    border-radius: .3rem;
    line-height: 1.5;
}

.googie_link {
    color: @color-spellcheck-link;
    text-decoration: underline;
    cursor: pointer;
}

.googie_list {
    li {
        min-width: 8rem;
        width: auto;

        &.googie_list_onhover {
            color: @color-menu-hover;
            background-color: @color-menu-hover-background;
        }

        .googie_list_revert:before {
            &:extend(.font-icon-class);
            content: @fa-var-undo;
        }

        .googie_add_to_dict:before {
            &:extend(.font-icon-class);
            content: @fa-var-plus-square;
        }
    }

    input {
        display: inline-block;
        margin: .25rem .5rem;
    }
}
