@charset "utf-8";

/* =========================================================
   common.css : 폰트 / 변수 / 레이아웃 / header / footer / 공통 버튼
   - PC      : 1280px 이상 (시안 1920, 콘텐츠 1300)
   - 소형 PC : 1024 ~ 1279px
   - 태블릿  : 768 ~ 1023px (햄버거 메뉴)
   - 모바일  : 767px 이하 (시안 375, 최소 360)
   ========================================================= */

@font-face { 
    font-family: 'Inter'; 
    font-weight: 100; 
    font-style: normal; 
    font-display: swap; 
    src: url('/resource/user/css/fonts/inter100.woff') format('woff'); 
}
@font-face { 
    font-family: 'Inter'; 
    font-weight: 200; 
    font-style: normal; 
    font-display: swap; 
    src: url('/resource/user/css/fonts/inter200.woff') format('woff'); 
}
@font-face { 
    font-family: 'Inter'; 
    font-weight: 300; 
    font-style: normal; 
    font-display: swap; 
    src: url('/resource/user/css/fonts/inter300.woff') format('woff'); 
}
@font-face { 
    font-family: 'Inter'; 
    font-weight: 400; 
    font-style: normal; 
    font-display: swap; 
    src: url('/resource/user/css/fonts/inter400.woff') format('woff'); 
}
@font-face { 
    font-family: 'Inter'; 
    font-weight: 500; 
    font-style: normal; 
    font-display: swap; 
    src: url('/resource/user/css/fonts/inter500.woff') format('woff'); 
}
@font-face { 
    font-family: 'Inter'; 
    font-weight: 600; 
    font-style: normal; 
    font-display: swap; 
    src: url('/resource/user/css/fonts/inter600.woff') format('woff'); 
}
@font-face { 
    font-family: 'Inter'; 
    font-weight: 700; 
    font-style: normal; 
    font-display: swap; 
    src: url('/resource/user/css/fonts/inter700.woff') format('woff'); 
}
@font-face { 
    font-family: 'Inter'; 
    font-weight: 800; 
    font-style: normal; 
    font-display: swap; 
    src: url('/resource/user/css/fonts/inter800.woff') format('woff'); 
}
@font-face { 
    font-family: 'Inter'; 
    font-weight: 900; 
    font-style: normal; 
    font-display: swap; 
    src: url('/resource/user/css/fonts/inter900.woff') format('woff'); 
}
@font-face { 
    font-family: 'Noto Sans KR'; 
    font-weight: 100; 
    font-style: normal; 
    font-display: swap; 
    src: url('/resource/user/css/fonts/notosans100.woff') format('woff'); 
}
@font-face { 
    font-family: 'Noto Sans KR'; 
    font-weight: 200; 
    font-style: normal; 
    font-display: swap; 
    src: url('/resource/user/css/fonts/notosans200.woff') format('woff'); 
}
@font-face { 
    font-family: 'Noto Sans KR'; 
    font-weight: 300; 
    font-style: normal; 
    font-display: swap; 
    src: url('/resource/user/css/fonts/notosans300.woff') format('woff'); 
}
@font-face { 
    font-family: 'Noto Sans KR'; 
    font-weight: 400; 
    font-style: normal; 
    font-display: swap; 
    src: url('/resource/user/css/fonts/notosans400.woff') format('woff'); 
}
@font-face { 
    font-family: 'Noto Sans KR'; 
    font-weight: 500; 
    font-style: normal; 
    font-display: swap; 
    src: url('/resource/user/css/fonts/notosans500.woff') format('woff'); 
}
@font-face { 
    font-family: 'Noto Sans KR'; 
    font-weight: 600; 
    font-style: normal; 
    font-display: swap; 
    src: url('/resource/user/css/fonts/notosans600.woff') format('woff'); 
}
@font-face { 
    font-family: 'Noto Sans KR'; 
    font-weight: 700; 
    font-style: normal; 
    font-display: swap; 
    src: url('/resource/user/css/fonts/notosans700.woff') format('woff'); 
}
@font-face { 
    font-family: 'Noto Sans KR'; 
    font-weight: 800; 
    font-style: normal; 
    font-display: swap; 
    src: url('/resource/user/css/fonts/notosans800.woff') format('woff'); 
}
@font-face { 
    font-family: 'Noto Sans KR'; 
    font-weight: 900; 
    font-style: normal; 
    font-display: swap; 
    src: url('/resource/user/css/fonts/notosans900.woff') format('woff'); 
}

