@charset "utf-8";
/* ==========================================================================
   Emergence — 학술 웹 열람판 스킨 (Tistory)
   본문 조판 규격: 미색 바탕 / 명조 / 17px / 줄간격 1.95 / 본문 폭 46rem
   ========================================================================== */

/* --- 옛한글 명조 (선택) ------------------------------------------------
   images/ 폴더에 NanumMyeongjo-YetHangul.woff2 를 올리면 옛한글이 깨지지 않습니다.
   올리지 않아도 아래 폴백(Nanum Myeongjo → Noto Serif KR)으로 정상 표시됩니다. */
@font-face {
  font-family: 'NanumMyeongjo YetHangul';
  src: url('./images/NanumMyeongjo-YetHangul.woff2') format('woff2');
  font-weight: normal; font-style: normal; font-display: swap;
}

:root {
  --paper:#faf8f3; --ink:#22201c; --accent:#37507a; --accent-soft:#eef1f6;
  --rule:#d9d3c7; --muted:#8a8377; --ex-bg:#f3f1ea; --ex-border:#c9c2b2;
  --serif:'NanumMyeongjo YetHangul','Nanum Myeongjo','NanumMyeongjo','Noto Serif KR','Noto Serif CJK KR','Malgun Gothic',serif;
  --sans:-apple-system,BlinkMacSystemFont,'Apple SD Gothic Neo','Malgun Gothic','Pretendard',sans-serif;
  --measure:46rem;
}

* { box-sizing:border-box; }
html { scroll-behavior:smooth; -webkit-text-size-adjust:100%; }
body {
  margin:0; background:var(--paper); color:var(--ink);
  font-family:var(--serif);
  font-size:17px; line-height:1.95; word-break:keep-all;
}
img { max-width:100%; height:auto; }
a { color:inherit; }
.skip-link {
  position:absolute; left:-9999px; top:0; background:var(--accent); color:#fff;
  padding:.5rem 1rem; z-index:100; font-family:var(--sans); font-size:.85rem;
}
.skip-link:focus { left:0; }

.wrap { max-width:var(--measure); margin:0 auto; padding:0 1.4rem 5rem; }

/* ══════════ 표제부 ══════════ */
.masthead {
  text-align:center; padding:4.5rem 0 2.2rem;
  border-bottom:1px solid var(--rule); margin-bottom:2.6rem;
}
.journal {
  font-size:.82rem; letter-spacing:.12em; color:var(--muted);
  text-transform:uppercase; margin:0 0 1.4rem; font-family:var(--sans);
}
.brand { font-size:2.1rem; line-height:1.35; font-weight:800; margin:.2rem 0 .7rem; letter-spacing:-.01em; }
.brand a { text-decoration:none; }
.brand a:hover { color:var(--accent); }
.byline { margin:0; font-size:.95rem; font-style:italic; color:var(--muted); }

/* 홈이 아닌 화면에서는 표제부를 줄여 본문을 앞세운다 */
#tt-body-page .masthead,
#tt-body-category .masthead,
#tt-body-search .masthead,
#tt-body-tag .masthead,
#tt-body-archive .masthead,
#tt-body-guestbook .masthead {
  padding:2.4rem 0 1.5rem; margin-bottom:2rem;
}
#tt-body-page .journal, #tt-body-page .byline,
#tt-body-category .journal, #tt-body-category .byline,
#tt-body-search .journal, #tt-body-search .byline,
#tt-body-tag .journal, #tt-body-tag .byline,
#tt-body-archive .journal, #tt-body-archive .byline,
#tt-body-guestbook .journal, #tt-body-guestbook .byline { display:none; }
#tt-body-page .brand,
#tt-body-category .brand,
#tt-body-search .brand,
#tt-body-tag .brand,
#tt-body-archive .brand,
#tt-body-guestbook .brand { font-size:1.25rem; margin:0; letter-spacing:.02em; }
#tt-body-page .mast-menu,
#tt-body-category .mast-menu,
#tt-body-search .mast-menu,
#tt-body-tag .mast-menu,
#tt-body-archive .mast-menu,
#tt-body-guestbook .mast-menu { margin-top:.9rem; }

