/* ============================================================
   Sionic Tech Blog — 커스텀 포맷 포스트용 공통 크롬
   (표준 헤더 · 진행바 · 목차 · 브레드크럼 · 작성자 메타 · 문서 듣기 ·
    코드 하이라이트 팔레트 · 데모 컨트롤 폴리시)
   함께 사용: /blog/assets/post-chrome.js + window.SIONIC_POST_CHROME 설정
   문서: blog-skills/custom-post-integration/SKILL.md
   ============================================================ */

/* 커스텀 번들 자체 네비게이션은 표준 헤더로 대체 */
.site-nav { display: none !important; }
.post-header { padding-top: 77px !important; }
.post-header__meta { display: none !important; }

#sb-progress {
  position: fixed; top: 0; left: 0; height: 3px; width: 0;
  background: linear-gradient(90deg, #3FA9A6, #33CFE5); z-index: 300;
}

/* ---------- 표준 사이트 헤더 ---------- */
#sb-header {
  position: fixed; inset: 0 0 auto; z-index: 120; box-sizing: border-box;
  background: rgba(255,255,255,.86);
  backdrop-filter: saturate(180%) blur(14px); -webkit-backdrop-filter: saturate(180%) blur(14px);
  border-bottom: 1px solid #E6EBEF;
  font-family: var(--font-sans);
}
[data-theme=dark] #sb-header {
  background: color-mix(in srgb, var(--sf-bg) 88%, transparent);
  border-bottom-color: var(--si-border);
}
#sb-header .sb-inner {
  max-width: 1339px; margin: 0 auto; padding: 0 24px; height: 77px;
  display: flex; align-items: center; gap: 36px; box-sizing: border-box;
}
.sb-logo { display: flex; align-items: center; gap: 10px; white-space: nowrap; text-decoration: none; }
.sb-logo .sb-mark {
  width: 38px; height: 38px; flex-shrink: 0; display: block;
  background: linear-gradient(148deg, #2E8B89 4%, #3FA9A6 34%, #33CFE5 78%, #7FE7F4 100%);
  -webkit-mask: url(/blog/assets/logo-mark.png) center / contain no-repeat;
  mask: url(/blog/assets/logo-mark.png) center / contain no-repeat;
  transition: filter .18s ease;
}
.sb-logo:hover .sb-mark { filter: saturate(1.2) brightness(1.06); }
.sb-logo .sb-word { font-weight: 800; font-size: 22.3px; letter-spacing: -.015em; color: #23272C; }
[data-theme=dark] .sb-logo .sb-word { color: var(--si-ink); }
#sb-header nav { display: flex; gap: 4px; margin-left: auto; }
#sb-header nav a {
  font-size: 14.5px; font-weight: 600; color: #4B5A6B; text-decoration: none;
  padding: 7px 13px; border-radius: 8px; transition: all .18s ease;
}
#sb-header nav a:hover { color: #0E1B2C; background: #F6F9FA; }
[data-theme=dark] #sb-header nav a { color: var(--si-ink-3); }
[data-theme=dark] #sb-header nav a:hover { color: var(--si-ink); background: var(--sf-panel); }
#sb-theme {
  display: inline-flex; justify-content: center; align-items: center;
  min-height: 32px; padding: 4px 12px; cursor: pointer; background: none;
  font-family: var(--font-mono); letter-spacing: .12em; font-size: 10px; font-weight: 600;
  color: var(--si-ink-3); border: 1px solid var(--si-border-2); border-radius: var(--r-sharp);
  transition: color .14s ease-out, border-color .14s ease-out;
}
#sb-theme:hover { color: var(--si-ink); border-color: var(--si-ink-3); }
@media (max-width: 640px) {
  #sb-header nav { display: none; }
  #sb-header .sb-inner { justify-content: space-between; }
}

