/* ── 문서 렌더링 전용 스타일 ── */
/* ── TOC (Table of Contents) ── */
.wiki-toc {
  background: var(--wiki-card-bg);
  border: 1px solid var(--wiki-border);
  border-radius: 8px;
  padding: 1.5rem;
  box-shadow: none;
  margin-bottom: 2rem;
}

/* ── 본문 상단 인라인 목차 카드 (좌측 플로팅, 도입부·본문이 우측·하단을 감쌈) ── */
/* #articleContent 가 플로팅 카드를 포함하도록 BFC 를 형성한다(카드 active 시에만 적용) */
.wiki-content.wiki-has-inline-toc {
  display: flow-root;
}

.wiki-toc-card {
  float: left;
  width: clamp(220px, 28%, 320px);
  margin: 0 1.25rem 1rem 0;
  background: var(--wiki-card-bg);
  border: 1px solid var(--wiki-border);
  border-radius: 8px;
  box-shadow: var(--wiki-shadow-sm);
  overflow: hidden;
}

/* 도입부 래퍼: 기본 블록으로 두어 도입부 텍스트가 목차 카드 옆을 감싸다가,
   카드보다 길어지면 카드 아래에서 자동으로 문서 전체 폭을 사용하도록 한다.
   (BFC 를 적용하면 도입부가 카드 우측 좁은 컬럼에 고정되어 카드 아래로 흐르지 못함) */
.wiki-lead-body {
  min-width: 0;
}

/* 도입부 첫/마지막 요소의 수직 여백 정리 — :::card 등 첫 블록을 카드 상단과 정렬 */
.wiki-lead-body > :first-child {
  margin-top: 0;
}

.wiki-lead-body > :last-child {
  margin-bottom: 0;
}

/* 첫 헤딩 직전에 삽입되어 도입부 이후 본문이 float 를 해제하고 전체 폭을 쓰게 한다 */
.wiki-toc-clear {
  clear: both;
}

.wiki-toc-card-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
  padding: 0.6rem 0.85rem;
  font-weight: 600;
  font-size: 0.85rem;
  color: var(--wiki-text);
  border-bottom: 1px solid var(--wiki-border);
}

.wiki-toc-card-title i {
  color: var(--wiki-primary);
}

.wiki-toc-card-toggle {
  background: none;
  border: none;
  color: var(--wiki-text-muted);
  cursor: pointer;
  padding: 0;
  font-size: 0.85rem;
  line-height: 1;
  transition: color 0.15s;
}

.wiki-toc-card-toggle:hover {
  color: var(--wiki-text);
}

/* 펼치기/접기 애니메이션: grid-template-rows 0fr↔1fr (섹션 접기와 동일 패턴) */
.wiki-toc-card-body {
  display: grid;
  grid-template-rows: 1fr;
  transition: grid-template-rows 0.3s ease;
}

.wiki-toc-card-collapsed .wiki-toc-card-body {
  grid-template-rows: 0fr;
}

.wiki-toc-card-collapsed .wiki-toc-card-head {
  border-bottom: none;
}

.wiki-toc-card-nav {
  overflow: hidden;
  min-height: 0;
  padding: 0 0.85rem;
  font-size: 0.8rem;
}

.wiki-toc-card-nav ol,
.wiki-toc-card-nav ul {
  list-style: none;
  padding-left: 0;
  margin: 0;
  text-align: left;
}

/* 최상위 목록에만 상하 여백 — 접힘 시 grid 0fr 로 완전히 가려지도록 nav 패딩은 0 */
.wiki-toc-card-nav > ol {
  margin-block: 0.5rem;
}

.wiki-toc-card-nav ol ol,
.wiki-toc-card-nav ul ul {
  padding-left: 0.9rem;
}

.wiki-toc-card-nav li {
  margin: 0.15rem 0;
}

.wiki-toc-card-nav a {
  color: var(--wiki-text);
  text-decoration: none;
  display: block;
  padding: 0.2rem 0.35rem;
  border-radius: 6px;
  transition: background 0.15s, color 0.15s;
}

.wiki-toc-card-nav a:hover {
  background: var(--wiki-toc-bg);
  color: var(--wiki-primary);
}

/* 본문 헤딩과 동일한 계층 번호 prefix */
.wiki-toc-card-nav .wiki-toc-num {
  color: var(--wiki-text-muted);
  margin-right: 0.15rem;
}

/* 모바일: 플로팅 해제, 카드 전체 폭(목차 위 → 본문 아래로 스택) */
@media (max-width: 768px) {
  .wiki-toc-card {
    float: none;
    width: 100%;
    margin: 0 0 1rem 0;
  }
}

/* Accordion Override (Premium UI) */
.accordion-item {
  background-color: var(--wiki-bg);
  border: 1px solid var(--wiki-border) !important;
  margin-bottom: 0.75rem;
  border-radius: 3px !important;
  box-shadow: var(--wiki-shadow-sm);
  overflow: hidden;
  transition: box-shadow 0.2s ease;
}

.accordion-item:hover {
  box-shadow: var(--wiki-shadow);
}

.accordion-button {
  background-color: var(--wiki-bg);
  color: var(--wiki-text);
  font-weight: 600;
  box-shadow: none !important;
  padding: 1rem 1.5rem;
}

.accordion-button:not(.collapsed) {
  color: var(--wiki-primary);
  background-color: var(--wiki-card-bg);
  /* 열렸을 때 배경색 살짝 변경 */
  box-shadow: none !important;
  border-bottom: 1px solid var(--wiki-border);
  /* 본문과 구분선 */
}

.accordion-body {
  padding: 1.5rem;
  background-color: var(--wiki-bg);
  color: var(--wiki-text);
}

/* ── Typography & Content ── */
.wiki-content {
  color: var(--wiki-text);
  word-break: break-all;
  overflow-wrap: break-word;
  overflow-x: clip;
  max-width: 100%;
}

.wiki-content iframe:not(.ratio > iframe),
.wiki-content video:not(.ratio > video),
.wiki-content embed:not(.ratio > embed),
.wiki-content object:not(.ratio > object) {
  max-width: 100%;
  height: auto;
}

.wiki-content h1,
.wiki-content h2,
.wiki-content h3 {
  margin-top: 2.5rem;
  margin-bottom: 1rem;
  font-weight: 700;
  color: var(--wiki-text);
}

.wiki-content h2 {
  font-size: 1.6rem;
  padding-bottom: 0.5rem;
  border-bottom: 1px solid var(--wiki-border);
  /* 얇고 뚜렷한 선 */
}

/* ── 접을 수 있는 섹션 ── */
.wiki-content .wiki-section-heading {
  cursor: pointer;
  display: flex;
  align-items: baseline;
  user-select: none;
}

/* 헤딩 내용물(번호/텍스트/인라인 코드)을 하나의 flex item으로 감싸서
   텍스트와 <code>가 분리되어 어긋나게 줄바꿈되지 않도록 한다.
   min-width:0 으로 내부 내용이 좁은 폭에서 자연스럽게 wrap 되도록 허용. */
.wiki-content .wiki-section-heading-text {
  min-width: 0;
}

.wiki-section-toggle-icon {
  margin-right: 0.5rem;
  font-size: 0.7em;
  color: var(--wiki-text-muted);
  flex-shrink: 0;
}

.wiki-section-toggle-icon i {
  display: inline-block;
  transition: transform 0.25s ease;
}

.wiki-section-collapsed>.wiki-section-heading .wiki-section-toggle-icon i {
  transform: rotate(-90deg);
}

.wiki-section-collapsed>.wiki-section-heading {
  color: var(--wiki-text-muted);
}

.wiki-section-body {
  display: grid;
  grid-template-rows: 1fr;
  transition: grid-template-rows 0.3s ease;
}

.wiki-section-collapsed>.wiki-section-body {
  grid-template-rows: 0fr;
}

