/* LT Design Kits — Atomic Grid Presets */

/*
 * Presets are applied to Elementor's native e-grid through Atomic typed
 * classes. Only tracks and item placement use !important so the native Grid
 * controls keep ownership of gap, dimensions, padding, radius and backgrounds.
 */
:is(.e-atomic-element, .e-con)[class*="ldk-ag-preset-"] {
    display: grid !important;
    grid-auto-flow: row dense !important;
    align-items: stretch;
}

/* Atomic widgets render directly on the frontend, while the Atomic editor can
 * add an editing wrapper around them. Support both without relying on nth-child,
 * because editor helper nodes must never alter the preset positions. */
[class*="ldk-ag-preset-"] > [class*="ldk-ag-item-"],
[class*="ldk-ag-preset-"] > :has([class*="ldk-ag-item-"]) {
    min-width: 0;
    min-height: 0;
    align-self: stretch !important;
    justify-self: stretch !important;
}

/* 2+1: two stacked items on the left and one tall item on the right. */
:is(.e-atomic-element, .e-con).ldk-ag-preset-2-1 {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    grid-template-rows: repeat(2, minmax(0, 1fr)) !important;
}
:is(.e-atomic-element, .e-con).ldk-ag-preset-2-1 > .ldk-ag-item-1,
:is(.e-atomic-element, .e-con).ldk-ag-preset-2-1 > :has(.ldk-ag-item-1) { grid-column: 1 !important; grid-row: 1 !important; }
:is(.e-atomic-element, .e-con).ldk-ag-preset-2-1 > .ldk-ag-item-2,
:is(.e-atomic-element, .e-con).ldk-ag-preset-2-1 > :has(.ldk-ag-item-2) { grid-column: 1 !important; grid-row: 2 !important; }
:is(.e-atomic-element, .e-con).ldk-ag-preset-2-1 > .ldk-ag-item-3,
:is(.e-atomic-element, .e-con).ldk-ag-preset-2-1 > :has(.ldk-ag-item-3) { grid-column: 2 !important; grid-row: 1 / span 2 !important; }

/* 1+2: one tall item on the left and two stacked items on the right. */
:is(.e-atomic-element, .e-con).ldk-ag-preset-1-2 {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    grid-template-rows: repeat(2, minmax(0, 1fr)) !important;
}
:is(.e-atomic-element, .e-con).ldk-ag-preset-1-2 > .ldk-ag-item-1,
:is(.e-atomic-element, .e-con).ldk-ag-preset-1-2 > :has(.ldk-ag-item-1) { grid-column: 1 !important; grid-row: 1 / span 2 !important; }
:is(.e-atomic-element, .e-con).ldk-ag-preset-1-2 > .ldk-ag-item-2,
:is(.e-atomic-element, .e-con).ldk-ag-preset-1-2 > :has(.ldk-ag-item-2) { grid-column: 2 !important; grid-row: 1 !important; }
:is(.e-atomic-element, .e-con).ldk-ag-preset-1-2 > .ldk-ag-item-3,
:is(.e-atomic-element, .e-con).ldk-ag-preset-1-2 > :has(.ldk-ag-item-3) { grid-column: 2 !important; grid-row: 2 !important; }

/* Simple 2×2. */
:is(.e-atomic-element, .e-con).ldk-ag-preset-2x2 {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    grid-template-rows: repeat(2, minmax(0, 1fr)) !important;
}
:is(.e-atomic-element, .e-con).ldk-ag-preset-2x2 > .ldk-ag-item-1,
:is(.e-atomic-element, .e-con).ldk-ag-preset-2x2 > :has(.ldk-ag-item-1) { grid-column: 1 !important; grid-row: 1 !important; }
:is(.e-atomic-element, .e-con).ldk-ag-preset-2x2 > .ldk-ag-item-2,
:is(.e-atomic-element, .e-con).ldk-ag-preset-2x2 > :has(.ldk-ag-item-2) { grid-column: 2 !important; grid-row: 1 !important; }
:is(.e-atomic-element, .e-con).ldk-ag-preset-2x2 > .ldk-ag-item-3,
:is(.e-atomic-element, .e-con).ldk-ag-preset-2x2 > :has(.ldk-ag-item-3) { grid-column: 1 !important; grid-row: 2 !important; }
:is(.e-atomic-element, .e-con).ldk-ag-preset-2x2 > .ldk-ag-item-4,
:is(.e-atomic-element, .e-con).ldk-ag-preset-2x2 > :has(.ldk-ag-item-4) { grid-column: 2 !important; grid-row: 2 !important; }

/* Hero + three stacked items. */
:is(.e-atomic-element, .e-con).ldk-ag-preset-hero-left {
    grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr) !important;
    grid-template-rows: repeat(3, minmax(0, 1fr)) !important;
}
:is(.e-atomic-element, .e-con).ldk-ag-preset-hero-left > .ldk-ag-item-1,
:is(.e-atomic-element, .e-con).ldk-ag-preset-hero-left > :has(.ldk-ag-item-1) { grid-column: 1 !important; grid-row: 1 / span 3 !important; }
:is(.e-atomic-element, .e-con).ldk-ag-preset-hero-left > .ldk-ag-item-2,
:is(.e-atomic-element, .e-con).ldk-ag-preset-hero-left > :has(.ldk-ag-item-2) { grid-column: 2 !important; grid-row: 1 !important; }
:is(.e-atomic-element, .e-con).ldk-ag-preset-hero-left > .ldk-ag-item-3,
:is(.e-atomic-element, .e-con).ldk-ag-preset-hero-left > :has(.ldk-ag-item-3) { grid-column: 2 !important; grid-row: 2 !important; }
:is(.e-atomic-element, .e-con).ldk-ag-preset-hero-left > .ldk-ag-item-4,
:is(.e-atomic-element, .e-con).ldk-ag-preset-hero-left > :has(.ldk-ag-item-4) { grid-column: 2 !important; grid-row: 3 !important; }

