/* Markdown HTML 변환기 — 더뉴 셸 '원고 → 웹 페이지 책상'(2026-10-22). 편집기 글자는 뒤 표시층(.mdh-hl)이 그리고 위 textarea는 커서·선택만 보인다:
   두 층은 글꼴·크기·줄 높이·안쪽 여백·줄바꿈 규칙이 같아야 하므로 굵기·기울임·글자 크기를 바꾸는 꾸밈은 쓰지 않는다(색·바탕·밑줄만). */
.mdh-work{container:mdh / inline-size;--mdh-h:clamp(340px,58vh,600px);--k-url:#2f63a8;--k-code:#7a4f9c;--k-tag:#8a5800;overflow:hidden}
html[data-theme="dark"] .mdh-work{--k-url:#86b4f0;--k-code:#cfa6ec;--k-tag:#e6b765}
@media (prefers-color-scheme:dark){html:not([data-theme="light"]) .mdh-work{--k-url:#86b4f0;--k-code:#cfa6ec;--k-tag:#e6b765}}

/* 예시 띠 */
.mdh-top{display:flex;align-items:center;flex-wrap:wrap;gap:8px 10px;padding:10px 14px;border-bottom:1px solid var(--soft)}
.mdh-ex{display:flex;align-items:center;flex-wrap:wrap;gap:6px;flex:1 1 auto;min-width:0}
.mdh-ex .v2-label{margin:0 4px 0 0}
.mdh-ex button{height:30px;padding:0 11px;border:1px solid var(--soft);border-radius:var(--radius);background:var(--paper);font-family:var(--sans);font-size:12.5px;font-weight:600;color:var(--muted);cursor:pointer;transition:background var(--ease),color var(--ease)}
.mdh-ex button:hover{background:var(--btn);color:var(--ink)}
.mdh-ex button[aria-pressed="true"]{background:var(--fill);border-color:var(--fill);color:var(--on-fill)}
.mdh-keep{margin-left:auto;font-weight:500}
.mdh-full{flex:0 0 auto}
.mdh-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.mdh-full .i{width:15px;height:15px}

/* 책상: [편집기 | 구조 띠 | 결과] — 두 칸은 subgrid 로 머리 줄·상자·바닥 줄 높이를 함께 쓴다 */
.mdh-desk{display:grid;grid-template-columns:minmax(0,1fr) 22px minmax(0,1fr);grid-template-rows:auto var(--mdh-h) auto;border-bottom:1px solid var(--soft)}
.mdh-pane{grid-row:1 / span 3;display:grid;grid-template-rows:subgrid;min-width:0}
.mdh-pane--src{grid-column:1}
.mdh-pane--out{grid-column:3}
.mdh-ph{display:flex;align-items:center;flex-wrap:wrap;gap:6px 8px;min-height:44px;padding:6px 10px 6px 14px;border-bottom:1px solid var(--soft)}
.mdh-ph .v2-label{margin:0}
.mdh-ph .mdh-meta{margin-left:auto}
.mdh-tools{display:flex;flex-wrap:wrap;gap:0;margin-left:-6px}
.mdh-tools button{display:grid;place-items:center;width:26px;height:30px;padding:0;border:0;border-radius:var(--radius);background:none;color:var(--muted);cursor:pointer;transition:background var(--ease),color var(--ease)}
.mdh-tools button:hover{background:var(--btn);color:var(--ink)}
.mdh-tools button:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
.mdh-tools svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.mdh-g{font:700 14px/1 var(--serif);text-decoration-thickness:1.5px}
.mdh-g--i{font-style:italic;font-weight:600}
.mdh-box{position:relative;min-height:0;min-width:0}
.mdh-pf{display:flex;align-items:center;flex-wrap:wrap;gap:6px;padding:8px 10px 8px 14px;border-top:1px solid var(--soft)}
.mdh-pf .v2-btn{padding-left:10px;padding-right:10px}
.mdh-save__x{font-family:var(--mono);font-size:11.5px}
@container mdh (min-width:640px) and (max-width:682px){.mdh-save__x{display:none}.mdh-save{padding-left:9px;padding-right:9px}} /* 결과 칸 330px 이하(1280px 셸 313px): 단추 셋을 한 줄에. 칸에 컨테이너를 걸면 subgrid 가 꺼진다 */
.mdh-meta{font-family:var(--mono);font-size:11.5px;color:var(--muted);white-space:nowrap}
.mdh-pf .mdh-meta{margin-left:auto}

/* 편집기 */
.mdh-ed{background:var(--paper)}
.mdh-ed:focus-within{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 55%,transparent)}
.mdh-ta,.mdh-hl{box-sizing:border-box;margin:0;padding:12px 14px 12px 16px;font-family:var(--mono);font-size:13px;line-height:21px;font-weight:400;tab-size:4;letter-spacing:0;white-space:pre-wrap;overflow-wrap:anywhere;word-break:normal;scrollbar-gutter:stable}
.mdh-ta{position:relative;z-index:1;display:block;width:100%;height:100%;border:0;border-radius:0;background:transparent;color:var(--ink);resize:none;outline:0;overflow-x:hidden;overflow-y:auto}
.mdh-ta::placeholder{color:var(--muted);opacity:.85;font-family:var(--sans)}
.mdh-hl{position:absolute;inset:0;display:none;overflow:hidden;color:var(--ink);pointer-events:none}
.mdh-ed.is-x .mdh-hl{display:block}
.mdh-ed.is-x .mdh-ta{color:transparent;caret-color:var(--ink)}
.mdh-ed.is-x .mdh-ta::selection{background:color-mix(in srgb,var(--accent) 26%,transparent);color:transparent}
.mdh-hl .hl.is-w{position:relative}
.mdh-hl .hl.is-w::before{content:"";position:absolute;left:-11px;top:3px;bottom:3px;width:3px;border-radius:2px;background:var(--accent)}
.k-mk,.k-li,.k-q,.k-pipe,.k-fence,.k-esc{color:var(--muted)}
.k-h{color:var(--accent)}
.k-h .k-em{color:color-mix(in srgb,var(--accent) 60%,var(--muted))}
.k-em,.k-task{color:var(--accent)}
.k-cs,.k-code{color:var(--k-code);background:color-mix(in srgb,var(--k-code) 9%,transparent)}
.k-lang{color:var(--k-code)}
.k-url{color:var(--k-url)}
.k-lt{text-decoration:underline;text-decoration-color:color-mix(in srgb,var(--k-url) 45%,transparent);text-underline-offset:3px}
.k-tag{color:var(--k-tag)}
.mdh-drop{position:absolute;inset:6px;z-index:2;display:none;place-items:center;border:2px dashed var(--accent);border-radius:var(--radius);background:color-mix(in srgb,var(--paper) 86%,transparent);font-family:var(--sans);font-size:13px;font-weight:600;color:var(--accent);pointer-events:none}
.mdh-pane.is-drop .mdh-drop{display:grid}

/* 구조 띠: 편집기 전체 높이를 띠 높이로 줄여 블록 종류를 칠하고, 보이는 범위(창)와 점검할 블록(점)을 겹친다 */
.mdh-spine{grid-column:2;grid-row:2;position:relative;overflow:hidden;border-inline:1px solid var(--soft);background:color-mix(in srgb,var(--wash) 55%,var(--paper));cursor:pointer;touch-action:none}
.mdh-spine .sp{position:absolute;left:6px;right:6px;border-radius:1px;background:var(--soft)}
.mdh-spine .sp-h{left:3px;right:3px;background:var(--accent)}
.mdh-spine .sp-h3,.mdh-spine .sp-h4,.mdh-spine .sp-h5,.mdh-spine .sp-h6{left:7px;background:color-mix(in srgb,var(--accent) 65%,var(--paper))}
.mdh-spine .sp-l{background:repeating-linear-gradient(180deg,var(--line) 0 2px,transparent 2px 4px)}
.mdh-spine .sp-q{left:9px;background:var(--line)}
.mdh-spine .sp-c{background:var(--muted)}
.mdh-spine .sp-t{background:repeating-linear-gradient(90deg,var(--line) 0 3px,transparent 3px 5px)}
.mdh-spine .sp-x{background:none;border:1px dashed var(--line)}
.mdh-spine .sp-r{left:4px;right:4px;background:var(--line)}
.mdh-spine .sp-w{position:absolute;right:1px;width:5px;height:5px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 1.5px var(--paper)}
.mdh-spine .sp-win{position:absolute;left:1px;right:1px;border:1px solid color-mix(in srgb,var(--ink) 55%,transparent);border-radius:2px;background:color-mix(in srgb,var(--ink) 6%,transparent);transition:top 90ms linear,height 90ms linear}

/* 결과 */
.mdh-pv{display:block;width:100%;height:100%;border:0;background:#fff}
html[data-theme="dark"] .mdh-pv{background:#18191b}
@media (prefers-color-scheme:dark){html:not([data-theme="light"]) .mdh-pv{background:#18191b}}
.mdh-code{box-sizing:border-box;height:100%;margin:0;padding:12px 14px;overflow:auto;background:color-mix(in srgb,var(--wash) 45%,var(--paper));font-family:var(--mono);font-size:12.5px;line-height:20px;color:var(--ink);white-space:pre-wrap;overflow-wrap:anywhere;outline:0}
.mdh-code:focus-visible{box-shadow:inset 0 0 0 2px var(--accent)}
.mdh-code[hidden],.mdh-pv[hidden]{display:none}
.mdh-code .c-t{color:var(--k-tag)}
.mdh-code .c-a{color:var(--k-url)}
.mdh-code .c-v{color:var(--k-code)}
.mdh-code .c-e{color:var(--accent)}
.mdh-code .c-cm,.mdh-code .c-none{color:var(--muted)}
.mdh-code .cb.is-cur{background:var(--accent-wash);box-shadow:-14px 0 0 var(--accent-wash)}

/* 변환 규칙 */
.mdh-rules{display:flex;align-items:center;flex-wrap:wrap;gap:10px 18px;padding:12px 14px;border-bottom:1px solid var(--soft)}
.mdh-rules__t{margin:0}
.mdh-set{display:flex;align-items:center;gap:8px}
.mdh-set__l{font-family:var(--sans);font-size:12.5px;font-weight:600;color:var(--muted);white-space:nowrap}
.mdh-sw span{white-space:nowrap}
.mdh-st{margin:0;padding:10px 14px 0;min-height:20px}

/* 점검표 */
.mdh-check{padding:10px 14px 14px}
.mdh-sh{display:flex;align-items:center;flex-wrap:wrap;gap:6px 10px;margin:0 0 10px}
.mdh-sh .v2-label{margin:0}
.mdh-hint{font-family:var(--sans);font-size:12px;color:var(--muted)}
.mdh-kinds{display:flex;flex-wrap:wrap;gap:4px 12px;margin:0 0 0 auto;padding:0;list-style:none;font-family:var(--sans);font-size:12px;color:var(--muted)}
.mdh-kinds li{display:inline-flex;align-items:center;gap:5px}
.mdh-kinds b{font-family:var(--mono);font-weight:600;color:var(--ink)}
.mdh-kinds i{width:10px;height:10px;border-radius:1px;background:var(--soft)}
.mdh-kinds [data-k="h"] i{background:var(--accent)}
.mdh-kinds [data-k="l"] i{background:repeating-linear-gradient(180deg,var(--line) 0 2px,transparent 2px 4px)}
.mdh-kinds [data-k="q"] i{width:4px;margin:0 3px;background:var(--line)}
.mdh-kinds [data-k="c"] i{background:var(--muted)}
.mdh-kinds [data-k="t"] i{background:repeating-linear-gradient(90deg,var(--line) 0 3px,transparent 3px 5px)}
.mdh-kinds [data-k="x"] i{background:none;border:1px dashed var(--line)}
.mdh-kinds [data-k="r"] i{height:2px;background:var(--line)}
.mdh-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,232px),1fr));gap:8px;margin:0;padding:0;list-style:none}
.mdh-card{display:flex;flex-direction:column;gap:6px;padding:10px 12px;border:1px solid var(--soft);border-left:3px solid var(--line);border-radius:var(--radius);background:var(--paper)}
.mdh-card.is-warn{border-left-color:var(--accent)}
.mdh-card.is-ok{border-left-color:var(--fill)}
.mdh-card p{margin:0}
.mdh-card__h{display:flex;align-items:baseline;gap:8px;font-family:var(--sans);font-size:13px;color:var(--ink)}
.mdh-card__n{margin-left:auto;font-family:var(--mono);font-size:12px;font-weight:600;color:var(--muted);white-space:nowrap}
.mdh-card.is-warn .mdh-card__n{color:var(--accent)}
.mdh-card__d{flex:1 1 auto;font-family:var(--sans);font-size:12.5px;line-height:1.55;color:var(--muted)}
.mdh-card__a{display:flex;flex-wrap:wrap;gap:6px}
.mdh-card__a .v2-btn{height:28px;padding:0 10px;font-size:12px}
.mdh-none{margin:0;font-family:var(--sans);font-size:13px;color:var(--muted)}
.mdh-nojs{margin:0;padding:12px 14px;font-family:var(--sans);font-size:13px;color:var(--accent)}

/* 전체 화면(R46): 책상이 남는 높이를 모두 쓴다 */
.mdh-work:fullscreen,.mdh-work.is-full{display:flex;flex-direction:column;overflow:auto;background:var(--card);--mdh-h:auto}
.mdh-work.is-full{position:fixed;inset:0;z-index:1000;margin:0;border-radius:0}
.mdh-work:fullscreen .mdh-desk,.mdh-work.is-full .mdh-desk{flex:0 0 auto;height:calc(100vh - 52px);height:calc(100dvh - 52px);min-height:420px;grid-template-rows:auto minmax(0,1fr) auto} /* 책상이 화면을 채우고 규칙·점검표는 그 아래로 스크롤 */
html.mdh-noscroll{overflow:hidden}

/* 좁은 작업면: 편집기 위, 결과 아래로 쌓고 구조 띠는 뺀다 */
@container mdh (max-width:639px){
  .mdh-desk{grid-template-columns:minmax(0,1fr);grid-template-rows:auto clamp(220px,46vh,340px) auto auto clamp(260px,52vh,420px) auto}
  .mdh-pane--src{grid-column:1;grid-row:1 / span 3}
  .mdh-pane--out{grid-column:1;grid-row:4 / span 3;border-top:1px solid var(--soft)}
  .mdh-spine{display:none}
  .mdh-top,.mdh-ph,.mdh-pf,.mdh-rules,.mdh-check{padding-left:12px;padding-right:12px}
  .mdh-ta,.mdh-hl{padding-left:14px;padding-right:12px}
  .mdh-rules{gap:10px 14px}
}
@media (prefers-reduced-motion:reduce){.mdh-spine .sp-win{transition:none}}
.v2-article .mdh-art-map code,.v2-article .mdh-art-ko code,.v2-article .mdh-art-br code,.v2-article .mdh-art-form code,.v2-article .mdh-art-ids code{overflow-wrap:anywhere}
