/* ==========================
   FONTS
========================== */

@font-face {
  font-family: "Sweet";
  src: url("https://cdn.jsdelivr.net/gh/projectnoonnu/noonfonts_2304-2@1.0/SUITE-Light.woff2")
    format("woff2");
  font-weight: 300;
  font-display: swap;
}
@font-face {
  font-family: "Sweet";
  src: url("https://cdn.jsdelivr.net/gh/projectnoonnu/noonfonts_2304-2@1.0/SUITE-Regular.woff2")
    format("woff2");
  font-weight: 400;
  font-display: swap;
}
@font-face {
  font-family: "Sweet";
  src: url("https://cdn.jsdelivr.net/gh/projectnoonnu/noonfonts_2304-2@1.0/SUITE-Medium.woff2")
    format("woff2");
  font-weight: 500;
  font-display: swap;
}
@font-face {
  font-family: "Sweet";
  src: url("https://cdn.jsdelivr.net/gh/projectnoonnu/noonfonts_2304-2@1.0/SUITE-SemiBold.woff2")
    format("woff2");
  font-weight: 600;
  font-display: swap;
}
@font-face {
  font-family: "Sweet";
  src: url("https://cdn.jsdelivr.net/gh/projectnoonnu/noonfonts_2304-2@1.0/SUITE-Bold.woff2")
    format("woff2");
  font-weight: 700;
  font-display: swap;
}
@font-face {
  font-family: "Sweet";
  src: url("https://cdn.jsdelivr.net/gh/projectnoonnu/noonfonts_2304-2@1.0/SUITE-ExtraBold.woff2")
    format("woff2");
  font-weight: 800;
  font-display: swap;
}
@font-face {
  font-family: "Sweet";
  src: url("https://cdn.jsdelivr.net/gh/projectnoonnu/noonfonts_2304-2@1.0/SUITE-Heavy.woff2")
    format("woff2");
  font-weight: 900;
  font-display: swap;
}

.bodoni-title {
  font-family: "itc-bodoni-seventytwo-pro", serif;
  font-size: 3.2rem;
  line-height: 1.25;
  font-weight: 200;
  color: #ffffff;
  margin-bottom: 48px;
}
/* ==========================
   ROOT
========================== */

:root {
  --bg: #000000;
  --panel-bg: #000000;
  --text-main: #ffffff;
  --text-soft: #cccccc;
  --accent: #ffffff;
  --line: #333333;
}

/* ==========================
   RESET
========================== */

*,
*::before,
*::after {
  box-sizing: border-box;
}

html,
body {
  margin: 0;
  padding: 0;
  background: var(--bg);
  color: var(--text-main);
  font-family: "Sweet", "Noto Sans KR", system-ui, sans-serif;
}

.wrapper {
  position: relative;
}

/* ==========================
   NAVIGATION
========================== */

.nav {
  position: fixed;
  top: 0; /* 맨 위에 딱 붙이자 */
  left: 0;
  right: 0;
  transform: none; /* 가운데 정렬용 translateX 제거 */
  width: 100%; /* 전체 폭 사용 */

  padding: 16px 48px 8px; /* 위·양옆 여백만 조금 */
  background: transparent;
  border: none;

  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  z-index: 20;
}

/* 화면 전체 가로를 덮는, 얇은 상단 그라데이션 */
.nav::before {
  content: "";
  position: fixed; /* 화면 기준 */
  top: 0;
  left: 0;
  right: 0;
  height: 90px; /* 너무 두껍지 않게 – 필요하면 60/80으로 조절 */

  background: linear-gradient(
    to bottom,
    rgba(0, 0, 0, 1) 0%,
    rgba(0, 0, 0, 0) 100%
  );

  z-index: -1; /* 네비 텍스트 뒤, 영상 위 */
  pointer-events: none;
}