.wiki-section-body-inner {
  overflow: hidden;
}

.wiki-content p {
  margin-bottom: 1.2rem;
  line-height: 1.8;
}

.wiki-content img {
  border-radius: 8px;
  margin: 1.5rem 0;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
  /* 이미지만 살짝 띄우기 */
  max-width: 100%;
  height: auto;
  border: 1px solid var(--wiki-border);
  /* 이미지 테두리 처리 */
}

/* 다크 모드 미디어 가독성 최적화 (눈부심 방지) */
@media (prefers-color-scheme: dark) {
  html:not([data-theme="light"]) .wiki-content img:not([data-size="icon"]),
  html:not([data-theme="light"]) .wiki-content video {
    filter: opacity(0.85) brightness(0.9);
    transition: filter 0.25s var(--wiki-ease);
  }
  html:not([data-theme="light"]) .wiki-content img:not([data-size="icon"]):hover,
  html:not([data-theme="light"]) .wiki-content video:hover {
    filter: none;
  }
}
html[data-theme="dark"] .wiki-content img:not([data-size="icon"]),
html[data-theme="dark"] .wiki-content video {
  filter: opacity(0.85) brightness(0.9);
  transition: filter 0.25s var(--wiki-ease);
}
html[data-theme="dark"] .wiki-content img:not([data-size="icon"]):hover,
html[data-theme="dark"] .wiki-content video:hover {
  filter: none;
}

.wiki-content img[data-size="icon"] {
  border-radius: 0;
  margin: 0;
  box-shadow: none;
  border: none;
  vertical-align: middle;
}

/* 인라인 코드 블록 */
/* (--wiki-code-font 은 style.css :root 에서 사이트 전역 토큰으로 정의됨) */
.wiki-content code {
  background: var(--wiki-code-bg);
  padding: 0.2rem 0.4rem;
  border-radius: 8px;
  font-size: 0.9em;
  color: var(--wiki-primary);
  border: 1px solid var(--wiki-border);
  box-shadow: none;
  word-break: break-all;
  overflow-wrap: break-word;
  font-family: var(--wiki-code-font) !important;
}

/* 큰 코드 블록 (Wrapper로 마진 이동) */
.wiki-code-wrapper {
  position: relative;
  margin: 1.5rem 0;
}

.wiki-content pre {
  background: var(--wiki-code-bg);
  color: var(--wiki-text);
  padding: 1.2rem;
  border-radius: 8px;
  white-space: pre-wrap;
  word-break: break-all;
  overflow-wrap: break-word;
  margin: 0;
  box-shadow: none;
  border: 1px solid var(--wiki-border);
  font-family: var(--wiki-code-font) !important;
}

.wiki-content pre code {
  background: transparent;
  padding: 0;
  border: none;
  color: inherit;
  font-size: inherit;
  word-break: inherit;
  overflow-wrap: inherit;
  font-family: var(--wiki-code-font) !important;
}

/* ── Prism.js: VS Code Dark+/Light+ 스타일 테마 ──
   기본(라이트) 값은 VS Code Light+ 기준, 다크 모드는 Dark+ 기준으로 오버라이드한다.
   색상 변수는 이 블록 안에서만 쓰이며, 토큰 선택자에서 참조한다. */
.wiki-content pre[class*="language-"],
.wiki-content pre[class*="language-"] code[class*="language-"] {
  /* VS Code Light+ (기본값) */
  --vscode-bg: #ffffff;
  --vscode-fg: #000000;
  --vscode-comment: #008000;
  --vscode-string: #a31515;
  --vscode-number: #098658;
  --vscode-keyword: #0000ff;
  --vscode-function: #795e26;
  --vscode-class: #267f99;
  --vscode-variable: #001080;
  --vscode-property: #0070c1;
  --vscode-tag: #800000;
  --vscode-attr-name: #e50000;
  --vscode-attr-value: #0000ff;
  --vscode-regex: #811f3f;
  --vscode-operator: #000000;
  --vscode-selection: #add6ff;
}

/* 시스템 다크 모드 자동 적용 (사이트에서 라이트 모드를 강제하지 않은 경우에만) */
@media (prefers-color-scheme: dark) {
  html:not([data-theme="light"]) .wiki-content pre[class*="language-"],
  html:not([data-theme="light"]) .wiki-content pre[class*="language-"] code[class*="language-"] {
    /* VS Code Dark+ */
    --vscode-bg: #000000;
    --vscode-fg: #d4d4d4;
    --vscode-comment: #6a9955;
    --vscode-string: #ce9178;
    --vscode-number: #b5cea8;
    --vscode-keyword: #569cd6;
    --vscode-function: #dcdcaa;
    --vscode-class: #4ec9b0;
    --vscode-variable: #9cdcfe;
    --vscode-property: #9cdcfe;
    --vscode-tag: #569cd6;
    --vscode-attr-name: #9cdcfe;
    --vscode-attr-value: #ce9178;
    --vscode-regex: #d16969;
    --vscode-operator: #d4d4d4;
    --vscode-selection: #264f78;
  }
}

/* 사용자 강제 라이트 모드 */
html[data-theme="light"] .wiki-content pre[class*="language-"],
html[data-theme="light"] .wiki-content pre[class*="language-"] code[class*="language-"] {
  --vscode-bg: #ffffff;
  --vscode-fg: #000000;
  --vscode-comment: #008000;
  --vscode-string: #a31515;
  --vscode-number: #098658;
  --vscode-keyword: #0000ff;
  --vscode-function: #795e26;
  --vscode-class: #267f99;
  --vscode-variable: #001080;
  --vscode-property: #0070c1;
  --vscode-tag: #800000;
  --vscode-attr-name: #e50000;
  --vscode-attr-value: #0000ff;
  --vscode-regex: #811f3f;
  --vscode-operator: #000000;
  --vscode-selection: #add6ff;
}

/* 사용자 강제 다크 모드 */
html[data-theme="dark"] .wiki-content pre[class*="language-"],
html[data-theme="dark"] .wiki-content pre[class*="language-"] code[class*="language-"] {
  --vscode-bg: #000000;
  --vscode-fg: #d4d4d4;
  --vscode-comment: #6a9955;
  --vscode-string: #ce9178;
  --vscode-number: #b5cea8;
  --vscode-keyword: #569cd6;
  --vscode-function: #dcdcaa;
  --vscode-class: #4ec9b0;
  --vscode-variable: #9cdcfe;
  --vscode-property: #9cdcfe;
  --vscode-tag: #569cd6;
  --vscode-attr-name: #9cdcfe;
  --vscode-attr-value: #ce9178;
  --vscode-regex: #d16969;
  --vscode-operator: #d4d4d4;
  --vscode-selection: #264f78;
}

/* Prism.js 코드블럭 컨테이너 */
.wiki-content pre[class*="language-"] {
  background: var(--vscode-bg) !important;
  color: var(--vscode-fg) !important;
  padding: 1.2rem !important;
  border-radius: 8px !important;
  white-space: pre-wrap !important;
  word-break: break-all !important;
  overflow-wrap: break-word !important;
  margin: 0 !important;
  box-shadow: none !important;
  border: 1px solid var(--wiki-border) !important;
  text-shadow: none !important;
  font-family: var(--wiki-code-font) !important;
  tab-size: 4;
  -moz-tab-size: 4;
}

.wiki-content pre[class*="language-"] code[class*="language-"] {
  background: transparent !important;
  padding: 0 !important;
  border: none !important;
  color: inherit !important;
  font-size: inherit !important;
  word-break: inherit !important;
  overflow-wrap: inherit !important;
  text-shadow: none !important;
  font-family: var(--wiki-code-font) !important;
}

.wiki-content pre[class*="language-"] ::selection {
  background: var(--vscode-selection);
  text-shadow: none;
}
.wiki-content pre[class*="language-"] ::-moz-selection {
  background: var(--vscode-selection);
  text-shadow: none;
}

