html, body {
    overflow-x: hidden;
}

/* 기본 바디 및 텍스트 설정 */
body {
    font-family: "Nanum Gothic", sans-serif;
    background-color: #f3f3f3;  /* 매우 밝은 회색 배경 */
    color: #333;
    margin: 0 auto;
    padding: 20px 0;
    text-align: center;
    min-width: 300px;
	max-width: 100%;
    width: 100%;
    box-sizing: border-box;
}

h1, h2, h3 {
    color:#0C71C3;
	margin:5px auto;
}

img {
    margin:0 auto;
	width:100%;
	max-width:480px;

}

/* 폼 컨테이너: 모바일에서는 90% 너비, PC에서는 최대 900px까지 */
form {
    background-color: #ffffff;
    padding: 20px;
    border-radius: 15px;
    width: 100%;
    max-width: 100%;
    margin: 20px auto;
    display: inline-block;
    text-align: center;
    margin-top: 20px;
	box-sizing: border-box;
}

form label {
    font-weight: bold;
	padding:10px;
}

form p {
    font-weight: bold;
}

.tw_nm label {
    font-weight:400;
}

input[type="text"], input[type="date"], select, textarea {
    width: 90%;
	border: none;
    border-bottom: 1px solid #ccc;
    outline: none;
    transition: border-bottom 0.3s ease-in-out;
    padding: 8px;
    margin: 20px 0;
    display: block;
    margin-left: auto;
    margin-right: auto;
}

.ta_bt {
	border-top:1px solid #ccc;
}

select {
	width:85%;
}

input[type="text"]:focus {
	border-bottom: 2px solid #0C71C3;
	background-color:#f2f2f2;
}

/* 기본 체크박스 숨기기 */
input[type="checkbox"], input[type="radio"] {
  display: none;
}
/* label을 버튼처럼 보이게 스타일링 */
.checkbox-label {
	display: inline-flex;
	justify-content: center;     /* 가로 중앙 정렬 */
	align-items: center;         /* 세로 중앙 정렬 */
	padding: 10px 20px;
	margin: 5px;
	border: 1px solid #ddd;
	border-radius: 4px;
	cursor: pointer;
	transition: background-color 0.3s ease, border-color 0.3s ease, color 0.3s ease;
	font-size:14px;
	font-weight:400;
}

/* 체크박스가 선택되었을 때 label 스타일 적용 */
input[type="checkbox"]:checked + .checkbox-label {
	background-color: #0C71C3;
	border-color: #0C71C3;
	color: #fff;
}

input[type="radio"]:checked + .checkbox-label {
	background-color: #0C71C3;
	border-color: #0C71C3;
	color: #fff;
}

.form-inline {
    display: flex;
    align-items: center;
}

.form-inline label {
    margin-right: 10px;
    white-space: nowrap; /* 레이블이 길어져도 한 줄에 유지 */
}

.form-inline input[type="text"],
.form-inline input[type="date"],
.form-inline select {
    flex: 1;         /* 남은 공간을 채우도록 */
    margin: 0 20px 0 0;       /* 불필요한 여백 제거 */
}

/* 체크박스 그룹 스타일 */
.checkbox-group {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 10px;
    margin: 0 10px 15px 10px;
}
.checkbox-group label {
	flex:1;
    display: inline-flex;
    align-items: center;
    margin: 5px;
}

.checkbox-group2 {
	margin: 0 10px 15px 10px;
    display: grid;
    gap: 10px;
    /* 기본 열 수를 설정할 수 있으며, 필요시 아래의 cols-* 클래스로 덮어씁니다. */
    grid-template-columns: repeat(3, 1fr);
}

.checkbox-group2 p {
    grid-column: 1 / -1;
    margin-bottom: 10px; /* 필요시 간격 조절 */
}

.checkbox-group2 label {
    display: flex;
    align-items: center;
	margin: 0 5px;
}