:root {
    --font-base: 'Inter', 'Noto Sans KR', -apple-system, BlinkMacSystemFont, 'Apple SD Gothic Neo', 'Malgun Gothic', sans-serif;

    --color-black: #000;
    --color-text: #141414;
    --color-text-sub: #373737;
    --color-gray: #464c53;
    --color-gray-light: #707070;
    --color-line: #e5e6e6;
    --color-border: #b1b8bc;
    --color-bg-gray: #f3f3f3;
    --color-bg-light: #f6f7f7;
    --color-primary: #002870;
    --color-blue: #3858e9;
    --color-footer: #101517;

    --header-height: 78px;
    --inner-width: 1300px;
    --inner-padding: 40px;
}

body {
    font-family: var(--font-base);
    font-size: 16px;
    color: var(--color-text);
    background: #fff;
}

body.is-locked {
    overflow: hidden;
}

.inner {
    width: 100%;
    max-width: calc(var(--inner-width) + var(--inner-padding) * 2);
    margin: 0 auto;
    padding: 0 var(--inner-padding);
}

.show-mo {
    display: none;
}

/* ---------- 공통 버튼 ---------- */
.btn-line {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 161px;
    height: 48px;
    padding: 0 24px;
    border: 1px solid var(--color-black);
    border-radius: 4px;
    background: #fff;
    font-size: 16px;
    font-weight: 500;
    color: var(--color-black);
    transition: color .2s;
}

.btn-line:hover,
.btn-line:focus-visible {
    color: var(--color-primary);
    font-weight: 700;
}

/* 슬라이드 이전/다음 화살표 */
.btn-arrow {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 48px;
    height: 48px;
    border: 1px solid var(--color-black);
    border-radius: 4px;
    background: #fff;
    color: var(--color-black);
    transition: background-color .2s, border-color .2s, color .2s;
}

.btn-arrow svg {
    width: 8px;
    height: 14px;
}

.btn-arrow.next {
    background: var(--color-black);
    color: #fff;
}

.btn-arrow.swiper-button-disabled {
    border-color: var(--color-border);
    background: #fff;
    color: var(--color-border);
    cursor: default;
}

/* ---------- header ---------- */
.header {
    position: sticky;
    top: 0;
    z-index: 100;
    background: #fff;
    border-bottom: 1px solid var(--color-line);
}

.header-inner {
    display: flex;
    align-items: center;
    height: var(--header-height);
    padding: 0 34px 0 52px;
}

.logo {
    flex-shrink: 0;
}

.logo img {
    width: 83px;
    height: 37px;
}

.gnb {
    margin-left: 52px;
}

.gnb-list {
    display: flex;
}

.gnb-item {
    position: relative;
    width: 179px;
}

.gnb-link {
    display: flex;
    align-items: center;
    gap: 16px;
    height: var(--header-height);
    padding: 0 10px;
    font-size: 18px;
    font-weight: 500;
    color: var(--color-text-sub);
}

.gnb-item.has-sub > .gnb-link::after {
    content: '';
    width: 0;
    height: 0;
    border-top: 6px solid currentColor;
    border-right: 7px solid transparent;
    border-left: 7px solid transparent;
    transition: transform .2s;
}

.gnb-item.is-active > .gnb-link {
    font-weight: 700;
    color: var(--color-primary);
}

/* 1depth 와 빈틈 없이 붙여야 마우스 이동 중 hover 가 풀리지 않음 (header 하단 border 는 border-top 으로 대체) */
.gnb-sub {
    display: none;
    position: absolute;
    top: 100%;
    left: 0;
    width: 100%;
    border-top: 1px solid var(--color-line);
    background: #fff;
    box-shadow: 0 8px 16px rgba(0, 0, 0, .06);
}

.gnb-sub a {
    display: flex;
    align-items: center;
    height: 55px;
    padding: 0 10px;
    font-size: 16px;
    font-weight: 500;
    color: var(--color-gray);
}

.gnb-sub li.is-active a,
.gnb-sub a:hover,
.gnb-sub a:focus-visible {
    font-weight: 700;
    color: var(--color-primary);
}

