diff --git a/src/main/resources/static/css/web/service/makeReservation.css b/src/main/resources/static/css/web/service/makeReservation.css index 1cee355..753770d 100644 --- a/src/main/resources/static/css/web/service/makeReservation.css +++ b/src/main/resources/static/css/web/service/makeReservation.css @@ -1,616 +1,459 @@ -.fix_area { - min-width: 1200px; - width: 1200px; - margin: 0 auto; - padding: 0 16px; -} - -.contents_area{ - margin-top:50px; - margin-bottom:30px; -} - -.reservation_ul{ - display: flex; - gap: 20px; -} - -.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; - -} - -.section_div{ - position: relative; - height: 800px; - background-color: #f5f5f5; - border: 1px solid #ddd; - overflow: hidden; -} - -.section_div_wrap { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - background-color: #fff; -} - -.tit-box_div{ - position: relative; - padding: 1.6rem 2.8rem 0; - display: flex; - gap: 19px; - align-items: center; -} - - -.step_span{ - color: #A73439; - font-size:2rem; -} - -.reservation-box_div { - position: absolute; - top: 60px; - left: 0; - right: 0; - bottom: 0; - padding: 1rem; -} - -.main-item-info{ - position: relative; - height: 100%; -} - -.w_top_select { - height: calc(100% - 155px); - overflow-y: auto; - overflow-x: hidden; -} - -.service-list-wrap { - padding-top: .666rem; - position: relative; - height: 100%; -} - -.service-list-wrap li{ - width:100%; -} - -.s_item{ - padding-bottom:20px; -} - -.w_top_select .selt_info_wrap:first-child { - padding-top: 0; -} - -.w_top_select .selt_info_wrap { - padding: 20px 0; - display: flex; - align-items: center; - border-bottom: 1px solid #ddd; - -} - - -.selt_info_wrap { - position: relative; - min-height: 4.5rem; -} - -.w_top_select .selt_info_wrap .selt { - padding-top: 0; - padding-left: 10px; - padding-right: 0.5em; - width: 61%; -} - -.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; - } -} - -/* ====== 끝 ====== */ - +* { + 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; + } + + /* 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; + } + + .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; + } + + .step-title { + color: #b23c3c; + font-weight: 700; + font-size: 1.1em; + margin-bottom: 12px; + letter-spacing: 0.02em; + transition: color 0.3s ease; + } + + .step-title.completed { + color: #008000 !important; + } + + /* 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; + } + + /* 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; + } + + .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; + } + + /* 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; + } + + /* 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; + } + + .person-count { + margin-top: 12px; + font-size: 0.98em; + color: #888; + } + + /* 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; + } + + .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; + } + + .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; + } + + @keyframes pulse { + 0% { transform: scale(1); } + 50% { transform: scale(1.02); } + 100% { transform: scale(1); } + } + + /* 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; + } + + /* 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; + } + } + + @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; + } + + } + + @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; + } + } + + @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