@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&family=Outfit:wght@400;600;700;800;900&family=JetBrains+Mono:wght@400;500;700&display=swap');

/* =========================================================
   1. 테마 토큰 정의 (Dark Tactical C4I ⟷ Light Enterprise GIS)
   ========================================================= */

:root, [data-theme="dark"] {
  /* 다크 전술 작전 모드 (Cyber Stealth Tactical Command) */
  --bg-primary: #05080f;
  --bg-surface: #0a111e;
  --bg-glass: rgba(10, 17, 30, 0.82);
  --bg-glass-hover: rgba(16, 27, 48, 0.94);
  --header-bg: rgba(5, 8, 15, 0.90);
  --footer-bg: #03060a;

  --border-glow: rgba(0, 229, 255, 0.32);
  --border-subtle: rgba(255, 255, 255, 0.08);
  --card-border-hover: #00e5ff;
  --card-shadow: 0 16px 40px rgba(0, 0, 0, 0.6), 0 0 20px rgba(0, 229, 255, 0.08);

  --primary-cyan: #00e5ff;
  --primary-blue: #0070f3;
  --accent-gold: #ffb703;
  --hero-title-gradient: linear-gradient(135deg, #00e5ff 0%, #3a86ff 100%);
  --btn-primary-gradient: linear-gradient(135deg, #00e5ff 0%, #0070f3 100%);
  --btn-primary-shadow: 0 6px 20px rgba(0, 229, 255, 0.4);

  --text-main: #f0f6fc;
  --text-muted: #8b9bb4;
  --text-heading: #ffffff;

  --hero-visual-opacity: 0.92;
  --body-pattern: radial-gradient(circle at 10% 20%, rgba(0, 229, 255, 0.05) 0%, transparent 40%),
                  radial-gradient(circle at 90% 80%, rgba(0, 112, 243, 0.06) 0%, transparent 50%),
                  linear-gradient(rgba(0, 229, 255, 0.02) 1px, transparent 1px),
                  linear-gradient(90deg, rgba(0, 229, 255, 0.02) 1px, transparent 1px);
  --body-pattern-size: 100% 100%, 100% 100%, 48px 48px, 48px 48px;

  --modal-bg: #0b1320;
  --modal-overlay: rgba(3, 5, 10, 0.88);
  --input-bg: #050912;
  --input-text: #ffffff;
  --code-box-bg: #030508;
  --code-box-text: #67e8f9;
  --code-box-border: rgba(0, 229, 255, 0.25);

  --switch-bg: rgba(14, 23, 38, 0.9);
  --switch-border: rgba(0, 229, 255, 0.35);
  --switch-slider: rgba(0, 229, 255, 0.18);
  --switch-slider-border: #00e5ff;
  --switch-active-text: #00e5ff;
  --pill-bg: rgba(0, 229, 255, 0.12);
}

[data-theme="light"] {
  /* 라이트 엔터프라이즈 실무 모드 (Enterprise GIS Office Suite) */
  --bg-primary: #f8fafc;
  --bg-surface: #ffffff;
  --bg-glass: rgba(255, 255, 255, 0.95);
  --bg-glass-hover: #ffffff;
  --header-bg: #ffffff;
  --footer-bg: #f1f5f9;

  --border-glow: rgba(203, 213, 225, 0.8);
  --border-subtle: #e2e8f0;
  --card-border-hover: #0284c7;
  --card-shadow: 0 4px 16px rgba(15, 23, 42, 0.05), 0 1px 3px rgba(0, 0, 0, 0.04);

  --primary-cyan: #0284c7;
  --primary-blue: #1e40af;
  --accent-gold: #d97706;
  --hero-title-gradient: linear-gradient(135deg, #0f172a 0%, #1e40af 100%);
  --btn-primary-gradient: linear-gradient(135deg, #0284c7 0%, #1d4ed8 100%);
  --btn-primary-shadow: 0 4px 12px rgba(2, 132, 199, 0.3);

  --text-main: #334155;
  --text-muted: #64748b;
  --text-heading: #0f172a;

  --hero-visual-opacity: 1;
  --body-pattern: linear-gradient(to right, #f1f5f9 1px, transparent 1px),
                  linear-gradient(to bottom, #f1f5f9 1px, transparent 1px);
  --body-pattern-size: 32px 32px;

  --modal-bg: #ffffff;
  --modal-overlay: rgba(15, 23, 42, 0.6);
  --input-bg: #f8fafc;
  --input-text: #0f172a;
  --code-box-bg: #f8fafc;
  --code-box-text: #0f172a;
  --code-box-border: #cbd5e1;

  --switch-bg: #e2e8f0;
  --switch-border: #cbd5e1;
  --switch-slider: #ffffff;
  --switch-slider-border: #93c5fd;
  --switch-active-text: #1d4ed8;
  --pill-bg: #eff6ff;
}

/* =========================================================
   2. 전역 뷰 스위칭 (다크 전술 ⟷ 라이트 실무 완전 분리)
   ========================================================= */

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

body {
  background-color: var(--bg-primary);
  background-image: var(--body-pattern);
  background-size: var(--body-pattern-size);
  color: var(--text-main);
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
  line-height: 1.6;
  overflow-x: hidden;
  position: relative;
  transition: background-color 0.3s ease, color 0.3s ease;
}

/* 뷰 분리 메커니즘 */
[data-theme="dark"] .light-only {
  display: none !important;
}

[data-theme="dark"] .dark-only {
  display: block;
}

[data-theme="dark"] ul.nav-links.dark-only {
  display: flex !important;
}

[data-theme="light"] .dark-only {
  display: none !important;
}

[data-theme="light"] .light-only {
  display: block;
}

[data-theme="light"] ul.nav-links.light-only {
  display: flex !important;
}

/* 게스트 액션 (로그인/회원가입 버튼 그룹) 기본 스타일 */
.nav-guest-actions {
  display: flex;
  align-items: center;
  gap: 0.4rem;
}

/* 관리자 페이지(관리 HOME)에서는 로그인 / 회원가입 버튼 완전 은닉 */
[data-theme="light"] #nav-guest-actions,
[data-theme="light"] .nav-guest-actions,
[data-theme="light"] .nav-actions .nav-guest-actions {
  display: none !important;
  visibility: hidden !important;
  opacity: 0 !important;
  pointer-events: none !important;
}

/* 배경 텔레메트리 캔버스 (다크 모드 전용) */
#telemetry-canvas {
  position: fixed;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
  pointer-events: none;
  z-index: 0;
}

/* =========================================================
   3. 상단 네비게이션 헤더 (1줄 고정 정렬)
   ========================================================= */

.site-header {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  padding: 0.55rem clamp(0.8rem, 1.8vw, 2.2rem);
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: nowrap !important;
  gap: clamp(0.5rem, 1vw, 1.2rem);
  z-index: 100;
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
  background: var(--header-bg);
  border-bottom: 1px solid var(--border-glow);
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.06);
  box-sizing: border-box;
  transition: padding 0.25s ease, background 0.3s ease;
}

.site-header.scrolled {
  padding: 0.45rem clamp(0.8rem, 1.8vw, 2.2rem);
  box-shadow: 0 4px 18px rgba(0, 0, 0, 0.12);
}

.brand-container {
  display: flex;
  align-items: center;
  gap: 0.65rem;
  text-decoration: none;
  flex-shrink: 0;
  width: 260px;
  min-width: 260px; /* Satellite Control Unit 전체 수용 고정 슬롯으로 메뉴 밀림 원천 방지 */
}

.brand-logo {
  width: 36px;
  height: 36px;
  border-radius: 8px;
  object-fit: contain;
  background: rgba(11, 19, 36, 0.85);
  border: 1px solid var(--border-glow);
  box-shadow: 0 0 14px rgba(0, 229, 255, 0.2);
  flex-shrink: 0;
  padding: 2px;
  box-sizing: border-box;
}

[data-theme="light"] .brand-logo {
  background: #ffffff;
  border-color: rgba(2, 132, 199, 0.4);
  box-shadow: 0 2px 8px rgba(2, 132, 199, 0.15);
}

.scu-emblem-logo {
  width: 38px;
  height: 38px;
  border-radius: 9px;
  background: radial-gradient(circle at center, rgba(14, 42, 74, 0.95), rgba(7, 19, 38, 0.98));
  border: 1px solid rgba(0, 229, 255, 0.45);
  box-shadow: 0 0 16px rgba(0, 229, 255, 0.35);
  padding: 3px;
  box-sizing: border-box;
  transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1), box-shadow 0.3s ease;
}

.brand-container:hover .scu-emblem-logo {
  transform: rotate(6deg) scale(1.08);
  box-shadow: 0 0 22px rgba(0, 229, 255, 0.6);
}

[data-theme="light"] .scu-emblem-logo {
  background: #f0f9ff;
  border-color: rgba(2, 132, 199, 0.5);
  box-shadow: 0 2px 10px rgba(2, 132, 199, 0.2);
}

.scu-brand-title {
  display: flex;
  align-items: center;
  gap: 0.45rem;
  line-height: 1.2;
  min-width: 195px; /* 타이포그래피 슬롯 너비 안정화 */
}

.scu-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-family: 'JetBrains Mono', monospace;
  font-size: 0.68rem;
  font-weight: 800;
  padding: 1.5px 5.5px;
  border-radius: 3px;
  background: rgba(0, 229, 255, 0.16);
  border: 1px solid rgba(0, 229, 255, 0.45);
  color: #00e5ff;
  letter-spacing: 0.8px;
  line-height: 1;
}

[data-theme="light"] .scu-badge {
  background: rgba(2, 132, 199, 0.12);
  border-color: rgba(2, 132, 199, 0.4);
  color: #0284c7;
}

.scu-dynamic-title {
  font-family: 'Outfit', 'Pretendard', sans-serif;
  font-size: clamp(1.05rem, 1.2vw, 1.25rem);
  font-weight: 800;
  letter-spacing: 0.3px;
  background: var(--hero-title-gradient);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  white-space: nowrap;
  display: inline-block;
  cursor: pointer;
  position: relative;
  line-height: 1.2;
  will-change: opacity, transform;
}

.scu-ticker-inner {
  display: inline-block;
  transition: opacity 0.26s cubic-bezier(0.16, 1, 0.3, 1), transform 0.26s cubic-bezier(0.16, 1, 0.3, 1), filter 0.26s ease;
  will-change: opacity, transform, filter;
}

.scu-dynamic-title.morphing-out .scu-ticker-inner {
  opacity: 0;
  transform: translateY(-6px);
  filter: blur(2px);
}

.scu-dynamic-title.morphing-in .scu-ticker-inner {
  opacity: 0;
  transform: translateY(6px);
  filter: blur(2px);
}

.brand-text h1 {
  font-family: 'Outfit', sans-serif;
  font-size: clamp(1.05rem, 1.2vw, 1.25rem);
  font-weight: 800;
  letter-spacing: 0.3px;
  background: var(--hero-title-gradient);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  white-space: nowrap;
  line-height: 1.15;
}

.brand-text p {
  font-size: 0.65rem;
  color: var(--text-muted);
  letter-spacing: 0.4px;
  white-space: nowrap;
}

.brand-sub-project {
  font-family: 'JetBrains Mono', 'Outfit', monospace;
  font-size: 0.68rem;
  font-weight: 600;
  color: #38bdf8;
  letter-spacing: 0.8px;
  white-space: nowrap;
  opacity: 0.9;
}

[data-theme="light"] .brand-sub-project {
  color: #0284c7;
}

.nav-links {
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  align-items: center;
  gap: clamp(0.9rem, 1.6vw, 1.8rem);
  list-style: none;
  margin: 0;
  padding: 0;
  z-index: 5;
  pointer-events: auto;
}

.nav-links a {
  color: var(--text-muted);
  text-decoration: none;
  font-size: clamp(0.8rem, 0.9vw, 0.88rem);
  font-weight: 500;
  white-space: nowrap;
  transition: color 0.2s ease;
}

.nav-links a:hover {
  color: var(--primary-cyan);
}

.nav-actions {
  display: flex;
  align-items: center;
  gap: clamp(0.35rem, 0.6vw, 0.65rem);
  flex-shrink: 0;
}

.btn-ghost {
  background: transparent;
  color: var(--text-main);
  border: 1px solid var(--border-subtle);
  padding: 0.38rem 0.72rem;
  border-radius: 6px;
  font-size: 0.8rem;
  font-weight: 600;
  white-space: nowrap;
  cursor: pointer;
  transition: all 0.2s ease;
}

.btn-ghost:hover {
  border-color: var(--primary-cyan);
  color: var(--primary-cyan);
  background: rgba(0, 229, 255, 0.08);
}

[data-theme="light"] .btn-ghost:hover {
  background: #f1f5f9;
  border-color: #94a3b8;
  color: #0f172a;
}

/* 전술 시스템 런치 버튼 공통 스타일 (사이버 네온 & 메탈릭 그라데이션) */
.btn-launch {
  background: linear-gradient(135deg, #00f0ff 0%, #00b4d8 50%, #0077b6 100%) !important;
  color: #031726 !important;
  border: 1px solid rgba(0, 240, 255, 0.8) !important;
  padding: 0.38rem 0.85rem;
  border-radius: 6px;
  font-size: 0.82rem;
  font-weight: 750;
  white-space: nowrap;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 0.42rem;
  box-shadow: 0 2px 10px rgba(0, 229, 255, 0.35), inset 0 1px 0 rgba(255, 255, 255, 0.4) !important;
  transition: all 0.25s cubic-bezier(0.16, 1, 0.3, 1);
  flex-shrink: 0;
  text-decoration: none !important;
}

.btn-launch svg {
  stroke: #031726 !important;
  stroke-width: 2.3 !important;
  transition: transform 0.2s ease;
}

.btn-launch:hover {
  background: linear-gradient(135deg, #5ef7ff 0%, #00d4ff 50%, #0096c7 100%) !important;
  color: #020f1a !important;
  box-shadow: 0 0 18px rgba(0, 229, 255, 0.65), inset 0 1px 0 rgba(255, 255, 255, 0.6) !important;
}

.btn-launch:hover svg {
  transform: scale(1.1);
}

[data-theme="light"] .btn-launch {
  background: linear-gradient(135deg, #0284c7 0%, #0369a1 100%) !important;
  border-color: #0284c7 !important;
  box-shadow: 0 2px 8px rgba(2, 132, 199, 0.28) !important;
  color: #ffffff !important;
}

[data-theme="light"] .btn-launch svg {
  stroke: #ffffff !important;
}

/* 교육체계 루미너스 에메랄드 그린 그라데이션 버튼 (SCU LMS 아카데미) */
.btn-launch-education {
  background: linear-gradient(135deg, #00ff87 0%, #10b981 50%, #059669 100%) !important;
  border: 1px solid rgba(0, 255, 135, 0.85) !important;
  color: #022416 !important;
  box-shadow: 0 2px 10px rgba(16, 185, 129, 0.4), inset 0 1px 0 rgba(255, 255, 255, 0.45) !important;
  font-weight: 750 !important;
}

.btn-launch-education svg {
  stroke: #022416 !important;
  stroke-width: 2.3 !important;
  transition: transform 0.2s ease;
}

.btn-launch-education:hover {
  background: linear-gradient(135deg, #4efdb0 0%, #34d399 50%, #059669 100%) !important;
  border-color: #4efdb0 !important;
  box-shadow: 0 0 18px rgba(0, 255, 135, 0.7), inset 0 1px 0 rgba(255, 255, 255, 0.65) !important;
  color: #01180e !important;
}

.btn-launch-education:hover svg {
  transform: scale(1.12);
}

[data-theme="light"] .btn-launch-education {
  background: linear-gradient(135deg, #059669 0%, #047857 100%) !important;
  border-color: rgba(5, 150, 105, 0.5) !important;
  box-shadow: 0 2px 8px rgba(5, 150, 105, 0.3) !important;
  color: #ffffff !important;
}

[data-theme="light"] .btn-launch-education svg {
  stroke: #ffffff !important;
}

/* 훈련체계 앰버 골드 그라데이션 버튼 (SPACEOPS MCS 통합관제 시뮬레이터 선택화면) */
.btn-launch-training {
  background: linear-gradient(135deg, #fbbf24 0%, #f59e0b 55%, #d97706 100%) !important;
  border: 1px solid rgba(251, 191, 36, 0.9) !important;
  color: #271202 !important;
  box-shadow: 0 2px 10px rgba(245, 158, 11, 0.42), inset 0 1px 0 rgba(255, 255, 255, 0.5) !important;
  font-weight: 750 !important;
}

.btn-launch-training svg {
  stroke: #271202 !important;
  stroke-width: 2.3 !important;
  transition: transform 0.2s ease;
}

.btn-launch-training:hover {
  background: linear-gradient(135deg, #fde047 0%, #fbbf24 50%, #f59e0b 100%) !important;
  border-color: #fde047 !important;
  box-shadow: 0 0 18px rgba(251, 191, 36, 0.72), inset 0 1px 0 rgba(255, 255, 255, 0.7) !important;
  color: #1c0c00 !important;
}

.btn-launch:active,
.btn-launch.is-launching,
.btn-launch-education:active,
.btn-launch-education.is-launching,
.btn-launch-training:active,
.btn-launch-training.is-launching {
  transform: scale(0.97) !important;
  filter: brightness(1.12);
}

.btn-launch-training:hover svg {
  transform: scale(1.12);
}

[data-theme="light"] .btn-launch-training {
  background: linear-gradient(135deg, #d97706 0%, #b45309 100%) !important;
  border-color: rgba(217, 119, 6, 0.55) !important;
  box-shadow: 0 2px 8px rgba(217, 119, 6, 0.3) !important;
  color: #ffffff !important;
}

[data-theme="light"] .btn-launch-training svg {
  stroke: #ffffff !important;
}

/* =========================================================
   3-1. 전술 임무체계 듀얼 세트 캡슐 (Tactical Twin Suite Capsule)
   - 수집데이터 관리체계 + 교육 · 훈련체계 단일 박스 패키징
   ========================================================= */
.nav-suite-li {
  display: inline-flex;
  align-items: center;
}

.tactical-suite-capsule {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 3px 5px;
  background: linear-gradient(180deg, rgba(13, 23, 42, 0.9) 0%, rgba(6, 12, 24, 0.96) 100%);
  border: 1px solid rgba(0, 229, 255, 0.35);
  border-radius: 8px;
  box-shadow: 0 4px 18px rgba(0, 0, 0, 0.55),
              inset 0 1px 0 rgba(255, 255, 255, 0.12),
              0 0 14px rgba(0, 229, 255, 0.12);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  position: relative;
  transition: all 0.25s cubic-bezier(0.16, 1, 0.3, 1);
}

.tactical-suite-capsule:hover {
  border-color: rgba(0, 229, 255, 0.55);
  box-shadow: 0 4px 22px rgba(0, 0, 0, 0.65),
              inset 0 1px 0 rgba(255, 255, 255, 0.2),
              0 0 20px rgba(0, 229, 255, 0.22);
}

/* 세트 라벨 뱃지 */
.suite-capsule-tag {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 2.5px 6px;
  font-family: 'JetBrains Mono', 'Pretendard', monospace;
  font-size: 0.65rem;
  font-weight: 700;
  color: #7dd3fc;
  background: rgba(14, 165, 233, 0.15);
  border: 1px solid rgba(56, 189, 248, 0.35);
  border-radius: 4px;
  letter-spacing: 0.4px;
  user-select: none;
  white-space: nowrap;
}

.suite-pulse-dot {
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: #00f0ff;
  box-shadow: 0 0 6px #00f0ff;
  animation: suitePulse 2s infinite ease-in-out;
}

@keyframes suitePulse {
  0%, 100% { opacity: 1; transform: scale(1); }
  50% { opacity: 0.35; transform: scale(0.75); }
}

/* 버튼 그룹 */
.suite-buttons-group {
  display: inline-flex;
  align-items: center;
  gap: 4px;
}

.tactical-suite-capsule .btn-launch {
  padding: 0.32rem 0.72rem;
  font-size: 0.79rem;
  border-radius: 5px;
}

[data-theme="light"] .tactical-suite-capsule {
  background: linear-gradient(180deg, #f8fafc 0%, #e2e8f0 100%);
  border-color: rgba(2, 132, 199, 0.35);
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.08), inset 0 1px 0 #ffffff;
}

[data-theme="light"] .suite-capsule-tag {
  background: rgba(2, 132, 199, 0.12);
  border-color: rgba(2, 132, 199, 0.3);
  color: #0369a1;
}

[data-theme="light"] .suite-pulse-dot {
  background: #0284c7;
  box-shadow: 0 0 6px #0284c7;
}

/* =========================================================
   4. 듀얼 세그먼트 스위치 [ ⚫ 검은색 | ⚪ 흰색 ]
   ========================================================= */

.theme-switch-wrapper {
  flex-shrink: 0;
  display: flex;
  align-items: center;
}

.theme-switch {
  position: relative;
  display: flex;
  align-items: center;
  background: var(--switch-bg);
  border: 1px solid var(--switch-border);
  border-radius: 6px;
  padding: 3px;
  height: 38px;
  width: 232px;
  cursor: pointer;
  user-select: none;
  box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.25), 0 0 10px rgba(0, 229, 255, 0.08);
  transition: all 0.25s ease;
}

.theme-switch:hover {
  border-color: var(--primary-cyan);
  box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.25), 0 0 16px rgba(0, 229, 255, 0.25);
}

.theme-pill-slider {
  position: absolute;
  top: 3px;
  left: 3px;
  width: calc(50% - 3px);
  height: calc(100% - 6px);
  border-radius: 4px;
  background: var(--switch-slider);
  border: 1px solid var(--switch-slider-border);
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.35);
  transition: transform 0.28s cubic-bezier(0.4, 0, 0.2, 1), background 0.25s ease;
  z-index: 1;
}

.theme-btn {
  position: relative;
  z-index: 2;
  flex: 1;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.36rem;
  background: transparent;
  border: none;
  cursor: pointer;
  color: var(--text-muted);
  font-family: 'Outfit', 'Pretendard', -apple-system, sans-serif;
  font-size: 0.775rem;
  font-weight: 700;
  letter-spacing: 0.25px;
  line-height: 1;
  transition: color 0.2s ease;
  padding: 0 4px;
}

.theme-btn.active {
  color: var(--switch-active-text);
  font-weight: 800;
}

.theme-indicator-dot {
  width: 5.5px;
  height: 5.5px;
  border-radius: 50%;
  display: inline-block;
  flex-shrink: 0;
  transition: transform 0.25s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.25s ease, box-shadow 0.25s ease;
  opacity: 0.55;
}

.theme-btn.active .theme-indicator-dot {
  opacity: 1;
  transform: scale(1.12);
}

.dot-dark {
  background: #00f0ff;
  border: 1px solid #7df9ff;
  box-shadow: 0 0 6px rgba(0, 240, 255, 0.85);
}

.dot-light {
  background: #0284c7;
  border: 1px solid #38bdf8;
  box-shadow: 0 0 5px rgba(2, 132, 199, 0.55);
}

.theme-text {
  display: inline-block;
  line-height: 1;
  white-space: nowrap;
}

/* =========================================================
   사용자 프로필 뱃지 (PC):
   메인홈/관리자홈 세그먼트 스위치 가장 외곽 직사각형과 동일한 크기(height: 38px, width: 232px)
   및 대칭적 듀얼 캡슐 글래스모피즘 디자인 적용
   ========================================================= */
#nav-user-profile[style*="display: none"],
.user-profile-badge[style*="display: none"] {
  display: none !important;
}

.user-profile-badge {
  display: flex;
  align-items: center;
  gap: 0.45rem;
  height: 38px;
  width: 232px;
  background: var(--switch-bg);
  border: 1px solid var(--switch-border);
  padding: 3px 7px 3px 8px;
  border-radius: 0px;
  flex-shrink: 0;
  box-sizing: border-box;
  box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.25), 0 0 10px rgba(0, 229, 255, 0.08);
  transition: all 0.25s ease;
  user-select: none;
}

.user-profile-badge:hover {
  border-color: var(--primary-cyan);
  box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.25), 0 0 14px rgba(0, 229, 255, 0.2);
}

[data-theme="light"] .user-profile-badge {
  background: var(--switch-bg);
  border: 1px solid var(--switch-border);
  box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.08), 0 1px 2px rgba(0, 0, 0, 0.04);
}

[data-theme="light"] .user-profile-badge:hover {
  border-color: #0284c7;
  box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.08), 0 0 12px rgba(2, 132, 199, 0.2);
}

.user-avatar {
  width: 24px;
  height: 24px;
  border-radius: 0px;
  background: var(--btn-primary-gradient);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.68rem;
  font-weight: 800;
  color: #fff;
  flex-shrink: 0;
  cursor: default;
  box-shadow: 0 0 8px rgba(0, 229, 255, 0.4);
}

.user-display-name {
  font-size: 0.82rem;
  font-weight: 700;
  color: var(--text-heading);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  flex: 1;
  min-width: 0;
  line-height: 1;
  padding: 0 4px;
  cursor: default;
  letter-spacing: 0.2px;
}

[data-theme="light"] .user-display-name {
  color: #0f172a;
}

.btn-logout {
  background: rgba(239, 68, 68, 0.12);
  border: 1px solid rgba(239, 68, 68, 0.35);
  color: #f87171;
  font-size: 0.72rem;
  font-weight: 700;
  height: 26px;
  padding: 0 8px;
  border-radius: 0px;
  cursor: pointer;
  white-space: nowrap;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin-left: auto;
  transition: all 0.2s ease;
  flex-shrink: 0;
  letter-spacing: 0.2px;
}

.btn-logout:hover {
  background: #ef4444;
  color: #ffffff;
  border-color: #ef4444;
  box-shadow: 0 0 10px rgba(239, 68, 68, 0.4);
}

[data-theme="light"] .btn-logout {
  background: #fee2e2;
  border-color: #fca5a5;
  color: #dc2626;
}

[data-theme="light"] .btn-logout:hover {
  background: #dc2626;
  color: #ffffff;
  border-color: #dc2626;
  box-shadow: 0 2px 6px rgba(220, 38, 38, 0.25);
}

/* =========================================================
   5. [DESIGN 1: 검은색 전용] 실제 고증 기반 전술 작전 C4I
   ========================================================= */

#dark-tactical-view .hero-section {
  position: relative;
  min-height: 94vh;
  display: flex;
  align-items: center;
  padding: 6.5rem clamp(1.5rem, 4vw, 4rem) 4rem clamp(1.5rem, 4vw, 4rem);
  z-index: 10;
  overflow: hidden;
}

/* =========================================================
   4K 실사 정찰위성 듀얼 비디오 스테이지 & 전술 HUD 인터페이스
   ========================================================= */

.hero-video-stage {
  position: absolute;
  top: 0;
  right: 0;
  width: 68%;
  height: 100%;
  z-index: 1;
  pointer-events: none; /* 배경 비디오 영역 통과 */
  overflow: hidden;
}

.hero-content {
  position: relative;
  z-index: 15;
  max-width: 630px;
  pointer-events: auto;
}

/* 1. 메인 비디오 크로스페이드 래퍼 */
.hero-video-wrapper {
  position: absolute;
  top: 0;
  right: 0;
  width: 100%;
  height: 100%;
  overflow: hidden;
}

.hero-recon-video {
  position: absolute;
  top: 0;
  right: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center right;
  opacity: 0;
  transition: opacity 0.85s cubic-bezier(0.16, 1, 0.3, 1);
  will-change: opacity;
}

.hero-recon-video.active {
  opacity: var(--hero-visual-opacity, 0.95);
}

/* 시네마틱 비네팅 & 엣지 블렌딩 그라데이션 */
.hero-video-vignette {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: 
    linear-gradient(to right, #05080f 0%, #05080f 20%, rgba(5, 8, 15, 0.85) 35%, rgba(5, 8, 15, 0.25) 55%, transparent 75%),
    linear-gradient(to top, #05080f 0%, rgba(5, 8, 15, 0.65) 15%, transparent 35%),
    linear-gradient(to bottom, #05080f 0%, rgba(5, 8, 15, 0.5) 10%, transparent 22%);
  pointer-events: none;
  z-index: 2;
}

/* 전술 스캔라인 오버레이 (밀리터리 C4I 감성) */
.hero-video-scanlines {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: repeating-linear-gradient(
    0deg,
    rgba(0, 0, 0, 0.12) 0px,
    rgba(0, 0, 0, 0.12) 1px,
    transparent 1px,
    transparent 3px
  );
  pointer-events: none;
  opacity: 0.45;
  z-index: 3;
}

/* 2. 우측 상단 위성 전환 콘솔 토글 */
.satellite-switch-console {
  position: absolute;
  top: 5.2rem;
  right: clamp(1.2rem, 3vw, 3.5rem);
  display: flex;
  gap: 0.45rem;
  z-index: 25;
  background: rgba(6, 12, 22, 0.88);
  backdrop-filter: blur(14px);
  padding: 0.35rem;
  border-radius: 30px;
  border: 1px solid rgba(0, 229, 255, 0.35);
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.6), 0 0 15px rgba(0, 229, 255, 0.2);
  pointer-events: auto;
}

.sat-switch-btn {
  background: transparent;
  border: none;
  color: #8b9bb4;
  padding: 0.4rem 0.95rem;
  border-radius: 20px;
  font-family: var(--font-body);
  font-size: 0.8rem;
  font-weight: 700;
  letter-spacing: 0.3px;
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: 0.45rem;
  transition: all 0.25s ease;
  white-space: nowrap;
}

.sat-switch-btn:hover {
  color: #ffffff;
  background: rgba(255, 255, 255, 0.06);
}

.sat-switch-btn.active {
  background: linear-gradient(135deg, rgba(0, 229, 255, 0.25) 0%, rgba(0, 112, 243, 0.35) 100%);
  color: #00e5ff;
  border: 1px solid rgba(0, 229, 255, 0.5);
  box-shadow: 0 0 12px rgba(0, 229, 255, 0.3);
}

.sat-led {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  display: inline-block;
}

.led-green {
  background: #10b981;
  box-shadow: 0 0 8px #10b981;
  animation: pulse 1.6s infinite;
}

.led-cyan {
  background: #00e5ff;
  box-shadow: 0 0 8px #00e5ff;
  animation: pulse 1.6s infinite;
}

/* 3. 영상 우측 하단: CCTV 전술 PIP 미니 모니터 단독 정렬 */
.hero-video-bottom-hud {
  position: absolute;
  bottom: clamp(1.8rem, 4vh, 3.2rem);
  right: clamp(1.5rem, 4vw, 4.2rem);
  display: flex;
  justify-content: flex-end;
  align-items: flex-end;
  z-index: 25;
  pointer-events: auto;
}

/* CCTV 스타일 전술 PIP 미니 위성 피드 */
.sat-pip-card {
  width: 228px;
  background: rgba(6, 12, 22, 0.9);
  backdrop-filter: blur(18px);
  border: 1px solid rgba(0, 229, 255, 0.4);
  border-radius: 10px;
  overflow: hidden;
  cursor: pointer;
  transition: all 0.28s cubic-bezier(0.16, 1, 0.3, 1);
  box-shadow: 0 14px 34px rgba(0, 0, 0, 0.75), 0 0 18px rgba(0, 229, 255, 0.18);
  flex-shrink: 0;
}

.sat-pip-card:hover {
  transform: translateY(-5px) scale(1.03);
  border-color: #00e5ff;
  box-shadow: 0 18px 40px rgba(0, 0, 0, 0.85), 0 0 28px rgba(0, 229, 255, 0.45);
}

.pip-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0.4rem 0.75rem;
  background: rgba(0, 0, 0, 0.7);
  border-bottom: 1px solid rgba(0, 229, 255, 0.25);
  font-size: 0.72rem;
  font-weight: 700;
  color: #cbd5e1;
}

.pip-rec-dot {
  width: 7px;
  height: 7px;
  background: #ef4444;
  border-radius: 50%;
  animation: pulse 1.2s infinite;
  box-shadow: 0 0 8px #ef4444;
}

.pip-title {
  color: #f1f5f9;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  margin: 0 6px;
  letter-spacing: 0.2px;
}

.pip-swap-icon {
  font-size: 0.68rem;
  color: #00e5ff;
  font-family: 'JetBrains Mono', monospace;
  font-weight: 700;
}

.pip-video-box {
  position: relative;
  width: 100%;
  height: 126px;
  background: #000;
  overflow: hidden;
}

.pip-video-box video {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.pip-overlay-badge {
  position: absolute;
  bottom: 6px;
  right: 6px;
  background: rgba(0, 0, 0, 0.82);
  color: #00e5ff;
  font-size: 0.65rem;
  font-weight: 600;
  padding: 2px 7px;
  border-radius: 4px;
  border: 1px solid rgba(0, 229, 255, 0.4);
  pointer-events: none;
  backdrop-filter: blur(4px);
}

/* 위성 제원 및 수집 임무 전술 정보 카드 */
.sat-tactical-info-card {
  background: rgba(6, 12, 22, 0.86);
  backdrop-filter: blur(16px);
  border: 1px solid rgba(0, 229, 255, 0.25);
  border-left: 3px solid #00e5ff;
  border-radius: 10px;
  padding: 0.95rem 1.15rem;
  color: #f0f6fc;
  box-shadow: 0 12px 30px rgba(0, 0, 0, 0.7), 0 0 15px rgba(0, 229, 255, 0.08);
  flex: 1;
  min-width: 310px;
  transition: opacity 0.25s ease, transform 0.25s ease;
}

.sat-tactical-info-card.fade-updating {
  opacity: 0.2;
  transform: translateY(4px);
}

.sat-info-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 0.5rem;
  padding-bottom: 0.4rem;
  border-bottom: 1px solid rgba(255, 255, 255, 0.08);
}

.sat-id-tag {
  font-family: 'JetBrains Mono', monospace;
  font-size: 0.78rem;
  font-weight: 800;
  color: #00e5ff;
  letter-spacing: 0.5px;
}

.sat-live-indicator {
  display: flex;
  align-items: center;
  gap: 0.35rem;
  font-size: 0.66rem;
  font-weight: 800;
  color: #10b981;
  font-family: 'JetBrains Mono', monospace;
  background: rgba(16, 185, 129, 0.12);
  padding: 0.15rem 0.45rem;
  border-radius: 4px;
  border: 1px solid rgba(16, 185, 129, 0.3);
}

.sat-live-indicator .blink-dot {
  width: 5px;
  height: 5px;
  background: #10b981;
  border-radius: 50%;
  animation: pulse 1s infinite;
}

.sat-sensor-desc {
  font-size: 0.76rem;
  color: #cbd5e1;
  line-height: 1.5;
  margin-bottom: 0.65rem;
}

.sat-sensor-desc strong {
  color: #ffffff;
}

.sat-specs-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.5rem;
  background: rgba(0, 0, 0, 0.35);
  padding: 0.45rem 0.6rem;
  border-radius: 6px;
  border: 1px solid rgba(255, 255, 255, 0.05);
  margin-bottom: 0.45rem;
}

.spec-cell {
  display: flex;
  flex-direction: column;
}

.spec-k {
  font-size: 0.64rem;
  color: #94a3b8;
  text-transform: uppercase;
}

.spec-v {
  font-family: 'JetBrains Mono', monospace;
  font-size: 0.72rem;
  font-weight: 700;
  color: #67e8f9;
}

.sat-telemetry-status {
  font-family: 'JetBrains Mono', monospace;
  font-size: 0.66rem;
  color: #64748b;
  letter-spacing: 0.2px;
}

/* 화면 너비 1200px 이하 반응형 조절 */
@media (max-width: 1280px) {
  .hero-video-stage {
    width: 62%;
  }
  .hero-video-bottom-hud {
    flex-direction: column;
    align-items: flex-end;
    gap: 0.75rem;
  }
  .sat-pip-card {
    width: 155px;
  }
  .pip-video-box {
    height: 85px;
  }
}

@media (max-width: 960px) {
  .hero-video-stage {
    width: 100%;
    opacity: 0.75;
  }
  .hero-recon-video {
    object-position: center center;
  }
  .satellite-switch-console {
    top: 4.8rem;
    right: 1rem;
  }
  .hero-video-bottom-hud {
    right: 1rem;
    bottom: 1rem;
  }
}

.hero-pill {
  display: inline-flex;
  align-items: center;
  gap: 0.55rem;
  background: var(--pill-bg);
  border: 1px solid var(--border-glow);
  padding: 0.32rem 0.85rem;
  border-radius: 20px;
  font-size: 0.78rem;
  color: var(--primary-cyan);
  font-weight: 600;
  margin-bottom: 1.2rem;
}

.hero-pill span.dot {
  width: 7px;
  height: 7px;
  background: var(--primary-cyan);
  border-radius: 50%;
  box-shadow: 0 0 10px var(--primary-cyan);
  animation: pulse 1.8s infinite;
}

@keyframes pulse {
  0% { transform: scale(0.9); opacity: 0.7; }
  50% { transform: scale(1.3); opacity: 1; }
  100% { transform: scale(0.9); opacity: 0.7; }
}

.hero-title {
  font-family: 'Outfit', sans-serif;
  font-size: clamp(2.3rem, 3.8vw, 3.3rem);
  font-weight: 800;
  line-height: 1.15;
  margin-bottom: 1.2rem;
  letter-spacing: -0.5px;
  color: var(--text-heading);
  word-break: keep-all;
}

.hero-title .gradient-text {
  background: var(--hero-title-gradient);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
}

.hero-subtitle {
  font-size: clamp(0.95rem, 1.1vw, 1.08rem);
  color: var(--text-muted);
  line-height: 1.7;
  max-width: 650px;
  margin-bottom: 1.5rem;
}

/* 실제 궤도 텔레메트리 스트립 */
.tactical-telemetry-strip {
  display: flex;
  gap: 0.6rem;
  flex-wrap: wrap;
  margin-bottom: 1.5rem;
}

.telemetry-badge {
  background: rgba(10, 17, 30, 0.7);
  border: 1px solid rgba(0, 229, 255, 0.25);
  padding: 0.25rem 0.65rem;
  border-radius: 4px;
  font-family: 'JetBrains Mono', monospace;
  font-size: 0.72rem;
  color: #a5f3fc;
  display: flex;
  align-items: center;
  gap: 0.35rem;
}

.telemetry-badge.status-live {
  border-color: #22c55e;
  color: #86efac;
}

.telemetry-badge .badge-dot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: #00e5ff;
  box-shadow: 0 0 6px #00e5ff;
}

.btn-primary-large {
  background: var(--btn-primary-gradient);
  color: #ffffff;
  padding: 0.82rem 1.8rem;
  border-radius: 8px;
  font-size: 0.95rem;
  font-weight: 800;
  border: none;
  cursor: pointer;
  box-shadow: var(--btn-primary-shadow);
  transition: all 0.25s ease;
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
}

.btn-outline-large {
  background: var(--bg-glass);
  color: var(--text-main);
  padding: 0.82rem 1.6rem;
  border-radius: 8px;
  font-size: 0.95rem;
  font-weight: 600;
  border: 1px solid var(--border-glow);
  cursor: pointer;
  transition: all 0.25s ease;
}

.pipeline-stats-bar {
  position: relative;
  z-index: 10;
  padding: 0 clamp(1.5rem, 4vw, 4rem);
  margin-top: -2.5rem;
  margin-bottom: 4rem;
}

.stats-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  background: var(--bg-glass);
  backdrop-filter: blur(20px);
  border: 1px solid var(--border-glow);
  border-radius: 14px;
  padding: 1.6rem 2rem;
  box-shadow: var(--card-shadow);
}

.stat-item {
  display: flex;
  flex-direction: column;
  border-right: 1px solid var(--border-subtle);
  padding: 0 1.2rem;
}

.stat-item:last-child {
  border-right: none;
}

.stat-badge-tag {
  align-self: flex-start;
  font-family: 'JetBrains Mono', monospace;
  font-size: 0.65rem;
  font-weight: 700;
  letter-spacing: 0.8px;
  padding: 1.5px 6.5px;
  border-radius: 3px;
  margin-bottom: 0.45rem;
  line-height: 1.2;
}

.stat-badge-tag.sar-tag {
  background: rgba(0, 229, 255, 0.12);
  border: 1px solid rgba(0, 229, 255, 0.35);
  color: #00e5ff;
}

.stat-badge-tag.eoir-tag {
  background: rgba(56, 189, 248, 0.12);
  border: 1px solid rgba(56, 189, 248, 0.35);
  color: #38bdf8;
}

[data-theme="light"] .stat-badge-tag.sar-tag {
  background: rgba(2, 132, 199, 0.1);
  border-color: rgba(2, 132, 199, 0.35);
  color: #0284c7;
}

[data-theme="light"] .stat-badge-tag.eoir-tag {
  background: rgba(3, 105, 161, 0.1);
  border-color: rgba(3, 105, 161, 0.35);
  color: #0369a1;
}

.stat-value {
  font-family: 'Outfit', sans-serif;
  font-size: 2rem;
  font-weight: 800;
  color: var(--text-heading);
  display: flex;
  align-items: baseline;
  gap: 0.2rem;
}

.stat-prefix {
  font-size: 1.35rem;
  font-weight: 700;
  color: var(--primary-cyan);
  margin-right: 0.15rem;
}

[data-theme="light"] .stat-prefix {
  color: #0284c7;
}

.stat-value .unit {
  font-size: 0.95rem;
  color: var(--primary-cyan);
}

.stat-label {
  font-size: 0.78rem;
  color: var(--text-muted);
  margin-top: 0.2rem;
}

.modules-section {
  position: relative;
  z-index: 10;
  padding: 3.5rem clamp(1.5rem, 4vw, 4rem);
  scroll-margin-top: 75px;
}

.section-header {
  text-align: center;
  max-width: 720px;
  margin: 0 auto 2.8rem auto;
}

.section-tag {
  color: var(--primary-cyan);
  font-size: 0.78rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 2px;
  margin-bottom: 0.4rem;
}

.section-title {
  font-family: 'Outfit', sans-serif;
  font-size: clamp(1.7rem, 2.8vw, 2.3rem);
  font-weight: 800;
  margin-bottom: 0.8rem;
  color: var(--text-heading);
}

.section-desc {
  font-size: 0.98rem;
  color: var(--text-muted);
}

.modules-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.6rem;
}

