@font-face {
    font-family: Pretendard;
    font-weight: 100 900;
    font-style: normal;
    font-display: swap;
    src: url(../font/PretendardVariable.woff2) format("woff2-variations");
}

html.lenis,
html.lenis body {
    height: auto;
}

.lenis.lenis-smooth {
    scroll-behavior: auto !important;
}

.lenis.lenis-smooth [data-lenis-prevent] {
    overflow: clip;
}

:root {
    --primary-color: #1457af;
    --sub-color: #3572c1;
    --text-dark: #111111;
    --text-basic: #333333;
    --text-muted: #555555;
    --text-llight: #F0F6FE;
    --border-color: #e5e7eb;
    --bg-popover: #ffffff;
    --transition-speed: 0.25s;
    --transition1: all 0.4s ease;
}

* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

ol,
ul,
li {
    list-style: none;
}

blockquote,
q {
    quotes: none;
}

a {
    text-decoration: none;
    color: inherit;
}

html {
    font-size: 0.2666vw;
}

@media (min-width: 1024px) {
    html {
        font-size: 0.07vw;
    }
}

@media (min-width: 1400px) {
    html {
        font-size: 1px;
    }
}

body {
    color: var(--text-basic);
    background-color: #fff;
    margin: 0;
    font-family:
        pretendard,
        나눔고딕,
        NanumGothic,
        Nanum Gothic,
        돋움,
        Dotum,
        Arial,
        sans-serif;
    line-height: 1.5;
    overflow-x: hidden;
    overflow-y: scroll;
    font-size: 16rem;
}

form {
    display: inline;
}

img {
    max-width: 100%;
    height: auto;
    vertical-align: middle;
}

label {
    cursor: pointer;
}

a,
a:link,
a:visited {
    color: var(--text-basic);
    transition: color var(--transition-speed) ease;
}

a:hover {
    color: var(--primary-color);
}

a:active {
    color: #444;
}

table {
    border-collapse: collapse;
    border-spacing: 0;
}

.break {
    page-break-before: always;
}

/* ==========================================================================
   초기세팅 끝
   ========================================================================== */

.d-flex {
    display: flex !important;
}

.con-start,
.justify-content-start {
    justify-content: flex-start !important;
}

.con-end,
.justify-content-end {
    justify-content: flex-end !important;
}

.con-center,
.justify-content-center {
    justify-content: center !important;
}

.item-center,
.align-items-center {
    align-items: center !important;
}

.item-start,
.align-items-start {
    -webkit-box-align: flex-start !important;
    -ms-flex-align: flex-start !important;
    align-items: flex-start !important;
}

.item-end,
.align-items-end {
    -webkit-box-align: flex-end !important;
    -ms-flex-align: flex-end !important;
    align-items: flex-end !important;
}

.item-stretch,
.align-items-stretch {
    align-items: stretch !important;
}

.con-btw,
.justify-content-space-between {
    -webkit-box-align: space-between !important;
    -ms-flex-align: space-between !important;
    justify-content: space-between !important;
}

.con-vert {
    flex-direction: column;
}

.con-row {
    flex-direction: row;
}

.con-rev {
    flex-direction: row-reverse;
}

.flex-wrap {
    flex-wrap: wrap;
}

.con-left {
    float: left;
}

.con-right {
    float: right;
}

.w5 {
    width: 5%;
    display: inline-block;
}

.w10 {
    width: 10%;
    display: inline-block;
}

.w15 {
    width: 15%;
    display: inline-block;
}

.w20 {
    width: 20%;
    display: inline-block;
}

.w25 {
    width: 25%;
    display: inline-block;
}

.w30 {
    width: 30%;
    display: inline-block;
}

.w40 {
    width: 40%;
    display: inline-block;
}

.w45 {
    width: 44%;
    display: inline-block;
}

.w50 {
    width: 50%;
    display: inline-block;
}

.w60 {
    width: 60%;
    display: inline-block;
}

.w70 {
    width: 70%;
    display: inline-block;
}

.w80 {
    width: 80%;
    display: inline-block;
}

.w90 {
    width: 90%;
    display: inline-block;
}

.w100 {
    width: 100%;
    display: inline-block;
}

.h50 {
    height: 50rem !important;
}

.h70 {
    height: 70rem !important;
}

.h100 {
    height: 100rem !important;
}

.h150 {
    height: 150rem !important;
}

.mt5 {
    margin-top: 5rem !important;
}

.mt10 {
    margin-top: 10rem !important;
}

.mt20 {
    margin-top: 20rem !important;
}

.mt30 {
    margin-top: 30rem !important;
}

.mt40 {
    margin-top: 40rem !important;
}

.mt50 {
    margin-top: 50rem !important;
}

.mb5 {
    margin-bottom: 5rem !important;
}

.mb0 {
    margin-bottom: 0 !important;
}

.mb10 {
    margin-bottom: 10rem !important;
}

.mb20 {
    margin-bottom: 20rem !important;
}

.mb30 {
    margin-bottom: 30rem !important;
}

.mb40 {
    margin-bottom: 40rem !important;
}

.mb50 {
    margin-bottom: 50rem !important;
}

.mb60 {
    margin-bottom: 60rem !important;
}

.mr5 {
    margin-right: 5rem !important;
}

.mr10 {
    margin-right: 10rem !important;
}

.mr20 {
    margin-right: 20rem !important;
}

.mr30 {
    margin-right: 30rem !important;
}

.mr40 {
    margin-right: 40rem;
}

.mr50 {
    margin-right: 50rem;
}

.mr100 {
    margin-right: 100rem;
}

.ml10 {
    margin-left: 10rem !important;
}

.ml20 {
    margin-left: 20rem !important;
}

.ml30 {
    margin-left: 30rem !important;
}

.ml40 {
    margin-left: 40rem;
}

.ml50 {
    margin-left: 50rem;
}

.pd0 {
    padding: 0 !important;
}

/* ==========================================================================
   기본 선언 끝
   ========================================================================== */

#wrap {
    position: relative;
    width: 100%;
}





/* ==========================================================================
   헤더 및 상단 내비게이션 레이아웃
   ========================================================================== */

.site-header {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    background-color: #fff;
    border-bottom: 1px solid var(--border-color);
    z-index: 1010;
    transition: transform 0.3s ease-in-out;
}

.header-container {
    display: flex;
    align-items: center;
    justify-content: space-between;
    max-width: 1600rem;
    margin: 0 auto;
    padding: 0 20rem;
    height: 100rem;
}

.logo {
    font-size: 21rem;
    font-weight: 700;
}

.logo span {
    color: var(--text-dark);
}

.logo img {
    height: 50rem;
    display: block;
}

/* 대메뉴 리스트 */
.nav-list {
    display: flex;
    align-items: center;
    gap: 0rem;
    height: 100%;
}

.nav-item {
    position: relative;
    height: 100%;
    display: flex;
    align-items: center;
}

.nav-item-sub {
    padding-left: 35rem;
    position: relative;
    height: 100%;
    display: flex;
    align-items: center;
}

/* 대메뉴 링크 스타일 */
a.nav-trigger {
    font-size: 19rem;
    font-weight: 700;
    padding: 30rem 25rem;
    height: 100%;
    display: flex;
    align-items: center;
    color: var(--text-dark);
    transition: color var(--transition-speed);
}

.nav-item:hover a.nav-trigger,
.nav-item.active a.nav-trigger {
    color: var(--primary-color) !important;
}