.header-util {
    display: flex;
    align-items: center;
    gap: 4px;
    margin-left: auto;
}

/* inline-flex 는 "지명원 다운로드" 사이 공백을 없애므로 inline-block 사용 */
.btn-download {
    display: inline-block;
    height: 32px;
    padding: 0 22px;
    line-height: 30px;
    white-space: nowrap;
    border: 1px solid var(--color-border);
    font-size: 12px;
    font-weight: 500;
    color: var(--color-text-sub);
    transition: border-color .2s, color .2s;
}

.btn-download:hover {
    border-color: var(--color-primary);
    color: var(--color-primary);
}

.btn-menu {
    display: none;
}

.gnb-dim {
    display: none;
}

/* PC : 마우스 오버 / 키보드 포커스로 2depth 노출 */
@media (min-width: 1024px) {
    .gnb-item:hover > .gnb-sub,
    .gnb-item:focus-within > .gnb-sub {
        display: block;
    }

    .gnb-item:hover > .gnb-link,
    .gnb-item:focus-within > .gnb-link {
        font-weight: 700;
        color: var(--color-primary);
    }

    /* 1depth 글자가 navy 로 바뀌어도 화살표는 기본 색 유지 */
    .gnb-item.has-sub > .gnb-link::after {
        border-top-color: var(--color-text-sub);
    }

    .gnb-item.has-sub:hover > .gnb-link::after,
    .gnb-item.has-sub:focus-within > .gnb-link::after {
        transform: rotate(180deg);
    }
}

/* ---------- footer ---------- */
/* 콘텐츠가 짧은 페이지에서도 footer 를 화면 하단에 붙임 */
.wrap {
    display: flex;
    flex-direction: column;
    min-height: 100vh;
}

.footer {
    margin-top: auto;
    padding: 82px 0;
    background: var(--color-footer);
    color: #919191;
}

.footer-top {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
}

.footer-logo img {
    width: 102px;
    height: 47px;
}

.btn-privacy {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 161px;
    height: 48px;
    border: 1px solid #919191;
    border-radius: 4px;
    font-size: 15px;
    font-weight: 500;
    color: #919191;
    transition: background-color .2s, border-color .2s, color .2s;
}

.btn-privacy:hover,
.btn-privacy:focus-visible {
    border-color: var(--color-bg-gray);
    background: var(--color-bg-gray);
    color: var(--color-text);
}

.footer-info {
    margin-top: 34px;
    font-size: 14px;
    line-height: 24px;
}

.info-row span + span::before {
    content: '';
    display: inline-block;
    width: 1px;
    height: 12px;
    margin: 0 14px;
    background: #555;
    vertical-align: -1px;
}

.info-row b {
    font-weight: 600;
    color: #c8c8c8;
}

.copyright {
    margin-top: 30px;
    font-size: 14px;
    line-height: 24px;
    color: #555;
}

/* =========================================================
   소형 PC (1024 ~ 1279)
   ========================================================= */
@media (max-width: 1279px) {
    .header-inner {
        padding: 0 24px 0 32px;
    }

    .gnb {
        margin-left: 32px;
    }

    .gnb-item {
        width: 150px;
    }
}

/* =========================================================
   태블릿 (768 ~ 1023) : 햄버거 메뉴
   ========================================================= */