.checkbox-group2 .full-width {
    grid-column: 1 / -1;
}

.checkbox-group2.cols-1 { grid-template-columns: repeat(1, 1fr); }
.checkbox-group2.cols-2 { grid-template-columns: repeat(2, 1fr); }
.checkbox-group2.cols-3 { grid-template-columns: repeat(3, 1fr); }
.checkbox-group2.cols-4 { grid-template-columns: repeat(4, 1fr); }
.checkbox-group2.cols-5 { grid-template-columns: repeat(5, 1fr); }
.checkbox-group2.cols-6 { grid-template-columns: repeat(6, 1fr); }
.checkbox-group2.cols-7 { grid-template-columns: repeat(7, 1fr); }
.checkbox-group2.cols-8 { grid-template-columns: repeat(8, 1fr); }
.checkbox-group2.cols-9 { grid-template-columns: repeat(9, 1fr); }
.checkbox-group2.cols-10 { grid-template-columns: repeat(10, 1fr); }


.jc_c {
	justify-content: center;
}


/* 라디오 그룹 스타일 */
.radio-group {
    display: flex;
	flex-wrap: wrap;
    justify-content: center;
    gap: 10px;
    margin: 0 10px 15px 10px;
}
.radio-group label {
    flex:1;
	display: inline-flex;
    align-items: center;
    margin: 5px;
}

/* 버튼 스타일 */
button, input[type="submit"] {
    background-color: #0C71C3;
    border: none;
    color: #fff;
    padding: 10px 20px;
    font-size: 16px;
    border-radius: 4px;
    cursor: pointer;
    text-align: center;
    margin: 0 auto;
}
button:hover, input[type="submit"]:hover {
    background-color: #08508b;
}

/* 추천 상세 결과 페이지: 테이블 스타일 */
table {
    width: 100%;
    border-collapse: collapse;
    margin-top: 20px;
	border-radius: 15px;
	vertical-align: middle;
}
table th, table td {
    border: 1px solid #ddd;
    padding: 10px;
    text-align: left;
}
table th {
    background-color: #0C71C3;
    color: #fff;
    text-align:center;
}
table td {
    word-wrap: break-word;
}

/* 추천 상세 결과 페이지 내 상품 항목 스타일 */
.product-table h3 {
    margin: 0;
    color: #2C7A7B;
}
.product-table p {
    margin: 5px 0;
}

/* 공통 여백 및 간격 */
p {
    line-height: 1.6;
    margin-bottom: 15px;
}

.error {
    color: red;
    margin-bottom: 10px;
}
.user-info {
    background-color: #e0f7fa;
    padding: 10px;
	margin:0 auto;
    /*border: 1px solid #b2ebf2;*/
    border-radius: 15px;
	font-weight:600;
}

/* 기본적으로 2열 레이아웃을 사용 */
.form-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 20px;
	margin-bottom:20px;
}

.active_on_pc {
    display: inline-block;
}

.active_on_mobile {
    display: none;
}

.rcmdt {
    background-color: #ffffff;
    padding: 20px;
    border-radius: 15px;
    width: 100%;
    max-width: 100%;
    margin: 20px auto;
    display: inline-block;
    text-align: center;
    margin-top: 20px;
	box-sizing: border-box;
}


/* 문단 다중 열 설정 */
.one-column {
    column-count: 1;
    column-gap: 20px;
}

.two-column {
    column-count: 2;
    column-gap: 20px;
}

.three-column {
    column-count: 3;
    column-gap: 20px;
}

.four-column {
    column-count: 4;
    column-gap: 20px;
}

.pc2m1 {
    column-count: 2;
    column-gap: 20px;
}

.pc3m1 {
    column-count: 3;
    column-gap: 20px;
}

.day-checkboxes {
	margin-bottom:20px;
}

.day-checkboxes label {
	font-weight:400;
}

