/* sidebarがあるlayout */
.content-area {
    display: flex;
    flex-direction: column;
    gap: var(--space--6);
}
.sidebar {
    background: repeating-linear-gradient(
        135deg,
        #eee,
        #eee 3px,
        #fff 3px,
        #fff 6px
    );
    padding: 1em;
}

/* 大きい画面sizeでのlayout */
@media (min-width: 768px) {
    .content-area {
        flex-direction: row;
    }
    .main-area {
        flex: 1;
    }
    .sidebar {
        width: 300px;
    }
}

/* card共通 */
.card {
    border-radius: var(--radius--md);
    box-shadow: var(--shadow--lg);
    overflow: hidden;
}
.card__content {
    padding: var(--space--6);
}
.card__content > h3 {
    font-size: var(--font-size--md);
}
.card__content > p {
    font-size: var(--font-size--sm);
    margin-top: var(--space--2);
}
.card__image {
    aspect-ratio: 16 / 9;
    align-self: stretch;
}
.card__image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* mediaqueryでlayoutを切り替えるcard */
.card--mediaquery {
    display: flex;
    flex-direction: column;
}

/* 大きい画面size */
@media (min-width: 768px) {
    .card--mediaquery {
        flex-direction: row;
    }
    .card--mediaquery .card__image {
        flex-basis: 40%;
    }
    .card--mediaquery .card__content {
        flex-basis: 60%;
        align-self: center;
    }
}

/* Flexbox layout 自動切り替え */
.switch-columns {
    --side-width: 240px;
    --main-width: 50%;
    display: flex;
    flex-wrap: wrap;
}
/* 固定幅で表示するside要素 */
.switch-columns__side {
    flex-basis: var(--side-width);
    flex-grow: 1;
}
/*  もう片方のmain area */
.switch-columns__main {
    flex-basis: min(100%, var(--main-width));
    flex-grow: 999999;
}

/* card style */
.card.switch-columns {
    --side-width: 40%;
    --main-width: 20em;
}

/* Gridの自動段組み */
.grid-auto-fill {
    display: grid;
    gap: var(--space--4);

    /* 自動段組み */
    --column-size: 240px;
    grid-template-columns: repeat(
        auto-fill,
        minmax(min(100%, var(--column-size)), 1fr)
    );
}

/* Gridの自動段組み(auto-fit) */
.grid-auto-fit {
    display: grid;
    gap: var(--space--4);

    /* 自動段組み */
    --column-size: 240px;
    grid-template-columns: repeat(
        auto-fit,
        minmax(min(100%, var(--column-size)), 1fr)
    );
}

/* switcher */
.switcher {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
    --threshold: 30rem;
}

.switcher > * {
    flex-grow: 1;
    flex-basis: calc((var(--threshold) - 100%) * 9999);
}