/* ==========================================================================
   contact-v2.html 전용 — BMD(brucemaudesign.com) Work 페이지 하단 Archive
   섹션 감성을 모티브로 한 독립형 컨택 페이지.

   2026-07-29(신규): 대표님이 기존 contact.html과는 별개로, BMD Archive
   행 리스트 특유의 "호버 시 왼쪽에서 썸네일이 스르륵 나타나며 텍스트가
   오른쪽으로 밀리는" 인터랙션 + 시공 문의 아코디언 토글 구조를 실험해보고
   싶다고 요청 — 완전히 새 파일(contact-v2.html/css/contact-v2.css)로 제작.

   디자인 토큰은 기존 페이지들과 동일하게 css/style.css(--color-noir/
   --color-blanc/--font-kr/--font-en/--line/--grid-margin)와 css/about.css
   (.about-page 고정 헤더, .about-display-kr/en, .about-copy,
   .about-roots-lead, .about-parallax* 아웃트로)를 그대로 상속. 이 파일은
   about.html/contact.html 어디에도 없던 새 컴포넌트(호버 썸네일-푸시 행,
   그리드 트랜지션 아코디언, 페이지 로드 페이드인)만 추가.

   실제 데이터(전화 010-7122-5202, 카카오톡 오픈채팅, 블로그/유튜브/
   인스타그램/월간 나눔 링크)는 contact.html과 동일하게 전부 실제 확인된
   값 그대로 재사용 — 새로 지어내지 않음.

   [확인 필요] 호버 시 나타나는 썸네일 이미지 — "전화 문의"/"카카오톡"/
   "시공 문의 안내" 3개 행 각각에 어울리는 실제 전용 사진이 없어(사이트
   카테고리 이미지 폴더는 전부 워터마크가 박힌 가짜 플레이스홀더로 이미
   확인됨 — about.css/contact.css 참고), contact.html의 시공 문의 섹션과
   동일하게 About 페이지 히어로 실사진(images/about/hero.jpg, 실제
   5712×4284)을 3개 행 모두에 공통으로 재사용. 전화/카카오톡처럼 사진과
   직접적 연관이 없는 항목까지 사진을 넣은 것은 BMD Archive 특유의 "행마다
   시각적 프리뷰가 있다"는 레이아웃 언어를 그대로 살리기 위한 절충이며,
   추후 각 항목에 맞는 실제 현장 사진이 생기면 src만 교체하면 됨.

   [디자인 결정] 공식 채널 5개 링크는 contact.html(밑줄 제거+호버 페이드)과
   달리 이번 지침에서 명시적으로 "밑줄 텍스트 링크 형태"를 요청받아 밑줄을
   그대로 유지 — about.css의 공용 .about-roots-link를 재사용하지 않고 이
   페이지 전용 .cv2-channel-link를 새로 정의(다른 페이지의 밑줄 제거
   결정과 충돌하지 않도록 완전히 분리된 네임스페이스로 작성).

   2026-07-29(2차 수정): 대표님이 첨부한 실제 brucemaudesign.com/work
   Archive 스크린샷 재확인 결과, 행이 [썸네일+타이틀(고정폭)] [설명 문장
   (가변폭)] [카테고리 태그(고정폭, 우측 정렬, 옅은 색)] 3단 그리드이고,
   호버 시 썸네일은 1열 안에서만 나타나 그 칸의 타이틀만 밀어내며 2·3열은
   전혀 움직이지 않는다는 걸 확인 — 기존 "행 전체가 통째로 밀리는" 구조를
   폐기하고 .cv2-row-grid(3단 grid)/.cv2-row-title-cell/.cv2-row-desc/
   .cv2-row-tag로 재작성.

   2026-07-29(3차 수정, 완전 재구성): 대표님이 데스크톱에 열려 있던 실제
   BMD Archive 탭만 기준으로 다시 정밀 분석 요청 — 3단 그리드가 오히려
   레퍼런스 느낌을 못 살린다는 피드백으로 좌우 2영역 구조로 단순화:
   [왼쪽 영역 .cv2-row-left] 썸네일(호버 시 등장)+타이틀(굵게)+보조
   상세문장(작게, 옅게)을 한 덩어리로 묶고, [오른쪽 영역 .cv2-row-tag]는
   카테고리 태그 하나만 우측 정렬로 남김. 타이틀은 h1급 "Archive."
   단일 타이틀로(마침표 포함, about-display-en 그대로 재사용 — 이미
   충분히 굵고 큰 대형 타이틀이라 별도 세리프 폰트 도입 없이 요건 충족).
   공식 채널 리스트도 메인 리스트와 동일한 헤어라인 리듬을 갖도록 각 링크
   사이에 얇은 구분선 추가(상세는 아래 SECTION 참고).

   2026-07-29(4차 수정, 단일 표로 완전 통합 + 모바일 강제 1줄): "Official
   Channels" 같은 영어 섹션 타이틀 자체를 없애고 전화/카카오톡/시공 문의/
   월간 나눔/블로그 2종/유튜브/인스타그램까지 8개 행을 전부 .cv2-row-list
   하나에 흡수, 오직 얇은 가로선만으로 연속 배치. 행 내부는 명시적으로
   요청받은 "가로 3분할(flex justify-content:space-between)" 구조로
   재작성: [.cv2-row-name-cell 왼쪽: 썸네일+이름, 고정폭] [.cv2-row-desc
   가운데: 상세 안내문, 가변폭] [.cv2-row-tag 오른쪽: 카테고리 태그,
   고정폭·우측정렬]. 이름 칸(.cv2-row-name-cell)은 폭을 고정(overflow:
   hidden)해 두어 호버 시 썸네일이 그 칸 "안에서만" 나타나며 이름 텍스트를
   밀어내고, 가운데/오른쪽 칸은 이전과 동일하게 위치가 전혀 바뀌지 않음.
   "모바일 포함 모든 화면에서 줄바꿈 없이 완벽한 1줄" 요청에 맞춰 이름·
   태그는 white-space:nowrap으로 절대 줄바꿈되지 않게 고정하고, 가운데
   상세문(.cv2-row-desc)은 공간이 부족한 좁은 화면에서 줄바꿈 대신
   text-overflow:ellipsis로 우아하게 축약되도록 처리(내용 전체는 각 행의
   실제 href/aria로 항상 접근 가능하므로 정보 손실 없음).

   2026-07-29(5차 수정, 영문 태그 삭제 + 3단 전부 한글 + 본문체 통일):
   매 행 오른쪽의 영문 카테고리 태그(Direct Call/KakaoTalk/...)를 완전히
   삭제 요청받아, 기존 .cv2-row-desc/.cv2-row-tag 2칸 구조를 .cv2-row-col2/
   .cv2-row-col3 두 개의 "동등한 한글 칸"으로 교체(기존 가운데 칸에 있던
   안내 문장을 두 칸으로 나눠 재배치). 두 칸 모두 flex:1 1 0으로 남은
   공간을 균등 분배하고 각자 ellipsis 축약. 모바일(~900px 미만)에서는
   "1,3단만 보이게" 요청에 따라 2번째 칸(.cv2-row-col2)을 display:none으로
   숨기고 이름 칸+3번째 칸만 노출, 3번째 칸이 남은 공간을 전부 차지하도록
   flex-grow 조정. 추가로 "모든 텍스트 스타일 같게, 볼드 없이 본문체처럼"
   요청에 따라 이름(.cv2-row-name)의 font-weight:700을 제거하고, 이름/
   2번째/3번째 칸 전부 about-copy와 동일한 폰트 값(500 weight, 동일
   크기·행간·opacity:.85)으로 통일 — 굵기/영문 대문자/자간 등 시각적
   차별 요소를 전부 제거해 세 칸이 완전히 같은 "본문 텍스트"처럼 보이도록
   처리.

   2026-07-29(6차 수정, index.html 폰트 값 1:1 통일 + 라인 얇게 + 3단만
   우측정렬): 대표님이 "이 페이지 작은 한글폰트가 index.html과 정말 같은
   값이냐"고 재확인 요청 — 대조 결과 5차 수정 때 썼던 값(about-copy 기준
   clamp 13~16.5px/opacity:.85)은 about.html/contact.html 쪽 캐논이었고,
   index.html 쪽 "작은 한글" 캐논(.hero-info .col2bis/.col3/.col4 li —
   서비스 목록·footer 리스트에 실제로 쓰이는 스타일, css/style.css 참고)은
   font-size clamp(14px,1.1vw,19px)/weight 500/letter-spacing normal/
   opacity 없이 완전 불투명(font-family도 var(--font-en), 한글은 fallback
   var(--font-kr)로 렌더링되어 실질적으로 동일)으로 서로 다른 값이었음 —
   index.html 쪽 값으로 1:1 맞춰 이름/2번째/3번째 칸 전부 재조정.
   추가로 "라인을 더 얇게"는 사이트 전역에서 두루 쓰이는 --line(2px)
   토큰을 직접 건드리면 다른 페이지에도 영향을 주므로, 이 페이지 전용
   --cv2-line(1px)을 새로 정의해 헤어라인만 얇게 적용(전역 토큰은 그대로
   유지). "3단만 오른쪽 정렬"은 .cv2-row-col3에만 text-align:right 추가
   (이름/2번째 칸은 계속 왼쪽 정렬).

   2026-07-29(7차 수정, 항목 재구성 + 여백 타이트하게 + 화살표/썸네일
   제거): 항목이 10개로 재구성되면서(contact-v2.html 상단 주석 참고)
   "라인과 텍스트 사이 간격이 너무 여유롭다"는 피드백에 따라 .cv2-row의
   상하 패딩을 대폭 축소(기존 clamp(20px,2.6vw,34px) → clamp(10px,1.3vw,
   16px))해 실제 BMD 레퍼런스처럼 타이트한 줄 간격으로 조정. 시공문의
   행은 화살표(.cv2-row-chevron)를 완전히 삭제하고 아래 아코디언 패널의
   리드 문장도 .about-roots-lead(굵고 큰 스타일) 대신 .about-copy로
   바꿔 다른 리스트 항목과 동일한 본문 텍스트로 통일(html에서 클래스
   교체) — 이 파일에서는 더 이상 쓰이지 않는 .cv2-row-chevron 규칙을
   완전히 제거. 실제 링크가 없는 "사업자정보" 행을 위해 .cv2-row--static
   모디파이어 추가(커서/호버 배경 없음 — 클릭 가능한 다른 행과 시각적으로
   구분).

   2026-07-29(8차 수정, 2번째 칸 위치 + 썸네일 크기/모션): (1) 대표님이
   실제 화면 캡처에 빨간 박스(2번째 칸 현재 위치)/파란 세로선(목표 위치)을
   표시 — 픽셀 실측 결과 목표는 콘텐츠 폭의 약 28%. .cv2-row-name-cell의
   width 상한을 196px→900px로 넓혀(25vw가 실질적으로 곧바로 상한에
   막히지 않도록) 데스크톱 전 구간에서 비율이 일정하게 유지되도록 수정.
   (2) 호버 시 나타나는 썸네일 크기를 캡처에 표시된 파란 박스 크기로
   확대(최대 52px→80px 폭, 비율 4:3→8:5)하고, "나타날 땐 빠르게, 사라질
   땐 천천히 — 커서를 빠르게 내리면 물결치듯" 요청에 따라 hover 진입/이탈
   트랜지션 지속시간을 비대칭으로 분리(진입 .28s / 이탈 .95~1.1s).

   2026-07-29(9차 수정, 썸네일 오버레이 방식으로 전면 재설계): 대표님이
   "호버 시 간격이 넓어지고 배경 색상도 바뀌는데 그 두 가지 다 필요없다,
   사진만 나오면 된다"고 지적 — 원인은 두 가지: ① .cv2-row:hover의 행
   배경색(rgba) 틴트, ② .cv2-row-thumb가 이름 칸의 flex 흐름 안에서
   폭+margin-right를 차지하며 이름 텍스트를 오른쪽으로 밀어내던 방식.
   ①은 규칙 자체를 삭제. ②는 .cv2-row-thumb를 position:absolute 오버레이로
   바꿔 이름 칸(.cv2-row-name-cell, position:relative 기준점) 왼쪽 위에
   "덧씌우듯" 나타나게 재설계 — 더 이상 이름 텍스트/2·3번째 칸 중 어느
   것도 위치가 바뀌지 않고, 오직 사진 박스 하나만 커졌다 작아짐. 크기는
   새로 캡처에 표시된 파란 박스를 픽셀 실측(≈79×50px)한 뒤 "늘려달라"는
   요청대로 상한을 약 20% 키움(80px→96px). 또 "펼쳐질 땐 좌→우, 사라질
   땐 우→좌로 접히는 느낌(스르륵 페이드 아님)" 피드백에 맞춰 opacity
   페이드와 흑백↔컬러 필터 트랜지션(둘 다 "색이 바뀌는" 부수 효과)을
   전부 제거하고 width 하나만으로 여닫히게 단순화, 이탈(접힘) 속도도
   살짝 더 늦춰 접히는 느낌을 강조.

   2026-07-29(10차 수정, 중·대 사이즈 세로 여백 확보): "모바일은 예쁜데
   중·대 사이즈에서는 이미지가 위아래로 꽉 차서 여백이 없다"는 피드백 —
   9차에서 키운 썸네일 상한(96px, 8:5 비율→높이 60px)이 화면이 넓어질수록
   행 자체의 세로 리듬(패딩 clamp(10,1.3vw,16)+글자 clamp(14,1.1vw,19)×1.5)
   보다 더 빠르게 커져 결국 행 높이를 추월해 위아래 hairline에 닿아버림.
   썸네일 hover 상한을 96px→78px로 낮춰(최소도 56→52px) 모든 화면 폭에서
   위아래 여백이 항상 남도록 재조정(자세한 계산은 아래 .cv2-row-thumb:hover
   규칙 주석 참고) — "확대" 요청보다 이번 "여백 확보" 요청을 우선함.

   2026-07-29(11차 수정, 다시 "밀림" 방식으로): 대표님이 실제
   brucemaudesign.com/work 탭 캡처(Toronto Carpet Factory 행)를 보여주며
   "이미지가 나타나면 1단 단어가 오른쪽으로 밀려야 한다"고 요청 — 9차에서
   도입한 절대 포지션 오버레이(밀림 없이 사진만 덧씌워짐)를 다시 걷어내고
   8차 이전처럼 썸네일이 이름 칸의 flex 흐름 안에서 폭+margin-right를
   차지해 이름 텍스트를 밀어내는 방식으로 복귀. 다만 9·10차에서 고쳤던
   것들(행 배경색 hover 틴트 없음, opacity 페이드·흑백↔컬러 필터 없이 순수
   width 모션, 어떤 화면 폭에서도 위아래 여백이 남는 78px 상한 크기)은
   전부 그대로 유지.

   2026-07-29(12차 수정, 시공문의 아코디언 호버 전환): "지금은 클릭해야
   펼쳐지는데, 오버(호버)하면 펼쳐지고 마우스가 벗어나면 사진처럼 다시
   접히게 해달라" 요청 — 클릭 토글용 JS(contact-v2.html 하단 스크립트)를
   완전히 삭제하고, .cv2-accordion(버튼+패널을 함께 감싸는 컨테이너)에
   :hover/:focus-within이 걸릴 때만 .cv2-panel-wrap이 펼쳐지도록 순수 CSS
   아코디언으로 전환. 버튼 위든 펼쳐진 패널 내용 위든 컨테이너 안에 마우스가
   있는 동안은 열려 있고, 컨테이너를 완전히 벗어나야 다시 접힘.

   2026-07-29(13차 수정, 행 높이 고정 + 이미지 5%/5% 여백): "이미지가 생기면
   선(hairline)이 벌어진다, 선은 고정이어야 하고 위아래 각 5% 여백을 두고
   이미지가 그 안을 가득 채우면 된다" — 11차에서 되돌린 in-flow 밀림 방식은
   호버 시 썸네일(더 큰 높이)에 맞춰 행 자체가 자동으로 커지는 부작용이
   있었음. .cv2-row에 --cv2-row-h(패딩×2+글자 줄높이) 커스텀 프로퍼티로
   행의 세로 높이를 고정값으로 못박아 호버 여부와 무관하게 위아래 선이
   전혀 움직이지 않게 하고, 썸네일 높이는 그 고정 높이의 정확히 90%(위아래
   5%씩 자동 여백)로, 폭은 8:5 비율 유지를 위해 높이×1.6으로 계산 — 이제
   호버해도 오직 폭(width)만 변하고 선의 위치와 이미지 높이는 항상 동일.
   ========================================================================== */

