diff --git a/src/main/resources/static/css/web/service/makeReservation.css b/src/main/resources/static/css/web/service/makeReservation.css
index 037299a..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
diff --git a/src/main/resources/templates/web/service/makeReservation.html b/src/main/resources/templates/web/service/makeReservation.html
index 1bff610..ad9336c 100644
--- a/src/main/resources/templates/web/service/makeReservation.html
+++ b/src/main/resources/templates/web/service/makeReservation.html
@@ -5,467 +5,7 @@
layout:decorate="~{/web/layout/layout}">
-
+
@@ -567,7 +107,10 @@
'2025-10-07', // 추석연휴
'2025-10-08', // 추석 대체휴일
'2025-10-09', // 한글날
- '2026-01-01', // 신정
+ '2025-01-01', // 신정
+ '2025-12-18', // 신정
+ '2025-12-19', // 신정
+ '2025-12-20', // 신정
// 필요에 따라 날짜 추가
];