/* 블로그 화면 전용 규칙. 공용 셸(trh.kr /shared/th-shell.css)은 그대로 두고, 셸에 없는 조각만 셸의 토큰으로 덧붙입니다.
   뼈대: 위쪽 머리(배경 위)는 제자리에 머물고, 그 위로 둥근 판(.bl-sheet)이 올라와 덮습니다. */


.bl-vh{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* 머리와 판 */
.bl-hero{position:sticky;top:0;z-index:0;padding-bottom:calc(var(--u) * 48)}
.bl-sheet{position:relative;z-index:1;min-height:100vh;margin-inline:calc(var(--u) * 12);padding:calc(var(--u) * 40) 0 calc(var(--u) * 64);
  background:var(--surface);border:1px solid var(--line);border-radius:calc(var(--u) * 32)}
/* 판이 양옆으로 12 들어간 만큼 안쪽 칸을 넓혀, 판 안의 내용이 상단바·제목과 같은 세로선에 서게 합니다 */
.bl-sheet > .th-wrap{width:min(100% - 2 * var(--pad) + 2 * calc(var(--u) * 12) + 2px, var(--th-wmax))}
@media (max-width:575px){ .bl-sheet{margin-inline:0;border-inline:0;border-radius:calc(var(--u) * 24)} .bl-sheet > .th-wrap{width:min(100% - 2 * var(--pad), var(--th-wmax))} .bl-hero{padding-bottom:var(--space-32)} }

/* 목록: 머리의 검색 */
.bl-search{margin:0}
.bl-search-box{display:flex;align-items:center;gap:var(--space-8);width:min(100%, calc(var(--u) * 400));height:calc(var(--u) * 40);padding:0 var(--space-16);
  border:1px solid rgb(255 255 255 / .1);border-radius:var(--radius-pill);background:rgb(255 255 255 / .04);transition:border-color .16s ease}
.bl-search-box:focus-within{border-color:rgb(255 255 255 / .22)}
.bl-search-box svg{flex:none;width:calc(var(--u) * 16);height:calc(var(--u) * 16);color:var(--faint)}
.bl-search-box input{flex:1;min-width:0;height:100%;border:0;outline:0;background:none;color:var(--text);font:inherit;font-size:calc(var(--u) * 15)}
.bl-search-box input::placeholder{color:var(--faint)}
.bl-search-box input::-webkit-search-cancel-button{filter:invert(.6)}

/* 목록: 카테고리 칩과 도구 줄 */
.bl-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-12) var(--space-16);margin-bottom:var(--space-24)}
.bl-chips{display:flex;flex-wrap:wrap;gap:var(--space-8);min-width:0}
.bl-chip{display:inline-flex;align-items:center;height:calc(var(--u) * 36);padding:0 calc(var(--u) * 14);border:1px solid var(--line-strong);border-radius:var(--radius-pill);
  color:var(--dim);font-size:calc(var(--u) * 13);font-weight:500;white-space:nowrap;text-decoration:none;transition:color .16s ease,border-color .16s ease,background .16s ease}
.bl-chip:hover{color:var(--text);border-color:var(--faint)}
.bl-chip[aria-current="true"]{background:var(--text);border-color:var(--text);color:var(--bg)}
.bl-bar-r{display:flex;align-items:center;gap:var(--space-8);margin-left:auto}
.bl-bar-r .th-count{margin-right:var(--space-4)}
.bl-bar .th-filter-btn,.bl-bar .th-sort-btn{display:inline-flex;align-items:center;gap:calc(var(--u) * 6);height:calc(var(--u) * 36);padding:0 calc(var(--u) * 14);
  border:1px solid var(--line-strong);border-radius:var(--radius-pill);background:none;font-size:calc(var(--u) * 13)}
.bl-bar .th-seg{padding:calc(var(--u) * 2);border-color:var(--line-strong);background:none}
.bl-bar .th-seg button{width:calc(var(--u) * 34);height:calc(var(--u) * 30)}
@media (max-width:575px){
  .bl-chips{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin-inline:calc(var(--pad) * -1);padding-inline:var(--pad);width:calc(100% + 2 * var(--pad))}
  .bl-chips::-webkit-scrollbar{display:none}
}

