/* JSON ↔ YAML 변환기 전용 CSS (2026-10-20). '거울 편집기': 예시 줄 · [JSON 칸 | 방향·연결선 | YAML 칸](두 칸 모두 편집, 행은 subgrid 로 맞춤) · 경로 줄 · 상태 줄 · YAML 해석 점검 칩.
   글 칸은 줄 번호(보이는 줄만)와 뒤판 띠(고른 줄·반대쪽 같은 값 줄·오류 줄)를 같은 줄 높이 20px 로 겹친다. 움직임: 연결선이 그려짐, 원본이 바뀌면 방향 화살표가 돈다 — reduced-motion 정지.
   작업면 752px 미만(1181~1366px 화면·태블릿·휴대폰)은 두 칸을 위아래로 쌓고 연결선 대신 화살표만 둔다. 공용 부품은 assets/v2.css */
.jy-work{container:jy / inline-size}
.jy-top{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 16px;padding:12px 16px;border-bottom:1px solid var(--soft)}
.jy-ex{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.jy-exl{margin-right:2px;font-family:var(--sans);font-size:12px;font-weight:700;color:var(--muted)}
.jy-exb{display:inline-flex;flex-direction:column;align-items:flex-start;gap:1px;min-height:38px;padding:4px 11px;border:1px solid var(--soft);border-radius:var(--radius);background:var(--paper);color:var(--ink);font-family:var(--sans);text-align:left;cursor:pointer;transition:background var(--ease),border-color var(--ease),color var(--ease)}
.jy-exb b{font-size:12.5px;font-weight:700;line-height:1.3;white-space:nowrap}
.jy-exb small{font-size:11px;line-height:1.3;color:var(--muted);white-space:nowrap}
.jy-exb:hover{background:var(--btn)}
.jy-exb[aria-pressed="true"]{background:var(--fill);border-color:var(--fill);color:var(--on-fill)}
.jy-exb[aria-pressed="true"] small{color:inherit;opacity:.75}
.jy-exb:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.jy-clear{flex:0 0 auto;margin-left:auto;white-space:nowrap}
.jy-clear svg,.jy-pf svg{width:15px;height:15px}

/* ---------- 두 칸 ---------- */
.jy-panes{display:grid;grid-template-columns:minmax(0,1fr) 44px minmax(0,1fr);grid-template-rows:auto auto auto auto;padding:14px 16px 0}
.jy-pane{display:grid;grid-row:span 4;grid-template-rows:subgrid;min-width:0;border:1px solid var(--line);border-radius:var(--radius);background:var(--paper)}
.jy-ph{display:flex;align-items:baseline;justify-content:space-between;gap:10px;padding:9px 12px 8px;border-bottom:1px solid var(--soft)}
.jy-ph label{flex:0 0 auto;font-family:var(--sans);font-size:13.5px;font-weight:800;color:var(--ink)}
.jy-meta{min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-family:var(--sans);font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}
.jy-bar{display:flex;flex-wrap:wrap;align-items:center;align-content:flex-start;gap:8px 14px;padding:8px 12px;border-bottom:1px solid var(--soft);background:var(--card)}
.jy-opt{display:flex;align-items:center;gap:7px}
.jy-optl{font-family:var(--sans);font-size:12px;font-weight:700;color:var(--muted);white-space:nowrap}
.jy-seg{flex-wrap:nowrap}
.jy-seg button{height:28px;padding:0 10px;white-space:nowrap;cursor:pointer}
.jy-seg button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.jy-docs{white-space:nowrap}
.jy-docs[hidden]{display:none}

/* 글 칸: 줄 번호 | (뒤판 띠 + 투명한 textarea) */
.jy-ed{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr);min-width:0}
.jy-gut{position:relative;width:calc(var(--gw,2ch) + 20px);overflow:hidden;border-right:1px solid var(--soft);background:color-mix(in srgb,var(--wash) 55%,var(--paper));font-family:var(--mono);font-size:12px;color:var(--muted);user-select:none}
.jy-gut span{position:absolute;right:8px;left:0;height:20px;padding-right:0;line-height:20px;text-align:right;font-variant-numeric:tabular-nums}
.jy-gut span.is-cur{color:var(--ink)}
.jy-gut span.is-link{color:var(--accent);font-weight:700}
.jy-gut span.is-err{background:var(--accent);color:var(--paper);font-weight:700}
.jy-gut span.is-mark::before{content:"";position:absolute;left:5px;top:7px;width:6px;height:6px;border-radius:50%;background:var(--accent)}
.jy-box{position:relative;min-width:0;height:calc(var(--jy-r,14) * 20px + 22px);background:var(--paper)}
.jy-back{position:absolute;inset:0;overflow:hidden;pointer-events:none}
.jy-back i{position:absolute;left:0;right:0;height:20px}
.jy-back .b-cur{background:color-mix(in srgb,var(--ink) 5%,transparent)}
.jy-back .b-link{background:color-mix(in srgb,var(--accent) 15%,transparent);box-shadow:inset 3px 0 0 var(--accent)}
.jy-back .b-err{background:color-mix(in srgb,var(--accent) 22%,transparent);box-shadow:inset 3px 0 0 var(--accent)}
.jy-text{position:absolute;inset:0;display:block;box-sizing:border-box;width:100%;height:100%;margin:0;padding:10px 12px 12px;border:0;border-radius:0;background:transparent;color:var(--ink);font-family:var(--mono);font-size:13px;line-height:20px;white-space:pre;overflow:auto;resize:none;tab-size:2;transition:opacity var(--ease)}
.jy-text::placeholder{font-family:var(--sans);color:var(--muted);opacity:.85;white-space:pre-wrap}
.jy-text:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
.jy-text.is-stale{opacity:.42}
.jy-drop{position:absolute;inset:8px;display:flex;align-items:center;justify-content:center;border:2px dashed var(--accent);border-radius:var(--radius);background:color-mix(in srgb,var(--paper) 82%,var(--accent));pointer-events:none}
.jy-drop[hidden]{display:none}
.jy-drop span{display:inline-flex;align-items:center;gap:8px;padding:0 12px;font-family:var(--sans);font-size:14px;font-weight:800;color:var(--ink);text-align:center}
.jy-drop svg{width:20px;height:20px;color:var(--accent)}
.jy-pf{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:8px 10px;border-top:1px solid var(--soft)}
.jy-pf .v2-btn{flex:0 1 auto;min-width:0;white-space:nowrap}
.jy-pf .v2-btn span{min-width:0;overflow:hidden;text-overflow:ellipsis}
.jy-pf .v2-btn:disabled{opacity:.45;cursor:default}

