/* PDF 텍스트 추출기 (pdf-text-extractor) — 작업면 '쪽 지도 + 원고'. 2026-10-21, 작업 카드 1.193 193차(PDF 텍스트).
   넓으면 원고 | 원본 쪽 두 칸, 작업면 680px 미만은 원고 → 원본 쪽으로 쌓는다. 원본 쪽 위 그림(줄 상자·문단 괄호)은 늘 흰 종이 위라 고정 색. */
.pte-work{container:pte/inline-size;position:relative;overflow:hidden;
  --b-t:color-mix(in srgb,var(--ink) 58%,var(--card)); --b-o:color-mix(in srgb,var(--accent) 30%,var(--card));
  --b-e:color-mix(in srgb,var(--muted) 50%,transparent); --b-s:color-mix(in srgb,var(--accent) 40%,var(--card))}
.pte-input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.pte-drop[hidden],.pte-desk[hidden]{display:none}
.pte-work.is-over{outline:2px dashed var(--accent);outline-offset:-6px}

/* ---------- 빈 상태: 끌어 놓기 | 잇는 방식 견본 + 예시 ---------- */
.pte-drop{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:14px;padding:16px}
.pte-dropbox{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;min-height:320px;padding:26px 18px;text-align:center;border:1.5px dashed var(--line);border-radius:var(--radius);background:color-mix(in srgb,var(--wash) 55%,var(--paper));cursor:pointer;transition:background var(--ease),border-color var(--ease)}
.pte-dropbox:hover,.pte-work.is-over .pte-dropbox{background:var(--wash);border-color:var(--ink)}
.pte-dropbox:focus-within{outline:2px solid var(--accent);outline-offset:2px}
.pte-dropbox b{font-size:16px;font-weight:800;letter-spacing:-.01em}
.pte-dropbox > span:not(.v2-btn){max-width:34ch;font-family:var(--sans);font-size:13px;line-height:1.6;color:var(--muted)}
.pte-dropbox small{font-family:var(--sans);font-size:12px;color:var(--muted)}
.pte-pickbtn{height:38px;padding:0 18px;margin-top:4px}
.pte-dropart{width:150px;height:86px;margin-bottom:4px}
.pte-da-pg{fill:var(--paper);stroke:var(--line);stroke-width:1.5}
.pte-da-fold{fill:none;stroke:var(--line);stroke-width:1.5}
.pte-da-ln{stroke:var(--muted);stroke-width:2.4;stroke-linecap:round;stroke-dasharray:2 2.6;fill:none}
.pte-da-ar{fill:none;stroke:var(--accent);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.pte-da-out{fill:var(--card);stroke:var(--ink);stroke-width:1.5}
.pte-da-tx{stroke:var(--ink);stroke-width:2.4;stroke-linecap:round;fill:none}
.pte-intro{display:flex;flex-direction:column;gap:12px;min-width:0}
.pte-intro > .v2-label{margin:0}
.pte-demo{display:grid;grid-template-columns:minmax(0,1fr);gap:4px;justify-items:stretch}
.pte-dm{align-self:stretch;padding:10px 11px;border:1px solid var(--soft);border-radius:var(--radius);background:var(--paper)}
.pte-dm small{display:block;margin:0 0 6px;font-family:var(--sans);font-size:11px;font-weight:650;color:var(--muted)}
.pte-dm p{margin:0;font-size:13px;line-height:1.75;word-break:keep-all;overflow-wrap:anywhere}
.pte-dm--in span{display:block}
.pte-ret::after{content:"\21B5";margin-left:4px;font-family:var(--mono);font-size:11px;font-weight:700;color:var(--accent)}
.pte-dm--out{border-color:var(--line);background:var(--card)}
.pte-jn{display:inline-block;width:5px;height:5px;margin:0 1px 2px;border-radius:50%;background:var(--accent);vertical-align:middle}
.pte-dm-ar{justify-self:center;width:18px;height:18px;color:var(--accent);transform:rotate(90deg)}
.pte-facts{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px;font-family:var(--sans);font-size:12.5px;color:var(--ink)}
.pte-facts li{position:relative;padding-left:16px;line-height:1.55}
.pte-facts li::before{content:"";position:absolute;left:3px;top:.6em;width:6px;height:6px;border-radius:50%;background:var(--accent)}
.pte-sample{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:auto;padding:11px 12px;border:1px solid var(--soft);border-radius:var(--radius);background:color-mix(in srgb,var(--wash) 60%,var(--card))}
.pte-sample p{margin:0;min-width:0;display:flex;flex-direction:column;gap:2px}
.pte-sample b{font-size:13.5px;font-weight:750}
.pte-sample span{font-family:var(--sans);font-size:12px;line-height:1.5;color:var(--muted)}
.pte-sample .v2-btn{flex:none}

/* ---------- 파일 줄·비밀번호·경고 ---------- */
.pte-desk{display:flex;flex-direction:column;min-width:0}
.pte-file{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--soft)}
.pte-fico{flex:none;width:28px;height:28px;color:var(--muted)}
.pte-fname{flex:1 1 auto;min-width:0;margin:0;display:flex;flex-direction:column;gap:1px}
.pte-fname b{font-size:14.5px;font-weight:750;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pte-fname span{font-family:var(--sans);font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}
.pte-other{flex:none;cursor:pointer}
.pte-pw{display:grid;grid-template-columns:minmax(0,300px) auto;justify-content:start;gap:6px 8px;padding:12px 16px;border-bottom:1px solid var(--soft);background:var(--accent-wash)}
.pte-pw[hidden],.pte-warn[hidden],.pte-mapbox[hidden],.pte-ocr[hidden],.pte-pgocr[hidden],.pte-tag[hidden],.pte-undo[hidden]{display:none}
.pte-pwf .v2-input input{text-align:left}
.pte-pwgo{display:flex;flex-direction:column}
.pte-pwgo > .v2-label{display:block;margin:0 0 5px}
.pte-pwgo > .v2-label::before{content:"\00a0"}
.pte-pwmsg{grid-column:1/-1;margin:0;font-family:var(--sans);font-size:12px;line-height:1.5;color:var(--muted)}
.pte-pwmsg.is-err{color:var(--accent)}
.pte-warn{margin:0;padding:10px 16px;border-bottom:1px solid var(--soft);background:var(--accent-wash);font-family:var(--sans);font-size:13px;line-height:1.6}
.pte-warn a{color:var(--accent);font-weight:700;text-decoration:underline;text-underline-offset:3px}

/* ---------- 쪽 지도 ---------- */
.pte-mapbox{padding:12px 16px 12px;border-bottom:1px solid var(--soft)}
.pte-maphead{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,240px);gap:10px 18px;align-items:start;margin-bottom:8px}
.pte-mapinfo{min-width:0}
.pte-mapinfo > .v2-label{margin:0 0 3px}
.pte-now{margin:0;display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 8px}
.pte-now b{font-family:var(--sans);font-size:19px;font-weight:800;letter-spacing:-.01em;font-variant-numeric:tabular-nums}
.pte-now span{font-family:var(--sans);font-size:12.5px;color:var(--muted)}
.pte-legend{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:3px 12px;font-family:var(--sans);font-size:11.5px;color:var(--muted);font-variant-numeric:tabular-nums}
.pte-legend li{display:inline-flex;align-items:center;gap:5px}
.pte-legend i{width:9px;height:9px;border-radius:1.5px;background:var(--b-t)}
.pte-rngf .v2-input input{text-align:left;font-size:14.5px}
.pte-rnghint{display:block;margin-top:4px;font-family:var(--sans);font-size:11.5px;line-height:1.45;color:var(--muted)}
.pte-rnghint.is-err{color:var(--accent)}
.pte-mapwrap{position:relative;height:66px;padding-bottom:9px;touch-action:pan-y;cursor:ew-resize;user-select:none;-webkit-user-select:none}
.pte-map{position:absolute;left:0;right:0;top:0;bottom:9px;display:flex;align-items:flex-end;gap:2px;border-bottom:1px solid var(--line)}
.pte-map.is-dense{gap:0}
.pte-map i{flex:1 1 0;min-width:0;height:calc(var(--h,.08) * 100%);background:var(--b-t);border-radius:1.5px 1.5px 0 0;transition:height .45s cubic-bezier(.2,.7,.2,1),background-color .2s,opacity .2s}
.pte-map.is-dense i{border-radius:0}
.pte-map i[data-s="w"],.pte-legend [data-s="w"] i{background:var(--soft)}
.pte-map i[data-s="o"],.pte-legend [data-s="o"] i{background:radial-gradient(circle,var(--accent) .9px,transparent 1.2px) 0 0/4px 4px,var(--b-o)}
.pte-map i[data-s="e"],.pte-legend [data-s="e"] i{background:repeating-linear-gradient(135deg,var(--b-e) 0 1.5px,transparent 1.5px 5px),var(--wash)}
.pte-map i[data-s="s"],.pte-legend [data-s="s"] i{background:var(--b-s);box-shadow:inset 0 0 0 1px var(--accent)}
.pte-map i[data-s="x"],.pte-legend [data-s="x"] i{background:var(--line)}
.pte-map i[data-s="q"],.pte-legend [data-s="q"] i{background:var(--accent-wash);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 55%,transparent)}
.pte-map i[data-s="r"],.pte-legend [data-s="r"] i{background:var(--accent);animation:pte-pulse 1s ease-in-out infinite alternate}
.pte-legend [data-s="out"] i{background:var(--b-t);opacity:.28}
.pte-map i.is-out{opacity:.28}
.pte-cursor{position:absolute;top:0;bottom:0;width:0;pointer-events:none;transition:left .12s ease}
.pte-cursor::before{content:"";position:absolute;left:-.75px;top:-3px;bottom:8px;width:1.5px;background:var(--accent)}
.pte-cursor::after{content:"";position:absolute;left:-5px;bottom:0;border:5px solid transparent;border-top:0;border-bottom:7px solid var(--accent)}
.pte-mapwrap.is-drag .pte-cursor{transition:none}
.pte-scrub{position:absolute;left:0;top:0;width:100%;height:100%;margin:0;opacity:0;pointer-events:none}
.pte-mapwrap:has(.pte-scrub:focus-visible){outline:2px solid var(--accent);outline-offset:3px}
@keyframes pte-pulse{from{opacity:.45}to{opacity:1}}