/* ---------- 페이지 로드 시 전체 페이드인(스크롤 트리거 아님, 로드 즉시 1회) ---------- */
.cv2-fade-in{
  animation:cv2FadeIn .9s cubic-bezier(.16,1,.3,1) both;
}
@keyframes cv2FadeIn{
  from{ opacity:0; transform:translateY(16px); }
  to{ opacity:1; transform:translateY(0); }
}
@media (prefers-reduced-motion:reduce){
  .cv2-fade-in{ animation:none; }
}

/* ---------- 상단 타이틀 ---------- */
.cv2-archive{
  padding-top:clamp(50px,6vw,100px);
  /* 4차 수정: 공식 채널 섹션이 사라지고 이 리스트가 Outro 직전 마지막
     콘텐츠가 되었으므로 하단 여백을 넉넉하게 확보 */
  padding-bottom:clamp(60px,7vw,120px);
}
.cv2-title{
  margin:0 0 clamp(32px,4vw,56px);
}

/* ---------- Archive 행 리스트 (얇은 헤어라인만, 카드/회색 배경 없음) ----------
   6차 수정: "라인을 더 얇게" 요청 — 사이트 공용 토큰 --line(2px)은 다른
   페이지(about/contact/category 등)에서도 두루 쓰이는 값이라 그대로 두고,
   이 페이지 전용 헤어라인 두께만 --cv2-line(1px)로 별도 정의해 더 얇게
   적용(전역 --line 토큰은 변경하지 않음) */