/* 가운데: 방향 화살표 + 연결선(나란히일 때만) */
.jy-mid{position:relative;grid-row:1 / span 4;grid-column:2;min-width:0}
.jy-dir{position:absolute;left:50%;top:10px;display:grid;place-items:center;width:30px;height:30px;margin-left:-15px;border:1px solid var(--line);border-radius:50%;background:var(--paper);color:var(--ink);transition:transform .38s cubic-bezier(.3,.7,.2,1)}
.jy-dir svg{width:17px;height:17px}
.jy-dir[data-dir="y2j"]{transform:rotate(180deg)}
.jy-link{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none;opacity:0;transition:opacity var(--ease)}
.jy-link.is-on{opacity:1}
.jy-link path{fill:none;stroke:var(--accent);stroke-width:1.6;stroke-linecap:round}
.jy-pane--json{grid-column:1}
.jy-pane--yaml{grid-column:3}

/* ---------- 경로 줄(오류면 오류 위치) ---------- */
.jy-path{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;min-height:34px;margin:10px 16px 0;padding:5px 10px;border:1px solid var(--soft);border-radius:var(--radius);background:var(--card);font-family:var(--sans);font-size:12.5px;line-height:1.5;color:var(--ink)}
.jy-path:empty{display:none}
.jy-pl{font-size:12px;font-weight:700;color:var(--muted);white-space:nowrap}
.jy-pv{display:inline-flex;flex-wrap:wrap;align-items:baseline;gap:2px 5px;min-width:0}
.jy-pv b{font-family:var(--mono);font-size:12.5px;font-weight:700;overflow-wrap:anywhere}
.jy-pv b.jy-ix{color:var(--muted)}
.jy-pv i{font-style:normal;color:var(--muted)}
.jy-dim{color:var(--muted)}
.jy-pt{color:var(--muted)}
.jy-pt code,.jy-cr code{font-family:var(--mono);font-size:12.5px;color:var(--ink);overflow-wrap:anywhere}
.jy-pn{margin-left:auto;color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums}
.jy-path.is-err{border-color:var(--accent);box-shadow:inset 3px 0 0 var(--accent);background:var(--paper)}
.jy-path.is-err .jy-pl{color:var(--accent)}
.jy-path.is-err .jy-pv{display:inline;font-weight:600}
.jy-go{height:28px}
.jy-sline{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:4px 16px;margin:8px 16px 0}
.jy-status{flex:1 1 300px;margin:0}
.jy-privacy{flex:0 1 auto;margin:0;font-family:var(--sans);font-size:12px;line-height:1.5;color:var(--muted)}
.jy-undo .v2-btn{height:26px;margin-left:4px;vertical-align:middle}