/* ---------- 목차: 본문을 왼쪽으로 옮기고 오른쪽에 sticky ---------- */
@media (min-width: 1360px) {
  .article-body, .post-header { padding-right: 340px; }
  .post-header > .track-wide:nth-child(2) {
    width: calc(100% + 340px) !important;
    margin-right: -340px !important;
  }
}
/* 본문 첫 섹션(흰 배경)에 앵커된 absolute 컨테이너 + 내부 sticky:
   상단 배너와 겹치지 않고, 스크롤을 따라오다 본문 끝에서 멈춤 */
#sb-toc {
  position: absolute; top: 0; right: 24px; width: 280px; z-index: 90;
  display: none; font-family: var(--font-sans); box-sizing: border-box;
}
@media (min-width: 1360px) { #sb-toc { display: block; } }
#sb-toc .sb-toc-inner {
  position: sticky; top: 101px;
  max-height: calc(100vh - 160px); overflow-y: auto; font-size: 13.5px;
}
#sb-toc .sb-toc-label {
  font-size: 12px; font-weight: 800; letter-spacing: .12em;
  color: var(--si-ink-4); margin-bottom: 12px;
}
#sb-toc a {
  display: block; padding: 7px 0 7px 14px; color: var(--si-ink-3); text-decoration: none;
  border-left: 2px solid var(--si-border); transition: all .15s ease; line-height: 1.45;
  word-break: keep-all;
}
#sb-toc a:hover { color: var(--si-ink); }
#sb-toc a.sb-active { color: var(--si-accent-2); border-left-color: var(--si-accent-2); font-weight: 650; }
#sb-toc a.sb-top { margin-top: 12px; border-left-color: transparent; color: var(--si-ink-4); font-weight: 650; }
#sb-toc a.sb-top:hover { color: var(--si-accent-2); }
.article-body h2[id] { scroll-margin-top: 102px; }