@media (max-width: 1023px) {
    :root {
        --header-height: 69px;
        --inner-padding: 32px;
    }

    .header-inner {
        padding: 0 20px 0 32px;
    }

    /* 모바일 메뉴 패널 */
    .gnb {
        display: none;
        position: absolute;
        top: 100%;
        left: 0;
        right: 0;
        z-index: 2;
        max-height: calc(100vh - var(--header-height));
        max-height: calc(100dvh - var(--header-height));
        margin: 0;
        padding: 20px 29px;
        overflow-y: auto;
        background: #fff;
        border-top: 1px solid var(--color-line);
    }

    .header.is-menu-open .gnb {
        display: block;
    }

    .gnb-list {
        display: block;
    }

    .gnb-item {
        width: auto;
    }

    .gnb-link {
        justify-content: space-between;
        height: auto;
        padding: 20px 24px;
        font-size: 22px;
        line-height: 1.21;
    }

    .gnb-item.has-sub > .gnb-link::after {
        margin-right: 5px;
    }

    .gnb-item.is-open > .gnb-link::after {
        transform: rotate(180deg);
    }

    .gnb-sub {
        position: static;
        border-top: 0;
        box-shadow: none;
    }

    .gnb-item.is-open > .gnb-sub {
        display: block;
    }

    .gnb-sub a {
        height: auto;
        padding: 10px 24px;
        font-size: 18px;
        font-weight: 400;
        line-height: 22px;
    }

    .btn-download {
        height: 31px;
        padding: 0 12px;
        line-height: 29px;
        border-color: #d9d9d9;
        border-radius: 4px;
        color: var(--color-text);
    }

    /* 햄버거 → X */
    .btn-menu {
        display: flex;
        align-items: center;
        justify-content: center;
        width: 44px;
        height: 44px;
    }

    .btn-menu span,
    .btn-menu span::before,
    .btn-menu span::after {
        display: block;
        width: 16px;
        height: 1.8px;
        border-radius: 1px;
        background: var(--color-text);
        transition: transform .2s, background-color .2s;
    }

    .btn-menu span {
        position: relative;
    }

    .btn-menu span::before,
    .btn-menu span::after {
        content: '';
        position: absolute;
        left: 0;
    }

    .btn-menu span::before {
        top: -5px;
    }

    .btn-menu span::after {
        top: 5px;
    }

    .header.is-menu-open .btn-menu span {
        background: transparent;
    }

    .header.is-menu-open .btn-menu span::before {
        transform: translateY(5px) rotate(45deg);
    }

    .header.is-menu-open .btn-menu span::after {
        transform: translateY(-5px) rotate(-45deg);
    }

    .header.is-menu-open .gnb-dim {
        display: block;
        position: fixed;
        top: var(--header-height);
        left: 0;
        right: 0;
        bottom: 0;
        z-index: 1;
        background: rgba(0, 0, 0, .4);
    }

    .footer {
        padding: 56px 0;
    }

    .footer-info {
        margin-top: 28px;
    }

    /* 주소는 다음 줄로 */
    .info-contact span:last-child {
        display: block;
    }

    .info-contact span:last-child::before {
        display: none;
    }
}

/* =========================================================
   모바일 (~ 767) : 시안 375 기준
   ========================================================= */
@media (max-width: 767px) {
    :root {
        --inner-padding: 20px;
    }

    .show-mo {
        display: inline;
    }

    .hide-mo {
        display: none;
    }

    .header-inner {
        padding: 0 12px 0 20px;
    }

    .gnb {
        padding: 20px 29px;
    }

    .btn-line {
        width: 100%;
    }

    .btn-arrow {
        width: 40px;
        height: 40px;
        border-color: #d9d9d9;
    }

    .btn-arrow svg {
        width: 6px;
        height: 11px;
    }

    .btn-arrow.next {
        border-color: var(--color-black);
    }

    .btn-arrow.swiper-button-disabled {
        border-color: #d9d9d9;
        color: #bdbdbd;
    }

    .footer {
        padding: 40px 0 48px;
    }

    .footer-top {
        align-items: center;
    }

    .footer-logo img {
        width: 72px;
        height: 33px;
    }

    .btn-privacy {
        width: auto;
        height: 35px;
        padding: 0 14px;
        border-color: rgba(255, 255, 255, .4);
        font-size: 12px;
        color: #fff;
    }

    .footer-info {
        margin-top: 24px;
        padding-bottom: 24px;
        border-bottom: 1px solid rgba(255, 255, 255, .12);
        font-size: 13px;
        line-height: 20.8px;
        color: #c8c8c8;
    }

    .info-row + .info-row {
        margin-top: 6px;
    }

    .info-row span + span::before {
        margin: 0 8px;
        background: rgba(255, 255, 255, .3);
    }

    .info-contact span,
    .info-contact span:last-child {
        display: flex;
        gap: 6px;
    }

    .info-contact span + span {
        margin-top: 6px;
    }

    .info-contact span + span::before {
        display: none;
    }

    .info-contact b {
        flex-shrink: 0;
        color: #fff;
    }

    .copyright {
        margin-top: 24px;
        font-size: 11px;
        line-height: 18.7px;
        color: #8a8a8a;
    }
}