a.nav-trigger-sub {
    font-size: 15rem;
    font-weight: 600;
    padding: 30rem 10rem;
    color: var(--text-muted);
}

.mega-menu {
    position: absolute;
    top: 81rem;
    left: 50%;
    transform: translateX(-50%);

    /* [수정] 고정 가로폭 해제 및 자동 조절 설정 */
    width: max-content;
    /* 내부 컨텐츠의 최대 길이에 딱 맞게 가로폭 자동 조절 */
    min-width: 100rem;
    /* 메뉴가 너무 적을 때 지나치게 좁아지는 것 방지 */
    max-width: 90vw;
    /* 브라우저 화면을 벗어나지 않도록 최대 가로폭 제한 */

    background-color: var(--bg-popover);
    border: 1px solid var(--border-color);
    border-radius: 8rem;
    box-shadow: 0 10rem 25rem rgba(0, 0, 0, 0.1);
    padding: 20rem;

    opacity: 0;
    visibility: hidden;
    transition: opacity var(--transition-speed) ease, transform var(--transition-speed) ease;
    z-index: 1100;
}

/* 활성화 상태 (JS 연동) */
.nav-item.active .mega-menu {
    opacity: 1;
    visibility: visible;
    transform: translateX(-50%) translateY(5rem);
}

/* 서브메뉴 내부 그리드 (2열 정렬) */
.mega-menu-inner {
    display: grid;
    /* [수정] 개수에 맞춰 열을 무조건 고정하지 않고, 컨텐츠 길이에 맞게 반응형 배치 */
    grid-template-cols: repeat(auto-fit, minmax(220rem, 1fr));
    gap: 8rem;

    /* 메뉴가 늘어날 때 정렬이 깨지지 않도록 정렬 기준 인라인 지정 */
    align-items: start;
}

/* 서브메뉴 개별 카드 블록 */
.mega-sub-item {
    display: flex;
    flex-direction: column;
    gap: 4rem;
    padding: 10rem;
    border-radius: 6rem;
    transition: background-color var(--transition-speed);

    /* [추가] 텍스트가 길어져도 카드가 찌그러지지 않고 자연스럽게 확보되도록 설정 */
    white-space: nowrap;
}

.mega-sub-item:hover {
    background-color: #f4f7fa;
}

.sub-title {
    font-size: 16rem;
    font-weight: 700;
    color: var(--text-dark);
}

.mega-sub-item:hover .sub-title {
    color: var(--primary-color);
}

.sub-desc {
    font-size: 12.5rem;
    font-weight: 500;
    color: var(--text-muted);
    line-height: 1.4;
    letter-spacing: -0.3rem;
}


/* ==========================================================================
   푸터 레이아웃 (Footer Styling)
   ========================================================================== */
.site-footer {
    background-color: #ffffff;
    color: var(--text-basic);
    padding: 70rem 0;
    border-top: 1px solid #e4e4e4;
    font-size: 14.5rem;
}

.site-footer .inner {
    max-width: 1600rem;
    margin: 0 auto;
    padding: 0 0rem;
    display: flex;
    padding: 0 20rem;
    justify-content: space-between;
    align-items: flex-start;
}

.site-footer .left {
    display: flex;
    flex-direction: column;
    gap: 30rem;
}

.site-footer .link-wrap {
    display: flex;
    flex-wrap: wrap;
    gap: 35rem;
}

.site-footer .link {
    color: var(--text-basic);
    font-weight: 600;
    transition: color var(--transition-speed) ease;
    font-size: 16rem;
}

.site-footer .link:hover {
    color: var(--primary-color);
}

.site-footer .link.privacy {
    color: var(--text-dark);
    font-weight: 700;
}

.site-footer .info {
    display: flex;
    flex-direction: column;
    gap: 3rem;
}

.site-footer .addr {
    display: flex;
    flex-wrap: wrap;
    gap: 16rem;
    color: var(--text-muted);
    line-height: 1.5;
    margin-bottom: 0;
}

.site-footer .addr span {
    position: relative;
}


.site-footer .copyright {
    font-size: 14rem;
    color: var(--text-muted);
    margin-top: 5rem;
}

.site-footer .right {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 10rem;
}

.site-footer .right img {
    width: 126rem;
}

.site-footer .family-wrap {
    position: relative;
}

.site-footer .sns-wrap {
    display: flex;
    gap: 12rem;
}

.site-footer .sns-box {
    display: inline-block;
    width: 38rem;
    height: 38rem;
    border-radius: 50%;
    background-color: #fff;
    background-size: 20rem;
    background-position: center;
    background-repeat: no-repeat;
    transition: background-color var(--transition-speed) ease, transform 0.2s ease;
}

.site-footer .sns-box:hover {
    background-color: #e9e9e9;
    /* transform: translateY(-2rem); */
}

.site-footer .sns-box.youtube {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23444444'%3E%3Cpath d='M23.498 6.163a3.003 3.003 0 0 0-2.11-2.11C19.517 3.545 12 3.545 12 3.545s-7.516 0-9.387.507a3.003 3.003 0 0 0-2.11 2.11C0 8.033 0 12 0 12s0 3.967.502 5.837a3.003 3.003 0 0 0 2.11 2.11c1.871.507 9.387.507 9.387.507s7.517 0 9.387-.507a3.003 3.003 0 0 0 2.11-2.11C24 15.967 24 12 24 12s0-3.967-.502-5.837zM9.545 15.568V8.432L15.818 12l-6.273 3.568z'/%3E%3C/svg%3E");
}

.site-footer .sns-box.insta {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23444444'%3E%3Cpath d='M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zM12 0C8.741 0 8.333.014 7.053.072 2.695.272.273 2.69.073 7.051.014 8.333 0 8.741 0 12c0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98 1.281.058 1.689.072 4.948.072 3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98C15.668.014 15.259 0 12 0zm0 5.838a6.162 6.162 0 1 0 0 12.324 6.162 6.162 0 0 0 0-12.324zM12 16a4 4 0 1 1 0-8 4 4 0 0 1 0 8zm6.406-11.845a1.44 1.44 0 1 0 0 2.881 1.44 1.44 0 0 0 0-2.881z'/%3E%3C/svg%3E");
}

.site-footer .sns-box.linkedin {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23444444'%3E%3Cpath d='M19 0h-14c-2.761 0-5 2.239-5 5v14c0 2.761 2.239 5 5 5h14c2.762 0 5-2.239 5-5v-14c0-2.761-2.238-5-5-5zm-11 19h-3v-11h3v11zm-1.5-12.268c-.966 0-1.75-.79-1.75-1.764s.784-1.764 1.75-1.764 1.75.79 1.75 1.764-.783 1.764-1.75 1.764zm13.5 12.268h-3v-5.604c0-3.368-4-3.113-4 0v5.604h-3v-11h3v1.765c1.396-2.586 7-2.777 7 2.476v6.759z'/%3E%3C/svg%3E");
}


/* ==========================================================================
   서브 레이아웃 
   ========================================================================== */

#contbody {
    position: relative;
    width: 100%;
}

#subbody {
    position: relative;
    padding: 230rem 0 200rem;
}

.cont,
.cont_b {
    max-width: 1400rem;
    margin: 0 auto;
    min-height: 28vh;
}

.cont {
    max-width: 1200rem;
}

.section-title {
    max-width: 1200rem;
    width: 100%;
    font-size: 55rem;
    font-weight: 800;
    color: var(--text-dark);
    line-height: 1.2;
    margin: 0 auto 60rem;
}

