@charset "utf-8";

* {
    box-sizing: border-box;
}

body {
    margin: 0;
    color: #1f2933;
    background: #f3f5f7;
    font-family: "Pretendard", "Noto Sans KR", "Malgun Gothic", Arial, sans-serif;
    font-size: 15px;
    line-height: 1.5;
}

a {
    color: inherit;
    text-decoration: none;
}

button,
input,
select,
textarea {
    font: inherit;
}

caption {
    position: absolute;
    width: 1px;
    height: 1px;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
}

#adm_mode {
    min-height: 100vh;
}

.adm_head {
    position: sticky;
    top: 0;
    z-index: 20;
    background: #ffffff;
    border-bottom: 1px solid #d9dee5;
}

.adm_head_inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 24px;
    width: min(1280px, calc(100% - 40px));
    min-height: 72px;
    margin: 0 auto;
}

.logo {
    margin: 0;
    font-size: 22px;
    font-weight: 800;
    color: #1b4332;
    white-space: nowrap;
}

.menu ul {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 0;
    margin: 0;
    list-style: none;
}

.menu a {
    display: inline-flex;
    align-items: center;
    min-height: 40px;
    padding: 0 14px;
    border-radius: 6px;
    color: #52616f;
    font-weight: 700;
}

.menu a:hover,
.menu a.is-active {
    color: #ffffff;
    background: #1b4332;
}

.adm_container {
    width: min(1280px, calc(100% - 40px));
    margin: 0 auto;
    padding: 38px 0 70px;
}

.adm_page_head {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 20px;
    margin-bottom: 24px;
}

.adm_eyebrow {
    margin: 0 0 5px;
    color: #2d6a4f;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
}

.adm_page_head h2 {
    margin: 0;
    color: #111827;
    font-size: 30px;
    line-height: 1.2;
}

.adm_desc {
    margin: 8px 0 0;
    color: #667085;
}

.adm_btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 86px;
    min-height: 40px;
    padding: 0 16px;
    border: 1px solid #cfd6df;
    border-radius: 6px;
    color: #25313d;
    background: #ffffff;
    font-weight: 800;
    white-space: nowrap;
    cursor: pointer;
}

.adm_btn.primary {
    color: #ffffff;
    border-color: #1b4332;
    background: #1b4332;
}

.adm_btn.dark {
    color: #ffffff;
    border-color: #25313d;
    background: #25313d;
}

.adm_btn.danger {
    color: #ffffff;
    border-color: #d92d20;
    background: #d92d20;
}

.adm_btn.line {
    color: #25313d;
    background: #ffffff;
}

.adm_btn.xs {
    min-width: 64px;
    min-height: 32px;
    padding: 0 10px;
    font-size: 13px;
}

.adm_btn.is-disabled {
    color: #98a2b3;
    border-color: #d9dee5;
    background: #f2f4f7;
    cursor: not-allowed;
}

.adm_search_box,
.adm_panel,
.adm_form_panel {
    overflow: hidden;
    border: 1px solid #d9dee5;
    border-radius: 8px;
    background: #ffffff;
    box-shadow: 0 10px 24px rgba(17, 24, 39, 0.04);
}

.adm_search_box {
    padding: 20px;
    margin-bottom: 20px;
}

.adm_search_grid {
    display: grid;
    grid-template-columns: 180px 180px 1fr;
    gap: 14px;
}

