/*
 * 서브페이지 공통 레이아웃 (헤더 · GNB · 푸터 · 퀵메뉴).
 *
 * 수치 출처: reference/assets/{www,pain}.ezrehabclinic.com/img_up/shop_pds/.../build/
 *            pc_skin_955_895.css, m_skin_955_895.css 및 크롤된 페이지의 인라인
 *            .quick_side_nav 스타일. 임의로 만든 값이 없다.
 *
 * 원본은 PC/모바일에 서로 다른 파일(pc_skin_*.css / m_skin_*.css)을 서버에서
 * 골라 내려주지만, 이 프로젝트는 "PC용·모바일용 파일을 나누지 않는다"는 제약이
 * 있으므로 두 파일을 한 파일로 합치고 원본이 이미 쓰고 있던 1024px 분기점을
 * 그대로 미디어 쿼리로 재현한다. 두 파일이 갈라지는 세부 값(버튼 색상, 푸터
 * 여백 등)은 Task 3 에서 화면별 픽셀 대조로 확정한다 — 여기서는 골격만 세운다.
 *
 * 아이콘 폰트: #toggle_left/#toggle_right/#btn_site_top 은 font-size:0 인 채로
 * :before { content: '\eXXX' } 로 아이콘을 그린다(원본 icomoon 폰트, 코드포인트도
 * 원본 그대로). 파일은 reference/assets/.../aramskin/design/uf2smart222/icomoon/
 * 에서 그대로 옮겼다 — 두 사이트가 동일 파일을 쓴다(md5 대조 확인).
 */
@font-face {
  font-family: 'icomoon';
  src: url('../font/icomoon.eot');
  src: url('../font/icomoon.eot') format('embedded-opentype'),
       url('../font/icomoon.ttf') format('truetype'),
       url('../font/icomoon.woff') format('woff'),
       url('../font/icomoon.svg') format('svg');
  font-weight: normal;
  font-style: normal;
}

/* overflow 를 양쪽 다 hidden 으로 두는 이유(원본과 같은 값이다).
   overflow-x 만 hidden 으로 두면 세로는 auto 가 되어, 내용이 길어질 때 이
   상자가 스스로 스크롤 상자가 된다. 그러면 페이지 전체 캡처에서 보이는
   만큼만 찍히고 나머지가 하얗게 잘린다(메인 화면에서 확인). */
#viewport { position: relative; min-height: 100%; width: 100%; overflow: hidden; background: #ffffff; }
#viewport > #sub_view { position: relative; max-width: 100%; width: 100%; }

/* 헤더 */
#header { position: fixed; top: 0; left: 0; right: 0; z-index: 200; width: 100%; background: #ffffff; border-bottom: 1px solid rgba(255, 255, 255, 0.2); }
/*
 * 통증 사이트는 헤더가 원본부터 다르다 — reference/assets/pain.ezrehabclinic.com/
 * .../build/pc_skin_955_895.css 의 "#header {background:#091b3b}" (테두리 없음),
 * m_skin_955_895.css 의 "#header {position:relative;z-index:200}" (배경·테두리
 * 둘 다 없음 — 모바일에서는 흰 바탕 위라 투명이든 흰색이든 결과가 같다).
 * 소아(ez1095)는 두 파일 모두 배경 없이 테두리만 있다. 처음에는 두 사이트가
 * 같은 흰 헤더인 줄 알고 layout.css 를 소아 값 하나로만 썼다가, 공지사항
 * 픽셀 대조(2단계 Task 3)에서 통증 헤더 전체가 어긋난 것으로 드러났다
 * (헤더 높이 80px 전체가 가로 폭 전체에서 달랐다 — 사이트 배경색 자체가
 * 다른데 공통값 하나로 밀어붙인 결과). #viewport 에 site-kids/site-pain
 * 클래스를 head.php 가 ez_site() 로 붙인다.
 */
.site-pain #header { border-bottom: none; }
#header .inner { position: relative; box-sizing: border-box; }
#header .logo { position: relative; box-sizing: border-box; }
#header .logo h1 { margin: 0; padding: 0 60px 0 15px; font-size: 0; box-sizing: border-box; }
#header .logo h1 span { display: table; width: 100%; table-layout: fixed; }
#header .logo h1 .logo_bk { display: none; }
#header .logo h1 span a { display: table-cell; height: 50px; vertical-align: middle; }
#header .logo h1 img { width: auto; max-height: 20px; }
#header .logo button { position: absolute; top: 0; bottom: 0; width: 50px; height: 50px; margin: auto; border: none; background: none; font-size: 0; }
#header .logo button:before { font-family: 'icomoon'; position: absolute; top: 0; right: 0; bottom: 0; left: 0; margin: auto; color: #dddddd; }
/* 헤더가 상단 고정 상태로 바뀌면 아이콘이 한 단계 진해진다. */
#viewport.fixed_on #header .logo button:before { color: #aaaaaa; }
/* 통증 사이트는 두 상태 모두 #eee 로, 고정 시에도 색이 변하지 않는다.
   .site-pain 은 body 에 붙으므로 #viewport 보다 반드시 앞에 온다 —
   순서를 뒤집으면 영영 매치되지 않아 고정 상태에서 소아 색(#aaa)이 이긴다. */