.section-title.alone {
    margin: 0 auto 120rem;
}

.section-title.alone2 {
    margin: 0 auto 140rem;
}

.greet-left-box {
    font-size: 25rem;
    font-weight: 700;
    width: 300rem;
}

.greet-right-box {
    width: 700rem;
    font-size: 18.2rem;
    font-weight: 400;
    line-height: 1.6;
    text-align: justify;
    word-break: keep-all;
}

.greet-right-box img {
    margin: 0 0 0 40rem;
}

.cont-left-box {
    width: 300rem;
    font-size: 24rem;
    font-weight: 700;
}

.cont-right-box {
    width: 800rem;
    font-size: 18.2rem;
    font-weight: 400;
    line-height: 1.6;
    text-align: justify;
    word-break: keep-all;
}

.greet_img img {
    position: relative;
    margin: -200rem 0 100rem 0;
    width: 700rem;
    height: auto !important;
    align-self: flex-end;
}

.his_img img {
    position: relative;
    margin: -500rem 0 100rem 0;
    width: 700rem;
    height: auto !important;
    align-self: flex-end;
}



.map-left-box {
    width: 300rem;
    font-size: 24rem;
    font-weight: 700;
}

.map-mid-box {
    width: 300rem;
    font-size: 19rem;
    font-weight: 500;
}

.map-right-box {
    width: 600rem;
    font-size: 18.2rem;
    font-weight: 400;
    line-height: 1.6;
    text-align: justify;
    word-break: keep-all;
    overflow: hidden;
}

/* ==========================================================================
   인터랙티브 연혁 페이지 스타일 (Interactive Timeline Styling)
   ========================================================================== */

/* 상단 고정 네비게이션 탭 */
.history-sticky-nav {
    position: sticky;
    top: 0;
    /* 화면 맨 위에 고정 */
    z-index: 1000;
    /* 헤더 99999보다 높은 z-index로 덮어씌움 */
    background-color: #ffffff;
    border-bottom: 1px solid #e2e8f0;
    margin-bottom: 50rem;
    width: 100%;
    height: 101rem;
}



.nav-inner {
    max-width: 1200rem;
    margin: 0 auto;
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 0;
}

.nav-tab {
    flex: 1;
    max-width: 250rem;
    background: none;
    border: none;
    padding: 36.5rem 0;
    font-size: 22rem;
    font-weight: 600;
    color: var(--text-muted);
    cursor: pointer;
    text-align: center;
    position: relative;
    transition: color 0.3s ease;
    font-family: pretendard;
    display: block;
    text-decoration: none !important;
}

.nav-tab::after {
    content: '';
    position: absolute;
    bottom: -1px;
    left: 50%;
    transform: translateX(-50%);
    width: 0;
    height: 3rem;
    background-color: var(--primary-color);
    transition: width 0.3s ease;
}

.nav-tab:hover {
    color: var(--primary-color);
}

.nav-tab.active {
    color: var(--primary-color);
    font-weight: 700;
}

.nav-tab.active::after {
    width: 100%;
}

/* 타임라인 컨테이너 */
.timeline-container {
    position: relative;
    margin-bottom: 120rem;
}

.timeline-wrapper {
    position: relative;
    width: 100%;
}

/* 스크롤 진행선 (옅은 회색 백그라운드 선) */
.timeline-line {
    position: absolute;
    left: 350rem;
    /* 스티키 사이드바 가로폭 350rem에 정렬 */
    top: 20rem;
    bottom: 20rem;
    width: 3rem;
    background-color: #e2e8f0;
    z-index: 1;
}

/* 스크롤에 따라 차오르는 컬러 바 */
.timeline-fill {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 0%;
    /* JS에서 동적 계산 */
    background-color: var(--primary-color);
    transition: height 0.1s ease-out;
}

/* 연도 구간 대역 섹션 */
.history-section {
    display: flex;
    position: relative;
    margin-bottom: 100rem;
}

.history-section:last-child {
    margin-bottom: 0;
}

/* 좌측 고정 사이드바 */
.section-sidebar {
    width: 350rem;
    flex-shrink: 0;
    position: relative;
    text-align: left;
    padding-right: 40rem;
}

/* 스티키 텍스트 (해당 년도가 스크롤될 때까지 화면에 고정) */
.sidebar-sticky {
    position: sticky;
    top: 130rem;
    /* 탭바 높이 70rem + 알파 */
    font-size: 45rem;
    font-weight: 500;
    color: var(--text-dark);
    letter-spacing: -0.5rem;
    transition: color 0.3s ease;
}



/* 우측 연혁 본문 영역 */
.section-content {
    width: 850rem;
    flex-shrink: 0;
    padding-left: 40rem;
    z-index: 2;
}

/* 개별 연도 로우 */
.history-row {
    display: flex;
    align-items: flex-start;
    margin-bottom: 60rem;
    position: relative;
    transition: transform 0.3s ease;
}

.history-row:last-child {
    margin-bottom: 0;
}

/* 연도 레이블 */
.history-row .year-label {
    width: 120rem;
    font-size: 23rem;
    font-weight: 800;
    color: var(--text-basic);
    /* 기본 비활성화 칼라 */
    position: relative;
    flex-shrink: 0;
    line-height: 1.2;
    transition: color 0.3s ease;
}

/* 개별 연도 포인트 도트 */
.history-row .year-dot {
    position: absolute;
    left: -44rem;
    /* timeline-line의 left 250rem에 맞춰 포인트 배치 */
    top: 10rem;
    width: 11rem;
    height: 11rem;
    border-radius: 50%;
    background-color: #ffffff;
    border: 3rem solid #cbd5e1;
    z-index: 3;
    transition: border-color 0.3s ease, background-color 0.3s ease, transform 0.3s ease;
}

/* 마우스 호버 및 스크롤 활성화(.on) 시 효과 */
.year-label {
    color: var(--primary-color);
}

.history-row.on .year-dot {
    border-color: var(--primary-color);
    background-color: var(--primary-color);
    transform: scale(1.3);
    box-shadow: 0 0 8rem rgba(0, 86, 179, 0.5);
}



/* 연도별 세부 내용 리스트 */
.history-row .year-list {
    display: flex;
    flex-direction: column;
    gap: 12rem;
    padding-left: 20rem;
    width: 100%;
}

.history-row .year-list span {
    display: flex;
    align-items: baseline;
    font-size: 18rem;
    font-weight: 400;
    color: var(--text-basic);
    line-height: 1.5;
    word-break: keep-all;
}

.history-row .year-list span em {
    font-style: normal;
    font-weight: 700;
    color: var(--text-basic);
    margin-right: 12rem;
    font-size: 15rem;
    white-space: nowrap;
    padding: 2rem 8rem;

}

/* 반응형 대응 (모바일 등 작은 화면에서는 가로 고정 해제) */
@media (max-width: 1024px) {

    .history-sticky-nav,
    .admission-tabs {
        top: 80rem;
        height: 60rem;
    }

    .nav-tab {
        font-size: 15rem;
        padding: 0;
    }

    .timeline-line {
        left: 20rem;
    }

    .history-section {
        flex-direction: column;
    }

    .section-sidebar {
        width: 100%;
        text-align: left;
        padding-right: 0;
        padding-bottom: 20rem;
        border-bottom: 1px dashed #e2e8f0;
        margin-bottom: 20rem;
    }

    .sidebar-sticky {
        position: static;
        font-size: 20rem;
    }

    .section-content {
        padding-left: 40rem;
    }

    .history-row .year-dot {
        left: -26.5rem;
    }
}