.nav-left {
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.nav-name {
  font-size: 1.1rem;
  letter-spacing: 0.05em;
  text-transform: none;
  font-family: "futura-pt", "Noto Sans KR", sans-serif;
  font-weight: 500;
  color: #ffffff;
}

.nav-role {
  font-size: 0.7rem;
  font-family: "futura-pt", "Noto Sans KR", sans-serif;
  font-weight: 100;
  color: #ffffff;
}

.nav-right {
  display: flex;
  gap: 56px;
  font-size: 1rem;
  letter-spacing: 0.03em;
  font-family: "futura-pt", "Noto Sans KR", sans-serif;
  font-weight: 200;
}

.nav-right a {
  position: relative;
  padding-bottom: 3px;
  color: #ffffff;
  text-decoration: none;
  text-transform: capitalize;
}

/* 기본은 밑줄 없음 */
.nav-right a::after {
  content: "";
  position: absolute;
  bottom: 0;
  left: 0;
  width: 0;
  height: 1px;
  background: #ffffff;
  transition: width 0.18s ease;
}

/* hover + is-active 시 밑줄 */
.nav-right a:hover::after,
.nav-right a.is-active::after {
  width: 100%;
}

.nav-right a:hover {
  color: #ffffff;
}

/* ==========================
   PANEL COMMON
========================== */

.panel {
  min-height: 100vh;
  padding: 120px 16px 80px;
  display: flex;
  align-items: center;
  justify-content: center;
}

/* ★ ABOUT 패널만 위쪽 정렬 + 패딩 줄이기 */
#about.panel {
  align-items: flex-start; /* 세로 위쪽 정렬 */
  padding-top: 100px; /* 필요하면 60, 50으로 조금 더 줄여도 됨 */
}
.panel-inner {
  width: min(1200px, 100% - 64px);
  margin: 0 auto;
  padding: 32px 28px 40px;

  background: transparent; /* 박스 배경 제거 */
  border-radius: 0; /* 둥글기 제거 */
  border: none; /* 테두리 제거 */
  box-shadow: none; /* 그림자 제거 */
}

.panel-inner--narrow {
  max-width: 1200px;
}

.panel-label {
  font-size: 0.8rem;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  color: var(--text-soft);
  margin-bottom: 10px;
  font-weight: 600; /* ★ 추가: 두껍게 */
}

.panel-title {
  font-size: 1.6rem;
  margin-bottom: 24px;
  font-weight: 300;
  font-family: "itc-bodoni-seventytwo-pro", serif;
}

/* ==========================
   INTRO
========================== */

.panel--intro {
  padding-top: 60px;
  position: relative;
  overflow: hidden;
  background: #000;
}

.intro-inner {
  text-align: center;
  width: min(1000px, 100% - 64px);
  position: relative;
  z-index: 2;
}

.intro-title {
  font-size: 5.2rem;
  line-height: 1.18;
  margin-bottom: 48px;
  font-family: "itc-bodoni-seventytwo-pro", serif;
  font-weight: 300;
  color: #ffffff;
  letter-spacing: 0.01em;
}

.intro-tagline {
  font-size: 1.1rem;
  color: #ffffff;
  line-height: 1.8;
  font-family: "Sweet", "Noto Sans KR", sans-serif;
}

.intro-tagline strong {
  font-weight: 600;
}

/* 배경 영상 */
.intro-bg-video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  z-index: 0;
  pointer-events: none;
}

/* 상단/하단 fade overlay */
.panel--intro::before,
.panel--intro::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  z-index: 1;
}

.panel--intro::before {
  display: none;
}

.panel--intro::after {
  bottom: 0;
  height: 12vh;
  background: linear-gradient(to top, #000, transparent);
}

/* ==========================
   ABOUT
========================== */

.about-shell {
  width: 100%;
  display: grid;
  grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr);
  gap: 32px;
  align-items: stretch; /* ← 양쪽 칼럼 높이 맞추기 */
}

.about-left {
  display: flex;
  flex-direction: column;
  gap: 20px;
}

.bodoni-title {
  font-size: 3rem;
  font-family: "itc-bodoni-seventytwo-pro", serif;
  font-weight: 300;
  letter-spacing: 0.02em;
  margin: 0 0 32px 0; /* Systems for ~ 와 아래 본문 사이 간격 */
}

.about-layout {
  display: flex;
  flex-direction: column; /* ← 세로로: 위에 본문, 아래에 메타 */
  gap: 24px;
  align-items: stretch;
}

.about-text {
  font-size: 0.96rem;
  line-height: 1.8;
  color: #ffffff;
  font-family: "Sweet", "Noto Sans KR", sans-serif;
  font-weight: 300;
  margin-bottom: 0px; /* 60px → 80px 로 늘리기 */
}

.about-text br {
  line-height: 0.6; /* 줄바꿈 시 여백 확보 */
}

.about-right {
  position: relative;
  height: 100%; /* ← JS로 높이 넣어줄 때 필요 */
  overflow: hidden;
  background: #000000;
}

#aboutCanvas {
  width: 100%;
  height: 100%; /* 부모(.about-right)의 높이를 그대로 */
  display: block;
}

.about-main {
  flex: 2 1 320px; /* 본문이 넓게 */
}

.about-meta {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px 32px;
  margin-top: 60px; /* 위 텍스트/비주얼과 간격 */
}

.about-meta-block {
  border-top: 0.1px solid#ffffff;
  padding-top: 10px;
}