.additional-services {
		display: flex;
        flex-direction: row;
        gap: 20px;
        justify-content: center;
		margin-top:20px;
}

.additional-services > div {
        flex: 1;
}

.service-group {
	border-bottom:1px solid #ddd;
}

.service-group p {
	margin:15px 0 5px 0;
}

.s_title {
	font-size:20px;
	color:#0C71C3;
	margin:5px auto;
	margin-left:10px;
}

.s_titlebar {
	width:10px;
	height:32px;
	background-color:#0C71C3;
	margin:5px 5px 5px 10px;
}

.vline {
	width:1px;
	height: calc(100% - 20px);
	min-height:50px;
	background-color:#ddd;
}

.inline-row {
    display: inline-flex;
    align-items: center; /* 수직 중앙 정렬 */
}

.jbc {
	font-size:12px;
	color:#555;
	font-weight:400;
}

.dspb {
	display:block;
}

.dspn {
    display:none;
}

.dspib {
	display:inline-block;
	vertical-align: middle;
}

.fs14 {
	font-size:14px;
}

.fs18 {
	font-size:18px;
}

.fs20 {
	font-size:20px;
}

.fc1 {
	color:#0C71C3;
}

.fc2 {
    color:#888;
}

.fw_n {
	font-weight:400;
}

.fw_b {
	font-weight:600;
}

.mg20 {
	margin:20px;
}

.mg5 {
	margin:5px auto;
}

.mg0 {
	margin:0px;
}

.mg5_na {
	margin:5px;
}

.mgt0 {
	margin-top:0;
}

.mgt5 {
	margin-top:5px;
}

.mgt10 {
	margin-top:10px;
}

.mgt15 {
	margin-top:15px;
}

.mgt20 {
	margin-top:20px;
}

.mgt25 {
	margin-top:25px;
}

.mmt30 {
	margin-top:30px;
}

.mgr5 {
	margin-right:5px;
}

.mgr15 {
	margin-right:15px;
}

.mgr20 {
	margin-right:20px;
}

.mgl5 {
	margin-left:5px;
}

.mgl30 {
	margin-left:30px;
}

.mgb5 {
	margin-bottom:5px;
}

.mgb15 {
	margin-bottom:15px;
}

.mgb25 {
	margin-bottom:25px;
}

.mgb-25 {
	margin-bottom:-25px;
}

.pl30 {
	padding-left:30px;
}

.p7 {
	padding:7px;
}

.p10 {
	padding:10px;
}

.ptb0lr20 {
	padding:0 20px;
}

.tal {
	text-align:left;
}

.tac {
	text-align:center;
}

.tar {
	text-align:right;
}

.w20p {
	width:20%;
}

.btnw100 {
	width:100%;
}

.pointtext {
    color:#0C71C3;
	font-weight:600;
}

.pointtitletext {
	font-size:34px;
    color:#0C71C3;
	font-weight:600;
}

.hidden-content {
	margin-top:10px;
    max-height: 0;
    overflow: hidden;
    transition: max-height 1s ease;
	font-size:14px;
	text-align:left;
	padding:0 10px;
}
.hidden-content.active {
    max-height: 500px; /* 내용 높이에 맞춰 적절한 값으로 조정하세요 */
}

.contentsbox {
    max-width: 480px;
    margin: 0 auto;
    padding: 20px;
    background-color: #fff;
    border-radius: 15px;
    box-sizing: border-box;
    width: 100%;
    overflow-x: hidden;
}

.contentsbox img {
	max-width: 100%;
    height: auto;
    display: block;
}

.itembox {
	width:100%;
	margin:10px auto;
	padding:10px;
	border: 1px solid #ddd;
    border-radius: 15px;
	box-sizing: border-box;
}

.itembox_hs {
	width:100%;
	margin:10px auto;
	padding:10px;
    border-radius: 15px;
	box-sizing: border-box;
    background: #f8f9fa;
    cursor: pointer;
    transition: all 0.1s; 
}