/* 스티키 고정 시 헤더 슬라이드 퇴장 */
.site-header.hide-header {
    transform: translateY(-100%);
}



.report-div {
    position: relative;
    top: 50rem;
    width: calc((100% - 32rem) / 3);
    opacity: 1;
    transition: top 0.7s ease, opacity 0.7s ease;
    margin-bottom: 40rem;
}

.report-div .img {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 380rem;
    background: #f4f4f4;
}

.report-div img {
    width: 80%;
    box-shadow: 0 20rem 20rem 0 rgba(0, 0, 0, 0.05);
}

/* ==========================================================================
   선생님소개
   ========================================================================== */


.main-desc_team {
    margin: 0 auto 50rem;
    padding: 0 0 0 400rem;
    max-width: 1200rem;
    color: var(--text-basic);
    font-size: 32rem;
    line-height: 1.3;
    font-weight: 700;
}

.sub-desc_team {
    margin: 30rem 0 0 0;
    color: var(--text-muted);
    font-size: 22rem;
    line-height: 1.3;
    font-weight: 400;
}

.main-desc_team.leftnopad {
    padding: 0;
}

.top-line {
    border-top: 2px solid #333;
}

/* 카드 개별 요소 */
.card {
    display: flex;
    width: 245rem;
    flex-direction: column;
    flex-shrink: 0;
}

.image-box {
    position: relative;
    height: 326rem;
    width: 100%;
    overflow: hidden;
    border-radius: 10rem;
    background-color: #e3e3e3;
}

.member-img {
    height: 100%;
    width: 100%;
    object-fit: cover;
    transition: filter 0.3s ease;
}


.info-box {
    padding: 12rem 0;
    backdrop-filter: blur(4rem);
    box-sizing: border-box;
}

.info-name {
    margin: 0;
    font-size: 18rem;
    font-weight: 800;
    color: #171717;
}

.info-role {
    margin: 0rem 0 0 0;
    font-size: 15rem;
    font-weight: 500;
    color: #525252;
}

.map-right-box .map-link {
    width: 600px;
    height: 350px;
    border: 1px solid var(--border-color);
    overflow: hidden;
    display: flex;
    justify-content: center;
    align-items: center;
}

.map-right-box .map-link img {
    max-width: 1209px;
    width: 1209px;
    height: 747px;
}

.map-link-desc {
    margin: 0 0 20rem 0;
    font-size: 15rem;
    color: var(--text-muted);
    line-height: 1.3;
}

.map-track-box {
    margin: 0rem 0 0 0;
    line-height: 1.4;
}

.map-track {
    font-size: 14rem;
    color: var(--text-basic);
    display: flex;
    flex-wrap: nowrap;
    justify-content: center;
    align-items: center;
    min-height: 35rem;
    border: 1px solid #cfcfcf;
    border-radius: 5rem;
    width: 140rem;
    margin: 0 0 7rem 0;
    transition: all 0.2s ease;
}

.map-track:hover {
    background-color: var(--primary-color);
    border-color: var(--primary-color);
    color: #ffffff;
    cursor: pointer;
}

/* ==========================================================================
   교직원 카드 및 상세 모달 인터랙션 (Premium Aesthetics)
   ========================================================================== */

/* 카드 호버 효과 */
.card[data-teacher-id] {
    cursor: pointer;
}

.card[data-teacher-id] .member-img {
    transition: filter 0.3s ease;
}

.card[data-teacher-id]:hover .member-img {
    filter: brightness(0.95);
}


/* 모달 기본 컨테이너 */
.teacher-modal {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 9999;
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.2s ease, visibility 0.2s ease;
}

.teacher-modal.show {
    opacity: 1;
    visibility: visible;
}

/* 모달 블러 오버레이 */
.modal-backdrop {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(15, 23, 42, 0.45);
    /* 다크 슬레이트 톤 투명도 */
    backdrop-filter: blur(5px);
    /* 고급스러운 Glassmorphism */
    -webkit-backdrop-filter: blur(5px);
    transition: opacity 0.2s ease;
}

/* 모달 래퍼 및 정렬 */
.modal-wrapper {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20rem;
    box-sizing: border-box;
}

/* 모달 본체 */
.modal-content {
    background-color: #ffffff;
    border-radius: 20rem;
    width: 800rem;
    max-width: 100%;
    height: 620rem;
    /* 데스크톱 고정 높이 지정 */
    max-height: 85vh;
    /* 화면 크기에 맞추어 안전 높이 확보 */
    display: flex;
    flex-direction: column;
    box-shadow: 0 25rem 50rem -12rem rgba(0, 0, 0, 0.3);
    overflow: hidden;
    position: relative;
    transform: scale(0.94) translateY(10rem);
    transition: transform 0.25s cubic-bezier(0.34, 1.56, 0.64, 1), opacity 0.2s ease;
    z-index: 10;
}

.teacher-modal.show .modal-content {
    transform: scale(1) translateY(0);
}

/* 닫기 버튼 */
.modal-close-btn {
    position: absolute;
    top: 20rem;
    right: 25rem;
    background: none;
    border: none;
    font-size: 36rem;
    line-height: 1;
    font-weight: 300;
    color: #9ca3af;
    cursor: pointer;
    transition: color 0.2s ease, transform 0.2s ease;
    z-index: 12;
}

.modal-close-btn:hover {
    color: var(--text-dark);
    transform: rotate(90deg);
}

/* 모달 내부 구성 */
.modal-body {
    display: flex;
    gap: 45rem;
    padding: 45rem;
    flex: 1;
    min-height: 0;
    /* 자식이 부모 높이를 초과하지 않도록 제한 */
    box-sizing: border-box;
}

/* 좌측 프로필 이미지 */
.modal-left {
    width: 245rem;
    flex-shrink: 0;
}

.modal-img-container {
    width: 100%;
    aspect-ratio: 245 / 326;
    border-radius: 16rem;
    overflow: hidden;
    background-color: #f3f4f6;
    box-shadow: 0 4rem 15rem rgba(0, 0, 0, 0.08);
}

#modalTeacherImg {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* 우측 상세 정보 */
.modal-right {
    flex-grow: 1;
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    height: 100%;
    min-height: 0;
}

/* 이력 상세 내용이 들어가는 스크롤 영역 */
.modal-details-container {
    flex: 1;
    overflow-y: auto;
    /* 직책, 이름 하단의 상세 정보들만 스크롤되도록 설정 */
    min-height: 0;
    /* 스크롤 동작을 위한 flex 자식 제한 */
    padding-right: 15rem;
    /* 스크롤바가 글자를 가리지 않도록 여백 제공 */
}

/* 상세 정보 스크롤바 커스텀 (Premium Aesthetics) */
.modal-details-container::-webkit-scrollbar {
    width: 6rem;
}

.modal-details-container::-webkit-scrollbar-track {
    background: #f1f5f9;
    border-radius: 10rem;
}

.modal-details-container::-webkit-scrollbar-thumb {
    background: #cbd5e1;
    border-radius: 10rem;
    transition: background-color 0.2s ease;
}

.modal-details-container::-webkit-scrollbar-thumb:hover {
    background: #94a3b8;
}

.modal-label {
    display: inline-block;
    font-size: 14rem;
    font-weight: 700;
    color: var(--primary-color);
    letter-spacing: 1.5rem;
    margin-bottom: 6rem;
    background-color: rgba(20, 87, 175, 0.07);
    border: 1px solid #c5ceda;
    padding: 3rem 15rem;
    border-radius: 40rem;
    width: fit-content;
    letter-spacing: -0.3rem;
}

