@use "sass:map";
@import './modal';
@import './vars';

.klaro {

    $btn-margin-right: 0.5em;

    @include var(font-family, font-family);
    @include var(font-size, font-size);

    // buttons use their own font-family setting so we need to override it explicitly...
    button {
        @include var(font-family, font-family);
        @include var(font-size, font-size);
    }

    &.cm-as-context-notice {
        height: 100%;
        padding-bottom: map.get($cm-space, md);
        padding-top: map.get($cm-space, md);
    }

    .cookie-modal,
    .context-notice,
    .cookie-notice {
        @import 'switch';

        .slider {
            box-shadow: $cm-box-shadow-dark-md;
        }

        a {
            @include var(color, green1);
            text-decoration: none;
        }

        p,
        strong,
        h1,
        h2,
        ul,
        li {
            @include var(color, light1);
        }

        p,
        h1,
        h2,
        ul,
        li {
            display: block;
            text-align: left;
            margin: 0;
            padding: 0;
            margin-top: 0.7em;
        }

        h1,
        h2,
        h3,
        h4,
        h5,
        h6 {
            @include var(font-family, title-font-family);
        }

        .cm-link {
            margin-right: 0.5em;
            vertical-align: middle;
        }

        .cm-btn {

            @include var(color, button-text-color);
            @include var(background-color, dark2);
            @include var(border-radius, border-radius);
            padding: 6px 10px;
            margin-right: $btn-margin-right;
            border-style: none;
            padding: 0.4em;
            font-size: 1em;
            cursor: pointer;

            &:disabled {
                opacity: 0.5;
            }

            &.cm-btn-close {
                @include var(background-color, light2);
            }

            &.cm-btn-success {
                @include var(background-color, green1);
            }

            &.cm-btn-success-var {
                @include var(background-color, green2);
            }

            &.cm-btn-info {
                @include var(background-color, blue1);
            }
        }
    }

    .context-notice {
        @include var(border-radius, border-radius);
        @include var(border-style, border-style);
        @include var(border-width, border-width);
        @include var(border-color, light2);
        @include var(background-color, light1);

        display: flex;
        flex-direction: column;
        flex-wrap: wrap;
        align-items: center;
        justify-content: center;
        padding: map.get($cm-space, md);
        height: 100%;

        &.cm-dark {
            @include var(background-color, dark1);
            @include var(border-color, dark2);

            p {
                @include var(color, light1);

                a {
                    @include var(color, blue2);
                }
            }
        }

        p {
            @include var(color, dark1);

            flex-grow: 0;
            text-align: center;
            padding-top: 0;
            margin-top: 0;

            a {
                @include var(color, green2);
            }
        }

        p.cm-buttons {
            margin-top: map.get($cm-space, md);
        }

        // contextual consent notice
        p.ccn-description-empty-store {
            margin-top: map.get($cm-space, lg);            
            @include var(font-size, font-size);
        }
    }

    .cookie-modal {
        width: 100%;
        height: 100%;
        position: fixed;
        overflow: hidden;
        left: 0;
        top: 0;
        z-index: 1000;

        &.cm-embedded {
            position: relative;
            height: inherit;
            width: inherit;
            left: inherit;
            right: inherit;
            z-index: 0;

            .cm-modal.cm-klaro {
                position: relative;
                transform: none;
            }
        }

        .cm-bg {
            background: rgba(0, 0, 0, 0.5);
            height: 100%;
            width: 100%;
            position: fixed;
            top: 0;
            left: 0;
        }

        .cm-modal {
            &.cm-klaro {
                @include modal(660px, 640px);
            }

            .hide {
                border-style: none;
                background: none;
                cursor: pointer;
                position: absolute;
                top: 20px;
                right: 20px;
                z-index: 1;

                svg {
                    @include var(stroke, light1);
                }
            }

            .cm-footer {
                @include var(border-top-color, dark2);
                @include var(border-top-width, border-width);
                @include var(border-top-style, border-style);

                padding: 1em;

                &-buttons {
                    display: flex;
                    flex-flow: row;
                    justify-content: space-between;
                }

                .cm-powered-by {
                    font-size: 0.8em;
                    padding-top: 4px;
                    text-align: right;
                    padding-right: 8px;

                    a {
                        @include var(color, dark2);
                    }
                }
            }

            .cm-header {
                @include var(border-bottom-width, border-width);
                @include var(border-bottom-style, border-style);
                @include var(border-bottom-color, dark2);

                padding: 1em;
                padding-right: 24px;

                h1 {
                    margin: 0;
                    font-size: 2em;
                    display: block;

                    &.title {
                        padding-right: 20px;
                    }
                }
            }

            .cm-body {
                padding: 1em;

                ul {
                    display: block;
                }

                span {
                    display: inline-block;
                    width: auto;
                }

                ul.cm-services,
                ul.cm-purposes {
                    padding: 0;
                    margin: 0;

                    li.cm-purpose {
                        .cm-services {
                            .cm-caret {
                                @include var(color, light3);
                            }

                            .cm-content {
                                margin-left: -40px;
                                display: none;

                                &.expanded {
                                    margin-top: 10px;
                                    display: block;
                                }
                            }
                        }
                    }

                    li.cm-service,
                    li.cm-purpose {
                        position: relative;
                        line-height: 20px;
                        vertical-align: middle;
                        padding-left: 60px;
                        min-height: 40px;

                        &:first-child {
                            margin-top: 0;
                        }

                        p {
                            margin-top: 0;
                        }

                        p.purposes {
                            @include var(color, light3);
                            font-size: 0.8em;
                        }

                        &.cm-toggle-all {

                            @include var(border-top-width, border-width);
                            @include var(border-top-style, border-style);
                            @include var(border-top-color, dark2);

                            padding-top: 1em;
                        }

                        span.cm-list-title {
                            font-weight: 600;
                        }

                        span.cm-opt-out,
                        span.cm-required {
                            @include var(color, dark2);
                            padding-left: 0.2em;
                            font-size: 0.8em;
                        }
                    }
                }
            }
        }
    }

    .cookie-notice:not(.cookie-modal-notice) {
        @include var(background-color, dark1);
        z-index: 999;

        position: fixed;
        width: 100%;
        bottom: 0;
        right: 0;

        @media (min-width: $cm-desktop) {
            @include var(border-radius, border-radius);
            @include var(position, notice-position);
            @include var(right, notice-right);
            @include var(left, notice-left);
            @include var(bottom, notice-bottom);
            @include var(top, notice-top);
            @include var(max-width, notice-max-width);
            box-shadow: $cm-box-shadow-dark-md;
        }

        @media (max-width: ($cm-desktop - 1)) {
            border-style: none;
            border-radius: 0;
        }

        &.cn-embedded {
            position: relative;
            height: inherit;
            width: inherit;
            left: inherit;
            right: inherit;
            bottom: inherit;
            z-index: 0;

            .cn-body {
                padding-top: 0.5em;
            }
        }

        .cn-body {
            margin-bottom: 0;
            margin-right: 0;
            bottom: 0;

            padding: 1em;
            padding-top: 0;

            p {
                margin-bottom: 0.5em;
            }

            p.cn-changes {
                text-decoration: underline;
            }

            .cn-learn-more {
                display: inline-block;
                flex-grow: 1;
            }

            .cn-buttons {
                display: inline-block;
                margin-top: -0.5em;

                @media (max-width: $cm-mobile) {
                    width: 100%;
                }

                button.cm-btn {
                    margin-top: 0.5em;

                    @media (max-width: $cm-mobile) {
                        width: calc(50% - #{$btn-margin-right});
                    }
                }
            }

            .cn-ok {
                // we add a margin that cancels out unless the items are wrapped
                // in which case it will add some spacing between them
                margin-top: -0.5em;
                display: flex;
                flex-flow: row;
                flex-wrap: wrap;
                justify-content: right;
                align-items: baseline;

                a,
                div {
                    margin-top: 0.5em;
                }
            }
        }
    }

    .cookie-modal-notice {
        @include modal(400px, 400px);

        padding: 1em;
        padding-top: 0.2em;

        .cn-ok {
            display: flex;
            flex-flow: row;
            justify-content: space-between;
            align-items: center;

            margin-top: 1em;
        }
    }

    .cookie-notice-hidden {
        display: none !important;
    }
}