.itembox_hs.completed {
    background: #d4eeff !important;
}
.itembox_hs:hover {
    background: rgb(245, 248, 255);
}


/* 각 상품 항목 전체를 감싸는 영역 */
/*.product-item {
    margin-bottom: 20px;
    border-bottom: 1px solid #eee;
    padding-bottom: 10px;
}*/

/* 상품명을 한 줄에 배치 */
.product-name {
    width: 100%;
    text-align: center;
    font-weight: bold;
    margin-bottom: 5px;
}

/* 체크박스와 서비스 요일 선택 영역의 행 스타일 */
.product-row {
    display: flex;
    align-items: center;
    margin: 10px 0;
	border-bottom:1px solid #ddd;
}

/* 공통 제품 컬럼 스타일 (텍스트 가운데 정렬) */
.product-col {
    text-align: center;
}

/* 각 컬럼별 flex 크기 */
.col-1 {
    flex: 1;
}
.col-4 {
    flex: 4;
    gap: 1px; /* 필요에 따라 gap 값을 조정하세요 */
}


.spinner {
    width: 24px;
    height: 24px;
    border: 3px solid #ccc;
    border-top: 3px solid #0C71C3;
    border-radius: 50%;
    animation: spin 1s linear infinite;
    margin: 0 auto;
}

@keyframes spin {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}


.flex-row-between {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 10px;
}

.info-text {
    flex: 1 1 80%;
    text-align: left;
}

.info-button {
    flex: 0 0 20%;
    text-align: right;
}

.btn-select {
    width: 100%;
}

.status { 
    text-align: center; 
    padding: 20px; 
    background: #e8f5e8; 
    border-radius: 10px; 
    margin: 20px 0;
    font-weight:bold;
}

.status a {
    text-decoration: none;
    color:#333;
}

.status img {
    width: 60px;
    height: auto;
    margin-bottom: 5px;
}

.callicon {
    display: flex;
    justify-content: center;
    gap: 40px;
    align-items: flex-start;
}






/* 미디어 쿼리: 모바일/태블릿 (최대 768px) */
@media (max-width: 768px) {
    body {
        padding: 10px 0;
    }
    form {
		width:100%;
        padding: 20px;
    }
    input[type="text"], input[type="date"], select, textarea {
        width: 80%;
    }
    .toggle-group-container,
    .toggle-group-2col,
    .toggle-group-3col {
        width: 90%;
        max-width: none;
    }
	
	select {
		width:85%;
	}
	
    button, input[type="submit"] {
        width: 90%;
        font-size: 16px;
    }
	
	form label {
		font-size:14px;
		font-weight: bold;
		padding:10px;
	}

    /* 태블릿 1열 레이아웃을 사용 */
    .form-grid {
        display: grid;
        grid-template-columns: 1fr;
        gap: 10px;
    }
    .active_on_pc {
        display: none;
    }
    
    .active_on_mobile {
        display: block;
    }
    .pc2m1 {
        column-count: 1;
        column-gap: 20px;
    }
	
	.pc3m1 {
		column-count: 1;
		column-gap: 20px;
	}
	
	.additional-services {
		display: block;
    }
}
	

/* 미디어 쿼리: 매우 작은 화면 (최대 480px) */
@media (max-width: 480px) {
    h1, h2, h3, h4, h5, h6 {
        font-size: 1.5em;
    }
    button, input[type="submit"] {
        font-size: 14px;
        padding: 8px 15px;
    }
    /* 태블릿 1열 레이아웃을 사용 */
    .form-grid {
        display: grid;
        grid-template-columns: 1fr;
        gap: 10px;
    }
    .active_on_pc {
        display: none;
    }
    
    .active_on_mobile {
        display: block;
    }
    .pc2m1 {
        column-count: 1;
        column-gap: 20px;
    }
	.pc3m1 {
		column-count: 1;
		column-gap: 20px;
	}
}