.site-pain #header .logo button:before,
.site-pain #viewport.fixed_on #header .logo button:before { color: #eeeeee; }
#header #toggle_right { right: 0; }
#header #toggle_right:before { content: '\e902'; width: 40px; height: 40px; font-size: 30px; line-height: 40px; }
/*
 * #toggle_left 는 원본 크롤 두 파일 모두에서 실제로는 절대 보이지 않는다.
 * PC 크롤(kids-notice.pc.html)에는 마크업이 있지만 pc_skin_955_895.css 의
 * "@media(min-width:1024){ #header .logo button{display:none} }" 가 두
 * 버튼을 전부 지운다. 모바일 크롤(kids-notice.mo.html)에는 이 버튼 마크업
 * 자체가 없다. 즉 우리가 실제로 대조하는 두 뷰포트(1920px PC, 390px 모바일 —
 * tests/lib/capture.mjs) 어느 쪽에서도 원본은 이 버튼을 그리지 않는다.
 * 그래서 폭 조건 없이 항상 숨긴다 — 아래 min-width:1024 규칙과 합쳐서가
 * 아니라 이 규칙만으로 두 뷰포트 모두를 원본과 맞춘다.
 */
#header #toggle_left { right: 50px; display: none; }
#header #toggle_left:before { content: '\e905'; width: 22px; height: 22px; font-size: 22px; }

/* GNB(1뎁스/2뎁스) — 모바일 기본: 숨김, PC 에서만 노출 */
.lnb_p { display: none; }

/*
 * .gnb_p(모바일 크롤에만 있는 로그인/회원가입 드롭다운, kids-notice.mo.html /
 * pain-notice.mo.html 의 #header > .inner 안, .logo 바로 다음)도 위 #toggle_left
 * 와 같은 이유로 항상 숨긴다. 원본 두 스킨 CSS 모두 이 클래스를 ".lnb_p, .lnb_p_bg"
 * 와 한 묶음으로 취급해 "@media(min-width:1024){ display:block }" 이전에는
 * 항상 display:none 이다 — 즉 원본 모바일 크롤이 실제로 서비스되는 폭(<1024,
 * 우리 대조 폭 390px 포함)에서도 화면에는 절대 나타나지 않는다(주석조차
 * "Mobile viewport - PC content display none" 이라 붙어 있다). PC 크롤에는
 * 이 마크업 자체가 없다. 두 원본 파일을 하나로 합친 우리 코드에서 이 규칙을
 * 그대로(= min-width:1024 에서 display:block) 옮기면, 원본에는 결코 없던
 * "PC 폭에서 로그인/가입 드롭다운이 보인다"는 새 화면이 생겨 1920px 대조에서
 * 오히려 어긋난다. 마크업(head.php)은 원본 그대로 살려 DOM 은 재현하되,
 * 시각적으로는 두 대조 폭 모두에서 원본과 같은 "안 보임"을 유지한다.
 */
.gnb_p { display: none; }

/*
 * www/css/default.css 충돌 리셋.
 *
 * head.sub.php 는 우리 테마에 자체 head.sub.php 가 없으면(1단계 결정 1이
 * 전제한 그대로) www/css/default.css 를 그대로 불러온다. 그 파일은 그누보드
 * 기본 테마(#container 930px 폭 float:left + #aside 235px 폭 float:right
 * 2단 레이아웃)를 겨냥한 것이라, 우리가 같은 id(#container)를 재사용하면
 * 그 float/width 가 그대로 걸린다. 원본(아람/2smart 스킨)은 default.css 를
 * 아예 안 부르고 자기 전용 리셋(head_basic.css 등)을 쓰므로 이 충돌 자체가
 * 없다 — 우리는 jQuery/common.js 를 얻으려고 head.sub.php 를 그대로 쓰기로
 * 했으므로(1단계 결정 1, 직접 재구현 금지) default.css 자체를 막을 수는
 * 없고, 충돌하는 선언만 되돌린다.
 *
 * 실측(1920px, 리뷰가 잡아준 값): #container 가 float:left;width:930px 를
 * 물려받아 폭이 930 으로 줄고, 바로 다음 형제인 #footer 는(overflow:hidden
 * 이 원본 그대로라 새 BFC 를 만드는데) 그 float 를 피해 남은 990px 폭으로
 * 옆에 붙어버렸다(930+990=1920, 즉 세로로 쌓이지 않고 가로로 나뉜 것).
 * #container 의 float 를 지우면 원인이 없어지고 #footer 는 다시 정상적으로
 * 아래로 쌓인다 — 좌표를 강제로 고정하는 방식이 아니라 원인 자체를 없애는
 * 방식이라 다른 폭에서도 깨지지 않는다.
 */