.modal-name {
    font-size: 30rem;
    font-weight: 800;
    color: var(--text-dark);
    margin: 0 0 25rem 0;

}

/* 정보 섹션 */
.modal-info-section {
    margin-bottom: 22rem;
}

.modal-info-section:last-child {
    margin-bottom: 0;
}

.section-subtitle {
    font-size: 16.5rem;
    font-weight: 700;
    color: var(--text-dark);
    margin: 0 0 10rem 0;
    position: relative;
    padding-left: 12rem;
}

.section-subtitle::before {
    content: '';
    position: absolute;
    left: 0;
    top: 3rem;
    bottom: 3rem;
    width: 3.5rem;
    background-color: var(--primary-color);
    border-radius: 2rem;
}

.modal-list {
    margin: 0;
    padding: 0;
    list-style: none;
    display: flex;
    flex-direction: column;
    gap: 3rem;
}

.modal-list li {
    font-size: 15rem;
    letter-spacing: -0.5rem;
    color: var(--text-basic);
    line-height: 1.55;
    position: relative;
    padding-left: 14rem;
}

.modal-list li::before {
    content: '';
    position: absolute;
    left: 0;
    top: 8.5rem;
    width: 4.5rem;
    height: 4.5rem;
    background-color: #94a3b8;
    border-radius: 50%;
}

.modal-list li.no-data {
    color: #94a3b8;
    padding-left: 0;
}

.modal-list li.no-data::before {
    display: none;
}

/* 반응형 모바일 대응 */
@media (max-width: 768px) {
    .modal-wrapper {
        align-items: flex-end;
        padding: 0;
    }

    .modal-content {
        border-radius: 24rem 24rem 0 0;
        transform: translateY(100%);
        transition: transform 0.4s cubic-bezier(0.16, 1, 0.3, 1);
        max-height: 90vh;
        overflow-y: auto;
    }

    .teacher-modal.show .modal-content {
        transform: translateY(0);
    }

    .modal-close-btn {
        top: 15rem;
        right: 20rem;
    }

    .modal-body {
        flex-direction: column;
        gap: 25rem;
        padding: 35rem 24rem;
        align-items: center;
        text-align: center;
    }

    .modal-left {
        width: 160rem;
    }

    .modal-right {
        width: 100%;
        align-items: center;
    }

    .modal-label {
        margin: 0 auto 8rem;
    }

    .section-subtitle {
        padding-left: 0;
        display: inline-block;
    }

    .section-subtitle::before {
        display: none;
    }

    .modal-list {
        align-items: center;
    }

    .modal-list li {
        padding-left: 0;
        text-align: center;
    }

    .modal-list li::before {
        display: none;
    }
}

/* ==========================================================================
   학점은행제
   ========================================================================== */

.academic-table {
    overflow-x: auto;
    margin-bottom: 20px;
    border-radius: 8px;
    border: 1px solid var(--border-color);
    width: 100%;
}


table {
    width: 100%;
    border-collapse: collapse;
    text-align: center;
    font-size: 15rem;
    overflow-x: auto;
    border-bottom: none;
}

table th {
    background-color: var(--primary-color);
    color: white;
    font-weight: 500;
    padding: 14px 10px;
    border-right: 1px solid rgba(255, 255, 255, 0.08);
}

table tr:last-child td {
    border-bottom: none;
}

table th:last-child,
table td:last-child {
    border-right: none;
}

table th.hd-sub {
    background-color: var(--sub-color);
}

table td {
    padding: 14px 10px;
    border-bottom: 1px solid var(--border-color);
    background-color: #fff;
    color: var(--text-basic);
}

table td.no-right-border {
    border-right: none;
}

table td.no-bottom-border {
    border-bottom: none;
}

.highlight {
    font-weight: 600;
    color: var(--text-basic);
}

.table-note {
    background-color: var(--text-llight);
    font-size: 14rem;
    color: var(--text-basic);
    padding: 4px 8px;
    border-radius: 4px;
    display: inline-block;
    font-weight: 600;
}

.academic-cont h3 {
    font-size: 18rem;
    color: var(--text-basic);
    margin: 20px 0 10px 0;
    font-weight: 600;
}

.academic-cont h3:first-child {
    margin-top: 0;
}

.academic-cont ul {
    list-style: none;
    padding-left: 0;
}

.academic-cont li {
    position: relative;
    padding-left: 20rem;
    margin-bottom: 8rem;
    font-size: 16rem;
}

.academic-cont li::before {
    content: "•";
    color: var(--text-muted);
    font-weight: bold;
    position: absolute;
    left: 5rem;
}

.academic-cont .sub-text {
    font-size: 16.5rem;
    margin-top: -5rem;
    margin-bottom: 15rem;
    padding-left: 5rem;
}

.scholarship-table table tbody td {
    border-right: 1px solid var(--border-color);
}

.scholarship-table table tbody td:last-child {
    border-right: none;
}

.scholarship-table table tbody td.right-border {
    border-right: 1px solid var(--border-color);
}

.rule-section {
    width: 100%;
    margin-bottom: 30rem;
    padding-bottom: 20rem;
    border-bottom: 1px dashed var(--border-color);
}

.rule-section:last-child {
    border-bottom: none;
    margin-bottom: 0;
    padding-bottom: 0;
}

.rule-title {
    font-size: 19rem;
    font-weight: 700;
    color: var(--text-basic);
    margin-bottom: 12rem;
    display: flex;
    align-items: center;
    gap: 8rem;
}

.rule-title::before {
    content: '';
    display: inline-block;
    width: 4rem;
    height: 18rem;
    background-color: var(--secondary-color);
    border-radius: 2rem;
}

.rule-content {
    font-size: 16rem;
    color: var(--text-dark);
    padding-left: 12rem;
}

.rule-content p {
    margin-bottom: 6rem;
}

.rule-content ul {
    list-style-type: none;
    padding-left: 15rem;
    margin-top: 6rem;
    margin-bottom: 6rem;
}

.rule-content li {
    position: relative;
    padding-left: 10rem;
    margin-bottom: 4rem;
}

.rule-content li::before {
    content: "";
    position: absolute;
    left: 0;
    color: var(--secondary-color);
    font-weight: bold;
}


/* ==========================================================================
   취업정보
   ========================================================================== */
.job-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 24px;
}

.employment-card {
    background: #ffffff;
    border: 1px solid var(--border-color);
    border-radius: 16px;
    padding: 28px;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    position: relative;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
}


/* 마우스 호버 시 포인트 효과 */
.employment-card:hover {
    transform: translateY(-3px);
    border-color: var(--secondary-color);
    box-shadow: 0 12px 20px -8px rgba(14, 165, 233, 0.15);
}

/* 상단 취업률 수치 영역 */
.job-card-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    margin-bottom: 16rem;
}

.rate-label {
    font-size: 14rem;
    font-weight: 700;
    color: var(--text-muted);
    border: 1px solid var(--border-color);
    background-color: #f4f4f5;
    padding: 4rem 12rem;
    border-radius: 30rem;
}

.rate-number {
    font-size: 58rem;
    font-weight: 900;
    color: var(--primary-color);
    line-height: 1;
    letter-spacing: -1px;
}

.rate-number span {
    font-size: 22rem;
    font-weight: 700;
    color: var(--sub-color);
    margin-left: 2rem;
}

