diff --git a/src/main/resources/static/css/web/service/makeReservation.css b/src/main/resources/static/css/web/service/makeReservation.css index 753770d..1cee355 100644 --- a/src/main/resources/static/css/web/service/makeReservation.css +++ b/src/main/resources/static/css/web/service/makeReservation.css @@ -1,459 +1,616 @@ -* { - box-sizing: border-box; - } - - body { - font-family: 'Noto Sans KR', sans-serif; - margin: 0; - background: #fafafa; - color: #222; - height: 100vh; - display: flex; - flex-direction: column; - } +.fix_area { + min-width: 1200px; + width: 1200px; + margin: 0 auto; + padding: 0 16px; +} - /* Main container */ - .reservation-container { - display: flex; - max-width: 1280px !important; - margin: 0 auto; - gap: 20px; - height: 100%; - flex: 1; - padding: 20px 0; - margin-top:65px; - } +.contents_area{ + margin-top:50px; + margin-bottom:30px; +} - .box { - background: #fff; - border-radius: 16px; - box-shadow: 0 2px 8px rgba(0,0,0,0.06); - padding: 24px 16px; - flex: 1 1 0; - min-width: 260px; - display: flex; - flex-direction: column; - height: fit-content; - min-height: 600px; - } +.reservation_ul{ + display: flex; + gap: 20px; +} - .step-title { - color: #b23c3c; - font-weight: 700; - font-size: 1.1em; - margin-bottom: 12px; - letter-spacing: 0.02em; - transition: color 0.3s ease; - } +.reservation_ul>li{ + width: calc((100% - 40px) / 3); + border-radius: 20px; + overflow: hidden; + box-shadow: 2px 2px 15px rgba(0, 0, 0, .05); + padding-right: 0; + padding-left: 0; + +} - .step-title.completed { - color: #008000 !important; - } +.section_div{ + position: relative; + height: 800px; + background-color: #f5f5f5; + border: 1px solid #ddd; + overflow: hidden; +} - /* Service section */ - .service-list { - flex: 1; - margin-bottom: 24px; - } - - .service-item { - display: flex; - justify-content: space-between; - align-items: center; - font-size: 1.1em; - margin-bottom: 10px; - } - - .service-item .del { - cursor: pointer; - color: #b23c3c; - margin-left: 8px; - font-size: 1.2em; - transition: color 0.3s ease, opacity 0.3s ease; - } - - .service-item .del:hover { - color: #ff0000; - } - - .service-item .del.disabled { - color: #ccc; - cursor: not-allowed; - opacity: 0.5; - } - - .service-item .del.disabled:hover { - color: #ccc; - } - - .service-item .price { - font-weight: bold; - color: #b23c3c; - } +.section_div_wrap { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: #fff; +} - /* Service count indicator */ - .service-count-info { - font-size: 0.85em; - color: #888; - margin-bottom: 8px; - text-align: center; - padding: 4px 8px; - background: #f8f9fa; - border-radius: 4px; - } +.tit-box_div{ + position: relative; + padding: 1.6rem 2.8rem 0; + display: flex; + gap: 19px; + align-items: center; +} - .service-count-info.single { - color: #ff8c00; - background: #fff3e0; - border: 1px solid #ffcc80; - } - .total { - border-top: 1px solid #eee; - margin-top: auto; - padding-top: 16px; - display: flex; - justify-content: space-between; - font-size: 1.1em; - font-weight: bold; - } - - .total .price { - color: #b23c3c; - } - - .total small { - font-weight: normal; - color: #888; - font-size: 0.9em; - margin-right: 8px; - } +.step_span{ + color: #A73439; + font-size:2rem; +} - /* Calendar section */ - .calendar-box { - margin-bottom: 20px; - } - - .calendar-header { - display: flex; - justify-content: center; - align-items: center; - gap: 8px; - margin-bottom: 8px; - } - - .calendar-header button { - background: none; - border: none; - font-size: 1.2em; - cursor: pointer; - color: #b23c3c; - padding: 0 6px; - } - - .calendar-table { - width: 100%; - border-collapse: collapse; - text-align: center; - margin-bottom: 8px; - } - - .calendar-table th, - .calendar-table td { - width: 2em; - height: 2em; - padding: 2px; - font-size: 1em; - border-radius: 50%; - cursor: pointer; - transition: background 0.15s; - } - - .calendar-table th { - color: #b23c3c; - font-weight: 500; - background: none; - } - - .calendar-table td.selected { - background: #b23c3c; - color: #fff; - } - - .calendar-table td.today { - border: 1.5px solid #b23c3c; - } - - .calendar-table td:not(.selected):hover { - background: #f5eaea; - } - - .calendar-table td.disabled { - color: #ccc; - pointer-events: none; - background: none; - } +.reservation-box_div { + position: absolute; + top: 60px; + left: 0; + right: 0; + bottom: 0; + padding: 1rem; +} - /* Time slots */ - .time-slots { - display: flex; - flex-wrap: wrap; - gap: 8px; - margin-bottom: 12px; - } - - .time-btn { - flex: 1 0 30%; - min-width: 80px; - padding: 8px 0; - border: 1px solid #b23c3c; - border-radius: 20px; - background: #fff; - color: #b23c3c; - font-size: 1em; - cursor: pointer; - transition: background 0.15s, color 0.15s; - } - - .time-btn.selected, - .time-btn:active { - background: #b23c3c; - color: #fff; - } - - .time-btn:disabled { - color: #ccc; - border-color: #eee; - background: #f5f5f5; - cursor: not-allowed; - } +.main-item-info{ + position: relative; + height: 100%; +} - .person-count { - margin-top: 12px; - font-size: 0.98em; - color: #888; - } +.w_top_select { + height: calc(100% - 155px); + overflow-y: auto; + overflow-x: hidden; +} - /* Form section */ - .form-group { - margin-bottom: 16px; - } - - .form-group label { - display: block; - margin-bottom: 4px; - font-weight: 500; - } - - .form-group input, - .form-group textarea { - width: 100%; - padding: 8px 10px; - border: 1px solid #ddd; - border-radius: 6px; - font-size: 1em; - resize: none; - transition: border-color 0.3s ease; - } - - .form-group textarea { - min-height: 60px; - } +.service-list-wrap { + padding-top: .666rem; + position: relative; + height: 100%; +} - .checkbox-group { - display: flex; - align-items: center; - margin-bottom: 18px; - font-size: 0.98em; - } - - .checkbox-group input[type="checkbox"] { - margin-right: 8px; - accent-color: #b23c3c; - } +.service-list-wrap li{ + width:100%; +} - .submit-btn { - width: 100%; - padding: 14px 0; - background: #ddd; - color: #888; - border: none; - border-radius: 8px; - font-size: 1.1em; - font-weight: bold; - cursor: not-allowed; - transition: all 0.3s ease; - } - - .submit-btn.step-progress { - background: linear-gradient(45deg, #ddd, #bbb); - color: #666; - font-size: 0.95em; - } - - .submit-btn.ready { - background: #b23c3c; - color: #fff; - cursor: pointer; - animation: pulse 2s infinite; - } +.s_item{ + padding-bottom:20px; +} - @keyframes pulse { - 0% { transform: scale(1); } - 50% { transform: scale(1.02); } - 100% { transform: scale(1); } - } +.w_top_select .selt_info_wrap:first-child { + padding-top: 0; +} - /* Phone message styles (common.js PhoneValidator용) */ - .phone-message { - font-size: 12px; - margin-top: 5px; - padding: 4px 8px; - border-radius: 4px; - font-weight: 500; - transition: all 0.3s ease; - } - - .phone-message.error { - color: #ff0000; - background-color: #ffebee; - border: 1px solid #ffcdd2; - } - - .phone-message.warning { - color: #ff8c00; - background-color: #fff3e0; - border: 1px solid #ffcc80; - } - - .phone-message.success { - color: #008000; - background-color: #f1f8e9; - border: 1px solid #c8e6c9; - } - - .phone-message.info { - color: #2196f3; - background-color: #e3f2fd; - border: 1px solid #90caf9; - } +.w_top_select .selt_info_wrap { + padding: 20px 0; + display: flex; + align-items: center; + border-bottom: 1px solid #ddd; + +} - /* Birth date message styles */ - .birth-date-message { - font-size: 12px; - margin-top: 5px; - padding: 4px 8px; - border-radius: 4px; - font-weight: 500; - transition: all 0.3s ease; - } - - .birth-date-message.error { - color: #ff0000; - background-color: #ffebee; - border: 1px solid #ffcdd2; - } - - .birth-date-message.warning { - color: #ff8c00; - background-color: #fff3e0; - border: 1px solid #ffcc80; - } - - .birth-date-message.success { - color: #008000; - background-color: #f1f8e9; - border: 1px solid #c8e6c9; - } - - .birth-date-message.info { - color: #2196f3; - background-color: #e3f2fd; - border: 1px solid #90caf9; - } - /* Responsive Design */ - @media (max-width: 1199.98px) { - .reservation-container { - max-width: 960px !important; - gap: 16px; - padding: 20px 15px; - } - .box { - padding: 20px 14px; - } - } +.selt_info_wrap { + position: relative; + min-height: 4.5rem; +} - @media (max-width: 991.98px) { - .reservation-container { - max-width: 720px !important; - flex-direction: column; - gap: 24px; - height: auto; - padding: 20px 15px; - } - .box { - min-height: unset; - min-width: unset; - } - - } +.w_top_select .selt_info_wrap .selt { + padding-top: 0; + padding-left: 10px; + padding-right: 0.5em; + width: 61%; +} - @media (max-width: 767.98px) { - .reservation-container { - max-width: 540px !important; - padding: 15px; - gap: 20px; - } - .box { - padding: 16px 12px; - } - .calendar-table th, - .calendar-table td { - width: 1.8em; - height: 1.8em; - } - .time-btn { - min-width: 70px; - font-size: 0.95em; - } - } +.item_subprice { + min-height: 42px; +} + +.item_subprice>span{ + font-size:1.8rem; +} + + +.w_top_select .selt_info_wrap .info { + position: relative; + padding-right: 30px; + width: 45%; + top: 0.7rem; + width: 9em; +} + +.w_top_select .selt_info_wrap .info div{ + display:block; + text-align:right; +} + +.w_top_select .selt_info_wrap .info button { + position: absolute; + top: 1rem; + right: 0; +} + +.bn{ + border:none; + background-color:#fff; +} + +button > img { + display: block; +} + +img { + border-style: none; +} + +.d-block{ + display:block; +} + +.original_price { + color: #757575; + opacity: 0.7; +} + +.discount_price { + font-family: 'Campton', Sans-serif; + font-weight: 600; + font-size:2rem; + color: #A73439; +} + + + +.section-botton_div .total { + background-color: #F5F5F5; + border-top: 2px solid #A73439; +} + +.section-botton_div .total { + position: relative; + background-color: #e6e6e6; + padding: 20px 20px 15px; + font-size: 16px; +} + +.border-t.dk { + border-color: #221e1f; +} + +.section-botton_div{ + position:absolute; + bottom:0; + left:0; + width:100%; +} + + +.section-botton_div .total .left { + position: absolute; + top: 2.5rem; + left: 1.5rem; + font-size:1.8rem; +} + +.section-botton_div .total .right { + text-align: right; + padding-left: 5em; + padding-bottom: 1rem; + line-height: 1.5rem; +} + + +.section-botton_div .total .txt-small { + font-size: 9pt; + line-height: 1.5em; + opacity: 0.7; + font-weight: 400; + letter-spacing: -1px; +} + +.total_price { + font-family: 'Campton', Sans-serif; + font-weight: 600; + color: #A73439; +} + +.calender_div{ + position:relative; + padding:30px; + height:460px; +} + +.tui-datepicker { + position:relative; +} + +.customer-info_div{ + padding:20px 30px; + height:460px; +} +.customer-info_div .form-label{ + float: none; + padding-top: 0; + width: 100%; + display: block; + margin-bottom: 4px; + color: #444; + font-weight: 500; + font-size: 2rem; + margin-top: 0; +} + +.form-box{ + margin-top:10px; +} + +.form-box > .right_sec { + float: none; + width: 100%; + flex-wrap: wrap; + gap: 8px 4px; +} + +.fm_ctrl { + display: block; + width: 100%; + padding: 7px 5px !important; + font-size: 1.7rem; + line-height: 1; + background-color: #fff; + background-clip: padding-box; + border: 1px solid #ced4da; + border-radius:3px; + transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out; +} + +.__counsl_wrap .wsnwp { + position: relative; + display: flex; + justify-content: center; + align-items: center; + border: 1px solid #A73439; + border-radius: 5px; + overflow: hidden; +} + +.__counsl_wrap .wsnwp > label { + width: 50%; + text-align: center; + margin-bottom:0px !important; +} + +._cs-radio input[type=radio]:not(old):checked + .r_visible > span { + background-color: #A73439; + color: #FFFFFF; +} + +._cs-radio input[type=radio] + .r_visible > span { + background-color: #FFFFFF; + display: block; + width: 100%; + height: 100%; + padding: 7px 0; + color: #A73439; + cursor: pointer; +} + +._cs-radio input[type=radio]:not(old) { + width: 0; + margin: 0; + padding: 0; + opacity: 0; + font-size: 1em; +} + +._cs-radio input[type="radio"] { + display: none; +} + +.request_memo{ + width:100%; + font-size: 1.7rem; + padding:3px; +} + +.section-bottom_div{ + position:relative; + width:100%; +} + + + +.b-border{ + border-bottom:solid 1px #ddd; +} + +.time_div{ + margin:15px 0px; +} +.time-grid { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 16px 12px; /* 세로, 가로 간격 */ + max-width: 350px; + margin: 0 auto; +} +.time-btn { + display: inline-block; + width: 100%; + padding: 10px 0; + border: 1px solid #bbb; + border-radius: 20px; + background: #fff; + color: #444; + font-size: 1.3rem; + text-align: center; + cursor: pointer; + transition: background 0.2s, color 0.2s, border 0.2s; +} +.time-btn.active { + background: #007bff; + color: #fff; + border-color: #007bff; +} + + +.tui-calendar-date.tui-calendar-sun { + color: #e74c3c !important; +} + +/* 토요일: 회색 */ +.tui-calendar-date.tui-calendar-sat { + color: #0000ff !important; +} + +.tui-datepicker-type-date{ + width:100% !important; +} + +/* 달력 전체 폰트 크기 및 셀 크기 키우기 */ +.tui-datepicker { + width:83%; + font-size: 22px !important; /* 달력 전체 폰트 크기 */ +} + +.tui-calendar { + width:100% !important; + font-size: 22px !important; /* 달력 내부 폰트 크기 */ +} + +.tui-calendar-date { + font-size: 22px !important; /* 날짜 숫자 크기 */ + min-width: 48px; + min-height: 48px; + line-height: 48px; +} + +/* 요일(일~토) 폰트 크기 */ +.tui-calendar-day { + font-size: 20px !important; +} + +/* 달력 헤더(년/월) 폰트 크기 */ +.tui-calendar-header { + font-size: 24px !important; +} + +/* 네비게이션(이전/다음) 버튼 크기 */ +.tui-calendar-btn { + font-size: 24px !important; + width: 40px; + height: 40px; +} + +.selected-time_div{ + padding:10px 30px; + text-align:center; +} + +.selected-time_div>span{ + display:inline-block; + +} + +.selected-time_div .tit_span{ + color:#6a6a6a; + font-size:1.5rem; + width:20%; + text-align:center; +} +.person-cnt_span{ + color:#0080ff; + font-size:2rem; +} +.person-cnt_span>b{ + color:#6a6a6a; + font-size:1.5rem; +} + +.checkbox-area_div{ + padding:30px; + min-height:240px; +} + +.btn-primary { + border: 1px solid #a73439; + background-color: #a73439; + color: #fff; + width: 100%; + height: 56px; +} + +.disabled-sunday { + color: #e74c3c !important; /* 빨간색 */ + background: #f9d6d5 !important; /* 연한 빨간 배경 (선택) */ + cursor: not-allowed !important; +} + +.height850{ + height: 850px; +} + +/* ====== 반응형 웹 미디어 쿼리 추가 ====== */ + +/* 1. PC 기준(1200px 이상) */ +@media (min-width: 1200px) { + .fix_area { + min-width: 1200px; + width: 1200px; + margin: 0 auto; + padding: 0 16px; + } +} + +/* 2. 태블릿(1200px 미만 ~ 768px 이상) */ +@media (max-width: 1199px) and (min-width: 768px) { + .fix_area { + min-width: 100%; + width: 100%; + padding: 0 10px; + } + .reservation_ul { + gap: 12px; + } + .reservation_ul > li { + width: calc((100% - 24px) / 3); + border-radius: 16px; + } + .section_div { + height: 650px; + } + .calender_div, + .customer-info_div, + .checkbox-area_div { + padding: 16px; + height: 350px; + } + .selected-time_div { + padding: 8px 10px; + } + .btn-primary { + height: 48px; + font-size: 1.2rem; + } + .time-grid { + grid-template-columns: repeat(3, 1fr); + max-width: 270px; + } +} + +/* 3. 모바일(767px 이하) */ +@media (max-width: 767px) { + .fix_area { + min-width: 100%; + width: 100%; + padding: 0 4px; + } + .reservation_ul { + flex-direction: column; + gap: 12px; + } + .reservation_ul > li { + width: 100%; + border-radius: 12px; + } + .section_div { + height: auto; + min-height: 500px; + padding: 0; + } + .section_div_wrap, + .reservation-box_div, + .main-item-info, + .service-list-wrap, + .customer-info_div, + .calender_div, + .checkbox-area_div { + position: static; + width: 100%; + height: auto; + padding: 10px 4px; + } + .tit-box_div { + padding: 1rem 1rem 0; + gap: 10px; + flex-direction: column; + align-items: flex-start; + } + .step_span, + .form-label, + .item_subprice > span, + .discount_price, + .total_price, + .person-cnt_span { + font-size: 1.2rem !important; + } + .w_top_select .selt_info_wrap { + flex-direction: column; + align-items: flex-start; + padding: 10px 0; + } + .w_top_select .selt_info_wrap .selt, + .w_top_select .selt_info_wrap .info { + width: 100%; + padding: 0; + text-align: left; + } + .section-botton_div .total { + padding: 10px 4px 10px; + font-size: 1rem; + } + .section-botton_div .total .left, + .section-botton_div .total .right { + position: static; + padding: 0; + font-size: 1rem; + text-align: left; + } + .selected-time_div { + padding: 4px 0; + font-size: 1rem; + } + .selected-time_div .tit_span { + font-size: 1rem; + width: auto; + } + .btn-primary { + height: 44px; + font-size: 1rem; + } + .time-grid { + grid-template-columns: repeat(2, 1fr); + max-width: 180px; + gap: 8px 6px; + } + .tui-datepicker, + .tui-calendar { + width: 100% !important; + font-size: 1rem !important; + } + .tui-calendar-date, + .tui-calendar-day, + .tui-calendar-header, + .tui-calendar-btn { + font-size: 1rem !important; + min-width: 32px; + min-height: 32px; + line-height: 32px; + } +} + +/* ====== 끝 ====== */ - @media (max-width: 575.98px) { - .reservation-container { - max-width: 100% !important; - padding: 10px; - gap: 16px; - } - .box { - padding: 16px 8px; - } - .calendar-table th, - .calendar-table td { - width: 1.5em; - height: 1.5em; - font-size: 0.9em; - } - .time-btn { - min-width: 60px; - font-size: 0.9em; - padding: 6px 0; - } - .step-title { - font-size: 1em; - } - .service-item { - font-size: 1em; - } - } - .calendar-table td.disabled { - color: #ccc; - cursor: not-allowed; - pointer-events: none; - background: none !important; - } - - .calendar-table td.disabled:hover { - background: none !important; - cursor: not-allowed !important; - } \ No newline at end of file diff --git a/src/main/resources/templates/web/service/makeReservation.html b/src/main/resources/templates/web/service/makeReservation.html index ad9336c..1bff610 100644 --- a/src/main/resources/templates/web/service/makeReservation.html +++ b/src/main/resources/templates/web/service/makeReservation.html @@ -5,7 +5,467 @@ layout:decorate="~{/web/layout/layout}"> - + @@ -107,10 +567,7 @@ '2025-10-07', // 추석연휴 '2025-10-08', // 추석 대체휴일 '2025-10-09', // 한글날 - '2025-01-01', // 신정 - '2025-12-18', // 신정 - '2025-12-19', // 신정 - '2025-12-20', // 신정 + '2026-01-01', // 신정 // 필요에 따라 날짜 추가 ];