.adm_search_grid label,
.adm_field {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.adm_search_grid span,
.adm_field > span {
    color: #374151;
    font-size: 14px;
    font-weight: 800;
}

.adm_field em {
    color: #d92d20;
    font-style: normal;
}

.adm_search_grid input,
.adm_search_grid select,
.adm_field input,
.adm_field select,
.adm_field textarea,
.adm_time_row input,
.adm_time_row select,
.adm_extra_fee_row input,
.adm_extra_fee_row select {
    width: 100%;
    min-height: 42px;
    padding: 9px 12px;
    border: 1px solid #cfd6df;
    border-radius: 6px;
    color: #1f2933;
    background: #ffffff;
}

.adm_field input.is-invalid,
.adm_field select.is-invalid,
.adm_field textarea.is-invalid,
.adm_time_row input.is-invalid,
.adm_time_row select.is-invalid,
.adm_extra_fee_row input.is-invalid,
.adm_extra_fee_row select.is-invalid {
    border-color: #d92d20;
    box-shadow: 0 0 0 3px rgba(217, 45, 32, 0.12);
}

.adm_search_grid select,
.adm_field select,
.adm_time_row select,
.adm_extra_fee_row select {
    padding-right: 40px;
    background-image: linear-gradient(45deg, transparent 50%, #667085 50%), linear-gradient(135deg, #667085 50%, transparent 50%);
    background-position: calc(100% - 18px) 50%, calc(100% - 13px) 50%;
    background-size: 5px 5px, 5px 5px;
    background-repeat: no-repeat;
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
}

.adm_search_grid select::-ms-expand,
.adm_field select::-ms-expand,
.adm_time_row select::-ms-expand,
.adm_extra_fee_row select::-ms-expand {
    display: none;
}

.adm_field textarea {
    min-height: 130px;
    resize: vertical;
}

.adm_image_preview {
    display: grid;
    gap: 8px;
}

.adm_image_preview img {
    display: block;
    width: 180px;
    max-width: 100%;
    height: auto;
    border: 1px solid #d9dee5;
    border-radius: 6px;
    background: #f8fafc;
}

.adm_image_preview label {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    color: #344054;
    font-size: 14px;
    font-weight: 800;
}

.adm_image_preview input {
    width: 18px;
    height: 18px;
    min-height: 0;
    margin: 0;
    padding: 0;
    accent-color: #1b7fff;
}

.adm_field small {
    color: #667085;
    font-size: 13px;
}

.adm_image_list {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
    gap: 12px;
}

.adm_image_list:empty {
    display: none;
}

.adm_image_status {
    margin: 0;
    color: #1b7fff;
    font-size: 13px;
    font-weight: 700;
}

.adm_image_status:empty {
    display: none;
}

.adm_image_item {
    display: grid;
    align-content: start;
    gap: 8px;
    padding: 10px;
    border: 1px solid #d9dee5;
    border-radius: 8px;
    background: #fff;
}

.adm_image_item img {
    display: block;
    width: 100%;
    aspect-ratio: 4 / 3;
    object-fit: cover;
    border-radius: 5px;
    background: #f8fafc;
}

.adm_image_item label,
.adm_image_item button {
    justify-self: start;
}

.adm_image_order_buttons {
    display: flex;
    flex-wrap: wrap;
    gap: 5px;
}

.adm_image_item label {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 13px;
    font-weight: 700;
}

.adm_image_item label input {
    width: 18px;
    height: 18px;
    min-height: 0;
    margin: 0;
}

.adm_search_actions,
.adm_form_actions {
    display: flex;
    justify-content: flex-end;
    gap: 8px;
    margin-top: 16px;
}

.adm_form_validate_message {
    margin-top: 14px;
}

.adm_form_validate_message:empty {
    display: none;
}

.adm_form_validate_message.is-error {
    padding: 14px 16px;
    border: 1px solid #fecdca;
    border-radius: 8px;
    background: #fffbfa;
    color: #b42318;
    font-weight: 800;
}

.adm_form_validate_message ul {
    margin: 0;
    padding-left: 18px;
}

.adm_form_validate_message li + li {
    margin-top: 6px;
}

.adm_delete_form {
    display: flex;
    justify-content: flex-end;
    margin-top: 12px;
}

.adm_panel_head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    padding: 18px 20px;
    border-bottom: 1px solid #e5e9ef;
}

.adm_panel_head h3,
.adm_form_title h3 {
    order: 1;
    margin: 0;
    color: #111827;
    font-size: 18px;
}

.adm_panel_head span {
    order: 2;
    color: #667085;
    font-size: 14px;
    font-weight: 700;
}

.adm_table_wrap {
    overflow-x: auto;
    background: #ffffff;
}

.adm_table {
    width: 100%;
    min-width: 1320px;
    border-collapse: collapse;
    table-layout: fixed;
}

.adm_table th,
.adm_table td {
    padding: 16px 10px;
    border-bottom: 1px solid #edf0f3;
    text-align: center;
    vertical-align: middle;
    word-break: keep-all;
    overflow-wrap: normal;
}

.adm_table th {
    color: #344054;
    background: #f8fafc;
    font-size: 14px;
    font-weight: 800;
}

.adm_table td {
    color: #4b5563;
}

.adm_table th:nth-child(1),
.adm_table td:nth-child(1) {
    width: 84px;
}

.adm_table th:nth-child(2),
.adm_table td:nth-child(2) {
    width: 78px;
}

.adm_table th:nth-child(3),
.adm_table td:nth-child(3) {
    width: 72px;
}

.adm_table th:nth-child(4),
.adm_table td:nth-child(4) {
    width: 150px;
}

.adm_table th:nth-child(5),
.adm_table td:nth-child(5) {
    width: 130px;
}

.adm_table th:nth-child(6),
.adm_table td:nth-child(6) {
    width: 120px;
}

.adm_table th:nth-child(7),
.adm_table td:nth-child(7) {
    width: 240px;
}

.adm_table th:nth-child(8),
.adm_table td:nth-child(8) {
    width: 130px;
}

.adm_table th:nth-child(9),
.adm_table td:nth-child(9) {
    width: 220px;
}

.adm_table th:nth-child(10),
.adm_table td:nth-child(10) {
    width: 118px;
}

.adm_table th:nth-child(11),
.adm_table td:nth-child(11) {
    width: 132px;
}

.adm_table .subject {
    color: #111827;
    font-weight: 800;
    text-align: left;
}

.adm_table .time_slot_cell {
    text-align: left;
}

.program_sort_cell {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    user-select: none;
    -webkit-user-select: none;
}

.program_drag_handle {
    width: 24px;
    height: 24px;
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 3px;
    padding: 0;
    border: 1px solid #cfd6df;
    border-radius: 4px;
    background: #ffffff;
    cursor: grab;
    user-select: none;
    -webkit-user-select: none;
}

.program_drag_handle:active {
    cursor: grabbing;
}

.program_drag_handle span {
    width: 12px;
    height: 2px;
    background: #6b7280;
    border-radius: 2px;
    pointer-events: none;
}

.adm_table tr.is-dragging {
    opacity: 0.5;
}

.program-is-sorting,
.program-is-sorting * {
    user-select: none !important;
    -webkit-user-select: none !important;
}

.program_sort_status {
    order: 3;
    margin-left: auto;
    color: #667085;
    font-size: 13px;
    font-weight: 700;
}

.program_sort_status.is-saving {
    color: #374151;
}

.program_sort_status.is-success {
    color: #0f766e;
}

.program_sort_status.is-error {
    color: #b91c1c;
}

.program_sort_status.is-muted {
    color: #9ca3af;
}

.adm_time_slot_list {
    display: grid;
    gap: 6px;
    margin: 0;
    padding: 0;
    list-style: none;
}

.adm_time_slot_list li {
    display: grid;
    grid-template-columns: minmax(58px, 0.8fr) minmax(88px, 1fr) auto;
    align-items: center;
    gap: 8px;
    min-height: 30px;
    padding: 5px 8px;
    border: 1px solid #e5e9ef;
    border-radius: 6px;
    background: #f8fafc;
}

.adm_time_slot_list strong {
    color: #111827;
    font-size: 13px;
    font-weight: 900;
}

.adm_time_slot_list span {
    color: #52616f;
    font-size: 12px;
    font-weight: 800;
    white-space: nowrap;
}

.adm_time_slot_list em {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 58px;
    min-height: 22px;
    padding: 0 7px;
    border-radius: 999px;
    font-size: 12px;
    font-style: normal;
    font-weight: 900;
    white-space: nowrap;
}

.adm_time_slot_list em.is-open {
    color: #116149;
    background: #dff6ec;
}

.adm_time_slot_list em.is-closed {
    color: #b42318;
    background: #fee4e2;
}

.adm_empty_text {
    color: #98a2b3;
    font-weight: 800;
}

.adm_badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 48px;
    min-height: 26px;
    padding: 0 9px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
}

.adm_badge.show {
    color: #116149;
    background: #dff6ec;
}

.adm_badge.hide {
    color: #475467;
    background: #eef2f6;
}

.adm_badge.rsv_접수,
.adm_badge.rsv_received {
    color: #175cd3;
    background: #dbeafe;
}

.adm_badge.rsv_확정,
.adm_badge.rsv_confirmed {
    color: #116149;
    background: #dff6ec;
}

.adm_badge.rsv_완료,
.adm_badge.rsv_completed {
    color: #475467;
    background: #eef2f6;
}

.adm_badge.rsv_취소,
.adm_badge.rsv_cancelled {
    color: #b42318;
    background: #fee4e2;
}

.adm_badge.pay_deposit_wait {
    color: #b54708;
    background: #fef0c7;
}

.adm_badge.pay_paid {
    color: #067647;
    background: #dcfae6;
}

.adm_badge.pay_refund_wait {
    color: #7a2e0e;
    background: #ffead5;
}

.adm_badge.pay_refunded {
    color: #344054;
    background: #f2f4f7;
}

.adm_badge.method_regular {
    color: #5925dc;
    background: #eee8ff;
}

.adm_badge.method_on_site {
    color: #026aa2;
    background: #e0f2fe;
}

.adm_table_actions {
    display: flex;
    justify-content: center;
    gap: 6px;
    white-space: nowrap;
}

.adm_form {
    display: flex;
    flex-direction: column;
    gap: 18px;
}

.adm_form_panel {
    padding: 22px;
}

.adm_tabs {
    display: grid;
    gap: 20px;
}

.adm_tab_nav {
    display: flex;
    gap: 8px;
    padding: 6px;
    border: 1px solid #d9dee5;
    border-radius: 8px;
    background: #ffffff;
    box-shadow: 0 10px 24px rgba(17, 24, 39, 0.04);
}

.adm_tab_nav button {
    flex: 0 0 auto;
    min-width: 150px;
    min-height: 42px;
    padding: 0 18px;
    border: 0;
    border-radius: 6px;
    color: #52616f;
    background: transparent;
    font-weight: 900;
    cursor: pointer;
}

.adm_tab_nav button.is-active {
    color: #ffffff;
    background: #1b4332;
}

.adm_tab_panel {
    display: none;
}

.adm_tab_panel.is-active {
    display: grid;
    gap: 20px;
}

.rsv_search_grid {
    grid-template-columns: 150px 180px 170px 170px minmax(260px, 1fr);
}

.adm_status_cards {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 14px;
    margin-bottom: 20px;
}

.adm_status_cards div {
    padding: 18px 20px;
    border: 1px solid #d9dee5;
    border-radius: 8px;
    background: #ffffff;
    box-shadow: 0 10px 24px rgba(17, 24, 39, 0.04);
}

