.reserve-booking-area .reserve-booking-link {
    display: flex;
    width: 100%;
    box-sizing: border-box;
    margin-top: 18px;
    padding: 15px;
    border-radius: 7px;
    text-align: center;
}

.reserve-booking-area .reserve-booking-note {
    font-size: 18px;
    line-height: 1.7;
}

.reserve-course-card .reserve-course-eyecatch {
    display: block;
    width: calc(100% + 36px);
    max-width: none;
    margin: -18px -18px 14px;
    aspect-ratio: 4 / 3;
    object-fit: cover;
    border-radius: 10px 10px 0 0;
    background: #eef2f6;
}

.reserve-form-grid {
    width: 100%;
    box-sizing: border-box;
}

.reserve-public-contents {
    margin: 0;
    padding: 0;
    list-style: none;
}

.reserve-public-contents > li {
    margin: 24px 0;
    background: #fff;
}

.reserve-public-contents .contents_box {
    padding: 26px;
    border-radius: 12px;
}


.reserve-public-contents .contents_box > div {
    line-height: 1.85;
}

.reserve-public-contents .contents_box.reserve-public-recommend {
    padding: 0;
}

.reserve-book-panel {
    scroll-margin-top: 20px;
}

.reserve-book-panel,
.reserve-book-panel label,
.reserve-book-panel legend,
.reserve-field-label,
.reserve-book-panel input,
.reserve-book-panel select,
.reserve-book-panel textarea,
.reserve-book-panel button {
    font-weight: 400;
}

.reserve-field-label {
    display: inline-flex;
    align-items: center;
    gap: 7px;
}

.reserve-required {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 18px;
    padding: 1px 6px;
    border-radius: 4px;
    background: #dc2626;
    color: #fff;
    font-size: 11px;
    font-style: normal;
    font-weight: 700;
    line-height: 1.4;
    white-space: nowrap;
}

.reserve-payment-methods {
    min-width: 0;
    margin: 0;
    padding: 0;
    border: 0;
}

.reserve-payment-methods legend {
    margin-bottom: 9px;
}

.reserve-payment-options {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
}

.reserve-book-panel .reserve-payment-option {
    display: block;
    margin: 0;
    cursor: pointer;
}

.reserve-book-panel .reserve-payment-option input[type="radio"] {
    position: absolute;
    width: 1px;
    height: 1px;
    margin: -1px;
    padding: 0;
    overflow: hidden;
    border: 0;
    clip: rect(0 0 0 0);
    clip-path: inset(50%);
    white-space: nowrap;
}

.reserve-payment-card {
    position: relative;
    display: flex;
    min-height: 74px;
    box-sizing: border-box;
    padding: 15px 44px 15px 16px;
    flex-direction: column;
    justify-content: center;
    gap: 4px;
    border: 1px solid #cbd5e1;
    border-radius: 10px;
    background: #fff;
    color: #334155;
    transition: border-color .2s, background-color .2s, box-shadow .2s;
}

.reserve-payment-card::after {
    content: "";
    position: absolute;
    top: 50%;
    right: 16px;
    width: 20px;
    height: 20px;
    box-sizing: border-box;
    transform: translateY(-50%);
    border: 2px solid #cbd5e1;
    border-radius: 50%;
    background: #fff;
}

.reserve-payment-card strong {
    font-size: 15px;
    font-weight: 600;
}

.reserve-payment-card small {
    color: #64748b;
    font-size: 12px;
    line-height: 1.5;
}

.reserve-payment-option:hover .reserve-payment-card {
    border-color: #93b4ef;
}

.reserve-payment-option input[type="radio"]:focus-visible + .reserve-payment-card {
    outline: 3px solid rgba(37, 99, 235, .22);
    outline-offset: 2px;
}

.reserve-payment-option input[type="radio"]:checked + .reserve-payment-card {
    border-color: #2563eb;
    background: #eff6ff;
    box-shadow: 0 0 0 1px #2563eb;
    color: #1d4ed8;
}

.reserve-payment-option input[type="radio"]:checked + .reserve-payment-card::after {
    border: 6px solid #2563eb;
}

.reserve-calendar {
    margin-top: 18px;
}

.reserve-calendar-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 15px;
}

.reserve-calendar-nav {
    display: flex;
    align-items: center;
    gap: 24px;
}