/* Prism 토큰 색상 (VS Code Dark+/Light+ 매핑) */
.wiki-content pre[class*="language-"] .token.comment,
.wiki-content pre[class*="language-"] .token.prolog,
.wiki-content pre[class*="language-"] .token.doctype,
.wiki-content pre[class*="language-"] .token.cdata {
  color: var(--vscode-comment);
  font-style: italic;
}

.wiki-content pre[class*="language-"] .token.punctuation {
  color: var(--vscode-fg);
}

.wiki-content pre[class*="language-"] .token.namespace {
  opacity: 0.7;
}

.wiki-content pre[class*="language-"] .token.string,
.wiki-content pre[class*="language-"] .token.char,
.wiki-content pre[class*="language-"] .token.attr-value,
.wiki-content pre[class*="language-"] .token.inserted {
  color: var(--vscode-string);
}

.wiki-content pre[class*="language-"] .token.number,
.wiki-content pre[class*="language-"] .token.boolean,
.wiki-content pre[class*="language-"] .token.constant,
.wiki-content pre[class*="language-"] .token.symbol {
  color: var(--vscode-number);
}

.wiki-content pre[class*="language-"] .token.keyword,
.wiki-content pre[class*="language-"] .token.atrule,
.wiki-content pre[class*="language-"] .token.important,
.wiki-content pre[class*="language-"] .token.rule {
  color: var(--vscode-keyword);
  font-weight: 500;
}

.wiki-content pre[class*="language-"] .token.function,
.wiki-content pre[class*="language-"] .token.method {
  color: var(--vscode-function);
}

.wiki-content pre[class*="language-"] .token.class-name,
.wiki-content pre[class*="language-"] .token.builtin,
.wiki-content pre[class*="language-"] .token.type-class-name {
  color: var(--vscode-class);
}

.wiki-content pre[class*="language-"] .token.variable,
.wiki-content pre[class*="language-"] .token.parameter {
  color: var(--vscode-variable);
}

.wiki-content pre[class*="language-"] .token.property {
  color: var(--vscode-property);
}

.wiki-content pre[class*="language-"] .token.tag,
.wiki-content pre[class*="language-"] .token.selector {
  color: var(--vscode-tag);
}

.wiki-content pre[class*="language-"] .token.attr-name {
  color: var(--vscode-attr-name);
}

.wiki-content pre[class*="language-"] .token.operator,
.wiki-content pre[class*="language-"] .token.entity,
.wiki-content pre[class*="language-"] .token.url {
  color: var(--vscode-operator);
  background: transparent;
}

.wiki-content pre[class*="language-"] .token.regex {
  color: var(--vscode-regex);
}

.wiki-content pre[class*="language-"] .token.deleted {
  color: #ce9178;
}

.wiki-content pre[class*="language-"] .token.italic {
  font-style: italic;
}

.wiki-content pre[class*="language-"] .token.bold {
  font-weight: 700;
}

/* 코드 복사 버튼 */
.btn-copy-code {
  position: absolute;
  top: 0.5rem;
  right: 0.5rem;
  background: transparent;
  border: 1px solid transparent;
  color: var(--wiki-text-muted);
  border-radius: 8px;
  padding: 0.3rem 0.5rem;
  cursor: pointer;
  transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0.7;
  font-size: 1rem;
}

.btn-copy-code:hover,
.btn-copy-code:focus {
  background: var(--wiki-card-bg);
  border-color: var(--wiki-border);
  color: var(--wiki-text);
  opacity: 1;
}

.btn-copy-code:active {
  transform: translateY(1px);
}

/* 헤딩 섹션 복사 버튼 */
.wiki-heading-copy-btn,
.wiki-heading-link-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.5em;
  height: 1.5em;
  margin-left: 0.35em;
  padding: 0;
  border: 1px solid transparent;
  border-radius: 5px;
  background: transparent;
  color: var(--wiki-text-muted);
  font-size: 0.65em;
  cursor: pointer;
  opacity: 1;
  transition: background 0.15s, border-color 0.15s, color 0.15s;
  vertical-align: middle;
  line-height: 1;
  flex-shrink: 0;
}

.wiki-heading-link-btn {
  margin-left: 0.2em;
  font-size: 0.85em;
}

.wiki-heading-copy-btn:hover,
.wiki-heading-copy-btn:focus,
.wiki-heading-link-btn:hover,
.wiki-heading-link-btn:focus {
  background: var(--wiki-card-bg);
  border-color: var(--wiki-border);
  color: var(--wiki-text);
  opacity: 1;
}

.wiki-heading-copy-btn:active,
.wiki-heading-link-btn:active {
  transform: translateY(1px);
}

/* 헤딩 섹션 편집 버튼 (복사 버튼 옆에 위치) */
.wiki-heading-edit-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.5em;
  height: 1.5em;
  margin-left: 0.2em;
  padding: 0;
  border: 1px solid transparent;
  border-radius: 5px;
  background: transparent;
  color: var(--wiki-text-muted);
  font-size: 0.65em;
  cursor: pointer;
  opacity: 1;
  transition: background 0.15s, border-color 0.15s, color 0.15s;
  vertical-align: middle;
  line-height: 1;
  flex-shrink: 0;
  text-decoration: none;
}

.wiki-heading-edit-btn:hover,
.wiki-heading-edit-btn:focus {
  background: var(--wiki-card-bg);
  border-color: var(--wiki-border);
  color: var(--wiki-text);
  opacity: 1;
  text-decoration: none;
}

.wiki-heading-edit-btn:active {
  transform: translateY(1px);
}

/* 인용구 - 위키백과/나무위키 정석 스타일 */
.wiki-content blockquote {
  border-left: 4px solid var(--wiki-primary);
  /* 왼쪽 강조선 */
  padding: 1rem 1.5rem;
  margin: 1.5rem 0;
  background: var(--wiki-card-bg);
  border-radius: 0 5px 5px 0;
  color: var(--wiki-text-muted);
  box-shadow: none;
}

/* Tables - 데이터가 잘 보이는 구조 */
.wiki-content table {
  width: 100%;
  margin: 1.5rem 0;
  border-collapse: collapse;
  /* separate 대신 collapse */
  border-radius: 8px;
  overflow: hidden;
  /* 모바일에서 표가 화면을 벗어나지 않도록 감싸기 */
  display: block;
  /* 가로 스크롤 허용용 */
  overflow-x: auto;
  white-space: nowrap;
  /* 셀 내용이 강제 개행되지 않도록 설정해 가로 스크롤 작동 */
  box-shadow: none;
  background: var(--wiki-bg);
  border: 1px solid var(--wiki-border);
  /* 테이블 외곽선 */
}

@media (min-width: 768px) {
  .wiki-content table {
    display: table;
    white-space: normal;
  }
}

.wiki-content table th,
.wiki-content table td {
  padding: 0.8rem 1rem;
  border: 1px solid var(--wiki-border);
  /* 셀 간 격자선 (데이터 보기에 필수) */
}

.wiki-content table th {
  background: var(--wiki-card-bg);
  font-weight: 700;
  color: var(--wiki-text);
}

.wiki-content a {
  color: var(--wiki-primary);
  text-decoration: none;
  font-weight: 500;
  transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
}

.wiki-content a:hover {
  color: var(--wiki-primary-hover);
  text-decoration: underline;
  /* 글로우 효과 대신 정석적인 밑줄 */
}

/* 마크다운 구분선 (---) */
.wiki-content hr {
  border: none;
  border-top: 2px solid var(--wiki-hr-color);
  margin: 2rem 0;
  opacity: 1;
}

/* Diff view (.diff-*, .rich-diff-*) 는 public/css/diff.css 로 분리. */
/* Parent docs breadcrumb (.parent-docs-*) 와 backlinks section 은 public/css/wiki-nav.css 로 분리. */

/* Category list heading inside article (for inline category lists) */
.category-list h4 {
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--wiki-text-muted);
}