.cv2-row-list{
  --cv2-line:1px;
  border-bottom:var(--cv2-line) solid var(--color-noir);
}
.cv2-accordion{
  border-top:var(--cv2-line) solid var(--color-noir);
}
.cv2-accordion .cv2-row{
  border-top:none;
}

/* <a>와 <button> 둘 다 이 클래스를 쓰므로 브라우저 기본 버튼 스타일을
   완전히 리셋해 링크 행과 100% 동일하게 보이도록 함 */
.cv2-row{
  position:relative;
  display:flex;
  align-items:center;
  width:100%;
  border-top:var(--cv2-line) solid var(--color-noir);
  /* 7차 수정: "라인과 텍스트 사이 간격이 너무 여유롭다" — 상하 패딩을
     대폭 축소해 타이트한 리듬으로 */
  padding-block:clamp(10px,1.3vw,16px);
  /* 13차 수정: "이미지가 생기면 선(위아래 hairline)이 벌어진다, 선은
     고정이어야 한다" — 지금까지는 행 높이가 텍스트/썸네일 중 더 큰 쪽에
     맞춰 자동으로 늘어났는데(호버 시 썸네일이 in-flow로 들어오며 행 자체가
     커짐), 이제 행의 세로 리듬(패딩+글자 줄높이)만으로 높이를 고정값으로
     못박아 호버 여부와 무관하게 위아래 선이 절대 움직이지 않도록 함.
     --cv2-row-h는 아래 .cv2-row-thumb에서 "행 높이의 90%(위아래 각 5%
     여백)"를 계산할 때도 그대로 재사용 */
  --cv2-row-h:calc(2 * clamp(10px,1.3vw,16px) + 1.5 * clamp(14px,1.1vw,19px));
  height:var(--cv2-row-h);
  margin:0;
  background:none;
  border-left:none;
  border-right:none;
  border-bottom:none;
  border-radius:0;
  appearance:none;
  text-align:left;
  cursor:pointer;
  color:inherit;
  font:inherit;
  text-decoration:none;
}
/* 9차 수정: 행 배경색이 옅게 바뀌던 hover 틴트 효과를 완전히 삭제("간격이
   넓어지고 배경색도 바뀌는데 둘 다 필요없다" 피드백). 11차에서 썸네일의
   in-flow 밀림 방식은 되돌아왔지만, 이 배경색 hover 삭제는 계속 유지 */
