.smart-grid {
    display: grid;
    /* Constraint for Default/Container mode */
    max-width: var(--container-width, 1200px);
    margin-left: auto;
    margin-right: auto;

    /* Default is 1-1 */
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
}

.sg-full-width {
    width: 100vw !important;
    position: relative !important;
    left: 50% !important;
    right: 50% !important;
    margin-left: -50vw !important;
    margin-right: -50vw !important;
    max-width: 100vw !important;
    box-sizing: border-box;
    padding-left: 2rem;
    /* Safe padding */
    padding-right: 2rem;
}

/* Alignments */
.sg-align-start {
    align-items: start;
}

.sg-align-center {
    align-items: center;
}

.sg-align-end {
    align-items: end;
}

.sg-align-stretch {
    align-items: stretch;
}

/* Templates with minmax to avoid column squeezing/overflow */
.sg-cols-1-1 {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
}

.sg-cols-1-1-1 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.sg-cols-1-1-1-1 {
    grid-template-columns: repeat(4, minmax(0, 1fr));
}

.sg-cols-2-1 {
    grid-template-columns: minmax(0, 2fr) minmax(0, 1fr);
}

.sg-cols-1-2 {
    grid-template-columns: minmax(0, 1fr) minmax(0, 2fr);
}

.sg-cols-3-1 {
    grid-template-columns: minmax(0, 3fr) minmax(0, 1fr);
}

.sg-cols-1-3 {
    grid-template-columns: minmax(0, 1fr) minmax(0, 3fr);
}

.sg-cols-1-2-1 {
    grid-template-columns: minmax(0, 1fr) minmax(0, 2fr) minmax(0, 1fr);
}

/* Responsive stack on tablets and mobile devices */
@media (max-width: 1024px) {
    .sg-stack-mobile {
        grid-template-columns: minmax(0, 1fr) !important;
        gap: 2rem !important;
    }
}