.category-list h4 i {
  color: var(--wiki-primary);
}

.wiki-tree-line {
  font-family: monospace;
  white-space: pre;
  line-height: 1.6;
}

/* Category list grid + character grouping */
.category-list .category-groups {
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
  margin-top: 0.75rem;
}

.category-list .category-group {
  display: block;
}

.category-list .category-group-label {
  font-size: 1rem;
  font-weight: 700;
  color: var(--wiki-primary);
  margin: 0 0 0.5rem 0;
  padding-bottom: 0.25rem;
  border-bottom: 1px solid var(--wiki-border);
}

.category-list .category-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
  gap: 0.5rem;
}

.category-list .category-item {
  display: flex;
  align-items: center;
  gap: 0.35rem;
  padding: 0.45rem 0.65rem;
  border: 1px solid var(--wiki-border);
  border-radius: 6px;
  background: var(--wiki-card-bg);
  color: var(--wiki-text);
  text-decoration: none;
  overflow: hidden;
  min-width: 0;
}

.category-list .category-item:hover,
.category-list .category-item:focus {
  border-color: var(--wiki-primary);
  background: var(--wiki-bg);
  text-decoration: none;
}

.category-list .category-item-name {
  flex: 1 1 auto;
  min-width: 0;
  overflow-wrap: anywhere;
  word-break: break-word;
  line-height: 1.35;
}

.category-list .category-summary {
  margin-top: 0.25rem;
}

.category-list .category-pagination {
  display: flex;
  flex-wrap: wrap;
  gap: 0.25rem;
  justify-content: center;
  align-items: center;
  margin-top: 1.5rem;
}

.category-list .category-pagination button {
  min-width: 2.25rem;
}

.category-list .category-pagination-ellipsis {
  padding: 0 0.25rem;
  color: var(--wiki-text-muted);
}
/* ── Folding Block (펼치기/접기) ── */
.wiki-fold {
  background-color: var(--wiki-card-bg);
  border-color: var(--wiki-border) !important;
}

.wiki-fold>summary {
  color: var(--wiki-text);
  list-style: none;
  user-select: none;
  cursor: pointer;
}

.wiki-fold>summary::-webkit-details-marker {
  display: none;
}

.wiki-fold>summary::before {
  content: '▶ ';
  font-size: 0.75em;
  margin-right: 0.3em;
  transition: transform 0.2s;
  display: inline-block;
}

.wiki-fold[open]>summary::before {
  transform: rotate(90deg);
}

.wiki-fold-content {
  background-color: var(--wiki-bg);
  color: var(--wiki-text);
  border-color: var(--wiki-border) !important;
}

/* ── 펼치기/접기 (Folding) 내용물 애니메이션 ── */
/* 기본 폴백: 열릴 때 부드럽게 나타나는 애니메이션 (모든 브라우저 지원) */
.wiki-fold[open] .wiki-fold-content {
  animation: fold-show 0.3s ease-out;
}

@keyframes fold-show {
  0% {
    opacity: 0;
    transform: translateY(-10px);
  }

  100% {
    opacity: 1;
    transform: translateY(0);
  }
}

/* 최신 브라우저(Chrome 129+ 등)용 네이티브 펼치고 접기 양방향 애니메이션 지원 */
@supports (interpolate-size: allow-keywords) {
  :root {
    interpolate-size: allow-keywords;
  }

  .wiki-fold::details-content {
    transition: height 0.3s ease-out, opacity 0.3s ease-out, content-visibility 0.3s allow-discrete;
    height: 0;
    opacity: 0;
    overflow: hidden;
  }

  .wiki-fold[open]::details-content {
    height: auto;
    opacity: 1;
  }

  .wiki-fold[open] .wiki-fold-content {
    /* Fallback 애니메이션 무효화 */
    animation: none;
  }
}
/* ── 플로팅 목차 패널 ── */
.toc-floating-panel {
  position: fixed;
  bottom: 6.5rem;
  right: 1.5rem;
  width: 280px;
  max-height: 60vh;
  display: flex;
  flex-direction: column;
  background: var(--wiki-glass-bg);
  backdrop-filter: var(--wiki-glass-blur);
  -webkit-backdrop-filter: var(--wiki-glass-blur);
  border: 1px solid var(--wiki-glass-border);
  border-radius: 8px;
  box-shadow: var(--wiki-shadow-lg);
  z-index: 1049;
  opacity: 0;
  pointer-events: none;
  transform: translateY(12px) scale(0.95);
  transition: opacity 0.25s ease, transform 0.25s ease;
}

.toc-floating-panel.visible {
  opacity: 1;
  pointer-events: auto;
  transform: translateY(0) scale(1);
}

.toc-floating-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0.6rem 0.85rem;
  font-weight: 600;
  font-size: 0.85rem;
  border-bottom: 1px solid var(--wiki-glass-border);
  color: var(--wiki-text);
}

.toc-floating-close {
  background: none;
  border: none;
  color: var(--wiki-text-muted);
  cursor: pointer;
  padding: 0;
  font-size: 0.8rem;
  line-height: 1;
  transition: color 0.15s;
}

.toc-floating-close:hover {
  color: var(--wiki-text);
}

.toc-floating-body {
  overflow-y: auto;
  padding: 0.5rem 0.85rem;
  font-size: 0.8rem;
}

.toc-floating-body ol,
.toc-floating-body ul {
  list-style: none;
  padding-left: 0;
  margin: 0;
  text-align: left;
}

.toc-floating-body ol ol,
.toc-floating-body ul ul {
  padding-left: 0.9rem;
}

.toc-floating-body li {
  margin: 0.15rem 0;
  text-align: left;
}

.toc-floating-body a {
  color: var(--wiki-text);
  text-decoration: none;
  display: block;
  padding: 0.2rem 0.35rem;
  border-radius: 8px;
  transition: background 0.15s, color 0.15s;
  text-align: left;
}

.toc-floating-body a:hover {
  background: var(--wiki-glass-border);
  color: var(--wiki-primary);
}

.toc-floating-body a.toc-active {
  background: rgba(0, 101, 145, 0.12);
  color: var(--wiki-primary);
  font-weight: 600;
  border-left: 3px solid var(--wiki-primary);
  padding-left: calc(0.35rem - 3px);
}

@media (prefers-color-scheme: dark) {
  html:not([data-theme="light"]) .toc-floating-body a.toc-active {
    background: rgba(56, 189, 248, 0.18);
  }
}
html[data-theme="dark"] .toc-floating-body a.toc-active {
  background: rgba(56, 189, 248, 0.18);
}

/* 아코디언 목차 스크롤 스파이 강조 */
#tocNav a.toc-active {
  color: var(--wiki-primary);
  font-weight: 600;
}

@media (max-width: 576px) {
  .toc-floating-panel {
    right: 0.75rem;
    width: calc(100vw - 1.5rem);
    max-height: 50vh;
    bottom: 5.5rem;
  }
}
/* ── 타임스탬프 문법 렌더링 ── */
.wiki-dday,
.wiki-timestamp,
.wiki-timer,
.wiki-dday-today,
.wiki-dday-past {
  display: inline;
  font-size: inherit;
  font-weight: inherit;
  font-family: inherit;
  color: inherit;
  background: none;
  border: none;
  padding: 0;
  line-height: inherit;
  vertical-align: baseline;
  cursor: default;
}

/* ── 캘린더 박스 렌더링 ── */
.wiki-calendar-box {
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  width: 5.5rem;
  border: 1px solid var(--wiki-border);
  border-radius: 8px;
  overflow: hidden;
  background: var(--wiki-card-bg);
  box-shadow: var(--wiki-shadow-sm);
  vertical-align: middle;
  cursor: default;
  text-align: center;
  line-height: 1;
}

.wiki-cal-month {
  display: block;
  width: 100%;
  padding: 4px 0;
  background: var(--wiki-primary);
  color: var(--wiki-btn-text);
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.05em;
}