.cv2-row:focus-visible{
  outline:2px solid var(--color-noir);
  outline-offset:-2px;
}

/* 7차 수정: "사업자정보" 행처럼 실제 링크가 없는 순수 정보 행 — 클릭
   가능한 다른 행들과 헷갈리지 않도록 커서/호버 배경을 없앰 */
.cv2-row--static{
  cursor:default;
}
.cv2-row--static:hover{
  background-color:transparent;
}

/* 5차 수정: 행을 가로 3분할(flex justify-content:space-between)로 유지 —
   [왼쪽: 이름 칸, 고정폭] [2번째: 한글 칸, 가변폭] [3번째: 한글 칸, 가변폭].
   모바일 포함 전 뷰포트에서 줄바꿈 없이 항상 한 줄로 나란히 출력되도록
   flex-wrap은 절대 사용하지 않음(이름 칸은 nowrap, 2·3번째 칸은 넘치면
   ellipsis로 축약). 모바일(~900px 미만)에서는 2번째 칸을 숨기고 이름+
   3번째 칸만 노출(아래 .cv2-row-col2 @media 참고) */
.cv2-row-grid{
  flex:1 1 auto;
  min-width:0;
  display:flex;
  align-items:center;
  justify-content:space-between;
  flex-wrap:nowrap;
  /* 8차 수정: 이름 칸 폭(25vw)과 합쳐 2번째 칸 시작 지점이 콘텐츠 폭의
     약 28% 지점에 오도록 상한을 넓힘(기존 28px 상한이면 넓은 화면에서
     비율이 다시 줄어듦) */
  gap:clamp(10px,3vw,60px);
}

/* 왼쪽 칸: 썸네일 + 이름. 칸 자체 폭을 고정(overflow:hidden)해 두어
   호버 시 썸네일이 이 칸 "안에서만" 나타나며 이름 텍스트를 밀어내고,
   가운데/오른쪽 칸의 시작 위치는 절대 바뀌지 않음(실제 BMD Archive
   레퍼런스와 동일한 "밀림은 왼쪽 칸 안에서만" 동작) */
/* 8차 수정: 대표님이 실제 화면 캡처에 빨간 박스(2번째 칸 현재 위치)와
   파란 세로선(목표 위치)을 직접 표시해 "2번째 칸을 파란선까지 옮기고,
   중간 크기에서도 그 비율을 유지"하도록 요청 — 캡처를 픽셀 단위로 실측한
   결과 목표 위치는 콘텐츠 폭의 약 28% 지점. 기존엔 25vw인데 최대 196px
   에서 곧바로 상한에 걸려 실제로는 폭이 넓어질수록 비율이 오히려 줄어드는
   문제가 있었음 — 상한을 실질적으로 넓혀(900px) 데스크톱 전 구간에서
   25vw(≈2번째 칸 이름 칸 몫)+아래 .cv2-row-grid의 gap(약 3vw)을 합쳐
   총 28vw 부근을 유지하도록 조정, 뷰포트가 커져도 비율이 항상 일정 */
/* 11차 수정: 대표님이 실제 brucemaudesign.com/work 탭의 실물 동작(Toronto
   Carpet Factory 행 — 썸네일이 나타나면 제목 단어가 오른쪽으로 밀림)을
   다시 캡처로 보여주며 "이미지가 나타나면 1단 단어는 오른쪽으로 밀려야
   한다"고 요청 — 9차에서 도입한 position:absolute 오버레이 방식(밀림 없이
   사진만 덧씌워지는 방식)을 되돌리고, 다시 이 칸의 flex 흐름 안에서
   썸네일이 폭을 차지해 이름 텍스트를 오른쪽으로 밀어내는 원래(8차) 방식
   으로 복귀. 단, 9차/10차에서 고친 것들(행 배경색 hover 틴트 없음, opacity
   페이드·흑백↔컬러 필터 없이 순수 width 모션, 위아래 여백이 남는 크기)은
   그대로 유지 — 아래 .cv2-row-thumb 참고 */
.cv2-row-name-cell{
  flex:0 0 auto;
  display:flex;
  align-items:center;
  overflow:hidden;
  width:clamp(92px,25vw,900px);
}
/* display:flex 컨테이너에는 text-overflow:ellipsis가 적용되지 않아(브라우저
   스펙상 플렉스 컨테이너는 "..." 없이 그냥 잘려 보임), 이름 span 자체는
   일반 인라인 블록으로 두어 진짜 "..." 축약이 보이도록 함(시공 문의 안내의
   화살표는 별도 형제 요소 .cv2-row-chevron으로 분리 — 아래 참고).
   5차 수정: "모든 텍스트 스타일 같게, 볼드 없이 본문체처럼" 요청에 따라
   font-weight:700(굵게)을 제거, .cv2-row-col2/.cv2-row-col3과 완전히
   동일한 스타일로 통일.
   6차 수정: "인덱스 페이지에 쓴 작은 한글폰트와 스타일값이 같은지" 확인
   요청 — 기존엔 about-copy 기준(clamp 13~16.5px, opacity:.85)이었는데,
   index.html의 서비스 목록(.hero-info .col2bis/.col3/.col4 li, 실제
   footer/nav 리스트에 쓰이는 사이트의 "작은 한글" 캐논 스타일)과 값을
   1:1로 맞춤: font-size clamp(14px,1.1vw,19px)/weight 500/letter-spacing
   normal/opacity 없이 완전 불투명(index 쪽 리스트도 opacity를 쓰지 않음) —
   아래 .cv2-row-col2/.cv2-row-col3과 값이 1:1로 같음 */
