/* markdown.css - Typography, Tables, Code Blocks & Zero-CLS AdSense Slots */

/* Markdown Typography */
.markdown-body {
  font-family: var(--font-sans);
  font-size: clamp(0.95rem, 1.5vw, 1.05rem);
  line-height: 1.8;
  color: var(--text-primary);
  word-break: keep-all;
  overflow-wrap: break-word;
}

.markdown-body h1 {
  font-size: clamp(1.6rem, 3.5vw, 2.25rem);
  font-weight: 800;
  margin-top: 0;
  margin-bottom: 1.25rem;
  padding-bottom: 0.75rem;
  border-bottom: 1px solid var(--border-color);
  letter-spacing: -0.025em;
  color: var(--text-primary);
  line-height: 1.35;
}

.markdown-body h2 {
  font-size: clamp(1.3rem, 2.5vw, 1.6rem);
  font-weight: 700;
  margin-top: 2.25rem;
  margin-bottom: 0.85rem;
  padding-bottom: 0.5rem;
  border-bottom: 1px solid var(--border-subtle);
  letter-spacing: -0.015em;
  color: var(--text-primary);
  line-height: 1.4;
  scroll-margin-top: calc(var(--header-height) + 1.2rem);
}

.markdown-body h3 {
  font-size: clamp(1.1rem, 2vw, 1.25rem);
  font-weight: 600;
  margin-top: 1.5rem;
  margin-bottom: 0.65rem;
  color: var(--text-primary);
  line-height: 1.45;
  scroll-margin-top: calc(var(--header-height) + 1.2rem);
}

.markdown-body p {
  margin-bottom: 1.25rem;
  color: var(--text-secondary);
}

.markdown-body strong {
  font-weight: 700;
  color: var(--text-primary);
}

.markdown-body a {
  color: var(--primary-color);
  text-decoration: underline;
  text-underline-offset: 3px;
  transition: color 0.15s ease;
}

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

.markdown-body ul,
.markdown-body ol {
  margin-bottom: 1.25rem;
  padding-left: 1.5rem;
}

.markdown-body ul {
  list-style-type: disc;
}

.markdown-body ol {
  list-style-type: decimal;
}

.markdown-body li {
  margin-bottom: 0.5rem;
  color: var(--text-secondary);
}

.markdown-body blockquote {
  margin: 1.5rem 0;
  padding: 0.75rem 1.25rem;
  border-left: 4px solid var(--primary-color);
  background-color: var(--bg-secondary);
  border-radius: 0 var(--radius-md) var(--radius-md) 0;
  color: var(--text-secondary);
  font-style: normal;
}

.markdown-body blockquote p:last-child {
  margin-bottom: 0;
}

.markdown-body hr {
  height: 1px;
  background-color: var(--border-color);
  border: none;
  margin: 2.5rem 0;
}

/* Tables */
.markdown-body table {
  width: 100%;
  border-collapse: collapse;
  margin: 1.5rem 0;
  font-size: 0.95rem;
  display: block;
  overflow-x: auto;
}

.markdown-body th,
.markdown-body td {
  padding: 0.75rem 1rem;
  border: 1px solid var(--border-color);
  text-align: left;
}

.markdown-body th {
  background-color: var(--bg-secondary);
  font-weight: 600;
  color: var(--text-primary);
}

.markdown-body tr:nth-child(even) {
  background-color: var(--bg-secondary);
}

/* Inline Code */
.markdown-body :not(pre) > code {
  font-family: var(--font-mono);
  font-size: 0.875em;
  padding: 0.2em 0.4em;
  border-radius: var(--radius-sm);
  background-color: var(--code-inline-bg);
  color: var(--code-inline-text);
  border: 1px solid var(--border-color);
}

/* Code Blocks & Copy Button */
.code-block-wrapper {
  position: relative;
  margin: 1.5rem 0;
  border-radius: var(--radius-md);
  border: 1px solid var(--code-border);
  background-color: var(--code-bg);
  overflow: hidden;
}

.code-block-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0.4rem 1rem;
  background-color: var(--bg-secondary);
  border-bottom: 1px solid var(--border-color);
  font-size: 0.75rem;
  font-family: var(--font-mono);
  color: var(--text-muted);
}

.code-copy-btn {
  display: flex;
  align-items: center;
  gap: 0.35rem;
  padding: 0.2rem 0.5rem;
  font-size: 0.75rem;
  border-radius: var(--radius-sm);
  background-color: var(--bg-surface);
  border: 1px solid var(--border-color);
  color: var(--text-secondary);
  transition: all 0.15s ease;
}

.code-copy-btn:hover {
  background-color: var(--bg-hover);
  color: var(--text-primary);
}

