/* BASIC css start */
body {
    font-family: 'Pretendard', sans-serif;
    margin: 0;
    color: #111111;
    overflow-x: hidden; /* .personal_warp의 100vw 전체화면 기법(다른 개별페이지와 동일)이 뷰포트 스크롤바 폭만큼
                            넘쳐서 가로 스크롤바를 만들던 것 방지   boutique/brand와 동일하게 추가 */
}


img {
    border: none;
}
a img {
    border: none;
}

h1 {
    margin: 0 0 18px 0;
    font-size: 20px;
    text-align: left;
    max-width: 980px;
    margin-left: 24px;
}

/* 메인 레이아웃 */
.main-layout {
    display: flex;
    gap: 45px;
    align-items: center;
    margin: 50px auto 50px auto;
}

.preview-area {
    flex: 1 1 0;
    min-width: 360px;
    display: flex;
    justify-content: center;
    align-items: center;
}

.right_fixed { display: none; }

.personal_warp { width: 100vw; position: relative; left: 50%; right: 50%; margin-left: -50vw; margin-right: -50vw; padding: 0; }

/* 왼쪽 미리보기 세로 고정 영역 컨테이너 */
.preview-container-box {
    width: 100%;
    max-width: 360px;
    display: flex;
    flex-direction: column;
    align-items: center;
}

.parent_warp { width: 100%; max-width: 1480px; position: relative; margin: 0 auto; }
.craftsman_img { width: 100%; }


.ring-display-area {
    width: 100%;
    height: 360px; /* 고정값으로 마크업 가변 여백 수치를 완전히 동결 */
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 45px;
}

/* 반지 외경 기본 체급 (360px) */
.ring-wrapper { 
    width: 100%; 
    max-width: 360px; 
    margin: 0 auto; 
    transition: max-width 0.35s cubic-bezier(0.25, 1, 0.5, 1); 
}

/* 펜던트 모드 외경 (230px) */
.ring-wrapper.pendant-mode {
    max-width: 230px;
}

.ring-preview-container { width:100%; padding-top:100%; position:relative; }