/* 카드 */
.bl-grid{display:grid;gap:var(--space-12);grid-template-columns:repeat(auto-fit,minmax(max(calc(var(--u) * 280),calc((100% - 4 * var(--space-12)) / 5)),1fr));margin:0;padding:0;list-style:none}
.bl-grid > li{display:flex;min-width:0}
.bl-grid--two{grid-template-columns:repeat(2,minmax(0,1fr))}
@media (max-width:575px){ .bl-grid--two{grid-template-columns:1fr} }
.bl-card{display:flex;flex-direction:column;flex:1;min-width:0;overflow:hidden;border:1px solid var(--line-strong);border-radius:calc(var(--u) * 16);
  color:var(--text);text-decoration:none;transition:border-color .16s ease}
@media (hover:hover){ .bl-card:hover{border-color:color-mix(in srgb,var(--accent) 45%,var(--line-strong))} .bl-card:hover .bl-card-t{color:var(--accent)} }
.bl-card-media{display:none;aspect-ratio:16 / 9;background:var(--surface-2);overflow:hidden}
.bl-grid[data-view="list"] .bl-card-media{display:block}
.bl-card-media img{display:block;width:100%;height:100%;object-fit:cover}
.bl-card-in{display:flex;flex-direction:column;flex:1;min-width:0;padding:var(--space-16)}
.bl-card-top{display:flex;align-items:center;justify-content:space-between;gap:var(--space-8);font-size:calc(var(--u) * 12);line-height:calc(var(--u) * 18);color:var(--faint)}
.bl-card-cat{font-weight:600;color:var(--dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bl-card-t{margin:var(--space-8) 0 0;font-size:calc(var(--u) * 15);font-weight:600;line-height:1.45;letter-spacing:-.01em;word-break:keep-all;overflow-wrap:anywhere;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;transition:color .16s ease}
.bl-card-d{margin:var(--space-4) 0 var(--space-16);font-size:calc(var(--u) * 13);line-height:1.6;color:var(--dim);word-break:keep-all;overflow-wrap:anywhere;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.bl-card-foot{display:flex;align-items:center;gap:var(--space-12);margin-top:auto;padding-top:var(--space-12);border-top:1px solid var(--line);
  font-size:calc(var(--u) * 12);line-height:calc(var(--u) * 18);color:var(--faint)}
.bl-card-foot > span{display:inline-flex;align-items:center;gap:var(--space-4)}
.bl-card-foot svg{width:calc(var(--u) * 14);height:calc(var(--u) * 14)}

/* 목록형: 테두리 없이 줄로 나누고, 대표 이미지는 왼쪽 썸네일로 */
.bl-grid[data-view="list"]{grid-template-columns:1fr;gap:0}
.bl-grid[data-view="list"] > li + li{border-top:1px solid var(--line)}
.bl-grid[data-view="list"] .bl-card{flex-direction:row;align-items:flex-start;gap:var(--space-16);padding:var(--space-16) 0;border:0;border-radius:0;overflow:visible}
.bl-grid[data-view="list"] .bl-card-media{flex:none;width:calc(var(--u) * 200);border:1px solid var(--line);border-radius:calc(var(--u) * 10)}
.bl-grid[data-view="list"] .bl-card-in{padding:0}
.bl-grid[data-view="list"] .bl-card-foot{padding-top:0;border-top:0}
@media (max-width:575px){ .bl-grid[data-view="list"] .bl-card-media{width:calc(var(--u) * 112)} .bl-grid[data-view="list"] .bl-card-d{display:none} }

.bl-pager{display:flex;align-items:center;justify-content:center;gap:var(--space-16);margin-top:var(--space-32)}
.bl-pager .th-btn svg{width:calc(var(--u) * 16);height:calc(var(--u) * 16)}
.bl-pager [aria-disabled="true"]{opacity:.4;cursor:default}
.bl-empty-act{margin-top:var(--space-16)}


/* 글 상세: 가운데 읽기 칸 하나 */
.bl-col{width:min(100% - 2 * var(--pad), calc(var(--u) * 720));margin-inline:auto}
.bl-post-head{padding-top:calc(var(--u) * 72)}
.bl-back{display:inline-flex;align-items:center;gap:var(--space-4);margin-bottom:var(--space-32);font-size:calc(var(--u) * 13);color:var(--faint);text-decoration:none;transition:color .16s ease}
.bl-back:hover{color:var(--dim)}
.bl-back svg{width:calc(var(--u) * 14);height:calc(var(--u) * 14)}
.bl-pill{display:table;margin-bottom:var(--space-12);padding:calc(var(--u) * 3) calc(var(--u) * 10);border-radius:var(--radius-pill);
  background:color-mix(in srgb,var(--accent) 16%,transparent);color:var(--accent);font-size:calc(var(--u) * 12);font-weight:600;line-height:calc(var(--u) * 18);text-decoration:none}
.bl-pill:hover{background:color-mix(in srgb,var(--accent) 24%,transparent)}
.bl-title{margin:0;font-size:calc(var(--u) * 42);font-weight:700;line-height:1.22;letter-spacing:-.03em;word-break:keep-all;overflow-wrap:anywhere}
.bl-byline{display:flex;flex-wrap:wrap;gap:var(--space-4) 0;margin:var(--space-24) 0 0;font-size:calc(var(--u) * 13);line-height:calc(var(--u) * 20);color:var(--faint)}
.bl-byline span + span::before{content:"·";margin:0 var(--space-8)}
@media (max-width:575px){ .bl-post-head{padding-top:var(--space-48)} .bl-title{font-size:calc(var(--u) * 28);line-height:1.28} }

.bl-post .bl-sheet{padding-top:calc(var(--u) * 48)}
.bl-cover{margin:0 0 calc(var(--u) * 40);aspect-ratio:16 / 9;border:1px solid var(--line);border-radius:calc(var(--u) * 16);overflow:hidden;background:var(--surface-2)}
.bl-cover img{display:block;width:100%;height:100%;object-fit:cover}

/* 본문: 16 / 1.85, 문단 사이와 제목 위아래는 한 줄 */
.bl-prose{--ln:calc(var(--u) * 16 * 1.85);font-size:calc(var(--u) * 16);line-height:1.85;word-break:keep-all;overflow-wrap:break-word}
.bl-prose p,.bl-prose ul,.bl-prose ol,.bl-prose table,.bl-prose pre{margin:0 0 var(--ln)}
.bl-prose h2,.bl-prose h3,.bl-prose h4,.bl-prose h5,.bl-prose h6{margin:calc(var(--ln) * 1.5) 0 calc(var(--ln) * .5);font-weight:700;line-height:1.4}
.bl-prose > :first-child{margin-top:0}
.bl-prose h2{font-size:calc(var(--u) * 24);letter-spacing:-.015em}
.bl-prose h3{font-size:calc(var(--u) * 20);letter-spacing:-.01em}
.bl-prose h4,.bl-prose h5,.bl-prose h6{font-size:calc(var(--u) * 17)}
.bl-prose a{text-decoration:underline;text-underline-offset:.2em;text-decoration-color:color-mix(in srgb,var(--accent) 45%,transparent)}
.bl-prose a:hover{text-decoration-color:currentColor}
.bl-prose strong{font-weight:700}
.bl-prose ul{list-style:none;padding-left:1.2em}
.bl-prose ul > li{position:relative}
.bl-prose ul > li::before{content:"·";position:absolute;left:-.9em;font-weight:700;color:var(--dim)}
.bl-prose ol{padding-left:1.5em}
.bl-prose ol > li::marker{color:var(--dim);font-weight:700}
.bl-prose li + li{margin-top:.3em}
.bl-prose li > ul,.bl-prose li > ol{margin:.3em 0 0}
.bl-prose img{display:block;max-width:100%;height:auto;margin:calc(var(--ln) * .8) 0;border-radius:calc(var(--u) * 12)}
.bl-prose blockquote{margin:calc(var(--ln) * .8) 0;padding:0 0 0 1em;border-left:calc(var(--u) * 3) solid var(--accent);color:var(--dim)}
.bl-prose blockquote > :last-child{margin-bottom:0}
.bl-prose hr{border:0;border-top:1px solid var(--line-strong);margin:calc(var(--ln) * 1.2) 0}
.bl-prose .chart{margin:calc(var(--ln) * .8) 0}

.bl-tags{display:flex;flex-wrap:wrap;gap:var(--space-8);margin:calc(var(--u) * 40) 0 0;padding:0;list-style:none}
.bl-tag{display:inline-flex;align-items:center;height:calc(var(--u) * 28);padding:0 var(--space-12);border:1px solid var(--line-strong);border-radius:var(--radius-pill);
  color:var(--dim);font-size:calc(var(--u) * 13);text-decoration:none}
.bl-tag:hover{color:var(--text);border-color:var(--accent)}
.bl-react{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-8);margin-top:var(--space-24)}
.bl-copy svg{width:calc(var(--u) * 16);height:calc(var(--u) * 16)}
.bl-react form{margin:0}
.bl-like{gap:var(--space-8)}
.bl-like svg{width:calc(var(--u) * 18);height:calc(var(--u) * 18)}
.bl-like.is-on{color:var(--accent)}
.bl-like.is-on svg{fill:currentColor}
.bl-n{font-variant-numeric:tabular-nums;color:var(--dim)}
.bl-like.is-on .bl-n{color:inherit}


.bl-adj{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-12);margin-top:calc(var(--u) * 48)}
.bl-adj-a{display:flex;flex-direction:column;gap:var(--space-4);min-width:0;padding:var(--space-16);border:1px solid var(--line-strong);border-radius:calc(var(--u) * 14);color:var(--text);text-decoration:none;transition:border-color .16s ease}
.bl-adj-a:hover{border-color:color-mix(in srgb,var(--accent) 45%,var(--line-strong))}
.bl-adj-a > span{display:inline-flex;align-items:center;gap:var(--space-4);font-size:calc(var(--u) * 12);color:var(--faint)}
.bl-adj-a svg{width:calc(var(--u) * 13);height:calc(var(--u) * 13)}
.bl-adj-a b{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-size:calc(var(--u) * 14);font-weight:600;line-height:1.45}
.bl-adj-n{text-align:right}
.bl-adj-n > span{justify-content:flex-end}
@media (max-width:575px){ .bl-adj{grid-template-columns:1fr} .bl-adj-n{text-align:left} .bl-adj-n > span{justify-content:flex-start} }

/* 상세 아래쪽 구역: 선 하나로 나누고 작은 제목 */
.bl-comments-sec,.bl-more{margin-top:calc(var(--u) * 56);padding-top:var(--space-32);border-top:1px solid var(--line)}
.bl-sub{display:flex;align-items:baseline;gap:var(--space-8);margin:0 0 var(--space-16);font-size:calc(var(--u) * 15);font-weight:700}
.bl-comments-sec > * + *{margin-top:var(--space-16)}
.bl-comments-sec > .bl-sub + *{margin-top:0}

/* 댓글 */
#comments > * + *{margin-top:var(--space-16)}
.bl-cform{display:flex;flex-direction:column;gap:var(--space-12)}
.bl-cform .th-field textarea{min-height:calc(var(--u) * 96)}
.bl-cform--out{align-items:flex-start}
.bl-cform--out p{margin:0}
.bl-comments{margin:0;padding:0;list-style:none;border-top:1px solid var(--line)}
.bl-comments > li{padding:var(--space-16) 0;border-bottom:1px solid var(--line)}
.bl-comments > li:last-child{border-bottom:0;padding-bottom:0}
.bl-chead{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-4) var(--space-12)}
.bl-chead b{font-size:calc(var(--u) * 15);font-weight:600}
.bl-cbody{margin:var(--space-8) 0 0;white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.7}
.bl-cact{display:flex;align-items:center;gap:var(--space-12);margin-top:var(--space-8)}
.bl-cact:empty{display:none}
.bl-cact form{margin:0}
.bl-rep summary{list-style:none;cursor:pointer}
.bl-rep summary::-webkit-details-marker{display:none}
.bl-rep[open] form{display:flex;align-items:center;gap:var(--space-8);margin-top:var(--space-8)}
.bl-rep select{height:calc(var(--u) * 36);padding:0 var(--space-12);background:var(--surface);color:var(--text);border:1px solid var(--line);border-radius:var(--radius-control);font:inherit;font-size:calc(var(--u) * 14)}