#container {
    position: static;
    float: none;
    width: auto;
    height: auto;
    min-height: 0;
    margin: 0;
}

/*
 * #close_side 는 좌/우 슬라이드 메뉴(#left_side/#right_side)를 닫는 버튼이다.
 * 원본은 이 버튼을 "#viewport 에 .left-open/.right-open 클래스가 붙었을 때만"
 * JS 로 보여준다 — 그 전에는 항상 display:none 이라 0x0 이다. 그 여닫이 JS 는
 * 이 정적 골격 작업의 범위 밖이라(#toggle_left/.gnb_p 와 같은 이유), 지금은
 * 원본의 "기본 상태"만 재현한다 — 스타일 없는 <button> 이 그대로 노출되던
 * 것을 원본 기본값(숨김)으로 되돌린다.
 */
#close_side { display: none; }

/* 푸터 */
/* 모바일 원본에만 있는 1px 테두리. 이것이 없으면 푸터 안 모든 글자가 1px 위로 뜬다.
 * PC 원본에는 없으므로 1024 이상에서 지운다. */
#footer { overflow: hidden; position: relative; border-top: 1px solid #21150d; background: #222222; }
#footer .f_inner { box-sizing: border-box; padding: 25px 15px 25px; }
#footer #btn_site_top { position: fixed; bottom: 10px; right: 10px; z-index: 0; width: 40px; height: 40px; border: none; border-radius: 50%; background: #d2de32; font-size: 0; opacity: 0; transition: all .2s ease-in-out; }
#footer #btn_site_top:before { content: '\e917'; font-family: 'icomoon'; font-size: 16px; font-weight: bold; color: #fff; }
#footer #btn_site_top.on { opacity: .6; z-index: 1000; }
#footer .f_logo { display: none; }
#footer .fnb { text-align: center; }
#footer .fnb ul { margin: 0; padding: 0; list-style: none; font-size: 0; }
#footer .fnb ul li { display: inline-block; }
#footer .finfo { box-sizing: border-box; font-size: 0; text-align: center; }
#footer .finfo p { display: inline-block; position: relative; line-height: 16px; margin: 0; padding: 2px 15px 2px 0; font-size: 13px; color: #ffffffab; letter-spacing: -.03em; word-break: keep-all; }
#footer .finfo .copyright { margin-top: 5px; line-height: 16px; font-size: 13px; color: #ffffffab; letter-spacing: -.03em; }

