:root {
    --ck-widget-vertical-margin: 15px;
    --ck-widget-horizontal-margin: 40px; /* To fit list markers between widget and list */
}

/* Common widget styles */
.ck-divider-widget,
.ck-video-widget:not([data-align="left"]):not([data-align="right"]),
.ck-image-widget:not([data-align="left"]):not([data-align="right"]),
.ck-button-widget:not([data-align="left"]):not([data-align="right"]) {
    margin-top: var(--ck-widget-vertical-margin);
}

.ck-video-widget,
.ck-image-widget,
.ck-divider-widget,
.ck-button-widget {
    margin-bottom: var(--ck-widget-vertical-margin);
}

/* All combinations of type: text_block_element + floated_widget */
p  + .ck-image-widget[data-align="left"],
h1 + .ck-image-widget[data-align="left"],
h2 + .ck-image-widget[data-align="left"],
h3 + .ck-image-widget[data-align="left"],
h4 + .ck-image-widget[data-align="left"],
h5 + .ck-image-widget[data-align="left"],
h6 + .ck-image-widget[data-align="left"],
ul + .ck-image-widget[data-align="left"],
ol + .ck-image-widget[data-align="left"],

p  + .ck-image-widget[data-align="right"],
h1 + .ck-image-widget[data-align="right"],
h2 + .ck-image-widget[data-align="right"],
h3 + .ck-image-widget[data-align="right"],
h4 + .ck-image-widget[data-align="right"],
h5 + .ck-image-widget[data-align="right"],
h6 + .ck-image-widget[data-align="right"],
ul + .ck-image-widget[data-align="right"],
ol + .ck-image-widget[data-align="right"],

p  + .ck-video-widget[data-align="left"],
h1 + .ck-video-widget[data-align="left"],
h2 + .ck-video-widget[data-align="left"],
h3 + .ck-video-widget[data-align="left"],
h4 + .ck-video-widget[data-align="left"],
h5 + .ck-video-widget[data-align="left"],
h6 + .ck-video-widget[data-align="left"],
ul + .ck-video-widget[data-align="left"],
ol + .ck-video-widget[data-align="left"],

p  + .ck-video-widget[data-align="right"],
h1 + .ck-video-widget[data-align="right"],
h2 + .ck-video-widget[data-align="right"],
h3 + .ck-video-widget[data-align="right"],
h4 + .ck-video-widget[data-align="right"],
h5 + .ck-video-widget[data-align="right"],
h6 + .ck-video-widget[data-align="right"],
ul + .ck-video-widget[data-align="right"],
ol + .ck-video-widget[data-align="right"],

p  + .ck-button-widget[data-align="left"],
h1 + .ck-button-widget[data-align="left"],
h2 + .ck-button-widget[data-align="left"],
h3 + .ck-button-widget[data-align="left"],
h4 + .ck-button-widget[data-align="left"],
h5 + .ck-button-widget[data-align="left"],
h6 + .ck-button-widget[data-align="left"],
ul + .ck-button-widget[data-align="left"],
ol + .ck-button-widget[data-align="left"],

p  + .ck-button-widget[data-align="right"],
h1 + .ck-button-widget[data-align="right"],
h2 + .ck-button-widget[data-align="right"],
h3 + .ck-button-widget[data-align="right"],
h4 + .ck-button-widget[data-align="right"],
h5 + .ck-button-widget[data-align="right"],
h6 + .ck-button-widget[data-align="right"],
ul + .ck-button-widget[data-align="right"],
ol + .ck-button-widget[data-align="right"] {
    margin-top: var(--ck-widget-vertical-margin);
}

/* Button widget styles */
.ck-button-widget {
    display: flex;
    justify-content: center;
    align-items: center;
    text-align: center;
    clear: both;
}

.ck-button-widget .ck-button-widget-text-box {
    display: flex;
    justify-content: center;
    align-items: center;
    width: 100%;
    height: 100%;
    overflow: hidden;
    border-style: solid;
    border-radius: inherit;
}