.adm_status_cards span {
    display: block;
    color: #667085;
    font-size: 14px;
    font-weight: 800;
}

.adm_status_cards strong {
    display: block;
    margin-top: 5px;
    color: #111827;
    font-size: 28px;
    line-height: 1;
}

.adm_rsv_table {
    min-width: 1870px;
}

.adm_rsv_table th,
.adm_rsv_table td {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.adm_rsv_table .rsv_people_cell {
    text-align: left;
    white-space: normal;
}

.adm_rsv_table .rsv_people_cell strong {
    display: block;
    color: #111827;
    font-size: 15px;
    font-weight: 900;
}

.adm_rsv_table .rsv_people_cell ul {
    display: grid;
    gap: 3px;
    margin: 6px 0 0;
    padding: 0;
    list-style: none;
}

.adm_rsv_table .rsv_people_cell li {
    color: #3b7a57;
    font-size: 12px;
    font-weight: 800;
    line-height: 1.35;
}

.adm_rsv_table .rsv_people_cell li:before {
    content: "•";
    margin-right: 5px;
    color: #86b76f;
}

.adm_rsv_table th:nth-child(1),
.adm_rsv_table td:nth-child(1) {
    width: 170px;
    text-align: left;
}

.adm_rsv_table th:nth-child(2),
.adm_rsv_table td:nth-child(2) {
    width: 90px;
}

.adm_rsv_table th:nth-child(3),
.adm_rsv_table td:nth-child(3) {
    width: 150px;
}

.adm_rsv_table th:nth-child(4),
.adm_rsv_table td:nth-child(4) {
    width: 220px;
}

.adm_rsv_table th:nth-child(5),
.adm_rsv_table td:nth-child(5) {
    width: 116px;
}

.adm_rsv_table th:nth-child(6),
.adm_rsv_table td:nth-child(6) {
    width: 210px;
}

.adm_rsv_table th:nth-child(7),
.adm_rsv_table td:nth-child(7) {
    width: 90px;
}

.adm_rsv_table th:nth-child(8),
.adm_rsv_table td:nth-child(8) {
    width: 140px;
}

.adm_rsv_table th:nth-child(9),
.adm_rsv_table td:nth-child(9) {
    width: 210px;
}

.adm_rsv_table th:nth-child(10),
.adm_rsv_table td:nth-child(10) {
    width: 110px;
}

.adm_rsv_table th:nth-child(11),
.adm_rsv_table td:nth-child(11) {
    width: 120px;
}

.adm_rsv_table th:nth-child(12),
.adm_rsv_table td:nth-child(12) {
    width: 112px;
}

.adm_rsv_table th:nth-child(13),
.adm_rsv_table td:nth-child(13) {
    width: 170px;
}

.adm_rsv_table th:nth-child(14),
.adm_rsv_table td:nth-child(14) {
    width: 78px;
}

.adm_rsv_summary {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 14px;
}

.adm_rsv_summary div {
    padding: 18px 20px;
    border: 1px solid #d9dee5;
    border-radius: 8px;
    background: #ffffff;
}

.adm_rsv_summary span {
    display: block;
    color: #667085;
    font-size: 14px;
    font-weight: 800;
}

.adm_rsv_summary strong {
    display: block;
    margin-top: 6px;
    color: #111827;
    font-size: 22px;
}

.adm_rsv_summary strong .adm_badge {
    display: inline-flex;
    width: auto;
    min-width: 0;
    max-width: max-content;
    padding-right: 10px;
    padding-left: 10px;
    font-size: 13px;
    vertical-align: middle;
}

.adm_rsv_summary strong .adm_badge + .adm_badge {
    margin-left: 5px;
}

.adm_pagination {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 6px;
    padding: 22px 0 4px;
}

.adm_pagination a {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 36px;
    height: 36px;
    padding: 0 12px;
    border: 1px solid #d0d5dd;
    border-radius: 6px;
    color: #344054;
    background: #ffffff;
    font-weight: 800;
}

.adm_pagination a.is-active {
    color: #ffffff;
    border-color: #1b4332;
    background: #1b4332;
}

.adm_log_panel {
    margin-top: 18px;
}

.adm_log_table {
    min-width: 1180px;
}

.adm_log_table th,
.adm_log_table td {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.adm_log_table th:nth-child(1),
.adm_log_table td:nth-child(1) {
    width: 160px;
}

.adm_log_table th:nth-child(2),
.adm_log_table td:nth-child(2) {
    width: 120px;
}

.adm_log_table th:nth-child(3),
.adm_log_table td:nth-child(3) {
    width: 130px;
}

.adm_log_table th:nth-child(4),
.adm_log_table td:nth-child(4) {
    width: 120px;
}

.adm_log_table th:nth-child(5),
.adm_log_table td:nth-child(5),
.adm_log_table th:nth-child(6),
.adm_log_table td:nth-child(6) {
    width: 150px;
}

.adm_log_table th:nth-child(7),
.adm_log_table td:nth-child(7) {
    width: 220px;
}

.adm_log_table th:nth-child(8),
.adm_log_table td:nth-child(8) {
    width: 130px;
}

.adm_form_title {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 18px;
    padding-bottom: 16px;
    border-bottom: 1px solid #edf0f3;
}

.adm_form_title p {
    margin: 3px 0 0;
    color: #667085;
}

.adm_form_grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 18px;
}

.adm_status_fields {
    display: grid;
    grid-column: 1 / -1;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 18px;
}

.adm_field.full {
    grid-column: 1 / -1;
}

.adm_check_group,
.adm_radio_group {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px 18px;
    min-height: 42px;
    padding: 6px 0;
}

.adm_check_group label,
.adm_radio_group label {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    color: #344054;
    font-weight: 700;
    line-height: 1.3;
    word-break: keep-all;
}

.adm_check_group input,
.adm_radio_group input {
    flex: 0 0 auto;
    width: 18px;
    height: 18px;
    margin: 0;
    accent-color: #1b7fff;
}

.adm_price_box {
    display: flex;
    flex-direction: column;
    gap: 18px;
}

.adm_price_section {
    padding: 18px;
    border: 1px solid #dfe5ec;
    border-radius: 8px;
    background: #fbfcfd;
}

.adm_price_section h4 {
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 0 0 16px;
    color: #111827;
    font-size: 16px;
}

.adm_price_section h4:before {
    content: "";
    display: block;
    width: 4px;
    height: 16px;
    border-radius: 999px;
    background: #1b4332;
}

.adm_price_section + .adm_price_section {
    background: #ffffff;
}

.adm_time_table {
    overflow: hidden;
    border: 1px solid #d9dee5;
    border-radius: 8px;
    background: #ffffff;
}

.adm_time_head,
.adm_time_row {
    display: grid;
    grid-template-columns: minmax(220px, 1fr) 160px 160px 150px 128px;
    align-items: center;
}

.adm_time_head {
    min-height: 46px;
    color: #344054;
    background: #f8fafc;
    font-size: 14px;
    font-weight: 800;
}

.adm_time_head span {
    padding: 0 12px;
}

.adm_time_row {
    border-top: 1px solid #edf0f3;
}

.adm_time_row label {
    display: flex;
    flex-direction: column;
    gap: 6px;
    padding: 12px 8px;
    min-width: 0;
}

.adm_time_row label > span {
    display: none;
}

.adm_time_row input,
.adm_time_row select {
    min-height: 38px;
    padding-top: 7px;
    padding-bottom: 7px;
}

.adm_time_actions {
    display: flex;
    justify-content: center;
    gap: 6px;
    padding: 12px 8px;
}

.adm_time_actions .adm_btn,
.adm_repeat_actions .adm_btn,
.adm_extra_fee_table .adm_extra_fee_actions .adm_btn {
    min-width: 52px;
    padding: 0 8px;
}

.adm_repeat_table {
    overflow: hidden;
    border: 1px solid #d9dee5;
    border-radius: 8px;
}

.adm_repeat_head,
.adm_repeat_row {
    display: grid;
    grid-template-columns: 120px 120px minmax(280px, 1fr) 128px;
    align-items: center;
}

.adm_repeat_head {
    min-height: 46px;
    color: #344054;
    background: #f8fafc;
    font-size: 14px;
    font-weight: 800;
}

.adm_repeat_head span {
    padding: 0 14px;
}

.adm_repeat_row {
    gap: 0;
    border-top: 1px solid #edf0f3;
    background: #ffffff;
}

.adm_repeat_row label {
    display: flex;
    flex-direction: column;
    gap: 6px;
    padding: 12px;
}

.adm_repeat_row label > span {
    display: none;
}

.adm_repeat_row input {
    width: 100%;
    min-height: 40px;
    padding: 8px 10px;
    border: 1px solid #cfd6df;
    border-radius: 6px;
}

.adm_repeat_actions {
    display: flex;
    justify-content: center;
    gap: 6px;
    padding: 12px;
}

.adm_extra_fee_table {
    overflow: hidden;
    border: 1px solid #d9dee5;
    border-radius: 8px;
    background: #ffffff;
}

.adm_extra_fee_table .adm_extra_fee_head,
.adm_extra_fee_table .adm_extra_fee_row {
    display: grid;
    grid-template-columns: minmax(150px, 1.35fr) 100px 120px 110px 80px 80px minmax(220px, 1.8fr) 128px;
    align-items: center;
}

.adm_extra_fee_table .adm_extra_fee_head {
    min-height: 46px;
    color: #344054;
    background: #f8fafc;
    font-size: 14px;
    font-weight: 800;
}

.adm_extra_fee_table .adm_extra_fee_head span {
    padding: 0 12px;
    white-space: nowrap;
}

.adm_extra_fee_table .adm_extra_fee_row {
    border-top: 1px solid #edf0f3;
    background: #ffffff;
}

.adm_extra_fee_table .adm_extra_fee_row label {
    display: flex;
    flex-direction: column;
    gap: 6px;
    padding: 12px 8px;
    min-width: 0;
}

.adm_extra_fee_table .adm_extra_fee_row label > span {
    display: none;
}

.adm_extra_fee_table .adm_extra_fee_row input,
.adm_extra_fee_table .adm_extra_fee_row select {
    min-height: 38px;
    padding-top: 7px;
    padding-bottom: 7px;
    min-width: 0;
}

.adm_extra_fee_table .adm_extra_fee_actions {
    display: flex;
    justify-content: center;
    gap: 6px;
    padding: 12px 8px;
}

.adm_rsv_fee_table {
    overflow: hidden;
    border: 1px solid #d9dee5;
    border-radius: 8px;
    background: #ffffff;
}

.adm_rsv_fee_head,
.adm_rsv_fee_row {
    display: grid;
    grid-template-columns: minmax(180px, 1.4fr) 120px 140px 100px 140px 96px;
    align-items: center;
}

.adm_rsv_fee_head {
    min-height: 46px;
    color: #344054;
    background: #f8fafc;
    font-size: 14px;
    font-weight: 800;
}

.adm_rsv_fee_head span {
    padding: 0 12px;
}

.adm_rsv_fee_row {
    border-top: 1px solid #edf0f3;
}

.adm_rsv_fee_row label {
    display: flex;
    flex-direction: column;
    gap: 6px;
    padding: 12px 8px;
}

.adm_rsv_fee_row label > span {
    display: none;
}

.adm_rsv_fee_row input {
    width: 100%;
    min-height: 38px;
    padding: 7px 10px;
    border: 1px solid #cfd6df;
    border-radius: 6px;
}

.adm_field input[readonly],
.adm_rsv_fee_row input[readonly] {
    color: #475467;
    background: #f8fafc;
    cursor: default;
}

.adm_rsv_fee_actions {
    display: flex;
    justify-content: center;
    padding: 12px 8px;
}

.adm_inline_actions {
    display: flex;
    justify-content: flex-end;
    margin-top: 12px;
}

.adm_empty_row {
    padding: 18px;
    border-top: 1px solid #edf0f3;
    color: #667085;
    font-weight: 800;
    text-align: center;
}

.closed_status_cards strong {
    color: #1b4332;
}

.category_panel {
    margin: 20px 0;
}

.category_manage_list {
    display: grid;
    gap: 10px;
    padding: 18px;
}

.category_manage_item {
    display: grid;
    grid-template-columns: 70px minmax(0, 1fr) 130px;
    align-items: center;
    gap: 16px;
    padding: 16px;
    border: 1px solid #edf0f3;
    border-radius: 8px;
    background: #fbfcfd;
}

.category_sort {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 48px;
    height: 48px;
    border-radius: 50%;
    color: #1b4332;
    background: #eaf6e4;
    font-weight: 900;
}

.category_body > div {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 5px;
}

.category_body h4 {
    margin: 0;
    color: #111827;
    font-size: 18px;
}

.category_body p {
    margin: 0;
    color: #667085;
}

.category_actions {
    display: flex;
    justify-content: flex-end;
    gap: 6px;
}

.closed_day_panel {
    margin-top: 20px;
}

.closed_view_nav {
    display: inline-flex;
    gap: 4px;
    margin: 18px 18px 0;
    padding: 4px;
    border: 1px solid #d9dee5;
    border-radius: 8px;
    background: #f8fafc;
}

.closed_view_nav button {
    min-width: 86px;
    min-height: 34px;
    border: 0;
    border-radius: 6px;
    color: #52616f;
    background: transparent;
    font-weight: 900;
    cursor: pointer;
}

.closed_view_nav button.is-active {
    color: #ffffff;
    background: #1b4332;
}

[data-closed-view].is-hidden {
    display: none;
}

.closed_calendar {
    padding: 18px;
}

.closed_calendar_head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 14px;
}