/* 반지/펜던트 외부선 공용 */
.ring-outer { position:absolute; inset:0; border: 1px solid #ddd6ce; border-radius:50%; background-color: #ffffff; box-shadow: 0 10px 30px rgba(0,0,0,0.015); }

/* [반지 기본 내부선 폭] 360px 기준 내경 78% 지정 */
.ring-inner { 
    width: 78%; 
    height: 78%; 
    position: absolute; 
    top: 50%; 
    left: 50%; 
    transform: translate(-50%,-50%); 
    border: 1px solid #ddd6ce; 
    border-radius: 50%; 
    z-index: 1; 
    transition: width 0.35s ease, height 0.35s ease;
}

/* [두께 동결 역산] 외경이 230px로 줄어들어도 실물 폭 두께 비율이 정교하게 동결되도록 유지 */
.ring-wrapper.pendant-mode .ring-inner {
    width: 65.56%;
    height: 65.56%;
}

.engraving-overlay { position:absolute; inset:0; pointer-events:none; z-index:2; font-weight:500; color:#3a3a3a; }

.char-wrapper {
    position:absolute;
    left:50%; top:50%;
    width:0; height:0;
    transform-origin:center center;
}
.char-wrapper > span,
.char-wrapper > img {
    position:absolute;
    left:50%; top:50%;
    transform:translate(-50%,-50%);
    line-height:1;
}

.option_titlename { font-family: 'Noto Serif KR', serif !important; font-size: 2.2rem; text-align: center; font-weight: 600; letter-spacing: -0.01em; line-height: 1.2; padding: 100px 0px 0px 0px; }
.option_subname { font-size: 1rem; text-align: center; line-height: 1.8rem; letter-spacing: initial; padding: 30px 0px 50px 0px; }

.custom_warp { padding: 50px 0px; }
.panel-area { width: 45%; margin: 0px 20px 0px 20px; }
.options-area { width:100%; }
.option-group { display: flex; align-items: center; justify-content: space-between; } 
.option-group label { width: 20%; flex-shrink: 0; margin-bottom: 0px; font-family: 'Josefin Sans', sans-serif;  font-size: 14px; letter-spacing: 0.08em; color: #8e8171; font-weight: 400; }

.engraving-input-group {
    display: flex;
    flex-direction: column; 
    align-items: stretch !important;
    width: 100%;
    padding-top: 25px;
}

.engraving-header {
    display: flex;
    justify-content: space-between; 
    align-items: center;
    width: 100%;
    margin-bottom: 10px; 
}

/* RESET 버튼 */
.engraving-header .clear_btn {
    position: static !important;
    font-family: 'Josefin Sans', sans-serif; 
    font-size: 11px; 
    letter-spacing: 0.05em; 
    color: #999999; 
    text-decoration: underline; 
    text-underline-offset: 3px;
    background: none;
    border: none;
    padding: 0;
    cursor: pointer;
    transition: color 0.2s ease; 
    display: flex;
    align-items: center;
}

.engraving-header .clear_btn:hover { 
    color: #111111 !important; 
}

.engraving-header label {
    margin: 0 !important;
    width: auto !important;
}

.engraving-input-group .input-wrapper {
    width: 100%;
}

/* 인풋창 라인 무드 */
#custom-engraving { 
    width: 100%; 
    font-family: 'Pretendard', sans-serif; 
    padding: 12px 0px 8px 0px; 
    border: none !important; 
    border-bottom: 1px solid #111111 !important;
    border-radius: 0px; 
    font-size: 14px; 
    box-sizing: border-box;
    letter-spacing: 0.1em;
    background: transparent; 
    color: #111111; 
}

/* [해결] 인풋창 및 아틀리에 입력창 활성화(포커스) 시 브라우저 테두리 전면 방지 */
#custom-engraving:focus,
.master-typing-area input:focus {
    outline: none !important;
    border: none !important;
    border-bottom: 1px solid #111111 !important;
    box-shadow: none !important;
}

/* 심볼 & 버튼 격자 */
.symbol-grid { display:flex; flex-wrap:wrap; gap:6px; }
.symbol-btn { padding: 8px; margin: 4px 2px 4px 0px; border: none; background: #ffffff; border-radius: 50%; cursor: pointer; width: 100%; min-width: 0; aspect-ratio: 1 / 1; height: auto; font-size: clamp(9px, 0.9vw, 11px); color: #444444; text-align: center; display: flex; align-items: center; justify-content: center; line-height: 1; box-shadow: 0 2px 5px rgba(0,0,0,0.03); transition: background 0.2s ease, color 0.2s ease,   transform 0.2s ease, box-shadow 0.2s ease; }
.symbol-btn:hover { 
    background: #111111; 
    color: #ffffff;
    transform: translateY(-1px);
}
.symbol-btn i {
    display: flex;
    align-items: center;
    justify-content: center;
}

.all-btn { margin: 4px 2px 4px 0px; width: 100%; min-width: 0; aspect-ratio: 1 / 1;  height: auto; font-size: clamp(8px, 0.85vw, 10px); font-weight: 600; font-family: 'Josefin Sans', sans-serif; text-transform: uppercase; color: #111111; background:#f4f0ea; border: none; border-radius: 50%; cursor: pointer; display: flex; align-items: center; justify-content: center; line-height: 1; box-shadow: 0 2px 5px rgba(0,0,0,0.03); transition: background 0.2s ease, color 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease; }
.all-btn:hover { 
    background: #111111; 
    color: #ffffff;
}

.number-grid {
    display: grid;
    grid-template-columns: repeat(16, minmax(0, 1fr));
    gap: clamp(4px, 0.8vw, 10px);
    margin-top: 6px;
}

/* 버튼 정렬 가이드 라인 레이블 마진 */
.roman-label { font-family: 'Josefin Sans', sans-serif; font-size: 14px; letter-spacing: 0.08em; color: #8e8171; font-weight: 400; margin: 35px 0px 12px 0px;}

/* 슬라이더 제어 */
.option-group .font-choise { flex: 1; height: 45px; border: none; border-bottom: 1px solid #111; background: transparent; font-size: 14px; margin-left: 20px; }
.option-group input[type="range"] { -webkit-appearance: none; appearance: none; flex: 1; height: 1px; background: #d8d2ca; border-radius: 2px; outline: none; margin: 0 0 0 20px; padding: 0; display: flex; align-items: center; }
.option-group input[type="range"]::-webkit-slider-thumb { -webkit-appearance: none; appearance: none; width: 12px; height: 12px; border-radius: 50%; background: #ffffff; border: 1px solid #a6a29e; cursor: pointer; transition: all 0.2s ease; margin-top: 0 !important; }
.option-group input[type="range"]::-webkit-slider-thumb:hover { background: #fbf9f7; border-color: #333333; transform: scale(1.1); }
.option-group input[type="range"]::-moz-range-thumb { width: 12px; height: 12px; border-radius: 50%; background: #ffffff; border: 1px solid #a6a29e; cursor: pointer; transition: all 0.2s ease; box-sizing: border-box; }
.option-group input[type="range"]::-moz-range-thumb:hover { background: #fbf9f7; border-color: #333333; transform: scale(1.1); }
.option-group input[type="range"]::-moz-range-progress { background: #e2dfdb; }

/* 하단 배너 및 정렬 셋 */
.anniversary_btn_wrap, .visit_btn_wrap, .kakao_btn_wrap { text-align: center; }
.anniversary_btn_wrap a, .visit_btn_wrap a, .kakao_btn_wrap a { display: inline-block; text-decoration: none; }

.personal_img { position: relative; }
.personal_img img { width: 100%; }
.personal_textbox { position: absolute; top: 45%; left: 30%; transform: translateX(-50%); text-align: left; color: #fff; }
.personal_title { font-family: 'Josefin Sans', sans-serif; letter-spacing: 0.1em; font-size: 2.0rem; font-weight: 500; color: #fff; margin-left: 0; } /* h1 전환 후 공통CSS의 h1,h2...{color:#1c1c1c}에 덮어쓰이지 않도록 명시. margin-left:0은 위쪽 전역 h1{margin-left:24px} 규칙이 절대위치된 타이틀을 서브타이틀 대비 24px 오른쪽으로 밀던 것 상쇄 */
.personal_subtitle { font-size: 1rem; text-align: left; line-height: 1.8rem; letter-spacing: initial; padding: 30px 0px 50px 0px; }

/* [피드백 1 적용] 기념일 / 방문예약하기 버튼 호버 시 바닥에서 위로 채워지는(Sweep Up) 모션 구현 */
.anniversary_btn, .visit_btn { 
    min-width: 200px; 
    text-align: center; 
    padding: 1.2em; 
    display: block; 
    margin: 0 auto; 
    font-size: 0.9rem; 
    border: 1px solid #111; 
    position: relative; 
    overflow: hidden; 
    background-color: #fff; /* 초기 베이스 색상 흰색 */
    color: #111; /* 초기 텍스트 색상 검정색 */
    z-index: 1; 
    transition: color 0.4s ease; 
}
.anniversary_btn::before, .visit_btn::before { 
    content: ""; 
    position: absolute; 
    bottom: 0; /* 바닥 완전 밀착 */
    left: 0; 
    width: 100%; 
    height: 100%; 
    background-color: #111111; /* 차오를 블랙 가상 색상 */
    z-index: -1; 
    transform: scaleY(0); 
    transform-origin: bottom; /* 애니메이션 축을 바닥으로 정밀 고정 */
    transition: transform 0.4s ease; 
}
.anniversary_btn:hover, .visit_btn:hover { 
    color: #fff; /* 호버 시 글자 흰색 반전 */
}
.anniversary_btn:hover::before, .visit_btn:hover::before { 
    transform: scaleY(1); /* 수직 상승 효과 구동 */
}

.marking_img { position: relative; }
.marking_img img { width: 100%; }
.marking_textbox { position: absolute; top: 65%; left: 50%; transform: translateX(-50%); text-align: center; color: #fff; }
.marking_title { font-family: 'Noto Serif KR', serif !important; font-size: 2.2rem; font-weight: 600; letter-spacing: -0.01em; line-height: 1.2; color: #fff; }
.marking_subtitle { font-size: 1.0rem; padding: 10px 0px 0px 0px; line-height: 1.8rem; }

.craftsman_group { padding: 50px 100px 0px 100px; }

/* 탄생석 인덱스 그리드 */
.birth_box { display:grid; grid-template-columns:repeat(4, 1fr); gap:55px 30px; background:#fafafa; padding:70px 60px; text-align:center; }
.birth_item { display:flex; flex-direction:column; align-items:center; }
.birth_item img { width:30px; height:30px; object-fit:contain; margin-bottom:18px; }
.birth_date { font-family:'Josefin Sans', sans-serif; font-size:11px; letter-spacing:0.18em; color:#c39562; margin-bottom:3px; }
.birth_name { font-family:'Josefin Sans', sans-serif; font-size:12px; letter-spacing:0.08em; color:#111111; }

@media (max-width:1024px) {
    .birth_box { grid-template-columns:repeat(3, 1fr); gap:45px 20px; padding:50px 30px; }
}
@media (max-width:768px) {
    .birth_box { grid-template-columns:repeat(2, 1fr); gap:40px 16px; padding:40px 20px; }
    .birth_item img { width:58px; height:58px; }
}

/* 웹폰트 타이핑 큐레이션 프리뷰 리스트 */ 
.webfont-warp { display: grid; grid-template-columns: repeat(3, 1fr); gap: 40px 30px; max-width: 1480px; margin: 0 auto;padding: 40px 0; }
.master-typing-area { width: 70%; margin: 0 auto 15px; }
.master-typing-area input { font-family: 'Pretendard', sans-serif; width: 100%; padding: 12px 0px 8px 0px; border: none !important; border-bottom: 1px solid #111111 !important; border-radius: 0px; font-size: 14px; box-sizing: border-box; background: transparent; color: #111111; }

.webfont_title { font-family: 'Noto Serif KR', serif !important; font-size: 2.2rem; text-align: center; font-weight: 600; letter-spacing: -0.01em; line-height: 1.2; padding: 100px 0px 0px 0px; }
.webfont_detail { font-size: 1rem; text-align: center; line-height: 1.8rem; letter-spacing: initial; padding: 30px 0px 70px 0px; }
.font-warp { border-bottom: none; padding: 25px; background-color: #fbfbf9; border-radius: 4px; box-sizing: border-box; display: flex; flex-direction: column; justify-content: space-between; min-height: 140px; transition: all 0.25s ease; }
.font-warp:hover { transform: translateY(-2px); background: #ffffff; }
.font-warp [id^="preview-"] { display: block !important; margin-top: auto !important; word-break: break-all !important; }

.font-preview-1 { font-family: 'Courgette', cursive !important; font-size: 24px; padding-left:10px; }
.font-preview-2 { font-family: 'Dancing Script', cursive !important; font-size: 25px; padding-left:10px; }
.font-preview-3 { font-family: 'Hahmlet', serif !important; font-size: 23px; padding-left:10px; letter-spacing: -0.04em; }
.font-preview-4 { font-family: 'Noto Serif KR', serif !important; font-size: 23px; padding-left:10px; }
.font-preview-5 { font-family: 'Noto Sans KR', sans-serif !important; font-size: 23px; padding-left:10px; }
.font-preview-6 { font-family: 'Nanum Pen Script', cursive !important; font-size: 33px; padding-left:10px; }
.font-preview-7 { font-family: 'Josefin Sans', sans-serif !important; font-size: 25px; padding-left:10px; }
.font-preview-8 { font-family: 'Playwrite DE SAS', cursive !important; font-size: 20px; padding-left:10px; }
.font-preview-9 { font-family: 'Beth Ellen', cursive !important; font-size: 19px; padding-left:10px; }
.font_typesize { display: flex; align-items: center; font-family: 'Josefin Sans', sans-serif; font-size: 14px; padding-bottom: 20px; }
.font-name { padding-right: 10px; }
.font-face-s { font-family: 'Lato', 'Noto Sans KR', sans-serif; line-height: 1; font-size: 12px; vertical-align: middle; color: #444746; }
.font-face-s:before { content: "|"; margin-right: 10px; }

/* 하단 정보 레이어 */ 
.what_title { font-family: 'Noto Serif KR', serif !important; font-size: 2.2rem; text-align: center; font-weight: 600; letter-spacing: -0.01em; line-height: 1.2; padding: 100px 0px 0px 0px; }
.what_detail { font-size: 1rem; text-align: center; line-height: 1.8rem; letter-spacing: initial; padding: 30px 0px 30px 0px; }
.kakao_info { letter-spacing: 0.1em; font-size: 0.9rem; text-align: center; line-height: 1.8rem; padding: 0px 0px 20px 0px; margin: 100px 0px 0px 0px; }
.kakao-link { display: inline-block; text-decoration: none; }
.kakao_btn { position: relative; display: inline-block; text-align: center; padding-bottom: 4px; color: #111; letter-spacing: 0.02em; font-size: 0.9rem; }
.kakao_btn::after { content: ""; position: absolute; left: 0; bottom: 0; width: 100%; height: 1px; background: #c7a97b; transform: scaleX(1); transform-origin: left; transition: transform 0.35s ease; }
.kakao-link:hover .kakao_btn::after { transform: scaleX(0); }

/* 이미지 레이아웃 전용 RING / PENDANT 탭 스타일링 */
.preview-tabs {
    display: flex;
    gap: 30px; /* 버튼 사이 여백 */
    justify-content: center;
    width: 100%;
}
.preview-tabs .tab-btn {
    flex: 1; /* 동일한 크기로 양분되도록 설정 */
    padding: 15px 0px 13px 0px;
    font-size: 13px;
    font-family: 'Josefin Sans', sans-serif;
    font-weight: 400;
    letter-spacing: 0.15em;
    color: #111111;
    background-color: #ffffff;
    border: 1px solid #e8e5e0;
    cursor: pointer;
    text-align: center;
    position: relative;
    overflow: hidden;
    z-index: 1;
    transition: color 0.4s ease, border-color 0.4s ease;
}

/* 기념일 컬렉션 버튼의 위에서 아래로 스르륵 내려오는 세로 스윕(Sweep) 인터랙션 가공 */
.preview-tabs .tab-btn::before {
    content: "";
    position: absolute;
    bottom: 0; /* 위에서 아래가 아닌 아래에서 위로 채워지도록 고정 수치 변경 */
    left: 0;
    width: 100%;
    height: 100%;
    background-color: #f3efe9; /* 연베이지 단색 배경 */
    z-index: -1;
    transform: scaleY(0);
    transform-origin: bottom; /* 스윕 모션 트랙의 기준축을 하단으로 정밀 고정 */
    transition: transform 0.4s ease;
}

/* 비활성화 버튼 호버 시 */
.preview-tabs .tab-btn:not(.active):hover {
    border-color: #f3efe9;
}

.preview-tabs .tab-btn:hover::before {
    transform: scaleY(1);
}

/* 활성화 버튼 디자인 */
.preview-tabs .tab-btn.active {
    color: #111111;
    background-color: #f3efe9;
    border-color: #f3efe9;
    font-weight: 400;
}

/* 활성화 상태에서도 스윕 트랙이 꽉 차 있도록 고정 */
.preview-tabs .tab-btn.active::before {
    transform: scaleY(1);
}


/* 아틀리에 하단 추천 가이드 바 디자인 (배경 및 심벌 배경색 제거 + 완벽 왼쪽 정렬) */
.atelier-guide-bar {
    display: flex;
    align-items: center;
    justify-content: flex-start; /* 완벽 왼쪽 정렬 고정 */
    flex-wrap: wrap;
    gap: 15px;
    width: 100%;
    max-width: 600px;
    margin: 15px auto 35px auto;
    padding: 12px 0px; /* 좌우 패딩을 0으로 깎아 입력창 시작선과 정교하게 매칭 */
    background-color: transparent; /* 바 배경색 제거 */
    border: none; /* 바 테두리 제거 */
    position: relative; /* 리셋버튼 우측 절대 정렬을 위한 기준점 부여 */
}

.atelier-guide-bar .guide-section {
    display: flex;
    align-items: center;
    gap: 12px;
}

.atelier-guide-bar .guide-label { font-family: 'Josefin Sans', sans-serif; font-size: 14px; font-weight: 400; color: #111111; letter-spacing: -0.01rem; }

.atelier-guide-bar .guide-chips {
    display: flex;
    align-items: center;
    gap: 0px;
    flex-wrap: wrap;
}

.atelier-guide-bar .guide-divider {
    width: 1px;
    height: 14px;
    background-color: #e5e0da;
    margin: 0 4px;
}

/* 가이드 칩 버튼 공용 디자인 스타일 (테두리 및 라운드 박스 흔적 전면 삭제) */
.atelier-chip-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: auto;
    height: 30px;
    padding: 0 2px !important;
    margin: 0 10px;
    background-color: transparent !important;
    border: none !important;
    border-radius: 0px !important; 
    box-shadow: none !important;
    font-family: 'Arial', sans-serif;
    font-size: 12px;
    color: #333333;
    cursor: pointer;
    position: relative;
    transition: color 0.2s ease-in-out;
}

/* [밑줄 모션] 마우스 호버 시 왼쪽에서 오른쪽으로 스르륵 생기는 언더라인 모션 구현 */
.atelier-chip-btn::after {
    content: "";
    position: absolute;
    left: 0;
    bottom: 2px;
    width: 100%;
    height: 1.5px;
    background-color: #111111;
    transform: scaleX(0);
    transform-origin: left;
    transition: transform 0.5s cubic-bezier(0.25, 1, 0.5, 1);
}

/* 호버 동작 바인딩 */
.atelier-chip-btn:hover {
    color: #000000 !important;
    background-color: transparent !important;
}

.atelier-chip-btn:hover::after {
    transform: scaleX(1);
}

.atelier-chip-btn.text-chip {
    font-family: 'Lato', 'Noto Sans KR', sans-serif;
    font-size: 14px;
    font-weight: 400;
    color: #555555;
    font-style: italic;
}

/* 신규 리셋 칩 버튼 전용 독립 스타일링 (가이드 칩과 무드를 맞추되 맨 오른쪽 강제 고정 정렬) */
.atelier-guide-bar .atelier-chip-btn.reset-chip { position: absolute; right: 0px !important; font-family: 'Josefin Sans', 'Pretendard', sans-serif; font-size: 13px; font-weight: 400; color: #111111; font-style: normal !important; }

.atelier-chip-btn.reset-chip i {
    font-size: 10px;
    margin-right: 4px;
    vertical-align: middle;
}

/* 모바일 전용 반응형 미디어쿼리 대응 */
@media (max-width: 768px) {
    .atelier-guide-bar {
        padding: 12px 15px;
        gap: 10px;
        margin-bottom: 25px;
    }
    .atelier-guide-bar .guide-divider {
        display: none; 
    }
    .atelier-chip-btn {
        height: 28px;
        font-size: 11px;
        padding: 0 4px !important;
    }
    .atelier-guide-bar .atelier-chip-btn.reset-chip {
        position: static !important; /* 모바일 반응형 뷰에서는 줄바꿈 흐름 전향 */
    }
}
/* BASIC css end */