.markdown-body pre {
  margin: 0;
  padding: 1rem 1.25rem;
  overflow-x: auto;
  background: transparent !important;
}

.markdown-body pre code {
  font-family: var(--font-mono);
  font-size: 0.9rem;
  line-height: 1.5;
  background: transparent !important;
  padding: 0 !important;
  color: var(--text-primary);
}

/* Built-in Syntax Highlighting Tokens (Light & Dark) */
.hljs-keyword, .hljs-selector-tag, .hljs-built_in, .hljs-name, .hljs-tag {
  color: #cf222e;
  font-weight: 600;
}
.hljs-string, .hljs-title, .hljs-section, .hljs-attribute, .hljs-literal, .hljs-template-tag, .hljs-template-variable, .hljs-type, .hljs-addition {
  color: #0a3069;
}
.hljs-comment, .hljs-quote, .hljs-deletion, .hljs-meta {
  color: #6e7781;
  font-style: italic;
}
.hljs-number, .hljs-regexp, .hljs-link {
  color: #0550ae;
}
.hljs-function, .hljs-params {
  color: #8250df;
}

/* Dark Mode Syntax Tokens */
[data-theme="dark"] .hljs-keyword,
[data-theme="dark"] .hljs-selector-tag,
[data-theme="dark"] .hljs-built_in,
[data-theme="dark"] .hljs-name,
[data-theme="dark"] .hljs-tag {
  color: #ff7b72;
}
[data-theme="dark"] .hljs-string,
[data-theme="dark"] .hljs-title,
[data-theme="dark"] .hljs-section,
[data-theme="dark"] .hljs-attribute,
[data-theme="dark"] .hljs-literal,
[data-theme="dark"] .hljs-template-tag,
[data-theme="dark"] .hljs-template-variable,
[data-theme="dark"] .hljs-type,
[data-theme="dark"] .hljs-addition {
  color: #a5d6ff;
}
[data-theme="dark"] .hljs-comment,
[data-theme="dark"] .hljs-quote,
[data-theme="dark"] .hljs-deletion,
[data-theme="dark"] .hljs-meta {
  color: #8b949e;
}
[data-theme="dark"] .hljs-number,
[data-theme="dark"] .hljs-regexp,
[data-theme="dark"] .hljs-link {
  color: #79c0ff;
}
[data-theme="dark"] .hljs-function,
[data-theme="dark"] .hljs-params {
  color: #d2a8ff;
}

/* ========================================================= */
/* Zero-CLS Google AdSense Ad Slots                          */
/* ========================================================= */

.adsense-slot-container {
  width: 100%;
  margin: 2.5rem 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  clear: both;
}

/* CLS = 0 방지를 위해 고정 최소 높이 및 배경 사전 예약 */
.adsense-wrapper {
  position: relative;
  width: 100%;
  max-width: 100%;
  min-height: 280px; /* 표준 반응형 직사각형/리더보드 높이 확보 */
  background-color: var(--ad-bg);
  border: 1px dashed var(--ad-border);
  border-radius: var(--radius-md);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  box-sizing: border-box;
  transition: background-color var(--transition-speed) ease;
}

/* Ad Header Label */
.adsense-label {
  font-size: 0.65rem;
  font-weight: 600;
  letter-spacing: 1px;
  text-transform: uppercase;
  color: var(--ad-text);
  margin-bottom: 0.5rem;
}

/* 실제 adsbygoogle ins 태그 */
.adsense-wrapper ins.adsbygoogle {
  display: block !important;
  width: 100% !important;
  min-height: 250px;
  text-align: center;
}

/* Ad Placement specific variants */
.adsense-top {
  margin-top: 1rem;
  margin-bottom: 2rem;
}

.adsense-mid {
  margin: 2.5rem 0;
}

.adsense-bottom {
  margin-top: 3rem;
  margin-bottom: 1.5rem;
}

/* Fallback / Test Placeholder Text */
.ad-test-badge {
  font-size: 0.8rem;
  color: var(--text-muted);
  background: rgba(0,0,0,0.03);
  padding: 0.25rem 0.75rem;
  border-radius: var(--radius-sm);
  border: 1px solid var(--border-color);
  margin-top: 0.5rem;
}

/* ============================================================
 * StartGuide 수동 광고 섹션 제어 (기본: 숨김 / 필요 시 활성화 가능)
 * 기본 자동 광고 스크립트는 head에 정상 로드되어 동작합니다.
 * ============================================================ */
.manual-ad-section,
.adsense-slot-container,
.ad-section-slot,
.adsense-wrapper {
  display: none !important;
}