.mast-menu { margin-top:1.5rem; font-family:var(--sans); font-size:.84rem; }
.mast-menu ul { list-style:none; margin:0; padding:0; display:flex; gap:1.4rem; justify-content:center; flex-wrap:wrap; }
.mast-menu li { margin:0; }
.mast-menu a { color:var(--muted); text-decoration:none; letter-spacing:.04em; }
.mast-menu a:hover { color:var(--accent); }

/* ══════════ 좌측 고정 차례 ══════════ */
.railnav {
  position:fixed; top:4rem; left:calc(50% - 23rem - 16.5rem); width:14.5rem;
  max-height:calc(100vh - 7rem); overflow-y:auto; overscroll-behavior:contain;
  font-family:var(--sans); font-size:.82rem; line-height:1.6;
  border-left:2px solid var(--rule); padding:0 .6rem 1rem 1rem;
  scrollbar-width:thin;
}
.railnav::-webkit-scrollbar { width:5px; }
.railnav::-webkit-scrollbar-thumb { background:var(--rule); border-radius:3px; }

.rail-brand {
  display:block; font-family:var(--serif); font-weight:800; font-size:1.15rem;
  line-height:1.4; text-decoration:none; color:var(--ink); margin-bottom:.25rem;
}
.rail-brand:hover { color:var(--accent); }
.rail-desc { margin:0 0 1.6rem; font-size:.76rem; color:var(--muted); line-height:1.55; }
.rail-label {
  font-weight:700; letter-spacing:.2em; color:var(--muted);
  margin:0 0 .55rem; font-size:.72rem;
}