.about-meta-label {
  font-size: 0.8rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--text-soft);
  margin-bottom: 12px;
  font-weight: 600;
}

.about-meta-text {
  font-family: "Sweet", "Noto Sans KR", sans-serif;
  font-size: 0.9rem;
  line-height: 1.7;
  color: #dddddd;
}

.advisor-line {
  font-size: 0.85em;
  opacity: 0.7;
  font-weight: 300;
  display: block;
  margin-bottom: 8px; /* 각 학위 블록 사이 간격 */
}

.about-meta-text br {
  line-height: 1.2;
}

.about-meta-text .meta-entry {
  margin-bottom: 8px; /* advisor-line이 주던 여백과 맞추기 */
}

.about-meta-text .meta-entry:last-child {
  margin-bottom: 0; /* 마지막 덩어리는 여백 제거 */
}

/* ==========================
   CAPABILITIES
========================== */

/* 제목 아래 여백 조금 더 넓게 */
.panel--caps .panel-title {
  margin-bottom: 96px; /* 80 → 96 */
}

/* 전체 그리드 행 간격 넉넉하게 */
.caps-grid {
  display: flex;
  flex-direction: column;
  gap: 40px; /* 28 → 40: 각 cap-row 사이 간격 */
  width: 100%;
  margin-top: 20px;
}

/* 한 행(왼·오 2개) 배치 */
.cap-row {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  column-gap: 64px; /* 48 → 64: 좌우 아이템 간 간격 */
  row-gap: 24px; /* 0 → 24: 같은 행 안에서도 위아래 여유 */
  border-top: none;
  padding-top: 0;
}

/* 각 아이템 안쪽 여백 & 위 라인 */
.cap-item {
  background: transparent;
  border: none;
  border-top: 0.1px solid #ffffff;
  padding-top: 9px; /* 12 → 16: 제목 위쪽 여백 */
  padding-bottom: 8px; /* 아래도 살짝 여유 */
}

.cap-title {
  font-size: 0.96rem;
  color: #ffffff;
  font-weight: 500;
  margin-bottom: 6px; /* 4 → 6: 제목과 본문 사이 살짝 더 */
}

.cap-body {
  font-size: 0.88rem;
  color: #dddddd;
  line-height: 1.6; /* 1.7 → 1.8: 줄간격도 약간 넓게 */
}

/* ==========================
   SECTION TITLE FONT OVERRIDES
========================== */

.panel--caps .cap-title,
.panel--teach .teach-title {
  font-family: "futura-pt", "Noto Sans KR", sans-serif;
}

/* ==========================
   TIMELINE
========================== */

.timeline-link,
.timeline-link:visited,
.timeline-link:hover,
.timeline-link:active {
  display: block;
  color: inherit;
  text-decoration: none;
}

.timeline {
  position: relative;
  margin-top: 18px;
  padding-left: 28px;
}

.timeline-line {
  position: absolute;
  left: 8px;
  top: -4px; /* 🔥 0이나 9 말고, 프레임과 똑같이 -4로 */
  bottom: -4px; /* 프레임 bottom과 동일 */
  width: 1px;
  background: #ffffff;
}

.timeline-item {
  padding-top: 24px; /* 기존보다 위로 여유 */
  padding-bottom: 32px; /* 아래 여유 */
  margin-bottom: 24px; /* 항목 간 간격 확장 */
}
.timeline-dot {
  position: absolute;
  left: -1px;
  top: 3px;
  width: 10px;
  height: 10px;
  background: var(--accent);
  border-radius: 50%;
}

.timeline-content {
  padding-left: 16px;
}

.timeline-title {
  font-size: 1.05rem;
  font-weight: 500;
  margin-bottom: 4px;
  color: #ffffff;
  font-family: "futura-pt", "Noto Sans KR", sans-serif; /* ★ 이 줄 추가 */
  letter-spacing: 0.03em; /* 선택: 살짝 자간 주고 싶으면 */
}

.timeline-meta {
  font-size: 0.78rem;
  color: var(--text-soft);
  margin-bottom: 6px;
}

/* Works 메타 타입 (VR Game, Art Game 등) 강조 */
.timeline-meta strong {
  font-weight: 500;
  font-family: "futura-pt", "Noto Sans KR", sans-serif;
}

.timeline-body {
  font-size: 0.9rem;
  color: #dddddd;
  line-height: 1.7;
  margin-top: 16px;
}

.timeline-header {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto; /* 왼쪽 텍스트 / 오른쪽 썸네일 */
  gap: 16px;
  align-items: flex-start;
  margin-bottom: 6px;
}