.reserve-calendar-nav strong {
    font-size: 25px;
    font-weight: 600;
}

.reserve-calendar-nav a,
.reserve-calendar-nav > span {
    color: #00a1df;
    text-decoration: none;
}

.reserve-calendar-nav .disabled {
    color: #cbd5e1;
}

.reserve-calendar-current {
    padding: 4px 10px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background: #fff;
    font-size: 12px;
    text-decoration: none;
}

.reserve-calendar-weekdays,
.reserve-calendar-grid {
    display: grid;
    grid-template-columns: repeat(7, minmax(0, 1fr));
}

.reserve-calendar-weekdays {
    border-top: 1px solid #d5dde5;
    border-bottom: 1px solid #d5dde5;
}

.reserve-calendar-weekdays span {
    padding: 9px 4px;
    font-weight: 600;
    text-align: center;
}

.reserve-calendar-weekdays .saturday {
    color: #168ad7;
}

.reserve-calendar-weekdays .sunday {
    color: #ef4444;
}

.reserve-calendar-cell {
    display: flex;
    min-height: 76px;
    box-sizing: border-box;
    padding: 10px 6px 8px;
    flex-direction: column;
    align-items: center;
    gap: 6px;
    border-right: 1px solid #dbe3ee;
    border-bottom: 1px solid #dbe3ee;
    background: #fff;
    text-decoration: none;
}

.reserve-calendar-cell:nth-child(7n + 1) {
    border-left: 1px solid #dbe3ee;
}

.reserve-calendar-cell strong {
    color: #00a1df;
    font-size: 27px;
    font-weight: 400;
    line-height: 1;
}

.reserve-calendar-cell.status-few strong {
    color: #eab308;
}

.reserve-calendar-cell.status-full strong,
.reserve-calendar-cell.status-closed strong {
    color: #c5cbd1;
}

.reserve-calendar-cell.status-closed {
    background: #f7f7f7;
    color: #c5cbd1;
}

a.reserve-calendar-cell:hover,
.reserve-calendar-cell.selected {
    position: relative;
    z-index: 1;
    background: #eff9ff;
    box-shadow: inset 0 0 0 2px #00a1df;
}

.reserve-calendar-legend {
    display: flex;
    justify-content: flex-end;
    gap: 18px;
    margin-top: 16px;
    font-size: 12px;
}

.reserve-calendar-legend span {
    display: inline-flex;
    align-items: center;
    gap: 4px;
}

.reserve-calendar-legend b {
    font-size: 19px;
    font-weight: 400;
}

.reserve-calendar-legend .open { color: #00a1df; }
.reserve-calendar-legend .few { color: #eab308; }
.reserve-calendar-legend .full,
.reserve-calendar-legend .closed { color: #c5cbd1; }

/* 予約条件の確認チェック */
.reserve-book-panel .reserve-agree {
    display: inline-flex !important;
    width: auto;
    margin: 18px 0;
    flex-direction: row !important;
    align-items: center;
    gap: .4em;
    font-weight: 400;
    line-height: 1.5;
}

.reserve-book-panel .reserve-agree input[type="checkbox"] {
    appearance: auto;
    -webkit-appearance: checkbox;
    display: inline-block;
    flex: 0 0 1em;
    width: 1em !important;
    height: 1em !important;
    min-width: 1em !important;
    min-height: 1em !important;
    margin: 0;
    padding: 0;
    border: 0;
    border-radius: 0;
}

@media (max-width: 760px) {
    .reserve-public-contents .contents_box {
        padding: 22px 14px;
    }

    .reserve-public-contents .contents_box.reserve-public-recommend {
        padding: 0;
    }

    .reserve-payment-options {
        grid-template-columns: 1fr;
    }

    .reserve-calendar-nav {
        gap: 10px;
    }

    .reserve-calendar-nav strong {
        font-size: 20px;
    }

    .reserve-calendar-nav a span,
    .reserve-calendar-nav > span span {
        display: none;
    }

    .reserve-calendar-cell {
        min-height: 64px;
        padding: 8px 2px 6px;
    }

    .reserve-calendar-cell strong {
        font-size: 23px;
    }

    .reserve-calendar-legend {
        display: grid;
        grid-template-columns: repeat(2, max-content);
        justify-content: end;
        gap: 5px 14px;
    }
}