.closed_calendar_head h4 {
    margin: 0;
    color: #111827;
    font-size: 20px;
}

.closed_calendar_head h4 span {
    margin-left: 8px;
    color: #52616f;
    font-size: 15px;
}

.closed_calendar_head > div {
    display: flex;
    gap: 6px;
}

.closed_calendar_grid {
    display: grid;
    grid-template-columns: repeat(7, minmax(118px, 1fr));
    overflow: visible;
    border: 1px solid #d9dee5;
    border-radius: 8px;
    background: #ffffff;
}

.closed_calendar_weekday {
    padding: 10px 8px;
    border-right: 1px solid #edf0f3;
    border-bottom: 1px solid #d9dee5;
    color: #344054;
    background: #f8fafc;
    font-size: 13px;
    font-weight: 900;
    text-align: center;
}

.closed_calendar_weekday:nth-child(7) {
    border-right: 0;
}

.closed_calendar_day {
    position: relative;
    min-height: 112px;
    padding: 9px;
    border-right: 1px solid #edf0f3;
    border-bottom: 1px solid #edf0f3;
    background: #ffffff;
}

.closed_calendar_day:nth-child(7n) {
    border-right: 0;
}

.closed_calendar_day.is-other-month {
    background: #fafafa;
}

.closed_calendar_day.is-other-month > strong {
    color: #b8c0cc;
}

