/* アクセシビリティ対応：
   「動きを減らす」設定時は全てのCSSアニメーション/トランジションを即時化
   ※ 0 にすると end イベントが発火しない場合があるため 1ms を指定 */
@media (prefers-reduced-motion: reduce) {
    *,
    ::before,
    ::after {
        animation-delay: -1ms !important;
        animation-duration: 1ms !important;
        animation-iteration-count: 1 !important;
        transition-delay: 0ms !important;
        transition-duration: 1ms !important;
    }
}

body {
    padding-right: 0 !important; /* sweetalert2[fixScrollContainer]による右余白を破棄 */
}

.text-pre-wrap {
    white-space: pre-wrap;
}

.h-0 {
    height: 0 !important;
}

.min-h-0 {
    min-height: 0 !important;
}

.w-0 {
    width: 0 !important;
}

.w-fit {
    width: fit-content;
}

.col-rem-xs {
    width: 5rem;
}

.col-rem-sm {
    width: 6rem;
}

.col-rem-md {
    width: 9rem;
}

.col-rem-lg {
    width: 12rem;
}

.col-rem-xl {
    width: 15rem;
}

.col-rem-13 {
    width: 13rem;
}

.col-rem-xxl {
    width: 18rem;
}

.col-rem-3xl {
    width: 34rem; /* 大文字40文字対応: 40×12px+padding ≈ 496px */
}

.col-rem-4xl {
    width: 51rem; /* 大文字60文字対応: 60×12px+padding ≈ 736px */
}

/*----------------------------------------------*/
/* 以下は、定義が増えてきたら専用ファイルを作る */
/*----------------------------------------------*/
a:focus-visible {
    outline-color: var(--bs-focus-ring-color);
}

.btn {
    align-self: baseline;
}

.custom-btn {
    margin-top: 26px;
}

/* バリデーション表示位置を調整 */
.invalid-feedback {
    text-wrap: balance;
    width: calc(100% + 1rem);
    font-size: smaller;
    margin-top: .1rem;
}

.form-control.is-invalid {
    padding-right: 0.5rem;
    background-position: right top;
    background-size: initial;
}

/* ラジオ・チェックボックス群の外枠（custom-radio/custom-check）: 内部項目へのフォーカス中も外枠にリングを表示する */
.form-control:has(> label .form-check-input):focus-within {
    border-color: #86b7fe;
    box-shadow: 0 0 0 .2rem rgba(var(--bs-primary-rgb), .25);
}

.form-control.is-invalid:has(> label .form-check-input):focus-within {
    border-color: var(--bs-form-invalid-border-color);
    box-shadow: 0 0 0 .2rem rgba(var(--bs-danger-rgb), .25);
}

.nice-select.form-select.is-invalid,
.nice-select.form-select.is-invalid:not([multiple]):not([size]) {
    padding-right: 1.5rem;
    background-position: right top;
    background-size: initial;
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");
}

    .nice-select.form-select.is-invalid,
    .nice-select.form-select.is-invalid:focus,
    .nice-select.form-select.is-invalid.open {
        border-color: var(--bs-danger);
    }

        .nice-select.form-select.is-invalid:focus,
        .nice-select.form-select.is-invalid.open {
            box-shadow: 0 0 0 .2rem rgba(var(--bs-danger-rgb), .25);
        }