.ck-button-widget .ck-button-widget-text {
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
}

.ck-button-widget[data-align="left"] {
    float: left;
    margin-right: var(--ck-widget-horizontal-margin);
}

.ck-button-widget[data-align="center"] {
    margin-left: auto;
    margin-right: auto;
}

.ck-button-widget[data-align="right"] {
    float: right;
    margin-left: var(--ck-widget-horizontal-margin);
}


/* Divider common styles */
.ck-divider-widget {
    display: table;
    clear: both;
}

.ck-divider-widget[data-align="left"] {
    margin-left: 0;
    margin-right: auto;
}

.ck-divider-widget[data-align="center"] {
    margin-left: auto;
    margin-right: auto;
}

.ck-divider-widget[data-align="right"] {
    margin-left: auto;
    margin-right: 0;
}

.ck-divider-widget .ck-divider-child {
    margin: 15px 0 !important;
    height: 1px;
    background: none;
    border: 0;
    width: 100%;
    opacity: 1;
}

/* Image common styles */
.ck-image-widget {
    clear: both;
}

.ck-image-widget[data-align="left"] {
    float: left;
    margin-right: var(--ck-widget-horizontal-margin);
}

.ck-image-widget[data-align="center"] {
    margin-left: auto;
    margin-right: auto;
}

.ck-image-widget[data-align="right"] {
    float: right;
    margin-left: var(--ck-widget-horizontal-margin);
}

.ck-image-widget .ck-image {
    object-fit: cover;
    display: block;
    margin: 0;
    width: 100%;
    height: 100%;
    border-style: solid;
}

.ck-image-widget:not([data-src]),
.ck-image-widget[data-src=''] {
    display: none;
}

.ck-image-caption {
    text-align: center;
    word-break: break-word;
}

.ck-image-caption[data-caption=""],
.ck-image-caption:empty {
    display: none;
}

.ck-image-widget:not([data-src]),
.ck-image-widget[data-src=''] {
    display: none; /* Requirement: do not show entire image widget if src is not provided */
}

/* Video common styles */
.ck-video-widget {
    clear: both;
}

.ck-video-widget[data-align="left"] {
    float: left;
    margin-right: var(--ck-widget-horizontal-margin);
}

.ck-video-widget[data-align="center"] {
    margin-left: auto;
    margin-right: auto;
}

.ck-video-widget[data-align="right"] {
    float: right;
    margin-left: var(--ck-widget-horizontal-margin);
}

/*
    https://stackoverflow.com/questions/25302836/responsive-video-iframes-keeping-aspect-ratio-with-only-css

    Default video frame width = 560px, height = 315px;
    So padding top = 100% / (width / height) = 56.25%;
    We add these styles to preserve iframe aspect ratio on resizing

    Wix.com has the same approach
*/
.ck-video-aspect-ratio-container {
    padding: 56.25% 0 0 0;
    position: relative;
}

.ck-video-frame {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
}

.ck-video-widget:not([data-src]),
.ck-video-widget[data-src=''] {
    display: none; /* Requirement: do not show entire video widget if src is not provided */
}


/* Table common styles */
figure.ck-table-widget {
    clear: both;
    margin: 0;
}

.ck-table-wrapper {
    overflow-x: auto;
}

.ck-table-widget tr {
    height: 48px;
}

.ck-table-widget td,
.ck-table-widget th {
    position: relative;
    border: 1px solid #DBDBDB;
    overflow-wrap: break-word;
}

.ck-table-widget table {
    min-width: 100%;
    table-layout: fixed;
    width: 100%;
    border: 1px double #DBDBDB;
    border-collapse: collapse;
    border-spacing: 0;
}

.ck-table-widget th,
.ck-table-widget td {
    text-align: left;
}

.ck-table-widget th,
.ck-table-widget td {
    vertical-align: middle;
}
