/* ユーティリティクラス */

/* コンテナ */
.container {
    width: 100%;
    max-width: var(--container-max-width);
    margin: 0 auto;
    padding: 0 20px;
}

/* マージン */
.m-0 {
    margin: 0 !important;
}

.m-1 {
    margin: var(--spacing-xs) !important;
}

.m-2 {
    margin: var(--spacing-s) !important;
}

.m-3 {
    margin: var(--spacing-m) !important;
}

.m-4 {
    margin: var(--spacing-l) !important;
}

.m-5 {
    margin: var(--spacing-xl) !important;
}

.mt-0 {
    margin-top: 0 !important;
}

.mt-1 {
    margin-top: var(--spacing-xs) !important;
}

.mt-2 {
    margin-top: var(--spacing-s) !important;
}

.mt-3 {
    margin-top: var(--spacing-m) !important;
}

.mt-4 {
    margin-top: var(--spacing-l) !important;
}

.mt-5 {
    margin-top: var(--spacing-xl) !important;
}

.mb-0 {
    margin-bottom: 0 !important;
}

.mb-1 {
    margin-bottom: var(--spacing-xs) !important;
}

.mb-2 {
    margin-bottom: var(--spacing-s) !important;
}

.mb-3 {
    margin-bottom: var(--spacing-m) !important;
}

.mb-4 {
    margin-bottom: var(--spacing-l) !important;
}

.mb-5 {
    margin-bottom: var(--spacing-xl) !important;
}

/* パディング */
.p-0 {
    padding: 0 !important;
}

.p-1 {
    padding: var(--spacing-xs) !important;
}

.p-2 {
    padding: var(--spacing-s) !important;
}

.p-3 {
    padding: var(--spacing-m) !important;
}

.p-4 {
    padding: var(--spacing-l) !important;
}

.p-5 {
    padding: var(--spacing-xl) !important;
}

.pt-0 {
    padding-top: 0 !important;
}

.pt-1 {
    padding-top: var(--spacing-xs) !important;
}

.pt-2 {
    padding-top: var(--spacing-s) !important;
}

.pt-3 {
    padding-top: var(--spacing-m) !important;
}

.pt-4 {
    padding-top: var(--spacing-l) !important;
}

.pt-5 {
    padding-top: var(--spacing-xl) !important;
}

.pb-0 {
    padding-bottom: 0 !important;
}

.pb-1 {
    padding-bottom: var(--spacing-xs) !important;
}

.pb-2 {
    padding-bottom: var(--spacing-s) !important;
}

.pb-3 {
    padding-bottom: var(--spacing-m) !important;
}

.pb-4 {
    padding-bottom: var(--spacing-l) !important;
}

.pb-5 {
    padding-bottom: var(--spacing-xl) !important;
}

/* フレックスボックス */
.d-flex {
    display: flex;
}

.flex-column {
    flex-direction: column;
}

.flex-row {
    flex-direction: row;
}

.flex-wrap {
    flex-wrap: wrap;
}

.flex-nowrap {
    flex-wrap: nowrap;
}

.justify-content-start {
    justify-content: flex-start;
}

.justify-content-end {
    justify-content: flex-end;
}

.justify-content-center {
    justify-content: center;
}

.justify-content-between {
    justify-content: space-between;
}

.justify-content-around {
    justify-content: space-around;
}

.align-items-start {
    align-items: flex-start;
}

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

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

.align-items-baseline {
    align-items: baseline;
}

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

/* 表示・非表示 */
.d-none {
    display: none !important;
}

.d-block {
    display: block !important;
}

.invisible {
    visibility: hidden !important;
}

/* 背景色 */
.bg-primary {
    background-color: var(--primary-color) !important;
}

.bg-secondary {
    background-color: var(--secondary-color) !important;
}

.bg-accent {
    background-color: var(--accent-color) !important;
}

.bg-light {
    background-color: var(--background-light) !important;
}

.bg-dark {
    background-color: var(--background-dark) !important;
}

/* ボーダー */
.border {
    border: 1px solid var(--border-color) !important;
}

.border-top {
    border-top: 1px solid var(--border-color) !important;
}

.border-right {
    border-right: 1px solid var(--border-color) !important;
}

.border-bottom {
    border-bottom: 1px solid var(--border-color) !important;
}

.border-left {
    border-left: 1px solid var(--border-color) !important;
}

/* 角丸 */
.rounded {
    border-radius: var(--border-radius-m) !important;
}

.rounded-sm {
    border-radius: var(--border-radius-s) !important;
}

.rounded-lg {
    border-radius: var(--border-radius-l) !important;
}

.rounded-circle {
    border-radius: 50% !important;
}

/* シャドウ */
.shadow-sm {
    box-shadow: var(--shadow-s) !important;
}

.shadow {
    box-shadow: var(--shadow-m) !important;
}

.shadow-lg {
    box-shadow: var(--shadow-l) !important;
}

/* テキスト位置 */
.text-left {
    text-align: left !important;
}

.text-center {
    text-align: center !important;
}

.text-right {
    text-align: right !important;
}