:root{
  --bg:#0f1216; --panel:#151a20; --panel2:#1b222a; --line:#28313c;
  --text:#e7edf4; --dim:#93a1b1; --accent:#4f8cff; --accent2:#7a5cff;
  --danger:#ff6b6b;
  --sans:"Roboto","Noto Sans KR",-apple-system,"Segoe UI","맑은 고딕",sans-serif;
  --mono:"Roboto Mono",ui-monospace,Consolas,monospace;
  --r:10px;
}
*{box-sizing:border-box}
html,body{min-height:100%}
/* ⚠ overflow:hidden 을 걸면 안 된다. 아래 설명 섹션(.minfo)이 색인 대상이라
   페이지가 스크롤돼야 한다. 도구 본체(.app)만 정확히 뷰포트 높이로 고정한다. */
body{margin:0;background:var(--bg);color:var(--text);font-family:var(--sans);
  font-size:14.5px;-webkit-font-smoothing:antialiased}
button{font-family:inherit;font-size:13.5px;font-weight:500;color:var(--text);
  background:var(--panel2);border:1px solid var(--line);border-radius:var(--r);
  padding:8px 14px;cursor:pointer;transition:.15s;white-space:nowrap}
button:hover{background:#232c36;border-color:#3a4756}
button:disabled{opacity:.45;cursor:default}
button.primary{background:linear-gradient(135deg,var(--accent),var(--accent2));
  border-color:transparent;color:#fff;font-weight:700}
button.primary:hover{filter:brightness(1.1)}
.spacer{flex:1}

.app{display:flex;flex-direction:column;height:100vh}

/* ── 헤더 ─────────────────────────────────────────────────────────────── */
.hdr{display:flex;align-items:center;gap:12px;padding:10px 16px;
  background:var(--panel);border-bottom:1px solid var(--line);flex:0 0 auto}
.logo{font-family:var(--mono);font-weight:700;font-size:17px;
  background:linear-gradient(135deg,var(--accent),var(--accent2));
  -webkit-background-clip:text;background-clip:text;color:transparent;white-space:nowrap}
.hdr .t{display:flex;flex-direction:column;line-height:1.25;min-width:0}
.hdr .t span{font-weight:700;font-size:15px;white-space:nowrap}
.hdr .t small{color:var(--dim);font-size:11.5px;white-space:nowrap}
.seg{display:flex;border:1px solid var(--line);border-radius:var(--r);overflow:hidden;flex:0 0 auto}
.seg button{border:0;border-radius:0;background:transparent;padding:7px 13px;font-size:12.5px}
.seg button.on{background:var(--accent);color:#fff;font-weight:700}
.seg.lang button{font-size:12px;padding:7px 11px}

/* ── 본문 3단 ─────────────────────────────────────────────────────────── */
.body{flex:1;display:grid;grid-template-columns:264px 1fr 1fr;min-height:0}
.pane{display:flex;flex-direction:column;min-width:0;min-height:0;
  border-right:1px solid var(--line)}
.pane:last-child{border-right:0}
.pane-h{display:flex;align-items:center;gap:6px;padding:9px 13px;font-size:12px;
  font-weight:700;color:var(--dim);letter-spacing:.04em;text-transform:uppercase;
  background:var(--panel);border-bottom:1px solid var(--line);flex:0 0 auto}
.mini{padding:3px 8px;font-size:11px;background:transparent;border-color:transparent;
  color:var(--dim);text-transform:none;letter-spacing:0;font-weight:500}
.mini:first-of-type{margin-left:auto}
.mini:hover{color:var(--text);background:var(--panel2)}
/* 파일 선택은 주 동작이라 눈에 띄게 (elta 지시 2026-08-10) */
.mini.pick{color:#cfe0ff;background:rgba(79,140,255,.16);
  border-color:rgba(79,140,255,.45);font-weight:700;padding:4px 10px}
.mini.pick:hover{color:#fff;background:var(--accent);border-color:var(--accent)}

/* ── 파일 목록 ────────────────────────────────────────────────────────── */
.files{background:var(--panel);overflow-y:auto}
.flist,.ilist{list-style:none;margin:0;padding:6px}
.flist li,.ilist li{display:flex;align-items:center;gap:8px;padding:8px 10px;
  border-radius:8px;cursor:pointer;font-size:13px;color:var(--dim);
  overflow:hidden;white-space:nowrap}
.flist li .nm{overflow:hidden;text-overflow:ellipsis}
.flist li:hover{background:var(--panel2)}
.flist li.on{background:var(--panel2);color:var(--text);font-weight:600;
  box-shadow:inset 2px 0 0 var(--accent)}
.flist li.bad{color:var(--danger);cursor:default}
.flist li .x{margin-left:auto;opacity:0;padding:0 4px;font-size:15px;line-height:1;flex:0 0 auto}
.flist li:hover .x{opacity:.6}
.flist li .x:hover{opacity:1;color:var(--danger)}
.ilist li{cursor:default;font-family:var(--mono);font-size:11.5px}
.ilist li img{width:22px;height:22px;object-fit:cover;border-radius:4px;flex:0 0 auto}
.ilist li span{overflow:hidden;text-overflow:ellipsis}
.empty,.hint{padding:10px 14px;color:#5f6c7b;font-size:12px;line-height:1.5}
/* 드래그&드롭이 된다는 걸 화면에서 바로 알 수 있게 (elta 지시 2026-08-10) */
.dz{display:flex;flex-direction:column;align-items:center;gap:5px;text-align:center;
  margin:8px 10px;padding:22px 12px;border:1.5px dashed #35414f;border-radius:12px;
  background:rgba(79,140,255,.04);transition:.15s}
.dz .dz-ic{font-size:22px;line-height:1;color:var(--accent);opacity:.85}
.dz .dz-1{color:#a9b7c6;font-size:12.5px;font-weight:600}
.dz .dz-2{color:#6b7887;font-size:11.5px}
body.dragging .dz{border-color:var(--accent);background:rgba(79,140,255,.1)}

/* ── URL 입력 ─────────────────────────────────────────────────────────── */
.urlbox{margin-top:auto;padding:12px 13px 14px;border-top:1px solid var(--line)}
.urlbox label{display:block;font-size:11.5px;color:var(--dim);margin-bottom:6px;font-weight:600}
.urlrow{display:flex;gap:6px}
.urlrow input{flex:1;min-width:0;background:var(--bg);border:1px solid var(--line);
  border-radius:8px;padding:7px 10px;color:var(--text);font-family:inherit;
  font-size:12.5px;outline:none}
.urlrow input:focus{border-color:var(--accent)}
.urlrow button{padding:7px 11px;font-size:12.5px}
.urlmsg{margin-top:7px;font-size:11.5px;min-height:15px;color:var(--dim);line-height:1.4}
.urlmsg.err{color:var(--danger)}

/* ── 에디터·미리보기 ──────────────────────────────────────────────────── */
#editor{flex:1;min-height:0;width:100%;resize:none;border:0;outline:none;
  background:var(--bg);color:var(--text);font-family:var(--mono);font-size:13.5px;
  line-height:1.7;padding:16px;tab-size:2}
#editor::placeholder{color:#4d5b6b}
#preview{flex:1;min-height:0;width:100%;border:0;background:#fff}

/* ── 하단 바 ──────────────────────────────────────────────────────────── */
.bar{display:flex;align-items:center;gap:8px;padding:10px 16px;background:var(--panel);
  border-top:1px solid var(--line);flex:0 0 auto}
.note{color:var(--dim);font-size:12px}

/* ── 드롭 오버레이 · 토스트 ───────────────────────────────────────────── */
.drop{position:fixed;inset:0;display:none;align-items:center;justify-content:center;
  background:rgba(15,18,22,.86);backdrop-filter:blur(3px);z-index:50}
.drop.on{display:flex}
.dropin{border:2px dashed var(--accent);border-radius:16px;padding:52px 72px;
  font-size:17px;font-weight:700;color:var(--text);text-align:center}
.toast{position:fixed;left:50%;bottom:64px;transform:translate(-50%,14px);
  background:var(--panel2);border:1px solid var(--line);border-radius:var(--r);
  padding:10px 18px;font-size:13px;opacity:0;pointer-events:none;transition:.2s;z-index:60}
.toast.on{opacity:1;transform:translate(-50%,0)}

/* ── 설명 섹션 ─────────────────────────────────────────────────────────
   ⚠ 이 섹션은 SEO 용이다. 화면 문자열은 strings.js 가 JS 로 채우는데, 그러면
   구글봇이 받는 원본 HTML 에 글자가 하나도 없다(2026-08-10 실측 108자).
   그래서 여기 내용만은 **HTML 에 한/영을 그대로** 박는다. JS 로 옮기지 말 것.
   도구 페이지(.minfo-lite)는 요약만, 상세는 /mdhtml/about/ 이 담당한다. */
.minfo{border-top:1px solid var(--line);background:var(--panel)}
.minfo-in{max-width:820px;margin:0 auto;padding:44px 22px 64px;font-size:15px;line-height:1.75}
.minfo h1{font-size:25px;font-weight:800;margin:0 0 6px;letter-spacing:-.02em}
.minfo h2{font-size:19px;font-weight:800;margin:36px 0 12px;letter-spacing:-.01em}
.minfo .sub2{display:block;font-weight:500;color:var(--dim);font-size:.66em;margin-top:4px;letter-spacing:0}
.minfo p{margin:0 0 13px;color:#c6d2df}
.minfo .en{display:block;color:#7d8b9a;font-size:13.5px;line-height:1.65;margin-top:4px}
.minfo ol,.minfo ul{margin:0 0 13px;padding-left:21px;color:#c6d2df}
.minfo li{margin-bottom:9px}
.minfo dl{margin:0}
.minfo dt{font-weight:700;margin-top:19px;color:var(--text)}
.minfo dd{margin:5px 0 0;color:#a4b1bf}
.minfo strong{color:var(--text)}
.minfo .lead{color:#d5dfea;font-size:16px}
.minfo a{color:#7fb0ff;text-decoration:none}
.minfo a:hover{text-decoration:underline}
.minfo .more{margin:30px 0 0}
.minfo .more a{display:inline-flex;flex-direction:column;gap:1px;
  border:1px solid rgba(79,140,255,.45);background:rgba(79,140,255,.12);
  border-radius:10px;padding:11px 18px;color:#cfe0ff;font-weight:700;font-size:14.5px}
.minfo .more a:hover{background:var(--accent);border-color:var(--accent);color:#fff;text-decoration:none}
.minfo .more .en2{font-size:11.5px;font-weight:500;opacity:.75}

/* 도구 페이지의 요약 블록 — 상세는 /mdhtml/about/ 로 뺐다 */
.minfo-lite .minfo-in{padding:34px 22px 44px}
.minfo-lite h1{font-size:22px}

/* ── /mdhtml/about/ 전용 ───────────────────────────────────────────────── */
.docpage{background:var(--bg)}
.docpage .minfo{border-top:0;background:transparent}
.dochdr{display:flex;align-items:center;gap:14px;padding:12px 20px;
  background:var(--panel);border-bottom:1px solid var(--line)}
.dochome{display:flex;align-items:center;gap:10px;color:var(--text);
  text-decoration:none;font-weight:700;font-size:15px;line-height:1.2}
.dochome small{display:block;color:var(--dim);font-weight:500;font-size:11.5px}
.docback{margin-left:auto;display:inline-flex;flex-direction:column;gap:1px;
  border:1px solid transparent;border-radius:10px;padding:8px 15px;
  background:linear-gradient(135deg,var(--accent),var(--accent2));
  color:#fff;font-weight:700;font-size:13.5px;text-decoration:none;white-space:nowrap}
.docback:hover{filter:brightness(1.1)}
.docback .en2{font-size:11px;font-weight:500;opacity:.8}
@media (max-width:520px){
  .dochome small{display:none}
  .docback .en2{display:none}
}

/* ── 반응형 ───────────────────────────────────────────────────────────── */
@media (max-width:1180px){
  .body{grid-template-columns:230px 1fr}
  .prev{display:none}
  .body.showprev .src{display:none}
  .body.showprev .prev{display:flex}
}
@media (max-width:760px){
  .body{grid-template-columns:1fr}
  .files{position:fixed;inset:52px 0 auto;z-index:40;max-height:60vh;display:none}
  .files.on{display:flex}
  .hdr .t small{display:none}
  .bar{overflow-x:auto}
}