/* 중간 과정명 영역 */
.card-body {
    margin-bottom: 20rem;
}

.course-tag {
    font-size: 13rem;
    color: var(--sub-color);
    font-weight: 700;
    display: inline-block;
    margin-bottom: 6rem;
    text-transform: uppercase;
}

.course-name {
    font-size: 18rem;
    font-weight: 700;
    color: var(--text-dark);
    line-height: 1.4;
    word-break: keep-all;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;

}

/* 하단 교육 기간 영역 */
.card-footer {
    border-top: 1px solid var(--border-color);
    padding-top: 14rem;
    display: flex;
    align-items: center;
    gap: 6rem;
    font-size: 15rem;
    color: var(--text-muted);
}

.calendar-icon {
    color: var(--secondary-color);
    font-weight: bold;
}

.job-grid2 {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 24px;
}

.info-card {
    position: relative;
    height: 520px;
    /* 세로형 카드 높이 지정 */
    border-radius: 20px;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    padding: 30px 20px 20px 20px;
    background-color: var(--card-bg);
    background-size: cover;
    background-position: center;
    transition: transform 0.3s ease, box-shadow 0.3s ease;
}

/* 각 카드별 배경 이미지 예시 (원하는 이미지 URL로 대체 가능) */
.info-card:nth-child(1) {
    background-image: url('/img/vision_bg_01.jpg');
}

.info-card:nth-child(2) {
    background-image: url('/img/vision_bg_02.jpg');
}

.info-card:nth-child(3) {
    background-image: url('/img/vision_bg_03.jpg');
}

.info-card:nth-child(4) {
    background-image: url('/img/vision_bg_04.jpg');
}

.info-card:nth-child(5) {
    background-image: url('/img/vision_bg_05.jpg');
}

.info-card:nth-child(6) {
    background-image: url('/img/vision_bg_06.jpg');
}

.info-card:nth-child(7) {
    background-image: url('/img/vision_bg_07.jpg');
}

.info-card:nth-child(8) {
    background-image: url('/img/vision_bg_08.jpg');
}

/* 배경 이미지 위 텍스트 가독성을 위한 어두운 그라데이션 오버레이 */
.info-card::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: linear-gradient(to bottom, rgba(0, 0, 0, 0.5) 30%, rgba(0, 0, 0, 0.2) 50%, rgba(0, 0, 0, 0.9) 100%);
    z-index: 1;
}

.info-card:hover {
    transform: translateY(-3px);
    box-shadow: 0 12px 20px rgba(0, 0, 0, 0.3);
}

/* 텍스트 내용들을 오버레이 위로 올림 */
.card-header {
    position: relative;
    z-index: 2;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
}

.card-body,
.card-footer2 {
    position: relative;
    z-index: 2;
}

/* 상단 타이틀 스타일 */
.keyword-badge {
    font-size: 14rem;
    font-weight: 700;
    color: #eeeeee;
    text-transform: uppercase;
    letter-spacing: 1px;
    display: block;
    margin-bottom: 5px;
    opacity: 0.9;
}

.main-title {
    font-size: 25rem;
    font-weight: 800;
    color: #fff;
    line-height: 1.3;
    word-break: keep-all;
}

.sub-text {
    display: block;
    font-size: 14rem;
    color: #d7d8da;
    font-weight: normal;
    margin-top: 4px;
    font-weight: 600;
}

/* 본문 상세 스타일 정리 */
.card-body {
    margin-top: auto;
    /* 본문을 아래쪽으로 밀어내어 하단 버튼 위에 안착 */
    margin-bottom: 20px;
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.info-row {
    display: flex;
    align-items: center;
    gap: 6px;
}

.row-label {
    font-size: 13rem;
    font-weight: 800;
    padding: 1px 5px;
    border-radius: 4px;
    white-space: nowrap;
}

.label-core {
    background: rgba(59, 130, 246, 0.2);
    color: #93c5fd;
    border: 1px solid rgba(59, 130, 246, 0.4);
}

.label-strength {
    background: rgba(16, 185, 129, 0.2);
    color: #6ee7b7;
    border: 1px solid rgba(16, 185, 129, 0.4);
}

.label-caution {
    background: rgba(249, 115, 22, 0.2);
    color: #fdba74;
    border: 1px solid rgba(249, 115, 22, 0.4);
}

.row-text {
    color: #e5e7eb;
    font-size: 13rem;
    font-weight: 500;
    word-break: keep-all;
}

/* 이미지 속 하단 타원형 'Discover More' 버튼 스타일 */
.card-footer2 .btn-more {
    width: 100%;
    display: flex;
    justify-content: space-between;
    align-items: center;
    background: var(--bg-popover);
    color: var(--text-basic);
    text-decoration: none;
    padding: 12px 20px;
    border-radius: 30px;
    font-size: 14rem;
    font-weight: 700;
    transition: background 0.2s;
}

.card-footer2 .btn-more:hover {
    background: #f3f4f6;
}

.modal-name2 {
    font-size: 30rem;
    font-weight: 800;
    color: var(--text-dark);
    margin: 0 0 5rem 0;
}

/* 취업전망 전용 모달 크기 재지정 */
.vision-modal-content {
    width: 800rem;
    height: 650rem;
}

/* Swiper 슬라이더 커스텀 스타일 */
.vision-swiper {
    width: 100%;
    padding: 10rem 0 50rem 0 !important;
    position: relative;
    overflow: hidden;
}

.vision-swiper .swiper-wrapper {
    align-items: stretch;
}

.vision-swiper .swiper-slide {
    height: 520rem !important;
    display: flex;
}

/* Swiper 좌우 네비게이션 버튼 커스텀 */
.vision-swiper-container .swiper-button-prev,
.vision-swiper-container .swiper-button-next {
    color: #ffffff;
    background-color: rgba(15, 23, 42, 0.6);
    width: 44px;
    height: 44px;
    border-radius: 50%;
    transition: background-color 0.2s, transform 0.2s;
    z-index: 10;
    top: calc(330rem);
}

.vision-swiper-container .swiper-button-prev::after,
.vision-swiper-container .swiper-button-next::after {
    font-size: 16rem;
    font-weight: bold;
}

.vision-swiper-container .swiper-button-prev:hover,
.vision-swiper-container .swiper-button-next:hover {
    background-color: var(--primary-color);
    transform: scale(1.05);
}

.vision-swiper-container .swiper-button-prev {
    left: -22rem;
}

.vision-swiper-container .swiper-button-next {
    right: -22rem;
}

/* 페이지네이션 도트 스타일 */
.vision-swiper .swiper-pagination-bullet {
    background: #cbd5e1;
    opacity: 0.8;
    width: 10rem;
    height: 10rem;
    transition: all 0.3s ease;
}

.vision-swiper .swiper-pagination-bullet-active {
    background: var(--primary-color);
    opacity: 1;
    width: 24rem;
    border-radius: 5rem;
}

/* ==========================================================================
   원서접수 (Admission Apply Form) 프리미엄 스타일
   ========================================================================== */


.admission-tabs {
    background-color: #ffffff;
    border-bottom: 1px solid #e2e8f0;
    margin-bottom: 50rem;
    width: 100%;
    height: 101rem;
}

.admission-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 35rem;
    margin-top: 90rem;
}