:is(.e-atomic-element, .e-con).ldk-ag-preset-hero-right {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1.5fr) !important;
    grid-template-rows: repeat(3, minmax(0, 1fr)) !important;
}
:is(.e-atomic-element, .e-con).ldk-ag-preset-hero-right > .ldk-ag-item-1,
:is(.e-atomic-element, .e-con).ldk-ag-preset-hero-right > :has(.ldk-ag-item-1) { grid-column: 1 !important; grid-row: 1 !important; }
:is(.e-atomic-element, .e-con).ldk-ag-preset-hero-right > .ldk-ag-item-2,
:is(.e-atomic-element, .e-con).ldk-ag-preset-hero-right > :has(.ldk-ag-item-2) { grid-column: 1 !important; grid-row: 2 !important; }
:is(.e-atomic-element, .e-con).ldk-ag-preset-hero-right > .ldk-ag-item-3,
:is(.e-atomic-element, .e-con).ldk-ag-preset-hero-right > :has(.ldk-ag-item-3) { grid-column: 1 !important; grid-row: 3 !important; }
:is(.e-atomic-element, .e-con).ldk-ag-preset-hero-right > .ldk-ag-item-4,
:is(.e-atomic-element, .e-con).ldk-ag-preset-hero-right > :has(.ldk-ag-item-4) { grid-column: 2 !important; grid-row: 1 / span 3 !important; }

/* Four-item bento. */
:is(.e-atomic-element, .e-con).ldk-ag-preset-bento {
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    grid-template-rows: repeat(2, minmax(0, 1fr)) !important;
}
:is(.e-atomic-element, .e-con).ldk-ag-preset-bento > .ldk-ag-item-1,
:is(.e-atomic-element, .e-con).ldk-ag-preset-bento > :has(.ldk-ag-item-1) { grid-column: 1 / span 2 !important; grid-row: 1 !important; }
:is(.e-atomic-element, .e-con).ldk-ag-preset-bento > .ldk-ag-item-2,
:is(.e-atomic-element, .e-con).ldk-ag-preset-bento > :has(.ldk-ag-item-2) { grid-column: 3 !important; grid-row: 1 !important; }
:is(.e-atomic-element, .e-con).ldk-ag-preset-bento > .ldk-ag-item-3,
:is(.e-atomic-element, .e-con).ldk-ag-preset-bento > :has(.ldk-ag-item-3) { grid-column: 1 !important; grid-row: 2 !important; }
:is(.e-atomic-element, .e-con).ldk-ag-preset-bento > .ldk-ag-item-4,
:is(.e-atomic-element, .e-con).ldk-ag-preset-bento > :has(.ldk-ag-item-4) { grid-column: 2 / span 2 !important; grid-row: 2 !important; }

/* Three-item irregular mosaic. */
:is(.e-atomic-element, .e-con).ldk-ag-preset-irregular {
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    grid-template-rows: repeat(2, minmax(0, 1fr)) !important;
}
:is(.e-atomic-element, .e-con).ldk-ag-preset-irregular > .ldk-ag-item-1,
:is(.e-atomic-element, .e-con).ldk-ag-preset-irregular > :has(.ldk-ag-item-1) { grid-column: 1 / span 2 !important; grid-row: 1 / span 2 !important; }
:is(.e-atomic-element, .e-con).ldk-ag-preset-irregular > .ldk-ag-item-2,
:is(.e-atomic-element, .e-con).ldk-ag-preset-irregular > :has(.ldk-ag-item-2) { grid-column: 3 !important; grid-row: 1 !important; }
:is(.e-atomic-element, .e-con).ldk-ag-preset-irregular > .ldk-ag-item-3,
:is(.e-atomic-element, .e-con).ldk-ag-preset-irregular > :has(.ldk-ag-item-3) { grid-column: 3 !important; grid-row: 2 !important; }

/* Optional media fill. */
.ldk-ag-media-cover > [class*="ldk-ag-item-"],
.ldk-ag-media-cover > :has([class*="ldk-ag-item-"]) {
    overflow: hidden;
}

.ldk-ag-media-cover > a:has(> img) {
    display: block !important;
    width: 100% !important;
    height: 100% !important;
}

.ldk-ag-media-cover > img,
.ldk-ag-media-cover > a > img,
.ldk-ag-media-cover > .elementor-element:has(img[class*="ldk-ag-item-"]) img {
    display: block !important;
    width: 100% !important;
    height: 100% !important;
    object-fit: cover !important;
}

.ldk-ag-media-cover > .elementor-element:has(img[class*="ldk-ag-item-"]) {
    width: 100% !important;
    height: 100% !important;
}