.module-card {
  position: relative;
  background: var(--bg-glass);
  border: 1px solid var(--border-subtle);
  border-radius: 12px;
  overflow: hidden;
  transition: all 0.3s ease;
  display: flex;
  flex-direction: column;
  box-shadow: var(--card-shadow);
}

.module-card::before {
  content: '';
  position: absolute;
  top: 0; left: 0; width: 10px; height: 10px;
  border-top: 2px solid var(--primary-cyan);
  border-left: 2px solid var(--primary-cyan);
  z-index: 5;
}

.module-card:hover {
  transform: translateY(-5px);
  border-color: #00e5ff;
  box-shadow: 0 20px 48px rgba(0, 0, 0, 0.7), 0 0 28px rgba(0, 229, 255, 0.22);
}

.card-media {
  position: relative;
  height: 200px;
  overflow: hidden;
}

.card-media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.4s ease;
}

.module-card:hover .card-media img {
  transform: scale(1.04);
}

.card-badge {
  position: absolute;
  top: 0.75rem;
  left: 0.75rem;
  background: var(--header-bg);
  border: 1px solid var(--border-glow);
  padding: 0.18rem 0.55rem;
  border-radius: 4px;
  font-size: 0.65rem;
  font-weight: 700;
  color: var(--primary-cyan);
  backdrop-filter: blur(8px);
}