/* 모바일 좌/우 슬라이드 메뉴 (원본 aside#left_side / aside#right_side) */
.viewport_side { visibility: hidden; overflow-y: auto; position: fixed; top: 50px; left: 0; right: 0; width: 100%; max-height: calc(100% - 50px); background: #ffffff; z-index: 9999; }
#viewport.right-open #right_side { visibility: visible; }
#viewport.left-open #left_side { visibility: visible; }
.side_menu ul { margin: 0; padding: 0; list-style: none; }
.side_menu .dep1 > li > a { display: block; position: relative; height: 60px; line-height: 60px; box-sizing: border-box; margin: 0; padding: 0 35px 0 12px; border-top: 1px solid #e6e6e6; background: #ffffff; font-size: 16px; font-weight: bold; color: #21150d; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.side_menu .dep2 { display: none; padding: 10px 0; background: #f7f7f7; }
.side_menu .dep2 > li > a { display: block; position: relative; height: 40px; line-height: 40px; padding: 0 12px 0 24px; background: #f7f7f7; font-size: 14px; font-weight: bold; color: #666666; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/*
 * 우측 고정 퀵메뉴 — 원본 크롤 페이지의 인라인 <style> 을 그대로 옮김.
 *
 * PC 전용이다. kids-notice.mo.html / pain-notice.mo.html 어디에도
 * quick_side_nav 마크업 자체가 없다(grep 결과 0건, PC 크롤에는 13건) —
 * 원본은 모바일에서 이 위젯을 아예 안 그린다. 그래서 기본(모바일)은
 * display:none 으로 숨기고 PC 폭에서만 보여준다.
 */
.quick_side_fixed { display: none; position: fixed; top: 200px; right: 20px; z-index: 1000; }
.quick_side_nav { position: relative; }
/*
 * width:150px + padding-left:40px 는 임의값이 아니다. 원본 인라인 <style> 은
 * .quick_wrap 에 width:110px 만 주고 padding 은 건드리지 않는데(위 .quick_wrap>li 규칙
 * 참고), 원본 사이트는 www/css/default.css 같은 전역 ul 리셋을 아예 안 불러오므로
 * 브라우저 기본 UA 스타일시트의 ul { padding-inline-start: 40px } 가 그대로 남는다
 * (원본은 content-box 라 110+40=150 이 실제 렌더 폭이다 — 실측: 원본 150px, 우리 110px).
 * 우리는 www/css/default.css 의 "ul{margin:0;padding:0;list-style:none}" 을 그대로
 * 물려받는 데다(위 #container 리셋과 같은 원인) common.css 가 전역 box-sizing:border-box
 * 라, 그 브라우저 기본 왼쪽 여백을 잃지 않으려면 명시적으로 넣어줘야 한다. border-box
 * 에서 같은 렌더 폭(150)과 같은 안쪽 내용 폭(150-40=110, 원본의 content-box 110 과 동일)을
 * 내려면 width 를 40px 만큼 늘려 150px 로 잡아야 한다.
 */
/* 원본은 ul 의 브라우저 기본 여백(1em)과 기본 왼쪽 패딩(40px)을 초기화하지 않는다.
   그 위쪽 여백이 .quick_side_nav 밖으로 흘러나가 전체를 14px 아래로 민다(font-size 14px 기준 1em).
   기본값에 의존하면 브라우저마다 달라질 수 있으므로 같은 값을 명시한다. */
.quick_side_nav .quick_wrap { width: 150px; padding: 0 0 0 40px; text-align: center; font-size: 14px; font-weight: bold; transition: .3s ease-in; margin: 1em 0; list-style: none; }
.quick_side_nav .quick_wrap > li { padding: 15px; cursor: pointer; background: #fff; display: flex; flex-direction: column; align-items: center; border-left: 1px solid #eee; border-right: 1px solid #eee; border-bottom: 1px solid #f1f1f1; }
.quick_side_nav .quick_wrap > li:first-of-type { background: #05595e; border-left: 0; border-right: 0; }
/* 원본은 첫 항목 p 에서 margin 을 재지정하지 않는다 — 아래 .quick_wrap > li p 의
   margin:5px 0 이 그대로 살아 첫 칸이 10px 더 높다. margin:0 을 넣으면 안 된다. */
.quick_side_nav .quick_wrap > li:first-of-type p { color: #fff; letter-spacing: 0; line-height: 1.2em; font-size: 15px; }
.quick_side_nav .quick_wrap > li:last-of-type { margin-bottom: 0; }
.quick_side_nav .quick_wrap > li .icon_pic { width: 38px; }
/* 우리 common.css 는 img 에 전역으로 vertical-align:top 을 건다(인트로가 이에 의존).
   원본에는 그 전역 규칙이 없어 퀵메뉴 아이콘이 인라인 baseline 으로 놓이고
   아래에 약 3px 의 여백이 생긴다. 여기서만 원본 동작으로 되돌린다. */
.quick_side_nav .quick_wrap > li .icon_pic img { vertical-align: baseline; }
/* 원본에는 이 규칙이 .pic_icon 대상으로 적혀 있는데 마크업의 클래스는 .icon_pic 이다.
   즉 원본에서는 적용되지 않는 죽은 규칙이고, 이미지가 인라인으로 남아 아래에 3px 의
   베이스라인 여백이 생긴다. 그 여백까지가 원본의 실제 모습이므로 규칙을 되살리지 않는다. */
.quick_side_nav .quick_wrap > li .pic_icon img { display: block; width: 100%; border-radius: 5px; }
.quick_side_nav .quick_wrap > li p { margin: 5px 0; font-size: 14px; letter-spacing: -.04em; color: #222; word-break: keep-all; }
/* 원본의 퀵메뉴 인라인 <style> 은 이 a 에 색을 주지 않는다. 그래서 색은
   사이트 전역 규칙의 a 색(#333)이 된다 — 원본 페이지에 순수 <a> 를 넣어 실측했다.
   여기서 inherit 로 두면 바깥 p 의 #222 를 물려받아 원본보다 진해진다. */
.quick_side_nav .quick_wrap > li a { text-decoration: none; word-break: keep-all; color: #333333; }
/* 통증 사이트의 퀵메뉴 인라인 <style> 은 소아와 딱 두 군데가 다르다.
   나머지 규칙은 두 사이트가 글자까지 동일하다. */
.site-pain .quick_side_nav .quick_wrap > li:first-of-type { background: #152541; }
.site-pain .quick_side_nav .quick_wrap > li p { letter-spacing: -1px; }
/* 원본에서 첫 항목("Quick menu")만은 자간 0 이다. 원본은 :first-of-type 규칙의
   특이도가 (0,3,2)로 (0,2,2)인 일반 규칙보다 높아 자연히 이기지만, 우리 쪽
   통증 규칙은 .site-pain 이 붙어 같은 (0,3,2)라 뒤에 온다는 이유로 이겨 버린다.
   그래서 첫 항목을 명시적으로 되돌린다. */
.site-pain .quick_side_nav .quick_wrap > li:first-of-type p { letter-spacing: 0; }

/* PC(1024px 이상) — 원본이 pc_skin_955_895.css 로 갈라 내려주던 화면 */
@media all and (min-width: 1024px) {
    #header { padding: 0; }
    .site-pain #header { background: #091b3b; }
    #header .logo { float: left; width: 200px; }
    #header .logo h1 { width: auto; padding: 0; }
    #header .logo h1 span a { height: 80px; text-align: left; }
    #header .logo h1 img { max-width: 100%; max-height: 50px; }
    #header .logo button { display: none; }
    /*
     * 헤더 안쪽 래퍼를 1280px 로 가운데 정렬한다(원본 pc_skin_955_895.css,
     * "#header > .inner, ..., #footer .f_inner {margin:0 auto;max-width:1280px}").
     * 이게 없으면 로고가 뷰포트 왼쪽 끝(x=0)에 붙어 잘려 보인다 — 원본은
     * 1920px 폭에서 x=320 에 온다((1920-1280)/2). 모바일(<1024)에는 원본도
     * 이 규칙이 없으므로 여기(PC 전용 블록)에만 넣는다.
     */
    #header .inner { margin: 0 auto; max-width: 1280px; }


    .lnb_p { display: block; float: right; width: 100%; max-width: 1080px; font-size: 0; text-align: right; }
    .lnb_p ul { display: inline-block; margin: 0; padding: 0; list-style: none; }
    .lnb_p a { display: block; }
    .lnb_p .dep1:after { content: ''; display: block; clear: both; }
    /* 원본은 1뎁스 항목의 폭을 고정하지 않는다 — a 의 min-width:100px 와
     * 좌우 15px 패딩만 주고 나머지는 글자 자연폭이 정한다.
     *
     * 한때 gnb.php 에서 잰 값을 --gnb-w 로 li 에 고정했으나 그건 틀렸다.
     * 그 폭이 우리 글꼴에는 좁아 "통증 클리닉"이 "통증 클리"로 잘렸다.
     * 폭이 어긋났던 진짜 원인은 폰트 비교 장치(tests/lib/fonts.mjs)의
     * 선택자 특이도가 낮아 원본 쪽에는 글꼴 통일이 걸리지 않은 것이었고,
     * 그것을 고친 뒤에는 자연폭이 원본과 정확히 일치한다.
     */
    .lnb_p .dep1 > li { float: left; position: relative; }
    .lnb_p .dep1 > li > a { box-sizing: border-box; min-width: 100px; height: 80px; line-height: 80px; padding: 0 15px; font-size: 20px; font-weight: bold; color: #222; text-align: center; transition: .2s color ease-in; }
    /* 원본은 메뉴 라벨 span 을 inline-block 으로 두고 좌우 5px 패딩을 준다.
       없으면 span 폭이 10px 좁아지고, 가운데 정렬이라 글자가 0.3px 어긋난 자리에
       그려져 서브픽셀 렌더링 결과가 원본과 달라진다. */
    .lnb_p .dep1 > li > a span { display: inline-block; padding: 0 5px; }
    /* 현재 보고 있는 메뉴 표시. 원본은 글자색을 바꾸고 아래에 점을 하나 찍는다.
       원본 CSS 의 색상 표기가 '#05595Ef'(7자리, 무효)라 그대로 옮길 수 없어
       기존 사이트에서 실제 렌더된 값을 재서 넣었다 — 소아 글자·점 #05595E,
       통증 글자 #fff·점 #006FB9. */
    /* 통증 사이트 PC 헤더는 배경이 남색(#091b3b)이라 메뉴 글자가 흰색이다.
       소아는 흰 배경에 #222. 모바일은 두 사이트가 같으므로 PC 안에서만 나눈다. */
    .site-pain .lnb_p .dep1 > li > a { color: #ffffff; }
    .lnb_p .dep1 > li.on > a, .lnb_p .dep1 > li:hover > a { color: #05595e; }
    .lnb_p .dep1 > li.on > a:after, .lnb_p .dep1 > li:hover > a:after {
        content: ''; position: absolute; bottom: 8px; left: 0; right: 0; margin: auto;
        z-index: 10; width: 8px; height: 8px; border-radius: 50%; background: #05595e;
    }
    .site-pain .lnb_p .dep1 > li.on > a, .site-pain .lnb_p .dep1 > li:hover > a { color: #ffffff; }
    .site-pain .lnb_p .dep1 > li.on > a:after, .site-pain .lnb_p .dep1 > li:hover > a:after { background: #006fb9; }
    .lnb_p .dep1 > li.on > a,
    .lnb_p .dep1 > li:hover > a { color: #05595e; }
    /*
     * .on/:hover 상태의 8px 원형 점 표시. 원본은 :after 로 그린다
     * (.dep1 > li.on > a:after, .dep1 > li:hover > a:after).
     */
    .lnb_p .dep1 > li.on > a:after,
    .lnb_p .dep1 > li:hover > a:after {
        content: ''; position: absolute; bottom: 10%; left: 0; right: 0; margin: auto;
        z-index: 10; width: 8px; height: 8px; border-radius: 50%; background: #05595e;
    }
    .lnb_p .dep1 > li > div { display: none; position: absolute; top: 80px; left: 0; min-width: 100%; box-sizing: border-box; }
    .lnb_p .dep1 > li:hover > div { display: block; }
    /*
     * 드롭다운 배경 스트립은 dep2 자체가 아니라 :before 의도적 오버플로로
     * 그린다(margin:0 -1920px). dep2 는 드롭다운 박스 폭만큼만 넓지만, 흰
     * 배경/보더 줄은 뷰포트 전체 폭으로 깔려야 하기 때문이다. dep2 에 직접
     * background/border 를 주면 드롭다운 박스 폭까지만 칠해져 원본과 구조가
     * 달라진다(리뷰에서 지적된 지점) — 근사값이 아니라 원본 기법 그대로 재현.
     */
    .lnb_p .dep1 > li:hover > div:before {
        content: ''; position: absolute; right: 0; left: 0; height: 80px; margin: 0 -1920px;
        z-index: 100; border-top: 1px solid #ddd; border-bottom: 1px solid #ddd; background: #ffffff;
    }
    .lnb_p .dep2 { display: table; position: relative; height: 80px; z-index: 210; padding: 0; white-space: nowrap; font-size: 0; }
    .lnb_p .dep2 > li { display: table-cell; vertical-align: middle; }
    .lnb_p .dep2 > li > a { display: block; position: relative; padding: 13px; font-size: 16px; font-weight: bold; color: #666666; }
    .lnb_p .dep2 > li.on > a,
    .lnb_p .dep2 > li:hover > a { color: #05595e; }
    .lnb_p .dep2 > li.on > a:after,
    .lnb_p .dep2 > li:hover > a:after {
        content: ''; position: absolute; bottom: -1px; left: 0; right: 0; margin: auto;
        z-index: 10; width: 8px; height: 8px; border-radius: 50%; background: #05595e;
    }

    #footer { border-top: 0; }
    #footer #btn_site_top { bottom: 20px; right: 20px; width: 50px; height: 50px; }
    #footer .f_inner { position: relative; padding: 50px 0 50px 224px; margin: 0 auto; max-width: 1280px; }
    #footer .f_logo { display: block; position: absolute; top: 53px; left: 0; width: 170px; }
    #footer .fnb { text-align: left; }
    #footer .fnb ul li a { padding-right: 15px; margin-right: 15px; box-sizing: border-box; display: inline-block; line-height: 42px; font-size: 17px; }
    #footer .finfo { text-align: left; }
    #footer .finfo p { font-size: 15px; }
    #footer .finfo .copyright { font-size: 15px; }

    #left_side, #right_side { display: none; }
    .quick_side_fixed { display: block; }
}

/*
 * 서브페이지 공통 골격 — 상단 배너(#shgroup)와 본문 폭 제한(.contents_wrap,
 * 그리드 .row/.col). 헤더·GNB·푸터·퀵메뉴처럼 18개 남은 서브페이지 전부가
 * 그대로 재사용한다. 처음에는 공지사항 스킨(skin/board/notice/style.css) 에만
 * 있었는데, 본문 폭 제한(.contents_wrap 의 margin:0 auto;max-width:1280px)을
 * 빠뜨렸더니 본문이 뷰포트 전체 폭으로 퍼지면서 검색창까지 엉뚱한 자리로
 * 밀렸다(픽셀 대조 실측: 원본 x=320 w=1280 → 우리 x=0 w=1920). 이 스킨 하나만
 * 고쳐서 맞추면 다음 스킨이 같은 실수를 반복한다 — 여기로 옮긴다.
 *
 * 텍스트(배너 제목·브레드크럼 라벨)는 화면마다 다르므로 마크업은 각 스킨이
 * 그대로 채운다. 여기서는 좌표·크기·타이포그래피 골격만 정의한다.
 *
 * 수치 출처: 원본 라이브 사이트를 Playwright 로 열어 PC 1920x1080 / 모바일
 * 390x844 에서 getBoundingClientRect() + getComputedStyle() 로 직접 측정,
 * reference/assets/.../build/{pc,m}_skin_955_895.css 원본과 대조 확인.
 * 원본은 PC/모바일에 서로 다른 파일을 내려주며 모바일 기본값이 서로 다르다
 * (예: .sub_top_title padding-top 이 pc_skin 은 20px, m_skin 은 50px) — 우리는
 * 파일을 나누지 않으므로 "그 뷰포트에서 원본이 실제로 내려주던 파일"의 값만
 * 가져와 하나의 미디어 쿼리로 합친다.
 */
.shgroup { position: relative; }
.shgroup .sub_top_img {
    display: block;
    overflow: hidden;
    max-height: 200px;
    background-repeat: no-repeat;
    background-position: center 0;
}
.shgroup .sub_top_img > img { visibility: hidden; max-width: none; vertical-align: top; }
.shgroup .sub_top_wrap { position: absolute; top: 0; right: 0; bottom: 0; left: 0; }
.shgroup .sub_top_wrap .sub_top_box { display: table; width: 100%; height: 100%; }
.shgroup .sub_top_wrap .top_inner { display: table-cell; padding: 0 48px; text-align: center; vertical-align: middle; }
.shgroup .sub_top_wrap .sub_top_title {
    display: inline-block; position: relative; margin: 0; padding: 50px 0 0;
    color: #ffffff; line-height: 1.4em; vertical-align: top; font-size: 26px; font-weight: bold;
}
/* 원본은 PC 와 모바일에 다른 CSS 파일을 내려준다 — m_skin 은 20px, pc_skin 은 40px.
   우리는 한 벌이므로 기본값을 모바일로 두고 데스크톱에서 올린다. */
.shgroup .sub_top_wrap .location { line-height: 20px; font-size: 0; }
.shgroup .sub_top_wrap .location > span {
    display: inline-block; position: relative; padding-right: 30px; vertical-align: top;
    font-size: 14px; color: #fff;
}
.shgroup .sub_top_wrap .location > span.home { font-size: 0; }
.shgroup .sub_top_wrap .location > span:before {
    content: '\e916'; display: block; position: absolute; right: 8px; top: 1px;
    font-family: 'icomoon'; font-size: 14px;
}
.shgroup .sub_top_wrap .location > span:last-child { padding-right: 0; }
.shgroup .sub_top_wrap .location > span:last-child:before { display: none; }
.shgroup .sub_top_wrap .location > span.home:after { content: '\e900'; font-size: 16px; font-family: 'icomoon'; }

#container .contents_wrap { min-height: 350px; padding: 0; }
#container .contents_wrap .contents { padding: 20px 0; }
#container .contents:after { content: ''; display: block; overflow: hidden; clear: both; }

/*
 * 격자는 css/grid.css 로 옮겼다 — 원본의 grid.css 를 한 글자도 고치지 않고
 * 그대로 가져온 파일이다.
 *
 * 여기 있던 손으로 옮긴 판에는 '.col { width: 100% }' 가 있었다. 공지·예약처럼
 * 한 칸짜리 화면(d_col_6)만 쓸 때는 결과가 같았지만, 메인처럼 칸을 나누는
 * 화면(d_col_4_5 = 75%)에서는 특이도가 높은 이 규칙이 이겨 열 나눔이 통째로
 * 죽었다(실측: 75% 여야 할 칸이 100% 로 그려졌다). 원본 grid.css 의 같은
 * 규칙에는 width 가 없다.
 */
@import url("grid.css");

@media all and (min-width: 1024px) {
    .shgroup .sub_top_img { max-height: none; }
    .shgroup .sub_top_wrap .sub_top_title { padding: 40px 0 0; font-size: 54px; }
    .shgroup .sub_top_wrap .location { line-height: 40px; }
    .shgroup .sub_top_wrap .location > span { font-size: 18px; }

    #container .contents_wrap { min-height: 500px; margin: 0 auto; max-width: 1280px; }
    #container .contents_wrap .contents { padding: 100px 0 140px; }

    .row > .white-space { max-width: 1280px !important; }
}


/* ── 그리드: 좁은 화면의 콘텐츠 좌우 여백 ──────────────────────
 * 원본 grid.css 는 1024px 미만에서만 .row > div.white-space 에 좌우 15px 을 준다
 * (768~1023 과 767 이하, 두 구간에 같은 값). 데스크톱에서는 주지 않는다.
 * 이게 없으면 좁은 화면에서 게시판이 화면 끝에 붙는다. */
@media all and (max-width: 1023px) {
    /* 원본이 !important 를 쓰는 이유: 이 요소에는 인라인 style 로 padding 이 박혀 있어
       (CMS 가 생성) 일반 규칙으로는 못 이긴다. */
    .row > div.white-space { padding-left: 15px !important; padding-right: 15px !important; }
}


/* ── 통증 사이트 모바일 헤더 ────────────────────────────────
 * 원본에서 통증 사이트만, 그리고 1024px 미만에서만 h1 에 남색 배경이 깔린다
 * (소아는 어느 폭에서도 없고, 통증도 데스크톱에서는 없다 — 실측 확인).
 * 로고 이미지의 글자가 흰색이라, 이 배경이 없으면 흰 바탕에 흰 글자가 되어
 * 파란 EZ. 마크만 보인다. */
@media all and (max-width: 1023px) {
    .site-pain #header h1 { background-color: rgb(9, 27, 59); }
}


/* ── 서브페이지의 좌측 메뉴 자리(.snb_wrap) ────────────────────
 * 원본 마크업에는 이 칸이 있지만 화면에는 내지 않는다 — 모바일에서는
 * display:none, PC 에서는 flex 지만 안쪽 항목이 전부 숨겨져 높이가 0 이다.
 * 이 규칙이 없으면 우리 쪽에서만 97px 짜리 빈 줄이 생긴다(실측: 콘텐츠
 * 화면 네 개가 전부 그만큼 길었다).
 */
#sub_view #container .contents_wrap .snb_wrap { display: none; }
#sub_view #container .contents_wrap .snb_wrap > h2 { display: none; }

@media all and (min-width: 1024px) {
    /* PC 는 자리를 잡되(오른쪽으로 흘려보낸다) 안쪽이 비어 높이가 0 이다. */
    #sub_view #container .contents_wrap .snb_wrap {
        display: flex; float: right; margin-left: 40px;
        max-width: calc(1000px - 778px);
    }

    /* 안쪽 메뉴는 내지 않는다.
     *
     * 원본도 이 칸의 높이가 0 이다(실측: 폭 502, 높이 0). 원본에서는 그 일을
     * pc_skin 의 여러 규칙이 하는데 우리는 그 파일을 쓰지 않으므로 항목이
     * 그대로 살아나 오른쪽 위에 4줄짜리 메뉴가 떠 있었다 — PC 화면마다 어긋난
     * 픽셀 1618개가 전부 이것이었다. */
    #sub_view #container .contents_wrap .snb_wrap > .snb { display: none; }
}

/* ── 휴대폰 아래 바로가기 바 ─────────────────────────────
 * 원본은 CMS 배너 그룹(anyBanner)이 만드는 자리다. 실측: 화면 아래 고정,
 * 높이 90px, 아이콘 한 칸 98px, 배경 없음. PC 에는 내지 않는다.
 */
.ez-mobile-bar { display: none; }

@media all and (max-width: 1023px) {
    .ez-mobile-bar {
        display: flex; justify-content: center; align-items: flex-end;
        position: fixed; left: 0; right: 0; bottom: 0; z-index: 2000;
        pointer-events: none;
    }
    /*
     * 화면 폭을 4(통증은 3)로 나눠 가진다.
     *
     * 98px 로 못 박아 두었더니 390px 보다 넓은 휴대폰(예: 430px)에서 아이콘
     * 네 개가 392px 만 차지해 양옆에 19px 씩 흰 여백이 남고, 바가 화면에
     * 붙지 않고 떠 있는 것처럼 보였다. 원본은 폭에 맞춰 아이콘이 같이 커진다
     * (실측: 430px 화면에서 108px). 아이콘 그림의 비율(98:90)을 지킨다.
     */
    .ez-mobile-bar a { display: block; flex: 1 1 0; pointer-events: auto; }
    .ez-mobile-bar img { display: block; width: 100%; height: auto; }

    /* 바에 가려 마지막 내용이 안 읽히지 않게 자리를 비워 둔다. */
    #footer { padding-bottom: 90px; }
}