/* ---------- YAML 해석 점검 ---------- */
.jy-check{margin-top:14px;padding:13px 16px 16px;border-top:1px solid var(--line)}
.jy-work:not([data-check]) .jy-check,.jy-work[data-check=""] .jy-check{display:none}
.jy-chd{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px}
.jy-ct{font-family:var(--sans);font-size:14px;font-weight:800;color:var(--ink)}
.jy-cnote{max-width:80ch;margin:4px 0 10px;font-family:var(--sans);font-size:12.5px;line-height:1.6;color:var(--muted)}
.jy-chips{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,200px),1fr));gap:8px;margin:0;padding:0;list-style:none}
.jy-chips:empty{display:none}
.jy-chip{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:3px 8px;width:100%;height:100%;padding:8px 10px;border:1px solid var(--soft);border-radius:var(--radius);background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:12px;line-height:1.45;text-align:left;cursor:pointer;animation:jy-in .3s cubic-bezier(.2,.7,.2,1) both;animation-delay:calc(var(--i,0) * 22ms);transition:border-color var(--ease),background var(--ease)}
.jy-chip:hover{border-color:var(--line);background:var(--card)}
.jy-chip:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.jy-ch{display:flex;align-items:baseline;gap:6px;grid-column:1 / -1;min-width:0}
.jy-ch b{font-family:var(--mono);font-size:11.5px;font-weight:700;color:var(--accent);white-space:nowrap}
.jy-ck{min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:var(--muted)}
.jy-cx{grid-column:1 / -1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-family:var(--mono);font-size:13.5px;font-weight:700}
.jy-cr{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 5px;min-width:0;color:var(--muted)}
.jy-cr i{flex:0 0 auto;padding:0 4px;border:1px solid var(--soft);border-radius:var(--radius);font-family:var(--mono);font-size:10.5px;font-style:normal;line-height:16px;color:var(--muted)}
.jy-cr.is-on{color:var(--ink);font-weight:700}
.jy-cr.is-on i{border-color:var(--fill);background:var(--fill);color:var(--on-fill)}
.jy-cr--w{grid-column:1 / -1}
.jy-more{display:flex;align-items:center;padding:8px 10px;font-family:var(--sans);font-size:12px;color:var(--muted)}
@keyframes jy-in{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}

/* ---------- 좁은 작업면: 위아래로 ---------- */
@container jy (max-width:751px){
  .jy-panes{grid-template-columns:minmax(0,1fr);grid-template-rows:none}
  .jy-pane{display:flex;flex-direction:column;grid-row:auto}
  .jy-pane--json,.jy-pane--yaml,.jy-mid{grid-column:1}
  .jy-pane .jy-ed{flex:1 1 auto}
  .jy-mid{grid-row:auto;height:38px}
  .jy-dir{top:4px;transform:rotate(90deg)}
  .jy-dir[data-dir="y2j"]{transform:rotate(-90deg)}
  .jy-link{display:none}
}
@container jy (max-width:420px){
  .jy-exb{flex:1 1 calc(50% - 6px)}
  .jy-exl{width:100%}
}
@media (prefers-reduced-motion:reduce){
  .jy-dir,.jy-link,.jy-text{transition:none}
  .jy-chip{animation:none}
}