.card-body {
  padding: 1.4rem;
  flex: 1;
  display: flex;
  flex-direction: column;
}

.card-title {
  font-family: 'Outfit', sans-serif;
  font-size: 1.2rem;
  font-weight: 700;
  margin-bottom: 0.65rem;
  color: var(--text-heading);
}

.card-text {
  font-size: 0.88rem;
  color: var(--text-muted);
  line-height: 1.6;
}

.video-prompt-section {
  position: relative;
  z-index: 10;
  padding: 3.5rem clamp(1.5rem, 4vw, 4rem);
}

.prompt-banner {
  background: var(--bg-glass);
  border: 1px solid var(--border-glow);
  border-radius: 14px;
  padding: 2rem;
  display: flex;
  gap: 2rem;
  align-items: center;
  box-shadow: var(--card-shadow);
}

.prompt-preview {
  flex: 1;
  border-radius: 8px;
  overflow: hidden;
  border: 1px solid var(--border-subtle);
  max-height: 250px;
}

.prompt-preview img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.prompt-details {
  flex: 1.5;
}

.realism-spec-tag {
  display: flex;
  gap: 0.4rem;
  flex-wrap: wrap;
}

.realism-spec-tag span {
  background: rgba(0, 229, 255, 0.12);
  border: 1px solid rgba(0, 229, 255, 0.3);
  color: #67e8f9;
  font-size: 0.68rem;
  padding: 0.15rem 0.5rem;
  border-radius: 3px;
  font-weight: 600;
}

.prompt-code-box {
  background: var(--code-box-bg);
  color: var(--code-box-text);
  border: 1px solid var(--code-box-border);
  padding: 1rem 1.2rem;
  border-radius: 6px;
  font-family: 'JetBrains Mono', 'Consolas', monospace;
  font-size: 0.8rem;
  margin: 0.8rem 0;
  line-height: 1.55;
  user-select: all;
}

/* =========================================================

   6. [DESIGN 1 고도화] 실제 고증 군사정찰위성 HUD & 실사 피드

   ========================================================= */



/* 100% 무이음새 실사 센티넬-2 위성 관측 피드 */

.real-earth-feed {

  position: absolute;

  top: 0;

  right: 0;

  width: 100%;

  height: 100%;

  overflow: hidden;

  background: #02050b;

}



.earth-pan-container {

  width: 100%;

  height: 100%;

  position: relative;

  overflow: hidden;

}



.earth-pan-img {

  width: 115%;

  height: 115%;

  object-fit: cover;

  object-position: center;

  animation: earthOrbitPan 38s ease-in-out infinite alternate;

  filter: contrast(1.1) brightness(0.95);

}



@keyframes earthOrbitPan {

  0% { transform: scale(1.02) translate(0%, 0%); }

  50% { transform: scale(1.08) translate(-4%, -3%); }

  100% { transform: scale(1.04) translate(-2%, 2%); }

}



/* 실사 피드 표적 브래킷 */

.earth-track-overlay {

  position: absolute;

  top: 0;

  left: 0;

  width: 100%;

  height: 100%;

  pointer-events: none;

}



.target-bracket {

  position: absolute;

  border: 1.5px solid rgba(0, 229, 255, 0.7);

  background: rgba(0, 229, 255, 0.08);

  box-shadow: 0 0 12px rgba(0, 229, 255, 0.35);

}



.target-bracket.pyongyang {

  top: 36%;

  left: 42%;

  width: 120px;

  height: 90px;

}



.target-bracket.seoul {

  top: 50%;

  left: 54%;

  width: 130px;

  height: 100px;

}



.target-bracket.dandong {

  top: 22%;

  left: 30%;

  width: 110px;

  height: 80px;

}



.target-lbl {

  position: absolute;

  bottom: -18px;

  left: 0;

  font-family: 'JetBrains Mono', monospace;

  font-size: 0.65rem;

  color: #00e5ff;

  background: rgba(4, 9, 18, 0.88);

  padding: 1px 6px;

  border-radius: 2px;

  white-space: nowrap;

  letter-spacing: 0.4px;

}



/* 실제 항공우주 광학 센서 노이즈 & 필터 (AI 티 제거) */

.hero-video-noise {

  position: absolute;

  top: 0;

  left: 0;

  width: 100%;

  height: 100%;

  background-image: radial-gradient(rgba(255, 255, 255, 0.04) 1px, transparent 1px);

  background-size: 3px 3px;

  pointer-events: none;

  opacity: 0.45;

  z-index: 3;

}



/* 실제 고증 군사정찰위성 전술 HUD 오버레이 */

.tactical-hud-overlay {

  position: absolute;

  top: 0;

  left: 0;

  width: 100%;

  height: 100%;

  pointer-events: none;

  z-index: 4;

  padding: clamp(1rem, 2.5vw, 2.5rem);

  display: flex;

  flex-direction: column;

  justify-content: space-between;

  box-sizing: border-box;

}



.hud-top-bar {

  display: flex;

  justify-content: space-between;

  align-items: flex-start;

  font-family: 'JetBrains Mono', monospace;

  font-size: 0.72rem;

  color: #8b9bb4;

  background: rgba(3, 7, 15, 0.72);

  backdrop-filter: blur(8px);

  padding: 0.45rem 1rem;

  border-radius: 6px;

  border: 1px solid rgba(0, 229, 255, 0.25);

  margin-top: 52px;

}



.hud-item {

  display: flex;

  flex-direction: column;

  gap: 0.15rem;

}



.hud-item.center { text-align: center; }

.hud-item.right { text-align: right; }



.hud-label {

  font-size: 0.62rem;

  color: #64748b;

  font-weight: 700;

  letter-spacing: 0.8px;

}



.hud-val {

  color: #e2e8f0;

  letter-spacing: 0.3px;

}



.hud-val.highlight {

  color: #00e5ff;

  font-weight: 700;

}



.hud-badge.rec {

  display: inline-block;

  color: #ef4444;

  font-size: 0.65rem;

  font-weight: 800;

  animation: blinkRec 1.2s infinite;

  margin-left: 0.4rem;

}



@keyframes blinkRec {

  0%, 100% { opacity: 1; }

  50% { opacity: 0.2; }

}



/* 중앙 정밀 조준선 & 센서 레티클 */

.hud-reticle-container {

  position: absolute;

  top: 50%;

  left: 50%;

  transform: translate(-50%, -50%);

  width: 320px;

  height: 320px;

  pointer-events: none;

}



.reticle-circle-outer {

  position: absolute;

  top: 0;

  left: 0;

  width: 100%;

  height: 100%;

  border: 1px dashed rgba(0, 229, 255, 0.3);

  border-radius: 50%;

  animation: rotateReticle 45s linear infinite;

}



.reticle-circle-inner {

  position: absolute;

  top: 25%;

  left: 25%;

  width: 50%;

  height: 50%;

  border: 1px solid rgba(0, 229, 255, 0.22);

  border-radius: 50%;

}



.reticle-cross-h {

  position: absolute;

  top: 50%;

  left: -20px;

  width: calc(100% + 40px);

  height: 1px;

  background: linear-gradient(90deg, transparent, rgba(0, 229, 255, 0.45) 20%, rgba(0, 229, 255, 0.45) 80%, transparent);

}



.reticle-cross-v {

  position: absolute;

  top: -20px;

  left: 50%;

  width: 1px;

  height: calc(100% + 40px);

  background: linear-gradient(180deg, transparent, rgba(0, 229, 255, 0.45) 20%, rgba(0, 229, 255, 0.45) 80%, transparent);

}



.reticle-corner {

  position: absolute;

  width: 16px;

  height: 16px;

  border-color: #00e5ff;

  border-style: solid;

}



.reticle-corner.top-left { top: 20px; left: 20px; border-width: 2px 0 0 2px; }

.reticle-corner.top-right { top: 20px; right: 20px; border-width: 2px 2px 0 0; }

.reticle-corner.bottom-left { bottom: 20px; left: 20px; border-width: 0 0 2px 2px; }

.reticle-corner.bottom-right { bottom: 20px; right: 20px; border-width: 0 2px 2px 0; }



.reticle-telemetry-left, .reticle-telemetry-right {

  position: absolute;

  top: 50%;

  transform: translateY(-50%);

  font-family: 'JetBrains Mono', monospace;

  font-size: 0.65rem;

  color: #67e8f9;

  line-height: 1.5;

  background: rgba(4, 9, 18, 0.75);

  padding: 0.4rem 0.6rem;

  border-radius: 4px;

  border: 1px solid rgba(0, 229, 255, 0.2);

  white-space: nowrap;

}



.reticle-telemetry-left { right: calc(100% + 25px); text-align: right; }

.reticle-telemetry-right { left: calc(100% + 25px); text-align: left; }



@keyframes rotateReticle {

  from { transform: rotate(0deg); }

  to { transform: rotate(360deg); }

}