/* ---------- 코드 블럭 신택스 하이라이트 팔레트 ---------- */
.code-block pre code.hljs { background: transparent; padding: 0; }
.code-block .hljs-keyword, .code-block .hljs-selector-tag, .code-block .hljs-tag { color: #0E7490; font-weight: 600; }
.code-block .hljs-string, .code-block .hljs-regexp, .code-block .hljs-addition { color: #B45309; }
.code-block .hljs-comment, .code-block .hljs-quote, .code-block .hljs-deletion { color: #8A94A0; font-style: italic; }
.code-block .hljs-number, .code-block .hljs-literal, .code-block .hljs-symbol { color: #BE185D; }
.code-block .hljs-title, .code-block .hljs-name, .code-block .hljs-section { color: #047857; font-weight: 600; }
.code-block .hljs-built_in, .code-block .hljs-type { color: #6D28D9; }
.code-block .hljs-attr, .code-block .hljs-attribute, .code-block .hljs-variable,
.code-block .hljs-template-variable, .code-block .hljs-params { color: #334155; }
.code-block .hljs-meta, .code-block .hljs-doctag { color: #64748B; }
[data-theme=dark] .code-block .hljs-keyword, [data-theme=dark] .code-block .hljs-selector-tag, [data-theme=dark] .code-block .hljs-tag { color: #67E8F9; }
[data-theme=dark] .code-block .hljs-string, [data-theme=dark] .code-block .hljs-regexp, [data-theme=dark] .code-block .hljs-addition { color: #FBBF24; }
[data-theme=dark] .code-block .hljs-comment, [data-theme=dark] .code-block .hljs-quote, [data-theme=dark] .code-block .hljs-deletion { color: #7B8794; }
[data-theme=dark] .code-block .hljs-number, [data-theme=dark] .code-block .hljs-literal, [data-theme=dark] .code-block .hljs-symbol { color: #F472B6; }
[data-theme=dark] .code-block .hljs-title, [data-theme=dark] .code-block .hljs-name, [data-theme=dark] .code-block .hljs-section { color: #34D399; }
[data-theme=dark] .code-block .hljs-built_in, [data-theme=dark] .code-block .hljs-type { color: #C4B5FD; }
[data-theme=dark] .code-block .hljs-attr, [data-theme=dark] .code-block .hljs-attribute, [data-theme=dark] .code-block .hljs-variable,
[data-theme=dark] .code-block .hljs-template-variable, [data-theme=dark] .code-block .hljs-params { color: #CBD5E1; }
[data-theme=dark] .code-block .hljs-meta, [data-theme=dark] .code-block .hljs-doctag { color: #94A3B8; }
.code-block__bar { border-left: 3px solid var(--si-accent-2); }

/* ---------- 데모(시뮬레이터) 컨트롤 폴리시 ---------- */
.segmented { border-radius: 999px; padding: 2px; gap: 2px; background: var(--sf-panel); border: 1px solid var(--si-border); }
.segmented__btn { border-radius: 999px; border-left: 0; }
.segmented__btn[aria-pressed=true] { background: var(--si-grad); color: #fff; box-shadow: 0 1px 4px rgba(0,0,0,.18); }
.ctl-btn { border-radius: 999px; cursor: pointer; }
.ctl-btn:hover { color: var(--si-accent-2); border-color: var(--si-accent-2); }
.slider__input::-webkit-slider-runnable-track { height: 4px; border-radius: 2px; background: var(--si-n700); }
.slider__input::-moz-range-track { height: 4px; border-radius: 2px; background: var(--si-n700); }
.slider__input::-webkit-slider-thumb {
  width: 16px; height: 16px; border-radius: 50%; margin-top: -6px;
  background: var(--si-accent-2); border: 2px solid var(--sf-bg);
  box-shadow: 0 1px 4px rgba(0,0,0,.25);
}
.slider__input::-moz-range-thumb {
  width: 16px; height: 16px; border-radius: 50%;
  background: var(--si-accent-2); border: 2px solid var(--sf-bg);
  box-shadow: 0 1px 4px rgba(0,0,0,.25);
}
.demo__cell-value[data-tone=before] { color: var(--si-before); }
.demo__cell-value[data-tone=after] { color: var(--si-after); }

/* ---------- 참고 링크 ---------- */
.ref-links { margin-top: var(--sp10); padding-top: var(--sp6); border-top: 1px solid var(--si-border); }
.ref-links h3 {
  font-family: var(--font-mono); font-size: 12px; font-weight: 600;
  letter-spacing: .14em; text-transform: uppercase; color: var(--si-ink-4);
  margin: 0 0 var(--sp4);
}
.ref-links ul { margin: 0; padding-left: 1.3em; }
.ref-links li { margin-top: 6px; color: var(--si-ink-3); font-size: 14.5px; line-height: 1.7; }
.ref-links a { color: var(--si-accent-2); font-weight: 600; text-decoration: none; border-bottom: 1px solid color-mix(in srgb, var(--si-accent-2) 35%, transparent); }
.ref-links a:hover { border-bottom-color: var(--si-accent-2); }

/* ---------- 브레드크럼 · 작성자 메타 · 문서 듣기 ---------- */
.sb-breadcrumb { display: flex; align-items: center; gap: 8px; font-size: 13.5px; color: var(--si-ink-4); margin-bottom: 22px; }
.sb-breadcrumb a { color: var(--si-accent-2); font-weight: 650; text-decoration: none; }
.sb-breadcrumb a:hover { text-decoration: underline; }
.sb-artmeta { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; margin-top: 26px; }
.sb-author { display: flex; align-items: center; gap: 10px; font-size: 14px; font-weight: 700; color: var(--si-ink); }
.sb-avatar {
  width: 34px; height: 34px; border-radius: 50%; flex-shrink: 0;
  background: var(--si-grad); color: #fff; font-weight: 800; font-size: 13px;
  display: flex; align-items: center; justify-content: center;
}
.sb-lb {
  font-size: 12px; font-weight: 700; letter-spacing: .01em; text-decoration: none;
  padding: 3.5px 11px; border-radius: 99px; white-space: nowrap; transition: all .15s ease;
}
.sb-lb-cat { background: color-mix(in srgb, var(--si-accent-2) 12%, transparent); color: var(--si-accent-2); }
.sb-lb-cat:hover { background: var(--si-accent-2); color: #fff; }
.sb-lb-role {
  background: transparent; color: var(--si-ink-3); border: 1px solid var(--si-border-2);
  display: inline-flex; align-items: center; gap: 6px;
}
.sb-lb-role::before { content: ""; width: 5px; height: 5px; border-radius: 50%; background: var(--sb-role-c, #D98E4A); }
.sb-lb-role:hover { border-color: var(--sb-role-c, #D98E4A); color: var(--si-ink); }
.sb-date { font-size: 14px; color: var(--si-ink-4); }
.sb-tags { display: flex; gap: 6px; flex-wrap: wrap; margin-left: auto; }
.sb-tag {
  font-size: 12.5px; font-weight: 650; color: var(--si-accent-2);
  background: color-mix(in srgb, var(--si-accent-2) 12%, transparent);
  padding: 4px 12px; border-radius: 4px;
}
@media (max-width: 640px) { .sb-tags { margin-left: 0; } }

.sb-listen { display: flex; align-items: center; gap: 12px; margin-top: 22px; flex-wrap: wrap; }
.sb-listen-btn {
  width: 40px; height: 40px; border-radius: 50%; border: 0; cursor: pointer; flex-shrink: 0;
  background: color-mix(in srgb, var(--si-accent-2) 12%, transparent); color: var(--si-accent-2);
  display: flex; align-items: center; justify-content: center; transition: all .18s ease;
}
.sb-listen-btn:hover { background: var(--si-accent-2); color: #fff; }
.sb-listen-btn svg { display: block; }
.sb-listen-btn .sb-i-play { margin-left: 2px; }
.sb-listen-label { font-size: 14px; font-weight: 650; color: var(--si-ink-3); }
.sb-listen-time {
  border-left: 1px solid var(--si-border); padding-left: 12px;
  font-size: 14px; font-weight: 600; color: var(--si-ink-4); font-variant-numeric: tabular-nums;
}
.sb-listen-skip {
  width: 34px; height: 34px; border: 0; background: none; color: var(--si-ink-3); cursor: pointer;
  border-radius: 50%; display: flex; align-items: center; justify-content: center; padding: 0; transition: all .18s ease;
}
.sb-listen-skip:hover { background: var(--sf-panel); color: var(--si-ink); }
.sb-listen-rate {
  font-family: inherit; font-size: 13px; font-weight: 700; color: var(--si-ink-3); font-variant-numeric: tabular-nums;
  border: 1.5px solid var(--si-border-2); background: none; border-radius: 999px; padding: 5px 13px; cursor: pointer; transition: all .18s ease;
}
.sb-listen-rate:hover { border-color: var(--si-accent-2); color: var(--si-accent-2); }
.sb-listen-share {
  margin-left: auto; display: flex; align-items: center; gap: 7px;
  font-family: inherit; font-size: 14px; font-weight: 650; color: var(--si-ink-3);
  background: none; border: 0; cursor: pointer; padding: 8px 12px; border-radius: 8px; transition: all .18s ease;
}
.sb-listen-share:hover { color: var(--si-ink); background: var(--sf-panel); }
.sb-listen-share.sb-copied { color: var(--si-accent-2); }
.article-body .tts-reading {
  background: color-mix(in srgb, var(--si-accent-2) 12%, transparent);
  border-radius: 6px;
  box-shadow: 0 0 0 7px color-mix(in srgb, var(--si-accent-2) 12%, transparent);
  transition: background .25s ease, box-shadow .25s ease;
}