/* 과정 카드 전용 프리미엄 스타일 */
.admission-card {
    background: #ffffff;
    border: 1px solid var(--border-color);
    border-radius: 16rem;
    padding: 24rem;
    transition: all 0.35s cubic-bezier(0.4, 0, 0.2, 1);
    position: relative;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    box-shadow: 0 4rem 15rem rgba(0, 0, 0, 0.02);
}

.admission-card:hover {
    transform: translateY(-0rem);
    border-color: var(--text-basic);
    box-shadow: 0 20rem 35rem rgba(20, 87, 175, 0.1);
}

/* 1. 이미지 (4:3 비율) 래퍼 */
.admission-img-wrap {
    width: 100%;
    aspect-ratio: 4 / 3;
    overflow: hidden;
    border-radius: 10rem;
    position: relative;
    margin-bottom: 16rem;
    background-color: #f4f4f5;
}

.admission-img-wrap img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 0.4s ease;
}

.admission-card:hover .admission-img-wrap img {
    transform: scale(1.05);
}

.admission-badge {
    position: absolute;
    top: 12rem;
    right: 12rem;
    font-size: 13rem;
    font-weight: 700;
    color: #ef4444;
    border: 1px solid #fee2e2;
    background-color: #fef2f2;
    padding: 4rem 12rem;
    border-radius: 30rem;
    white-space: nowrap;
    z-index: 2;
}

.admission-badge.free {
    color: #10b981;
    border-color: #d1fae5;
    background-color: #ecfdf5;
}

/* 2. 수강신청 / 상세보기 버튼 그룹 */
.admission-btn-group {
    display: flex;
    gap: 8rem;
    margin-bottom: 18rem;
}

.admission-btn-group .btn-apply {
    flex: 1;
    text-align: center;
    background-color: var(--primary-color);
    color: #ffffff !important;
    padding: 10rem 0;
    border-radius: 8rem;
    font-size: 14rem;
    font-weight: 700;
    transition: background-color 0.2s;
    text-decoration: none;
}

.admission-btn-group .btn-apply:hover {
    background-color: #0d3972;
}

.admission-btn-group .btn-detail {
    flex: 1;
    text-align: center;
    border: 1px solid #aaaaaa;
    background-color: #ffffff;
    color: var(--text-dark) !important;
    padding: 10rem 0;
    border-radius: 8rem;
    font-size: 14rem;
    font-weight: 700;
    transition: all 0.2s;
    text-decoration: none;
}

.admission-btn-group .btn-detail:hover {
    background-color: #f8fafc;
    border-color: var(--text-basic);
}