/* ---------- OCR 줄 ---------- */
.pte-ocr{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr);gap:6px 12px;align-items:center;padding:12px 16px;border-bottom:1px solid var(--soft);background:color-mix(in srgb,var(--accent-wash) 80%,var(--card))}
.pte-ocrico{grid-row:1/span 3;align-self:start;display:grid;place-items:center;width:36px;height:36px;border:1px solid color-mix(in srgb,var(--accent) 35%,transparent);border-radius:var(--radius);background:var(--paper);color:var(--accent)}
.pte-ocrico .i{width:20px;height:20px}
.pte-ocrlead{margin:0;font-size:13.5px;font-weight:650;line-height:1.55}
.pte-ocrctl{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px}
.pte-langs[hidden],.pte-ocrctl .v2-btn[hidden]{display:none}
.pte-ocrnote{margin:0;font-family:var(--sans);font-size:11.5px;line-height:1.5;color:var(--muted)}
.pte-ocrbar{position:absolute;left:0;bottom:-1px;height:2px;width:0;background:var(--accent);transition:width .3s ease}
.pte-ocr:not(.is-busy) .pte-ocrbar{display:none}

/* ---------- 원고 | 원본 쪽 ---------- */
.pte-panes{display:grid;grid-template-columns:minmax(0,1fr) 300px}
.pte-ms{position:relative;display:flex;flex-direction:column;gap:8px;min-width:0;padding:12px 14px 14px 16px;border-right:1px solid var(--soft)}
.pte-mshead{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:6px 10px}
.pte-count{margin:0;font-family:var(--sans);font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}
.pte-sws{display:flex;flex-wrap:wrap;gap:6px 16px}
.pte-outlab{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.pte-out{flex:1 1 auto;display:block;width:100%;min-height:420px;margin:0;padding:12px 14px;resize:vertical;border:1px solid var(--line);border-radius:var(--radius);background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:15px;font-weight:400;line-height:1.75;letter-spacing:0;tab-size:4;white-space:pre-wrap;overflow-wrap:break-word;word-break:normal;transition:border-color var(--ease),box-shadow var(--ease),background var(--ease)}
.pte-out:focus{outline:0;border-color:var(--ink);box-shadow:0 0 0 2px var(--accent-wash)}
.pte-work.is-reading .pte-out,.pte-work.is-ocr .pte-out{background:color-mix(in srgb,var(--wash) 70%,var(--paper))}
.pte-acts{display:flex;flex-wrap:wrap;gap:6px}
.pte-measure{position:absolute;left:0;top:0;width:100%;height:0;overflow:hidden;visibility:hidden;pointer-events:none}
.pte-measure > div{position:relative;box-sizing:border-box;white-space:pre-wrap;overflow-wrap:break-word;word-break:normal;border:0}
.pte-pg{display:flex;flex-direction:column;gap:8px;min-width:0;margin:0;padding:12px 14px 14px;background:color-mix(in srgb,var(--wash) 60%,var(--card))}
.pte-pghead{display:flex;align-items:center;gap:6px}
.pte-nav{display:grid;place-items:center;width:32px;height:32px;padding:0;border:1px solid var(--line);border-radius:var(--radius);background:var(--btn);color:var(--ink);cursor:pointer;transition:background var(--ease)}
.pte-nav:hover:not(:disabled){background:var(--btn-hover)}
.pte-nav:disabled{opacity:.4;cursor:default}
.pte-nav svg{width:16px;height:16px}
.pte-pgpos{margin:0;min-width:4.6em;font-family:var(--sans);font-size:13px;font-weight:750;text-align:center;font-variant-numeric:tabular-nums}
.pte-pgocr[aria-disabled="true"]{opacity:.45;cursor:not-allowed}
.pte-ocrlead:focus{outline:0}
.pte-ocrlead:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.pte-zoom{margin-left:auto}
.pte-zoom[aria-pressed="true"]{background:var(--fill);border-color:var(--fill);color:var(--on-fill)}
.pte-zoom[aria-pressed="true"] .pte-zp{d:path("M8 10.5h5")}
.pte-pgfoot{display:flex;flex-wrap:wrap;gap:6px}
.pte-pgfoot:empty,.pte-pgfoot:not(:has(.pte-pgocr:not([hidden]))){display:none}
.pte-stage.is-zoom{overflow:auto;justify-content:flex-start;overscroll-behavior:contain;border:1px solid var(--soft);background:color-mix(in srgb,var(--wash) 80%,var(--card))}
.pte-stage{display:flex;justify-content:center;align-items:flex-start;min-height:180px}
.pte-sheet{position:relative;flex:none;overflow:hidden;background:#fff;box-shadow:0 1px 2px rgb(0 0 0 / .14),0 8px 20px -10px rgb(0 0 0 / .35);transition:opacity .2s}
.pte-sheet canvas{position:absolute;left:0;top:0;width:100%;height:100%}
.pte-sheet.is-out{opacity:.5}
.pte-ov{position:absolute;left:0;top:0;width:100%;height:100%;overflow:visible}
.pte-ov .ln{fill:rgb(196 74 0 / .13)}
.pte-ov .ln.oc{fill:rgb(36 99 160 / .14)}
.pte-ov .dr{fill:url(#pteHatch);stroke:rgb(176 32 32 / .7);stroke-width:1;vector-effect:non-scaling-stroke}
.pte-ov pattern rect{fill:rgb(176 32 32 / .45)}
.pte-ov .br{fill:none;stroke:rgb(196 74 0 / .45);stroke-width:1.5;vector-effect:non-scaling-stroke}
.pte-ov .br.jn{stroke:#c44a00;stroke-width:2.2}
.pte-beam{display:none;position:absolute;left:0;right:0;top:-22%;height:22%;pointer-events:none;background:linear-gradient(to bottom,transparent,rgb(196 74 0 / .22) 70%,rgb(196 74 0 / .55) 96%,transparent)}
.pte-sheet.is-ocr .pte-beam{display:block;animation:pte-beam 1.8s linear infinite}
@keyframes pte-beam{to{top:100%}}
.pte-tag{position:absolute;left:6px;top:6px;padding:2px 7px;border-radius:var(--radius);background:rgb(26 18 8 / .8);color:#faf6ee;font-family:var(--sans);font-size:11px;font-weight:650}
.pte-tag[data-s="o"],.pte-tag[data-s="r"],.pte-tag[data-s="q"]{background:rgb(196 74 0 / .9)}
.pte-cap{display:flex;flex-wrap:wrap;align-items:center;gap:3px 10px;margin:0;font-family:var(--sans);font-size:11.5px;line-height:1.5;color:var(--muted)}
.pte-k{display:inline-block;width:12px;height:8px;margin-right:4px;vertical-align:-1px}
.pte-k--ln{background:rgb(196 74 0 / .22)}
.pte-k--br{width:6px;height:12px;border:2px solid var(--accent);border-right:0}
.pte-k--dr{background:repeating-linear-gradient(135deg,rgb(176 32 32 / .7) 0 1.5px,transparent 1.5px 4px);box-shadow:inset 0 0 0 1px rgb(176 32 32 / .6)}
.pte-status{margin:0;padding:10px 16px;border-top:1px solid var(--soft);line-height:1.55}
.pte-status:has(> #pteSay:empty){padding:0;border-top:0}
.pte-undo{padding:0 2px;border:0;background:none;color:var(--accent);font:inherit;font-weight:700;text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.pte-noscript{margin:0;padding:12px 16px;font-family:var(--sans);font-size:13px}

/* ---------- 좁은 작업면 ---------- */
@container pte (max-width:759px){
  .pte-panes{grid-template-columns:minmax(0,1fr) 262px}
  .pte-pg{padding:12px 12px 14px}
}
@container pte (max-width:599px){
  .pte-panes{grid-template-columns:minmax(0,1fr)}
  .pte-ms{padding:12px;border-right:0;border-bottom:1px solid var(--soft)}
  .pte-out{flex:none;height:clamp(300px,56vh,560px);min-height:0}
  .pte-pg{padding:12px}
}
@container pte (max-width:679px){
  .pte-drop{grid-template-columns:minmax(0,1fr);padding:12px}
  .pte-dropbox{min-height:230px}
  .pte-maphead{grid-template-columns:minmax(0,1fr)}
  .pte-file,.pte-mapbox,.pte-ocr,.pte-pw,.pte-warn,.pte-status{padding-left:12px;padding-right:12px}
}
@container pte (max-width:440px){
  .pte-sample{flex-direction:column;align-items:stretch}
  .pte-pw{grid-template-columns:minmax(0,1fr)}
  .pte-pwgo > .v2-label{display:none}
  .pte-ocr{grid-template-columns:minmax(0,1fr)}
  .pte-ocrico{display:none}
}
@media (prefers-reduced-motion:reduce){
  .pte-map i,.pte-cursor,.pte-ocrbar{transition:none}
  .pte-map i[data-s="r"]{animation:none}
  .pte-sheet.is-ocr .pte-beam{animation:none;display:none}
}
