/*
 * DevWorld 공용 상단바(GNB) 스타일 — gnb.js 와 한 벌이다. 사용법은 gnb.js 머리말.
 *
 * 홈페이지가 Tailwind 로 그리던 상단바를 그대로 옮겼다(높이 80px · blue-600 · lg=1024px).
 * 다른 레포의 화면에도 얹히므로 Tailwind 에 기대지 않고, 모든 규칙을 .dw-gnb / #dw-gnb 아래에 가둔다.
 * 글꼴은 홈페이지에서는 서브셋 Noto Sans KR 을 쓰고, 그것이 없는 화면에서는 시스템 글꼴로 내려간다.
 */
/* 상단바 높이. 자기 화면에 sticky 요소가 있는 서비스는 top: var(--dw-gnb-height, 0px) 로 그 밑에 붙인다 —
   이 파일을 못 불러왔을 때는 0 으로 떨어져 빈틈이 생기지 않는다. */
:root { --dw-gnb-height: 80px; }
#dw-gnb { height: var(--dw-gnb-height); }
#dw-gnb[data-overlay] { height: 0; }

.dw-gnb, .dw-gnb *, .dw-gnb *::before, .dw-gnb *::after { box-sizing: border-box; }
/* 얹히는 화면의 전역 규칙을 막는다. 앱 문서 styles.css 의 `nav { display: flex; gap: 20px; min-height: 72px }` 가
   이 <nav> 에 걸려 바가 줄어들었다(2026-10-02 실측). 다른 레포 화면에도 nav·a 전역 규칙이 있을 수 있다. */
.dw-gnb {
  display: block; min-height: 0; gap: 0; margin: 0; padding: 0;
  position: fixed; top: 0; left: 0; right: 0; z-index: 1000;
  background: rgba(255, 255, 255, .9);
  -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px);
  box-shadow: 0 1px 2px 0 rgba(0, 0, 0, .05);
  font-family: "Noto Sans KR", -apple-system, BlinkMacSystemFont, "Apple SD Gothic Neo", "Malgun Gothic", "Segoe UI", sans-serif;
  font-size: 16px; line-height: 1.5; color: #1f2937; text-align: left;
  -webkit-font-smoothing: antialiased;
}
.dw-gnb a, .dw-gnb a:hover { text-decoration: none; }
.dw-gnb button { font: inherit; background: none; border: 0; margin: 0; cursor: pointer; }
.dw-gnb p { margin: 0; }
.dw-gnb [hidden] { display: none !important; }

.dw-gnb-bar {
  max-width: 1280px; margin: 0 auto; height: var(--dw-gnb-height); padding: 0 16px;
  display: flex; align-items: center; justify-content: space-between;
}
@media (min-width: 640px) { .dw-gnb-bar { padding: 0 24px; } }
@media (min-width: 1024px) { .dw-gnb-bar { padding: 0 32px; } }