.cv2-row-name{
  display:block;
  flex:1 1 auto;
  min-width:0;
  font-family:var(--font-en);
  font-size:clamp(14px,1.1vw,19px);
  font-weight:500;
  line-height:1.5;
  letter-spacing:normal;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}

/* 11차 수정: "이미지가 나타나면 1단 단어가 오른쪽으로 밀려야 한다"(실제
   BMD 레퍼런스 동작) 요청으로 다시 이 칸의 flex 흐름 안에서 폭+margin-right
   를 차지하는 방식으로 복귀(9차의 position:absolute 오버레이 폐기).
   단, 9차/10차에서 고친 다음 사항은 유지: ① 행 배경색이 옅게 바뀌던
   hover 틴트는 여전히 없음(위 .cv2-row 참고), ② opacity 페이드·흑백↔컬러
   필터 없이 width/margin-right만으로 여닫히게 해 "사라질 땐 접히는 느낌"
   유지(이탈은 느리게, 진입은 빠르게).
   13차 수정: "이미지가 생기면 선이 벌어진다, 선은 고정이고 위아래 각 5%
   여백을 두고 이미지가 그 안을 가득 채우면 된다" — 위 .cv2-row에서 고정한
   행 높이(--cv2-row-h)를 기준으로 이미지 높이를 정확히 90%로 고정(위아래
   5%씩 자동으로 남음, 호버 여부와 무관하게 항상 같은 높이라 선이 움직일
   일이 없음). 폭은 8:5 비율을 유지하도록 높이×1.6으로 함께 계산해서
   aspect-ratio 속성 없이도(둘 다 명시값) 비율이 항상 정확히 맞음 */
/* 2026-08-05: 대표님 지정 — 사진 대신 화살표로 교체(대/중/소 화면 전부
   동일하게 적용). 박스 자체의 폭/높이/여닫힘 트랜지션 공식은 그대로 두고
   (사진일 때와 정확히 같은 자리·같은 크기·같은 밀림 느낌 유지), 안의
   내용물만 <img>에서 <svg> 화살표로 교체 — 그래서 이 박스는 이제 사진
   프레임이 아니라 그냥 "화살표가 뜰 자리"라 테두리/배경 없이 화살표
   글자만 가운데 보이도록 flex 중앙 정렬 */
.cv2-row-thumb{
  flex:0 0 auto;
  width:0;
  height:calc(var(--cv2-row-h) * .9);
  overflow:hidden;
  margin-right:0;
  display:flex;
  align-items:center;
  justify-content:center;
  color:var(--color-noir);
  /* 사라질 때(기본 상태로 복귀) — 느리게, 접히는 느낌(width만 변화, 높이는
     항상 고정이라 선이 벌어지지 않음) */
  transition:width 1.05s cubic-bezier(.22,1,.36,1),
             margin-right 1.05s cubic-bezier(.22,1,.36,1);
}
/* 2026-08-05: 터치 기기는 진짜 마우스 오버가 없는데 :hover/:active 셀렉터가
   그대로 있으면, iOS Safari가 탭한 요소를 계속 :hover(또는 :active) 상태로
   "눌어붙여" 버려서 "다른 항목을 눌러야만 사진이 사라진다"는 증상이 생김
   (index.html 카테고리에서 겪었던 것과 같은 계열의 버그). 그래서 진짜 호버
   가능한 기기에서만(html:not(.no-hover)) 이 규칙이 적용되게 감싸고, 터치
   기기의 실제 여닫힘은 아래 .cv2-thumb-open(JS가 붙이는 클래스)이 전담 */
html:not(.no-hover) .cv2-row:hover .cv2-row-thumb,
html:not(.no-hover) .cv2-row:focus-visible .cv2-row-thumb,
html:not(.no-hover) .cv2-row:active .cv2-row-thumb{
  width:calc(var(--cv2-row-h) * .9 * 1.6);
  margin-right:clamp(8px,1.4vw,14px);
  /* 나타날 때(hover 진입) — 빠르게 */
  transition:width .32s cubic-bezier(.16,1,.3,1),
             margin-right .32s cubic-bezier(.16,1,.3,1);
}
/* 터치 기기 전용: 오른쪽 칸(.cv2-row-col3) 탭 1번으로 이 클래스가 붙었다
   떨어졌다 함(js는 index.html과 동일한 위치, contact.html 하단 참고) —
   1초 뒤 자동으로 닫히거나, 같은 자리를 다시 탭하면 즉시 닫힘 */
.cv2-row.cv2-thumb-open .cv2-row-thumb{
  width:calc(var(--cv2-row-h) * .9 * 1.6);
  margin-right:clamp(8px,1.4vw,14px);
  transition:width .32s cubic-bezier(.16,1,.3,1),
             margin-right .32s cubic-bezier(.16,1,.3,1);
}
/* 2026-08-05: 사진 <img> 대신 화살표 <svg>로 바뀌면서 위 img 규칙은 더 이상
   대상이 없어(사이트 안에 <img class="cv2-row-thumb ...">가 전부 삭제됨) 아래
   svg 전용 규칙으로 교체. 사진처럼 박스를 꽉 채우면(100%) 화살표 획이 박스
   테두리에 딱 붙어 답답해 보여서, 박스 높이의 44%만 차지하도록 살짝 여백을
   둠 — 폭은 auto로 두어 각 화살표의 viewBox 비율(내부용 32:20, 외부용
   20:20)이 그대로 유지되고 찌그러지지 않음 */
.cv2-row-thumb svg{
  width:auto;
  height:44%;
  flex:0 0 auto;
  display:block;
}

/* 2번째·3번째 칸: 둘 다 동등한 한글 텍스트 칸(flex:1 1 0으로 남은 공간을
   균등 분배). 좁은 화면에서 공간이 부족해지면 줄바꿈 대신 ellipsis로
   축약됨 — 실제 내용은 행의 href/aria로 항상 100% 접근 가능하므로 정보
   손실 없음. 5차 수정: 영문 태그 칸을 완전히 없애고 이름 칸과 동일한
   본문 텍스트 스타일로 통일(굵기/대문자/자간 등 시각적 차별 제거).
   6차 수정: index.html 서비스 목록과 동일한 값으로 재조정(위 .cv2-row-name
   주석 참고) — font-size clamp(14px,1.1vw,19px)/weight 500/opacity 없음 */
.cv2-row-col2,
.cv2-row-col3{
  flex:1 1 0;
  min-width:0;
  font-family:var(--font-en);
  font-size:clamp(14px,1.1vw,19px);
  font-weight:500;
  line-height:1.5;
  letter-spacing:normal;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}