.wiki-cal-day {
  display: block;
  padding: 4px 0 2px;
  font-size: 1.8rem;
  font-weight: 800;
  color: var(--wiki-text);
  line-height: 1.1;
}

.wiki-cal-dow {
  display: block;
  padding: 0 0 3px;
  font-size: 0.7rem;
  color: var(--wiki-text-muted);
  font-weight: 500;
}

.wiki-cal-dow.wiki-cal-sun {
  color: var(--wiki-danger);
}

.wiki-cal-dow.wiki-cal-sat {
  color: var(--wiki-primary);
}

.wiki-cal-year {
  display: block;
  padding: 2px 0 5px;
  font-size: 0.7rem;
  color: var(--wiki-text-muted);
  font-weight: 400;
}

.wiki-calendar-box--no-year .wiki-cal-dow {
  padding-bottom: 5px;
}


/* ── 체크박스 (Task List) ── */
.wiki-content input[type="checkbox"] {
  -webkit-appearance: none;
  appearance: none;
  width: 0.95em;
  height: 0.95em;
  border: 1.5px solid var(--wiki-border);
  border-radius: 3px;
  display: inline-block;
  vertical-align: middle;
  margin-right: 0.3em;
  position: relative;
  flex-shrink: 0;
  cursor: default;
  background: transparent;
  opacity: 1;
}

.wiki-content input[type="checkbox"][checked] {
  background: #22c55e;
  border-color: #22c55e;
}

.wiki-content input[type="checkbox"][checked]::after {
  content: '';
  position: absolute;
  left: 2px;
  top: -1px;
  width: 5px;
  height: 9px;
  border: 1.5px solid #fff;
  border-top: none;
  border-left: none;
  transform: rotate(45deg);
}

/* 익스텐션 경고/에러 메시지 */
.wiki-ext .alert {
  margin: 1rem 0;
  font-size: 0.875rem;
}

/* 익스텐션 문서 직접 열람 뷰 */
.wiki-ext-doc-view {
  margin: 0.5rem 0;
}

.wiki-ext-doc-rendered {
  min-height: 2rem;
}

.wiki-ext-doc-raw-toggle {
  display: flex;
  align-items: center;
}

/* 익스텐션 데이터 문서 원본 표시 */
.wiki-ext-raw-data {
  margin: 0.5rem 0;
}

.wiki-ext-raw-badge {
  display: inline-flex;
  align-items: center;
  gap: 0.375rem;
  padding: 0.25rem 0.75rem;
  font-size: 0.75rem;
  font-weight: 600;
  color: var(--wiki-text-muted);
  background: var(--wiki-bg);
  border: 1px solid var(--wiki-border);
  border-bottom: none;
  border-radius: 6px 6px 0 0;
}

.wiki-ext-raw-pre {
  background: var(--wiki-code-bg);
  color: var(--wiki-text);
  border: 1px solid var(--wiki-border);
  border-radius: 0 6px 6px 6px;
  padding: 1rem;
  margin: 0;
  font-size: 0.8rem;
  line-height: 1.5;
  max-height: 600px;
  overflow: auto;
  white-space: pre;
  font-family: 'Consolas', 'Monaco', 'Courier New', monospace;
}

/* 익스텐션 데이터 문서 에디터 (raw textarea) */
.wiki-ext-raw-editor {
  border: 1px solid var(--wiki-border);
  border-radius: 8px;
  overflow: hidden;
  background: var(--wiki-bg);
}

/* 이미지 문서 (/w/이미지:파일명) 뷰 */
.wiki-image-doc-view {
  margin: 0.5rem 0;
}

.wiki-image-doc-media {
  display: flex;
  justify-content: center;
  align-items: center;
  background: var(--wiki-bg);
  border: 1px solid var(--wiki-border);
  border-radius: 8px;
  padding: 1rem;
  margin-bottom: 1rem;
}

.wiki-image-doc-media img,
.wiki-image-doc-media video {
  max-width: 100%;
  max-height: 70vh;
  height: auto;
  border-radius: 4px;
}

.wiki-image-doc-text {
  margin-top: 1rem;
}

.wiki-image-doc-content {
  white-space: pre-wrap;
  word-wrap: break-word;
  overflow-wrap: anywhere;
  background: var(--wiki-bg);
  color: var(--wiki-text);
  border: 1px solid var(--wiki-border);
  border-radius: 8px;
  padding: 1rem;
  margin: 0;
  font-family: inherit;
  font-size: 1rem;
  line-height: 1.7;
}

/* 이미지 문서 하단 태그 배지 영역 */
.wiki-image-doc-tags {
  margin-top: 0.75rem;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
}

.wiki-image-doc-tags-label {
  font-size: 0.85rem;
  margin-right: 4px;
  display: inline-flex;
  align-items: center;
  gap: 2px;
}

.wiki-image-doc-tags-empty {
  font-size: 0.85rem;
  font-style: italic;
}

/* 본문 내 이미지 링크 (클릭 시 이미지 문서로 이동) */
.wiki-image-link {
  display: inline-block;
  line-height: 0;
  cursor: zoom-in;
}

.wiki-image-link:hover img {
  opacity: 1;
}

.wiki-ext-raw-editor-badge {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.5rem 0.875rem;
  font-size: 0.8rem;
  font-weight: 600;
  color: var(--wiki-text-muted);
  background: var(--wiki-card-bg);
  border-bottom: 1px solid var(--wiki-border);
}

.wiki-ext-raw-editor-hint {
  font-weight: 400;
  font-size: 0.75rem;
  opacity: 0.7;
}

.wiki-ext-raw-textarea {
  display: block;
  width: 100%;
  min-height: 600px;
  max-height: 80vh;
  padding: 1rem;
  margin: 0;
  border: none;
  outline: none;
  resize: vertical;
  background: var(--wiki-code-bg);
  color: var(--wiki-text);
  font-family: 'Consolas', 'Monaco', 'Courier New', monospace;
  font-size: 0.8rem;
  line-height: 1.5;
  white-space: pre;
  overflow: auto;
  tab-size: 4;
}

.wiki-ext-raw-textarea:focus {
  box-shadow: inset 0 0 0 2px color-mix(in srgb, var(--wiki-primary) 20%, transparent);
}

/*
 * 익스텐션 에디터 도구막대.
 * /ext/<name>/<name>-editor.js 가 mount(toolbarEl, api) 콜백에서 버튼을 추가한다.
 * 훅이 없으면 컨테이너는 빈 채로 렌더되며 .empty 선택자가 0-높이 처리한다.
 */
.wiki-ext-editor-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.4rem;
  padding: 0.45rem 0.75rem;
  background: var(--wiki-card-bg);
  border-bottom: 1px solid var(--wiki-border);
}

.wiki-ext-editor-toolbar:empty {
  display: none;
}

.wiki-ext-toolbar-btn {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  padding: 0.3rem 0.7rem;
  font-size: 0.78rem;
  font-weight: 600;
  color: var(--wiki-text);
  background: var(--wiki-bg);
  border: 1px solid var(--wiki-border);
  border-radius: 6px;
  cursor: pointer;
  transition: all 0.15s ease;
  white-space: nowrap;
}

.wiki-ext-toolbar-btn:hover {
  border-color: var(--wiki-border-focus);
  background: var(--wiki-card-bg);
  box-shadow: var(--wiki-shadow-sm);
}

.wiki-ext-toolbar-btn:active {
  transform: translateY(1px);
}

.wiki-ext-toolbar-btn[disabled] {
  opacity: 0.55;
  cursor: not-allowed;
}

/* ── Reading Mode ── */
.view-count-toggle {
  margin-left: auto;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  background: transparent;
  border: 1px solid var(--wiki-border);
  color: var(--wiki-text-muted);
  border-radius: 6px;
  padding: 0.25rem 0.6rem;
  font-size: 0.8rem;
  font-weight: 500;
  cursor: pointer;
  transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}

