@charset "UTF-8";
/* 리뉴얼 공용 헤더 (UNB + GNB). 사이트별 차이는 각 사이트 CSS 에서 변수로 덮어씀
   1440 미만은 햄버거 패널 */

/* 고정 GNB 에 앵커·포커스 대상이 가려지지 않게 */
html { scroll-padding-top: 65px; }

@media screen and (min-width: 768px) {
    html { scroll-padding-top: 81px; }
}

.rn-header {
    /* GNB 만 상단 고정, UNB(32px)는 스크롤로 사라짐 */
    position: sticky;
    top: -32px;
    z-index: 1000;
    font-family: var(--rn-font);
    letter-spacing: 0;
}

/* :where 로 우선순위 0, 아래 클래스가 항상 이기게 */
:where(.rn-header) *,
:where(.rn-header) *::before,
:where(.rn-header) *::after { box-sizing: border-box; }

:where(.rn-header) a {
    color: inherit;
    text-decoration: none;
}

:where(.rn-header) ul {
    margin: 0;
    padding: 0;
    list-style: none;
}

:where(.rn-header) button {
    margin: 0;
    padding: 0;
    border: 0;
    background: none;
    font: inherit;
    color: inherit;
    cursor: pointer;
}

.rn-header .is-hidden { display: none !important; }

.rn-header.is-open { z-index: 10000; } /* 기존 고정 퀵메뉴(z 9999) 위로 */

/* ---------- UNB ---------- */
.rn-unb {
    background: #0A2240;
    color: #fff;
}

.rn-unb__inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    height: 40px;
    max-width: var(--rn-max-width);
    margin: 0 auto;
    padding: 0 var(--rn-gutter);
    /* 모바일에서 링크가 넘치면 가로 스크롤 */
    overflow-x: auto;
    scrollbar-width: none;
}

.rn-unb__inner::-webkit-scrollbar { display: none; }

/* 2025 메인 CSS 의 touch-action: pan-y !important 가 가로 스와이프를 막음 */
.rn-unb__inner,
.rn-unb__inner * { touch-action: pan-x pan-y !important; }

.rn-unb__sites {
    display: flex;
    align-items: center;
    height: 100%;
    flex-shrink: 0;
}

.rn-unb__sites li {
    display: flex;
    align-items: center;
    height: 100%;
}

.rn-unb__sites li + li { border-left: 1px solid rgba(255, 255, 255, 0.06); }

.rn-unb__sites a {
    padding: 5px 12px;
    font-size: 14px;
    font-weight: 600;
    line-height: 1;
    letter-spacing: -0.15px;
    white-space: nowrap;
}

.rn-unb__sites li:first-child a { padding-left: 0; }

.rn-unb__sites a.is-current {
    text-decoration: underline;
    text-underline-offset: 4px;
}

.rn-unb__cta {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-shrink: 0;
}

.rn-unb__cta a {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 4px 8px;
    border-radius: 5px;
    /* background: #545454; */
    font-size: 13px;
    font-weight: 600;
    line-height: 1;
    letter-spacing: -0.13px;
    white-space: nowrap;
}

.rn-unb__cta a.is-point { background: var(--rn-point); }

.rn-unb__cta a.rn-unb__cta-sub { display: none; } /* 768 미만은 패널에 */

.rn-unb__cta img {
    display: block;
    width: 14px;
    height: 14px;
}

/* ---------- GNB ---------- */
.rn-gnb-bar {
    background: #fff;
    border-bottom: 1px solid #ececec;
}

.rn-gnb-bar__inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    height: 64px;
    max-width: var(--rn-max-width);
    margin: 0 auto;
    padding: 0 var(--rn-gutter);
}

.rn-logo {
    display: flex;
    align-items: center;
    flex-shrink: 0;
    padding: 0 3px;
}

.rn-logo img {
    display: block;
    width: 116px;
    height: 32px;
}

.rn-util {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 8px;
    flex-shrink: 0;
}