.closed_calendar_day.is-today {
    box-shadow: inset 0 0 0 2px #1b4332;
}

.closed_calendar_day > strong {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 24px;
    height: 24px;
    color: #111827;
    font-size: 13px;
}

.closed_calendar_events {
    display: grid;
    gap: 5px;
    margin-top: 7px;
}

.closed_calendar_event {
    position: relative;
}

.closed_calendar_event > span {
    display: block;
    overflow: hidden;
    padding: 5px 7px;
    border-radius: 5px;
    background: #fee4e2;
    color: #b42318;
    font-size: 12px;
    font-weight: 900;
    text-overflow: ellipsis;
    white-space: nowrap;
    cursor: default;
}

.closed_calendar_event.type_blocked > span,
.closed_badge.type_blocked {
    color: #b42318;
    background: #fee4e2;
}

.closed_calendar_event.type_temporary_closed > span,
.closed_badge.type_temporary_closed {
    color: #b54708;
    background: #fef0c7;
}

.closed_calendar_event.type_regular_closed > span,
.closed_badge.type_regular_closed {
    color: #175cd3;
    background: #dbeafe;
}

.closed_calendar_event.is-disabled > span {
    opacity: 0.58;
    text-decoration: line-through;
}

.closed_calendar_tooltip {
    position: absolute;
    left: 0;
    top: calc(100% - 1px);
    z-index: 20;
    display: none;
    width: 260px;
    padding: 12px;
    border: 1px solid #d9dee5;
    border-radius: 8px;
    background: #ffffff;
    box-shadow: 0 16px 34px rgba(31, 41, 51, 0.18);
}

.closed_calendar_event.is-left .closed_calendar_tooltip {
    right: 0;
    left: auto;
}

.closed_calendar_event.is-up .closed_calendar_tooltip {
    top: auto;
    bottom: calc(100% - 1px);
}

.closed_calendar_event:hover .closed_calendar_tooltip,
.closed_calendar_event:focus-within .closed_calendar_tooltip,
.closed_calendar_event.is-open .closed_calendar_tooltip {
    display: block;
}

.closed_calendar_tooltip b {
    display: block;
    margin-bottom: 8px;
    color: #111827;
    font-size: 14px;
}

.closed_calendar_tooltip p {
    margin: 4px 0 0;
    color: #52616f;
    font-size: 12px;
    line-height: 1.45;
}

.closed_calendar_actions {
    display: flex;
    gap: 6px;
    margin-top: 10px;
}

.closed_calendar_actions form {
    margin: 0;
}

.closed_calendar_actions .closed_edit_btn {
    color: #ffffff;
    border-color: #1b4332;
    background: #1b4332;
}

.closed_calendar_actions .closed_toggle_btn {
    color: #ffffff;
    border-color: #b54708;
    background: #b54708;
}

.closed_list_head {
    padding: 18px 18px 0;
}

.closed_list_head h4 {
    margin: 0;
    color: #111827;
    font-size: 18px;
}

.closed_day_list {
    display: grid;
    gap: 12px;
    padding: 18px;
}

.closed_day_item {
    display: grid;
    grid-template-columns: 130px minmax(0, 1fr) 130px;
    align-items: center;
    gap: 18px;
    padding: 18px;
    border: 1px solid #edf0f3;
    border-radius: 8px;
    background: #fbfcfd;
}

.closed_day_date {
    display: flex;
    flex-direction: column;
    justify-content: center;
    min-height: 92px;
    padding: 16px;
    border-radius: 8px;
    color: #1b4332;
    background: #eaf6e4;
    text-align: center;
}

.closed_day_date strong {
    font-size: 28px;
    line-height: 1;
}

.closed_day_date span {
    margin-top: 8px;
    color: #52705d;
    font-size: 13px;
    font-weight: 800;
}

.closed_day_top {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-bottom: 8px;
}

.closed_badge {
    display: inline-flex;
    align-items: center;
    min-height: 26px;
    padding: 0 10px;
    border-radius: 999px;
    color: #344054;
    background: #eef2f6;
    font-size: 13px;
    font-weight: 900;
}

.closed_day_body h4 {
    margin: 0 0 10px;
    color: #111827;
    font-size: 19px;
}

.closed_day_body dl {
    display: grid;
    gap: 6px;
    margin: 0;
}

.closed_day_body dl div {
    display: grid;
    grid-template-columns: 48px minmax(0, 1fr);
    gap: 10px;
}

.closed_day_body dt {
    color: #667085;
    font-weight: 900;
}

.closed_day_body dd {
    margin: 0;
    color: #344054;
    word-break: keep-all;
}

.closed_day_actions {
    display: flex;
    justify-content: flex-end;
    gap: 6px;
}

.adm_copy {
    padding: 22px 20px;
    border-top: 1px solid #d9dee5;
    color: #667085;
    background: #ffffff;
    text-align: center;
}

#adm_top_btn {
    position: fixed;
    right: 24px;
    bottom: 24px;
    display: none;
    width: 44px;
    height: 44px;
    border: 0;
    border-radius: 50%;
    color: #ffffff;
    background: #1b4332;
    font-size: 22px;
    font-weight: 800;
    cursor: pointer;
    box-shadow: 0 10px 20px rgba(17, 24, 39, 0.2);
}

#adm_top_btn.on {
    display: block;
}

@media (max-width: 900px) {
    .adm_head_inner,
    .adm_container {
        width: min(100% - 28px, 1280px);
    }

    .adm_head_inner,
    .adm_page_head,
    .adm_form_title {
        align-items: stretch;
        flex-direction: column;
    }

    .menu ul {
        overflow-x: auto;
        padding-bottom: 6px;
    }

    .menu a {
        white-space: nowrap;
    }

    .adm_search_grid,
    .adm_form_grid {
        grid-template-columns: 1fr;
    }

    .adm_status_fields {
        grid-template-columns: 1fr;
    }

    .adm_tab_nav {
        overflow-x: auto;
    }

    .adm_tab_nav button {
        min-width: 128px;
        white-space: nowrap;
    }

    .adm_status_cards,
    .adm_rsv_summary {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .adm_repeat_head {
        display: none;
    }

    .adm_time_head {
        display: none;
    }

    .adm_time_row {
        grid-template-columns: 1fr;
        padding: 14px;
    }

    .adm_time_row label,
    .adm_time_actions {
        padding: 6px 0;
    }

    .adm_time_row label > span {
        display: block;
        color: #374151;
        font-size: 14px;
        font-weight: 800;
    }

    .adm_repeat_row {
        grid-template-columns: 1fr;
        padding: 14px;
    }

    .adm_repeat_row label,
    .adm_repeat_actions {
        padding: 6px 0;
    }

    .adm_repeat_row label > span {
        display: block;
        color: #374151;
        font-size: 14px;
        font-weight: 800;
    }

    .adm_page_head h2 {
        font-size: 26px;
    }

    .closed_day_item {
        grid-template-columns: 1fr;
        align-items: stretch;
    }

    .category_manage_item {
        grid-template-columns: 1fr;
        align-items: stretch;
    }

    .category_actions {
        justify-content: flex-start;
    }

    .closed_day_actions {
        justify-content: flex-start;
    }
}

@media (max-width: 700px) {
    .adm_extra_fee_table .adm_extra_fee_head {
        display: none;
    }

    .adm_extra_fee_table .adm_extra_fee_row {
        grid-template-columns: 1fr;
        padding: 14px;
    }

    .adm_extra_fee_table .adm_extra_fee_row label,
    .adm_extra_fee_table .adm_extra_fee_actions {
        padding: 6px 0;
    }

    .adm_extra_fee_table .adm_extra_fee_row label > span {
        display: block;
        color: #374151;
        font-size: 14px;
        font-weight: 800;
    }

    .adm_rsv_fee_head {
        display: none;
    }

    .adm_rsv_fee_row {
        grid-template-columns: 1fr;
        padding: 14px;
    }

    .adm_rsv_fee_row label {
        padding: 6px 0;
    }

    .adm_rsv_fee_row label > span {
        display: block;
        color: #374151;
        font-size: 14px;
        font-weight: 800;
    }
}

@media (max-width: 560px) {
    .adm_container {
        padding-top: 26px;
    }

    .adm_search_actions,
    .adm_form_actions,
    .adm_table_actions {
        flex-direction: column;
    }

    .adm_btn {
        width: 100%;
    }

    .adm_status_cards,
    .adm_rsv_summary {
        grid-template-columns: 1fr;
    }
}

/* User program pages */
.program_user {
    color: #1f2933;
}

.program_inner {
    width: min(1180px, calc(100% - 40px));
    margin: 0 auto;
}

.program_page_actions {
    display: flex;
    justify-content: flex-end;
    gap: 8px;
    margin-bottom: 18px;
}

.program_page_actions.full {
    grid-column: 1 / -1;
}

.program_nav_btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 40px;
    padding: 0 15px;
    border: 1px solid #cfd8c8;
    border-radius: 6px;
    color: #25313d;
    background: #ffffff;
    font-weight: 900;
}