/* 6차 수정: "3단만 오른쪽 정렬" 요청 — 이름/2번째 칸은 왼쪽 정렬 그대로
   두고, 3번째 칸만 우측 정렬 */
.cv2-row-col3{
  text-align:right;
}

/* 모바일(~900px 미만)에서는 "1,3단만 노출" 요청에 따라 2번째 칸을 숨기고
   3번째 칸이 이름 칸 옆 남은 공간을 전부 차지하도록 함 */
@media (max-width:900px){
  .cv2-row-col2{
    display:none;
  }
  .cv2-row-col3{
    flex:1 1 auto;
  }
  /* 2026-08-05: 대표님 지적 — "이미지가 나타나면 텍스트가 짤린다". 원인은
     .cv2-row-name-cell의 폭이 clamp(92px,25vw,900px)로 고정돼 있어서였음
     (25vw가 큰 화면에선 넉넉하지만, 모바일 좁은 화면에선 92px 근처까지
     줄어들어 썸네일(약 72~80px)이 펼쳐지면 이름 글자가 들어갈 자리가 거의
     안 남았음). 모바일에서는 이 칸의 폭 제한을 풀어서(auto) 썸네일이
     펼쳐져도 이름 텍스트가 필요한 만큼 자리를 차지할 수 있게 하고, 대신
     3번째 칸(.cv2-row-col3)이 이미 ellipsis 축약을 갖고 있으니 남는 공간을
     계속 유연하게 나눠 갖는다(이름은 항상 완전하게, 3번째 칸만 필요시
     축약) */
  .cv2-row-name-cell{
    width:auto;
    max-width:none;
    overflow:visible;
    flex:0 1 auto;
  }
  .cv2-row-name{
    flex:0 0 auto;
    overflow:visible;
    text-overflow:clip;
  }
}

/* 7차 수정: 오른쪽 화살표(>) 표시 요청으로 삭제 — 이전엔 여기 있던
   .cv2-row-chevron 규칙(회전 애니메이션 포함)을 완전히 제거함. 시공문의
   행의 펼침 여부는 아래 .cv2-panel-wrap의 grid-template-rows 트랜지션
   자체로 충분히 전달된다고 판단. */

/* 핵심 인터랙션 3 — 시공 문의 안내 아코디언. grid-template-rows를
   0fr→1fr로 트랜지션하는 방식이라 JS로 scrollHeight를 계산할 필요 없이
   내용 높이가 얼마든 항상 정확하고 부드럽게 슬라이드됨(모던 CSS 아코디언
   기법, Chrome/Firefox/Safari 16+ 지원).
   12차 수정: "지금은 클릭해야 펼쳐지는데, 오버(호버)하면 펼쳐지고 마우스가
   벗어나면 사진이 사라지듯 다시 접히게 해달라" 요청으로 클릭 토글용
   JS(contact-v2.html 하단 스크립트)를 완전히 제거하고, 버튼+패널을 함께
   감싸는 .cv2-accordion 컨테이너에 :hover/:focus-within만으로 여닫히도록
   순수 CSS 아코디언으로 전환. 버튼 위든 펼쳐진 패널 내용 위든 마우스가
   .cv2-accordion 영역 안에 있는 동안은 계속 열려 있고, 영역을 완전히
   벗어나야 다시 접힘(키보드 접근성을 위해 :focus-within도 함께 트리거) */
.cv2-panel-wrap{
  display:grid;
  grid-template-rows:0fr;
  transition:grid-template-rows .45s cubic-bezier(.16,1,.3,1);
}
.cv2-accordion:hover .cv2-panel-wrap,
.cv2-accordion:focus-within .cv2-panel-wrap{
  grid-template-rows:1fr;
}
.cv2-panel-inner{
  overflow:hidden;
}
.cv2-panel-inner-content{
  /* 7차 수정: 행 패딩을 타이트하게 줄인 것과 리듬을 맞추기 위해 패널
     내부 여백도 함께 축소 */
  padding-top:clamp(12px,1.6vw,20px);
  padding-bottom:clamp(20px,2.4vw,32px);
  max-width:38em;
}
.cv2-panel-list{
  list-style:none;
  margin:clamp(14px,1.6vw,20px) 0 0;
  padding:0;
  display:flex;
  flex-direction:column;
  gap:0;
}
/* 14차 수정: 리드 문장(p.about-copy)이 2단으로 옮겨가면서 이 목록이 패널의
   첫 번째 자식이 됨 — 위 margin-top은 원래 "리드 문장과의 간격"이었으므로,
   이제 컨테이너 자체의 padding-top과 이중으로 겹치지 않도록 0으로 리셋 */
.cv2-panel-inner-content > .cv2-panel-list:first-child{
  margin-top:0;
}
.cv2-panel-list li{
  position:relative;
  padding-left:1.1em;
}
.cv2-panel-list li::before{
  content:"•";
  position:absolute;
  left:0;
  opacity:.5;
}
.cv2-panel-list em{
  font-style:normal;
}
/* 15차 수정: 3개 항목 아래 마무리 문장 — 목록과 살짝 간격을 두고, 나머지는
   다른 본문 텍스트와 동일하게 about-copy 스타일 그대로 사용 */
.cv2-panel-note{
  margin:clamp(14px,1.6vw,20px) 0 0;
}

/* 4차 수정: 공식 채널 5개가 전부 위 .cv2-row-list 안 행으로 흡수되어
   이 페이지 전용 "밑줄 텍스트 링크 리스트" 컴포넌트(.cv2-channels/
   .cv2-channel-link 등)는 더 이상 필요 없어 완전히 삭제. */

/* ---------- 18차 수정: 하단 로고 Lottie 애니메이션 (인덱스 페이지 B1 박스
   재사용) ----------
   박스 자체의 테두리 두께/배경/비율은 css/style.css의 .stone-stack/
   .stone-stack--accent/.stone-stack--primary(인덱스 페이지와 100% 동일한
   전역 클래스)가 그대로 처리 — "인덱스 페이지에서처럼 동일한 두께의 선"
   요청이 이 재사용만으로 자동 충족됨. 이 페이지에서 새로 필요한 건 오직
   래퍼의 위아래 여백과, 큰 화면에서 박스 폭을 인덱스 페이지의 category
   cell과 동일한 비율(25%)로 잡아주는 것뿐 */
