/*
 * Blog Maker — responsive, minimal and predictable card system.
 * The widget controls the number of columns via --obl-columns.
 * The widget uses only the post's featured image; image height is always automatic.
 * One-column desktop layout becomes a horizontal feature card;
 * multi-column layouts remain compact stacked cards.
 */

.obl-blog-grid {
    --obl-columns: 3;
    display: grid;
    grid-template-columns: repeat(var(--obl-columns), minmax(0, 1fr));
    gap: 24px;
    width: 100%;
    min-width: 0;
    align-items: start;
    container-type: inline-size;
}

.obl-card {
    --obl-border: #e6e9ed;
    --obl-card-radius: 10px;
    --obl-card-shadow: 0 2px 10px rgba(15, 23, 42, .05);
    width: 100%;
    min-width: 0;
    height: auto !important;
    align-self: start;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    background: #fff;
    border: 1px solid var(--obl-border);
    border-radius: var(--obl-card-radius);
    box-shadow: var(--obl-card-shadow);
    transition: border-color .2s ease, box-shadow .2s ease, transform .2s ease;
}

.obl-card:hover {
    border-color: #d8dde3;
    box-shadow: 0 8px 24px rgba(15, 23, 42, .08);
    transform: translateY(-2px);
}

/* ------------------------------
   Layout
   ------------------------------ */

/* Explicit one-column desktop layout: image left, content right. */
.obl-blog-grid.obl-columns-1.obl-design-yan-yana .obl-card {
    display: grid;
    grid-template-columns: minmax(220px, 36%) minmax(0, 1fr);
    align-items: stretch;
}

/* Featured image */
.obl-thumbnail {
    width: 100%;
    max-width: 100%;
    /* allow thumbnail to stretch to match content height in one-column layout */
    aspect-ratio: 16 / 4;
    min-width: 0;
    overflow: hidden;
    position: relative;
    flex: 0 0 auto;
    background: #f7f8fa;
}

/* When layout is horizontal (one-column desktop), let the thumbnail fill column height */
.obl-blog-grid.obl-columns-1.obl-design-yan-yana .obl-thumbnail {
    aspect-ratio: auto;
    height: 100%;
    align-self: stretch;
    display: block;
}

/* Zigzag: reverse columns for odd items */
.obl-blog-grid.obl-columns-1.obl-design-yan-yana .obl-card.obl-zigzag-right {
    grid-template-columns: minmax(0, 1fr) minmax(220px, 36%);
}

.obl-blog-grid.obl-columns-1.obl-design-yan-yana .obl-card .obl-thumbnail {
    grid-column: 1;
    grid-row: 1;
}

.obl-blog-grid.obl-columns-1.obl-design-yan-yana .obl-card.obl-zigzag-right .obl-thumbnail {
    grid-column: 2;
    grid-row: 1;
}

.obl-blog-grid.obl-columns-1.obl-design-yan-yana .obl-card .obl-content {
    grid-column: 2;
    grid-row: 1;
}

.obl-blog-grid.obl-columns-1.obl-design-yan-yana .obl-card.obl-zigzag-right .obl-content {
    grid-column: 1;
    grid-row: 1;
}

/* Stacked design: image on top, content below. No zigzag */
.obl-design-alt-alta .obl-card {
    display: flex;
    flex-direction: column;
}

.obl-design-alt-alta .obl-thumbnail {
    width: 100%;
    aspect-ratio: 16 / 9;
    height: auto;
}

.obl-design-alt-alta .obl-thumbnail a {
    height: auto;
}

.obl-design-alt-alta .obl-thumbnail img {
    width: 100% !important;
    height: auto !important;
    object-fit: cover;
}

.obl-thumbnail a {
    display: block;
    width: 100%;
    height: 100%;
    line-height: 0;
}

.obl-thumbnail img {
    display: block;
    width: 100% !important;
    max-width: 100% !important;
    height: 100% !important;
    object-fit: cover;
    object-position: center;
    margin: 0;
    border: 0;
}

/* ------------------------------
   Content
   ------------------------------ */

.obl-content {
    width: 100%;
    min-width: 0;
    padding: 18px 20px 20px;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 0;
}

.obl-title {
    width: 100%;
    margin: 0 0 8px;
    font-size: 1.06rem;
    line-height: 1.42;
    font-weight: 700;
    letter-spacing: -.01em;
    color: #14181f;
    word-break: break-word;
}

.obl-title a,
.obl-title a:hover {
    color: inherit;
    text-decoration: none;
}

.obl-title a:hover {
    color: #303943;
}