.sat-led.led-amber {

  background: #f59e0b;

  box-shadow: 0 0 6px #f59e0b;

}



/* =========================================================

   7. [DESIGN 2 완전 분리] 실무용 엔터프라이즈 GIS 소프트웨어

   ========================================================= */



/* 1. 최상단 실무 애플리케이션 리본 & 툴바 */
.ent-app-ribbon {
  background: #ffffff;
  border-bottom: 1px solid #cbd5e1;
  padding: 0.5rem clamp(0.75rem, 1.8vw, 2rem);
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-top: 54px;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
  z-index: 20;
  flex-wrap: wrap;
  gap: 0.75rem;
  width: 100%;
  max-width: 100vw;
  box-sizing: border-box;
}

.ent-ribbon-left {
  display: flex;
  align-items: center;
  gap: 1.2rem;
  flex-wrap: wrap;
}

.ent-project-badge {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  background: #f1f5f9;
  border: 1px solid #cbd5e1;
  padding: 0.28rem 0.7rem;
  border-radius: 4px;
  font-size: 0.78rem;
}

.project-tag {
  background: #0284c7;
  color: #ffffff;
  font-size: 0.65rem;
  font-weight: 800;
  padding: 0.1rem 0.35rem;
  border-radius: 3px;
  letter-spacing: 0.5px;
}

.project-name {
  font-weight: 700;
  color: #0f172a;
}

.project-status-dot.online {
  width: 7px;
  height: 7px;
  background: #16a34a;
  border-radius: 50%;
  box-shadow: 0 0 4px #16a34a;
}

.ent-ribbon-divider {
  width: 1px;
  height: 22px;
  background: #e2e8f0;
}

/* 관리자 홈 퀵 액션: 1행(WMS 복사, QGIS 내보내기, 보고서 인쇄) & 2행(수집데이터 관리체계 단독 런치 버튼) */
.ent-quick-actions-box {
  display: flex;
  flex-direction: column;
  gap: 0.42rem;
  align-items: flex-start;
}

.ent-actions-row-tools {
  display: flex;
  align-items: center;
  gap: 0.42rem;
  flex-wrap: wrap;
}

.ent-actions-row-launch {
  display: flex;
  align-items: center;
  width: 100%;
}