/* ```chart 블록 — Lab 과 같은 규격(축 하나, 머리카락 격자, 2px 선, 막대 값 쪽 끝만 둥글게) */
.chart{margin:0 0 var(--space-24);padding:var(--space-16) var(--space-16) var(--space-12);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius)}
.chart-h{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:var(--space-8) var(--space-16);margin:0 0 var(--space-8)}
.chart-title{font-size:calc(var(--u) * 15);font-weight:600}
.chart-legend{display:flex;flex-wrap:wrap;gap:var(--space-4) var(--space-16);margin:0;padding:0;list-style:none;font-size:calc(var(--u) * 12);color:var(--dim)}
.chart-legend li{display:inline-flex;align-items:center;gap:var(--space-8)}
.chart .sw{display:inline-block;width:calc(var(--u) * 12);height:calc(var(--u) * 3);border-radius:2px;flex:none}
.chart-panel{position:relative;container-type:inline-size}
.chart-panel .chart-svg{display:none}
@container (min-width:820px){ .chart-panel .chart-w{display:block} }
@container (min-width:600px) and (max-width:819.98px){ .chart-panel .chart-m{display:block} }
@container (min-width:420px) and (max-width:599.98px){ .chart-panel .chart-s{display:block} }
@container (max-width:419.98px){ .chart-panel .chart-n{display:block} }
.chart-svg{width:100%;height:auto;overflow:visible}
.chart-svg .grid{stroke:var(--line);stroke-width:1}
.chart-svg .axis{stroke:var(--faint);stroke-width:1}
.chart-svg .tick{fill:var(--dim);font-size:11px;font-variant-numeric:tabular-nums}
.chart-svg .axis-t{fill:var(--dim);font-size:11px}
.chart-svg .ln{fill:none;stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.chart-svg .dot{stroke:var(--surface);stroke-width:2}
.chart-svg .xh{stroke:var(--dim);stroke-width:1}
.chart-tip{position:absolute;top:4px;z-index:2;pointer-events:none;display:flex;flex-direction:column;gap:2px;padding:7px 10px;background:var(--bg);border:1px solid var(--line);
  border-radius:8px;box-shadow:var(--shadow-lift);font-size:12px;color:var(--text);white-space:nowrap;font-variant-numeric:tabular-nums}
.chart-tip[hidden]{display:none}
.chart-tip b{font-weight:600;color:var(--dim)}
.chart-tip span{display:flex;align-items:center;gap:6px}
.chart-tip i{width:8px;height:8px;border-radius:2px;display:inline-block}
.chart-split + .chart-split{margin-top:10px;padding-top:10px;border-top:1px solid var(--line)}
.chart-sub{margin:0 0 4px;font-size:12px;color:var(--dim);display:flex;align-items:center;gap:6px}
.chart-foot{display:flex;flex-wrap:wrap;justify-content:space-between;gap:6px 14px;margin:8px 0 0;font-size:calc(var(--u) * 12);color:var(--dim)}
.chart-src{color:var(--faint)}
.chart-src a{color:var(--dim);text-decoration:underline;text-underline-offset:3px}
.chart-src a:hover{color:var(--accent)}
.chart--err p{margin:0;font-size:calc(var(--u) * 13);color:var(--dim)}
