@charset "utf-8";

/* nForU 공통 게시판 CSS(/common/css/ntt.css) 가 아이콘을 xeicon 웹폰트로 찍는데
   ( .bbsV_prne li span:before / .bbsV_downCO li a:before 등 10 곳, content:"\e9xx" )
   sangdam 퍼블 basic.css 는 Pretendard + RemixIcon 만 @import 하므로 글리프가 두부(□)로 뜬다.
   ( 타 홈페이지는 /common/css/basic.css 가 xeicon 을 @import 해서 정상 )
   → @import 는 @charset 다음, 다른 규칙보다 앞에 있어야 적용된다. */
@import url("/font/XEIcon-2.3.3/xeicon.min.css");

/*-----------------------------------------------------------
nForU <-> 퍼블리싱 연결용 커스텀 CSS
( 퍼블리싱 원본 css 는 수정하지 않고 이 파일에서만 보정 )
-----------------------------------------------------------*/

/* 로그인 상단 안내바 : 퍼블리싱에 없는 nForU 전용 영역 ( /common/css/basic.css 에서 이관 ) */
.login_Tinfo {position:relative; color:#fff; font-size:.7rem; text-align:center; line-height:40px; background:#e33d65;}
.login_Tinfo a {display:inline-block; margin:6px 6px 0 10px; padding:0 .5rem; line-height:28px; color:#333; background:#fff; border-radius:14px;}

/* 메인 위젯 래퍼(widgDiv) 보정
   위젯 JSP 가 퍼블 블록(M_visual / M_notice / M_link1+M_link2 / M_garlly)을 직접 출력하므로
   중간에 끼는 .widgDiv 를 flex 배치에서 투명 처리한다.
   ( MC_wrap1 / MC_wrap3 는 flex 가 아니라 래퍼가 있어도 무방 → 아래 두 곳만 보정 )
   위젯관리 화면(.widgMng)에서는 위젯추가/수정 버튼 위치를 위해 래퍼 박스를 유지한다. */
.MC_wrap2:not(.widgMng) .container > .widgDiv,
.MC_wrap2:not(.widgMng) .con_wrap > .widgDiv { display: contents; }

/* 위젯관리 화면(.widgMng) 레이아웃 보정
   .widgDiv 는 위젯 오버레이(.widgOption : position:absolute; width/height:100%)의 기준 박스라
   display:contents 를 쓸 수 없다. 대신 래퍼에 시안과 같은 폭을 직접 주고
   안쪽 퍼블 블록이 래퍼를 꽉 채우도록 해서 실제 화면과 같은 배치로 보이게 한다.
   ( M_info 배치는 아래 절대배치 보정 참고 ) */
.MC_wrap2.widgMng .container > .widgDiv { width: 30%; }
.MC_wrap2.widgMng .container > .widgDiv > .M_notice { width: 100%; }
.MC_wrap2.widgMng .con_wrap > .widgDiv { display: flex; flex-wrap: wrap; gap: 1.75rem; width: 100%; }

@media (max-width:1440px) {
	/* 이 폭부터 .MC_wrap2 .container 가 block 이 되므로 래퍼 폭도 원복 */
	.MC_wrap2.widgMng .container > .widgDiv { width: 100%; margin-bottom: 1.75rem; }
}

/* 위젯관리 화면 : 학생상담센터(M_info)를 심리검사/개인상담/집단상담(M_link2) 옆에 붙이기
   M_info 는 위젯이 아니라 .con_wrap 의 형제이고 M_link2 는 래퍼(.widgDiv) 안이라
   서로 flex 컨테이너가 달라 같은 행에 올 수 없다 → 관리화면에서만 M_info 를 절대배치한다.
   ( .widgDiv 는 widget.css 에서 position:relative 라 위젯 오버레이 기준은 영향 없음 ) */
.MC_wrap2.widgMng .con_wrap { position: relative; }
.MC_wrap2.widgMng .con_wrap > .widgDiv > .M_link2 { width: calc(100% - 17.75rem); }
.MC_wrap2.widgMng .con_wrap > .M_info { position: absolute; right: 0; bottom: 0; }

@media (max-width:860px) {
	/* 이 폭부터 퍼블 CSS 가 M_link2 / M_info 를 100% 로 쌓으므로 절대배치 원복 */
	.MC_wrap2.widgMng .con_wrap { position: static; }
	.MC_wrap2.widgMng .con_wrap > .widgDiv > .M_link2 { width: 100%; }
	.MC_wrap2.widgMng .con_wrap > .M_info { position: static; }
}

/* 사이트맵(전체메뉴) 열림 시 메인비주얼이 확대되는 문제 보정
   layout.css 의 #wrap.fixed 는 position:fixed 만 있고 width 가 없다.
   → width:auto + left/right:auto 인 fixed 박스는 shrink-to-fit 이라
     내부 slick-track 의 고정폭(뷰포트 × 슬라이드수)까지 #wrap 이 부풀어 오른다.
   → 그 상태로 4초(autoplaySpeed)+1초(speed) 뒤 autoplay 가 슬라이드를 넘기면
     slick 의 postSlide → setPosition → setDimensions 가 부푼 폭으로 슬라이드 폭을
     다시 계산해서, 사이트맵을 닫아도 메인비주얼이 확대된 채로 남는다.
     ( 5~6초 안에 닫으면 재계산이 안 일어나 증상이 없음 )
   → 폭을 뷰포트로 고정해 shrink-to-fit 을 막는다. top 은 주지 않는다(현재 스크롤 위치 유지). */
#wrap.fixed { left: 0; width: 100%; }

/* 메뉴 새창(외부링크) 아이콘
   nForU 메뉴 생성기가 새창 메뉴에 target="_blank" 를 붙이는데 sangdam 퍼블 CSS 에는
   대응 규칙이 없어 아이콘이 안 나온다. ( 참고 : /css/web/main/layout.css 104~105, 257~258 )
   sangdam 은 RemixIcon 을 쓰므로 ri-external-link-line(\ecaf) 을 span 뒤에 인라인으로 붙인다.
   대상 : GNB 2차 / 사이트맵(전체메뉴) 2차 / 서브 좌측메뉴(ul.lnb → .dep02) */
#gnb .depth02 > ul > li > a[target="_blank"]::after,
.popFullmenu .fullmenu_group .depth02 > ul > li > a[target="_blank"]::after,
#lnb nav .dep02 > li > a[target="_blank"]::after {
	display: inline-block;
	margin-left: 0.3rem;
	font-family: 'Remixicon';
	font-weight: 500;
	font-size: 0.9em;
	line-height: 1;
	vertical-align: middle;
	content: "\ecaf";
}

/* 모바일 좌측메뉴 드롭다운(#lnb nav .dep02)이 본문의 다음(Daum) 로드뷰 지도 위젯에 가려지는 문제
   layout.css:181 은 .dep02 의 z-index 를 1로 주는데, 지도가 있는 페이지(예: 찾아오시는길)에서
   다음 로드뷰 위젯 내부의 라벨/테두리 span 들이 z-index:2~10 을 가져 드롭다운보다 위에 그려진다.
   → 지도 위젯보다 확실히 높은 값으로 올린다(사이트맵 전체메뉴 .popFullmenu=99 보다는 낮게). */
@media (max-width:1240px) {
	#lnb nav .dep02 { z-index: 50; }
}

/* 게시판 하단 페이징(.bbs_pagerA)에서 현재 페이지 표시(<strong>)가 줄바꿈되어
   « / 1 / › » 세 줄로 깨지고 오른쪽에 빈 공간이 생기는 문제 보정.
   con_com.css 의 @media(max-width:768px) 가 .bbs_pagerA strong 에 display:flex!important 를
   주는데, flex 컨테이너는 폭을 안 주면 block 처럼 부모 폭(100%)을 꽉 채운다
   (nForU 기본은 inline-block 이라 글자 크기만큼만 차지 → ntt.css:1265).
   → inline-flex 로 바꿔 shrink-to-fit 되게 해서 한 줄 정렬을 복원한다. */
@media (max-width:768px) {
	.bbs_pagerA strong { display: inline-flex !important; }
}

/* 게시판 목록(.BD_list)에서 작성자가 한 글자씩 세로로 길게 줄바꿈되는 문제
   ⚠ 진짜 근본원인은 nttList.jsp 였음(2026-08-31, 처음엔 CSS 로 오진했다가 정정) —
   colgroup 의 번호 <col style="width:10%"> 에 대응하는 th/td 는 .BD_tm_none 이 붙어
   숨겨지는데, 같은 파일 아래쪽 "추가필드(bbsAdit)" 분기(437행대)는 그 col 에도
   class="BD_tm_none" 을 똑같이 붙여주는 반면, 이 board(추가필드 없는 일반 게시판) 분기는
   th/td 에만 붙이고 col 에는 빠뜨려 있었다.
   → 그 결과 번호 열이 화면엔 안 보여도 table-layout:auto 계산에서 10% 만큼의 폭이
     어느 열에도 배정되지 않고 통째로 붕 떠서(표 354px 중 26.5px), 작성자처럼 폭 힌트가
     없는 칸이 그만큼 못 받고 극단적으로 짜부러져 "학/생/상/담/센/터"처럼 한 글자씩
     세로로 쌓였다. (실측: col 에 class 없음 → 보이는 4칸 합 327.5px / class 추가 →
     354px 로 정확히 일치, 작성자 폭 20.7px→45.3px)
   → 수정은 nttList.jsp:210 의 번호 col 에 class="BD_tm_none" 추가(추가필드 분기와
     동일한 패턴으로 통일, 공용 파일이라 다른 학교에도 같이 적용됨).
   여기 CSS 는 그 위에 제목만 살짝 줄여 작성자에 여유를 더 주는 보조 조정일 뿐이다. */
@media (max-width:690px) {
	.BD_list td.ta_l { width: 48% !important; }
}

/* 고정헤더가 스크롤 후에도 뷰포트 상단에 안 붙는 문제
   layout.css 의 #header 는 position:fixed 인데 top 이 없다(=top:auto → 정적위치 고정).
   로그인 안내바(.login_Tinfo, 40px, #wrap 바깥 위) 나 상단팝업(.uppopOpen)이 있으면
   헤더가 그 높이만큼 내려간 자리에 계속 붙어 있어 스크롤 시 위쪽에 빈 띠가 남는다.
   → 스크롤이 시작되면(layout.js 가 #wrap 에 .hdBk 부여) 최상단으로 붙인다.
     맨 위(scrollTop=0)에서는 기존처럼 안내바/팝업 아래에 위치 → 현재 모양 유지.
     참고 : 타 사이트(/css/web/main/layout.css:52)는 아예 #header{top:0} 이다. */
#wrap.hdBk #header { top: 0; }
