@charset "utf-8";

/* ==========================================================================
   1. 그누보드 코어 호환 레이어
   ---------------------------------------------------------------------
   그누보드 기본 게시판/글쓰기/댓글/검색/캡챠 스킨은 아래 클래스들에
   의존한다. 헤더(#hd,#tnb,#gnb,#logo)와 푸터(#ft) 레이아웃은 이 테마에서
   Tailwind로 완전히 새로 만들었기 때문에, 그 부분의 구형 float/고정폭
   규칙은 가져오지 않고 "게시판 내용 영역"에 필요한 규칙만 이식했다.
   (원본: 그누보드5 공식 basic 테마 theme/basic/css/default.css)
   ========================================================================== */

*, *::before, *::after { box-sizing: border-box; }
body { margin: 0; padding: 0; }
h1, h2, h3, h4, h5, h6, form, fieldset, img { margin: 0; padding: 0; border: 0; }
ul, dl, dt, dd { margin: 0; padding: 0; list-style: none; }
legend { position: absolute; margin: 0; padding: 0; font-size: 0; line-height: 0; text-indent: -9999em; overflow: hidden; }
label, input, button, select, img { vertical-align: middle; }
hr { display: none; }
a { color: inherit; text-decoration: none; }

input[type=text], input[type=password], textarea { transition: all .3s ease-in-out; outline: none; }
input[type=text]:focus, input[type=password]:focus, textarea:focus, select:focus {
    box-shadow: 0 0 0 3px rgba(219,114,51,0.15);
    border: 1px solid #DB7233 !important;
}
.placeholdersjs { color: #aaa !important; }

/* 팝업레이어(공지 알림 팝업) — 내용이 없으면 화면에 자리를 차지하지 않아야 함 */
#hd_pop { position: relative; z-index: 1000; margin: 0 auto; height: 0; }
#hd_pop h2 { position: absolute; font-size: 0; line-height: 0; overflow: hidden; }
.hd_pops { position: absolute; border: 1px solid #e9e9e9; background: #fff; border-radius: 14px; overflow: hidden; box-shadow: 0 20px 45px -20px rgba(43,38,33,0.25); }
.hd_pops img { max-width: 100%; display: block; }
.hd_pops_footer { padding: 0; background: #2B2621; color: #fff; text-align: left; position: relative; }
.hd_pops_footer button { padding: 10px; border: 0; color: #fff; background: transparent; cursor: pointer; }
.hd_pops_footer .hd_pops_close { position: absolute; top: 0; right: 0; }

/* 화면낭독기 전용 텍스트 / 본문 바로가기 */
#hd_login_msg { position: absolute; top: 0; left: 0; font-size: 0; line-height: 0; overflow: hidden; }
.msg_sound_only, .sound_only { display: inline-block !important; position: absolute; top: 0; left: 0; width: 0; height: 0; margin: 0 !important; padding: 0 !important; font-size: 0; line-height: 0; border: 0 !important; overflow: hidden !important; }
#skip_to_container a { z-index: 100000; position: absolute; top: 0; left: 0; width: 1px; height: 1px; font-size: 0; line-height: 0; overflow: hidden; }
#skip_to_container a:focus, #skip_to_container a:active { width: 100%; height: 75px; background: #21272e; color: #fff; font-size: 2em; font-weight: bold; text-align: center; text-decoration: none; line-height: 3.3em; }

.is-hidden { display: none !important; }
.is-visible { display: block !important; }

/* 브레드크럼: 마지막 항목(현재 페이지명)이 길어도 줄바꿈되지 않고 가로 스크롤되도록 처리 */
.bdys-breadcrumb { flex-wrap: nowrap; overflow-x: auto; white-space: nowrap; -ms-overflow-style: none; scrollbar-width: none; }
.bdys-breadcrumb::-webkit-scrollbar { display: none; }
.bdys-breadcrumb > * { flex-shrink: 0; }
.pc-only { display: none; }
@media (min-width: 769px) { .pc-only { display: block !important; } }
.mobile-only { display: block; }
@media (min-width: 769px) { .mobile-only { display: none !important; } }

/* 게시판 콘텐츠 영역(#container 내부)에서 사용하는 기본 테이블/폼/리스트 UI */
.tbl_wrap table { width: 100%; border-collapse: collapse; border-spacing: 0 5px; background: #fff; border-top: 1px solid #ececec; border-bottom: 1px solid #ececec; }
.tbl_wrap caption { padding: 10px 0; font-weight: bold; text-align: left; }
.tbl_head01 { margin: 0 0 10px; }
.tbl_head01 caption { padding: 0; font-size: 0; line-height: 0; overflow: hidden; }
.tbl_head01 thead th { padding: 20px 0; font-weight: normal; text-align: center; border-bottom: 1px solid #ececec; height: 40px; }
.tbl_head01 thead th input { vertical-align: top; }
.tbl_head01 tfoot th, .tbl_head01 tfoot td { padding: 10px 0; border-top: 1px solid #c1d1d5; border-bottom: 1px solid #c1d1d5; background: #d7e0e2; text-align: center; }
.tbl_head01 tbody th { padding: 8px 0; border-bottom: 1px solid #e8e8e8; }
.tbl_head01 td { color: #666; padding: 10px 5px; border-top: 1px solid #ecf0f1; border-bottom: 1px solid #ecf0f1; line-height: 1.4em; height: 60px; word-break: break-all; }
.tbl_head01 tbody tr:hover td { background: #fafafa; }
.tbl_head01 a:hover { text-decoration: underline; }

.tbl_head02 { margin: 0 0 10px; }
.tbl_head02 caption { padding: 0; font-size: 0; line-height: 0; overflow: hidden; }
.tbl_head02 thead th { padding: 5px 0; border-top: 1px solid #d1dee2; border-bottom: 1px solid #d1dee2; background: #F1F6EF; color: #383838; font-size: .95em; text-align: center; }
.tbl_head02 thead a { color: #383838; }
.tbl_head02 tfoot th, .tbl_head02 tfoot td { padding: 10px 0; border-top: 1px solid #c1d1d5; border-bottom: 1px solid #c1d1d5; background: #d7e0e2; text-align: center; }
.tbl_head02 tbody th { padding: 5px 0; border-top: 1px solid #e9e9e9; border-bottom: 1px solid #e9e9e9; background: #fff; }
.tbl_head02 td { padding: 5px 3px; border-top: 1px solid #e9e9e9; border-bottom: 1px solid #e9e9e9; background: #fff; line-height: 1.4em; word-break: break-all; }

.tbl_frm01 { margin: 0 0 20px; }
.tbl_frm01 table { width: 100%; border-collapse: collapse; border-spacing: 0; }
.tbl_frm01 th { width: 100px; padding: 10px 13px; border: 1px solid #eee; border-left: 0; background: #FBF7EF; text-align: left; }
.tbl_frm01 td { padding: 10px; border-top: 1px solid #eee; border-bottom: 1px solid #eee; background: transparent; }
.wr_content textarea, .tbl_frm01 textarea, .form_01 textarea, .frm_input { border: 1px solid #ddd; background: #fff; color: #2B2621; vertical-align: middle; border-radius: 10px; padding: 8px 12px; box-shadow: inset 0 1px 1px rgba(0,0,0,.04); font-family: inherit; }
.tbl_frm01 textarea { padding: 8px 12px; }
.frm_input { height: 44px; }
.full_input { width: 100%; }
.half_input { width: 49.5%; }
.twopart_input { width: 385px; margin-right: 10px; }
.tbl_frm01 textarea, .write_div textarea { width: 100%; height: 120px; }
.tbl_frm01 .frm_file { display: block; margin-bottom: 5px; }
.tbl_frm01 .frm_info { display: block; padding: 0 0 5px; line-height: 1.4em; color: #5B534A; }
.frm_info.add_info { margin-top: 10px !important; padding: 8px 12px; background: #fff; border: 1px solid #eee; border-radius: 10px; line-height: 1.6; }
.btn_info_toggle { display: block; margin: 5px 0 0; font-size: 14px; color: #DB7233; background: none; border: none; cursor: pointer; text-decoration: underline; }

.list_01 ul { border-top: 1px solid #ececec; }
.list_01 li { border-bottom: 1px solid #ececec; background: #fff; padding: 12px 15px; list-style: none; position: relative; }
.list_01 li:nth-child(odd) { background: #FBF9F4; }
.list_01 li:hover { background: #FDF3EC; }
.list_01 li.empty_li { text-align: center; padding: 40px 0; color: #999; }

.form_01 li { margin-bottom: 10px; }
.form_01 .left_input { float: left; }
.form_01 .margin_input { margin-right: 1%; }
.form_01 textarea { height: 100px; width: 100%; }
.form_01 .frm_label { display: inline-block; width: 130px; }

.empty_table { padding: 60px 0 !important; text-align: center; color: #999; }
.empty_list { padding: 30px 0 !important; color: #999; text-align: center; }

.required, textarea.required { background-repeat: no-repeat !important; background-position: right top !important; }

.td_board, .td_category, .td_chk, .td_date, .td_datetime, .td_group, .td_mb_id, .td_mng, .td_nick, .td_num, .td_numbig, .td_stat { text-align: center; }
.td_name { text-align: left; }
.txt_active { color: #5C8C50; }
.txt_done { color: #DB7233; }
.txt_expired { color: #ccc; }
.txt_rdy { color: #7AAB6D; }

/* 새창(신고/이동/복사 등) */
.new_win { position: relative; }
.new_win .tbl_wrap { margin: 0 20px; }
.new_win #win_title { font-size: 1.3em; height: 50px; line-height: 30px; padding: 10px 20px; background: #fff; color: #000; box-shadow: 0 1px 10px rgba(0,0,0,.1); }
.new_win .win_ul { margin-bottom: 15px; padding: 0 20px; }
.new_win .win_ul li { float: left; background: #fff; text-align: center; padding: 0 10px; border: 1px solid #F3C39C; border-radius: 30px; margin-left: 5px; }
.new_win .win_ul li:first-child { margin-left: 0; }
.new_win .win_ul li a { display: block; padding: 8px 0; color: #C25E28; }
.new_win .win_ul .selected { background: #DB7233; border-color: #DB7233; }
.new_win .win_ul .selected a { color: #fff; font-weight: bold; }
.new_win .win_desc { position: relative; margin: 10px; border-radius: 10px; background: #F3C39C; color: #5C2D17; line-height: 50px; text-align: left; padding: 0 20px; }
.new_win .win_btn { text-align: center; }

/* 캡챠 */
#captcha { display: inline-block; position: relative; }
#captcha #captcha_img { height: 40px; border: 1px solid #ddd; vertical-align: top; border-radius: 6px; }
#captcha #captcha_key { margin: 0 0 0 5px; padding: 0 5px; width: 100px; height: 40px; border: 1px solid #ccc; background: #fff; font-weight: bold; text-align: center; border-radius: 6px; }

/* ckeditor 태그 기본값 */
#bo_v_con ul { list-style-type: disc; margin: 1em 0; padding-left: 40px; }
#bo_v_con ol { list-style-type: decimal; margin: 1em 0; padding-left: 40px; }
#bo_v_con li { display: list-item; }

/* 버튼 (게시판 목록/글쓰기 공통) */
a.btn_submit, .btn_submit { border: 0; background: #DB7233; color: #fff; cursor: pointer; border-radius: 999px; padding: 10px 22px; font-weight: 600; transition: background .3s; }
.btn_submit:hover { background: #C25E28; }
.btn_close, a.btn_close { border: 1px solid #ddd; cursor: pointer; border-radius: 999px; background: #fff; padding: 10px 22px; }
a.btn_cancel, button.btn_cancel { display: inline-block; background: #999; color: #fff; border-radius: 999px; padding: 10px 22px; }
a.btn_b01, .btn_b01 { display: inline-block; color: #999; border: 0; background: transparent; }
a.btn_b02, .btn_b02 { display: inline-block; background: #5C8C50; padding: 6px 12px; color: #fff; border-radius: 999px; }
a.btn_b03, .btn_b03 { display: inline-block; background: #fff; border: 1px solid #ddd; color: #5B534A; border-radius: 999px; padding: 6px 12px; }

/* 페이징 */
.pg_wrap { clear: both; display: flex; justify-content: center; width: 100%; margin: 32px 0; }
.pg { text-align: center; }
.pg_page, .pg_current { display: inline-block; vertical-align: middle; background: #fff; border: 1px solid #eee; }
.pg_page { color: #5B534A; font-size: 16px; height: 36px; line-height: 34px; padding: 0 8px; min-width: 36px; border-radius: 8px; }
.pg_page:hover { background-color: #FDF3EC; }
.pg_current { background: #DB7233; border: 1px solid #DB7233; color: #fff; font-weight: bold; font-size: 16px; height: 36px; line-height: 36px; padding: 0 14px; min-width: 36px; border-radius: 8px; }

/* 검색 결과 강조 */
.sch_word { color: #fff; background: #DB7233; padding: 2px 6px 3px; border-radius: 4px; margin: 0 2px; }

/* 모바일 전환 */
#device_change { display: block; margin: .3em; padding: .8em 0; border: 1px solid #eee; border-radius: 2em; background: #fff; color: #2B2621; text-decoration: none; text-align: center; }


/* ==========================================================================
   2. 분당연세 디자인 시스템 (테마 전용)
   ========================================================================== */

html { scroll-behavior: smooth; }
body { background: #FBF7EF; }

.break-keep-all { word-break: keep-all; }

::selection { background: #F3C39C; color: #5C2D17; }

/* 텍스트 그라디언트 (포인트 1회만 사용) */
.text-gradient-brand {
    background: linear-gradient(100deg, #DB7233, #5C8C50);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
}

/* 노이즈 텍스처 (히어로 등 배경에만 은은하게) */
.bg-noise::before {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    opacity: .035;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

/* 더블-베젤 카드 */
.card-bezel {
    background: rgba(0,0,0,0.035);
    border-radius: 1.75rem;
    padding: .375rem;
}
.card-bezel-inner {
    background: #fff;
    border-radius: calc(1.75rem - .375rem);
    box-shadow: inset 0 1px 1px rgba(255,255,255,.6);
}

/* 프리미엄 트랜지션 시그니처 */
.ease-supanova { transition-timing-function: cubic-bezier(0.16, 1, 0.3, 1); }

/* 스크롤 등장 애니메이션 */
[data-reveal] {
    opacity: 0;
    transform: translateY(28px);
    filter: blur(4px);
    transition: opacity .8s cubic-bezier(0.16,1,0.3,1), transform .8s cubic-bezier(0.16,1,0.3,1), filter .8s cubic-bezier(0.16,1,0.3,1);
}
[data-reveal].is-revealed {
    opacity: 1;
    transform: translateY(0);
    filter: blur(0);
}

/* 떠 있는 장식 요소 */
@keyframes float-slow {
    0%, 100% { transform: translateY(0) rotate(0deg); }
    50% { transform: translateY(-14px) rotate(2deg); }
}
.animate-float-slow { animation: float-slow 7s ease-in-out infinite; }

@keyframes float-slower {
    0%, 100% { transform: translateY(0); }
    50% { transform: translateY(-22px); }
}
.animate-float-slower { animation: float-slower 9s ease-in-out infinite; }

/* 자간/줄간격 (한글 헤드라인) */
.heading-kr { line-height: 1.3; letter-spacing: -0.01em; }

/* 프로그램 카드 아이콘 원형 배지 */
.icon-badge {
    width: 3.25rem;
    height: 3.25rem;
    border-radius: 1.1rem;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.5rem;
}

/* 상단 GNB 2차 드롭다운 안전영역(마우스가 빠져나가지 않도록) */
.gnb_1dli::after {
    content: "";
    position: absolute;
    left: 0; right: 0; top: 100%; height: 12px;
}

/* 고정(fixed) 헤더 — 모든 페이지 공통 오프셋
   헤더가 flow에서 빠지므로, 본문(#container)에 헤더 높이(h-20=5rem)만큼 여백을 준다.
   단, 히어로 영상이 있는 홈페이지(body.hero-video-page)는 헤더가 영상 위에 겹쳐야 하므로 오프셋을 주지 않는다. */
#container { padding-top: 5rem; }
body.hero-video-page #container { padding-top: 0; }

/* 찾아오시는길 : 카카오맵(다음 지도퍼가기) 반응형 처리
   원본 임베드는 900x380 고정 픽셀이라, #bdys-map을 같은 비율의 반응형 박스로 감싸고
   내부 iframe/wrapper를 그 박스에 꽉 채운다 (비율이 같아 찌그러지지 않는다). */
#bdys-map .root_daum_roughmap {
    width: 100% !important;
    height: 100% !important;
    position: absolute !important;
    inset: 0 !important;
}
#bdys-map .root_daum_roughmap iframe {
    width: 100% !important;
    height: 100% !important;
    position: absolute !important;
    inset: 0 !important;
    border: 0;
}

/* 헤더 배경/그림자 전환 */
#hd_wrapper .hd_bar_bg { transition: background-color .4s ease, box-shadow .4s ease, border-color .4s ease; }
#hd_wrapper.is-scrolled .hd_bar_bg { box-shadow: 0 1px 0 rgba(43,38,33,0.06), 0 12px 24px -18px rgba(43,38,33,0.25); }

/* 히어로 영상 페이지 : 최상단에서는 헤더를 투명하게 + 밝은 글자색으로,
   스크롤(#hd_wrapper.is-scrolled)하면 기본(불투명 크림/잉크색) 헤더로 전환 */
body.hero-video-page #hd_wrapper:not(.is-scrolled) .hd_bar_bg {
    background-color: transparent;
    border-color: transparent;
    backdrop-filter: none;
}
body.hero-video-page #hd_wrapper:not(.is-scrolled) #logo span,
body.hero-video-page #hd_wrapper:not(.is-scrolled) .gnb_1da,
body.hero-video-page #hd_wrapper:not(.is-scrolled) .gnb_menu_btn,
body.hero-video-page #hd_wrapper:not(.is-scrolled) .hd_login a {
    color: #FBF7EF;
    transition: color .4s ease;
}
body.hero-video-page #hd_wrapper:not(.is-scrolled) #logo span.text-ink-soft {
    color: rgba(251,247,239,0.7);
}
body.hero-video-page #hd_wrapper:not(.is-scrolled) .gnb_1da:hover {
    color: #fff;
    background-color: rgba(255,255,255,0.12);
}
#logo span, .gnb_1da, .gnb_menu_btn, .hd_login a { transition: color .4s ease, background-color .4s ease; }