.view-count-toggle:hover {
  background: var(--wiki-bg);
  color: var(--wiki-primary);
  border-color: var(--wiki-primary);
}

.view-count-toggle:disabled {
  opacity: 0.6;
  cursor: not-allowed;
}

.view-count-toggle + .reading-mode-toggle {
  margin-left: 8px;
}

.reading-mode-toggle {
  margin-left: auto;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  background: transparent;
  border: 1px solid var(--wiki-border);
  color: var(--wiki-text-muted);
  border-radius: 6px;
  padding: 0.25rem 0.6rem;
  font-size: 0.8rem;
  font-weight: 500;
  cursor: pointer;
  transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}

.reading-mode-toggle:hover {
  background: var(--wiki-bg);
  color: var(--wiki-primary);
  border-color: var(--wiki-primary);
}

/* 모바일/태블릿(<992px)에서는 사이드바가 본문 아래로 쌓여 읽기 모드 의미가 없음 → 토글 숨김 */
@media (max-width: 991px) {
  .reading-mode-toggle {
    display: none !important;
  }
}

/* 읽기 모드: 모든 레이아웃 모드에서 양쪽 사이드바와 본문 하단 카드를 숨겨 본문만 남긴다.
   - .wiki-sidebar: 기본/우측 사이드바(트렌딩·최근 변경·커스텀 사이드바)
   - .wiki-toc-sidebar(좌측 목차, left-toc)·.wiki-nav-sidebar(좌측 그룹 트리, docs)·
     #wikiTocSidebarRight(우측 목차, docs)
   - .wiki-sidebar-bottom-relocated: left-toc/docs 에서 본문 하단으로 옮긴 카드 묶음 */
body.reading-mode .wiki-sidebar,
body.reading-mode .wiki-toc-sidebar,
body.reading-mode .wiki-nav-sidebar,
body.reading-mode #wikiTocSidebarRight,
body.reading-mode .wiki-sidebar-bottom-relocated {
  display: none !important;
}

body.reading-mode .wiki-container {
  max-width: 960px;
  margin: 0 auto;
}

/* PC(≥992px)에서는 읽기 모드가 본문을 화면 가로 폭 최대치로 확장 */
@media (min-width: 992px) {
  body.reading-mode .wiki-layout {
    padding: 0 1rem;
    gap: 0;
  }

  body.reading-mode .wiki-container {
    max-width: 100%;
    margin: 0;
  }
}

body.reading-mode .reading-mode-toggle {
  display: none;
}

.reading-mode-exit-fab {
  background: var(--wiki-primary) !important;
  color: #fff !important;
  border-color: var(--wiki-primary) !important;
}

.reading-mode-exit-fab:hover {
  filter: brightness(1.05);
}

/* ── Raw 보기 모드 ── */
.wiki-content-raw {
  display: none;
  background: var(--wiki-code-bg);
  color: var(--wiki-text);
  padding: 1.2rem;
  border-radius: 8px;
  border: 1px solid var(--wiki-border);
  white-space: pre-wrap;
  word-break: break-word;
  overflow-wrap: break-word;
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
  font-size: 0.9rem;
  line-height: 1.55;
  margin: 0 0 1rem 0;
}

body.raw-mode #wikiAccordion,
body.raw-mode #parentDocsNav,
body.raw-mode #parentDocsSiblings,
body.raw-mode #parentDocsNavDivider,
body.raw-mode .wiki-content,
body.raw-mode .backlinks-section {
  display: none !important;
}

body.raw-mode .wiki-content-raw {
  display: block;
}

.raw-mode-exit-fab {
  background: var(--wiki-primary) !important;
  color: #fff !important;
  border-color: var(--wiki-primary) !important;
}

.raw-mode-exit-fab:hover {
  filter: brightness(1.05);
}

/* ── 고급 레이아웃 프리미티브 (::: 블록, 인라인 칩) ── */
.wiki-card {
  background: var(--wiki-card-bg);
  border: 1px solid var(--wiki-border);
  border-radius: 8px;
  padding: 0;
  margin-bottom: 1rem;
  box-shadow: var(--wiki-shadow-sm);
  overflow: hidden;
}

.wiki-card-header {
  padding: 0.75rem 1.25rem;
  font-size: 0.875rem;
  font-weight: 600;
  color: var(--wiki-text-muted);
  border-bottom: 1px solid var(--wiki-border);
  background: transparent;
}

.wiki-card-body {
  padding: 1rem 1.25rem;
  color: var(--wiki-text);
}

.wiki-card-body > :last-child {
  margin-bottom: 0;
}

.wiki-embed {
  border-left: 4px solid var(--wiki-link);
  background: var(--wiki-card-bg);
  border-radius: 4px;
  padding: 0.625rem 1rem;
  margin-bottom: 1rem;
  box-shadow: var(--wiki-shadow-sm);
}

.wiki-embed-title {
  font-size: 1.0625rem;
  font-weight: 700;
  color: var(--wiki-text);
  margin-top: 0;
  margin-bottom: 0.5rem;
  line-height: 1.3;
}

.wiki-embed-body {
  color: var(--wiki-text);
  font-size: 0.9375rem;
  line-height: 1.5;
}

.wiki-embed-body > :first-child {
  margin-top: 0;
}

.wiki-embed-body > :last-child {
  margin-bottom: 0;
}

.wiki-embed-body img {
  max-width: 100%;
  border-radius: 4px;
  margin-top: 0.5rem;
}

.wiki-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 0.625rem;
  margin-bottom: 1rem;
}

.wiki-grid > * {
  flex: 1 1 200px;
  max-width: 100%;
  min-width: 0;
  margin-bottom: 0;
}

/* 그리드 내부의 표는 항상 정상 table 레이아웃으로 그리드 트랙 폭을 가득 채운다.
   기본 .wiki-content table 의 모바일 규칙(display:block; overflow-x:auto; white-space:nowrap)
   은 셀이 콘텐츠 폭으로 줄어들면서 flex 트랙 우측에 빈 공간(=빈 칸처럼 보이는 영역)을 남기므로,
   그리드 내부에서는 사용하지 않는다. 대신 셀 콘텐츠를 적극적으로 줄바꿈해
   좁은 뷰포트에서도 트랙을 벗어나지 않도록 한다(가로 스크롤 불가능한 display:table 제약 보완). */
.wiki-content .wiki-grid > table {
  display: table;
  width: 100%;
  max-width: 100%;
  white-space: normal;
  margin-top: 0;
  margin-bottom: 0;
}

.wiki-content .wiki-grid > table th,
.wiki-content .wiki-grid > table td {
  overflow-wrap: anywhere;
  word-break: break-word;
}

.wiki-row {
  display: flex;
  flex-wrap: nowrap;
  align-items: flex-start;
  gap: 0.75rem;
  margin-bottom: 1rem;
  max-width: 100%;
  overflow-x: auto;
  scrollbar-width: thin;
}

.wiki-row > * {
  flex: 0 0 auto;
}

/* 행 내부의 표는 기본 반응형 동작을 유지하면서 자연 너비로 나란히 배치 */
.wiki-content .wiki-row table {
  width: auto;
  max-width: none;
  margin-top: 0;
  margin-bottom: 0;
}

/* 행 내부의 카드는 자연 너비로 나란히 배치하되 수직 여백 중복만 제거 */
.wiki-row > .wiki-card {
  margin-bottom: 0;
}

.wiki-stat {
  background: var(--wiki-bg);
  border: 1px solid var(--wiki-border);
  border-radius: 6px;
  padding: 0.9rem 0.75rem;
  text-align: center;
  display: flex;
  flex-direction: column;
  justify-content: center;
  min-height: 72px;
}

.wiki-stat-value {
  font-size: 1.375rem;
  font-weight: 500;
  line-height: 1.2;
  color: inherit;
  word-break: keep-all;
}