.timeline-year {
  font-size: 0.78rem;
  color: var(--text-soft);
  letter-spacing: 0.16em;
  text-transform: uppercase;
  margin-top: 0; /* 🔥 -2px → 0 */
  margin-bottom: 4px; /* 살짝만 아래 여백 */
}

.timeline-thumbs {
  width: 140px; /* 썸네일 가로 크기 (원하면 120~160 사이 조절) */
  aspect-ratio: 1 / 1; /* 🔥 정사각형 비율 */
  flex-shrink: 0;
}

.timeline-thumbs img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover; /* 비율 잘라서 꽉 채우기 */
  border: none;
  border-radius: 0;
}

.timeline-link {
  position: relative;
  display: block;
  cursor: pointer;

  /* 레이아웃 깨뜨리던 거 제거 */
  margin-top: 0;
  padding: 0;
  border: none;
}

.timeline-link::before {
  content: "";
  position: absolute;

  left: -4px; /* 🔥 동그라미 가장 왼쪽과 정렬 */
  right: 0;
  top: -5px;
  bottom: -4px;

  border-top: 1px solid transparent;
  border-bottom: 1px solid transparent;
  pointer-events: none;
}

.timeline-link:hover::before {
  border-top-color: #555;
  border-bottom-color: #555;
}

/* 공통 스타일 유지 */
.timeline-link,
.timeline-link:visited,
.timeline-link:hover,
.timeline-link:active,
.timeline-link:focus {
  text-decoration: none !important;
  outline: none !important;
  color: inherit;
}

.timeline-link * {
  text-decoration: none !important;
}

.timeline-link:hover .timeline-dot {
  transform: scale(1.02);
}

/* ==========================
   PROJECT DETAIL PAGE
========================== */

.project-page {
  background: #000000;
  color: #ffffff;
  font-family: "Sweet", "Noto Sans KR", system-ui, sans-serif;
}

/* 제목 블록 위/아래 여백 */
.project-header {
  max-width: 960px;
  margin: 140px auto 56px; /* 상단에서 떨어뜨리고, 아래도 여유 */
  padding: 0 28px;
}

/* 각 섹션 사이 간격 넉넉하게 */
.project-section {
  max-width: 960px;
  margin: 56px auto 0; /* 위 섹션과 56px 정도 띄우기 */
  padding: 0 28px;
}

/* 섹션끼리 시각적으로도 구분하고 싶으면 */
.project-section + .project-section {
  margin-top: 64px; /* 이후 섹션은 더 여유 */
  border-top: 1px solid #333333;
  padding-top: 28px;
}

/* 히어로 이미지도 조금 여유 있게 */
.project-hero {
  max-width: 960px;
  margin: 0 auto 40px;
  padding: 0 28px;
}
.project-hero-img {
  width: 100%;
  display: block;
}

/* ==========================
   AI HIGHLIGHT
========================== */

.ai-layout {
  display: grid;
  grid-template-columns: 1.4fr 1fr;
  gap: 24px;
}

.ai-subtitle {
  font-size: 1rem;
  margin-bottom: 8px;
  font-weight: 500;
  color: #ffffff;
}

.ai-text {
  font-size: 0.9rem;
  color: #dddddd;
  line-height: 1.8;
  margin-bottom: 8px;
}

.ai-list {
  font-size: 0.9rem;
  color: #dddddd;
  padding-left: 18px;
}

.ai-list li + li {
  margin-top: 4px;
}

.ai-box {
  background: #050505;
  border-radius: 18px;
  border: 1px solid #333333;
  padding: 16px;
}

.ai-diagram-title {
  font-size: 0.85rem;
  letter-spacing: 0.18em;
  color: var(--text-soft);
  text-transform: uppercase;
  margin-bottom: 10px;
}

.ai-diagram {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  align-items: center;
}

.ai-node {
  padding: 6px 10px;
  border-radius: 999px;
  border: 1px solid #555555;
  background: transparent;
  color: #ffffff;
}

.ai-arrow {
  font-size: 0.75rem;
  color: var(--accent);
}

.ai-diagram-caption {
  font-size: 0.78rem;
  color: #aaaaaa;
  margin-top: 10px;
}

/* ==========================
   TEACHING
========================== */

.teach-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 18px;
}

.teach-card {
  border-top: 1px solid #333333;
  padding-top: 10px;
  padding-right: 4px;
  transition: background 0.16s ease, border-color 0.16s ease;
}

.teach-card:hover {
  background: #111111;
  border-color: var(--accent);
}

.teach-title {
  font-size: 0.96rem;
  font-weight: 500;
  margin-bottom: 4px;
  color: #ffffff;
}