.ent-launch-btn-identical {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 0.42rem !important;
  padding: 0.38rem 1.05rem !important;
  font-size: 0.82rem !important;
  font-weight: 700 !important;
  color: #05080f !important;
  background: linear-gradient(135deg, #00f0ff 0%, #0099ff 100%) !important;
  border: 1px solid #00f0ff !important;
  border-radius: 6px !important;
  white-space: nowrap !important;
  text-decoration: none !important;
  box-shadow: 0 3px 12px rgba(0, 240, 255, 0.35) !important;
  cursor: pointer !important;
  letter-spacing: 0.25px !important;
  transition: all 0.2s ease !important;
}

.ent-launch-btn-identical:hover {
  background: linear-gradient(135deg, #38bdf8 0%, #0284c7 100%) !important;
  color: #ffffff !important;
  box-shadow: 0 4px 16px rgba(0, 240, 255, 0.5) !important;
  transform: translateY(-1px) !important;
}

.ent-launch-btn-identical svg {
  width: 14px !important;
  height: 14px !important;
  stroke: currentColor !important;
}

.ent-quick-actions {
  display: flex;
  align-items: center;
  gap: 0.45rem;
  flex-wrap: wrap;
}

.ent-action-btn {
  background: #f8fafc;
  border: 1px solid #cbd5e1;
  color: #334155;
  padding: 0.35rem 0.75rem;
  border-radius: 4px;
  font-size: 0.78rem;
  font-weight: 600;
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: 0.38rem;
  transition: all 0.18s ease;
  white-space: nowrap;
}

.ent-action-btn:hover {
  background: #e2e8f0;
  color: #0f172a;
  border-color: #94a3b8;
}

.ent-action-btn.primary {
  background: #0284c7;
  color: #ffffff;
  border-color: #0284c7;
}

.ent-action-btn.primary:hover {
  background: #0369a1;
  border-color: #0369a1;
}

.ent-ribbon-right {
  display: flex;
  align-items: center;
  gap: 1.3rem;
  font-size: 0.76rem;
  color: #475569;
  flex-wrap: wrap;
}

/* 2. 3단 분할 실무 워크벤치 컨테이너 */
.ent-workstation-container {
  display: grid;
  grid-template-columns: 280px minmax(0, 1fr);
  gap: 1.2rem;
  padding: 1.2rem clamp(0.75rem, 1.8vw, 2rem);
  background: #f8fafc;
  min-height: calc(100vh - 120px);
  width: 100%;
  max-width: 100vw;
  box-sizing: border-box;
  overflow-x: hidden;
}



/* 좌측 사이드 패널 */

.ent-sidebar-panel {

  display: flex;

  flex-direction: column;

  gap: 1rem;

}



.panel-section {

  background: #ffffff;

  border: 1px solid #cbd5e1;

  border-radius: 6px;

  padding: 1rem;

  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);

}



.panel-header {

  display: flex;

  align-items: center;

  gap: 0.5rem;

  padding-bottom: 0.65rem;

  border-bottom: 1px solid #f1f5f9;

  margin-bottom: 0.75rem;

}



.panel-header h4 {

  font-size: 0.84rem;

  font-weight: 700;

  color: #0f172a;

}



.layer-tree-container {

  display: flex;

  flex-direction: column;

  gap: 0.85rem;

}



.layer-group-title {

  display: flex;

  align-items: center;

  gap: 0.4rem;

  font-size: 0.78rem;

  color: #1e293b;

  margin-bottom: 0.4rem;

}



.tree-expander {

  font-size: 0.65rem;

  color: #64748b;

}



.layer-list {

  list-style: none;

  padding-left: 1.1rem;

  display: flex;

  flex-direction: column;

  gap: 0.4rem;

}



.layer-item {

  display: flex;

  align-items: center;

  justify-content: space-between;

  gap: 0.4rem;

  font-size: 0.76rem;

  color: #475569;

}



.layer-item input[type="checkbox"] {

  cursor: pointer;

  accent-color: #0284c7;

}



.layer-item label {

  cursor: pointer;

  flex: 1;

  white-space: nowrap;

  overflow: hidden;

  text-overflow: ellipsis;

}



.layer-item.active label {

  color: #0f172a;

  font-weight: 600;

}



.layer-tag {

  font-family: 'JetBrains Mono', monospace;

  font-size: 0.62rem;

  padding: 1px 4px;

  border-radius: 3px;

  font-weight: 700;

}



.layer-tag.wms { background: #eff6ff; color: #1d4ed8; border: 1px solid #bfdbfe; }

.layer-tag.cog { background: #ecfdf5; color: #059669; border: 1px solid #a7f3d0; }

.layer-tag.shp { background: #fef3c7; color: #b45309; border: 1px solid #fde68a; }

.layer-tag.geojson { background: #f3e8ff; color: #7e22ce; border: 1px solid #e9d5ff; }

.layer-tag.dem { background: #f1f5f9; color: #475569; border: 1px solid #cbd5e1; }



/* 시스템 진단 위젯 */

.diag-widget {

  display: flex;

  flex-direction: column;

  gap: 0.65rem;

}



.diag-item .diag-label {

  display: flex;

  justify-content: space-between;

  font-size: 0.72rem;

  color: #475569;

  margin-bottom: 0.25rem;

}



.diag-num {

  font-family: 'JetBrains Mono', monospace;

  font-weight: 700;

  color: #0f172a;

}



.diag-progress-bar {

  width: 100%;

  height: 6px;

  background: #e2e8f0;

  border-radius: 3px;

  overflow: hidden;

}



.diag-fill {

  height: 100%;

  background: #0284c7;

  border-radius: 3px;

}



.diag-fill.success {

  background: #16a34a;

}



/* 중앙 메인 워크스페이스 */

.ent-main-workspace {
  display: flex;
  flex-direction: column;
  gap: 1.2rem;
  min-width: 0;
  max-width: 100%;
  box-sizing: border-box;
}

/* KPI 실무 카드 행 */
.ent-kpi-summary-row {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
  gap: 0.9rem;
  width: 100%;
  box-sizing: border-box;
}



.ent-stat-box {

  background: #ffffff;

  border: 1px solid #cbd5e1;

  border-left: 4px solid #0284c7;

  padding: 0.75rem 1rem;

  border-radius: 5px;

  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.03);

}



.stat-main {

  font-family: 'Outfit', sans-serif;

  font-size: 1.45rem;

  font-weight: 800;

  color: #0f172a;

  line-height: 1.1;

}



.stat-unit {

  font-size: 0.85rem;

  color: #0284c7;

  font-weight: 600;

}



.stat-name {

  font-size: 0.76rem;

  font-weight: 700;

  color: #334155;

  margin-top: 0.2rem;

}



.stat-desc {

  font-size: 0.68rem;

  color: #64748b;

}



/* 실무 인터랙티브 지도 뷰어 윈도우 */

.ent-map-viewer-window {

  background: #ffffff;

  border: 1px solid #cbd5e1;

  border-radius: 6px;

  overflow: hidden;

  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.05);

}



.map-window-toolbar {

  background: #f1f5f9;

  border-bottom: 1px solid #cbd5e1;

  padding: 0.45rem 0.9rem;

  display: flex;

  justify-content: space-between;

  align-items: center;

  flex-wrap: wrap;

  gap: 0.5rem;

}



.toolbar-left {

  display: flex;

  align-items: center;

  gap: 0.6rem;

}



.map-title-label {

  font-size: 0.82rem;

  font-weight: 700;

  color: #0f172a;

}



.map-badge-active {

  background: #ecfdf5;

  color: #059669;

  font-size: 0.65rem;

  font-weight: 700;

  padding: 0.1rem 0.45rem;

  border-radius: 10px;

  border: 1px solid #a7f3d0;

}



.toolbar-tools {

  display: flex;

  align-items: center;

  gap: 0.4rem;

}



.map-tool-btn {

  background: #ffffff;

  border: 1px solid #cbd5e1;

  color: #334155;

  font-size: 0.74rem;

  font-weight: 600;

  padding: 0.25rem 0.65rem;

  border-radius: 4px;

  cursor: pointer;

  transition: all 0.15s ease;

}



.map-tool-btn:hover, .map-tool-btn.active {

  background: #0284c7;

  color: #ffffff;

  border-color: #0284c7;

}



.map-tool-btn.btn-3d-launch {

  background: #1e40af;

  color: #ffffff;

  border-color: #1e40af;

}



.map-tool-btn.btn-3d-launch:hover {

  background: #1d4ed8;

}



.opacity-control {

  display: flex;

  align-items: center;

  gap: 0.35rem;

  font-size: 0.72rem;

  color: #475569;

  margin: 0 0.4rem;

}



.opacity-slider {

  width: 70px;

  accent-color: #0284c7;

  cursor: pointer;

}



/* 맵 캔버스 영역 */

.map-canvas-area {

  position: relative;

  width: 100%;

  height: 480px;

  background: #0f172a;

  overflow: hidden;

  cursor: crosshair;

}



.ent-map-raster-layer {

  width: 100%;

  height: 100%;

  object-fit: cover;

  display: block;

}



.map-grid-overlay {

  position: absolute;

  top: 0;

  left: 0;

  width: 100%;

  height: 100%;

  pointer-events: none;

}



.map-poi-marker {

  position: absolute;

  transform: translate(-50%, -50%);

  display: flex;

  align-items: center;

  gap: 0.35rem;

}



.poi-pin {

  width: 10px;

  height: 10px;

  background: #ef4444;

  border: 2px solid #ffffff;

  border-radius: 50%;

  box-shadow: 0 0 8px rgba(239, 68, 68, 0.8);

}



.poi-pin.blue {

  background: #0284c7;

  box-shadow: 0 0 8px rgba(2, 132, 199, 0.8);

}



.poi-pin.amber {

  background: #f59e0b;

  box-shadow: 0 0 8px rgba(245, 158, 11, 0.8);

}



.poi-label {

  background: rgba(15, 23, 42, 0.85);

  color: #ffffff;

  font-size: 0.68rem;

  font-weight: 700;

  padding: 0.15rem 0.5rem;

  border-radius: 3px;

  white-space: nowrap;

  box-shadow: 0 2px 4px rgba(0,0,0,0.3);

}



.map-zoom-controls {

  position: absolute;

  top: 1rem;

  right: 1rem;

  display: flex;

  flex-direction: column;

  gap: 0.25rem;

}



.zoom-btn {

  width: 28px;

  height: 28px;

  background: #ffffff;

  border: 1px solid #cbd5e1;

  color: #0f172a;

  font-weight: 800;

  border-radius: 4px;

  cursor: pointer;

  box-shadow: 0 2px 5px rgba(0,0,0,0.15);

}



.zoom-btn:hover {

  background: #f1f5f9;

}



/* 맵 하단 실시간 좌표 정보 바 */

.map-footer-coords-bar {

  background: #f8fafc;

  border-top: 1px solid #cbd5e1;

  padding: 0.35rem 1rem;

  display: flex;

  justify-content: space-between;

  align-items: center;

  font-family: 'JetBrains Mono', monospace;

  font-size: 0.72rem;

  color: #475569;

  flex-wrap: wrap;

  gap: 0.6rem;

}



.coord-item {

  display: flex;

  gap: 0.3rem;

}



.coord-k {

  color: #94a3b8;

  font-weight: 600;

}



.coord-v.highlight {

  color: #0284c7;

  font-weight: 700;

}



/* 3. 실무 위성 베이스맵 MGRS 카탈로그 */

.ent-catalog-section {

  background: #ffffff;

  border: 1px solid #cbd5e1;

  border-radius: 6px;

  padding: 1.2rem;

  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);

}



.ent-section-header {

  display: flex;

  justify-content: space-between;

  align-items: flex-end;

  margin-bottom: 1rem;

  gap: 1rem;

  flex-wrap: wrap;

}



.ent-section-tag {

  font-family: 'JetBrains Mono', monospace;

  font-size: 0.68rem;

  color: #0284c7;

  font-weight: 700;

  letter-spacing: 0.6px;

}



.ent-section-title {

  font-family: 'Outfit', sans-serif;

  font-size: 1.25rem;

  font-weight: 800;

  color: #0f172a;

}



.ent-section-desc {

  font-size: 0.8rem;

  color: #64748b;

}



.ent-search-input {

  padding: 0.45rem 0.85rem;

  border: 1px solid #cbd5e1;

  border-radius: 5px;

  font-size: 0.8rem;

  color: #0f172a;

  width: 260px;

  outline: none;

}



.ent-search-input:focus {

  border-color: #0284c7;

  box-shadow: 0 0 0 2px rgba(2, 132, 199, 0.15);

}



/* 지역 필터 탭 */

.ent-filter-tabs {

  display: flex;

  gap: 0.4rem;

  margin-bottom: 0.85rem;

  flex-wrap: wrap;

}



.filter-tab-btn {

  background: #f1f5f9;

  border: 1px solid #cbd5e1;

  color: #475569;

  font-size: 0.76rem;

  font-weight: 600;

  padding: 0.3rem 0.8rem;

  border-radius: 4px;

  cursor: pointer;

  transition: all 0.15s ease;

}



.filter-tab-btn:hover, .filter-tab-btn.active {

  background: #0284c7;

  color: #ffffff;

  border-color: #0284c7;

}



.ent-table-container {

  border: 1px solid #e2e8f0;

  border-radius: 5px;

  overflow-x: auto;

}



.ent-data-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.74rem;
}

.ent-data-table thead {
  background: #f8fafc;
  border-bottom: 1px solid #cbd5e1;
}

.ent-data-table th {
  padding: 0.5rem 0.45rem;
  font-weight: 700;
  color: #334155;
  text-align: left;
  white-space: nowrap;
}

.ent-data-table td {
  padding: 0.45rem 0.45rem;
  border-bottom: 1px solid #f1f5f9;
  color: #1e293b;
  white-space: nowrap;
}

/* 5번 컬럼(구름 피복률) & 6번 컬럼(수집 일자) 사이 간격 최소화 */
.ent-data-table th:nth-child(5),
.ent-data-table td:nth-child(5) {
  padding-left: 0.25rem;
  padding-right: 0.25rem;
  width: 80px;
}

.ent-data-table th:nth-child(6),
.ent-data-table td:nth-child(6) {
  padding-left: 0.25rem;
  padding-right: 0.35rem;
  width: 78px;
  font-family: 'JetBrains Mono', monospace;
  font-size: 0.72rem;
}

.ent-data-table tbody tr:hover {
  background: #f8fafc;
}

.code-pill {
  font-family: 'JetBrains Mono', monospace;
  font-size: 0.7rem;
  background: #eff6ff;
  color: #1d4ed8;
  padding: 0.1rem 0.35rem;
  border-radius: 3px;
  border: 1px solid #bfdbfe;
  font-weight: 700;
}

.region-pill {
  font-size: 0.66rem;
  font-weight: 700;
  padding: 0.1rem 0.4rem;
  border-radius: 10px;
}

.region-pill.south { background: #eff6ff; color: #1d4ed8; }
.region-pill.dprk { background: #fef2f2; color: #dc2626; }
.region-pill.border { background: #fefce8; color: #ca8a04; }

.cloud-progress {
  display: flex;
  align-items: center;
  gap: 0.25rem;
  width: 72px;
}

.cloud-bar {
  height: 5px;
  background: #16a34a;
  border-radius: 3px;
  min-width: 3px;
  flex: 1;
}

.cloud-progress span {
  font-family: 'JetBrains Mono', monospace;
  font-size: 0.67rem;
  color: #475569;
  min-width: 32px;
  text-align: right;
}



.service-badge.active {

  background: #ecfdf5;

  color: #059669;

  font-size: 0.68rem;

  font-weight: 700;

  padding: 0.12rem 0.45rem;

  border-radius: 10px;

  border: 1px solid #a7f3d0;

}



.ent-btn-small {

  background: #f1f5f9;

  border: 1px solid #cbd5e1;

  color: #0f172a;

  padding: 0.22rem 0.6rem;

  border-radius: 4px;

  font-size: 0.72rem;

  font-weight: 600;

  cursor: pointer;

  transition: all 0.15s ease;

}



.ent-btn-small:hover {

  background: #0284c7;

  color: #ffffff;

  border-color: #0284c7;

}



/* 4. 엔터프라이즈 아키텍처 연동 카드 스트립 */

.ent-architecture-strip {

  display: grid;

  grid-template-columns: repeat(3, 1fr);

  gap: 1rem;

}



.arch-card {

  background: #ffffff;

  border: 1px solid #cbd5e1;

  border-radius: 6px;

  padding: 1rem 1.2rem;

  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.03);

}



.arch-header {

  display: flex;

  align-items: center;

  gap: 0.6rem;

  margin-bottom: 0.5rem;

}



.arch-badge {

  font-family: 'JetBrains Mono', monospace;

  font-size: 0.65rem;

  font-weight: 700;

  padding: 0.15rem 0.45rem;

  border-radius: 3px;

}



.arch-badge.blue { background: #eff6ff; color: #1d4ed8; border: 1px solid #bfdbfe; }

.arch-badge.green { background: #ecfdf5; color: #059669; border: 1px solid #a7f3d0; }

.arch-badge.indigo { background: #eef2ff; color: #4338ca; border: 1px solid #c7d2fe; }

.arch-badge.red { background: #fef2f2; color: #b91c1c; border: 1px solid #fecaca; }

.arch-badge.amber { background: #fffbeb; color: #b45309; border: 1px solid #fde68a; }



.arch-header h5 {

  font-size: 0.88rem;

  font-weight: 700;

  color: #0f172a;

}



.arch-card p {

  font-size: 0.78rem;

  color: #64748b;

  line-height: 1.5;

  margin-bottom: 0.65rem;

}



.arch-footer code {

  font-family: 'JetBrains Mono', monospace;

  font-size: 0.68rem;

  color: #0284c7;

  background: #f1f5f9;

  padding: 0.2rem 0.4rem;

  border-radius: 3px;

  display: block;

  overflow: hidden;

  text-overflow: ellipsis;

  white-space: nowrap;

}



.arch-footer span {

  font-size: 0.72rem;

  color: #475569;

}



.ent-link-btn {

  background: transparent;

  border: none;

  color: #1d4ed8;

  font-size: 0.76rem;

  font-weight: 700;

  cursor: pointer;

  padding: 0;

}



.ent-link-btn:hover {
  text-decoration: underline;
}

/* 5. 시스템 공식 운영 매뉴얼 & 기술 규격서 통합 대형 박스 (Documentation Hub - 115타일 카탈로그 규격 일치) */
.ent-manual-unified-box {
  background: #ffffff;
  border: 1px solid #cbd5e1;
  border-radius: 6px;
  padding: 1.2rem;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);
}

.ent-doc-header-badges {
  display: flex;
  align-items: center;
  gap: 0.5rem;
}

.ent-doc-table-wrap {
  border: 1px solid #e2e8f0;
  border-radius: 5px;
  overflow-x: auto;
  background: #ffffff;
}

.ent-doc-data-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.74rem;
}

.ent-doc-data-table thead {
  background: #f8fafc;
  border-bottom: 1px solid #cbd5e1;
}

.ent-doc-data-table th {
  padding: 0.6rem 0.65rem;
  font-weight: 700;
  color: #334155;
  text-align: left;
  white-space: nowrap;
}

.ent-doc-data-table td {
  padding: 0.65rem 0.65rem;
  border-bottom: 1px solid #f1f5f9;
  color: #1e293b;
  vertical-align: middle;
}

.ent-doc-data-table tbody tr:hover {
  background: #f8fafc;
}

.doc-table-name {
  display: flex;
  align-items: center;
  gap: 0.65rem;
}

.doc-table-emoji {
  font-size: 1.35rem;
  line-height: 1;
  flex-shrink: 0;
}

.doc-table-name strong {
  display: block;
  font-size: 0.8rem;
  font-weight: 700;
  color: #0f172a;
}

.doc-table-sub {
  display: block;
  font-size: 0.68rem;
  color: #64748b;
  font-weight: 500;
  margin-top: 1px;
}

.doc-desc-cell {
  white-space: normal !important;
  font-size: 0.75rem;
  color: #475569;
  line-height: 1.5;
  min-width: 220px;
}

.ent-doc-data-table .ent-btn-small {
  text-decoration: none;
  font-size: 0.74rem;
  padding: 0.32rem 0.75rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
}

/* =========================================================
   7. 공통 모달 & 푸터
   ========================================================= */

.site-footer {
  border-top: 1px solid var(--border-subtle);
  padding: 2.2rem clamp(1.5rem, 4vw, 4rem);
  background: var(--footer-bg);
  display: flex;
  justify-content: center;
  align-items: center;
  text-align: center;
  font-size: 0.85rem;
  color: var(--text-muted);
  position: relative;
  z-index: 10;
}

.footer-copyright {
  text-align: center;
  width: 100%;
  letter-spacing: 0.3px;
  line-height: 1.6;
}

.copyright-part1,
.copyright-part2 {
  display: inline;
}

.modal-overlay {
  position: fixed;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
  background: var(--modal-overlay);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 200;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.25s ease;
}

.modal-overlay.active {
  opacity: 1;
  pointer-events: auto;
}

.modal-card {
  background: var(--modal-bg);
  border: 1px solid var(--border-glow);
  border-radius: 12px;
  width: 100%;
  max-width: 440px;
  padding: 2rem;
  box-shadow: 0 20px 50px rgba(0, 0, 0, 0.35);
  position: relative;
  transform: translateY(15px);
  transition: transform 0.25s ease;
}

.modal-overlay.active .modal-card {
  transform: translateY(0);
}

.modal-close {
  position: absolute;
  top: 1rem;
  right: 1rem;
  background: transparent;
  border: none;
  color: var(--text-muted);
  font-size: 1.3rem;
  cursor: pointer;
}

.modal-header h3 {
  font-family: 'Outfit', sans-serif;
  font-size: 1.35rem;
  margin-bottom: 0.3rem;
  color: var(--text-heading);
}

.modal-header p {
  font-size: 0.82rem;
  color: var(--text-muted);
  margin-bottom: 1.4rem;
}

.form-group {
  margin-bottom: 1rem;
}

.form-group label {
  display: block;
  font-size: 0.78rem;
  color: var(--text-muted);
  margin-bottom: 0.3rem;
  font-weight: 600;
}

.form-input, .form-select {
  width: 100%;
  padding: 0.65rem 0.85rem;
  background: var(--input-bg);
  color: var(--input-text);
  border: 1px solid var(--border-subtle);
  border-radius: 6px;
  font-size: 0.88rem;
  outline: none;
}

.form-input:focus, .form-select:focus {
  border-color: var(--primary-cyan);
}

.btn-submit {
  width: 100%;
  padding: 0.75rem;
  background: var(--btn-primary-gradient);
  color: #ffffff;
  border: none;
  border-radius: 6px;
  font-size: 0.92rem;
  font-weight: 700;
  cursor: pointer;
  margin-top: 0.8rem;
  box-shadow: var(--btn-primary-shadow);
}

.modal-switch {
  text-align: center;
  margin-top: 1rem;
  font-size: 0.82rem;
  color: var(--text-muted);
}

.modal-switch a {
  color: var(--primary-cyan);
  text-decoration: none;
  font-weight: 600;
}

/* 로그인 하단 3분할 링크 바 (아이디 찾기 | 비밀번호 찾기 | 신규 회원가입) */
.modal-links-bar {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.65rem;
  margin-top: 1.1rem;
  font-size: 0.82rem;
  color: var(--text-muted);
  flex-wrap: wrap;
}

.modal-links-bar a {
  color: var(--text-muted);
  text-decoration: none;
  font-weight: 600;
  transition: color 0.2s ease;
}

.modal-links-bar a:hover {
  color: var(--primary-cyan);
}

.modal-links-bar a.highlight-link {
  color: var(--primary-cyan);
  font-weight: 700;
}

.modal-link-divider {
  color: var(--border-subtle);
  user-select: none;
  font-size: 0.75rem;
}

/* 아이디 찾기 결과 안내 박스 & 비밀번호 초기화 상단 배너 */
.auth-result-box {
  margin: 0.85rem 0 0.4rem;
  padding: 0.85rem 1rem;
  border-radius: 8px;
  background: rgba(16, 185, 129, 0.12);
  border: 1px solid rgba(16, 185, 129, 0.4);
  color: var(--text-heading);
  font-size: 0.85rem;
  line-height: 1.5;
  text-align: center;
}

.auth-result-box.error {
  background: rgba(239, 68, 68, 0.12);
  border-color: rgba(239, 68, 68, 0.4);
  color: #f87171;
}

.auth-result-box .found-id-badge {
  display: inline-block;
  margin-top: 0.3rem;
  padding: 0.25rem 0.75rem;
  border-radius: 6px;
  background: rgba(0, 229, 255, 0.15);
  border: 1px solid var(--primary-cyan);
  color: var(--primary-cyan);
  font-family: 'JetBrains Mono', monospace;
  font-size: 0.95rem;
  font-weight: 700;
}

.auth-verified-banner {
  margin-bottom: 1rem;
  padding: 0.65rem 0.9rem;
  border-radius: 7px;
  background: rgba(14, 165, 233, 0.12);
  border: 1px solid rgba(56, 189, 248, 0.35);
  color: #38bdf8;
  font-size: 0.8rem;
  font-weight: 600;
  line-height: 1.4;
}

.modal-card {
  max-height: 92vh;
  overflow-y: auto;
}

/* 비밀번호 2개 입력 및 눈표시 이모지 토글 UI */
.password-input-wrap {
  position: relative;
  width: 100%;
  display: flex;
  align-items: center;
}

.password-input-wrap .form-input {
  padding-right: 42px !important;
}

.btn-toggle-pw {
  position: absolute;
  right: 8px;
  top: 50%;
  transform: translateY(-50%);
  background: transparent;
  border: none;
  cursor: pointer;
  font-size: 1.1rem;
  padding: 4px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  line-height: 1;
  user-select: none;
  opacity: 0.72;
  transition: opacity 0.2s ease, transform 0.15s ease;
}

.btn-toggle-pw:hover {
  opacity: 1;
  transform: translateY(-50%) scale(1.12);
}

.btn-toggle-pw.active {
  opacity: 1;
}

.btn-toggle-pw .pw-eye-icon {
  display: inline-block;
}

/* 비밀번호 일치 검증 피드백 메시지 */
.pw-match-feedback {
  font-size: 0.78rem;
  margin-top: 0.4rem;
  font-weight: 600;
  transition: color 0.2s ease;
}

/* 소속 부서/기관 및 모든 인풋 플레이스홀더: 안전한 비밀번호와 동일한 어두운 톤과 폰트 통일 */
.form-input::placeholder,
.form-select::placeholder {
  color: rgba(148, 163, 184, 0.45) !important;
  font-family: inherit !important;
  font-size: 0.88rem !important;
  font-weight: 400 !important;
  opacity: 1 !important;
}

[data-theme="light"] .form-input::placeholder,
[data-theme="light"] .form-select::placeholder {
  color: rgba(100, 116, 139, 0.55) !important;
  font-family: inherit !important;
  font-size: 0.88rem !important;
  font-weight: 400 !important;
}

/* =========================================================
   8. 반응형 미디어 쿼리 (모바일 & 태블릿 완벽 대응)
   ========================================================= */

/* A. 1400px 이하 데스크톱 */
@media (max-width: 1400px) {
  .site-header { padding: 0.5rem 1.2rem; }
  .ent-hero-content { grid-template-columns: 1fr; }
}

/* B. 1220px 이하 랩탑/태블릿 가로 */
@media (max-width: 1220px) {
  .nav-links { gap: 0.6rem !important; }
  .nav-links .btn-launch { padding: 0.32rem 0.65rem !important; font-size: 0.76rem !important; }
  .brand-text p { display: none; }
  .site-header { padding: 0.45rem 0.9rem; }
  #user-display-dept, #user-key-snippet { display: none; }
  .ent-kpi-grid { grid-template-columns: repeat(2, 1fr); }
  .ent-cards-grid { grid-template-columns: 1fr; }
  .ent-workstation-container { grid-template-columns: 260px minmax(0, 1fr); gap: 1rem; }
}

/* C. 1024px 이하 태블릿: 워크벤치 1단 전환 및 통계 바 2열 정렬 */
@media (max-width: 1024px) {
  .hero-title { font-size: 2.2rem; }
  .stats-grid { grid-template-columns: repeat(2, 1fr); gap: 1rem; padding: 1.2rem; }
  .stat-item { border-right: none; border-bottom: 1px solid var(--border-subtle); padding: 0.6rem 0.8rem; }
  .stat-item:nth-child(3), .stat-item:nth-child(4) { border-bottom: none; }
  .modules-grid { grid-template-columns: 1fr; gap: 1.5rem; }
  .prompt-banner { flex-direction: column; }
  
  /* 라이트 모드 워크스테이션 1단 전환으로 짤림 원천 방지 */
  .ent-workstation-container {
    grid-template-columns: 1fr !important;
    gap: 1rem;
    padding: 1rem;
  }
  .ent-sidebar-panel {
    order: 2;
  }
  .ent-main-workspace {
    order: 1;
  }
  .ent-app-ribbon {
    margin-top: 52px;
    padding: 0.6rem 1rem;
    gap: 0.6rem;
  }
  .ent-architecture-strip {
    grid-template-columns: 1fr !important;
  }
}

/* D. 768px 이하 모바일 전용 UI (스마트폰 최적화) */
@media (max-width: 768px) {
  /* 글로벌 가로 오버플로우 차단 */
  html, body {
    overflow-x: hidden !important;
    width: 100vw;
    max-width: 100vw;
  }

  /* 상단 헤더: 모바일 2단 레이아웃 (1행: SCU 로고&Project LifeField + 우측 프로필 + 스위치 1줄 고정, 2행: 중앙 정렬 발전계획 & 관리체계 버튼) */
  .site-header {
    height: auto !important;
    min-height: 80px !important;
    padding: 0.32rem 0.35rem 0.35rem 0.35rem !important;
    display: flex !important;
    flex-wrap: wrap !important;
    justify-content: space-between !important;
    align-items: center !important;
    row-gap: 0.32rem !important;
    column-gap: 0.2rem !important;
    overflow: visible !important;
    width: 100% !important;
    max-width: 100vw !important;
    box-sizing: border-box !important;
    position: fixed !important;
    top: 0 !important;
    left: 0 !important;
    right: 0 !important;
    z-index: 100 !important;
    background: rgba(7, 14, 27, 0.96) !important;
    backdrop-filter: blur(14px) !important;
    -webkit-backdrop-filter: blur(14px) !important;
    border-bottom: 1px solid var(--border-subtle) !important;
  }

  [data-theme="light"] .site-header {
    background: rgba(255, 255, 255, 0.97) !important;
    border-bottom: 1px solid #cbd5e1 !important;
  }

  /* 1행 좌측: 로고 + SCU + Project LifeField */
  .brand-container {
    order: 1 !important;
    display: inline-flex !important;
    align-items: center !important;
    gap: 0.28rem !important;
    flex-shrink: 0 !important;
    text-decoration: none !important;
    width: auto !important;
    min-width: 0 !important;
    max-width: 95px !important;
    overflow: visible !important;
  }

  .brand-logo {
    width: 24px !important;
    height: 24px !important;
    border-radius: 0px !important;
    flex-shrink: 0 !important;
  }

  .brand-text {
    display: inline-flex !important;
    flex-direction: column !important;
    justify-content: center !important;
    line-height: 1.15 !important;
    min-width: 0 !important;
  }

  .scu-brand-title {
    display: flex !important;
    align-items: center !important;
    min-width: 0 !important;
    gap: 0 !important;
  }

  .scu-dynamic-title {
    font-size: 0.84rem !important;
    font-weight: 800 !important;
    letter-spacing: 0.2px !important;
    color: #ffffff !important;
    -webkit-text-fill-color: #ffffff !important;
    background: none !important;
    line-height: 1.1 !important;
    white-space: nowrap !important;
  }

  [data-theme="light"] .scu-dynamic-title {
    color: #0f172a !important;
    -webkit-text-fill-color: #0f172a !important;
    background: none !important;
  }

  .scu-ticker-inner {
    display: inline-block !important;
    opacity: 1 !important;
    transform: none !important;
    filter: none !important;
    color: inherit !important;
    -webkit-text-fill-color: inherit !important;
  }

  /* 모바일 좌측 상단 SCU 하단 Project LifeField 글자 복구 */
  .brand-sub-project {
    display: block !important;
    font-family: 'JetBrains Mono', 'Pretendard', monospace !important;
    font-size: 0.52rem !important;
    font-weight: 600 !important;
    letter-spacing: 0px !important;
    color: #38bdf8 !important;
    line-height: 1 !important;
    margin-top: 1px !important;
    white-space: nowrap !important;
  }

  [data-theme="light"] .brand-sub-project {
    color: #0284c7 !important;
  }

  /* 1행 우측: 액션 및 테마 스위치 (남은 공간을 유연하게 채움) */
  .nav-actions {
    order: 2 !important;
    display: flex !important;
    align-items: center !important;
    justify-content: flex-end !important;
    gap: 0.2rem !important;
    flex: 1 1 auto !important;
    min-width: 0 !important;
    max-width: calc(100% - 98px) !important;
    flex-shrink: 1 !important;
    margin-left: auto !important;
  }

  /* 모바일 게스트 로그인/회원가입 버튼 컴팩트 정돈 (완전 네모) */
  #nav-guest-actions,
  .nav-guest-actions {
    display: flex;
    align-items: center;
    gap: 0.22rem;
    flex-shrink: 0;
  }

  #nav-guest-actions[style*="display: none"],
  .nav-guest-actions[style*="display: none"],
  [data-theme="light"] #nav-guest-actions,
  [data-theme="light"] .nav-guest-actions {
    display: none !important;
  }

  #nav-guest-actions .btn-ghost,
  .nav-guest-actions .btn-ghost {
    padding: 2.5px 5.5px !important;
    font-size: 0.65rem !important;
    line-height: 1.15 !important;
    white-space: nowrap !important;
    border-radius: 0px !important;
    background: rgba(255, 255, 255, 0.05) !important;
    border: 1px solid rgba(255, 255, 255, 0.12) !important;
  }

  /* 모바일 로그인 완료 프로필 뱃지:
     완전 네모 모서리 (border-radius: 0px),
     이름이 화면 크기와 상황에 따라 동적으로 축소(ellipsis)되어 무조건 1줄 유지 */
  #nav-user-profile[style*="display: none"],
  .user-profile-badge[style*="display: none"] {
    display: none !important;
  }

  .user-profile-badge {
    height: 30px !important;
    width: auto !important;
    flex: 0 1 auto !important;
    min-width: 0 !important;
    max-width: 118px !important;
    padding: 0 0.25rem !important;
    gap: 0.2rem !important;
    border-radius: 0px !important;
    box-sizing: border-box !important;
    display: inline-flex !important;
    align-items: center !important;
    overflow: hidden !important;
    box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.2), 0 0 6px rgba(0, 229, 255, 0.08) !important;
  }

  .user-avatar {
    width: 18px !important;
    height: 18px !important;
    font-size: 0.58rem !important;
    border-radius: 0px !important;
    flex-shrink: 0 !important;
  }

  /* 사용자 이름 동적 축소: 공간이 부족하면 자동으로 '홍...'으로 줄어들어 줄바꿈 원천 차단 */
  .user-display-name {
    flex: 1 1 auto !important;
    min-width: 12px !important;
    max-width: 38px !important;
    font-size: 0.68rem !important;
    font-weight: 700 !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    line-height: 1 !important;
    padding: 0 2px !important;
  }

  .btn-logout {
    flex-shrink: 0 !important;
    height: 22px !important;
    font-size: 0.6rem !important;
    padding: 0 4px !important;
    border-radius: 0px !important;
    white-space: nowrap !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    margin-left: 0 !important;
  }

  /* 모바일 테마 세그먼트 스위치: 완전 네모 모서리 (border-radius: 0px) */
  .theme-switch-wrapper {
    flex-shrink: 0 !important;
    width: 115px !important;
    margin-left: 0 !important;
  }

  .theme-switch {
    width: 115px !important;
    height: 30px !important;
    padding: 2px !important;
    border-radius: 0px !important;
    box-sizing: border-box !important;
    display: flex !important;
    position: relative !important;
  }

  .theme-pill-slider {
    top: 2px !important;
    left: 2px !important;
    width: calc(50% - 2px) !important;
    height: calc(100% - 4px) !important;
    border-radius: 0px !important;
  }

  .theme-btn {
    font-size: 0.64rem !important;
    font-weight: 700 !important;
    line-height: 1 !important;
    gap: 0.28rem !important;
    padding: 0 2px !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    box-sizing: border-box !important;
    white-space: nowrap !important;
  }

  .theme-indicator-dot {
    width: 4px !important;
    height: 4px !important;
    border-radius: 50% !important;
    flex-shrink: 0 !important;
  }

  .theme-text {
    white-space: nowrap !important;
    letter-spacing: 0.1px !important;
  }

  /* 2행: 모바일 다음 줄에 가운데 정렬로 2개 메뉴 버튼 배치 (프로젝트 발전계획 & 수집데이터 관리체계) */
  .nav-links {
    order: 3 !important;
    position: static !important;
    transform: none !important;
    width: 100% !important;
    height: auto !important;
    background: transparent !important;
    border: none !important;
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
    display: flex !important;
    justify-content: center !important;
    align-items: center !important;
    gap: 0.55rem !important;
    padding: 0.35rem 0 0.1rem 0 !important;
    margin: 0 !important;
    border-top: 1px solid rgba(255, 255, 255, 0.08) !important;
    box-sizing: border-box !important;
  }

  [data-theme="light"] .nav-links {
    background: transparent !important;
    border-top: 1px solid #e2e8f0 !important;
  }

  .nav-links li {
    display: inline-flex !important;
    align-items: center !important;
  }

  /* 버튼 1: PROJECT 발전계획 - 사이버네틱 캡슐 버튼 스타일 */
  .nav-links a#nav-link-plan {
    display: inline-flex !important;
    align-items: center !important;
    padding: 0.32rem 0.75rem !important;
    font-size: 0.73rem !important;
    font-weight: 700 !important;
    color: #cbd5e1 !important;
    background: rgba(30, 41, 59, 0.75) !important;
    border: 1px solid rgba(148, 163, 184, 0.3) !important;
    border-radius: 6px !important;
    white-space: nowrap !important;
    text-decoration: none !important;
    letter-spacing: 0.2px !important;
    transition: all 0.2s ease !important;
  }

  [data-theme="light"] .nav-links a#nav-link-plan {
    color: #1e293b !important;
    background: #f1f5f9 !important;
    border-color: #cbd5e1 !important;
  }

  /* 듀얼 전술 세트 캡슐 모바일 최적화 */
  .nav-links .tactical-suite-capsule {
    padding: 2px 3px !important;
    gap: 3px !important;
    border-radius: 6px !important;
  }

  .nav-links .suite-capsule-tag {
    display: none !important; /* 모바일 가로폭 확보를 위해 텍스트 태그 은닉 */
  }

  .nav-links .suite-buttons-group {
    display: inline-flex !important;
    gap: 3px !important;
  }

  /* 버튼 2: 수집데이터 관리체계 - 네온 런치 캡슐 버튼 스타일 */
  .nav-links a#nav-link-isr,
  .nav-links a.btn-launch {
    display: inline-flex !important;
    align-items: center !important;
    padding: 0.3rem 0.68rem !important;
    font-size: 0.72rem !important;
    font-weight: 750 !important;
    color: #031726 !important;
    background: linear-gradient(135deg, #00f0ff 0%, #00b4d8 50%, #0077b6 100%) !important;
    border: 1px solid #00f0ff !important;
    border-radius: 5px !important;
    white-space: nowrap !important;
    text-decoration: none !important;
    box-shadow: 0 2px 8px rgba(0, 240, 255, 0.35) !important;
    gap: 0.28rem !important;
    letter-spacing: 0.1px !important;
    transition: all 0.2s ease !important;
  }

  [data-theme="light"] .nav-links a#nav-link-isr,
  [data-theme="light"] .nav-links a.btn-launch {
    background: linear-gradient(135deg, #0284c7 0%, #0369a1 100%) !important;
    color: #ffffff !important;
    border-color: #0284c7 !important;
    box-shadow: 0 2px 8px rgba(2, 132, 199, 0.25) !important;
  }

  .nav-links a#nav-link-isr svg {
    width: 12px !important;
    height: 12px !important;
    stroke: #031726 !important;
  }

  [data-theme="light"] .nav-links a#nav-link-isr svg {
    stroke: #ffffff !important;
  }

  /* 버튼 3: 교육체계 - 에메랄드 그린 루미너스 런치 캡슐 버튼 스타일 (모바일) */
  .nav-links a#nav-link-education,
  .nav-links a.btn-launch-education {
    display: inline-flex !important;
    align-items: center !important;
    padding: 0.28rem 0.56rem !important;
    font-size: 0.7rem !important;
    font-weight: 750 !important;
    color: #022416 !important;
    background: linear-gradient(135deg, #00ff87 0%, #10b981 50%, #059669 100%) !important;
    border: 1px solid #00ff87 !important;
    border-radius: 5px !important;
    white-space: nowrap !important;
    text-decoration: none !important;
    box-shadow: 0 2px 8px rgba(16, 185, 129, 0.38) !important;
    gap: 0.24rem !important;
    letter-spacing: 0.1px !important;
    transition: all 0.2s ease !important;
  }

  [data-theme="light"] .nav-links a#nav-link-education,
  [data-theme="light"] .nav-links a.btn-launch-education {
    background: linear-gradient(135deg, #059669 0%, #047857 100%) !important;
    color: #ffffff !important;
    border-color: #059669 !important;
    box-shadow: 0 2px 8px rgba(5, 150, 105, 0.25) !important;
  }

  .nav-links a#nav-link-education svg {
    width: 11px !important;
    height: 11px !important;
    stroke: #022416 !important;
  }

  [data-theme="light"] .nav-links a#nav-link-education svg {
    stroke: #ffffff !important;
  }

  /* 버튼 4: 훈련체계 - 앰버 골드 런치 캡슐 버튼 스타일 (모바일) */
  .nav-links a#nav-link-training,
  .nav-links a.btn-launch-training {
    display: inline-flex !important;
    align-items: center !important;
    padding: 0.28rem 0.56rem !important;
    font-size: 0.7rem !important;
    font-weight: 750 !important;
    color: #271202 !important;
    background: linear-gradient(135deg, #fbbf24 0%, #f59e0b 55%, #d97706 100%) !important;
    border: 1px solid #fbbf24 !important;
    border-radius: 5px !important;
    white-space: nowrap !important;
    text-decoration: none !important;
    box-shadow: 0 2px 8px rgba(245, 158, 11, 0.4) !important;
    gap: 0.24rem !important;
    letter-spacing: 0.1px !important;
    transition: all 0.2s ease !important;
  }

  [data-theme="light"] .nav-links a#nav-link-training,
  [data-theme="light"] .nav-links a.btn-launch-training {
    background: linear-gradient(135deg, #d97706 0%, #b45309 100%) !important;
    color: #ffffff !important;
    border-color: #d97706 !important;
    box-shadow: 0 2px 8px rgba(217, 119, 6, 0.28) !important;
  }

  .nav-links a#nav-link-training svg {
    width: 11px !important;
    height: 11px !important;
    stroke: #271202 !important;
  }

  [data-theme="light"] .nav-links a#nav-link-training svg {
    stroke: #ffffff !important;
  }

  /* 모바일 헤더 2단 높이에 맞춘 메인 히어로 섹션 상단 패딩 */
  .hero-section {
    position: relative !important;
    padding-top: calc(86px + 1.2rem) !important;
    padding-left: 1rem !important;
    padding-right: 1rem !important;
    padding-bottom: 2rem !important;
    min-height: 520px !important;
    overflow: hidden !important;
  }

  /* 관리자홈 리본 상단 마진 */
  .ent-app-ribbon {
    margin-top: 86px !important;
  }

  /* 마지막 페이지(하단 푸터 카피라이트): 모바일에서 한줄로 안될 시 마침표(.) 기준 2줄 가운데 정렬 */
  .footer-copyright {
    display: flex !important;
    flex-direction: column !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 4px !important;
    text-align: center !important;
    line-height: 1.45 !important;
    font-size: 0.78rem !important;
  }

  .copyright-part1,
  .copyright-part2 {
    display: block !important;
    white-space: nowrap !important;
  }

  /* 4K 정찰위성 듀얼 영상 스테이지 모바일 전면 프레이밍 */
  .hero-video-stage {
    position: absolute !important;
    top: 0 !important;
    left: 0 !important;
    right: 0 !important;
    bottom: 0 !important;
    width: 100% !important;
    height: 100% !important;
    opacity: 0.85 !important;
    pointer-events: none !important;
    z-index: 1 !important;
  }

  .hero-video-wrapper {
    position: absolute !important;
    top: 0 !important;
    left: 0 !important;
    width: 100% !important;
    height: 100% !important;
  }

  /* 16:9 가로 비디오를 세로 모바일 화면에서 위성 본체가 중앙에 오도록 최적 포지셔닝 */
  .hero-recon-video {
    position: absolute !important;
    top: 0 !important;
    left: 0 !important;
    width: 100% !important;
    height: 100% !important;
    object-fit: cover !important;
    object-position: 50% 33% !important;
    transform: none !important;
  }

  /* 모바일 전용 수직 시네마틱 비네팅: 데스크탑 좌측 가림막을 해제하고 위성 본체 투과 극대화 */
  .hero-video-vignette {
    position: absolute !important;
    top: 0 !important;
    left: 0 !important;
    width: 100% !important;
    height: 100% !important;
    background: linear-gradient(
      to bottom,
      rgba(5, 8, 15, 0.62) 0%,
      rgba(5, 8, 15, 0.22) 26%,
      rgba(5, 8, 15, 0.08) 50%,
      rgba(5, 8, 15, 0.65) 82%,
      #05080f 100%
    ) !important;
    z-index: 2 !important;
  }

  .hero-content {
    position: relative !important;
    z-index: 10 !important;
    max-width: 100% !important;
  }

  .hero-pill {
    font-size: 0.68rem !important;
    padding: 0.25rem 0.6rem !important;
    margin-bottom: 0.75rem !important;
    backdrop-filter: blur(8px) !important;
    -webkit-backdrop-filter: blur(8px) !important;
  }

  .hero-title {
    font-size: clamp(1.4rem, 6.2vw, 1.85rem) !important;
    line-height: 1.25 !important;
    text-shadow: none !important; /* 모바일에서 글씨가 번지거나 검댕이가 묻은 듯한 검은 그림자 효과 완전 제거 */
    margin-bottom: 0.85rem !important;
  }

  .hero-title .gradient-text {
    text-shadow: none !important;
    filter: none !important;
    -webkit-text-fill-color: transparent !important;
  }

  .hero-subtitle {
    font-size: 0.82rem !important;
    line-height: 1.55 !important;
    margin-top: 0.7rem !important;
    margin-bottom: 1.1rem !important;
    color: #cbd5e1 !important;
    text-shadow: 0 1px 6px rgba(0, 0, 0, 0.9) !important;
    background: rgba(5, 11, 24, 0.65) !important;
    backdrop-filter: blur(8px) !important;
    -webkit-backdrop-filter: blur(8px) !important;
    border: 1px solid rgba(0, 229, 255, 0.25) !important;
    border-left: 3px solid #00e5ff !important;
    padding: 0.6rem 0.8rem !important;
    border-radius: 6px !important;
  }

  .tactical-telemetry-strip {
    gap: 0.3rem !important;
    flex-wrap: wrap !important;
    margin-top: 0.75rem !important;
  }

  .telemetry-badge {
    font-size: 0.6rem !important;
    padding: 0.22rem 0.45rem !important;
    background: rgba(6, 12, 24, 0.75) !important;
    backdrop-filter: blur(6px) !important;
    -webkit-backdrop-filter: blur(6px) !important;
  }

  /* 모바일 전술 PIP 미니 모니터 (비디오 스왑 카드) - 세로 15% 확대 및 하단부 위성 짤림 방지 */
  .sat-pip-card {
    width: 124px !important;
    height: 95px !important; /* 세로 약 15% 확장 (82px -> 95px) */
    right: 0.75rem !important;
    bottom: 0.75rem !important;
    border: 1px solid rgba(0, 229, 255, 0.45) !important;
    box-shadow: 0 4px 18px rgba(0, 0, 0, 0.7), 0 0 10px rgba(0, 229, 255, 0.25) !important;
    z-index: 20 !important;
  }

  .pip-header {
    padding: 0.22rem 0.45rem !important;
    font-size: 0.65rem !important;
    font-weight: 700 !important;
    display: flex !important;
    justify-content: space-between !important;
    align-items: center !important;
  }

  .pip-title {
    font-size: 0.62rem !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    max-width: 72px !important;
  }

  .pip-swap-icon {
    font-size: 0.58rem !important;
    letter-spacing: 0.2px !important;
  }

  .pip-video-box {
    height: calc(100% - 21px) !important;
  }

  .pip-video-box video {
    width: 100% !important;
    height: 100% !important;
    object-fit: cover !important;
    object-position: center bottom !important; /* 위성 하단부 짤림 방지 */
  }

  /* SAR & EO 위성 스펙 바 */
  .pipeline-stats-bar {
    padding: 0 0.75rem !important;
    margin-top: 0.8rem !important;
    margin-bottom: 2rem !important;
  }

  .stats-grid {
    grid-template-columns: repeat(2, 1fr) !important;
    gap: 0.65rem !important;
    padding: 0.85rem !important;
    border-radius: 10px !important;
  }

  .stat-item {
    padding: 0.45rem !important;
    border-right: none !important;
    border-bottom: 1px solid var(--border-subtle) !important;
  }

  .stat-item:nth-child(3), .stat-item:nth-child(4) {
    border-bottom: none !important;
  }

  .stat-value {
    font-size: 1.45rem !important;
  }

  .stat-prefix {
    font-size: 1.1rem !important;
  }

  .stat-value .unit {
    font-size: 0.82rem !important;
  }

  .stat-label {
    font-size: 0.7rem !important;
    line-height: 1.28 !important;
  }

  /* PROJECT 발전계획 섹션 */
  .modules-section {
    padding: 2rem 0.75rem !important;
  }

  .section-header {
    margin-bottom: 1.8rem !important;
  }

  .section-title {
    font-size: 1.55rem !important;
  }

  .section-desc {
    font-size: 0.82rem !important;
    line-height: 1.5 !important;
  }

  .modules-grid {
    grid-template-columns: 1fr !important;
    gap: 1.2rem !important;
  }

  .module-card .card-media {
    height: 175px !important;
  }

  .module-card .card-body {
    padding: 1rem !important;
  }

  .card-title {
    font-size: 1.05rem !important;
  }

  .card-text {
    font-size: 0.82rem !important;
    line-height: 1.55 !important;
  }

  /* 라이트 모드 엔터프라이즈 모바일 최적화 */
  .ent-app-ribbon {
    margin-top: calc(48px + 36px) !important;
    padding: 0.6rem 0.75rem !important;
    gap: 0.5rem !important;
  }

  .ent-ribbon-left, .ent-ribbon-right {
    gap: 0.45rem !important;
    width: 100% !important;
  }

  .ent-project-badge {
    font-size: 0.72rem !important;
    padding: 0.22rem 0.5rem !important;
    width: 100% !important;
    justify-content: space-between !important;
  }

  .ent-quick-actions {
    width: 100% !important;
    overflow-x: auto !important;
    padding-bottom: 0.3rem !important;
  }

  .ent-workstation-container {
    padding: 0.75rem 0.65rem !important;
    gap: 0.85rem !important;
  }

  .ent-kpi-summary-row {
    grid-template-columns: repeat(2, 1fr) !important;
    gap: 0.5rem !important;
  }

  .ent-stat-box {
    padding: 0.6rem 0.75rem !important;
  }

  .stat-main {
    font-size: 1.35rem !important;
  }

  .map-canvas-area {
    height: 280px !important;
  }

  .map-footer-coords-bar {
    font-size: 0.65rem !important;
    padding: 0.35rem 0.5rem !important;
    gap: 0.35rem !important;
  }

  .ent-catalog-section {
    padding: 0.85rem 0.65rem !important;
  }

  .ent-search-input {
    width: 100% !important;
  }

  /* 관리자홈 하단 3개 핵심 아키텍처 연동 카드 모바일 1열 세로 스크롤 정렬 */
  .ent-architecture-strip {
    display: flex !important;
    flex-direction: column !important;
    gap: 0.85rem !important;
    width: 100% !important;
    box-sizing: border-box !important;
  }

  .arch-card {
    width: 100% !important;
    box-sizing: border-box !important;
    padding: 0.9rem 1rem !important;
  }

  .arch-header {
    display: flex !important;
    align-items: center !important;
    flex-wrap: wrap !important;
    gap: 0.4rem !important;
    margin-bottom: 0.45rem !important;
  }

  .arch-card h5 {
    font-size: 0.92rem !important;
    margin: 0 !important;
  }

  .arch-card p {
    font-size: 0.78rem !important;
    line-height: 1.5 !important;
    margin: 0 0 0.6rem 0 !important;
    color: #475569 !important;
  }

  .arch-footer {
    width: 100% !important;
    box-sizing: border-box !important;
    overflow-x: hidden !important;
  }

  .arch-footer code {
    display: block !important;
    width: 100% !important;
    font-size: 0.65rem !important;
    word-break: break-all !important;
    overflow-wrap: anywhere !important;
    white-space: normal !important;
    box-sizing: border-box !important;
    padding: 0.4rem 0.55rem !important;
    background: #f1f5f9 !important;
    border: 1px solid #cbd5e1 !important;
    border-radius: 4px !important;
  }

  .arch-footer .ent-link-btn {
    width: 100% !important;
    display: flex !important;
    justify-content: center !important;
    align-items: center !important;
    padding: 0.5rem 0.75rem !important;
    font-size: 0.8rem !important;
  }

  /* 관리자홈 하단 통합 매뉴얼 카탈로그 모바일 최적화 */
  .ent-manual-unified-box {
    margin-top: 1rem !important;
    padding: 0.85rem 0.65rem !important;
  }

  .ent-doc-header-badges {
    margin-top: 0.4rem !important;
  }

  .ent-doc-table-wrap {
    width: 100% !important;
    overflow-x: auto !important;
    -webkit-overflow-scrolling: touch !important;
  }

  .ent-doc-data-table th,
  .ent-doc-data-table td {
    padding: 0.55rem 0.5rem !important;
  }

  .doc-desc-cell {
    min-width: 180px !important;
    font-size: 0.72rem !important;
  }
}


/* =========================================================

   9. [실제 고증 군사정찰위성 HUD & 오피스 GIS 인터랙티브 맵]

   ========================================================= */



/* A. 실제 고증 군사정찰위성 HUD (Black Mode) */

.tactical-hud-overlay {

  position: absolute;

  top: 0;

  left: 0;

  width: 100%;

  height: 100%;

  pointer-events: none;

  z-index: 6;

  font-family: 'JetBrains Mono', monospace;

}



.hud-top-bar {

  position: absolute;

  top: 5.5rem;

  left: clamp(1.2rem, 3vw, 3rem);

  display: flex;

  gap: 1.2rem;

  align-items: center;

  background: rgba(4, 9, 18, 0.85);

  border: 1px solid rgba(0, 229, 255, 0.3);

  border-radius: 6px;

  padding: 0.35rem 0.85rem;

  backdrop-filter: blur(10px);

  box-shadow: 0 4px 15px rgba(0, 0, 0, 0.5);

  pointer-events: auto;

}



.hud-item {

  display: flex;

  align-items: center;

  gap: 0.45rem;

  font-size: 0.72rem;

  color: #94a3b8;

}



.hud-label {

  color: #00e5ff;

  font-weight: 700;

  background: rgba(0, 229, 255, 0.12);

  padding: 1px 5px;

  border-radius: 2px;

  border: 1px solid rgba(0, 229, 255, 0.25);

}



.hud-val {

  color: #f1f5f9;

  letter-spacing: 0.2px;

}



.hud-val.highlight {

  color: #38bdf8;

  font-weight: 700;

}



.hud-badge.rec {

  background: rgba(239, 68, 68, 0.2);

  color: #ef4444;

  border: 1px solid rgba(239, 68, 68, 0.4);

  padding: 1px 5px;

  border-radius: 2px;

  font-size: 0.65rem;

  font-weight: 800;

  animation: pulse 1.2s infinite;

}



.hud-reticle-container {

  position: absolute;

  top: 50%;

  left: 72%;

  transform: translate(-50%, -50%);

  width: 280px;

  height: 280px;

  pointer-events: none;

}



.reticle-circle-outer {

  position: absolute;

  top: 50%;

  left: 50%;

  transform: translate(-50%, -50%);

  width: 240px;

  height: 240px;

  border: 1px dashed rgba(0, 229, 255, 0.35);

  border-radius: 50%;

  animation: rotateClockwise 60s linear infinite;

}



.reticle-circle-inner {

  position: absolute;

  top: 50%;

  left: 50%;

  transform: translate(-50%, -50%);

  width: 120px;

  height: 120px;

  border: 1px solid rgba(0, 229, 255, 0.3);

  border-radius: 50%;

}



.reticle-cross-h {

  position: absolute;

  top: 50%;

  left: 10%;

  width: 80%;

  height: 1px;

  background: linear-gradient(90deg, transparent, rgba(0, 229, 255, 0.6), transparent);

}



.reticle-cross-v {

  position: absolute;

  left: 50%;

  top: 10%;

  height: 80%;

  width: 1px;

  background: linear-gradient(180deg, transparent, rgba(0, 229, 255, 0.6), transparent);

}



.reticle-corner {

  position: absolute;

  width: 18px;

  height: 18px;

  border-color: #00e5ff;

  border-style: solid;

}



.reticle-corner.top-left { top: 0; left: 0; border-width: 2px 0 0 2px; }

.reticle-corner.top-right { top: 0; right: 0; border-width: 2px 2px 0 0; }

.reticle-corner.bottom-left { bottom: 0; left: 0; border-width: 0 0 2px 2px; }

.reticle-corner.bottom-right { bottom: 0; right: 0; border-width: 0 2px 2px 0; }



.reticle-telemetry-left {

  position: absolute;

  left: -200px;

  top: 50%;

  transform: translateY(-50%);

  font-size: 0.64rem;

  color: #7dd3fc;

  line-height: 1.5;

  text-align: right;

  background: rgba(5, 11, 22, 0.78);

  padding: 5px 8px;

  border-radius: 3px;

  border-right: 2px solid #00e5ff;

  white-space: nowrap;

}



.reticle-telemetry-right {

  position: absolute;

  right: -215px;

  top: 50%;

  transform: translateY(-50%);

  font-size: 0.64rem;

  color: #7dd3fc;

  line-height: 1.5;

  text-align: left;

  background: rgba(5, 11, 22, 0.78);

  padding: 5px 8px;

  border-radius: 3px;

  border-left: 2px solid #00e5ff;

  white-space: nowrap;

}



/* B. 실무 지형공간 인터랙티브 맵 캔버스 (White Mode) */

.map-canvas-area {

  position: relative;

  width: 100%;

  height: 480px;

  background: #0f172a;

  overflow: hidden;

  border-radius: 4px;

  display: flex;

  align-items: center;

  justify-content: center;

  cursor: crosshair;

}



.ent-map-raster-layer {

  width: 100%;

  height: 100%;

  object-fit: cover;

  object-position: center;

  display: block;

  filter: brightness(1.02) contrast(1.05);

  transition: opacity 0.2s ease, visibility 0.2s ease;

  user-select: none;

  pointer-events: none;

}



.map-grid-overlay {

  position: absolute;

  top: 0;

  left: 0;

  width: 100%;

  height: 100%;

  pointer-events: none;

}



.map-poi-marker {

  position: absolute;

  transform: translate(-50%, -50%);

  display: flex;

  align-items: center;

  gap: 6px;

  pointer-events: auto;

  cursor: pointer;

  transition: transform 0.2s ease;

}



.map-poi-marker:hover {

  transform: translate(-50%, -50%) scale(1.08);

}



.poi-pin {

  width: 10px;

  height: 10px;

  border-radius: 50%;

  background: #ef4444;

  box-shadow: 0 0 8px #ef4444;

  border: 2px solid #ffffff;

}



.poi-pin.blue {

  background: #2563eb;

  box-shadow: 0 0 8px #2563eb;

}



.poi-pin.amber {

  background: #f59e0b;

  box-shadow: 0 0 8px #f59e0b;

}



.poi-label {

  background: rgba(15, 23, 42, 0.88);

  color: #ffffff;

  font-size: 0.72rem;

  font-weight: 700;

  padding: 2px 8px;

  border-radius: 3px;

  border: 1px solid rgba(255, 255, 255, 0.2);

  white-space: nowrap;

}



.map-zoom-controls {

  position: absolute;

  top: 12px;

  right: 12px;

  display: flex;

  flex-direction: column;

  gap: 4px;

  z-index: 10;

}



.zoom-btn {

  width: 28px;

  height: 28px;

  background: #ffffff;

  border: 1px solid #cbd5e1;

  border-radius: 4px;

  font-weight: 700;

  font-size: 1rem;

  color: #334155;

  cursor: pointer;

  display: flex;

  align-items: center;

  justify-content: center;

  box-shadow: 0 2px 4px rgba(0,0,0,0.06);

}



.zoom-btn:hover {
  background: #f1f5f9;
  border-color: #94a3b8;
}

/* =========================================================================
   System Access Security Auth Overlay (LIFE FIELD Integrated)
   ========================================================================= */
body.auth-locked {
  overflow: hidden !important;
}

/* 비인가/잠금/로그아웃 상태 시 포탈 내부 컨텐츠 완전 은닉 (보안 노출 차폐) */
body.auth-locked > *:not(#authOverlay) {
  visibility: hidden !important;
}

/* 세션 활성화 상태 시 오버레이 즉시 은닉 (초기 렌더링 깜빡임 방지) 및 내부 컨텐츠 가시화 */
html.auth-session-active #authOverlay,
html.auth-session-active .auth-overlay {
  display: none !important;
  opacity: 0 !important;
  visibility: hidden !important;
  pointer-events: none !important;
}

html.auth-session-active body.auth-locked {
  filter: none !important;
  pointer-events: auto !important;
}

html.auth-session-active body > * {
  visibility: visible !important;
}

.auth-overlay {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  width: 100vw;
  height: 100vh;
  height: 100dvh;
  background: #040812 !important; /* 완전 불투명 차폐 - 내부 포탈 및 시스템 노출 원천 차단 */
  z-index: 99999999 !important;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: opacity 0.3s ease;
}

.auth-box {
  background: rgba(11, 17, 32, 0.92);
  border: 1px solid rgba(0, 240, 255, 0.5);
  box-shadow: 0 0 35px rgba(0, 240, 255, 0.25), inset 0 0 15px rgba(0, 240, 255, 0.1);
  border-radius: 6px;
  padding: 40px;
  width: 360px;
  max-width: 90vw;
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  position: relative;
  box-sizing: border-box;
}

.auth-box::before {
  content: '';
  position: absolute;
  top: -1px; left: -1px; right: -1px; bottom: -1px;
  border: 1px solid rgba(0, 240, 255, 0.25);
  border-radius: 6px;
  pointer-events: none;
}

.auth-title {
  margin: 0 0 24px 0;
  color: #fff;
  letter-spacing: 3px;
  font-weight: 700;
  font-size: 20px;
  text-shadow: 0 0 8px rgba(0, 240, 255, 0.4);
  font-family: 'JetBrains Mono', 'Pretendard', sans-serif;
}

.auth-input {
  width: 100%;
  text-align: center;
  margin-bottom: 20px;
  font-size: 16px;
  letter-spacing: 6px;
  padding: 14px 10px;
  font-family: 'JetBrains Mono', monospace;
  background: rgba(0, 0, 0, 0.5);
  border: 1px solid rgba(0, 240, 255, 0.35);
  border-radius: 4px;
  color: #00f0ff;
  outline: none;
  box-sizing: border-box;
  transition: all 0.2s ease;
}

.auth-input:focus {
  border-color: #00f0ff;
  box-shadow: 0 0 15px rgba(0, 240, 255, 0.5);
}

.auth-input::placeholder {
  letter-spacing: 4px;
  color: rgba(255, 255, 255, 0.25);
}

.auth-btn {
  width: 100%;
  font-size: 15px;
  letter-spacing: 4px;
  padding: 14px 0;
  font-weight: bold;
  text-transform: uppercase;
  display: flex;
  justify-content: center;
  align-items: center;
  background: linear-gradient(135deg, rgba(0, 240, 255, 0.3) 0%, rgba(0, 112, 243, 0.5) 100%);
  border: 1px solid #00f0ff;
  color: #fff;
  border-radius: 4px;
  cursor: pointer;
  transition: all 0.2s ease;
  box-shadow: 0 4px 15px rgba(0, 240, 255, 0.25);
  font-family: inherit;
}

.auth-btn:hover {
  background: linear-gradient(135deg, rgba(0, 240, 255, 0.5) 0%, rgba(0, 112, 243, 0.7) 100%);
  box-shadow: 0 6px 22px rgba(0, 240, 255, 0.45);
  transform: translateY(-1px);
}

.auth-error {
  color: #ef4444;
  margin-top: 16px;
  font-size: 13.5px;
  font-weight: bold;
  letter-spacing: 1px;
  text-shadow: 0 0 8px rgba(239, 68, 68, 0.6);
  animation: flashError 0.5s ease;
}

@keyframes flashError {
  0%, 100% { opacity: 1; transform: scale(1); }
  50% { opacity: 0.5; transform: scale(1.05); }
}

/* =========================================================
   보안 및 데이터 출처 고지 팝업 모달 (Disclaimer Modal)
   ========================================================= */

.disclaimer-overlay {
  position: fixed;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
  background: rgba(3, 7, 18, 0.82);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  z-index: 999999;
  display: none;
  align-items: center;
  justify-content: center;
  opacity: 0;
  transition: opacity 0.35s cubic-bezier(0.16, 1, 0.3, 1);
  padding: 16px;
  box-sizing: border-box;
}

.disclaimer-overlay.active {
  opacity: 1;
}

.disclaimer-box {
  width: 580px;
  max-width: 100%;
  background: rgba(11, 19, 36, 0.96);
  border: 1px solid rgba(0, 240, 255, 0.45);
  box-shadow: 0 24px 70px rgba(0, 0, 0, 0.8), 0 0 35px rgba(0, 240, 255, 0.16), inset 0 0 15px rgba(0, 240, 255, 0.05);
  border-radius: 10px;
  padding: 30px 32px 24px 32px;
  position: relative;
  box-sizing: border-box;
  transform: translateY(16px) scale(0.97);
  transition: transform 0.35s cubic-bezier(0.16, 1, 0.3, 1);
  font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, Roboto, sans-serif;
  color: #f1f5f9;
}

.disclaimer-overlay.active .disclaimer-box {
  transform: translateY(0) scale(1);
}

[data-theme="light"] .disclaimer-box {
  background: #ffffff;
  border: 1px solid rgba(2, 132, 199, 0.35);
  box-shadow: 0 20px 50px rgba(15, 23, 42, 0.15), 0 2px 10px rgba(0, 0, 0, 0.05);
  color: #1e293b;
}

.disclaimer-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  margin-bottom: 18px;
}

.disclaimer-header-left {
  display: flex;
  align-items: center;
  gap: 14px;
}

.disclaimer-icon-wrap {
  width: 44px;
  height: 44px;
  border-radius: 8px;
  background: rgba(0, 240, 255, 0.1);
  border: 1px solid rgba(0, 240, 255, 0.3);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  color: #00f0ff;
}

[data-theme="light"] .disclaimer-icon-wrap {
  background: rgba(2, 132, 199, 0.1);
  border-color: rgba(2, 132, 199, 0.3);
  color: #0284c7;
}

.disclaimer-badge {
  display: inline-block;
  font-size: 10.5px;
  font-family: 'JetBrains Mono', monospace;
  font-weight: 700;
  letter-spacing: 1px;
  padding: 2px 7px;
  border-radius: 3px;
  background: rgba(0, 240, 255, 0.15);
  border: 1px solid rgba(0, 240, 255, 0.35);
  color: #67e8f9;
  text-transform: uppercase;
  margin-bottom: 4px;
}

[data-theme="light"] .disclaimer-badge {
  background: rgba(2, 132, 199, 0.12);
  border-color: rgba(2, 132, 199, 0.3);
  color: #0284c7;
}

.disclaimer-title {
  margin: 0;
  font-size: 19px;
  font-weight: 700;
  letter-spacing: -0.3px;
  color: #ffffff;
}

[data-theme="light"] .disclaimer-title {
  color: #0f172a;
}

.disclaimer-close-x {
  background: transparent;
  border: none;
  color: rgba(255, 255, 255, 0.45);
  font-size: 22px;
  cursor: pointer;
  line-height: 1;
  padding: 4px 6px;
  border-radius: 4px;
  transition: all 0.2s ease;
}

.disclaimer-close-x:hover {
  color: #00f0ff;
  background: rgba(0, 240, 255, 0.1);
}

[data-theme="light"] .disclaimer-close-x {
  color: #64748b;
}

[data-theme="light"] .disclaimer-close-x:hover {
  color: #0284c7;
  background: #f1f5f9;
}

/* 중요 고지 강조 배너 박스 */
.disclaimer-alert-box {
  background: linear-gradient(90deg, rgba(239, 68, 68, 0.15) 0%, rgba(220, 38, 38, 0.05) 100%);
  border-left: 3.5px solid #ef4444;
  border-radius: 5px;
  padding: 13px 16px;
  margin-bottom: 18px;
  display: flex;
  align-items: flex-start;
  gap: 10px;
}

[data-theme="light"] .disclaimer-alert-box {
  background: linear-gradient(90deg, rgba(239, 68, 68, 0.1) 0%, rgba(254, 242, 242, 0.5) 100%);
}

.disclaimer-alert-icon {
  color: #ef4444;
  font-size: 16px;
  flex-shrink: 0;
  margin-top: 1px;
}

.disclaimer-alert-text {
  font-size: 14px;
  font-weight: 700;
  color: #fca5a5;
  line-height: 1.5;
}

[data-theme="light"] .disclaimer-alert-text {
  color: #dc2626;
}

/* 본문 설명 */
.disclaimer-body-content {
  font-size: 13.5px;
  line-height: 1.68;
  color: #94a3b8;
}

[data-theme="light"] .disclaimer-body-content {
  color: #475569;
}

.disclaimer-body-content p {
  margin: 0 0 12px 0;
}

.disclaimer-body-content p:last-child {
  margin-bottom: 0;
}

.disclaimer-body-content strong {
  color: #e2e8f0;
  font-weight: 600;
}

[data-theme="light"] .disclaimer-body-content strong {
  color: #1e293b;
}

.disclaimer-spec-list {
  list-style: none;
  padding: 0;
  margin: 12px 0 0 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.disclaimer-spec-item {
  display: flex;
  align-items: baseline;
  gap: 6px;
  font-size: 12.8px;
  line-height: 1.45;
}

.disclaimer-spec-item .spec-label {
  display: inline-flex;
  align-items: baseline;
  gap: 5px;
  flex-shrink: 0;
  color: #f1f5f9;
}

[data-theme="light"] .disclaimer-spec-item .spec-label {
  color: #0f172a;
}

.disclaimer-spec-item .spec-colon {
  display: inline;
  color: inherit;
}

.disclaimer-spec-item .spec-desc {
  display: inline;
  color: #cbd5e1;
}

[data-theme="light"] .disclaimer-spec-item .spec-desc {
  color: #334155;
}

.disclaimer-spec-bullet {
  color: #00f0ff;
  font-size: 10px;
  flex-shrink: 0;
}

[data-theme="light"] .disclaimer-spec-bullet {
  color: #0284c7;
}

/* 하단 컨트롤 바 */
.disclaimer-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-top: 22px;
  padding-top: 16px;
  border-top: 1px solid rgba(255, 255, 255, 0.08);
  flex-wrap: wrap;
  gap: 12px;
}

[data-theme="light"] .disclaimer-footer {
  border-top-color: #e2e8f0;
}

/* 커스텀 체크박스 라벨 */
.disclaimer-chk-label {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 13px;
  color: #94a3b8;
  cursor: pointer;
  user-select: none;
  transition: color 0.2s ease;
}

.disclaimer-chk-label:hover {
  color: #f1f5f9;
}

[data-theme="light"] .disclaimer-chk-label {
  color: #64748b;
}

[data-theme="light"] .disclaimer-chk-label:hover {
  color: #0f172a;
}

.disclaimer-chk-label input[type="checkbox"] {
  appearance: none;
  -webkit-appearance: none;
  width: 17px;
  height: 17px;
  border: 1px solid rgba(0, 240, 255, 0.4);
  border-radius: 3px;
  background: rgba(0, 0, 0, 0.4);
  cursor: pointer;
  position: relative;
  transition: all 0.2s ease;
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
}

[data-theme="light"] .disclaimer-chk-label input[type="checkbox"] {
  background: #f8fafc;
  border-color: #94a3b8;
}

.disclaimer-chk-label input[type="checkbox"]:checked {
  background: #00e5ff;
  border-color: #00e5ff;
}

[data-theme="light"] .disclaimer-chk-label input[type="checkbox"]:checked {
  background: #0284c7;
  border-color: #0284c7;
}

.disclaimer-chk-label input[type="checkbox"]:checked::after {
  content: '✓';
  color: #05080f;
  font-size: 12px;
  font-weight: 900;
}

[data-theme="light"] .disclaimer-chk-label input[type="checkbox"]:checked::after {
  color: #ffffff;
}

/* 닫기 확인 버튼 */
.disclaimer-btn-confirm {
  background: linear-gradient(135deg, rgba(0, 229, 255, 0.25) 0%, rgba(0, 112, 243, 0.35) 100%);
  border: 1px solid #00f0ff;
  color: #ffffff;
  padding: 9px 22px;
  border-radius: 5px;
  font-size: 13.5px;
  font-weight: 700;
  letter-spacing: 0.3px;
  cursor: pointer;
  transition: all 0.2s ease;
  box-shadow: 0 4px 15px rgba(0, 229, 255, 0.2);
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-family: inherit;
}

.disclaimer-btn-confirm:hover {
  background: linear-gradient(135deg, rgba(0, 229, 255, 0.45) 0%, rgba(0, 112, 243, 0.55) 100%);
  box-shadow: 0 6px 20px rgba(0, 229, 255, 0.35);
  transform: translateY(-1px);
}

[data-theme="light"] .disclaimer-btn-confirm {
  background: linear-gradient(135deg, #0284c7 0%, #1d4ed8 100%);
  border-color: #0284c7;
  box-shadow: 0 4px 12px rgba(2, 132, 199, 0.25);
}

[data-theme="light"] .disclaimer-btn-confirm:hover {
  background: linear-gradient(135deg, #0369a1 0%, #1e40af 100%);
  box-shadow: 0 6px 16px rgba(2, 132, 199, 0.35);
}

/* =========================================================
   데이터 출처 및 보안 고지 모달 모바일 최적화 (768px 이하)
   : (콜론) 숨김 및 설명문(spec-desc) 다음 줄 들여쓰기 적용
   ========================================================= */
@media (max-width: 768px) {
  .disclaimer-overlay {
    padding: 12px !important;
  }

  .disclaimer-box {
    width: calc(100vw - 28px) !important;
    max-width: 580px !important;
    padding: 22px 18px 18px 18px !important;
  }

  .disclaimer-header {
    margin-bottom: 14px !important;
  }

  .disclaimer-icon-wrap {
    width: 38px !important;
    height: 38px !important;
  }

  .disclaimer-icon-wrap svg {
    width: 20px !important;
    height: 20px !important;
  }

  .disclaimer-title {
    font-size: 16.5px !important;
  }

  .disclaimer-alert-box {
    padding: 10px 12px !important;
    margin-bottom: 14px !important;
    gap: 8px !important;
  }

  .disclaimer-alert-text {
    font-size: 12.5px !important;
    line-height: 1.45 !important;
  }

  .disclaimer-body-content {
    font-size: 12.2px !important;
    line-height: 1.55 !important;
  }

  .disclaimer-spec-list {
    margin-top: 12px !important;
    gap: 10px !important;
  }

  .disclaimer-spec-item {
    display: flex !important;
    flex-direction: column !important;
    align-items: flex-start !important;
    gap: 3px !important;
    white-space: normal !important;
    font-size: 12.2px !important;
    line-height: 1.45 !important;
  }

  .disclaimer-spec-item .spec-label {
    display: inline-flex !important;
    align-items: center !important;
    gap: 5px !important;
    font-weight: 700 !important;
    color: #00f0ff !important;
  }

  [data-theme="light"] .disclaimer-spec-item .spec-label {
    color: #0284c7 !important;
  }

  /* 모바일에서 : (콜론) 완전 은닉 */
  .disclaimer-spec-item .spec-colon {
    display: none !important;
  }

  /* 다음 줄 들여쓰기 적용 */
  .disclaimer-spec-item .spec-desc {
    display: block !important;
    padding-left: 14px !important;
    color: #cbd5e1 !important;
    line-height: 1.45 !important;
    word-break: keep-all !important;
    overflow-wrap: break-word !important;
  }

  [data-theme="light"] .disclaimer-spec-item .spec-desc {
    color: #475569 !important;
  }

  .disclaimer-footer {
    flex-direction: column !important;
    align-items: stretch !important;
    gap: 12px !important;
    margin-top: 16px !important;
    padding-top: 14px !important;
  }

  .disclaimer-chk-label {
    font-size: 12px !important;
    justify-content: center !important;
  }

  .disclaimer-btn-confirm {
    width: 100% !important;
    justify-content: center !important;
    padding: 10px !important;
    font-size: 13.5px !important;
  }
}


/* ==========================================================================
   STREAMLINED COMPACT MANUAL HUBS (Dark Tactical & Light Enterprise)
   ========================================================================== */
.tactical-manual-compact {
  width: 100%;
  max-width: 1400px;
  margin: 3rem auto 2rem auto;
  padding: 0 1.5rem;
  box-sizing: border-box;
}

.manual-compact-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1.5rem;
  background: linear-gradient(135deg, rgba(13, 23, 42, 0.94) 0%, rgba(7, 13, 26, 0.98) 100%);
  border: 1px solid rgba(0, 240, 255, 0.3);
  border-radius: 14px;
  padding: 1.15rem 1.6rem;
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5), inset 0 1px 0 rgba(255, 255, 255, 0.08), 0 0 18px rgba(0, 240, 255, 0.08);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
}

.manual-compact-info {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  min-width: 0;
}

.manual-compact-badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-family: 'JetBrains Mono', monospace;
  font-size: 0.68rem;
  font-weight: 750;
  color: #00f0ff;
  letter-spacing: 0.8px;
}

.hub-radar-pulse {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: #00f0ff;
  box-shadow: 0 0 8px #00f0ff;
  animation: suitePulse 1.8s infinite;
}

.manual-compact-title {
  font-family: 'Outfit', 'Pretendard', sans-serif;
  font-size: 1.15rem;
  font-weight: 800;
  color: #ffffff;
  letter-spacing: -0.2px;
  margin: 0;
}

.manual-compact-desc {
  font-size: 0.82rem;
  color: #94a3b8;
  margin: 0;
  word-break: keep-all;
}

.manual-compact-btns {
  display: flex;
  align-items: center;
  gap: 0.65rem;
  flex-shrink: 0;
}

.btn-compact-manual {
  display: inline-flex;
  align-items: center;
  gap: 0.6rem;
  padding: 0.55rem 0.95rem;
  border-radius: 8px;
  background: rgba(30, 41, 59, 0.75);
  border: 1px solid rgba(255, 255, 255, 0.12);
  color: #f1f5f9;
  text-decoration: none;
  transition: all 0.2s cubic-bezier(0.16, 1, 0.3, 1);
  white-space: nowrap;
}

.btn-compact-manual:hover {
  transform: translateY(-2px);
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.4);
}

.btn-compact-pdf:hover {
  border-color: #ef4444;
  background: rgba(239, 68, 68, 0.18);
  box-shadow: 0 4px 16px rgba(239, 68, 68, 0.35);
}

.btn-compact-word:hover {
  border-color: #38bdf8;
  background: rgba(56, 189, 248, 0.18);
  box-shadow: 0 4px 16px rgba(56, 189, 248, 0.35);
}

.btn-compact-ppt:hover {
  border-color: #f97316;
  background: rgba(249, 115, 22, 0.18);
  box-shadow: 0 4px 16px rgba(249, 115, 22, 0.35);
}

.btn-compact-web {
  background: linear-gradient(135deg, rgba(0, 240, 255, 0.18), rgba(16, 185, 129, 0.22));
  border-color: rgba(0, 240, 255, 0.45);
}

.btn-compact-web:hover {
  border-color: #00f0ff;
  background: linear-gradient(135deg, rgba(0, 240, 255, 0.32), rgba(16, 185, 129, 0.38));
  box-shadow: 0 4px 18px rgba(0, 240, 255, 0.4);
}

.btn-emoji {
  font-size: 1.25rem;
  line-height: 1;
}

.btn-text-group {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  line-height: 1.2;
}

.btn-main-txt {
  font-size: 0.82rem;
  font-weight: 750;
  color: #ffffff;
}

.btn-size-txt {
  font-family: 'JetBrains Mono', monospace;
  font-size: 0.65rem;
  color: #94a3b8;
}

/* ==========================================================================
   ENTERPRISE ADMIN MANUAL WORKSPACE SECTION (상단 arch-card 및 pc/모바일 일체형 디자인)
   ========================================================================== */
.ent-manual-workspace-section {
  width: 100%;
  margin-top: 1.6rem;
  margin-bottom: 0.5rem;
  box-sizing: border-box;
}

.ent-manual-card-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 0.85rem;
  width: 100%;
  box-sizing: border-box;
}