.rn-util__links {
    display: flex;
    align-items: center;
    gap: 12px;
}

.rn-util__link {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    height: 32px;
    padding: 0 4px;
    color: #222;
    font-size: 18px;
    font-weight: 600;
    letter-spacing: -0.36px;
    white-space: nowrap;
}

.rn-util__link img {
    display: block;
    width: 24px;
    height: 24px;
    padding: 3px 3px;
}

.rn-util__bar {
    flex-shrink: 0;
    width: 1px;
    height: 16px;
    background: #d9d9d9;
}

.rn-util__menu {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    padding: 4px;
}

.rn-util__pc { display: none !important; }

.rn-util__menu img {
    display: block;
    width: 24px;
    height: 24px;
    padding: 4px 2px;
}

/* ---------- 메뉴 패널 (~1439) ---------- */
.rn-dim {
    position: fixed;
    inset: 0;
    z-index: 1001;
    background: rgba(0, 0, 0, 0.5);
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.25s, visibility 0.25s;
}

.rn-gnb {
    position: fixed;
    top: 0;
    right: 0;
    z-index: 1002;
    display: flex;
    flex-direction: column;
    width: min(100%, 420px);
    height: 100%;
    background: #fff;
    transform: translateX(100%);
    visibility: hidden;
    transition: transform 0.3s, visibility 0.3s;
}

.rn-header.is-open .rn-dim {
    opacity: 1;
    visibility: visible;
}

.rn-header.is-open .rn-gnb {
    transform: none;
    visibility: visible;
}

body.rn-scroll-lock { overflow: hidden; }

.rn-gnb__head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-shrink: 0;
    height: 64px;
    padding: 0 var(--rn-gutter);
    border-bottom: 1px solid #ececec;
}

.rn-gnb__title {
    color: #222;
    font-size: 18px;
    font-weight: 600;
}

.rn-gnb__close {
    position: relative;
    width: 32px;
    height: 32px;
}

.rn-gnb__close::before,
.rn-gnb__close::after {
    position: absolute;
    top: 50%;
    left: 50%;
    width: 20px;
    height: 2px;
    border-radius: 1px;
    background: #222;
    content: '';
}

.rn-gnb__close::before { transform: translate(-50%, -50%) rotate(45deg); }

.rn-gnb__close::after { transform: translate(-50%, -50%) rotate(-45deg); }

.rn-gnb__list {
    flex: 1;
    overflow-y: auto;
    padding: 8px 0 24px;
}