.wiki-stat-label {
  font-size: 0.75rem;
  color: var(--wiki-text-muted);
  margin-top: 0.25rem;
}

.wiki-badge {
  display: inline-block;
  padding: 2px 10px;
  border-radius: 20px;
  font-size: 0.6875rem;
  font-weight: 500;
  line-height: 1.4;
  white-space: nowrap;
  background: var(--wiki-bg);
  color: var(--wiki-text-muted);
  border: 1px solid var(--wiki-border);
  vertical-align: baseline;
  margin: 0 1px;
}

.wiki-tag {
  display: inline-block;
  padding: 1px 8px;
  border-radius: 10px;
  font-size: 0.6875rem;
  line-height: 1.5;
  background: var(--wiki-bg);
  color: var(--wiki-text-muted);
  border: 1px solid var(--wiki-border);
  margin: 2px 2px 0 0;
  vertical-align: baseline;
}

.wiki-block-hr {
  border: 0;
  border-top: 1px solid var(--wiki-border);
  margin: 0.625rem 0;
  opacity: 1;
}

a.wiki-button {
  display: inline-block;
  padding: 0.4rem 0.95rem;
  border-radius: 6px;
  font-size: 0.875rem;
  font-weight: 500;
  line-height: 1.4;
  background: var(--wiki-primary);
  color: var(--wiki-btn-text);
  border: 1px solid var(--wiki-primary);
  text-decoration: none;
  cursor: pointer;
  transition: filter 0.15s ease, transform 0.1s ease, box-shadow 0.15s ease;
  margin: 2px 2px;
  vertical-align: baseline;
  white-space: nowrap;
}

a.wiki-button:hover,
a.wiki-button:focus {
  filter: brightness(1.08);
  text-decoration: none;
  color: var(--wiki-btn-text);
  box-shadow: var(--wiki-shadow-sm);
}

a.wiki-button:active {
  transform: translateY(1px);
  filter: brightness(0.96);
}

a.wiki-button-custom {
  border-color: transparent;
}

a.wiki-button-custom:hover,
a.wiki-button-custom:focus {
  color: inherit;
}

a.wiki-button > .bi,
a.wiki-button > .mdi {
  display: inline-block;
  vertical-align: baseline;
  line-height: 1;
}

a.wiki-button > .wiki-button-label {
  margin-left: 0.35em;
}

.wiki-badge > .bi,
.wiki-badge > .mdi,
.wiki-tag > .bi,
.wiki-tag > .mdi {
  display: inline-block;
  vertical-align: baseline;
  line-height: 1;
}

.wiki-badge > .wiki-badge-label,
.wiki-tag > .wiki-tag-label {
  margin-left: 0.3em;
}

.wiki-stat-value > .bi,
.wiki-stat-value > .mdi {
  display: inline-block;
  vertical-align: baseline;
  line-height: 1;
}

.wiki-stat-value > .wiki-stat-value-text {
  margin-left: 0.35em;
}

.wiki-stat-value > .wiki-icon-img {
  display: inline-block;
  vertical-align: middle;
  width: 1.4em;
  height: 1.4em;
  object-fit: contain;
  border-radius: 3px;
}

.wiki-badge > .wiki-icon-img,
.wiki-tag > .wiki-icon-img,
.wiki-button > .wiki-icon-img,
.wiki-progress-label > .wiki-icon-img {
  display: inline-block;
  vertical-align: middle;
  width: 1em;
  height: 1em;
  object-fit: contain;
}

img[data-size="icon"] {
  height: 1.2em;
  width: auto;
  max-width: 4em;
  display: inline-block;
  vertical-align: middle;
  margin: 0 2px;
}

/* 카드 내부에서 제목·리스트 여백 조정 */
.wiki-card-body > h1:first-child,
.wiki-card-body > h2:first-child,
.wiki-card-body > h3:first-child,
.wiki-card-body > h4:first-child {
  margin-top: 0;
}

/* ── 콜아웃(:::info, :::tip, :::success, :::warning, :::danger, :::note) ── */
.wiki-callout {
  --callout-accent: #6b7280;
  --callout-bg-tint: rgba(107, 114, 128, 0.08);
  border: 1px solid var(--wiki-border);
  border-left: 4px solid var(--callout-accent);
  border-radius: 6px;
  background: var(--callout-bg-tint);
  margin: 0.75rem 0;
  overflow: hidden;
}