.manual-arch-card {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  min-height: 140px;
  background: #ffffff;
  border: 1px solid #cbd5e1;
  border-radius: 6px;
  padding: 1rem 1.15rem;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.03);
  transition: all 0.2s cubic-bezier(0.16, 1, 0.3, 1);
  box-sizing: border-box;
}

.manual-arch-card:hover {
  transform: translateY(-2px);
  border-color: #0284c7;
  box-shadow: 0 6px 18px rgba(2, 132, 199, 0.12);
}

.manual-arch-card .arch-header {
  display: flex;
  align-items: center;
  gap: 0.55rem;
  margin-bottom: 0.45rem;
}

.manual-arch-card .arch-header h5 {
  font-size: 0.88rem;
  font-weight: 750;
  color: #0f172a;
  margin: 0;
  letter-spacing: -0.2px;
}

.manual-arch-card p {
  font-size: 0.78rem;
  color: #64748b;
  line-height: 1.5;
  margin: 0 0 0.85rem 0;
  word-break: keep-all;
  flex-grow: 1;
}

.manual-arch-card .arch-footer {
  margin-top: auto;
  width: 100%;
}

.ent-doc-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 5px;
  width: 100%;
  padding: 0.45rem 0.75rem;
  background: #f8fafc;
  border: 1px solid #cbd5e1;
  border-radius: 5px;
  font-size: 0.76rem;
  font-weight: 750;
  color: #334155;
  text-decoration: none;
  box-sizing: border-box;
  transition: all 0.18s ease;
}