.rn-gnb__item { border-bottom: 1px solid #f1f1f1; }

/* setGNBHref 등이 li > a 구조에 의존해서 감싸지 않고 flex wrap */
.rn-gnb__item,
.rn-gnb__dep2 > li {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
}

.rn-gnb__panel,
.rn-gnb__dep3 { flex-basis: 100%; }

.rn-gnb__link {
    flex: 1;
    padding: 18px var(--rn-gutter);
    color: #222;
    font-family: var(--rn-font-title);
    font-size: 18px;
    font-weight: 600;
    line-height: 1.36;
    letter-spacing: -0.54px;
}
.rn-gnb__item.is-active > a,
.rn-gnb__link:hover{
    text-decoration-line: underline;
    text-decoration-style: solid;
    text-decoration-skip-ink: auto;
    text-decoration-thickness: auto;
    text-underline-offset: auto;    
}
/* 하위 메뉴 버튼은 따로, 링크는 항상 이동 */
.rn-gnb__toggle {
    position: relative;
    flex-shrink: 0;
    width: 56px;
    height: 56px;
}

.rn-gnb__toggle::before {
    position: absolute;
    top: 50%;
    left: 50%;
    width: 8px;
    height: 8px;
    border-right: 2px solid #545454;
    border-bottom: 2px solid #545454;
    transform: translate(-50%, -75%) rotate(45deg);
    transition: transform 0.2s;
    content: '';
}

.rn-gnb__toggle[aria-expanded="true"]::before { transform: translate(-50%, -25%) rotate(-135deg); }

.rn-gnb__panel { display: none; }

.rn-gnb__item.is-open > .rn-gnb__panel { display: block; }

.rn-gnb__dep2 {
    padding: 4px 0 16px;
    background: #f8f7fb;
}

.rn-gnb__dep2 > li > a {
    flex: 1;
    padding: 12px var(--rn-gutter) 12px calc(var(--rn-gutter) + 12px);
    color: #222;
    font-size: 16px;
    font-weight: 600;
    letter-spacing: -0.32px;
}

.rn-gnb__dep2 .rn-gnb__toggle {
    width: 48px;
    height: 44px;
}

.rn-gnb__dep3 {
    display: none;
    padding: 0 0 8px;
}

.rn-gnb__dep2 > li.is-open > .rn-gnb__dep3 { display: block; }

.rn-gnb__dep3 a {
    display: block;
    padding: 8px var(--rn-gutter) 8px calc(var(--rn-gutter) + 24px);
    color: #707070;
    font-size: 15px;
    font-weight: 500;
    letter-spacing: -0.3px;
    
}
.rn-gnb__list .rn-gnb__dep2 a:focus{
    outline-color: #002DAD;
    outline-offset: 4px;
}
.rn-gnb__cta {
    display: flex;
    gap: 8px;
    flex-shrink: 0;
    padding: 16px var(--rn-gutter) 24px;
}

.rn-gnb__cta a {
    flex: 1;
    padding: 14px 8px;
    border-radius: 8px;
    background: #545454;
    color: #fff;
    font-size: 15px;
    font-weight: 600;
    text-align: center;
}

.rn-gnb__cta a.is-point { background: var(--rn-point); }

.rn-gnb .rn-gnb__cta a:hover,
.rn-gnb .rn-gnb__cta a:focus-visible { color: #fff; }

.rn-gnb a:hover,
.rn-gnb a:focus-visible { color: var(--rn-point); }

/* ---------- 768~ ---------- */
@media screen and (min-width: 768px) {
    .rn-gnb-bar__inner { height: 80px; }

    .rn-logo { 
        padding: 0 4px; 
        outline-offset: 4px;
        outline-color: #ffffff;
    }

    .rn-logo img {
        width: 173px;
        height: 48px;
    }

    .rn-util { gap: 24px; }

    .rn-unb__inner { gap: 16px; }

    .rn-unb__sites a {
        padding: 5px 20px;
        font-size: 15px;
    }

    .rn-unb__sites li:first-child a { padding-left: 8px; }

    .rn-unb__cta a.rn-unb__cta-sub { display: inline-flex; }

    .rn-gnb__head { height: 80px; }
}

/* ---------- 1440~ PC 메뉴 ---------- */
@media screen and (min-width: 1440px) {
    /* 로고·유틸 폭을 같게 해서 메뉴를 가운데로 */
    .rn-logo,
    /* .rn-util { width: 348px; } */

    .rn-util__pc { display: inline-flex !important; }

    .rn-util__bar.rn-util__pc { display: block !important; }

    .rn-util__mo { display: none !important; }

    .rn-gnb__head,
    .rn-gnb__cta,
    .rn-gnb__toggle,
    .rn-gnb__item--util { display: none !important; }

    /* 드롭다운을 전체 폭으로 펼치려고 기준을 GNB 줄에 */
    .rn-gnb-bar {
        position: relative;
        z-index: 1002; /* dim 위 */
    }

    /* dim 이 헤더 아래만 덮게 UNB 도 dim 위로 */
    .rn-unb {
        position: relative;
        z-index: 1002;
    }

    .rn-gnb {
        position: static;
        width: auto;
        height: auto;
        background: none;
        transform: none;
        visibility: visible;
        transition: none;
    }

    /* 간격을 링크 여백으로 줘서 메뉴 사이 빈틈에서 패널이 안 닫히게 */
    .rn-gnb__list {
        display: flex;
        align-items: center;
        overflow: visible;
        margin: 0 calc(var(--rn-gnb-gap) / -2);
        padding: 0;
    }

    .rn-gnb__item {
        position: static;
        border: 0;
    }

    .rn-gnb__link {
        display: block;
        /* S-Core Dream 이 약 3px 위로 치우쳐서 여백을 옮겨 유틸 글자와 중앙 맞춤 */
        padding: 28px calc(var(--rn-gnb-gap) / 2) 22px;
        font-size: 22px;
        letter-spacing: -0.66px;
        white-space: nowrap;
    }

    .rn-gnb__item:hover > .rn-gnb__link,
    .rn-gnb__item.is-active > .rn-gnb__link { color: var(--rn-point); }

    /* 배경은 하나만 두고 높이만 변경(--rn-gnb-panel-h). 메뉴 이동 시 깜빡임 방지 */
    .rn-gnb-bar::after {
        position: absolute;
        top: 100%;
        left: 0;
        right: 0;
        height: var(--rn-gnb-panel-h, 0px);
        border-top: 1px solid #ececec;
        background: #fff;
        box-shadow: 0 16px 24px rgba(0, 0, 0, 0.08);
        opacity: 0;
        visibility: hidden;
        transition: height 0.25s, opacity 0.2s, visibility 0.2s;
        content: '';
    }

    .rn-header.is-gnb-open .rn-gnb-bar::after {
        opacity: 1;
        visibility: visible;
    }

    /* 열린 메뉴(.is-active)의 2단계만 표시 */
    .rn-gnb__panel {
        position: absolute;
        top: 100%;
        left: 0;
        right: 0;
        z-index: 1;
        display: block;
        visibility: hidden;
        opacity: 0;
        transition: opacity 0.15s;
    }

    .rn-header.is-gnb-open .rn-gnb__item.is-active > .rn-gnb__panel {
        visibility: visible;
        opacity: 1;
    }

    .rn-gnb__dep2 {
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
        max-width: 1500px;
        margin: 0 auto;
        padding: 40px 50px 40px;
        background: none;
    }

    .rn-gnb__dep2 > li {
        display: block;
        max-width: 274px;
        margin: 0 0 40px 0;
        padding: 0 30px;
        border-left: 1px solid #d9d9d9;
    }
    .rn-gnb__dep2 > li:last-child{
            margin: 0 0 0 0;
    }
    .rn-gnb__dep2 > li > a {
        display: block;
        padding: 0;
        font-size: 18px;
        font-weight: 600;
    }

    .rn-gnb__dep3 {
        display: block;
        padding: 0;
    }

    .rn-gnb__dep3 a {
        margin: 10px 0 0;
        padding: 0;
        font-size: 16px;
        font-weight: 400;
        color: #666;
    }

    /* 패널 열리면 아래 화면 dim */
    .rn-header.is-gnb-open { z-index: 10000; }

    .rn-header.is-gnb-open .rn-dim {
        opacity: 1;
        visibility: visible;
    }
}

/* ---------- 접근성 ---------- */
/* 기존 :focus 빨간 외곽선 덮어쓰기 */
.rn-header a:focus-visible,
.rn-header button:focus-visible {
    outline-offset: -2px;
}
.rn-unb__cta a:focus-visible{
    outline: 2px solid #fff;
    outline-offset: -4px;    
}
.rn-unb a:focus-visible { outline-color: #fff; }

/* 스크롤 영역이라 바깥 외곽선이 잘림 */
.rn-gnb__list a:focus-visible,
.rn-gnb__list button:focus-visible { outline-offset: -2px; }

/* 터치 영역 44px */
.rn-gnb__close {
    width: 44px;
    height: 44px;
    margin: -6px;
}

.rn-logo,
.rn-util__link,
.rn-util__menu { position: relative; }

.rn-logo::after,
.rn-util__link::after,
.rn-util__menu::after {
    position: absolute;
    inset: -6px 0;
    content: '';
}

.rn-util__menu::after { inset: -6px; }

/* UNB shared across university, admissions and graduate sites. */
.rn-unb, .rn-unb *, .rn-unb *::before, .rn-unb *::after { box-sizing: border-box; }
.rn-unb { font-family: var(--rn-font); }
.rn-unb ul { margin: 0; padding: 0; list-style: none; }
.rn-unb a { text-decoration: none; }
.rn-unb__sites .rn-unb__current { line-height: 1; white-space: nowrap; }
.rn-unb__inner { height: 42px; }

.rn-unb__sites li a,
.rn-unb__sites .rn-unb__current {
    display: flex;
    align-items: center;
    height: 100%;
    padding: 4px 8px;
    color: #ccc;
    font-size: 15px;
    font-weight: 500;
    letter-spacing: -0.15px;
}

.rn-unb__sites a.is-current,
.rn-unb__sites .rn-unb__current {
    background: #002DAD;
    color: #fff;
    font-weight: 600;
    text-decoration: none;
}

.rn-unb__cta { gap: 4px; }

.rn-unb__cta a {
    gap: 4px;
    height: 32px;
    padding: 0 8px;
    font-size: 16px;
    letter-spacing: -0.24px;
}

.rn-unb__cta a.rn-unb__cta-sub { background: #585858; }

.rn-unb__cta a.is-point {
    background: #ffdc00;
    font-size: 18px;
    color: #222;
}

.rn-unb__cta img {
    display: none;
    width: 20px;
    height: 20px;
}

.rn-unb a.is-point:focus-visible { outline-color: #fff; }

.rn-unb__cta a { color: #fff; }
.rn-unb__sites li:first-child a { padding-left: 8px; }
@media screen and (min-width: 768px) {
    .rn-unb__inner {
        height: 40px;
        padding: 0 16px;
    }

    .rn-unb__sites li a,
    .rn-unb__sites .rn-unb__current {
        padding: 4px 16px;
        letter-spacing: -0.3px;
    }

    .rn-unb__cta {
        gap: 4px;
        padding: 0 2px;
    }

    .rn-unb__cta a {
        gap: 8px;
        padding: 0 12px;
        font-size: 15px;
        letter-spacing: -0.27px;
    }

    .rn-unb__cta img { display: block; }

    .rn-unb__sites li:first-child a { padding-left: 16px; }
}
.rn-unb__sites li a, .rn-unb__sites .rn-unb__current {
    padding-top: calc(4px + .04em * 2);
}
.rn-unb__cta a { padding-top: calc(.04em * 2); }

/* Shared header utility typography and spacing. */
:root {
    --rn-util-font-size: 13px;
    --rn-util-letter-spacing: -.26px;
    --rn-util-font-weight: 600;
    --rn-util-icon-gap: 6px;
    --rn-util-group-gap: 12px;
}
@media screen and (min-width: 768px) {
    :root { --rn-util-font-size: 15px; --rn-util-letter-spacing: -.3px; }
}
@media screen and (min-width: 1024px) {
    :root { --rn-util-font-size: 16px; --rn-util-letter-spacing: -.32px; }
}
@media screen and (min-width: 1440px) {
    :root {
        --rn-util-font-size: 18px;
        --rn-util-letter-spacing: -.36px;
        --rn-util-group-gap: 24px;
    }

    .rn-unb__cta a:not(.is-point) {
        padding: 0px 6px;
        font-size: 15px;        
        background: none;        
    }    
}
.header .header-util-web,
.rn-header .rn-util__links { gap: var(--rn-util-group-gap); }
.header .header-util-web a,
.header .header-util-web a.main-login-icon,
.header .header-util-web a.main-login-icon-mob,
.header #login-icon_mob,
.header #userinfo_mob,
.rn-header[data-rn-gnb="split"] .rn-util__link {
    font-family: var(--rn-font);
    font-size: var(--rn-util-font-size);
    font-weight: var(--rn-util-font-weight);
    line-height: 1.2;
    letter-spacing: var(--rn-util-letter-spacing);
    gap: var(--rn-util-icon-gap);
    outline-offset: 5px;
}