.teach-meta {
  font-size: 0.8rem;
  color: var(--text-soft);
  margin-bottom: 4px;
}

.teach-body {
  font-size: 0.86rem;
  color: #dddddd;
  line-height: 1.7;
}

/* ==========================
   CONTACT
========================== */

.panel--contact .panel-inner {
  text-align: left;
}

.contact-text {
  font-size: 0.96rem;
  color: #ffffff;
  line-height: 1.8;
  margin-bottom: 3px;
  font-family: "Sweet", "Noto Sans KR", sans-serif;
  font-weight: 100; /* ★ 얇게 */
}

.contact-text a {
  color: var(--accent);
}

.contact-text a:hover {
  text-decoration: underline;
}

.contact-foot {
  font-size: 0.76rem;
  color: var(--text-soft);
  margin-top: 24px;
}

.icon-row {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 2px;
}

.icon {
  width: 16px;
  height: 16px;
  opacity: 0.75;
  color: #ffffff;
  flex-shrink: 0;
  margin-top: 0px; /* baseline 맞추기 */
}

.contact-text a {
  color: var(--accent);
  font-weight: 300; /* 얇은 한글 유지 */
}

/* ==========================
   RESPONSIVE
========================== */

@media (max-width: 880px) {
  /* Capabilities: 모바일에서는 6개가 모두 같은 간격으로 세로 나열되게 */

  .caps-grid {
    display: block; /* flex → block처럼, cap-row의 영향 줄이기 */
    margin-top: 20px;
  }

  .cap-row {
    display: block; /* 행 개념 없애기 */
    margin: 0; /* 사이 간격 없음 */
    padding: 0;
  }

  .cap-item {
    border-top: 0.1px solid #ffffff;
    padding-top: 10px;
    padding-bottom: 8px;
    margin-top: 20px; /* ★ 모든 항목 사이 동일 간격 */
  }

  .cap-item:first-child {
    margin-top: 0; /* 맨 첫 번째만 위 여백 제거 */
  }

  /* 기존 내용 유지 */
  .about-meta {
    grid-template-columns: 1fr 1fr;
  }
  .about-shell {
    grid-template-columns: minmax(0, 1fr);
    gap: 24px;
  }
  .about-right {
    min-height: 260px;
  }
  .nav {
    flex-direction: column;
    align-items: flex-start;
    gap: 4px;
    padding: 12px 16px 6px;
  }
  .nav-right {
    display: flex;
    flex-direction: row;
    flex-wrap: nowrap !important;
    white-space: nowrap !important;
    overflow-x: auto;
    gap: 24px;
    width: 100%;
    -webkit-overflow-scrolling: touch;
  }
  .nav-right a {
    flex-shrink: 0 !important;
  }
  .nav-right::-webkit-scrollbar {
    display: none;
  }
  .panel {
    padding: 120px 12px 72px;
  }
  .panel-inner {
    border-radius: 18px;
    padding: 26px 20px 30px;
  }
  .intro-title {
    font-size: 2.6rem;
  }
  .ai-layout {
    grid-template-columns: 1fr;
  }
  .about-layout {
    flex-direction: column;
    gap: 24px;
  }
  .about-meta {
    width: 100%;
  }
}

@media (max-width: 720px) {
  .about-meta {
    grid-template-columns: 1fr; /* 모바일에서는 1단 */
  }

  /* 🔽 Works (Timeline) 모바일 정리용 🔽 */

  /* 타임라인 왼쪽 세로선/점 없애기 */
  .timeline {
    padding-left: 0;
  }

  .timeline-line,
  .timeline-dot {
    display: none;
  }

  .timeline-content {
    padding-left: 0;
  }

  /* 헤더: 텍스트 위, 이미지 아래로 1열 정렬 */
  .timeline-header {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 8px;
    margin-bottom: 6px;
  }

  .timeline-thumbs {
    width: 100%;
    margin-top: 4px;
  }

  /* 모바일에서는 호버용 위/아래 선도 제거 (겹침 방지) */
  .timeline-link::before {
    display: none;
  }

  /* 🔼 Works (Timeline) 모바일 정리용 끝 🔼 */
}

@media (max-width: 560px) {
  .nav {
    top: 0; /* 위에 딱 붙이기 */
    padding: 10px 14px 6px; /* 위 여백만 조금 */
  }

  /* 모바일에서는 더 얇게 */
  .nav::before {
    height: 88px;
  }

  .panel {
    padding: 110px 10px 60px;
  }

  .intro-title {
    font-size: 3.6rem;
    line-height: 1.15;
  }
}