.ent-doc-btn:hover {
  background: #0284c7;
  color: #ffffff;
  border-color: #0284c7;
  box-shadow: 0 2px 8px rgba(2, 132, 199, 0.25);
}

.ent-doc-btn.primary {
  background: #0284c7;
  color: #ffffff;
  border-color: #0284c7;
}

.ent-doc-btn.primary:hover {
  background: #0369a1;
  border-color: #0369a1;
  box-shadow: 0 4px 12px rgba(2, 132, 199, 0.35);
}

/* Responsive queries */
@media (max-width: 1200px) {
  .ent-manual-card-grid {
    grid-template-columns: repeat(2, 1fr);
    gap: 0.8rem;
  }
}

@media (max-width: 768px) {
  .manual-compact-inner {
    flex-direction: column;
    align-items: flex-start;
    gap: 1rem;
    padding: 1.1rem;
  }
  .manual-compact-btns {
    width: 100%;
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 0.6rem;
  }
  .btn-compact-manual {
    justify-content: center;
  }

  .ent-manual-workspace-section {
    margin-top: 1.2rem;
  }

  .ent-manual-card-grid {
    grid-template-columns: 1fr !important;
    gap: 0.75rem;
  }

  .manual-arch-card {
    padding: 0.85rem 1rem !important;
  }
}

@media (max-width: 480px) {
  .manual-compact-btns {
    grid-template-columns: 1fr;
  }
}