/* Meta: quiet, single row under the title. */
.obl-meta {
    width: 100%;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-start;
    gap: 0;
    margin: 0 0 10px;
    padding: 0;
    border: 0;
    font-size: .73rem;
    line-height: 1.5;
    color: #7a828c;
}

.obl-meta-item,
.obl-date,
.obl-author,
.obl-reading-time {
    display: inline-flex;
    align-items: center;
    padding: 0 !important;
    margin: 0;
    color: #7a828c !important;
    font-weight: 500;
    transition: none;
}

.obl-meta-item:not(:last-child)::after {
    content: "•";
    position: static;
    width: auto;
    height: auto;
    margin: 0 7px;
    transform: none;
    background: none;
    color: #c9ced4;
}

.obl-meta-icon {
    display: none !important;
}

/* ------------------------------
   Category + tag badges
   ------------------------------ */

.obl-taxonomy-row {
    width: 100%;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-start;
    gap: 5px;
    margin: 0 0 12px;
    padding: 0;
}

.obl-taxonomy-group {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 5px;
    margin: 0;
    padding: 0;
}

.obl-badges-group::before,
.obl-taxonomy-group::before {
    display: none !important;
    content: none !important;
}

.obl-badge,
.obl-tag-item {
    display: inline-flex;
    align-items: center;
    width: auto;
    max-width: 100%;
    min-height: 21px;
    padding: 3px 8px !important;
    border: 1px solid #e1e5ea !important;
    border-radius: var(--obl-badge-radius, 5px) !important;
    background: var(--obl-badge-bg, #f7f8fa) !important;
    color: var(--obl-badge-color, #66707b) !important;
    box-shadow: none !important;
    font-size: .66rem;
    line-height: 1.2;
    font-weight: 600;
    letter-spacing: 0;
    text-transform: none;
    white-space: nowrap;
    text-decoration: none;
    transition: background-color .15s ease, border-color .15s ease, color .15s ease;
}

.obl-badge::before {
    display: none !important;
    content: none !important;
}

.obl-badge:hover,
.obl-tag-item:hover {
    transform: none !important;
    background: #f1f3f5 !important;
    border-color: #d5dae0 !important;
    color: #4f5862 !important;
    box-shadow: none !important;
}

.obl-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 5px;
    margin: 0;
}

/* ------------------------------
   Excerpt + footer
   ------------------------------ */

.obl-excerpt {
    width: 100%;
    margin: 0 0 14px;
    color: #66707b;
    font-size: .85rem;
    line-height: 1.62;
    font-weight: 400;
}

.obl-footer-area,
.obl-button-wrapper {
    width: 100%;
    margin: 0;
}

.obl-button-wrapper {
    display: flex;
    align-items: center;
    gap: 8px;
}

.obl-button-wrapper.obl-align-left {
    justify-content: flex-start;
}

.obl-button-wrapper.obl-align-center {
    justify-content: center;
}

.obl-button-wrapper.obl-align-right {
    justify-content: flex-end;
}

.obl-align-center .obl-footer-area {
    text-align: center;
}

.obl-align-right .obl-footer-area {
    text-align: right;
}

/* ------------------------------
   Button engine
   ------------------------------ */

.obl-button,
.obl-custom-btn {
    --obl-btn-bg: #2563eb;
    --obl-btn-color: #fff;
    --obl-btn-border-color: transparent;
    --obl-btn-bg-hover: #1d4ed8;
    --obl-btn-color-hover: #fff;
    --obl-btn-border-hover: #1d4ed8;
    --obl-btn-border-width: 0px;
    --obl-btn-shadow: 0 4px 12px rgba(37, 99, 235, .18);
    --obl-btn-radius: 7px;

    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 36px;
    padding: 9px 15px !important;
    border: var(--obl-btn-border-width) solid var(--obl-btn-border-color) !important;
    border-radius: var(--obl-btn-radius) !important;
    background: var(--obl-btn-bg) !important;
    background-color: var(--obl-btn-bg) !important;
    color: var(--obl-btn-color) !important;
    box-shadow: var(--obl-btn-shadow) !important;
    text-decoration: none !important;
    font-size: .78rem !important;
    line-height: 1.2;
    font-weight: 600;
    letter-spacing: 0;
    cursor: pointer;
    transition: transform .2s ease, background .2s ease, color .2s ease, border-color .2s ease, box-shadow .2s ease;
}

/* Solid */
.obl-button.obl-btn-solid,
.obl-custom-btn.obl-btn-solid {
    background: var(--obl-btn-bg) !important;
    color: var(--obl-btn-color) !important;
}

.obl-button.obl-btn-solid:hover,
.obl-custom-btn.obl-btn-solid:hover {
    background: var(--obl-btn-bg-hover) !important;
    color: var(--obl-btn-color-hover) !important;
    border-color: var(--obl-btn-border-hover) !important;
    transform: translateY(-1px);
}

/* Gradient */
.obl-button.obl-btn-gradient,
.obl-custom-btn.obl-btn-gradient {
    background: linear-gradient(135deg, var(--obl-btn-bg), var(--obl-btn-bg-hover)) !important;
    color: var(--obl-btn-color) !important;
}

.obl-button.obl-btn-gradient:hover,
.obl-custom-btn.obl-btn-gradient:hover {
    background: linear-gradient(135deg, var(--obl-btn-bg-hover), var(--obl-btn-bg)) !important;
    color: var(--obl-btn-color-hover) !important;
    border-color: var(--obl-btn-border-hover) !important;
    transform: translateY(-1px);
}

/* Neon */
.obl-button.obl-btn-neon,
.obl-custom-btn.obl-btn-neon {
    background: linear-gradient(135deg, var(--obl-btn-bg), var(--obl-btn-bg-hover)) !important;
    color: var(--obl-btn-color) !important;
    box-shadow: var(--obl-btn-shadow), 0 0 16px color-mix(in srgb, var(--obl-btn-bg) 45%, transparent) !important;
}

.obl-button.obl-btn-neon:hover,
.obl-custom-btn.obl-btn-neon:hover {
    background: linear-gradient(135deg, var(--obl-btn-bg-hover), var(--obl-btn-bg)) !important;
    color: var(--obl-btn-color-hover) !important;
    border-color: var(--obl-btn-border-hover) !important;
    box-shadow: var(--obl-btn-shadow), 0 0 24px color-mix(in srgb, var(--obl-btn-bg-hover) 58%, transparent) !important;
    transform: translateY(-1px);
}

/* Underline */
.obl-button.obl-btn-underline,
.obl-custom-btn.obl-btn-underline {
    min-height: 32px;
    padding: 7px 1px !important;
    border: 0 !important;
    border-bottom: 1px solid var(--obl-btn-border-color) !important;
    border-radius: 0 !important;
    background: transparent !important;
    background-color: transparent !important;
    color: var(--obl-btn-bg) !important;
    box-shadow: none !important;
}

.obl-button.obl-btn-underline:hover,
.obl-custom-btn.obl-btn-underline:hover {
    background: transparent !important;
    color: var(--obl-btn-bg-hover) !important;
    border-bottom-color: var(--obl-btn-border-hover) !important;
    box-shadow: 0 1px 0 0 var(--obl-btn-border-hover) !important;
    transform: none;
}

/* Pill */
.obl-button.obl-btn-pill,
.obl-custom-btn.obl-btn-pill {
    border-radius: 999px !important;
}

.obl-button.obl-btn-pill:hover,
.obl-custom-btn.obl-btn-pill:hover {
    background: var(--obl-btn-bg-hover) !important;
    color: var(--obl-btn-color-hover) !important;
    border-color: var(--obl-btn-border-hover) !important;
    transform: translateY(-1px);
}

/* Button keyboard focus */
.obl-button:focus-visible,
.obl-custom-btn:focus-visible,
.obl-badge:focus-visible {
    outline: 2px solid currentColor;
    outline-offset: 2px;
}

/* ------------------------------
   Legacy shortcode button styles
   ------------------------------ */
.obl-button.obl-btn-outline,
.obl-custom-btn.obl-btn-outline {
    background: transparent !important;
    background-color: transparent !important;
    color: var(--obl-btn-bg, #2563eb) !important;
    box-shadow: none !important;
}

.obl-button.obl-btn-outline:hover,
.obl-custom-btn.obl-btn-outline:hover {
    background: var(--obl-btn-bg-hover, #eef4ff) !important;
    color: var(--obl-btn-color-hover, #1d4ed8) !important;
    border-color: var(--obl-btn-border-hover, #1d4ed8) !important;
}

.obl-button.obl-btn-minimal,
.obl-custom-btn.obl-btn-minimal {
    min-height: 32px;
    padding: 7px 0 !important;
    border: 0 !important;
    border-bottom: 1px solid currentColor !important;
    border-radius: 0 !important;
    background: transparent !important;
    background-color: transparent !important;
    color: var(--obl-btn-bg, #2563eb) !important;
    box-shadow: none !important;
}

/* Older shortcode classes continue to work without stealing the widget's style. */
.obl-button.obl-theme-green,
.obl-custom-btn.obl-theme-green {
    --obl-btn-bg: #15803d;
    --obl-btn-bg-hover: #166534;
}

.obl-button.obl-theme-red,
.obl-custom-btn.obl-theme-red {
    --obl-btn-bg: #b91c1c;
    --obl-btn-bg-hover: #991b1b;
}

.obl-button.obl-theme-orange,
.obl-custom-btn.obl-theme-orange {
    --obl-btn-bg: #c2410c;
    --obl-btn-bg-hover: #9a3412;
}

.obl-button.obl-theme-purple,
.obl-custom-btn.obl-theme-purple {
    --obl-btn-bg: #7e22ce;
    --obl-btn-bg-hover: #6b21a8;
}

.obl-button.obl-theme-black,
.obl-custom-btn.obl-theme-black {
    --obl-btn-bg: #1f2937;
    --obl-btn-bg-hover: #111827;
}

.obl-button.obl-theme-blue,
.obl-custom-btn.obl-theme-blue {
    --obl-btn-bg: #2563eb;
    --obl-btn-bg-hover: #1d4ed8;
}

.obl-button.obl-shadow-none,
.obl-custom-btn.obl-shadow-none {
    box-shadow: none !important;
}

.obl-button.obl-shadow-sm,
.obl-custom-btn.obl-shadow-sm {
    box-shadow: 0 1px 3px rgba(15, 23, 42, .10) !important;
}

.obl-button.obl-shadow-md,
.obl-custom-btn.obl-shadow-md {
    box-shadow: 0 4px 12px rgba(15, 23, 42, .15) !important;
}

.obl-button.obl-shadow-lg,
.obl-custom-btn.obl-shadow-lg {
    box-shadow: 0 8px 20px rgba(15, 23, 42, .18) !important;
}

.obl-button.obl-rounded-none,
.obl-custom-btn.obl-rounded-none {
    --obl-btn-radius: 0px;
}

.obl-button.obl-rounded-sm,
.obl-custom-btn.obl-rounded-sm {
    --obl-btn-radius: 4px;
}

.obl-button.obl-rounded-md,
.obl-custom-btn.obl-rounded-md {
    --obl-btn-radius: 7px;
}

.obl-button.obl-rounded-lg,
.obl-custom-btn.obl-rounded-lg {
    --obl-btn-radius: 12px;
}

.obl-button.obl-rounded-full,
.obl-custom-btn.obl-rounded-full {
    --obl-btn-radius: 999px;
}

.obl-button.obl-btn-sm,
.obl-custom-btn.obl-btn-sm {
    min-height: 32px;
    padding: 7px 12px !important;
    font-size: .72rem !important;
}

.obl-button.obl-btn-md,
.obl-custom-btn.obl-btn-md {
    min-height: 36px;
    padding: 9px 15px !important;
    font-size: .78rem !important;
}

.obl-button.obl-btn-lg,
.obl-custom-btn.obl-btn-lg {
    min-height: 42px;
    padding: 11px 20px !important;
    font-size: .9rem !important;
}

.obl-button.obl-btn-xl,
.obl-custom-btn.obl-btn-xl {
    min-height: 48px;
    padding: 13px 24px !important;
    font-size: 1rem !important;
}

.obl-button.obl-btn-block,
.obl-custom-btn.obl-btn-block {
    width: 100%;
}

/* ------------------------------
   Effects
   ------------------------------ */

.obl-effect-zoom .obl-thumbnail img,
.obl-effect-grayscale .obl-thumbnail img,
.obl-effect-blur .obl-thumbnail img {
    transition: transform .45s ease, filter .45s ease;
}

.obl-effect-zoom:hover .obl-thumbnail img {
    transform: scale(1.035);
}

.obl-effect-grayscale .obl-thumbnail img {
    filter: grayscale(100%);
}

.obl-effect-grayscale:hover .obl-thumbnail img {
    filter: grayscale(0);
}

.obl-effect-lift:hover {
    transform: translateY(-5px);
    box-shadow: 0 14px 28px rgba(15, 23, 42, .11);
}

.obl-effect-blur:hover .obl-thumbnail img {
    filter: blur(2px);
    transform: scale(1.015);
}

/* ------------------------------
   Alignment
   ------------------------------ */

.obl-align-center .obl-meta,
.obl-align-center .obl-taxonomy-row,
.obl-align-center .obl-taxonomy-group {
    justify-content: center;
}

.obl-align-right .obl-meta,
.obl-align-right .obl-taxonomy-row,
.obl-align-right .obl-taxonomy-group {
    justify-content: flex-end;
}

.obl-align-center .obl-title,
.obl-align-center .obl-excerpt {
    text-align: center;
}

.obl-align-right .obl-title,
.obl-align-right .obl-excerpt {
    text-align: right;
}

/* ------------------------------
   Responsive behavior
   ------------------------------ */

/* Container-aware responsive layout. Elementor columns can be narrower than the viewport. */
@container (max-width: 1100px) {
    .obl-blog-grid.obl-columns-4 {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

@container (max-width: 900px) {

    .obl-blog-grid.obl-columns-3,
    .obl-blog-grid.obl-columns-4 {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@container (max-width: 760px) {
    .obl-blog-grid.obl-columns-1 .obl-card {
        display: flex;
        flex-direction: column;
    }

    .obl-blog-grid.obl-columns-1 .obl-thumbnail,
    .obl-blog-grid.obl-columns-1 .obl-content {
        grid-column: auto;
        grid-row: auto;
    }

    .obl-blog-grid.obl-columns-2,
    .obl-blog-grid.obl-columns-3,
    .obl-blog-grid.obl-columns-4 {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 900px) {
    .obl-blog-grid {
        gap: 20px;
    }

    /* Fallback for browsers/layouts where container queries are not enough. */
    .obl-blog-grid.obl-columns-3,
    .obl-blog-grid.obl-columns-4 {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 768px) {
    .obl-blog-grid {
        gap: 18px;
        /* Prevent mobile browsers from creating phantom scroll space with container queries. */
        container-type: normal;
        align-items: stretch;
    }

    /* Mobile: always stack cards as image top + content bottom. */
    .obl-blog-grid .obl-card,
    .obl-blog-grid.obl-design-yan-yana .obl-card,
    .obl-blog-grid.obl-columns-1.obl-design-yan-yana .obl-card,
    .obl-blog-grid.obl-columns-1.obl-design-yan-yana .obl-card.obl-zigzag-right {
        display: flex;
        flex-direction: column;
        grid-template-columns: 1fr;
        grid-auto-rows: auto;
    }

    .obl-blog-grid .obl-thumbnail,
    .obl-design-yan-yana .obl-thumbnail,
    .obl-design-alt-alta .obl-thumbnail {
        width: 100%;
        height: auto;
        aspect-ratio: 16 / 9;
    }

    .obl-blog-grid .obl-thumbnail a {
        height: auto;
    }

    .obl-blog-grid .obl-thumbnail img {
        width: 100% !important;
        height: auto !important;
        object-fit: cover;
    }

    .obl-blog-grid.obl-columns-1.obl-design-yan-yana .obl-thumbnail,
    .obl-blog-grid.obl-columns-1.obl-design-yan-yana .obl-card.obl-zigzag-right .obl-thumbnail {
        aspect-ratio: 16 / 9;
        height: auto;
    }

    .obl-blog-grid.obl-columns-1 .obl-card .obl-thumbnail,
    .obl-blog-grid.obl-columns-1 .obl-card .obl-content,
    .obl-blog-grid.obl-columns-1 .obl-card.obl-zigzag-right .obl-thumbnail,
    .obl-blog-grid.obl-columns-1 .obl-card.obl-zigzag-right .obl-content {
        grid-column: auto;
        grid-row: auto;
    }

    .obl-blog-grid.obl-columns-2,
    .obl-blog-grid.obl-columns-3,
    .obl-blog-grid.obl-columns-4 {
        grid-template-columns: 1fr;
    }

    .obl-content {
        padding: 15px 16px 17px;
    }

    .obl-title {
        font-size: 1rem;
    }

    .obl-meta {
        font-size: .71rem;
    }

    .obl-excerpt {
        font-size: .83rem;
    }

    .obl-badge,
    .obl-tag-item {
        font-size: .64rem;
        padding: 3px 7px !important;
    }

    .obl-custom-btn {
        max-width: 100%;
    }

    /* Mobile overflow guard: avoid layout overflow that can create extra empty space. */
    .obl-blog-grid,
    .obl-card {
        max-width: 100%;
        overflow-x: clip;
    }

    .obl-card,
    .obl-card:hover,
    .obl-effect-lift:hover {
        transform: none;
    }
}

/* Print */
@media print {
    .obl-card {
        page-break-inside: avoid;
        box-shadow: none !important;
        border-color: #d1d5db;
    }

    .obl-button,
    .obl-custom-btn {
        box-shadow: none !important;
        background: transparent !important;
        color: #000 !important;
        border-color: #000 !important;
    }
}

@media (prefers-reduced-motion: reduce) {

    .obl-card,
    .obl-thumbnail img,
    .obl-button,
    .obl-custom-btn,
    .obl-badge,
    .obl-tag-item {
        transition: none !important;
        animation: none !important;
    }
}