.card-img {
    display: flex; /* Flexコンテナとして設定 */
    align-items: center; /* 縦方向に中央揃え */
}

#card-select-img-coupon {
    flex: 1; /* img要素が可変幅となるように設定 */
    max-width: 50%; /* img要素の最大幅を50%に制限 */
    height: auto; /* 高さを自動調整 */
    padding: 10px;
}

.label-container {
    flex: 1; /* label要素が可変幅となるように設定 */
}

/* globalにplaceholderの色を薄くする */
input.form-control::placeholder  {
    color: rgba(0, 0, 0, 0.2);
}
/*フラッシュメッセージ*/
.alert-message {
    position: relative;
    padding: 0.75rem 1.25rem;
    margin-bottom: 1rem;
    border: 1px solid transparent;
    border-radius: 0.25rem;
    opacity: 1;
    transition: opacity 0.3s ease-in-out;
}
.alert-success {
    position: fixed;
    top: 2.5%;
    left: 0%;
    width: 100%;
    color: #1d643b;
    background-color: #d7f3e3;
    border-color: #c7eed8;
    transform: translateY(-50%);
    text-align: center;
    z-index: 99;
    font-weight: bold;
}
.alert-error {
    position: fixed;
    /* position: sticky; */
    top: 2.5%;
    left: 0%;
    width: 100%;
    color: #f00;
    background-color: #f3d7e4;
    border-color: #eec7cf;
    transform: translateY(-50%);
    text-align: center;
    z-index: 99;
    font-weight: bold;
}
/* 入力項目の表示アニメーション */
.fade-in {
animation: fade-in 0.3s ease-in;
}

.fade-out {
animation: fade-out 0.3s ease-out;
}

@keyframes fade-in {
from {
    opacity: 0;
}
to {
    opacity: 1;
}
}

@keyframes fade-out {
from {
    opacity: 1;
}
to {
    opacity: 0;
}
}
/* ご利用方法 */
.step {
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 50px;
}

.step-content {
    display: flex;
    align-items: center;
    margin-right: 10px;
}

.step-image {
    width: 50%;
}

/* そらぷちキッズキャンプ画像: PCでは株主優待カードと高さを揃えた比率、
   スマホでは高さ基準だと小さく見えるため幅を大きめに調整 */
.camp-kihu-img {
    width: 41%;
}

@media (max-width: 767.98px) {
    .camp-kihu-img {
        width: 65%;
    }
}

.gift-label {
display: flex;
flex-wrap: wrap;                   /* 金額は幅が足りない場合折り返す */
align-items: center;
gap: 10px;
}

.gift-label .gift-text {
font-weight: 500;
font-size: clamp(12px, 5vw, 24px); /* 画面幅でフォント自動調整 */
white-space: nowrap;               /* 改行させない */
/*overflow: hidden;*/
/*text-overflow: ellipsis;          /* はみ出したら省略記号 */
max-width: 65vw;                   /* 長すぎる場合に制限 */
}

.gift-label .gift-text-amount {
display: inline-block;
padding: 2px 10px;
border-radius: 12px;
background-color: #f0f0f0;
font-weight: 700;
font-size: clamp(11px, 3.5vw, 16px);
color: inherit;                    /* タイトルラベルと同じ色にする */
white-space: nowrap;               /* バッジ内では改行させない。幅が足りなければラベル全体が次の行へ折り返す */
max-width: none;
}

.gift-label input[type="radio"] {
width: 20px;
height: 20px;
flex-shrink: 0; /* サイズを縮めない */
}

.no-wrap-text {
    /*overflow: hidden;*/
    /*text-overflow: ellipsis;*/
    font-size: clamp(8px, 2vw, 16px); /* 画面幅に応じて文字サイズ自動調整 */
    word-break: keep-all; /* 単語内改行を禁止 */
    
    /* 日本語の禁則処理を無効化（対応ブラウザ限定） */
    -webkit-line-break: after-white-space;
    line-break: strict; /* 一部の句読点改行を防ぐ（対応ブラウザ） */
    text-wrap: nowrap; /* 新しいプロパティ（対応ブラウザ） */
}

/* 入力エラーの強調表示 */
.field-error-highlight {
    border: 2px solid #e02020 !important;
    box-shadow: 0 0 6px rgba(224, 32, 32, 0.4) !important;
    background-color: #fff6f6 !important;
}

.field-error-tooltip {
    position: relative;
    display: none;
    margin-top: 6px;
    padding: 8px 10px 8px 30px;
    background-color: #fff0f0;
    border: 1px solid #e02020;
    border-radius: 6px;
    color: #e02020;
    font-weight: bold;
    font-size: 13px;
    line-height: 1.4;
}

.field-error-tooltip::before {
    content: "!";
    position: absolute;
    left: 8px;
    top: 50%;
    transform: translateY(-50%);
    width: 16px;
    height: 16px;
    border-radius: 50%;
    background-color: #e02020;
    color: #fff;
    font-size: 12px;
    line-height: 16px;
    text-align: center;
}

.field-error-tooltip::after {
    content: "";
    position: absolute;
    top: -6px;
    left: 20px;
    border-width: 0 6px 6px 6px;
    border-style: solid;
    border-color: transparent transparent #e02020 transparent;
}

.confirmation-text {

    font-weight: 500;
    font-size: clamp(12px, 3vw, 20px); /* 画面幅に応じて文字サイズ自動調整 */
    word-break: keep-all; /* 単語内改行を禁止 */
    margin-bottom: 10px;
    margin-top: 10px;

    /* 日本語の禁則処理を無効化（対応ブラウザ限定） */
    -webkit-line-break: after-white-space;
    line-break: strict; /* 一部の句読点改行を防ぐ（対応ブラウザ） */
    text-wrap: nowrap; /* 新しいプロパティ（対応ブラウザ） */
}