/* 위쪽 여백은 .cv2-archive의 기존 padding-bottom(clamp(60px,7vw,120px))이
   이미 목록 마지막 줄과 다음 콘텐츠 사이의 여백 역할을 하고 있어(다른
   페이지들과 동일한 리듬), 여기서 또 padding-top을 더하면 여백이 두 배로
   겹쳐버림 — 그래서 위쪽은 0, 박스 아래(페이지 맨 끝) 여백만 새로 추가 */
.cv2-lottie-wrap{
  padding-bottom:clamp(48px,6vw,96px);
}
/* 1025px 이상(큰 화면)에서는 인덱스 페이지의 category .cell과 동일하게
   폭을 콘텐츠 폭의 25%로 고정 — 같은 grid-padding 컨테이너 안이라
   실제 렌더 픽셀 폭도 인덱스 페이지의 B1 박스와 동일하게 맞춰짐 */
.cv2-lottie-desktop{
  display:none;
}
@media (min-width:1025px){
  .cv2-lottie-desktop{
    display:block;
    width:25%;
  }
}

/* 20차 수정: 박스 아래 "간격을 둔 별도의 선" 요청용 요소 — 우선 소(≤900px)
   사이즈에서만 실제로 보이도록 하고(아래 @media 참고), 중/대 사이즈는
   아직 배치가 확정되지 않았으므로 기본값은 숨김 처리 */
.cv2-lottie-rule{
  display:none;
}

/* 19차 수정: "소/중/대 배치가 각각 달라야 하는데, 우선 소 사이즈부터" —
   대표님이 스크린샷으로 "소 사이즈에서는 박스 폭이 위 Index 목록의 줄
   폭과 완전히 같아야 한다"고 지정. 인덱스 페이지의 .hero-kinetic 기본값
   (max-width:400px, 가운데 정렬)은 900px 초과~1024px(중간 폭)에서는
   대표님이 "중/대 사이즈는 이후에 따로 이야기하자"고 하셔서 일단 그대로
   유지 — 900px 이하(소 사이즈)에서만 최대폭 제한과 가운데 정렬을 풀어
   목록과 동일하게(같은 grid-padding 안 100%) 꽉 채움 */
@media (max-width:900px){
  .cv2-lottie-wrap .hero-kinetic{
    /* 2026-08-04(재수정): "블로그까지만 보이고 짤린다, 참고 이미지처럼 작게
       축소" 요청 — 기존엔 목록과 같은 폭(100%)으로 꽉 채웠는데, 그러면
       박스 자체(와 그만큼 예약되는 하단 여백)가 너무 커서 화면에 스크롤 없이
       보이는 목록 항목 수가 줄어듦. 대표님이 보내주신 참고 스크린샷 실측
       비율(약 38%)로 축소 — 사업자정보까지 목록 전체가 스크롤 없이(또는
       훨씬 적은 스크롤로) 다 보이게 됨 */
    max-width:none;
    /* 2026-08-04(재재재수정): 대표님 지정값 23%로 직접 반영 */
    width:23%;
    margin-left:0;
    margin-right:0;
  }
}

/* 20차 수정: "박스는 하단에 위치 — 스크롤이 생기지 않고, 시공문의 등 위쪽
   아코디언이 펼쳐지더라도 그 영향을 받지 않는, 컨텍페이지 단독의 움직이지
   않는 푸터라고 생각하면 됨. 박스 아래의 밑줄은 박스와의 간격도 있다" —
   19차까지는 박스가 여전히 문서 흐름 안(일반 컨텐츠) 있어서 스크롤에 따라
   같이 움직이고, 아코디언이 펼쳐지면 아래로 밀리는 문제가 있었음. 이번에
   소(≤900px) 사이즈에서 래퍼 자체를 position:fixed로 뷰포트 하단에
   고정 — 문서 흐름/스크롤/아코디언 확장과 완전히 분리된 "단독 푸터"로 동작.

   - 박스 자체 테두리(.stone-stack의 var(--line))는 그대로 두고, "간격을
     둔 별도의 선" 요청을 위해 .cv2-lottie-rule(별도 요소)을 새로 추가해
     박스 하단과 gap을 둔 채 인덱스 페이지와 동일한 두께의 검정 선을 그림.
   - 래퍼가 fixed로 빠지면서 원래 문서 흐름에서 차지하던 높이만큼 스크롤
     목록 마지막 줄이 푸터에 가려질 수 있어, .cv2-archive(목록 섹션)
     padding-bottom을 푸터 실제 높이(--cv2-footer-h, 박스 높이는
     --grid-width × 892/1280 비율로 계산 — 박스가 grid-padding 안에서
     목록과 동일한 폭을 쓰기 때문에 이 비율로 실측 높이를 그대로 예측 가능)
     만큼 늘려 예약해둠. */
@media (max-width:900px){
  .page-contact-v2{
    /* 박스 폭이 위에서 23%로 줄었으니 예상 높이 계산도 같은 비율로 —
       실제 표시 높이는 어차피 js/contact-footer-fit.js가 실시간 측정해서
       덮어쓰지만, JS 실행 전 첫 페인트에서 쓰이는 대체값이라 맞춰둠 */
    --cv2-footer-box-h:calc(var(--grid-width) * .23 * 892 / 1280);
    --cv2-footer-pt:clamp(20px,4vw,32px);
    --cv2-footer-gap:clamp(14px,2.4vw,24px);
    --cv2-footer-pb:clamp(16px,3vw,28px);
    /* 2026-08-04: 대표님 확인 — 실제 Safari에서 사업자정보 행/그 아래 선이
       박스에 살짝 가려 보임(짤림). calc()로 계산한 예약 높이와 고정 박스의
       실제 렌더 높이 사이에 브라우저별 폰트 렌더링/서브픽셀 차이로 인한
       1~2px 오차가 생기면 여백이 사실상 0이라 바로 겹쳐버리는 구조였음 —
       "라인까지는 절대 짤리면 안 된다"는 요청에 따라 여유 버퍼 12px를
       추가해 어떤 브라우저에서도 절대 겹치지 않도록 안전 마진 확보 */
    --cv2-footer-h:calc(
      var(--cv2-footer-pt) + var(--cv2-footer-box-h) +
      var(--cv2-footer-gap) + var(--line) + var(--cv2-footer-pb) + 12px
    );
  }
  .cv2-archive{
    padding-bottom:var(--cv2-footer-h);
  }
  .cv2-lottie-wrap{
    position:fixed;
    left:0;
    bottom:0;
    width:100%;
    z-index:40;
    background:var(--color-blanc);
    padding-top:var(--cv2-footer-pt);
    padding-bottom:var(--cv2-footer-pb);
  }
  .cv2-lottie-wrap .hero-kinetic{
    margin-top:0;
    margin-bottom:0;
  }
  .cv2-lottie-rule{
    display:block;
    height:var(--line);
    background:var(--color-noir);
    margin-top:var(--cv2-footer-gap);
  }
}