.program_nav_btn:hover,
.program_nav_btn.is-current {
    color: #ffffff;
    border-color: #1b4332;
    background: #1b4332;
}

.program_nav_btn.admin {
    color: #ffffff;
    border-color: #b54708;
    background: #b54708;
}

.program_nav_btn.admin:hover {
    border-color: #93370d;
    background: #93370d;
}

.program_hero {
    padding: 72px 0 58px;
    color: #ffffff;
    background: linear-gradient(120deg, rgba(27, 67, 50, 0.95), rgba(64, 110, 68, 0.92)), url("/program/img/program-bg.jpg");
    background-size: cover;
    background-position: center;
}

.program_hero h1,
.program_sub_head h1 {
    margin: 0;
    font-size: 42px;
    line-height: 1.2;
}

.program_hero p {
    max-width: 620px;
    margin: 14px 0 0;
    font-size: 18px;
    color: rgba(255, 255, 255, 0.86);
}

.program_eyebrow {
    margin: 0 0 8px;
    color: #e5f6d6;
    font-size: 13px;
    font-weight: 900;
    text-transform: uppercase;
}

.program_list_section {
    padding: 40px 0 70px;
}

.program_content_section {
    padding: 40px 0 74px;
}

.program_filter {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-bottom: 22px;
}

.program_filter a {
    display: inline-flex;
    align-items: center;
    min-height: 38px;
    padding: 0 16px;
    border: 1px solid #d4ddcf;
    border-radius: 999px;
    color: #3f5148;
    background: #ffffff;
    font-weight: 800;
}

.program_filter a.is-active,
.program_filter a:hover {
    color: #ffffff;
    border-color: #1b4332;
    background: #1b4332;
}

.program_card_grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 22px;
}

.program_card {
    display: grid;
    grid-template-columns: 220px minmax(0, 1fr);
    overflow: hidden;
    border: 1px solid #dce4d8;
    border-radius: 8px;
    background: #ffffff;
    box-shadow: 0 14px 28px rgba(31, 41, 51, 0.06);
}

.program_thumb {
    position: relative;
    display: flex;
    align-items: flex-start;
    justify-content: flex-start;
    min-height: 260px;
    padding: 18px;
    background: #dcefd2;
}