.wiki-callout-info    { --callout-accent: #0ea5e9; --callout-bg-tint: rgba(14, 165, 233, 0.08); }
.wiki-callout-tip     { --callout-accent: #14b8a6; --callout-bg-tint: rgba(20, 184, 166, 0.08); }
.wiki-callout-success { --callout-accent: #10b981; --callout-bg-tint: rgba(16, 185, 129, 0.08); }
.wiki-callout-warning { --callout-accent: #f59e0b; --callout-bg-tint: rgba(245, 158, 11, 0.10); }
.wiki-callout-danger  { --callout-accent: #ef4444; --callout-bg-tint: rgba(239, 68, 68, 0.08); }
.wiki-callout-note    { --callout-accent: #6b7280; --callout-bg-tint: rgba(107, 114, 128, 0.08); }

html[data-theme="dark"] .wiki-callout-info    { --callout-bg-tint: rgba(14, 165, 233, 0.14); }
html[data-theme="dark"] .wiki-callout-tip     { --callout-bg-tint: rgba(20, 184, 166, 0.14); }
html[data-theme="dark"] .wiki-callout-success { --callout-bg-tint: rgba(16, 185, 129, 0.14); }
html[data-theme="dark"] .wiki-callout-warning { --callout-bg-tint: rgba(245, 158, 11, 0.16); }
html[data-theme="dark"] .wiki-callout-danger  { --callout-bg-tint: rgba(239, 68, 68, 0.14); }
html[data-theme="dark"] .wiki-callout-note    { --callout-bg-tint: rgba(161, 161, 170, 0.12); }

.wiki-callout-header {
  display: flex;
  align-items: center;
  gap: 0.45rem;
  padding: 0.55rem 0.85rem;
  font-weight: 600;
  color: var(--callout-accent);
  background: transparent;
}

.wiki-callout-icon {
  font-size: 1.05rem;
  line-height: 1;
  color: var(--callout-accent);
}

.wiki-callout-title {
  font-size: 0.95rem;
  line-height: 1.3;
}

.wiki-callout-body {
  padding: 0.1rem 0.95rem 0.65rem;
  color: var(--wiki-text);
}

.wiki-callout-body > p:first-child { margin-top: 0.4rem; }
.wiki-callout-body > p:last-child  { margin-bottom: 0.25rem; }
.wiki-callout-body > *:last-child  { margin-bottom: 0; }

/* ── 키보드 키 ({kbd:Ctrl+C}) ── */
.wiki-kbd-card {
  display: inline-block;
  padding: 3px 7px;
  background: var(--wiki-bg);
  border: 1px solid var(--wiki-border);
  border-radius: 6px;
  vertical-align: baseline;
  line-height: 1;
}

.wiki-kbd-combo {
  display: inline-flex;
  align-items: center;
  gap: 0.2em;
  vertical-align: baseline;
}

.wiki-kbd {
  display: inline-block;
  padding: 1px 7px;
  min-width: 1.6em;
  font-family: var(--wiki-code-font);
  font-size: 0.82em;
  font-weight: 600;
  line-height: 1.4;
  color: var(--wiki-text);
  background: var(--wiki-card-bg);
  border: 1px solid var(--wiki-border);
  border-bottom-width: 2px;
  border-radius: 4px;
  box-shadow: 0 1px 0 rgba(0, 0, 0, 0.04);
  text-align: center;
  white-space: nowrap;
}

.wiki-kbd-plus {
  color: var(--wiki-text-muted);
  font-size: 0.85em;
  padding: 0 1px;
  user-select: none;
}

/* ── 진행도 바 ({progress:70|라벨}) ── */
.wiki-progress {
  display: block;
  margin: 0.5rem 0;
  padding: 0.5rem 0.75rem;
  background: var(--wiki-bg);
  border: 1px solid var(--wiki-border);
  border-radius: 6px;
}

.wiki-progress-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 0.5rem;
  margin-bottom: 0.35rem;
  font-size: 0.8rem;
}

.wiki-progress-label {
  display: inline-flex;
  align-items: center;
  gap: 0.3em;
  color: var(--wiki-text-muted);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.wiki-progress-label-text {
  font-weight: 500;
}

.wiki-progress-value {
  font-variant-numeric: tabular-nums;
  font-weight: 600;
  color: inherit;
  flex-shrink: 0;
}

.wiki-progress-track {
  width: 100%;
  height: 8px;
  background: var(--wiki-border);
  border-radius: 999px;
  overflow: hidden;
}

.wiki-progress-fill {
  height: 100%;
  background: var(--wiki-primary);
  border-radius: 999px;
  transition: width 0.2s ease;
}

/* ── Bootstrap 컴포넌트 위키 통합 (callout / card / tabs / accordion / steps) ── */

/* :::card 는 Bootstrap .card 위에 wiki-card 변수를 덮어 위키 배경/테두리 색을 유지 */
.wiki-card.card {
  background: var(--wiki-card-bg);
  border-color: var(--wiki-border);
  color: var(--wiki-text);
  margin: 0.75rem 0;
}
.wiki-card.card > .wiki-card-header.card-header {
  background: var(--wiki-card-bg);
  border-bottom-color: var(--wiki-border);
  color: var(--wiki-text);
}

/* :::info / :::tip / ... 는 Bootstrap .alert 위에 wiki-callout 색상 변수를 우선 적용 */
.wiki-callout.alert {
  background: var(--callout-bg-tint);
  color: var(--wiki-text);
  border: 1px solid var(--wiki-border);
  border-left: 4px solid var(--callout-accent);
  padding: 0;
}
.wiki-callout.alert > .wiki-callout-header { color: var(--callout-accent); }
.wiki-callout.alert hr { border-top-color: var(--wiki-border); }

/* :::tabs — Bootstrap nav-tabs 위에 위키 카드 배경 적용 */
.wiki-tabs {
  margin: 0.75rem 0;
  border-radius: 6px;
  overflow: visible;
}
.wiki-tabs > .nav-tabs {
  margin-bottom: 0;
  border-bottom: 1px solid var(--wiki-border);
  flex-wrap: wrap;
  gap: 2px;
}
.wiki-tabs > .nav-tabs .nav-link {
  color: var(--wiki-text-muted);
  border: 1px solid transparent;
  border-bottom: 0;
  background: transparent;
  font-size: 0.93rem;
  padding: 0.45rem 0.85rem;
}
.wiki-tabs > .nav-tabs .nav-link:hover { color: var(--wiki-text); }
.wiki-tabs > .nav-tabs .nav-link.active {
  color: var(--wiki-text);
  background: var(--wiki-card-bg);
  border-color: var(--wiki-border);
  border-bottom-color: var(--wiki-card-bg);
}
.wiki-tabs > .tab-content {
  background: var(--wiki-card-bg);
  border: 1px solid var(--wiki-border);
  border-top: 0;
  border-radius: 0 6px 6px 6px;
  padding: 0.85rem 1rem;
  color: var(--wiki-text);
}
.wiki-tabs > .tab-content > .tab-pane > :first-child { margin-top: 0; }
.wiki-tabs > .tab-content > .tab-pane > :last-child  { margin-bottom: 0; }

/* :::accordion — Bootstrap accordion 위에 위키 카드 변수 적용 */
.wiki-accordion {
  --bs-accordion-bg: var(--wiki-card-bg);
  --bs-accordion-color: var(--wiki-text);
  --bs-accordion-border-color: var(--wiki-border);
  --bs-accordion-active-bg: var(--wiki-card-bg);
  --bs-accordion-active-color: var(--wiki-text);
  --bs-accordion-btn-color: var(--wiki-text);
  --bs-accordion-btn-focus-border-color: var(--wiki-primary);
  --bs-accordion-btn-focus-box-shadow: 0 0 0 0.15rem color-mix(in srgb, var(--wiki-primary) 25%, transparent);
  margin: 0.75rem 0;
  border-radius: 6px;
  /* overflow:hidden 은 본문 내부 popover/툴팁/드롭다운을 잘라내므로 사용하지 않는다.
     모서리 라운딩은 BS 가 첫/마지막 .accordion-item 에서 자체 처리. */
}
/* :::accordion 항목 헤더는 본문 헤딩이 아니므로 TOC/번호/접기 데코레이션 대상에서 제외 */
.wiki-accordion .accordion-header {
  margin: 0;
  font-size: inherit;
  font-weight: inherit;
  line-height: inherit;
}
.wiki-accordion .accordion-button {
  font-size: 0.95rem;
  font-weight: 600;
  padding: 0.6rem 0.9rem;
}
.wiki-accordion .accordion-button:not(.collapsed) {
  background: color-mix(in srgb, var(--wiki-primary) 8%, var(--wiki-card-bg));
}
.wiki-accordion .accordion-body > :first-child { margin-top: 0; }
.wiki-accordion .accordion-body > :last-child  { margin-bottom: 0; }

/* :::steps — Bootstrap 에 stepper 가 없어 커스텀. bi 아이콘 + 세로 레이아웃 */
.wiki-steps {
  list-style: none;
  margin: 0.75rem 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0;
}

.wiki-step {
  display: flex;
  align-items: flex-start;
  gap: 0.75rem;
  position: relative;
  padding: 0.4rem 0;
}

.wiki-step-marker {
  position: relative;
  flex-shrink: 0;
  width: 2rem;
  height: 2rem;
  border-radius: 999px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--wiki-card-bg);
  border: 2px solid var(--wiki-border);
  color: var(--wiki-text-muted);
  font-weight: 700;
  font-size: 0.85rem;
}
.wiki-step-marker .wiki-step-icon { display: none; font-size: 1rem; }
.wiki-step-marker .wiki-step-num  { display: inline; }

.wiki-step-done   .wiki-step-marker { background: var(--wiki-primary); border-color: var(--wiki-primary); color: #fff; }
.wiki-step-done   .wiki-step-marker .wiki-step-icon { display: inline; }
.wiki-step-done   .wiki-step-marker .wiki-step-num  { display: none; }
.wiki-step-current .wiki-step-marker { border-color: var(--wiki-primary); color: var(--wiki-primary); }
.wiki-step-todo    .wiki-step-marker { /* default */ }

/* 마커 사이를 잇는 세로선 */
.wiki-steps > .wiki-step:not(:last-child)::before {
  content: "";
  position: absolute;
  left: calc(1rem - 1px);
  top: 2.4rem;
  bottom: -0.4rem;
  width: 2px;
  background: var(--wiki-border);
}
.wiki-steps > .wiki-step.wiki-step-done:not(:last-child)::before { background: var(--wiki-primary); }

.wiki-step-content { flex: 1; min-width: 0; }
.wiki-step-title {
  font-weight: 600;
  color: var(--wiki-text);
  line-height: 1.3;
  padding-top: 0.3rem;
}
.wiki-step-current .wiki-step-title { color: var(--wiki-primary); }
.wiki-step-body { color: var(--wiki-text); font-size: 0.95rem; }
.wiki-step-body > :first-child { margin-top: 0.25rem; }
.wiki-step-body > :last-child  { margin-bottom: 0; }
.wiki-step-body:empty { display: none; }

/* 빈 컨테이너(자식 0개)는 출력 흔적을 남기지 않음 */
.wiki-tabs-empty,
.wiki-accordion-empty,
.wiki-steps-empty { display: none; }

