/* BlockLog Structure 1.0.0 — independently authored. MIT License. */
:root{color-scheme:light;--paper:#fff;--rail:#eeefec;--ink:#242d30;--muted:#657175;--line:#dde2df;--accent:#9d4333;--soft:#f8e6df;--hero:#1c272b;--rail-width:292px;--header:78px}
:root[data-theme=dark]{color-scheme:dark;--paper:#151d20;--rail:#202b2f;--ink:#edf0e9;--muted:#acb7b6;--line:#364448;--accent:#f2a18c;--soft:#392b29;--hero:#0d1518}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:100px}body{margin:0;background:var(--paper);color:var(--ink);font-family:"Malgun Gothic","Apple SD Gothic Neo",sans-serif;font-size:16px;line-height:1.75;overflow-wrap:anywhere}a{color:inherit;text-decoration:none}button,input{font:inherit}button,a,input,summary{touch-action:manipulation}button{cursor:pointer}button,input{color:var(--ink)}button{border:1px solid var(--line);background:var(--paper);border-radius:6px;padding:9px 16px}input{min-width:0;border:1px solid var(--line);background:var(--paper);border-radius:6px;padding:10px 14px}button:hover{border-color:var(--accent)}a:hover{color:var(--accent)}:focus-visible{outline:3px solid var(--accent);outline-offset:4px}[hidden]{display:none!important}img{max-width:100%;height:auto}ul,ol{padding-left:1.5em}h1,h2,h3,h4,p{margin-top:0}h1,h2,h3{line-height:1.4;letter-spacing:-.045em}h1{font-size:36px}h2{font-size:27px}h3{font-size:22px}.skip-link{position:fixed;left:16px;top:-100px;z-index:200;background:var(--paper);padding:12px}.skip-link:focus{top:12px}
.topbar{position:fixed;top:0;left:var(--rail-width);right:0;height:var(--header);z-index:40;background:var(--paper);border-bottom:1px solid var(--line);display:flex;align-items:center;gap:24px;padding:0 36px}.search-box{display:flex;max-width:480px;flex:1;border:1px solid var(--line);border-radius:7px;background:var(--paper)}.search-box input{width:100%;border:0;background:transparent}.search-box button{border:0;background:transparent;white-space:nowrap;color:var(--muted)}.top-home{font-size:12px;margin-left:auto;color:var(--muted);white-space:nowrap}.mobile-brand,.menu-toggle{display:none}
.sidebar{position:fixed;left:0;top:0;bottom:0;width:var(--rail-width);z-index:60;background:var(--rail);padding:38px 28px 24px;overflow-y:auto;overscroll-behavior:contain;border-right:1px solid var(--line);scrollbar-width:thin}.brand{display:flex;flex-direction:column;align-items:center;gap:17px}.brand strong{font-family:Georgia,serif;font-size:32px;letter-spacing:-1.2px;line-height:1.2}.brand span,.site-footer span,.mobile-brand span,.home-intro h1 span{color:var(--accent)}.brand-caption{text-align:center;font-size:12px;color:var(--muted);margin:13px 0 23px}.theme-toggle{width:100%;border:0;background:var(--soft);color:var(--accent);display:flex;justify-content:space-around;border-radius:30px;padding:8px 12px;font-size:12px;margin-bottom:30px}.theme-toggle span:first-child{font-weight:700}[data-theme=dark] .theme-toggle span:first-child{font-weight:400}[data-theme=dark] .theme-toggle span:last-child{font-weight:700}.rail-label{font-family:Consolas,monospace;font-size:10px;letter-spacing:2px;color:var(--muted);font-weight:400;margin:28px 0 14px}.category-nav ul,.blog-menu ul,.rail-recent ul{list-style:none;margin:0;padding:0}.category-nav .category_list>li{margin:14px 0}.category-nav .link_tit{display:block;font-weight:700;padding:4px 0 10px;border-bottom:1px solid var(--line)}.category-nav .link_item{font-size:15px;font-weight:700}.category-nav .sub_category_list{margin:7px 0 0 14px;padding-left:12px;border-left:1px solid var(--line)}.category-nav .sub_category_list li{margin:5px 0}.category-nav .link_sub_item{font-size:13px;color:var(--muted)}.category-nav a[aria-current=page]{color:var(--accent)}.category-nav .c_cnt{font-size:10px;color:var(--muted);margin-left:4px}.category-nav img{vertical-align:middle}.blog-menu{font-size:13px;margin-top:24px}.blog-menu li{display:inline-block;margin-right:14px}.rail-recent a{font-size:12px;display:block;padding:7px 0;border-bottom:1px solid var(--line);line-height:1.65}.rail-about{font-size:12px;color:var(--muted)}.rail-about p{margin-bottom:8px}.rail-about nav{display:flex;gap:15px;flex-wrap:wrap;margin-top:18px}.rail-signature{display:block;font-family:Consolas,monospace;font-size:9px;letter-spacing:2px;margin-top:40px;color:var(--muted)}
.main{margin-left:var(--rail-width);padding-top:var(--header);min-height:100vh}.content-inner{max-width:1040px;margin:0 auto;padding:36px 36px 0;min-width:0}.home-intro{display:none;position:relative;overflow:hidden;padding:64px 8%;border-bottom:1px solid var(--line);background:var(--rail)}#tt-body-index .home-intro{display:block}.eyebrow{font-family:Consolas,"Malgun Gothic",monospace;font-size:11px;letter-spacing:1.6px;color:var(--accent);margin-bottom:17px}.home-intro h1{font-size:clamp(30px,3.5vw,49px);max-width:640px;position:relative;z-index:1;margin-bottom:20px}.home-intro>p:not(.eyebrow){font-size:13px;color:var(--muted)}.home-intro>a{font-size:12px;border-bottom:1px solid var(--accent);padding-bottom:5px;position:relative;z-index:1}.intro-blocks{position:absolute;width:200px;height:200px;right:8%;top:80px;border:1px solid var(--line);transform:rotate(-15deg)}.intro-blocks:before,.intro-blocks:after{content:"";position:absolute;width:95px;height:95px;background:var(--soft);border:1px solid var(--line)}.intro-blocks:before{top:25px;left:-35px}.intro-blocks:after{right:-30px;bottom:20px;background:var(--paper)}.section-heading{display:flex;align-items:baseline;gap:18px;padding:8px 0 28px;border-bottom:2px solid var(--ink)}.section-heading h1{font-size:28px;margin:0}.section-heading span{font-size:12px;color:var(--muted)}.list-card{border-bottom:1px solid var(--line)}.card-link{position:relative;display:flex;align-items:center;gap:28px;padding:30px 30px 30px 0}.card-copy{flex:1;min-width:0}.card-link .eyebrow{font-size:10px;margin:0 0 9px}.card-link h2{font-size:23px;margin:0 0 12px}.summary{font-size:13px;color:var(--muted);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin-bottom:12px}.card-copy time{font-family:Consolas,monospace;font-size:11px;color:var(--muted)}.card-thumbnail{width:150px;height:110px;object-fit:cover;border-radius:4px}.card-arrow{position:absolute;right:0;top:32px;color:var(--accent)}.card-link:hover h2{color:var(--accent)}#tt-body-category .index-card,#tt-body-search .index-card,#tt-body-tag .index-card,#tt-body-archive .index-card{display:none}.empty-state{padding:50px 0;color:var(--muted)}
.post-hero{position:relative;isolation:isolate;overflow:hidden;background:var(--hero);color:#fff;padding:42px 38px 34px;min-height:280px;border-radius:2px;margin-bottom:32px}.post-hero:before{position:absolute;inset:0;content:"";background:linear-gradient(105deg,rgba(28,39,43,.96),rgba(28,39,43,.6)),repeating-linear-gradient(0deg,transparent 0 35px,#ffffff0a 35px 36px);z-index:-1}.hero-thumbnail{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.25;z-index:-2}.hero-copy{position:relative;z-index:1}.post-hero .eyebrow{color:#f2a18c;display:inline-block}.post-hero h1{font-size:clamp(28px,3.2vw,43px);margin:3px 0 25px;text-wrap:pretty}.post-meta{display:flex;flex-wrap:wrap;gap:12px;font-size:11px;letter-spacing:.5px;color:#c4d0d0;margin-bottom:0}.hero-code{position:absolute;right:25px;bottom:8px;font-family:Consolas,monospace;font-size:53px;color:#ffffff0b}.post-admin{font-size:12px;text-align:right;margin-bottom:20px;color:var(--muted)}.toc{border:1px solid var(--line);padding:15px 22px;margin:25px 0 38px;border-radius:5px;background:var(--rail);font-size:13px}.toc summary{cursor:pointer;font-weight:700}.toc ol{margin-bottom:0}.toc li{padding:3px 0}.toc .toc-sub{margin-left:18px}.article-body{font-size:17px;line-height:1.95;min-width:0}.article-body p{margin:0 0 1.4em}.article-body h2{font-size:28px;border-bottom:1px solid var(--line);padding-bottom:12px;margin:2em 0 1em}.article-body h3{margin:1.8em 0 .8em}.article-body h4{margin-top:1.5em}.article-body a{color:var(--accent);text-decoration:underline;text-underline-offset:3px}.article-body blockquote{margin:24px 0;padding:18px 23px;background:var(--rail);border-left:3px solid var(--accent);color:var(--muted)}.article-body blockquote p:last-child{margin:0}.article-body pre{background:#192429;color:#e7eeeb;padding:22px;overflow:auto;border-radius:5px;line-height:1.7;font-size:13px;max-width:100%;white-space:pre}.article-body code{font-family:Consolas,monospace;font-size:.88em}.article-body :not(pre)>code{background:var(--soft);padding:2px 5px;border-radius:3px;color:var(--accent)}.table-scroll{overflow:auto;margin:24px 0}.article-body table{border-collapse:collapse;width:100%;font-size:14px}.article-body td,.article-body th{border:1px solid var(--line);padding:12px 15px;text-align:left}.article-body th{background:var(--rail)}.article-body figure{max-width:100%;margin-left:0;margin-right:0}.article-body img{max-width:100%;height:auto}.article-body iframe,.article-body video{max-width:100%}.article-body figcaption{font-size:12px;color:var(--muted)}.post-tags{display:flex;flex-wrap:wrap;gap:10px;font-size:12px;border-top:1px solid var(--line);padding:24px 0;margin-top:40px;color:var(--muted)}.post-tags>span{font:10px Consolas,monospace;letter-spacing:1.5px;margin-right:10px;padding-top:5px}.post-tags a{color:var(--accent)}.related{margin:32px 0 45px}.related h2{font-size:18px}.related ul{list-style:none;padding:0}.related a{display:flex;justify-content:space-between;gap:15px;font-size:13px;border-bottom:1px solid var(--line);padding:12px 0}.related span{color:var(--accent)}.comments{margin-top:40px;min-width:0}.panel{padding:26px 0}.panel>.article-body{margin-top:40px}.panel>time{font-size:12px;color:var(--muted)}.password-row{display:flex;gap:10px;max-width:420px;margin-top:10px}.password-row input{flex:1;width:100%}.protected label{font-size:12px}.tag-cloud{display:flex;flex-wrap:wrap;gap:12px;list-style:none;padding:0;margin:35px 0}.tag-cloud a{display:block;border:1px solid var(--line);padding:8px 15px;border-radius:4px;font-size:13px}.tag-cloud .cloud1{font-weight:700;color:var(--accent)}
.pagination{display:flex;justify-content:center;align-items:center;gap:9px;flex-wrap:wrap;padding:38px 0;font-size:12px}.pagination a{padding:5px 10px;border:1px solid var(--line);border-radius:4px}.pagination .selected{font-weight:700;color:var(--accent)}.pagination .no-more-prev,.pagination .no-more-next{display:none}.site-footer{max-width:968px;margin:40px auto 0;padding:27px 0 40px;border-top:1px solid var(--line);display:flex;gap:24px;align-items:center;font-size:11px;color:var(--muted)}.site-footer>a:first-child{font-family:Georgia,serif;font-size:21px;font-weight:700;color:var(--ink)}.site-footer p{margin:0}.site-footer>a:last-child{margin-left:auto}.back-top{position:fixed;right:20px;bottom:22px;z-index:30;width:42px;height:42px;display:grid;place-items:center;background:var(--paper);border:1px solid var(--line);border-radius:8px;box-shadow:0 3px 14px #0001}.drawer-shade{display:none}
@media(min-width:1500px){:root{--rail-width:310px}.sidebar{padding-left:36px;padding-right:36px}.content-inner{padding-top:48px}}
@media(max-width:1050px){:root{--rail-width:250px}.sidebar{padding:30px 22px}.topbar{padding:0 24px}.top-home{display:none}.content-inner{padding:28px 24px 0}.post-hero{padding:32px 26px}.site-footer{margin:40px 24px 0}.intro-blocks{opacity:.4;right:0}.card-thumbnail{width:115px;height:100px}}
@media(max-width:760px){:root{--header:68px;--rail-width:0px}.topbar{left:0;padding:0 16px;gap:13px}.mobile-brand{display:block;font-family:Georgia,serif;font-size:22px;font-weight:700;white-space:nowrap}.search-box{margin-left:auto;max-width:260px}.search-box input{width:100%;font-size:12px;padding:9px;min-width:45px}.search-box button{padding:9px;font-size:11px}.main{margin-left:0}.sidebar{position:relative;top:auto;bottom:auto;width:100%;border-right:0;padding:24px}.sidebar .brand,.sidebar .brand-caption,.sidebar .rail-signature{display:none}.sidebar .rail-label{margin-top:18px}.js .sidebar{position:fixed;top:var(--header);bottom:0;width:290px;max-width:85vw;transform:translateX(-101%);transition:transform .2s ease;border-right:1px solid var(--line)}.js .menu-toggle{display:block;font-size:11px;padding:7px 9px;flex-shrink:0}.js .drawer-open .sidebar{transform:translateX(0)}.drawer-open{overflow:hidden}.js .drawer-open .drawer-shade{display:block;position:fixed;inset:var(--header) 0 0;z-index:50;border:0;border-radius:0;background:#08111499}.content-inner{padding:23px 20px 0}.home-intro{padding:38px 24px}.home-intro h1{font-size:32px}.intro-blocks{width:140px;height:140px;right:-70px}.post-hero{padding:28px 24px;min-height:245px;margin-bottom:25px}.post-hero h1{font-size:29px;line-height:1.45}.article-body{font-size:16px;line-height:1.9}.article-body h2{font-size:24px}.article-body h3{font-size:20px}.card-link{gap:14px;padding:24px 19px 24px 0}.card-link h2{font-size:19px}.card-thumbnail{width:85px;height:85px}.card-arrow{top:24px}.summary{font-size:12px;-webkit-line-clamp:2}.section-heading h1{font-size:24px}.section-heading{gap:12px}.site-footer{margin:30px 20px 0;flex-wrap:wrap;gap:12px;padding-bottom:75px}.site-footer p{font-size:10px}.toc{padding:14px 18px}.panel h1{font-size:28px}}
h1,h2,h3{word-break:keep-all;overflow-wrap:anywhere}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.js .sidebar{transition:none}}
/* 기존 style.css 맨 끝에 추가 */
html { scroll-behavior:auto; scrollbar-gutter:stable; }
.sidebar { scroll-behavior:auto; overflow-anchor:none; }
.topbar { display:block; padding:0; }
.topbar-inner {
  width:100%; max-width:1040px; height:100%; margin:0 auto; padding:0 36px;
  display:grid; align-items:center; gap:16px;
  grid-template-columns:minmax(0,1fr) minmax(0,480px) minmax(0,1fr);
}
.topbar-inner .search-box { grid-column:2; width:100%; max-width:none; min-width:0; margin:0; }
.sidebar.has-owner-actions .theme-toggle { margin-bottom:12px; }
.sidebar .owner-actions { margin:0 0 26px; }
.write-button {
  display:flex; width:100%; align-items:center; justify-content:center; min-height:44px;
  padding:8px 13px; border:1px solid var(--accent); border-radius:6px;
  background:var(--soft); color:var(--accent); font-size:13px; font-weight:700;
}
.write-button:hover { color:var(--accent); filter:brightness(.96); }
@media (max-width:1050px) {
  .topbar-inner { padding:0 24px; grid-template-columns:minmax(0,1fr) minmax(0,440px) minmax(0,1fr); }
}
@media (max-width:760px) {
  :root { --header:116px; }
  .topbar-inner {
    padding:8px 16px; gap:6px 12px;
    grid-template-columns:auto minmax(0,1fr);
    grid-template-rows:44px 44px;
  }
  .js .topbar-inner .menu-toggle {
    grid-column:1; grid-row:1; display:grid; place-items:center;
    width:44px; height:44px; padding:0; border:0; border-radius:12px;
    background:transparent; color:var(--ink); flex-shrink:0;
  }
  .js .topbar-inner .menu-toggle:hover { background:var(--rail); }
  .menu-icon { display:flex; flex-direction:column; justify-content:space-between; width:22px; height:16px; }
  .menu-icon > span { display:block; width:22px; height:2px; border-radius:2px; background:currentColor; }
  .menu-toggle[aria-expanded=true] .menu-icon > span:first-child { transform:translateY(7px) rotate(45deg); }
  .menu-toggle[aria-expanded=true] .menu-icon > span:nth-child(2) { opacity:0; }
  .menu-toggle[aria-expanded=true] .menu-icon > span:last-child { transform:translateY(-7px) rotate(-45deg); }
  .topbar-inner .mobile-brand { grid-column:2; grid-row:1; }
  .topbar-inner .search-box { grid-column:1 / -1; grid-row:2; height:44px; }
  .js .sidebar { transition:none; height:calc(100dvh - var(--header)); }
  body.drawer-open { position:fixed; top:var(--bl-scroll-y); width:100%; overflow:hidden; }
}

/* BlockLog — 차분한 편집 디자인, 공통 컨트롤 규칙 */
:root {
  --control-height:44px;
  --control-radius:8px;
  --control-surface:#f6f7f4;
  --control-font:13px;
}
:root[data-theme=dark] { --control-surface:#1a2529; }
.theme-switch {
  display:grid; grid-template-columns:1fr 1fr; gap:4px;
  width:100%; height:var(--control-height); padding:3px; margin:0 0 28px;
  border:1px solid var(--line); border-radius:var(--control-radius);
  background:var(--control-surface);
}
.theme-switch button {
  display:flex; align-items:center; justify-content:center; gap:7px;
  min-width:0; height:36px; padding:0 8px; margin:0;
  border:1px solid transparent; border-radius:5px;
  background:transparent; color:var(--muted); font-size:var(--control-font);
  font-weight:500; line-height:1; white-space:nowrap;
}
.theme-switch button:hover { color:var(--ink); }
.theme-switch button[aria-pressed=true] {
  border-color:var(--line); background:var(--paper); color:var(--ink);
  box-shadow:0 1px 2px #00000008; font-weight:700;
}
.theme-switch svg,.write-button svg {
  width:16px; height:16px; flex-shrink:0; fill:none;
  stroke:currentColor; stroke-width:1.65; stroke-linecap:round; stroke-linejoin:round;
}
.theme-switch button[aria-pressed=true] svg { color:var(--accent); }
.sidebar.has-owner-actions .theme-switch { margin-bottom:12px; }
.sidebar .owner-actions { margin:0 0 28px; }
.write-button {
  height:var(--control-height); min-height:var(--control-height); gap:8px;
  padding:0 14px; border:1px solid var(--ink); border-radius:var(--control-radius);
  background:var(--ink); color:var(--paper); font-size:var(--control-font);
  font-weight:700; line-height:1;
}
.write-button:hover { background:var(--accent); border-color:var(--accent); color:var(--paper); filter:none; }
.topbar-inner .search-box {
  height:var(--control-height); border-radius:var(--control-radius);
  background:var(--control-surface); overflow:hidden;
}
.topbar-inner .search-box input {
  height:42px; padding:0 14px; font-size:var(--control-font); border-radius:0;
}
.topbar-inner .search-box input::placeholder { color:var(--muted); opacity:1; }
.topbar-inner .search-box button {
  height:42px; min-width:58px; padding:0 14px; font-size:var(--control-font);
  border-radius:0; color:var(--muted);
}
.topbar-inner .search-box:focus-within { outline:2px solid var(--accent); outline-offset:2px; }
.topbar-inner .search-box input:focus-visible { outline:0; }
.topbar-inner .search-box button:hover { background:var(--paper); color:var(--ink); }
.js .topbar-inner .menu-toggle { border-radius:var(--control-radius); }
.back-top {
  width:var(--control-height); height:var(--control-height);
  border-radius:var(--control-radius); box-shadow:none;
  background:var(--control-surface); color:var(--muted);
}
.pagination a,.tag-cloud a { border-radius:var(--control-radius); }
.pagination a { min-width:36px; min-height:36px; display:grid; place-items:center; }
.theme-switch button:focus-visible,.write-button:focus-visible,.menu-toggle:focus-visible {
  outline:2px solid var(--accent); outline-offset:3px;
}
@media(max-width:760px) {
  .sidebar .theme-switch { margin-top:0; }
  .theme-switch { height:48px; }
  .theme-switch button { height:40px; }
  .topbar-inner { column-gap:10px; }
  .js .topbar-inner .menu-toggle { color:var(--ink); }
}
/* BlockLog — 기존 티스토리 글의 다크 테마 보정. 현재 CSS 맨 끝에 추가. */
/* 라이트 테마와 게시글 원문, 이미지, 임베드에는 적용하지 않습니다. */
:root[data-theme="dark"] {
  scroll-padding-top:max(100px, calc(var(--header, 78px) + 20px));
}

/* 1. 티스토리 인용문: style1의 #333 및 box/style3의 밝은 배경을 함께 보정 */
:root[data-theme="dark"] .article-body blockquote {
  color:var(--ink, #edf0e9) !important;
  background-color:var(--rail, #202b2f) !important;
  border-color:var(--line, #364448) !important;
}
:root[data-theme="dark"] .article-body blockquote :where(p,div,span,font,b,strong,i,em,small,cite) {
  color:inherit !important;
  background-color:transparent !important;
}
:root[data-theme="dark"] .article-body blockquote::before,
:root[data-theme="dark"] .article-body blockquote::after {
  color:var(--muted, #acb7b6) !important;
}

/* 2. 에디터 표: 밝은 줄무늬/첫 열/헤더 배경과 글자색을 한 쌍으로 관리 */
:root[data-theme="dark"] .article-body table,
:root[data-theme="dark"] .article-body :where(thead,tbody,tfoot,tr) {
  color:var(--ink, #edf0e9) !important;
  background-color:transparent !important;
  border-color:var(--line, #364448) !important;
}
:root[data-theme="dark"] .article-body table :where(td,th) {
  color:var(--ink, #edf0e9) !important;
  background-color:var(--paper, #151d20) !important;
  border-color:var(--line, #364448) !important;
}
:root[data-theme="dark"] .article-body table tr:nth-child(even) > td {
  background-color:var(--rail, #202b2f) !important;
}
:root[data-theme="dark"] .article-body table th,
:root[data-theme="dark"] .article-body table[data-ke-style="style12"] > tbody > tr:first-child > td {
  color:var(--ink, #edf0e9) !important;
  background-color:var(--line, #364448) !important;
}
:root[data-theme="dark"] .article-body table :where(td,th) :where(p,div,span,font,b,strong,i,em,small) {
  color:inherit !important;
  background-color:transparent !important;
}
:root[data-theme="dark"] .article-body table caption {
  color:var(--muted, #acb7b6) !important;
  background-color:transparent !important;
}
:root[data-theme="dark"] .article-body :where(blockquote,table) a {
  color:var(--accent, #f2a18c) !important;
  text-decoration:underline;
}

/* 3. 라이트 전용 highlight.js 및 본문 pre의 인라인 글자색 충돌 보정 */
:root[data-theme="dark"] .article-body pre {
  color:#e4eae6 !important;
  background-color:#10191d !important;
  border:1px solid var(--line, #364448);
}
:root[data-theme="dark"] .article-body pre :where(code,.hljs,[style*="color" i]) {
  color:inherit !important;
  background-color:transparent !important;
}
:root[data-theme="dark"] .article-body pre .hljs {
  padding:0;
}
:root[data-theme="dark"] .article-body pre :where(.hljs-comment,.hljs-quote) { color:#aab9b8 !important; }
:root[data-theme="dark"] .article-body pre :where(.hljs-keyword,.hljs-selector-tag,.hljs-literal,.hljs-doctag,.hljs-formula) { color:#f0a9cc !important; }
:root[data-theme="dark"] .article-body pre :where(.hljs-string,.hljs-regexp,.hljs-addition,.hljs-meta-string) { color:#bbdca4 !important; }
:root[data-theme="dark"] .article-body pre :where(.hljs-number,.hljs-symbol,.hljs-bullet,.hljs-built_in,.hljs-type,.hljs-selector-attr,.hljs-selector-pseudo) { color:#f1c58c !important; }
:root[data-theme="dark"] .article-body pre :where(.hljs-title,.hljs-section,.hljs-attribute,.hljs-attr,.hljs-name,.hljs-selector-id,.hljs-selector-class,.hljs-meta,.hljs-link) { color:#afcff4 !important; }
:root[data-theme="dark"] .article-body pre :where(.hljs-variable,.hljs-template-variable,.hljs-deletion) { color:#f3ada5 !important; }
:root[data-theme="dark"] .article-body pre .hljs-subst { color:inherit !important; }

/* BlockLog 본문 가독성 통합 수정: 이전 CSS 뒤에 추가 */
/* BlockLog — 기존 티스토리 글의 다크 테마 보정. 현재 CSS 맨 끝에 추가. */
/* 라이트 테마와 게시글 원문, 이미지, 임베드에는 적용하지 않습니다. */
:root[data-theme="dark"] {
  scroll-padding-top:max(100px, calc(var(--header, 78px) + 20px));
}

/* 1. 티스토리 인용문: style1의 #333 및 box/style3의 밝은 배경을 함께 보정 */
:root[data-theme="dark"] .article-body blockquote {
  color:var(--ink, #edf0e9) !important;
  background-color:var(--rail, #202b2f) !important;
  border-color:var(--line, #364448) !important;
}
:root[data-theme="dark"] .article-body blockquote :where(p,div,span,font,b,strong,i,em,small,cite) {
  color:inherit !important;
  background-color:transparent !important;
}
:root[data-theme="dark"] .article-body blockquote::before,
:root[data-theme="dark"] .article-body blockquote::after {
  color:var(--muted, #acb7b6) !important;
}

/* 2. 에디터 표: 밝은 줄무늬/첫 열/헤더 배경과 글자색을 한 쌍으로 관리 */
:root[data-theme="dark"] .article-body table,
:root[data-theme="dark"] .article-body :where(thead,tbody,tfoot,tr) {
  color:var(--ink, #edf0e9) !important;
  background-color:transparent !important;
  border-color:var(--line, #364448) !important;
}
:root[data-theme="dark"] .article-body table :where(td,th) {
  color:var(--ink, #edf0e9) !important;
  background-color:var(--paper, #151d20) !important;
  border-color:var(--line, #364448) !important;
}
:root[data-theme="dark"] .article-body table tr:nth-child(even) > td {
  background-color:var(--rail, #202b2f) !important;
}
:root[data-theme="dark"] .article-body table th,
:root[data-theme="dark"] .article-body table[data-ke-style="style12"] > tbody > tr:first-child > td {
  color:var(--ink, #edf0e9) !important;
  background-color:var(--line, #364448) !important;
}
:root[data-theme="dark"] .article-body table :where(td,th) :where(p,div,span,font,b,strong,i,em,small) {
  color:inherit !important;
  background-color:transparent !important;
}
:root[data-theme="dark"] .article-body table caption {
  color:var(--muted, #acb7b6) !important;
  background-color:transparent !important;
}
:root[data-theme="dark"] .article-body :where(blockquote,table) a {
  color:var(--accent, #f2a18c) !important;
  text-decoration:underline;
}

/* 3. 라이트 전용 highlight.js 및 본문 pre의 인라인 글자색 충돌 보정 */
:root[data-theme="dark"] .article-body pre {
  color:#e4eae6 !important;
  background-color:#10191d !important;
  border:1px solid var(--line, #364448);
}
:root[data-theme="dark"] .article-body pre :where(code,.hljs,[style*="color" i]) {
  color:inherit !important;
  background-color:transparent !important;
}
:root[data-theme="dark"] .article-body pre .hljs {
  padding:0;
}
:root[data-theme="dark"] .article-body pre :where(.hljs-comment,.hljs-quote) { color:#aab9b8 !important; }
:root[data-theme="dark"] .article-body pre :where(.hljs-keyword,.hljs-selector-tag,.hljs-literal,.hljs-doctag,.hljs-formula) { color:#f0a9cc !important; }
:root[data-theme="dark"] .article-body pre :where(.hljs-string,.hljs-regexp,.hljs-addition,.hljs-meta-string) { color:#bbdca4 !important; }
:root[data-theme="dark"] .article-body pre :where(.hljs-number,.hljs-symbol,.hljs-bullet,.hljs-built_in,.hljs-type,.hljs-selector-attr,.hljs-selector-pseudo) { color:#f1c58c !important; }
:root[data-theme="dark"] .article-body pre :where(.hljs-title,.hljs-section,.hljs-attribute,.hljs-attr,.hljs-name,.hljs-selector-id,.hljs-selector-class,.hljs-meta,.hljs-link) { color:#afcff4 !important; }
:root[data-theme="dark"] .article-body pre :where(.hljs-variable,.hljs-template-variable,.hljs-deletion) { color:#f3ada5 !important; }
:root[data-theme="dark"] .article-body pre .hljs-subst { color:inherit !important; }

/* 긴 도입문과 본문 흐름에 맞춘 인용문. 라이트/다크 공통. */
#tt-body-page .article-body blockquote {
  box-sizing:border-box;
  max-width:100%; min-width:0;
  margin:32px 0 !important;
  padding:24px 28px !important;
  border:1px solid var(--line, #dde2df) !important;
  border-left:3px solid var(--accent, #9d4333) !important;
  border-radius:8px;
  background-color:var(--rail, #eeefec) !important;
  background-image:none !important;
  color:var(--ink, #242d30) !important;
  font-family:inherit !important;
  font-size:1em !important;
  font-style:normal;
  line-height:1.85 !important;
  letter-spacing:normal !important;
  text-align:left !important;
  word-break:keep-all;
  overflow-wrap:anywhere;
}
#tt-body-page .article-body blockquote::before,
#tt-body-page .article-body blockquote::after {
  content:none !important;
  display:none !important;
}
#tt-body-page .article-body blockquote :where(p,div,span,font,b,strong,i,em,small,li,cite) {
  font-family:inherit !important;
  font-size:inherit !important;
  line-height:inherit !important;
  letter-spacing:inherit !important;
  color:inherit !important;
  background-color:transparent !important;
}
#tt-body-page .article-body blockquote :where(p,div) {
  text-align:inherit !important;
}
#tt-body-page .article-body blockquote p { margin:0 !important; }
#tt-body-page .article-body blockquote p + p { margin-top:12px !important; }
#tt-body-page .article-body blockquote > :first-child { margin-top:0 !important; }
#tt-body-page .article-body blockquote > :last-child { margin-bottom:0 !important; }
#tt-body-page .article-body blockquote a { color:var(--accent, #9d4333) !important; }
#tt-body-page .article-body blockquote cite {
  display:block; margin-top:12px;
  font-size:.875em !important;
  font-style:normal;
  color:var(--muted, #657175) !important;
}
@media(max-width:760px) {
  #tt-body-page .article-body blockquote {
    margin:24px 0 !important;
    padding:20px !important;
    line-height:1.9 !important;
  }
}
/* BlockLog 균형형 통합 CSS — 현재 CSS 맨 끝에 추가 */
/* BlockLog 본문 가독성 통합 수정: 이전 CSS 뒤에 추가 */
/* BlockLog — 기존 티스토리 글의 다크 테마 보정. 현재 CSS 맨 끝에 추가. */
/* 라이트 테마와 게시글 원문, 이미지, 임베드에는 적용하지 않습니다. */
:root[data-theme="dark"] {
  scroll-padding-top:max(100px, calc(var(--header, 78px) + 20px));
}

/* 1. 티스토리 인용문: style1의 #333 및 box/style3의 밝은 배경을 함께 보정 */
:root[data-theme="dark"] .article-body blockquote {
  color:var(--ink, #edf0e9) !important;
  background-color:var(--rail, #202b2f) !important;
  border-color:var(--line, #364448) !important;
}
:root[data-theme="dark"] .article-body blockquote :where(p,div,span,font,b,strong,i,em,small,cite) {
  color:inherit !important;
  background-color:transparent !important;
}
:root[data-theme="dark"] .article-body blockquote::before,
:root[data-theme="dark"] .article-body blockquote::after {
  color:var(--muted, #acb7b6) !important;
}

/* 2. 에디터 표: 밝은 줄무늬/첫 열/헤더 배경과 글자색을 한 쌍으로 관리 */
:root[data-theme="dark"] .article-body table,
:root[data-theme="dark"] .article-body :where(thead,tbody,tfoot,tr) {
  color:var(--ink, #edf0e9) !important;
  background-color:transparent !important;
  border-color:var(--line, #364448) !important;
}
:root[data-theme="dark"] .article-body table :where(td,th) {
  color:var(--ink, #edf0e9) !important;
  background-color:var(--paper, #151d20) !important;
  border-color:var(--line, #364448) !important;
}
:root[data-theme="dark"] .article-body table tr:nth-child(even) > td {
  background-color:var(--rail, #202b2f) !important;
}
:root[data-theme="dark"] .article-body table th,
:root[data-theme="dark"] .article-body table[data-ke-style="style12"] > tbody > tr:first-child > td {
  color:var(--ink, #edf0e9) !important;
  background-color:var(--line, #364448) !important;
}
:root[data-theme="dark"] .article-body table :where(td,th) :where(p,div,span,font,b,strong,i,em,small) {
  color:inherit !important;
  background-color:transparent !important;
}
:root[data-theme="dark"] .article-body table caption {
  color:var(--muted, #acb7b6) !important;
  background-color:transparent !important;
}
:root[data-theme="dark"] .article-body :where(blockquote,table) a {
  color:var(--accent, #f2a18c) !important;
  text-decoration:underline;
}

/* 3. 라이트 전용 highlight.js 및 본문 pre의 인라인 글자색 충돌 보정 */
:root[data-theme="dark"] .article-body pre {
  color:#e4eae6 !important;
  background-color:#10191d !important;
  border:1px solid var(--line, #364448);
}
:root[data-theme="dark"] .article-body pre :where(code,.hljs,[style*="color" i]) {
  color:inherit !important;
  background-color:transparent !important;
}
:root[data-theme="dark"] .article-body pre .hljs {
  padding:0;
}
:root[data-theme="dark"] .article-body pre :where(.hljs-comment,.hljs-quote) { color:#aab9b8 !important; }
:root[data-theme="dark"] .article-body pre :where(.hljs-keyword,.hljs-selector-tag,.hljs-literal,.hljs-doctag,.hljs-formula) { color:#f0a9cc !important; }
:root[data-theme="dark"] .article-body pre :where(.hljs-string,.hljs-regexp,.hljs-addition,.hljs-meta-string) { color:#bbdca4 !important; }
:root[data-theme="dark"] .article-body pre :where(.hljs-number,.hljs-symbol,.hljs-bullet,.hljs-built_in,.hljs-type,.hljs-selector-attr,.hljs-selector-pseudo) { color:#f1c58c !important; }
:root[data-theme="dark"] .article-body pre :where(.hljs-title,.hljs-section,.hljs-attribute,.hljs-attr,.hljs-name,.hljs-selector-id,.hljs-selector-class,.hljs-meta,.hljs-link) { color:#afcff4 !important; }
:root[data-theme="dark"] .article-body pre :where(.hljs-variable,.hljs-template-variable,.hljs-deletion) { color:#f3ada5 !important; }
:root[data-theme="dark"] .article-body pre .hljs-subst { color:inherit !important; }

/* 긴 도입문과 본문 흐름에 맞춘 인용문. 라이트/다크 공통. */
#tt-body-page .article-body blockquote {
  box-sizing:border-box;
  max-width:100%; min-width:0;
  margin:32px 0 !important;
  padding:24px 28px !important;
  border:1px solid var(--line, #dde2df) !important;
  border-left:3px solid var(--accent, #9d4333) !important;
  border-radius:8px;
  background-color:var(--rail, #eeefec) !important;
  background-image:none !important;
  color:var(--ink, #242d30) !important;
  font-family:inherit !important;
  font-size:1em !important;
  font-style:normal;
  line-height:1.85 !important;
  letter-spacing:normal !important;
  text-align:left !important;
  word-break:keep-all;
  overflow-wrap:anywhere;
}
#tt-body-page .article-body blockquote::before,
#tt-body-page .article-body blockquote::after {
  content:none !important;
  display:none !important;
}
#tt-body-page .article-body blockquote :where(p,div,span,font,b,strong,i,em,small,li,cite) {
  font-family:inherit !important;
  font-size:inherit !important;
  line-height:inherit !important;
  letter-spacing:inherit !important;
  color:inherit !important;
  background-color:transparent !important;
}
#tt-body-page .article-body blockquote :where(p,div) {
  text-align:inherit !important;
}
#tt-body-page .article-body blockquote p { margin:0 !important; }
#tt-body-page .article-body blockquote p + p { margin-top:12px !important; }
#tt-body-page .article-body blockquote > :first-child { margin-top:0 !important; }
#tt-body-page .article-body blockquote > :last-child { margin-bottom:0 !important; }
#tt-body-page .article-body blockquote a { color:var(--accent, #9d4333) !important; }
#tt-body-page .article-body blockquote cite {
  display:block; margin-top:12px;
  font-size:.875em !important;
  font-style:normal;
  color:var(--muted, #657175) !important;
}
@media(max-width:760px) {
  #tt-body-page .article-body blockquote {
    margin:24px 0 !important;
    padding:20px !important;
    line-height:1.9 !important;
  }
}
/* 본문 글자 크기만 변경 */
#tt-body-page .article-body {
  font-size: 18px;
}

#tt-body-page .article-body p,
#tt-body-page .article-body li {
  font-size: inherit !important;
}

@media (max-width: 760px) {
  #tt-body-page .article-body {
    font-size: 17px;
  }
}

/* 본문 및 인용문 글자 크기 */
#tt-body-page .article-body {
  --reading-font-size: 18px;
  --code-font-size: 15px;
  font-size: var(--reading-font-size);
}

#tt-body-page .article-body :is(p, li, blockquote) {
  font-size: var(--reading-font-size) !important;
}

/* 에디터에서 별도로 지정한 문장 크기도 통일 */
#tt-body-page .article-body :is(p, li, blockquote)
:is(span, font, strong, b, em, a) {
  font-size: inherit !important;
}

/* 문장 중간에 들어가는 짧은 코드 */
#tt-body-page .article-body :not(pre) > code {
  font-size: 0.95em !important;
}

/* 백틱 세 개로 만드는 코드 블록 */
/* 중첩된 크기 지정으로 작아지는 것도 방지 */
#tt-body-page .article-body pre,
#tt-body-page .article-body pre * {
  font-size: var(--code-font-size) !important;
}

/* 표 안의 글자 */
#tt-body-page .article-body table,
#tt-body-page .article-body table :is(th, td, p, li) {
  font-size: 15px !important;
}

/* 모바일 */
@media (max-width: 760px) {
  #tt-body-page .article-body {
    --reading-font-size: 17px;
    --code-font-size: 14px;
  }
}