.program_thumb img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.program_card.banana .program_thumb {
    background: linear-gradient(145deg, #ffe98f, #bfe49d);
}

.program_card.heal .program_thumb {
    background: linear-gradient(145deg, #d7f3e3, #9ec8ad);
}

.program_card.art .program_thumb {
    background: linear-gradient(145deg, #ffd7b3, #b8d8ff);
}

.program_card.farm .program_thumb {
    background: linear-gradient(145deg, #d9ed92, #76c893);
}

.program_thumb span {
    position: relative;
    z-index: 1;
    display: inline-flex;
    align-items: center;
    min-height: 30px;
    padding: 0 12px;
    border-radius: 999px;
    color: #1b4332;
    background: rgba(255, 255, 255, 0.86);
    font-weight: 900;
}

.program_card_body {
    display: flex;
    flex-direction: column;
    padding: 24px;
}

.program_card_top {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 12px;
    color: #697a70;
    font-size: 14px;
    font-weight: 700;
}

.program_badge {
    display: inline-flex;
    align-items: center;
    min-height: 26px;
    padding: 0 10px;
    border-radius: 999px;
    color: #116149;
    background: #dff6ec;
    font-size: 13px;
    font-weight: 900;
}

.program_badge.is-open {
    color: #116149;
    background: #dff6ec;
}

.program_badge.is-closed {
    color: #b42318;
    background: #fee4e2;
}

.program_badge.rsv_received {
    color: #175cd3;
    background: #dbeafe;
}

.program_badge.rsv_confirmed {
    color: #116149;
    background: #dff6ec;
}

.program_badge.rsv_completed {
    color: #475467;
    background: #eef2f6;
}

.program_badge.rsv_cancelled {
    color: #b42318;
    background: #fee4e2;
}

.program_badge.pay_deposit_wait {
    color: #b54708;
    background: #fef0c7;
}

.program_badge.pay_paid {
    color: #067647;
    background: #dcfae6;
}

.program_badge.pay_refund_wait {
    color: #7a2e0e;
    background: #ffead5;
}

.program_badge.pay_refunded {
    color: #344054;
    background: #f2f4f7;
}

.program_card h2 {
    margin: 0;
    color: #111827;
    font-size: 24px;
}

.program_card p {
    margin: 10px 0 18px;
    color: #52616f;
}

.program_info {
    display: grid;
    gap: 8px;
    margin: 0;
}

.program_info div {
    display: grid;
    grid-template-columns: 52px minmax(0, 1fr);
    gap: 10px;
}

.program_info dt {
    color: #6b7a70;
    font-weight: 900;
}

.program_info dd {
    margin: 0;
    color: #25313d;
    word-break: keep-all;
}

.program_card_actions {
    margin-top: auto;
    padding-top: 22px;
}

.program_btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 46px;
    padding: 0 22px;
    border: 1px solid #1b4332;
    border-radius: 6px;
    color: #1b4332;
    background: #ffffff;
    font-weight: 900;
    cursor: pointer;
}

.program_btn.primary {
    color: #ffffff;
    background: #1b4332;
}

.program_btn.danger {
    color: #ffffff;
    border-color: #b42318;
    background: #b42318;
}

.program_btn.disabled,
.program_btn:disabled {
    color: #667085;
    border-color: #d0d5dd;
    background: #f2f4f7;
    cursor: not-allowed;
}

.program_sub_head {
    padding: 44px 0 26px;
    color: #ffffff;
    background: #1b4332;
}

.program_back {
    display: inline-flex;
    margin-bottom: 18px;
    color: rgba(255, 255, 255, 0.78);
    font-weight: 800;
}

.reservation_layout {
    display: grid;
    grid-template-columns: 320px minmax(0, 1fr);
    gap: 24px;
}

.reservation_summary,
.reservation_panel,
.reservation_total {
    border: 1px solid #dce4d8;
    border-radius: 8px;
    background: #ffffff;
    box-shadow: 0 12px 26px rgba(31, 41, 51, 0.05);
}

.reservation_summary {
    position: sticky;
    top: 96px;
    align-self: start;
    padding: 24px;
}

.reservation_summary h2 {
    margin: 14px 0 8px;
    font-size: 28px;
}

.reservation_summary p {
    margin: 0 0 20px;
    color: #52616f;
}

.reservation_gallery_cover {
    position: relative;
    display: block;
    width: 100%;
    padding: 0;
    margin: 0 0 20px;
    overflow: hidden;
    border: 0;
    border-radius: 6px;
    background: #f7dada;
    cursor: zoom-in;
}

.reservation_gallery_cover img {
    display: block;
    width: 100%;
    aspect-ratio: 4 / 3;
    object-fit: cover;
    transition: transform 0.25s ease;
}

.reservation_gallery_cover:hover img {
    transform: scale(1.025);
}

.reservation_gallery_cover span {
    position: absolute;
    right: 10px;
    bottom: 10px;
    padding: 5px 9px;
    border-radius: 999px;
    color: #fff;
    background: rgba(17, 24, 39, 0.72);
    font-size: 12px;
    font-weight: 800;
}

body.is-gallery-open {
    overflow: hidden;
}

.program_gallery_modal {
    position: fixed;
    z-index: 10000;
    inset: 0;
    display: none;
    align-items: center;
    justify-content: center;
    padding: 24px;
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
}

.program_gallery_modal.is-open {
    display: flex;
}

.program_gallery_backdrop {
    position: absolute;
    inset: 0;
    background: rgba(0, 0, 0, 0.88);
}

.program_gallery_dialog {
    position: relative;
    width: min(1100px, 100%);
    margin: auto;
    z-index: 1;
}

.program_gallery_viewport {
    width: 100%;
    overflow: hidden;
    touch-action: pan-y;
}

.program_gallery_track {
    display: flex;
    transition: transform 0.3s ease;
}

.program_gallery_slide {
    display: flex;
    flex: 0 0 100%;
    align-items: center;
    justify-content: center;
    min-width: 0;
}

.program_gallery_slide img {
    display: block;
    max-width: 100%;
    max-height: calc(100vh - 100px);
    object-fit: contain;
}

.program_gallery_close,
.program_gallery_nav {
    position: absolute;
    z-index: 2;
    border: 0;
    color: #fff;
    background: rgba(0, 0, 0, 0.46);
    cursor: pointer;
}

.program_gallery_close {
    top: -15px;
    right: 0;
    width: 42px;
    height: 42px;
    border-radius: 50%;
    font-size: 34px;
    line-height: 1;
}

.program_gallery_nav {
    top: 50%;
    width: 46px;
    height: 60px;
    transform: translateY(-50%);
    border-radius: 6px;
    font-size: 30px;
}

.program_gallery_nav.prev { left: 12px; }
.program_gallery_nav.next { right: 12px; }

.program_gallery_counter {
    margin: 12px 0 0;
    color: #fff;
    text-align: center;
    font-weight: 800;
}

.reservation_summary dl {
    display: grid;
    gap: 14px;
    margin: 0;
}

.reservation_summary dt {
    color: #6b7a70;
    font-size: 13px;
    font-weight: 900;
}

.reservation_summary dd {
    margin: 3px 0 0;
    color: #25313d;
    font-weight: 800;
}

.reservation_form {
    display: grid;
    gap: 18px;
}

.reservation_panel {
    padding: 24px;
}

.reservation_panel h2 {
    margin: 0 0 18px;
    color: #111827;
    font-size: 22px;
}

.refund_policy_head {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 18px;
}

.reservation_panel .refund_policy_head h2 {
    margin-bottom: 0;
}

.refund_policy_head p {
    margin: 0;
    color: #667085;
    font-size: 14px;
}

.refund_policy_grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
}

.refund_policy_card {
    padding: 20px;
    border: 1px solid #dce4d8;
    border-radius: 10px;
    background: #fbfcfd;
}

.refund_policy_day {
    display: block;
    margin-bottom: 10px;
    color: #52616f;
    font-size: 14px;
    font-weight: 800;
}

.refund_policy_card strong {
    display: block;
    color: #146c43;
    font-size: 24px;
    line-height: 1.25;
}

.refund_policy_card.is-half strong {
    color: #9a6700;
}

.refund_policy_card.is-none strong {
    color: #b42318;
}

.refund_policy_card p {
    margin: 8px 0 0;
    color: #667085;
    font-size: 14px;
}

.reservation_grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px;
}

.user_field {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.user_field > span {
    color: #25313d;
    font-weight: 900;
}

.user_field em {
    color: #d92d20;
    font-style: normal;
}

.user_field input,
.user_field select,
.user_field textarea {
    width: 100%;
    min-height: 46px;
    padding: 10px 13px;
    border: 1px solid #cfd8c8;
    border-radius: 6px;
    color: #1f2933;
    background: #ffffff;
}

.user_field select {
    padding-right: 40px;
    background-image: linear-gradient(45deg, transparent 50%, #667085 50%), linear-gradient(135deg, #667085 50%, transparent 50%);
    background-position: calc(100% - 18px) 50%, calc(100% - 13px) 50%;
    background-size: 5px 5px, 5px 5px;
    background-repeat: no-repeat;
    appearance: none;
}

.user_field textarea {
    resize: vertical;
}

.time_choice {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
}

.time_choice label {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 4px 10px;
    padding: 16px;
    border: 1px solid #cfd8c8;
    border-radius: 8px;
    background: #fbfcfd;
    cursor: pointer;
}

.time_choice label.is-disabled {
    color: #98a2b3;
    background: #f2f4f7;
    cursor: not-allowed;
}

.time_choice input {
    grid-row: span 2;
    width: 18px;
    height: 18px;
    margin: 2px 0 0;
    accent-color: #1b4332;
}

.time_choice strong {
    color: #111827;
}

.time_choice span {
    color: #52616f;
}

.payment_account_info {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-top: 12px;
    padding: 14px 16px;
    border-radius: 8px;
    color: #52616f;
    background: #f3f7f1;
}

.payment_account_info[hidden] {
    display: none;
}

.payment_account_info strong {
    color: #1b4332;
}

.extra_choice_list {
    display: grid;
    gap: 10px;
}

.extra_choice_item {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 110px;
    align-items: center;
    gap: 16px;
    padding: 16px;
    border: 1px solid #e0e7dc;
    border-radius: 8px;
    background: #fbfcfd;
}

.extra_choice_item strong {
    color: #111827;
}

.extra_choice_item p {
    margin: 5px 0;
    color: #52616f;
}

.extra_choice_item div > span {
    color: #1b4332;
    font-weight: 900;
}

.extra_choice_item label {
    display: flex;
    flex-direction: column;
    gap: 6px;
    color: #25313d;
    font-weight: 900;
}

.extra_choice_item input {
    min-height: 42px;
    padding: 8px 10px;
    border: 1px solid #cfd8c8;
    border-radius: 6px;
}

.privacy_check {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-top: 14px;
    color: #25313d;
    font-weight: 800;
}

.privacy_check input {
    width: 18px;
    height: 18px;
    margin: 0;
    accent-color: #1b4332;
}

.reservation_total {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    padding: 22px 24px;
}

.reservation_total span {
    color: #6b7a70;
    font-weight: 900;
}

.reservation_total strong {
    display: block;
    margin-top: 2px;
    color: #1b4332;
    font-size: 26px;
}

.reservation_total p {
    margin: 4px 0 0;
    color: #667085;
}

.reservation_validate_message {
    min-height: 20px;
    font-weight: 800;
    line-height: 1.5;
    white-space: pre-line;
}

.reservation_validate_message:empty {
    display: none;
}

.reservation_validate_message.is-ok {
    color: #1b7951;
}

.reservation_validate_message.is-error {
    color: #b42318;
}

.check_page {
    display: grid;
    justify-items: center;
}

.check_box {
    width: min(100%, 560px);
    padding: 34px;
    border: 1px solid #dce4d8;
    border-radius: 8px;
    background: #ffffff;
    box-shadow: 0 14px 28px rgba(31, 41, 51, 0.06);
}

.check_intro {
    margin-bottom: 24px;
}

.check_intro h2 {
    margin: 14px 0 8px;
    color: #111827;
    font-size: 28px;
}

.check_intro p {
    margin: 0;
    color: #52616f;
}

.check_form {
    display: grid;
    gap: 16px;
}

.check_form .program_btn {
    width: 100%;
    margin-top: 4px;
}

.check_reservation_list {
    display: grid;
    gap: 14px;
}

.check_reservation_item {
    display: grid;
    grid-template-columns: minmax(0, 1.2fr) minmax(0, 1.5fr) auto;
    align-items: center;
    gap: 18px;
    padding: 22px;
    border: 1px solid #dce4d8;
    border-radius: 8px;
    background: #ffffff;
    box-shadow: 0 12px 26px rgba(31, 41, 51, 0.05);
}

.check_reservation_item h3 {
    margin: 10px 0 6px;
    color: #111827;
    font-size: 22px;
}

.check_reservation_item p {
    margin: 0;
    color: #52616f;
}

.check_reservation_meta {
    display: grid;
    gap: 4px;
    margin-top: 8px;
}

.check_reservation_meta p {
    display: flex;
    flex-wrap: wrap;
    gap: 4px 8px;
    align-items: baseline;
    color: #52616f;
    font-size: 14px;
}

.check_reservation_meta span {
    color: #6b7a70;
    font-weight: 900;
}

.check_reservation_meta strong {
    color: #52616f;
    font-weight: 700;
    white-space: nowrap;
}

.check_reservation_item dl {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px 18px;
    margin: 0;
}

.check_reservation_item dt {
    color: #6b7a70;
    font-size: 13px;
    font-weight: 900;
}

.check_reservation_item dd {
    margin: 2px 0 0;
    color: #25313d;
    font-weight: 800;
}

.payment_method_badge {
    display: inline-flex;
    align-items: center;
    min-height: 24px;
    margin-right: 6px;
    padding: 3px 9px;
    border-radius: 6px;
    color: #1b4332;
    background: #e6f1e1;
    font-size: 12px;
    font-weight: 900;
    line-height: 1;
    vertical-align: middle;
}

.payment_method_badge.method_on_site {
    color: #7a4b00;
    background: #fff1cc;
}

.check_detail_page {
    display: grid;
    gap: 18px;
    padding: 40px 0 74px;
}

.check_detail_head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    padding: 26px;
    border: 1px solid #dce4d8;
    border-radius: 8px;
    background: #ffffff;
    box-shadow: 0 12px 26px rgba(31, 41, 51, 0.05);
}

.check_detail_head h2 {
    margin: 12px 0 6px;
    color: #111827;
    font-size: 30px;
}

.check_detail_head p {
    margin: 0;
    color: #52616f;
}

.check_total {
    min-width: 190px;
    padding: 18px;
    border-radius: 8px;
    background: #f1f8ee;
    text-align: right;
}

.check_total span {
    color: #6b7a70;
    font-weight: 900;
}

.check_total strong {
    display: block;
    margin-top: 4px;
    color: #1b4332;
    font-size: 28px;
}

.check_detail_grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 18px;
}

.check_info_list {
    display: grid;
    gap: 13px;
    margin: 0;
}

.check_info_list div {
    display: grid;
    grid-template-columns: 100px minmax(0, 1fr);
    gap: 14px;
    padding-bottom: 13px;
    border-bottom: 1px solid #edf2ea;
}

.check_info_list div:last-child {
    padding-bottom: 0;
    border-bottom: 0;
}

.check_info_list dt {
    color: #6b7a70;
    font-weight: 900;
}

.check_info_list dd {
    margin: 0;
    color: #25313d;
    font-weight: 800;
    word-break: keep-all;
}

.check_price_table {
    border-top: 1px solid #edf2ea;
}

.check_price_row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    padding: 15px 0;
    border-bottom: 1px solid #edf2ea;
}