/* 21차 수정: "중·대 사이즈도 같은 방식(스크롤 없이, 밑줄까지 한 화면 안에
   다 보이게) 적용해줘. 단 인덱스 페이지 B1 박스(기존 25%)보다 더 작아져야
   스크롤 없이 화면 안에 다 들어온다"는 요청과 함께 대표님이 만든 참고
   이미지(원본 5120×2880, 실제 창 캡처)를 픽셀 단위로 직접 측정해서 수치를
   맞춤:
   - 박스 폭 ≈ 목록 폭(콘텐츠 폭)의 21%(측정: 박스 x범위 73~1118 ÷ 목록
     x범위 72~5047) — 기존 인덱스 B1 박스 25%보다 확실히 작지만, 처음
     시도했던 임의의 고정 clamp(200~300px)보다는 화면 폭에 비례하는 값이
     실제 참고 이미지와 더 정확히 일치해 20%로 반영(892/1280 비율은
     .stone-stack--accent가 그대로 유지).
   - 밑줄(.cv2-lottie-rule) 폭 — 참고 이미지에서 실측해보니 밑줄이 박스
     폭이 아니라 목록 전체 폭(x:72~5047, 위쪽 리스트 헤어라인들과 동일한
     x범위)과 정확히 같음 → 소 사이즈처럼 폭 100%(목록과 동일)로 수정.
   - 박스 위/아래 여백도 실측(리스트 하단 선~박스 상단 ≈15px, 박스
     하단~밑줄 ≈15px, 밑줄~창 하단은 거의 0에 가까움, 모두 논리 px 환산
     기준)해 기존에 임의로 크게 잡았던 값들을 줄임.
   - 소 사이즈와 같은 원리로 래퍼는 position:fixed로 뷰포트 하단에 고정
     (시공문의 아코디언이 펼쳐져도 영향받지 않음), 목록 섹션에는 박스
     실제 높이만큼 padding-bottom을 예약해 인스타그램/사업자정보 행이
     가려지지 않게 함 — 창이 참고 이미지만큼 충분히 크면 이 여백이 고정
     박스 뒤에 정확히 가려져 스크롤 없이 한 화면에 다 보이고, 창이 그보다
     작을 때만 살짝 스크롤이 생기되(확인 필요: 실제 배포 후 다양한 화면
     에서 재확인 권장) 내용이 가려지는 일은 없음.
   901~1024px(중간 폭)은 기존에 .hero-kinetic(가운데 정렬, 최대 400px)을
   쓰던 걸 여기서부터는 .cv2-lottie-desktop(좌측 정렬)으로 전환해 중·대가
   동일한 방식을 쓰도록 통일 */
/* 22차 수정: 대표님이 실제 창 폭을 직접 좁혀가며 확인한 결과 — "2553(px)
   에서는 유튜브채널 행까지만 보이고(인스타그램·사업자정보가 박스에 가려짐),
   1771까지도 라인이 짤림. 1760부터는 라인이 선명하게 잘 보이고 박스와의
   여백도 좋다"는 피드백. 원인: 박스 폭을 20%(뷰포트 폭에 비례)로만 잡아서,
   창을 넓힐수록 박스(그리고 aspect-ratio로 연동된 높이)가 한도 없이 계속
   커지고, 그만큼 하단에 예약해둔 여백도 커져 사업자정보 행을 밀어내던 것.
   반대로 창 높이는 계속 늘어나는 게 아니라 화면 크기에 따라 사실상 고정
   이라, 폭만 넓어지면 결국 어느 지점부터 박스가 사업자정보 행+그 밑 선을
   침범하게 됨. 고쳐: 대표님이 "여백도 좋다"고 확인해준 1760px 지점의
   실제 박스 폭(약 342px)을 상한으로 잡아, 그보다 넓은 창에서는 박스가
   더 이상 커지지 않고 딱 그 크기로 고정되도록 min()을 추가함 — 이러면
   창을 아무리 넓혀도 박스·예약 여백이 1760px 기준보다 커지지 않아 사업자
   정보 행과 그 밑 선을 다시 침범할 일이 없음(901~1760px 사이는 기존처럼
   20%로 화면에 비례해 자연스럽게 줄어듦) */
@media (min-width:901px){
  .cv2-lottie-wrap .hero-kinetic{
    display:none;
  }
  .cv2-lottie-wrap .cv2-lottie-desktop{
    display:block;
    /* 2026-08-04: 대표님 요청 — "스크롤이 생기지 않게 박스 비율을 조금 더
       줄여달라". 기존 20%/342px 상한에서 약 20% 축소(16%/270px) —
       박스가 작아지는 만큼 아래 예약 여백(js/contact-footer-fit.js가
       실측해서 자동 반영)도 함께 줄어들어 전체 문서 높이가 낮아지고,
       화면이 짧아도 스크롤 없이 한 화면에 다 들어올 가능성이 높아짐 */
    width:min(16%,270px);
  }

  .page-contact-v2{
    --cv2-footer-box-w:min(16%,270px);
    --cv2-footer-box-h:calc(min(var(--grid-width) * .16,270px) * 892 / 1280);
    --cv2-footer-pt:clamp(10px,.8vw,18px);
    --cv2-footer-gap:clamp(10px,.8vw,18px);
    --cv2-footer-pb:clamp(6px,.5vw,12px);
    /* 2026-08-04: 위 900px 이하 블록과 동일한 이유로 12px 안전 버퍼 추가 —
       사업자정보 행/그 아래 선이 박스에 절대 가려지지 않도록 여유 확보 */
    --cv2-footer-h:calc(
      var(--cv2-footer-pt) + var(--cv2-footer-box-h) +
      var(--cv2-footer-gap) + var(--line) + var(--cv2-footer-pb) + 12px
    );
  }
  .cv2-archive{
    padding-bottom:var(--cv2-footer-h);
  }
  .cv2-lottie-wrap{
    position:fixed;
    left:0;
    bottom:0;
    width:100%;
    z-index:40;
    background:var(--color-blanc);
    padding-top:var(--cv2-footer-pt);
    padding-bottom:var(--cv2-footer-pb);
  }
  .cv2-lottie-rule{
    display:block;
    height:var(--line);
    background:var(--color-noir);
    margin-top:var(--cv2-footer-gap);
  }
}
