/* ==========================================================================
   CDSWerx Text Editor Widget
   ========================================================================== */

/* Base Component */
.cdswerx-text-editor {
    word-wrap: break-word;
}

/* Links — transition for hover color */
.cdswerx-text-editor a {
    transition: color 0.2s ease;
}

/* ==========================================================================
   Drop Cap
   ========================================================================== */

.cdswerx-drop-cap-yes .cdswerx-text-editor > p:first-child {
    /* Ensure first paragraph accommodates the drop cap floated element */
}

.cdswerx-drop-cap {
    float: left;
    text-align: center;
    line-height: 1;
    font-size: 50px;
}

.cdswerx-drop-cap-letter {
    display: inline-block;
}

/* View: Stacked */
.cdswerx-drop-cap-view-stacked .cdswerx-drop-cap {
    background-color: var(--e-global-color-primary, #6ec1e4);
    color: #fff;
}

/* View: Framed */
.cdswerx-drop-cap-view-framed .cdswerx-drop-cap {
    border-style: solid;
    border-width: 3px;
}

/* ==========================================================================
   Columns — prevent orphaned headings / widows
   ========================================================================== */

.cdswerx-text-editor[style*="columns"] h1,
.cdswerx-text-editor[style*="columns"] h2,
.cdswerx-text-editor[style*="columns"] h3,
.cdswerx-text-editor[style*="columns"] h4,
.cdswerx-text-editor[style*="columns"] h5,
.cdswerx-text-editor[style*="columns"] h6 {
    break-after: avoid;
}

.cdswerx-text-editor[style*="columns"] p,
.cdswerx-text-editor[style*="columns"] li {
    orphans: 2;
    widows: 2;
}

/* ==========================================================================
   List Marker Modes
   Applied via list_marker_view control (Default / None / Numbers / Bullets / Icon).
   Bullets and Icon modes remove native markers and inject a PHP span instead.
   ========================================================================== */

/* Base reset — remove browser default padding/margin so lists align with paragraph text.
   Users can override via the List Margin / List Padding Elementor controls. */
.cdswerx-text-editor ul,
.cdswerx-text-editor ol {
    margin: 0;
    padding: 0;
}

/* None mode — hide markers, keep ul/li tags */
.cdswerx-text-editor--marker-none ul,
.cdswerx-text-editor--marker-none ol {
    list-style: none;
}

/* Numbers mode — force decimal counters on both ul and ol */
.cdswerx-text-editor--marker-numbers ul,
.cdswerx-text-editor--marker-numbers ol {
    list-style-type: decimal;
    padding-left: 1.5em;
}

/* Bullets mode — uses native CSS list-style-type (value set by Elementor selector) */
.cdswerx-text-editor--marker-bullets ul,
.cdswerx-text-editor--marker-bullets ol {
    padding-left: 1.5em;
}

/* Icon mode — remove native markers, inject span */
.cdswerx-text-editor--icon-marker ul,
.cdswerx-text-editor--icon-marker ol {
    list-style: none;
    padding-left: 0;
}

.cdswerx-text-editor--icon-marker li {
    display: flex;
    align-items: baseline;
}

/* Injected marker span (icon mode) */
.cdswerx-text-editor__list-marker {
    flex-shrink: 0;
    line-height: 1;
    display: inline-flex;
    align-items: center;
}

.cdswerx-text-editor__list-marker svg {
    fill: currentColor;
    width: 1em;
    height: 1em;
}

/* List Style Position — Inside: list flush with surrounding text, hanging indent for wrap */
.cdswerx-text-editor--list-inside ul,
.cdswerx-text-editor--list-inside ol {
    list-style-position: outside;
    padding-left: 1.5em;
}

/* List Hover Underline — animated underline on li a hover */
.cdswerx-text-editor--list-underline li a {
    background-image: linear-gradient(transparent calc(100% - 1px), currentColor 1px);
    background-size: 0 100%;
    background-repeat: no-repeat;
    transition: background-size 0.55s cubic-bezier(0.32, 0.32, 0.15, 1.17);
    text-decoration: none;
}

.cdswerx-text-editor--list-underline li a:hover {
    background-size: 100% 100%;
}