.dw-gnb-logo { font-weight: 900; font-size: 24px; line-height: 32px; letter-spacing: -.05em; color: #1d4ed8; flex-shrink: 0; }
.dw-gnb-logo span { color: #1e293b; }

/* ── 데스크톱 ─────────────────────────────────────────────────────── */
.dw-gnb-desktop { display: none; margin-left: 24px; align-items: center; gap: 8px; white-space: nowrap; }
@media (min-width: 1024px) { .dw-gnb-desktop { display: flex; } }
/* xl 간격은 원래 32px(Tailwind space-x-8)였지만 메뉴가 10칸이 되면서 1280px 에서 32px 넘쳤다(2026-10-02 실측). */
@media (min-width: 1280px) { .dw-gnb-desktop { margin-left: 40px; gap: 24px; } }

.dw-gnb-link {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 8px 12px; border-radius: 6px;
  font-size: 14px; line-height: 20px; font-weight: 500; color: inherit;
  transition: color .15s;
}
.dw-gnb-link:hover { color: #2563eb; }
.dw-gnb-link.is-active { color: #2563eb; font-weight: 700; }
.dw-gnb-chevron { width: 16px; height: 16px; }

.dw-gnb-dropdown { position: relative; }
.dw-gnb-menu { position: absolute; left: 0; top: 100%; padding-top: 8px; width: 288px; white-space: normal; }
.dw-gnb-card { background: #fff; border: 1px solid #f3f4f6; border-radius: 12px; padding: 8px; box-shadow: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -4px rgba(0, 0, 0, .1); }
.dw-gnb-item { display: block; padding: 8px 12px; border-radius: 8px; }
.dw-gnb-item:hover { background: #f9fafb; }
.dw-gnb-item-title { display: block; font-size: 14px; line-height: 20px; font-weight: 700; color: #111827; }
.dw-gnb-item:hover .dw-gnb-item-title, .dw-gnb-item.is-active .dw-gnb-item-title { color: #2563eb; }
.dw-gnb-item-desc { display: block; margin-top: 2px; font-size: 12px; line-height: 16px; font-weight: 400; color: #6b7280; }

.dw-gnb-cta {
  padding: 8px 16px; border-radius: 6px; background: #2563eb; color: #fff !important;
  font-size: 14px; line-height: 20px; font-weight: 700;
  box-shadow: 0 10px 15px -3px rgba(59, 130, 246, .3), 0 4px 6px -4px rgba(59, 130, 246, .3);
  transition: background-color .15s;
}
.dw-gnb-cta:hover { background: #1d4ed8; }
/* 1024~1279px 에서는 메뉴 10칸이 한 줄에 겨우 들어간다. Noto Sans KR 이 로드된 뒤 기준으로 1024px 에서
   Contact Us 가 오른쪽으로 넘쳐 잘렸다("게임" 드롭다운 추가 후, 2026-10-02 실측) — 이 구간만 좌우 여백을 줄인다.
   메뉴를 늘리면 1024px 에서 .dw-gnb-desktop 의 오른쪽 끝이 .dw-gnb-bar 안에 있는지 다시 잴 것. */
@media (min-width: 1024px) and (max-width: 1279.98px) {
  .dw-gnb-link { padding-left: 8px; padding-right: 8px; }
  .dw-gnb-cta { padding-left: 12px; padding-right: 12px; }
}

/* ── 모바일 ───────────────────────────────────────────────────────── */
.dw-gnb-burger { display: inline-flex; align-items: center; justify-content: center; padding: 8px; margin-right: -8px; border-radius: 6px; color: #374151; }
.dw-gnb-burger:hover { color: #2563eb; }
@media (min-width: 1024px) { .dw-gnb-burger, .dw-gnb-mobile { display: none !important; } }

.dw-gnb-mobile {
  background: #fff; border-top: 1px solid #e5e7eb; padding: 8px 8px 12px;
  max-height: calc(100vh - var(--dw-gnb-height)); overflow-y: auto;
}
@media (min-width: 640px) { .dw-gnb-mobile { padding-left: 12px; padding-right: 12px; } }
.dw-gnb-mobile > * + * { margin-top: 4px; }
.dw-gnb-m-link { display: block; padding: 8px 12px; border-radius: 6px; font-size: 16px; line-height: 24px; font-weight: 500; color: inherit; }
.dw-gnb-m-link:hover, .dw-gnb-m-item:hover { background: #f9fafb; color: #2563eb; }
.dw-gnb-m-link.is-active, .dw-gnb-m-link.is-cta { color: #2563eb; font-weight: 700; }
.dw-gnb-m-group { padding: 12px 12px 4px; font-size: 12px; line-height: 16px; font-weight: 700; letter-spacing: .05em; color: #9ca3af; }
.dw-gnb-m-item { display: block; padding: 8px 12px 8px 24px; border-radius: 6px; color: inherit; }
.dw-gnb-m-item.is-active { color: #2563eb; }
.dw-gnb-m-item-title { display: block; font-size: 16px; line-height: 24px; font-weight: 500; }

@media print { #dw-gnb { display: none !important; } }