/* 3. 간략 설명 */
.admission-summary {
    font-size: 13.5rem;
    color: var(--sub-color);
    font-weight: 700;
    margin-bottom: 8rem;
    text-align: left;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* 4. 과정명 */
.admission-course-title {
    font-size: 20rem;
    font-weight: 800;
    color: var(--text-dark);
    line-height: 1.3;
    margin-bottom: 18rem;
    word-break: keep-all;
    text-align: left;
    min-height: 52rem;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    line-clamp: 2;
    letter-spacing: -0.2rem;
}

/* 5. 교육기간 & 6. 본인부담금 정보 리스트 */
.admission-info-list {
    border-top: 1px dashed #e2e8f0;
    padding-top: 16rem;
    display: flex;
    flex-direction: column;
    gap: 8rem;
    margin-top: auto;
}

.admission-info-item {
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-size: 14rem;
    color: var(--text-muted);
}

.admission-info-item strong {
    color: var(--text-dark);
    font-weight: 600;
}

.admission-price {
    color: var(--primary-color);
    font-weight: 800;
    font-size: 15rem;
}

.admission-price.free {
    color: #10b981;
}

.admission-subsidy {
    font-size: 11.5rem;
    color: #71717a;
    text-align: right;
    margin-top: -4rem;
}

@media (max-width: 1024px) {
    .admission-grid {
        grid-template-columns: repeat(2, 1fr);
        gap: 30rem;
    }
}

@media (max-width: 768px) {
    .admission-grid {
        grid-template-columns: 1fr;
        gap: 20rem;
    }

    .admission-card {
        padding: 24rem;
    }
}

/* ==========================================================================
   로그인 페이지 전용 스타일 (Login Page Styling)
   ========================================================================== */
.login-wrapper {
    width: 480rem;
    padding: 40rem;
    border: 1px solid var(--border-color);
    border-radius: 12rem;
    box-shadow: 0 4rem 20rem rgba(0, 0, 0, 0.03);
    background-color: #ffffff;
    text-align: center;
    margin-bottom: 80rem;
    margin-top: 40rem;
}

.login-title {
    font-size: 24rem;
    font-weight: 800;
    color: var(--text-dark);
    margin-bottom: 30rem;
}

.login-form-group {
    display: flex;
    flex-direction: column;
    gap: 16rem;
    margin-bottom: 20rem;
    text-align: left;
}

.login-input-wrap {
    display: flex;
    flex-direction: column;
    gap: 6rem;
}

.login-input-wrap label {
    font-size: 14.5rem;
    font-weight: 700;
    color: var(--text-dark);
}

.login-input {
    height: 48rem;
    padding: 10rem 16rem;
    font-size: 15rem;
    border: 1px solid var(--border-color);
    border-radius: 8rem;
    outline: none;
    background-color: #fafafa;
    transition: all 0.25s ease;
}

.login-input:focus {
    border-color: var(--primary-color);
    background-color: #ffffff;
    box-shadow: 0 0 0 3px rgba(20, 87, 175, 0.1);
}

.login-options {
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-size: 14rem;
    color: var(--text-muted);
    margin-bottom: 30rem;
}

.login-options label {
    display: flex;
    align-items: center;
    gap: 6rem;
    cursor: pointer;
}

.login-options input[type="checkbox"] {
    width: 16rem;
    height: 16rem;
    accent-color: var(--primary-color);
}

.login-options a {
    color: var(--sub-color);
    font-weight: 600;
    text-decoration: none;
    transition: color 0.2s;
}

.login-options a:hover {
    color: var(--primary-color);
    text-decoration: underline;
}

.btn-login-submit {
    width: 100%;
    height: 52rem;
    background-color: var(--primary-color);
    color: #ffffff;
    border: none;
    border-radius: 8rem;
    font-size: 16.5rem;
    font-weight: 700;
    cursor: pointer;
    transition: background-color 0.2s, transform 0.1s;
}

.btn-login-submit:hover {
    background-color: #0d3972;
}

.btn-login-submit:active {
    transform: scale(0.98);
}

.login-signup-link {
    margin-top: 24rem;
    padding-top: 20rem;
    border-top: 1px solid #f4f4f5;
    font-size: 14.5rem;
    color: var(--text-muted);
}

.login-signup-link a {
    color: var(--sub-color);
    font-weight: 700;
    margin-left: 6rem;
    text-decoration: none;
    transition: color 0.2s;
}

.login-signup-link a:hover {
    color: var(--primary-color);
    text-decoration: underline;
}

@media (max-width: 576px) {
    .login-wrapper {
        width: 100%;
        padding: 30rem 20rem;
        border: none;
        box-shadow: none;
    }
}

/* ==========================================================================
   아이디/비밀번호 찾기 페이지 전용 스타일 (ID/PW Search Styling)
   ========================================================================== */
.search-wrapper {
    width: 500rem;
    padding: 40rem;
    border: 1px solid var(--border-color);
    border-radius: 12rem;
    box-shadow: 0 4rem 20rem rgba(0, 0, 0, 0.03);
    background-color: #ffffff;
    margin-bottom: 80rem;
    margin-top: 40rem;
}

.search-section {
    margin-bottom: 40rem;
    padding-bottom: 35rem;
    border-bottom: 1px solid #f4f4f5;
}

.search-section:last-child {
    margin-bottom: 0;
    padding-bottom: 0;
    border-bottom: none;
}

.search-title {
    font-size: 20rem;
    font-weight: 800;
    color: var(--text-dark);
    margin-bottom: 20rem;
    text-align: left;
}

.search-form-group {
    display: flex;
    flex-direction: column;
    gap: 12rem;
    margin-bottom: 20rem;
    text-align: left;
}

.search-input-wrap {
    display: flex;
    flex-direction: column;
    gap: 6rem;
}

.search-input-wrap label {
    font-size: 14rem;
    font-weight: 700;
    color: var(--text-dark);
}

.search-input {
    height: 46rem;
    padding: 10rem 14rem;
    font-size: 14.5rem;
    border: 1px solid var(--border-color);
    border-radius: 8rem;
    outline: none;
    background-color: #fafafa;
    transition: all 0.25s ease;
}

.search-input:focus {
    border-color: var(--primary-color);
    background-color: #ffffff;
    box-shadow: 0 0 0 3px rgba(20, 87, 175, 0.1);
}

.btn-search-id {
    width: 100%;
    height: 46rem;
    background-color: #ffffff;
    border: 1px solid var(--primary-color);
    color: var(--primary-color);
    border-radius: 8rem;
    font-size: 15rem;
    font-weight: 700;
    cursor: pointer;
    transition: all 0.2s;
}

.btn-search-id:hover {
    background-color: rgba(20, 87, 175, 0.05);
    border-color: #0d3972;
    color: #0d3972;
}

.btn-search-pw {
    width: 100%;
    height: 46rem;
    background-color: var(--primary-color);
    border: none;
    color: #ffffff;
    border-radius: 8rem;
    font-size: 15rem;
    font-weight: 700;
    cursor: pointer;
    transition: background-color 0.2s;
}

.btn-search-pw:hover {
    background-color: #0d3972;
}

@media (max-width: 576px) {
    .search-wrapper {
        width: 100%;
        padding: 30rem 20rem;
        border: none;
        box-shadow: none;
    }
}

/* ==========================================================================
   수강신청 페이지 전용 스타일 (Admission Apply Styling)
   ========================================================================== */
.apply-table-wrapper {
    width: 100%;
    margin-bottom: 40rem;
    border-top: 0px solid var(--primary-color);
    border-bottom: 0px solid var(--border-color);
}

.apply-form-table {
    width: 100%;
    border-collapse: collapse;
    text-align: left;
}

.apply-form-table th {
    background-color: #f8fafc;
    color: var(--text-dark);
    font-size: 15rem;
    font-weight: 700;
    padding: 16rem 20rem;
    text-align: left;
    border-bottom: 1px solid var(--border-color);
    vertical-align: middle;
}

.apply-form-table td {
    padding: 16rem 20rem;
    border-bottom: 1px solid var(--border-color);
    vertical-align: middle;
    background-color: #ffffff;
    text-align: left;
}

.apply-form-table .required {
    color: #ef4444;
    margin-left: 2rem;
}

.apply-form-table tr:last-child td {
    border-bottom: 1px solid var(--border-color);

}

/* 입력 필드 공통 */
.form-input,
.form-select {
    height: 46rem;
    padding: 10rem 14rem;
    font-size: 15rem;
    border: 1px solid var(--border-color);
    border-radius: 8rem;
    outline: none;
    background-color: #fafafa;
    transition: all 0.25s ease;
    box-sizing: border-box;
}

.form-input:focus,
.form-select:focus {
    border-color: var(--primary-color);
    background-color: #ffffff;
    box-shadow: 0 0 0 3px rgba(20, 87, 175, 0.1);
}

.form-input[readonly],
.form-select[readonly] {
    background-color: #f1f3f5;
    color: #868e96;
    cursor: default;
}

/* 입력 필드 너비 유틸리티 */
.w-150 {
    width: 150rem !important;
}

.w-200 {
    width: 200rem !important;
}

.w-300 {
    width: 300rem !important;
}

.w-400 {
    width: 400rem !important;
}

.w-full {
    width: 100% !important;
}

/* 라디오 버튼 그룹 */
.radio-group {
    display: flex;
    gap: 20rem;
    align-items: center;
}

.radio-label {
    display: flex;
    align-items: center;
    gap: 8rem;
    font-size: 15rem;
    font-weight: 500;
    color: var(--text-basic);
    cursor: pointer;
}

.radio-label input[type="radio"] {
    width: 18rem;
    height: 18rem;
    accent-color: var(--primary-color);
    cursor: pointer;
}

/* 서브 버튼 (우편번호 검색 등) */
.btn-zip-code {
    height: 46rem;
    padding: 0 20rem;
    background-color: #ffffff;
    border: 1px solid var(--primary-color);
    color: var(--primary-color);
    font-size: 14.5rem;
    font-weight: 600;
    border-radius: 8rem;
    cursor: pointer;
    transition: all 0.2s;
    white-space: nowrap;
}

.btn-zip-code:hover {
    border: 1px solid var(--text-basic);
    background-color: #F1F3F5;
    color: var(--text-dark)
}

/* 간격 조정 및 정렬 */
.g-10 {
    gap: 10rem;
}

.mb-10 {
    margin-bottom: 10rem;
}

/* 개인정보 동의 박스 */
.apply-agree-box {
    margin-top: 30rem;
    margin-bottom: 40rem;
    padding: 24rem;
    border: 1px solid var(--border-color);
    border-radius: 12rem;
    background-color: #f8fafc;
}

.agree-label {
    display: flex;
    align-items: center;
    gap: 10rem;
    font-size: 15rem;
    font-weight: 700;
    color: var(--text-dark);
    margin-bottom: 10rem;
    cursor: pointer;
}

.agree-label input[type="checkbox"] {
    width: 18rem;
    height: 18rem;
    accent-color: var(--primary-color);
    cursor: pointer;
}

.agree-desc {
    font-size: 13.5rem;
    color: var(--text-muted);
    line-height: 1.6;
    padding-left: 28rem;
}

/* 신청 버튼 영역 */
.apply-btn-wrapper {
    display: flex;
    justify-content: center;
    margin-bottom: 80rem;
}

.btn-apply-submit {
    width: 240rem;
    height: 54rem;
    background-color: var(--primary-color);
    color: #ffffff;
    border: none;
    border-radius: 8rem;
    font-size: 17rem;
    font-weight: 700;
    cursor: pointer;
    transition: background-color 0.2s, transform 0.1s;
    box-shadow: 0 4rem 12rem rgba(20, 87, 175, 0.2);
}

.btn-apply-submit:hover {
    background-color: #0d3972;
    transform: translateY(-0rem);
}

.btn-apply-submit:active {
    transform: translateY(0rem);
}

/* 반응형 테이블 디자인 */
@media (max-width: 768px) {

    .apply-form-table th,
    .apply-form-table td {
        display: block;
        width: 100%;
        box-sizing: border-box;
    }

    .apply-form-table th {
        border-bottom: none;
        padding-bottom: 6rem;
        background-color: transparent;
    }

    .apply-form-table td {
        padding-top: 6rem;
    }

    .form-input.w-150,
    .form-input.w-200,
    .form-input.w-300,
    .form-input.w-400 {
        width: 100% !important;
    }

    .agree-desc {
        padding-left: 0;
    }
}