.check_price_row span {
    color: #52616f;
    font-weight: 800;
}

.check_price_row strong {
    color: #25313d;
    font-size: 18px;
}

.check_price_row.total strong {
    color: #1b4332;
    font-size: 24px;
}

.check_memo {
    margin: 0;
    padding: 16px;
    border-radius: 8px;
    color: #25313d;
    background: #fbfcfd;
}

.check_notice {
    padding: 24px;
    border: 1px solid #dce4d8;
    border-radius: 8px;
    background: #ffffff;
}

.check_notice h2 {
    margin: 0 0 14px;
    color: #111827;
    font-size: 22px;
}

.check_notice ul {
    display: grid;
    gap: 8px;
    padding-left: 20px;
    margin: 0;
    color: #52616f;
}

.check_actions {
    display: flex;
    justify-content: flex-end;
    gap: 8px;
    margin-top: 20px;
}

@media (max-width: 980px) {
    .program_card_grid,
    .reservation_layout {
        grid-template-columns: 1fr;
    }

    .reservation_summary {
        position: static;
    }
}

@media (max-width: 720px) {
    .program_inner {
        width: min(100% - 28px, 1180px);
    }

    .program_page_actions {
        justify-content: flex-start;
        flex-wrap: wrap;
    }

    .program_nav_btn {
        min-height: 38px;
        padding: 0 12px;
        font-size: 14px;
    }

    .program_hero {
        padding: 50px 0 42px;
    }

    .program_hero h1,
    .program_sub_head h1 {
        font-size: 32px;
    }

    .program_card {
        grid-template-columns: 1fr;
    }

    .program_thumb {
        min-height: 150px;
    }

    .reservation_grid,
    .time_choice,
    .extra_choice_item,
    .refund_policy_grid,
    .check_detail_grid,
    .check_reservation_item,
    .check_reservation_item dl {
        grid-template-columns: 1fr;
    }

    .refund_policy_head {
        align-items: flex-start;
        flex-direction: column;
        gap: 6px;
    }

    .check_detail_head {
        align-items: stretch;
        flex-direction: column;
    }

    .check_total {
        text-align: left;
    }

    .check_actions {
        flex-direction: column;
    }

    .check_actions .program_btn {
        width: 100%;
    }

    .reservation_total {
        align-items: stretch;
        flex-direction: column;
    }

    .reservation_total .program_btn {
        width: 100%;
    }

    .program_gallery_modal {
        padding: 54px 12px 24px;
        align-items: flex-start;
    }

    .program_gallery_slide img {
        max-height: calc(100dvh - 130px);
    }

    .program_gallery_nav {
        width: 40px;
        height: 52px;
    }
}
