/* =============================================================================
 *  SHARED PRESENTATIONAL POST-CONTENT STYLES — KEEP IN SYNC ACROSS PROJECTS!
 *
 *  This file is duplicated in two repositories and the copies MUST stay identical:
 *    • TruBlog:     src/assets/styles/post-content-widget-styles.css
 *    • tv-ckeditor: projects/tv-ckeditor/demo/assets/blog/post-content-widget-styles.css
 *
 *  Contains ONLY presentational styles (how published post content/widgets look) —
 *  no editor-only chrome. Any change here MUST be mirrored in the other project,
 *  otherwise the blog editor preview and the published TruBlogs page will silently drift.
 * ============================================================================= */

: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;
}


/* Accordion common styles */
.ck-accordion-widget {
    box-sizing: border-box;
    display: block;
    max-width: 100%;
    margin-top: var(--ck-widget-vertical-margin);
    margin-bottom: var(--ck-widget-vertical-margin);
}

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

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

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

.ck-accordion-item {
    display: block;
    box-sizing: border-box;
    padding-top: 8px;
    padding-bottom: 8px;
}

.ck-accordion-item + .ck-accordion-item {
    border-top: var(--ck-accordion-divider-width, 1px) var(--ck-accordion-divider-style, solid) var(--ck-accordion-divider-color, #DBDBDB);
}

.ck-accordion-summary {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 0;
    cursor: pointer;
}

summary.ck-accordion-summary {
    list-style: none;
}

summary.ck-accordion-summary::-webkit-details-marker {
    display: none;
}

/* Title (a heading/paragraph block) fills the row */
.ck-accordion-title {
    flex: 1 1 auto;
    min-width: 0;
}

.ck-accordion-title > * {
    margin: 0;
}

.ck-accordion-description {
    padding-top: 4px;
    margin-left: 32px;
}

.ck-accordion-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
    margin-left: 4px;
    color: var(--ck-accordion-icon-color, #7B828E);
}

.ck-accordion-icon svg {
    width: 20px;
    height: 20px;
    display: block;
    transition: transform 0.2s ease;
}

.ck-accordion-icon-style-plus .ck-accordion-icon-chevron {
    display: none;
}

.ck-accordion-icon-style-chevron .ck-accordion-icon-plus {
    display: none;
}

.ck-accordion-icon-bar-v {
    transform-box: fill-box;
    transform-origin: center;
    transition: transform 0.2s ease;
}

details.ck-accordion-item[open] .ck-accordion-icon-bar-v {
    transform: rotate(-90deg);
}

details.ck-accordion-item[open] .ck-accordion-icon-chevron svg {
    transform: rotate(180deg);
}