/* 카테고리 목록 — 티스토리가 생성하는 마크업을 구조 기준으로 조판 */
.rail-cate ul { list-style:none; margin:0; padding:0; }
.rail-cate li { margin:0; }
.rail-cate a {
  display:block; color:#55503f; text-decoration:none;
  padding:.16rem 0; border:0;
}
.rail-cate a:hover { color:var(--accent); }
.rail-cate a.is-current { color:var(--accent); font-weight:700; }
.rail-cate ul ul a { padding-left:.9rem; color:var(--muted); font-size:.96em; }
.rail-cate ul ul ul a { padding-left:1.8rem; }
.rail-cate .c_cnt, .rail-cate .cnt { color:#b3ab9c; font-size:.9em; margin-left:.25em; }

.rail-search { margin:1.5rem 0 1.1rem; display:flex; gap:.3rem; }
.rail-search input {
  flex:1 1 auto; min-width:0; font-family:var(--sans); font-size:.8rem;
  padding:.4rem .55rem; border:1px solid var(--rule); border-radius:4px;
  background:#fff; color:var(--ink);
}
.rail-search input:focus { outline:none; border-color:var(--accent); }
.rail-search button {
  flex:0 0 auto; border:1px solid var(--rule); background:#fff; color:var(--accent);
  border-radius:4px; padding:0 .55rem; cursor:pointer; font-size:.85rem;
}
.rail-search button:hover { background:var(--accent-soft); }

.rail-links { list-style:none; margin:0; padding:0; display:flex; gap:.9rem; flex-wrap:wrap; }
.rail-links a { color:var(--muted); text-decoration:none; font-size:.78rem; }
.rail-links a:hover { color:var(--accent); }
.rail-links a.is-admin { color:#b3ab9c; }
.rail-links a.is-admin:hover { color:var(--accent); }

.rail-count {
  margin:1.4rem 0 0; padding-top:.9rem; border-top:1px solid var(--rule);
  font-size:.72rem; color:#b3ab9c; line-height:1.7;
}
.rail-count span { display:block; }

@media (max-width:1300px) { .railnav { display:none; } }

/* 좁은 화면용 접이식 차례 */
.toc-m {
  margin:0 0 2.4rem; background:var(--accent-soft); border-radius:8px;
  padding:.75rem 1.1rem; font-family:var(--sans); font-size:.88rem;
}
.toc-m summary { cursor:pointer; font-weight:700; color:var(--accent); letter-spacing:.03em; }
.toc-m[open] summary { margin-bottom:.7rem; }
.toc-m .rail-cate a { color:#55503f; }
.toc-m .rail-search { margin:1rem 0 .8rem; }
@media (min-width:1301px) { .toc-m { display:none; } }

/* ══════════ 홈 · 목록 ══════════ */
.post-item {
  padding:2.1rem 0; border-bottom:1px solid var(--rule);
}
.post-item:first-child { padding-top:.4rem; }
.pi-meta, .li-meta {
  font-family:var(--sans); font-size:.76rem; color:var(--muted);
  letter-spacing:.03em; margin-bottom:.5rem; line-height:1.6;
}
.pi-meta a, .li-meta a { color:var(--accent); text-decoration:none; }
.pi-meta a:hover, .li-meta a:hover { text-decoration:underline; }
.pi-sep { display:inline-block; width:1px; height:.7em; background:var(--rule); margin:0 .55em; vertical-align:-.05em; }
.pi-flag {
  display:inline-block; background:var(--accent); color:#fff; font-weight:700;
  font-size:.68rem; letter-spacing:.08em; padding:.05rem .45rem; border-radius:3px; margin-right:.5rem;
}
.pi-title, .li-title { font-size:1.3rem; line-height:1.5; font-weight:700; margin:0 0 .5rem; }
.pi-title a, .li-title a { text-decoration:none; }
.pi-title a:hover, .li-title a:hover { color:var(--accent); }
.pi-body { display:flex; gap:1.2rem; align-items:flex-start; }
/* 요약은 원문에서 줄바꿈이 뭉개진 채로 들어오므로 양쪽 정렬하지 않는다 */
.pi-sum, .li-sum {
  flex:1 1 auto; margin:0; font-size:.94rem; line-height:1.8;
  color:#55503f; text-align:left;
  display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden;
}
.pi-thumb { flex:0 0 6.5rem; display:block; }
.pi-thumb img {
  width:6.5rem; height:6.5rem; object-fit:cover; display:block;
  border:1px solid var(--rule); border-radius:4px; background:var(--ex-bg);
}

/* 홈에서는 위쪽 글 목록만 남기고, 아래 '전체 글' 목록은 감춘다
   (둘 다 보이는 것은 관리자 홈 설정이 '내용+목록'이기 때문이다) */
#tt-body-index .listing { display:none; }

.listing-head { padding:.4rem 0 1.6rem; border-bottom:1px solid var(--rule); margin-bottom:.5rem; }
.listing-title { font-size:1.7rem; font-weight:800; margin:0 0 .4rem; }
.listing-count { margin:0; font-family:var(--sans); font-size:.8rem; color:var(--muted); letter-spacing:.04em; }
.listing-desc { margin:.7rem 0 0; font-size:.92rem; color:#55503f; }
.listing-empty { padding:3rem 0; text-align:center; color:var(--muted); }
.list-items { list-style:none; margin:0; padding:0; counter-reset:none; }
.li-item { padding:1.8rem 0; border-bottom:1px solid var(--rule); }

/* ══════════ 개별 글 ══════════ */
.entry-head { padding:1.2rem 0 2rem; border-bottom:1px solid var(--rule); margin-bottom:2.4rem; text-align:center; }
.entry-kicker {
  font-family:var(--sans); font-size:.78rem; letter-spacing:.12em; color:var(--muted);
  text-transform:uppercase; margin:0 0 1rem;
}
.entry-kicker a { color:var(--accent); text-decoration:none; }
.entry-title { font-size:1.95rem; line-height:1.45; font-weight:800; margin:0 0 .9rem; letter-spacing:-.01em; }
.entry-date { margin:0; font-family:var(--sans); font-size:.78rem; color:var(--muted); letter-spacing:.04em; }

/* ── 본문 조판 ── */
.entry-content { font-size:17px; line-height:1.95; }
.entry-content p { margin:0 0 1.05rem; text-align:justify; }
.entry-content h1, .entry-content h2 {
  font-size:1.34rem; margin:3.2rem 0 1.1rem; padding-bottom:.45rem;
  border-bottom:1px solid var(--rule); font-weight:700; line-height:1.5;
}
.entry-content h3 { font-size:1.12rem; margin:2.4rem 0 .9rem; font-weight:700; color:#2f2c26; line-height:1.55; }
.entry-content h4 { font-size:1rem; margin:2rem 0 .8rem; font-weight:700; color:var(--accent); }
.entry-content strong, .entry-content b { font-weight:700; }
.entry-content em, .entry-content i { font-style:italic; }
.entry-content u { text-decoration-color:var(--accent); text-decoration-thickness:1.5px; text-underline-offset:4px; }
.entry-content a { color:var(--accent); text-decoration:underline; text-underline-offset:3px; text-decoration-thickness:1px; }
.entry-content a:hover { background:var(--accent-soft); }
.entry-content ul, .entry-content ol { margin:0 0 1.2rem; padding-left:1.6rem; }
.entry-content li { margin-bottom:.35rem; text-align:justify; }
.entry-content hr { border:0; border-top:1px solid var(--rule); margin:2.6rem 0; }
.entry-content sup { line-height:0; font-size:.75em; }

/* 인용 — 웹 열람판의 예문 상자 */
.entry-content blockquote {
  background:var(--ex-bg); border-left:3px solid var(--ex-border);
  margin:1.5rem 0 1.7rem; padding:1.05rem 1.3rem;
  font-size:.93rem; line-height:1.85; border-radius:0 6px 6px 0;
}
.entry-content blockquote p { margin:0 0 .55rem; padding-left:1.6em; text-indent:-1.6em; text-align:left; }
.entry-content blockquote p:last-child { margin-bottom:0; }
.entry-content blockquote.tistory_1,
.entry-content blockquote.tistory_2,
.entry-content blockquote.tistory_3 { border-left:3px solid var(--ex-border); background:var(--ex-bg); font-style:normal; }

/* 코드 */
.entry-content code, .entry-content kbd, .entry-content samp {
  font-family:ui-monospace,SFMono-Regular,'SF Mono',Menlo,Consolas,monospace;
  font-size:.86em; background:var(--ex-bg); border:1px solid var(--rule);
  border-radius:3px; padding:.05em .35em; word-break:break-all;
}
.entry-content pre {
  background:#2f2c26; color:#f2eee4; border-radius:6px; padding:1.1rem 1.3rem;
  overflow-x:auto; margin:1.6rem 0; line-height:1.7; font-size:.86rem;
}
.entry-content pre code { background:none; border:0; padding:0; color:inherit; font-size:1em; }

/* 그림 */
.entry-content figure, .entry-content .imageblock { margin:2rem 0; text-align:center; }
.entry-content figure img, .entry-content .imageblock img { border-radius:4px; }
.entry-content figcaption {
  text-align:center; font-size:.86rem; color:var(--muted); margin-top:.8rem; line-height:1.7;
}
.entry-content .imageblock span, .entry-content .image_caption { font-size:.86rem; color:var(--muted); }

/* 표 */
.entry-content table {
  border-collapse:collapse; margin:1.8rem auto; font-size:.9rem; width:100%;
  display:block; overflow-x:auto;
}
.entry-content th, .entry-content td { border:1px solid var(--rule); padding:.45rem .9rem; line-height:1.7; }
.entry-content th { background:var(--accent-soft); font-weight:700; }

/* 티스토리 편집기 잔여 요소 */
.entry-content .tt_article_useless_p_margin p { margin:0 0 1.05rem; }
.entry-content .another_category, .entry-content .container_postbtn { display:none; }
.entry-content .fileblock, .entry-content .link_wrap, .entry-content .og-image {
  border:1px solid var(--rule); border-radius:6px; background:#fff;
}

/* ── 태그 · 관리 · 이전다음 ── */
.entry-tags {
  margin:2.6rem 0 0; padding-top:1.2rem; border-top:1px solid var(--rule);
  font-family:var(--sans); font-size:.8rem; color:var(--muted); line-height:2;
}
.et-label { letter-spacing:.14em; font-weight:700; margin-right:.5rem; }
.entry-tags a {
  color:var(--accent); text-decoration:none; background:var(--accent-soft);
  padding:.12rem .55rem; border-radius:3px; margin-right:.3rem; display:inline-block;
}
.entry-tags a:hover { background:#dfe5ef; }
/* 관리자에게만 보이는 줄 (<s_ad_div>) */
.entry-admin {
  margin:1.6rem 0 0; padding:.7rem 1rem; font-family:var(--sans); font-size:.78rem;
  background:var(--accent-soft); border:1px solid #dfe5ef; border-radius:6px;
  display:flex; align-items:center; gap:.9rem; flex-wrap:wrap;
}
.entry-admin .ea-label { letter-spacing:.14em; font-weight:700; color:var(--accent); font-size:.7rem; }
.entry-admin a { color:#4a5160; text-decoration:none; }
.entry-admin a:hover { color:var(--accent); text-decoration:underline; }
.entry-admin .ea-main { font-weight:700; color:var(--accent); }

.entry-nav { display:flex; gap:1rem; margin:3rem 0 0; flex-wrap:wrap; }
.en-item {
  flex:1 1 12rem; min-width:0; text-decoration:none;
  border:1px solid var(--rule); background:#fff; border-radius:8px;
  padding:.9rem 1.1rem; box-shadow:0 1px 4px rgba(0,0,0,.05);
}
.en-item:hover { border-color:var(--accent); }
.en-next { text-align:right; }
.en-lab {
  display:block; font-family:var(--sans); font-size:.7rem; letter-spacing:.14em;
  color:var(--muted); margin-bottom:.3rem;
}
.en-tit { display:block; font-size:.92rem; line-height:1.6; }

/* ── 관련 글 · 댓글 ── */
.sec-title {
  font-size:.8rem; font-family:var(--sans); font-weight:700; letter-spacing:.09em;
  color:var(--muted); margin:3.5rem 0 1.1rem; padding-bottom:.5rem;
  border-bottom:1px solid var(--rule);
}
.related-list { list-style:none; margin:0; padding:0; }
.related-list li { border-bottom:1px dotted var(--rule); }
.related-list a {
  display:flex; gap:1rem; justify-content:space-between; align-items:baseline;
  padding:.6rem 0; text-decoration:none; font-size:.94rem;
}
.related-list a:hover .rl-tit { color:var(--accent); }
.rl-tit { flex:1 1 auto; min-width:0; }
.rl-date { flex:0 0 auto; font-family:var(--sans); font-size:.74rem; color:var(--muted); }
.rl-more {
  display:inline-block; margin-top:.9rem; font-family:var(--sans); font-size:.78rem;
  color:var(--accent); text-decoration:none;
}

.comments { margin-top:1rem; font-family:var(--sans); }
.comments .tt-comment-cont { font-size:.92rem; line-height:1.75; }
.comments .tt_desc, .comments .tt-cmt { font-family:var(--serif); font-size:.95rem; line-height:1.85; }
.comments .tt_date { color:var(--muted); }

/* ── 보호글 ── */
.protected {
  border:1px solid var(--rule); background:#fff; border-radius:8px;
  padding:2.5rem 2rem; text-align:center; margin:2rem 0;
  box-shadow:0 1px 4px rgba(0,0,0,.05);
}
.protected .entry-title { font-size:1.4rem; }
.protected .entry-title a { text-decoration:none; }
.protected-msg { color:var(--muted); font-size:.9rem; margin:1.4rem 0; }
.protected-form { display:flex; gap:.4rem; justify-content:center; align-items:center; flex-wrap:wrap; }
.protected-form label { font-family:var(--sans); font-size:.8rem; color:var(--muted); }
.protected-form input { border:1px solid var(--rule); border-radius:4px; padding:.4rem .6rem; font-family:var(--sans); }
.protected-form button {
  border:1px solid var(--accent); background:var(--accent); color:#fff;
  border-radius:4px; padding:.42rem .9rem; cursor:pointer; font-family:var(--sans); font-size:.82rem;
}

/* ── 태그 클라우드 ── */
.tagcloud ul { list-style:none; margin:1.8rem 0 0; padding:0; display:flex; flex-wrap:wrap; gap:.5rem .8rem; align-items:baseline; }
.tagcloud a { text-decoration:none; color:#55503f; font-family:var(--sans); line-height:1.9; }
.tagcloud a:hover { color:var(--accent); }
.tagcloud .cloud1 { font-size:1.5rem; font-weight:700; color:var(--accent); }
.tagcloud .cloud2 { font-size:1.2rem; font-weight:700; }
.tagcloud .cloud3 { font-size:1rem; }
.tagcloud .cloud4 { font-size:.88rem; color:var(--muted); }
.tagcloud .cloud5 { font-size:.8rem; color:#b3ab9c; }

/* ── 방명록 ── */
.guestbook { font-family:var(--sans); }
.guestbook .listing-title { font-family:var(--serif); }

/* ══════════ 페이지 넘김 ══════════ */
.paging {
  display:flex; align-items:center; justify-content:center; gap:.5rem;
  margin:3.5rem 0 0; padding-top:2rem; border-top:1px solid var(--rule);
  font-family:var(--sans); font-size:.82rem; flex-wrap:wrap;
}
.pg-nums { display:flex; gap:.2rem; flex-wrap:wrap; justify-content:center; }
.paging a {
  display:inline-block; text-decoration:none; color:#55503f;
  padding:.3rem .62rem; border-radius:4px; border:1px solid transparent;
}
.paging a:hover { color:var(--accent); background:var(--accent-soft); }
.paging a.selected, .paging a.pg-num.selected { color:var(--accent); font-weight:700; border-color:var(--rule); background:#fff; }
.pg-arrow { color:var(--muted); }
.paging a.no_more_prev, .paging a.no_more_next { opacity:.3; pointer-events:none; }

/* ══════════ 꼬리말 ══════════ */
.site-foot {
  margin-top:4.5rem; padding-top:1.6rem; border-top:1px solid var(--rule);
  text-align:center; font-family:var(--sans); font-size:.76rem; color:var(--muted); line-height:1.9;
}
.site-foot p { margin:0; }
.site-foot a { text-decoration:none; }
.site-foot a:hover { color:var(--accent); }
.foot-count { color:#b3ab9c; font-size:.72rem; }

#top-btn {
  position:fixed; right:1.2rem; bottom:1.2rem; width:2.6rem; height:2.6rem;
  border-radius:50%; border:1px solid var(--rule); background:#fff; color:var(--accent);
  font-size:1.1rem; cursor:pointer; box-shadow:0 2px 8px rgba(0,0,0,.1);
  opacity:0; transition:opacity .25s; z-index:20;
}

/* ══════════ 좁은 화면 ══════════ */
@media (max-width:640px) {
  body { font-size:16px; }
  .wrap { padding:0 1.15rem 3.5rem; }
  .masthead { padding:2.6rem 0 1.8rem; margin-bottom:1.8rem; }
  .brand { font-size:1.65rem; }
  .entry-title { font-size:1.5rem; }
  .entry-head { padding:.4rem 0 1.5rem; margin-bottom:1.8rem; }
  .pi-title, .li-title { font-size:1.16rem; }
  .pi-body { gap:.9rem; }
  .pi-thumb, .pi-thumb img { flex-basis:4.6rem; width:4.6rem; height:4.6rem; }
  .entry-content { font-size:16px; line-height:1.9; }
  .entry-content p, .entry-content li, .pi-sum, .li-sum { text-align:left; }
  .entry-nav { flex-direction:column; }
  .en-next { text-align:left; }
}

/* ══════════ 인쇄 ══════════ */
@media print {
  .railnav, .toc-m, .paging, .entry-nav, .related, .comments,
  #top-btn, .mast-menu, .site-foot, .entry-admin { display:none !important; }
  body { background:#fff; font-size:11pt; }
  .wrap { max-width:none; padding:0; }
  .entry-content a { color:inherit; text-decoration:none; }
}