:root{--bg:#fff;--side:#f7f8fa;--text:#1f2937;--mute:#6b7280;--line:#e5e7eb;--acc:#2563eb;--accbg:#e8f0fe;--code:#f3f4f6;--warn:#fff7e6;--warnl:#f5b942;
box-sizing:border-box;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--bg:#0f1115;--side:#14171c;--text:#e5e7eb;--mute:#9ca3af;--line:#262b33;--acc:#7aa7ff;--accbg:#1b2638;--code:#1a1e25;--warn:#2a2314;--warnl:#b88a2a;color-scheme:dark}}
:root[data-theme="dark"]{--bg:#0f1115;--side:#14171c;--text:#e5e7eb;--mute:#9ca3af;--line:#262b33;--acc:#7aa7ff;--accbg:#1b2638;--code:#1a1e25;--warn:#2a2314;--warnl:#b88a2a;color-scheme:dark}
*{box-sizing:border-box}
html{scroll-padding-top:70px}
body{margin:0;background:var(--bg);color:var(--text);font:16px/1.75 "Pretendard","Noto Sans KR","Apple SD Gothic Neo","Malgun Gothic",system-ui,sans-serif}
header{position:sticky;top:env(safe-area-inset-top,0px);z-index:20;height:56px;display:grid;grid-template-columns:1fr minmax(0,520px) 1fr;align-items:center;gap:12px;padding:0 16px;background:var(--bg);border-bottom:1px solid var(--line)}
.logo{font-weight:700;display:flex;align-items:center;gap:8px;white-space:nowrap}
.logo i{display:inline-grid;place-items:center;width:28px;height:28px;border-radius:8px;background:var(--acc);color:#fff;font-style:normal;font-size:15px}
#q{width:100%;padding:8px 12px;border:1px solid var(--line);border-radius:10px;background:var(--side);color:var(--text);font:inherit;font-size:14px}
#q:focus{outline:2px solid var(--acc);background:var(--bg)}
button{font:inherit;cursor:pointer;color:var(--text);background:none;border:1px solid var(--line);border-radius:10px;padding:6px 10px}
#menu{display:none}
.wrap{display:grid;grid-template-columns:280px minmax(0,1fr) 220px;max-width:none;margin:0}
nav#side{position:sticky;top:calc(56px + env(safe-area-inset-top,0px));height:calc(100vh - 56px);overflow:auto;padding:16px 12px 40px;background:var(--side);border-right:1px solid var(--line)}
.grp{font-size:12px;font-weight:700;color:var(--mute);letter-spacing:.04em;margin:18px 10px 6px}
nav a{display:block;padding:6px 12px;margin:1px 0;border-radius:8px;color:var(--text);text-decoration:none;font-size:14.5px;line-height:1.5}
nav a:hover{background:var(--line)}
nav a.on{background:var(--accbg);color:var(--acc);font-weight:600}
main{padding:36px 48px 80px;min-width:0}
main>*{max-width:820px;margin-left:auto;margin-right:auto}
.crumb{font-size:13px;color:var(--mute);margin-bottom:8px}
h1{font-size:2rem;line-height:1.3;margin:0 0 6px}
.meta{color:var(--mute);font-size:13px;margin-bottom:24px;padding-bottom:20px;border-bottom:1px solid var(--line)}
article h2{font-size:1.35rem;margin:2.2em 0 .5em;padding-top:.4em}
article h3{font-size:1.1rem;margin:1.6em 0 .4em}
article p,article li{color:var(--text)}
article ol{padding-left:1.4em}
.art{border:1px solid var(--line);border-radius:12px;padding:14px 18px;margin:14px 0;background:var(--side)}
.art b.n{color:var(--acc);margin-right:6px}
.art ol{margin:6px 0 0}
.note{background:var(--warn);border-left:4px solid var(--warnl);padding:12px 16px;border-radius:8px;margin:18px 0;font-size:15px}
table{width:100%;border-collapse:collapse;margin:16px 0;font-size:14.5px;display:block;overflow-x:auto}
th,td{border:1px solid var(--line);padding:9px 12px;text-align:left;white-space:nowrap}
th{background:var(--side)}
td:last-child{white-space:normal}
.pager{display:flex;gap:12px;margin-top:56px}
.pager a{flex:1;border:1px solid var(--line);border-radius:12px;padding:14px 16px;text-decoration:none;color:var(--text)}
.pager a:hover{border-color:var(--acc)}
.pager small{display:block;color:var(--mute);font-size:12px}
.pager a:last-child{text-align:right}
aside#toc{position:sticky;top:calc(56px + env(safe-area-inset-top,0px));height:fit-content;padding:36px 16px;font-size:13px}
aside#toc b{display:block;color:var(--mute);margin-bottom:8px;font-size:12px}
aside#toc a{display:block;color:var(--mute);text-decoration:none;padding:3px 0 3px 10px;border-left:2px solid var(--line)}
aside#toc a:hover{color:var(--acc);border-color:var(--acc)}
mark{background:#ffe58a;color:#000;border-radius:3px}
.empty{color:var(--mute);padding:10px 12px;font-size:14px}
@media(max-width:1100px){.wrap{grid-template-columns:260px minmax(0,1fr)}aside#toc{display:none}}
@media(max-width:760px){
#menu{display:block}.logo span{display:none}
.wrap{display:block}
nav#side{position:fixed;left:0;top:calc(56px + env(safe-area-inset-top,0px));bottom:0;width:84%;max-width:320px;height:auto;z-index:15;transform:translateX(-100%);transition:transform .2s}
nav#side.open{transform:none;box-shadow:0 0 40px rgba(0,0,0,.3)}
main{padding:24px 18px 60px}h1{font-size:1.6rem}}

#edit{font-size:13px;white-space:nowrap}
#lm[hidden]{display:none}
#lm{position:fixed;inset:0;z-index:50;background:rgba(0,0,0,.5);display:grid;place-items:center;padding:20px}
#lm .mb{width:100%;max-width:360px;background:var(--bg);border:1px solid var(--line);border-radius:14px;padding:22px;display:grid;gap:12px}
#lm h2{margin:0;font-size:1.2rem}
#lm p{margin:0;color:var(--mute);font-size:14px}
#lpw{font:inherit;color:var(--text);background:var(--side);border:1px solid var(--line);border-radius:10px;padding:10px 12px;width:100%}
#lpw:focus{outline:2px solid var(--acc)}
#lerr{color:#dc2626;font-size:14px;min-height:1em}
#lm .mr{display:flex;justify-content:flex-end;gap:8px}
#lm .pri{background:var(--acc);color:#fff;border-color:var(--acc)}

/* ---------- 편집 모드 (오른쪽 편집 패널) ---------- */
:root{--epw:min(46vw,640px)}
body.editing #edit{display:none}
body.editing .wrap{grid-template-columns:280px minmax(0,1fr);margin-right:var(--epw)}
body.editing aside#toc{display:none}
#ep{position:fixed;top:calc(56px + env(safe-area-inset-top,0px));right:0;bottom:0;width:var(--epw);z-index:12;display:flex;flex-direction:column;background:var(--bg);border-left:1px solid var(--line);box-shadow:-8px 0 24px rgba(0,0,0,.08)}
#ep .eh{display:flex;align-items:center;gap:10px;padding:10px 14px;border-bottom:1px solid var(--line);flex-shrink:0}
#ep .eh b{font-size:15px}
#est{flex:1;min-width:0;font-size:12.5px;color:var(--mute);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#ep .eb2{display:flex;flex-wrap:wrap;gap:6px;padding:8px 14px;border-bottom:1px solid var(--line);background:var(--side);flex-shrink:0}
#ep .ebody{flex:1;overflow:auto;padding:12px 16px 60px;display:grid;gap:8px;align-content:start}
#ep .etools{display:flex;flex-wrap:wrap;gap:6px;position:sticky;top:-12px;background:var(--bg);padding:8px 0;z-index:2;border-bottom:1px solid var(--line)}
#ep button{font-size:13px;padding:5px 9px}
#ep input,#ep textarea{font:inherit;color:var(--text);background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:9px 12px;width:100%}
#ep input:focus,#ep textarea:focus{outline:2px solid var(--acc)}
#et{font-size:1.25rem;font-weight:700}
#ep .pri{background:var(--acc);color:#fff;border-color:var(--acc)}
#ep .pri:disabled{opacity:.4;cursor:default}
#ep .danger{color:#dc2626;border-color:#dc2626}
#ed{min-height:40vh;outline:none;padding:6px 2px}
#ed:empty:before{content:"여기에 내용을 입력하세요";color:var(--mute)}
#esrc{min-height:40vh;font:13px/1.6 ui-monospace,Menlo,Consolas,monospace!important}
@media(max-width:1000px){
 :root{--epw:100vw}
 body.editing .wrap{margin-right:0}
 #ep{top:auto;height:56vh;border-left:0;border-top:1px solid var(--line)}
 body.editing main{padding-bottom:60vh}
}

/* ---------- 헤더 가운데 검색창 / 제목 정렬 / 접히는 목차 ---------- */
.hl{display:flex;align-items:center;gap:12px;min-width:0}
.hr{display:flex;align-items:center;justify-content:flex-end;gap:8px}
body main>*{max-width:820px;margin-left:auto;margin-right:auto}   /* h1 등의 margin 규칙보다 우선 */
.gh{display:flex;align-items:center;gap:6px;cursor:pointer;user-select:none;border-radius:6px}
.gh:hover{color:var(--acc)}
.gh .chev{display:inline-block;font-size:10px;transition:transform .15s}
.gh.c .chev{transform:rotate(-90deg)}
.gh.c+.gi{display:none}
@media(max-width:760px){
 header{grid-template-columns:auto minmax(0,1fr) auto;gap:8px;padding:0 10px}
 #q{font-size:13px}
 #edit{padding:6px 8px;font-size:12px}
}

/* ---------- 검색 결과 위치 표시 ---------- */
/* 로고 이미지: 파란 배경 없이 비율 그대로 표시. 크기는 height 값만 바꾸면 됩니다 */
.logo i{display:block;background:none;width:auto;height:auto;border-radius:0}
.logo i img{height:40px;width:auto;display:block}
nav .sum{font-size:12.5px;color:var(--mute);margin:2px 10px 4px}
nav a.hit{margin:1px 0 1px 14px;padding:4px 10px;font-size:12.5px;color:var(--mute);border-left:2px solid var(--line);border-radius:0 8px 8px 0;line-height:1.5}
nav a.hit small{display:block;font-size:11px;color:var(--acc);font-weight:600}
nav a.hit.more{color:var(--acc);font-size:12px}
nav a mark{padding:0 1px}
mark.cur{background:#ff9f1c;outline:2px solid #ff9f1c;color:#000}

#edit[hidden]{display:none}   /* 관리자 서버가 켜져 있을 때만 app.js 가 보이게 함 */

/* ---------- 구분선 (깃북 스타일) ---------- */
article hr{border:0;border-top:1px solid var(--line);margin:2em 0}

#body img,#ed img{max-width:100%;height:auto;display:block;margin:12px 0;border-radius:6px}
