/*
[History]
v15 / 2026-05-17 / Claude / .ai-reflect-btn.muted(내용 검토 카드의 [검토 필요(직접 수정)] 버튼) 디자인을 파란 [원고 반영] 버튼과 동일한 "테두리 없는 단색 알약" 형태로 통일 + 클릭 비활성 처리 — ai-review.js v263과 짝을 이뤄 동작. (1) background를 var(--err-soft)(#fff5f4 옅은 분홍, 채움색 거의 없음)에서 #C07591(붉은 계열 단색, 파란 #7591C0의 RGB 좌우반전 자매색)로 변경. 같은 채도·명도라 시각적 무게감 일치, 베이지 캔버스(#F4F1EB)와 조화. (2) color를 var(--err)(#c0392b 진한 빨강 글자)에서 #fff(흰색)로 변경. 파란 버튼의 흰 글자와 톤 통일. (3) border 1px solid var(--err-border)(#fca5a5 분홍 테두리) 완전 제거. 파란 버튼은 border:none이므로 같은 단색 알약 형태로 통일. (4) cursor:not-allowed 추가. 마우스 호버 시 금지 표시 커서 노출로 "클릭 불가" 시각 신호 전달. (5) opacity:.85 추가. 살짝만 흐림 처리로 비활성 신호 보강하되 붉은 색감은 살림. (6) .ai-reflect-btn.muted:hover 신설: background 변화 없음(#C07591 유지). 활성 버튼은 호버 시 색이 진해지지만 비활성은 무반응이어야 "누를 수 있음/없음" 구분 명확. (7) JS(ai-review.js v263)가 동시에 disabled 속성을 부여하므로 실제 클릭도 차단됨. 사용자 결정: 내용 검토 카드(사실/논리/맥락/문장 4종)는 AI 오판 가능성이 있어 자동 반영 차단, 사용자가 원고 편집창에서 직접 수정하도록 유도. .applied(초록), 기본(파랑), :disabled 일반 상태는 무변경. HTML 무변경.
v14 / 2026-05-17 / Claude / .ai-reflect-btn(원고 반영 버튼) 색상을 좌측 푸터 [검토 목록 내 PC 저장(.docx)] 버튼과 동일한 톤으로 변경 — (1) 기본 background를 var(--accent) #1A56DB(진한 사파이어 블루)에서 #7591C0(차분한 옅은 파랑, v28 spell.html에서 PC 저장 버튼 인라인 색상과 동일)로 교체. 사이트 전체 "파랑 액션" 톤 단일화. (2) :hover background를 var(--accent-h) #1440b0에서 #5B7CB5(같은 팔레트의 한 단계 진한 톤)로 변경. 호버 시 시각적 위계 유지하면서 기본↔호버가 같은 색 계열에 머무름. (3) .applied(초록), .muted(빨강), :disabled 상태는 무변경 — 색의 의미(반영됨=ok, 휴지통=err)는 그대로 보존. 사용자 결정에 따라 진행. HTML/JS 무변경.
v13 / 2026-05-16 / Claude / 반영 취소 버튼 형태를 반영됨 버튼과 통일 — .ai-reflect-undo 클래스 정의 단순화하여 .ai-reflect-btn(특히 .applied 상태)과 동일한 시각 형태로 맞춤. (1) padding 4px 10px 에서 3px 11px(.ai-reflect-btn과 동일). (2) border 1px solid var(--border) 에서 1px solid var(--surface2)(배경과 같은 색으로 보더 시각 효과 제거, .ai-reflect-btn.applied의 border:1px solid #86efac과 동일 패턴). (3) margin-left 6px 제거(부모 .ai-card-foot의 gap:8px가 이미 간격 처리). (4) display:inline-flex, align-items, gap, line-height:1 모두 제거(기본 inline-block 버튼으로 환원). (5) transition .15s 에서 .13s(.ai-reflect-btn과 동일). (6) 호버 색상 미세 조정 — background var(--surface)(흰색) 에서 var(--border)(한 단계 진한 베이지), border-color var(--border-strong) 에서 var(--border)로 변경하여 더 부드러운 강조. 결과: 반영됨과 반영 취소 두 버튼이 폰트·크기·패딩·보더 효과·전환 시간 모두 동일한 한 쌍의 알약으로 표시. 색상(옅은 초록 vs 옅은 베이지)만 다름. HTML/JS 무변경.
v12 / 2026-05-16 / Claude / 푸터 정렬 그리드 통일 + 우측 푸터 버튼 폭 1:1 통일 + 반영 취소 버튼 스타일 신설 — (1) #ai-review-sec 신설: padding 13px 24px 적용. 사이드바 파일 카드 외곽 위치(.sec 14px + .fl-wrap 10px = 24px)와 정확히 일치시켜 사이드바 내 모든 카드·버튼의 좌우 가장자리 한 줄 정렬. v11에서 13px 10px로 잘못 계산했던 부분 수정. (2) .rp-foot padding 8px 13px 에서 8px 20px. 우측 패널 본문 카드(.paper)의 좌우 가장자리(.rp-body padding 20px)와 정확히 동일한 위치에 푸터 버튼 정렬. justify-content space-between와 결합되어 좌측 버튼은 본문 좌측 끝, 우측 버튼은 본문 우측 끝에 자동 정렬. (3) .mp-foot padding 8px 13px 에서 8px 16px. 중앙 패널 본문 영역(.mp-body padding 16px)과 정렬. (4) .rp-foot gap 6px 에서 8px + .rp-foot > * flex:1 신설 + .rp-foot .foot-btn width:100% 신설. 직계 자식(.foot-drop-wrap, 인쇄 버튼)이 정확히 50:50 폭으로 분할되어 "교정 결과 인쇄" 버튼이 "PC 저장 ▾" 버튼과 동일 폭으로 확장. (5) .ai-reflect-undo 클래스 신설: 반영된 카드에 "↶ 반영 취소" 버튼을 표시하기 위한 톤다운 스타일. 베이지 채움(var(--surface2)) + 회색 텍스트(var(--tx2)) + 호버 시 흰 배경·진한 보더. ai-review v261과 짝을 이뤄 동작. 다른 모든 셀렉터 무변경.
v11 / 2026-05-16 / Claude / AI 교정 검토 패널 — 검토 버튼 색상 재정비 + 폭 정렬 — (1) .ai-run-btn 활성 background를 var(--accent) #1A56DB → #3B82F6(Tailwind blue-500)로 변경. 채도 89%→78% 한 단계 부드러운 톤. 베이지 캔버스(#F4F1EB)와의 채도 차이 완화로 시각적 조화. (2) .ai-run-btn:hover background를 var(--accent-h) #1440b0 → #2563EB(blue-600)로 변경. 활성보다 한 단계 진한 같은 파랑 계열 유지. (3) .ai-run-btn:disabled를 opacity:.5에서 명시적 색상으로 변경: background #93C5FD(blue-300) + opacity 1. 같은 파랑 팔레트 안에서 한 단계 옅은 톤. 검토 완료/대기 상태가 "같은 버튼의 흐려진 버전"으로 인지되어 청록색 외래색(#0891b2 etc.)의 이질감 제거. 사용자님 요구사항 "검토 끝나면 더 연해야 함" 충족. (4) #ai-review-sec 신설: 좌우 padding을 13px 14px(.sec 기본)→13px 10px로 변경. 사이드바 내 파일 카드(.fl-wrap padding-left/right:10px)와 좌우 폭 정렬. 좌측 사이드바 내부 모든 카드·버튼의 시각적 가장자리 통일. 다른 .sec 셀렉터(드롭존 영역) 무변경. HTML 동반 수정(spell_v27.html에서 비용 박스 DOM 제거 + 표기 검토/결합 검토 인라인 청록색 제거). 다른 모든 셀렉터 일체 무변경.
v10 / 2026-05-16 / Claude / 좌측 드롭존 아이콘 박스 배경 채움 — .dz-ico background var(--surface) 흰색 → var(--surface2) 연한 베이지(#ECE8DF)로 변경, color var(--tx) 명시 추가(SVG currentColor가 채움 배경 위에서 또렷하게 보이도록 진한 톤 적용). border 1px solid var(--border) 및 border-radius 7px 유지, 호버 효과(.dz:hover .dz-ico → accent-soft 배경 + accent 보더)도 기존 유지. "테두리 + 연한 채움" 스타일(이미지 3 패턴)로 업로드 액션의 시각적 포인트 강화 — 사용자가 드롭존 진입 시 클릭/드래그 영역을 더 명확하게 인지하도록 함. 베이지 톤은 사이드바(.lp surface2)와 같은 변수를 재활용해 사이트 톤 일관성 유지. 다른 모든 셀렉터 일체 무변경.
v9 / 2026-05-15 / Claude / 좌측 사이드바 원고 파일 카드 재정비 — (1) :root에 --pdf-soft #F0EAF2, --pdf-deep #7E4FA8, --pdf-border #D9C7E0 3개 변수 신설(PDF 뱃지 전용 보라 톤, 다른 포맷은 회색 통일). (2) .fl-wrap padding 4px 6px 8px → 6px 10px 10px(카드가 커진 만큼 여백 확보). (3) .fl-item 카드 키우기: padding 5px 7px → 12px 14px, gap 6 → 10px, border-radius var(--r2) 6px → 10px, background transparent → var(--surface) 흰색, border 1px solid transparent → 1px solid var(--border), box-shadow 0 1px 3px rgba(0,0,0,.04) 추가, margin-bottom 2 → 4px. 드롭존(.dz) 카드 패턴과 동일 톤. (4) .fl-item:hover 배경 채움 제거(흰색 유지), border만 --border-strong로 강조. (5) .fl-item.act 활성 카드: 파란색(accent-soft + #bfdbfe) 제거, 베이지 톤 유지하되 box-shadow로 떠 보이게(0 2px 6px rgba(0,0,0,.06)). (6) .fl-ico 뱃지 베이스 통일: width 24px → auto(min-width 38px), height 28 → 22px, padding 0 → 3px 7px, font-size 7.5 → 9.5px, font-weight 700 → 600, letter-spacing 0.02em 추가, text-transform uppercase 추가, 배경 var(--surface) 흰색 + border var(--border-strong) + color var(--tx2). 드롭존 .fmt-b 칩과 시각적으로 동일. (7) .ico-pdf만 보라 오버라이드(--pdf-soft 배경 + --pdf-border 보더 + --pdf-deep 글자). (8) .ico-docx, .ico-hwpx, .ico-txt 기존 색상별 규칙 삭제 → 베이스 회색 톤으로 통일(파랑/초록/회색 4종 다른 색 → 회색 3종 + PDF 보라 1종 구조). (9) .fl-name 폰트 강화: font-size 11 → 13px, font-weight 500 → 400(제안안 톤), letter-spacing -0.01em 추가, font-family 'Noto Sans KR' 명시(드롭존 .dz-title과 동일 폰트 시스템), margin-bottom 1 → 0. (10) .fl-st.ready 색 var(--ok) #15803d 진한 초록 → var(--ok-border) #86efac 파스텔(헤더 v22 editing_cri 점과 통일, 사이트 전체 "준비됨" 신호 단일화). (11) .fl-del X 버튼 상시 노출: opacity 0 → 1(호버에만 보이던 X를 항상 표시), width/height 16 → 18px, font-size 12 → 14px, border-radius 3 → 4px. .fl-item:hover .fl-del{opacity:1} 규칙 제거. 모바일/터치 디바이스 대응 + 발견 가능성 강화. .fl-del:hover 호버 빨강(#fee2e2 배경 + var(--err) 글자) 기존 유지. 다른 모든 셀렉터 일체 무변경.
v8 / 2026-05-15 / Claude / .hdr 그라디에이션 중앙 색상 조정 — linear-gradient의 50% 지점 #FBF9F4(거의 흰색, 명도 97.3%)→#E8E4D8(베이지, 명도 88.4%)로 변경. 양 끝 #CBC6BA와의 명도 차이가 20.5%→11.6%로 자연스러워짐. 중앙이 너무 흰색이어서 그라디에이션이 부드럽지 못하고 본문 흰색 카드와 충돌하던 문제 해결. 새 중앙 색은 사이트 사이드바(--surface2 #ECE8DF, 명도 90.3%)와 유사 톤이라 헤더 전체가 통일된 베이지 무드로 정착. 양 끝 색 #CBC6BA 및 그라디에이션 방향(좌-중-우 대칭) 무변경. 다른 모든 셀렉터 무변경.
v7 / 2026-05-15 / Claude / 헤더 그라디에이션 좌우 대칭화 + 드롭존(.dz) 흰색 카드화 + 드롭존 폰트 강화 — (1) .hdr background를 단방향(#DDD8CB→#FBF9F4)에서 좌-중-우 대칭(linear-gradient(to right, #CBC6BA 0%, #FBF9F4 50%, #CBC6BA 100%))으로 변경. 양 끝 8% 진하게(#DDD8CB→#CBC6BA, --border-strong과 유사한 톤), 중앙은 가장 밝게 유지. 사이드바·우측 헤더와 자연스럽게 이어지면서 화면이 한쪽으로 기울지 않는 균형감 회복. (2) .dz 드롭존 배경 var(--bg)→var(--surface)(흰색), box-shadow 0 1px 3px rgba(0,0,0,.04) 추가. 사이드바 베이지에 묻혀 보이던 드롭존이 흰 카드로 떠올라 "여기에 파일을 놓으세요" 신호 강화. (3) .dz-ico 업로드 아이콘 박스 background var(--surface2)→var(--surface)(흰색). 드롭존과 톤 통일. (4) .dz-title 폰트 강화: font-size 11.5→13px, letter-spacing -0.01em 추가. (5) .dz-sub 폰트 강화: font-size 10→11.5px, color var(--tx3)→var(--tx2)(#9C9890→#5A574F 진하게). (6) .fmt-b 포맷 칩(PDF/DOCX/HWPX/TXT) 강화: font-size 9→9.5px, background var(--surface2)→var(--surface), border-color var(--border)→var(--border-strong), color var(--tx3)→var(--tx2), letter-spacing 0.02em 추가. Pretendard 폰트 도입 대신 현재 폰트 패밀리(Geist+Noto Sans KR) 유지하고 크기·색상·자간만 조정해 추천안의 또렷함 효과 달성. 호버 효과(.dz:hover, .dz-ico:hover) 및 다른 모든 셀렉터 무변경.
v6 / 2026-05-15 / Claude / 상단 헤더 우측 영역 정비 — (A) .hdr-actions gap 6px→8px(버튼 간격 확보로 시각적 휴식 공간 확보). (B) .hdr-btn-work 셀렉터 톤다운: background var(--ok-soft)(초록 채움)→transparent, border-color var(--ok-border)(초록)→var(--border-strong)(#CCC9BF 진한 베이지), color var(--ok)(초록)→var(--tx2)(#5A574F 세피아). 호버 시: background var(--surface2), border-color var(--tx3), color var(--tx). 초록색의 "성공/완료" 의미를 .fl-st.ready/.ai-applied/.qc-none 등 진짜 ok 상태에만 남기고, editing_cri 같은 단순 상태 라벨에서는 초록을 분리. 헤더 그라디에이션(#DDD8CB→#FBF9F4)의 세피아 톤과 일관성 확보. 다른 셀렉터 무변경.
v5 / 2026-05-15 / Claude / 최상단 헤더(.hdr) 흰색 단색 → 좌우 그라디에이션 전환 — background를 var(--surface)(#FFFFFF 흰색)에서 linear-gradient(to right, #DDD8CB 0%, #FBF9F4 100%)로 변경. 좌측 시작색 #DDD8CB는 사이드바 톤(--surface2 #ECE8DF)보다 약 6% 어두워 헤더 좌측이 사이드바와 자연스럽게 이어지면서도 살짝 가라앉는 효과. 우측 종료색 #FBF9F4는 거의 흰색이되 베이지 끼를 유지해 본문 캔버스(--bg #F4F1EB)와 호응. 명도 차 약 14%로 그라디에이션이 명확히 인지됨. 좌→우 사용 흐름(파일→작성→검토)을 색의 흐름으로 시각화. 흰색의 강조 역할은 본문 카드(.paper, 안내 카드, 토글 활성 버튼)로 이양. .hdr의 다른 속성(height, border-bottom, padding 등) 및 다른 모든 셀렉터 무변경.
v4 / 2026-05-15 / Claude / 중앙/우측 헤더 흰색 줄 정비 + 텍스트/PDF 토글 디자인 변경 — (1) .mph background를 var(--surface)(#FFF 흰색)에서 var(--surface2)(#ECE8DF 베이지)로 변경(중앙 헤더 "검토할 원고" 줄). (2) .rph도 동일하게 var(--surface)에서 var(--surface2)로 변경(우측 헤더 "텍스트/PDF 토글" 줄, 좌우 대칭 유지). (3) .rp-toggle button 비활성 상태: background var(--surface2)→transparent, border var(--border)→transparent(베이지 컨테이너 위에 묻힘). (4) .rp-toggle button.on 활성 상태: background var(--accent)(파란)→var(--surface)(흰), color #fff→var(--tx)(진한 텍스트), border-color var(--accent)→var(--border), box-shadow 0 1px 3px rgba(0,0,0,.08) 추가(iOS Segmented Control 패턴, 흰 칩이 떠 보이는 효과). 종이/원고지 메타포 강화 + 좌측 사이드바(.lp)와 헤더 간 명도 위계 통일. 다른 모든 셀렉터 및 .mp-foot/.rp-foot/.hdr 등 흰색 패널 무변경.
v3 / 2026-05-15 / Claude / 좌측 사이드바 흰색 띠 문제 해결 — .lp 셀렉터의 background를 var(--surface)(#FFFFFF 흰색)에서 var(--surface2)(#ECE8DF 베이지 크림)로 변경. 사이드바용으로 설계된 --surface2 변수가 정작 사이드바인 .lp에는 미적용되어 카드용 흰색이 사이드바 전체에 깔리던 문제 수정. 명도 위계 카드(100) > 캔버스(95) > 사이드바(91) > 보더(89) 정상화. .hdr/.mph/.rph/.mp-foot/.rp-foot/.qc-section 등 다른 흰색 패널은 다음 단계에서 검토. 드롭존(.dz background:var(--bg)) 및 다른 모든 셀렉터 무변경.
v2 / 2026-05-15 / Claude / 배경 톤 통일 작업 — :root CSS 변수 3개 변경(--bg #f9f8f5→#F4F1EB, --surface2 #f3f2ee→#ECE8DF, --border #e5e2db→#E5E1D6). 종이/원고지 메타포 강화 + 좌측 사이드바와 우측 캔버스의 명도 위계 명확화 + 향후 indexing 앱과의 부분 통일 기반 마련. --surface(#fff 카드), accent/ok/err/warn/tx 계열 일체 무변경. 다른 CSS 규칙·셀렉터·레이아웃 일체 무변경.
*/
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#F4F1EB;--surface:#fff;--surface2:#ECE8DF;--border:#E5E1D6;--border-strong:#ccc9bf;--accent:#1a56db;--accent-soft:#eef3ff;--accent-h:#1440b0;--ok:#15803d;--ok-soft:#f0fdf4;--ok-border:#86efac;--err:#c0392b;--err-soft:#fff5f4;--err-border:#fca5a5;--warn:#b45309;--r:10px;--r2:6px;--r3:4px;--tx:#1a1916;--tx2:#5a574f;--tx3:#9c9890;--pdf-soft:#F0EAF2;--pdf-deep:#7E4FA8;--pdf-border:#D9C7E0}html,body{height:100%;overflow:hidden}body{font-family:'Geist',sans-serif;background:var(--bg);color:var(--tx);display:flex;flex-direction:column;-webkit-font-smoothing:antialiased}.hdr{height:50px;background:linear-gradient(to right, #CBC6BA 0%, #E8E4D8 50%, #CBC6BA 100%);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 18px;flex-shrink:0}.brand{display:flex;align-items:center;gap:9px}.brand-ico{width:27px;height:27px;background:#1a1916;border-radius:7px;display:flex;align-items:center;justify-content:center}.brand-name{font-family:'Noto Sans KR',sans-serif;font-size:14px;font-weight:900;letter-spacing:-.04em}.brand-name em{font-style:normal;color:var(--accent)}.brand-sub{font-size:10.5px;color:var(--tx3);margin-left:2px}.hpills{display:flex;gap:5px}.hpill{display:flex;align-items:center;gap:4px;padding:2px 8px;background:var(--surface2);border:1px solid var(--border);border-radius:20px;font-size:10.5px;color:var(--tx2);font-family:'Geist Mono',monospace}.main{flex:1;display:grid;grid-template-columns:255px 1fr 1fr;min-height:0;overflow:hidden}.lp{background:var(--surface2);border-right:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden}.lp-scroll{flex:1;overflow-y:auto;min-height:0}.lp-scroll::-webkit-scrollbar{width:3px}.lp-scroll::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}.sec{padding:13px 14px;border-bottom:1px solid var(--border)}#ai-review-sec{padding:13px 24px}.slabel{font-size:12px;font-weight:500;color:var(--tx);margin-bottom:9px}.dz{border:1.5px dashed var(--border-strong);border-radius:var(--r);padding:15px 10px;text-align:center;cursor:pointer;transition:all .2s;background:var(--surface);box-shadow:0 1px 3px rgba(0,0,0,.04);position:relative}.dz:hover,.dz.over{border-color:var(--accent);background:var(--accent-soft)}#fi{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%;height:100%}.dz-ico{width:30px;height:30px;background:var(--surface2);border:1px solid var(--border);border-radius:7px;display:flex;align-items:center;justify-content:center;margin:0 auto 7px;color:var(--tx);transition:all .2s}.dz:hover .dz-ico,.dz.over .dz-ico{background:var(--accent-soft);border-color:var(--accent)}.dz-title{font-size:13px;font-weight:600;color:var(--tx);letter-spacing:-0.01em;margin-bottom:2px}.dz-sub{font-size:11.5px;color:var(--tx2)}.fmt-row{display:flex;gap:3px;justify-content:center;margin-top:7px}.fmt-b{font-size:9.5px;font-family:'Geist Mono',monospace;background:var(--surface);border:1px solid var(--border-strong);border-radius:3px;padding:1px 4px;color:var(--tx2);letter-spacing:0.02em}.fl-wrap{padding:6px 10px 10px}.fl-item{display:flex;align-items:center;gap:10px;padding:12px 14px;border-radius:10px;margin-bottom:4px;cursor:pointer;border:1px solid var(--border);background:var(--surface);box-shadow:0 1px 3px rgba(0,0,0,.04);transition:all .13s}.fl-item:hover{border-color:var(--border-strong)}.fl-item.act{border-color:var(--border-strong);box-shadow:0 2px 6px rgba(0,0,0,.06)}.fl-ico{min-width:38px;height:22px;padding:3px 7px;border-radius:3px;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:9.5px;font-weight:600;font-family:'Geist Mono',monospace;letter-spacing:0.02em;text-transform:uppercase;background:var(--surface);border:1px solid var(--border-strong);color:var(--tx2)}.ico-pdf{background:var(--pdf-soft);border-color:var(--pdf-border);color:var(--pdf-deep)}.fl-info{flex:1;min-width:0}.fl-name{font-size:13px;font-weight:400;letter-spacing:-0.01em;font-family:'Noto Sans KR',sans-serif;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--tx);margin-bottom:0}.fl-meta{font-family:'Geist Mono',monospace;font-size:9px;color:var(--tx3)}.fl-st{width:6px;height:6px;border-radius:50%;flex-shrink:0}.fl-st.loading{background:var(--warn);animation:blink 1.2s infinite}.fl-st.ready{background:var(--ok-border)}.fl-st.error{background:var(--err)}@keyframes blink{0%,100%{opacity:1}50%{opacity:.25}}@keyframes ai-hl-flash{0%{background:#ff0;box-shadow:0 0 0 3px #ff0}100%{background:#fde047;box-shadow:0 0 0 2px #fde047}}@keyframes dot-blink{0%,100%{opacity:1}50%{opacity:0.25}}.edit-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:#2563eb;margin-right:5px;vertical-align:middle;animation:dot-blink 1.2s ease-in-out infinite}.fl-del{background:none;border:none;width:18px;height:18px;display:flex;align-items:center;justify-content:center;border-radius:4px;color:var(--tx3);cursor:pointer;font-size:14px;line-height:1;transition:all .13s;flex-shrink:0}.fl-del:hover{background:#fee2e2;color:var(--err)}.mp{display:flex;flex-direction:column;overflow:hidden;height:100%;min-height:0;border-right:1px solid var(--border)}.mph{height:42px;background:var(--surface2);border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 13px;gap:7px;flex-shrink:0}.mph-title{flex:1;font-size:12.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mp-body{flex:1;overflow:auto;padding:14px 16px;background:var(--bg)}.mp-body::-webkit-scrollbar{width:5px}.mp-body::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}#edit-area{width:100%;min-height:300px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:24px 28px;font-family:'Noto Serif KR',serif;font-size:14px;line-height:1.9;color:var(--tx);resize:none;outline:none;box-shadow:0 2px 10px rgba(0,0,0,.05);height:calc(100% - 8px)}#edit-area:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(26,86,219,.08)}.mp-foot{flex-shrink:0;background:var(--surface);border-top:1px solid var(--border);padding:8px 16px;display:flex;align-items:center;justify-content:flex-end;min-height:53px}.qc-section{flex-shrink:0;border-top:2px solid var(--border);background:var(--surface);display:flex;flex-direction:column;max-height:220px}.qc-hdr{display:flex;align-items:center;justify-content:space-between;padding:7px 13px 5px;border-bottom:1px solid var(--border)}.qc-title{font-size:11px;font-weight:700;color:var(--tx2);letter-spacing:.03em}.qc-input-row{display:flex;gap:6px;padding:7px 10px 5px;align-items:flex-start}.qc-textarea{flex:1;resize:none;border:1px solid var(--border);border-radius:var(--r3);padding:6px 9px;font-size:12px;font-family:'Noto Serif KR',serif;color:var(--tx);outline:none;line-height:1.7;height:52px;transition:border-color .15s}.qc-textarea:focus{border-color:var(--accent)}.qc-run{padding:6px 12px;background:var(--accent);color:#fff;border:none;border-radius:var(--r3);font-size:11.5px;font-weight:700;cursor:pointer;font-family:'Geist',sans-serif;white-space:nowrap;flex-shrink:0;transition:background .15s}.qc-run:hover{background:var(--accent-h)}.qc-result{overflow-y:auto;padding:0 10px 7px;flex:1}.qc-result::-webkit-scrollbar{width:3px}.qc-result::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}.qc-none{font-size:11px;color:var(--ok);padding:5px 3px;display:flex;align-items:center;gap:5px}.qc-item{display:flex;align-items:flex-start;gap:7px;padding:4px 3px;border-bottom:1px solid var(--border);font-size:11.5px;line-height:1.6}.qc-item:last-child{border-bottom:none}.qc-badge{font-size:9.5px;font-weight:700;padding:1px 6px;border-radius:3px;white-space:nowrap;flex-shrink:0;margin-top:2px}.qc-badge.aux{background:#fef08a;color:#713f12}.qc-badge.spell{background:#fee2e2;color:#b91c1c}.qc-badge.foreign{background:#dbeafe;color:#1e40af}.qc-badge.compound{background:#f3e8ff;color:#6b21a8}.qc-text{color:var(--tx);flex:1}.qc-arrow{color:var(--accent);font-weight:700;margin:0 3px}.qc-slash{color:var(--tx3);margin:0 3px;font-weight:400}.rp{display:flex;flex-direction:column;overflow:hidden;height:100%;min-height:0}.rph{height:42px;background:var(--surface2);border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 13px;gap:7px;flex-shrink:0}.rph-title{flex:1;font-size:12.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.rp-body{flex:1;overflow:auto;padding:18px 20px;background:var(--bg)}.rp-body::-webkit-scrollbar{width:5px}.rp-body::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}.paper{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);box-shadow:0 2px 10px rgba(0,0,0,.05);padding:28px 32px;min-height:300px;font-family:'Noto Serif KR',serif;font-size:14px;line-height:1.9;color:var(--tx);word-break:keep-all;transition:box-shadow .15s}.paper[contenteditable="true"]{box-shadow:0 0 0 2px var(--accent),0 2px 10px rgba(0,0,0,.05);outline:none;cursor:text}.paper p{margin-bottom:.9em}.rp-foot{flex-shrink:0;background:var(--surface);border-top:1px solid var(--border);padding:8px 20px;display:flex;align-items:center;justify-content:space-between;gap:8px}.rp-foot>*{flex:1}.rp-foot .foot-btn{width:100%}.foot-l{font-size:10.5px;color:var(--tx3)}.foot-r{display:flex;gap:5px}.foot-btn{padding:5px 11px;border-radius:var(--r2);font-size:11.5px;font-weight:600;cursor:pointer;border:1.5px solid;transition:all .15s;font-family:'Geist',sans-serif}.foot-exp{background:var(--accent);border-color:var(--accent);color:#fff}.foot-exp:hover{background:var(--accent-h)}.foot-drop-wrap{position:relative;flex:1}.foot-drop-menu{display:none;position:absolute;bottom:calc(100% + 6px);left:0;background:var(--surface);border:1px solid var(--border);border-radius:var(--r2);box-shadow:0 4px 12px rgba(0,0,0,.12);min-width:130px;z-index:999;overflow:hidden}.foot-drop-menu.open{display:block}.foot-drop-item{display:block;width:100%;padding:8px 14px;font-size:11.5px;font-family:"Geist",sans-serif;font-weight:500;color:var(--tx2);background:none;border:none;text-align:left;cursor:pointer;white-space:nowrap}.foot-drop-item:hover{background:var(--surface2);color:var(--accent)}.foot-cpy{background:var(--surface);border-color:var(--border);color:var(--tx2)}.foot-cpy:hover{border-color:var(--accent);color:var(--accent)}.vempty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:40px;color:var(--tx3)}.vempty-ico{width:48px;height:48px;background:var(--surface2);border:1px solid var(--border);border-radius:12px;display:flex;align-items:center;justify-content:center;margin:0 auto 13px}.vempty-t{font-size:13px;color:var(--tx2);font-family:'Noto Serif KR',serif;margin-bottom:4px}.vempty-d{font-size:11px;line-height:1.7}.aux-wrap{position:relative}.aux-btn{display:flex;align-items:center;gap:5px;padding:7px 10px;width:100%;background:var(--surface2);border:1px solid var(--border);border-radius:var(--r2);font-size:11.5px;color:var(--tx2);cursor:pointer;font-family:'Geist',sans-serif;font-weight:500;transition:all .15s;white-space:nowrap}.aux-btn:hover,.aux-btn.open{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.aux-val{font-family:'Geist Mono',monospace;font-size:9.5px;background:var(--accent);color:#fff;border-radius:10px;padding:1px 6px;margin-left:auto}.aux-chevron{transition:transform .2s;margin-left:4px;flex-shrink:0}.aux-btn.open .aux-chevron{transform:rotate(180deg)}.aux-drop{position:absolute;top:calc(100% + 7px);left:0;background:var(--surface);border:1px solid var(--border);border-radius:var(--r);box-shadow:0 6px 20px rgba(0,0,0,.1);z-index:999;width:190px;padding:5px 0;display:none}.aux-drop.open{display:block}.aux-drop-title{font-size:9.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--tx3);padding:5px 13px 4px}.aux-divider{height:1px;background:var(--border);margin:3px 0}.aux-opt{display:flex;align-items:center;gap:9px;padding:7px 13px;cursor:pointer;font-size:12px;color:var(--tx);transition:background .1s;user-select:none}.aux-opt:hover{background:var(--surface2)}.aux-opt input{accent-color:var(--accent);cursor:pointer;width:13px;height:13px;flex-shrink:0}.aux-ex{font-size:10px;color:var(--tx3);margin-left:auto}.srch-toolbar{flex-shrink:0;background:var(--surface2);border-bottom:1px solid var(--border);padding:7px 12px;display:none;flex-direction:column;gap:5px}.srch-toolbar.on{display:flex}.srch-tb-row{display:flex;align-items:center;gap:8px;font-size:11.5px;color:var(--tx2)}.srch-tb-label{font-size:10.5px;font-weight:600;color:var(--tx3);min-width:32px}.srch-tb-chk{display:flex;align-items:center;gap:4px;cursor:pointer;user-select:none;font-size:11.5px}.srch-tb-chk input{accent-color:var(--accent);width:13px;height:13px;cursor:pointer}.srch-apply-btn{padding:4px 12px;border-radius:var(--r3);border:1.5px solid var(--border);background:var(--surface);font-size:11px;font-weight:600;color:var(--tx2);cursor:pointer;font-family:'Geist',sans-serif;transition:all .15s}.srch-apply-btn:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.srch-apply-btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.srch-apply-btn.primary:hover{background:var(--accent-h)}.hdr-actions{display:flex;align-items:center;gap:8px}.hdr-btn{font-family:'Geist',sans-serif;font-size:12px;font-weight:600;padding:6px 13px;border-radius:var(--r3);border:1.5px solid rgba(255,255,255,0);background:var(--surface2);color:var(--tx2);cursor:pointer;transition:all .15s;white-space:nowrap;display:flex;align-items:center;gap:5px}.hdr-btn:hover{background:var(--accent-soft);border-color:#bfdbfe;color:var(--accent);transform:translateY(-1px);box-shadow:0 2px 8px rgba(26,86,219,.1)}.hdr-save-info{font-family:'Geist Mono',monospace;font-size:10px;color:var(--tx3);white-space:nowrap;padding:0 4px}.hdr-drop{position:relative;display:inline-flex}.hdr-drop-menu{position:absolute;top:calc(100% + 5px);right:0;background:var(--surface);border:1px solid var(--border);border-radius:var(--r2);box-shadow:0 4px 16px rgba(0,0,0,.1);min-width:130px;z-index:200;overflow:hidden;display:none}.hdr-drop-menu.open{display:block}.hdr-drop-item{display:block;width:100%;padding:9px 14px;font-size:12px;font-family:'Geist',sans-serif;font-weight:500;color:var(--tx2);background:none;border:none;text-align:left;cursor:pointer;white-space:nowrap}.hdr-drop-item:hover{background:var(--accent-soft);color:var(--accent)}.hdr-drop-sep{height:1px;background:var(--border);margin:2px 0}.hdr-btn-work{background:transparent;border-color:var(--border-strong);color:var(--tx2)}.hdr-btn-work:hover{background:var(--surface2);border-color:var(--tx3);color:var(--tx)}.info-btn{display:flex;align-items:center;gap:5px;padding:3px 10px;background:var(--surface2);border:1px solid var(--border);border-radius:20px;font-size:10.5px;font-weight:500;color:var(--tx2);cursor:pointer;font-family:'Geist',sans-serif;transition:all .15s}.info-btn:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.35);z-index:1000;display:none;align-items:center;justify-content:center}.modal-overlay.open{display:flex}.modal{background:var(--surface);border-radius:var(--r);box-shadow:0 12px 40px rgba(0,0,0,.18);width:480px;max-width:95vw;display:flex;flex-direction:column;overflow:hidden}.modal-hdr{display:flex;align-items:center;justify-content:space-between;padding:15px 18px 12px;border-bottom:1px solid var(--border)}.modal-title{font-family:'Noto Sans KR',sans-serif;font-size:14px;font-weight:700;color:var(--tx)}.modal-close{background:none;border:none;font-size:20px;color:var(--tx3);cursor:pointer;line-height:1;padding:0 2px;transition:color .13s}.modal-close:hover{color:var(--tx)}.modal-tabs{display:flex;gap:2px;padding:10px 14px 0;border-bottom:1px solid var(--border);background:var(--bg)}.mtab{padding:5px 12px;border-radius:6px 6px 0 0;border:1px solid transparent;border-bottom:none;font-size:11.5px;font-weight:500;color:var(--tx3);cursor:pointer;background:none;font-family:'Geist',sans-serif;transition:all .13s;margin-bottom:-1px}.mtab:hover{color:var(--tx)}.mtab.on{background:var(--surface);border-color:var(--border);color:var(--accent);font-weight:600}.modal-body{padding:18px;min-height:200px}.tab-pane{display:none;flex-direction:column;gap:10px}.tab-pane.on{display:flex}.tab-desc{font-size:11.5px;color:var(--tx3);margin-bottom:4px;line-height:1.6}.radio-row{display:flex;align-items:flex-start;gap:10px;padding:10px 12px;border:1px solid var(--border);border-radius:var(--r2);cursor:pointer;transition:all .13s}.radio-row:hover{border-color:var(--accent);background:var(--accent-soft)}.radio-row input{accent-color:var(--accent);margin-top:2px;cursor:pointer;flex-shrink:0}.radio-info{display:flex;flex-direction:column;gap:3px}.radio-label{font-size:12.5px;font-weight:600;color:var(--tx)}.radio-ex{font-size:10.5px;color:var(--tx3)}.spell-grid{display:flex;flex-direction:column;gap:8px}.spell-item{display:flex;align-items:center;gap:10px;padding:9px 12px;border:1px solid var(--border);border-radius:var(--r2)}.spell-q{font-size:12px;font-weight:600;color:var(--tx);width:100px;flex-shrink:0;font-family:'Noto Serif KR',serif}.spell-btns{display:flex;gap:4px;flex-wrap:wrap}.spell-pick{padding:3px 9px;border-radius:20px;border:1px solid var(--border);font-size:11px;font-weight:500;color:var(--tx3);cursor:pointer;background:var(--bg);font-family:'Geist',sans-serif;transition:all .13s}.spell-pick:hover{border-color:var(--accent);color:var(--accent)}.spell-pick.on{background:var(--accent);border-color:var(--accent);color:#fff}.modal-foot{padding:12px 18px;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:6px}.modal-foot.split{justify-content:space-between}.modal-add{padding:7px 16px;background:var(--surface2);color:var(--accent);border:1px solid var(--accent);border-radius:var(--r2);font-size:12.5px;font-weight:600;cursor:pointer;font-family:'Geist',sans-serif;transition:all .15s}.modal-add:hover{background:var(--accent-soft)}.modal-foot-right{display:flex;gap:6px}.modal-save{padding:7px 22px;background:var(--accent);color:#fff;border:none;border-radius:var(--r2);font-size:12.5px;font-weight:600;cursor:pointer;font-family:'Geist',sans-serif;transition:background .15s}.modal-save:hover{background:var(--accent-h)}.modal-cancel{padding:7px 16px;background:var(--surface2);color:var(--tx2);border:1px solid var(--border);border-radius:var(--r2);font-size:12.5px;font-weight:500;cursor:pointer;font-family:'Geist',sans-serif;transition:all .15s}.modal-cancel:hover{border-color:var(--accent);color:var(--accent)}.modal-json-btn{display:flex;align-items:center;gap:4px;padding:6px 11px;background:var(--surface2);color:var(--tx2);border:1px solid var(--border);border-radius:var(--r2);font-size:11px;font-weight:500;cursor:pointer;font-family:'Geist',sans-serif;transition:all .15s}.modal-json-btn:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.add-table-head{display:grid;grid-template-columns:40px 1fr 1fr 4fr 28px;gap:6px;padding:8px 4px 6px;border-bottom:2px solid var(--border);font-size:10.5px;font-weight:700;color:var(--tx3);letter-spacing:.04em;text-transform:uppercase}.add-col-no{text-align:center}.add-row{display:grid;grid-template-columns:40px 1fr 1fr 4fr 28px;gap:6px;align-items:center;padding:5px 4px;border-bottom:1px solid var(--border)}.add-row-dual,.add-table-head-dual{grid-template-columns:40px 1fr 1fr 28px}.add-row:last-child{border-bottom:none}.add-no{text-align:center;font-size:11px;font-family:'Geist Mono',monospace;color:var(--tx3)}.add-inp{padding:5px 8px;border:1px solid var(--border);border-radius:var(--r3);font-size:12px;font-family:'Geist Mono','Noto Sans KR',monospace;color:var(--tx);outline:none;width:100%;transition:border-color .15s}.add-inp:focus{border-color:var(--accent)}.add-del{background:none;border:none;width:24px;height:24px;border-radius:var(--r3);color:var(--tx3);cursor:pointer;font-size:16px;display:flex;align-items:center;justify-content:center;transition:all .13s}.add-del:hover{background:#fee2e2;color:var(--err)}#add-rows{max-height:205px;overflow-y:auto}#add-rows::-webkit-scrollbar{width:4px}#add-rows::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}.add-row-btn{margin:8px 4px 10px;background:none;border:1px dashed var(--border);border-radius:var(--r2);padding:6px 14px;font-size:11.5px;color:var(--tx3);cursor:pointer;font-family:'Geist',sans-serif;width:calc(100% - 8px);transition:all .15s}.add-row-btn:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.saved-list{margin-top:10px;display:flex;flex-direction:column;gap:3px;max-height:120px;overflow-y:auto}.saved-item{display:grid;grid-template-columns:28px 1fr 1fr 20px;gap:6px;align-items:center;padding:4px 8px;background:var(--surface2);border-radius:var(--r3);font-size:11px}.saved-no{color:var(--tx3);font-family:'Geist Mono',monospace;text-align:center}.saved-a{color:var(--tx)}.saved-b{color:var(--tx2)}.saved-rm{background:none;border:none;color:var(--tx3);cursor:pointer;font-size:14px;line-height:1;padding:0;transition:color .13s}.saved-rm:hover{color:var(--err)}.srch-header{font-size:10px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--tx3);padding:10px 14px 6px;border-bottom:1px solid var(--border);flex-shrink:0}.srch-list{flex:1;overflow-y:auto;padding:8px 10px;display:flex;flex-direction:column;gap:5px}.srch-list::-webkit-scrollbar{width:3px}.srch-list::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}.srch-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r2);padding:8px 11px;transition:border-color .15s;display:flex;align-items:flex-start;gap:8px}.srch-card:hover{border-color:var(--accent)}.srch-card.active{border-color:var(--accent);background:var(--accent-soft)}.srch-card-left{display:flex;align-items:center;gap:5px;flex-shrink:0;padding-top:2px}.srch-num{font-size:10px;font-family:'Geist Mono',monospace;color:var(--tx3);min-width:18px;text-align:right}.srch-chk{width:14px;height:14px;accent-color:var(--accent);cursor:pointer;flex-shrink:0}.srch-card-body{flex:1;min-width:0;cursor:pointer}.srch-word-space{background:#fee2e2;color:#b91c1c;border-radius:3px;padding:0 3px;font-weight:700;font-family:'Noto Serif KR',serif}.srch-word-attach{background:#fef08a;color:#713f12;border-radius:3px;padding:0 3px;font-weight:700;font-family:'Noto Serif KR',serif}.srch-ctx{font-size:12px;line-height:1.7;color:var(--tx2);font-family:'Noto Serif KR',serif;word-break:keep-all}.srch-meta{font-size:10px;color:var(--tx3);margin-top:3px;font-family:'Geist Mono',monospace}.srch-none{padding:30px 20px;text-align:center;font-size:12px;color:var(--tx3);line-height:1.7}mark.hl-space{background:#fee2e2;color:#b91c1c;border-radius:3px;padding:0 2px;font-weight:700}mark.hl-attach{background:#fef08a;color:#713f12;border-radius:3px;padding:0 2px;font-weight:700}.toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:#1a1916;color:#fff;padding:8px 16px;border-radius:7px;font-size:12px;font-weight:500;z-index:9999;opacity:0;transition:opacity .2s;pointer-events:none;white-space:nowrap}.toast.show{opacity:1}#save-confirm-modal{display:none;position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:9998;align-items:center;justify-content:center}#save-confirm-modal.on{display:flex}#save-confirm-box{background:var(--surface);border-radius:var(--r);padding:24px 28px;max-width:380px;width:90%;box-shadow:0 8px 32px rgba(0,0,0,.18)}#save-confirm-box p{font-size:13px;color:var(--tx);line-height:1.7;margin-bottom:18px}#save-confirm-box .btn-row{display:flex;justify-content:flex-end;gap:8px}#save-confirm-box .btn-cancel{padding:7px 16px;border:1px solid var(--border);border-radius:var(--r2);background:var(--surface);font-size:12px;font-weight:500;cursor:pointer;color:var(--tx2)}#save-confirm-box .btn-ok{padding:7px 16px;border:none;border-radius:var(--r2);background:var(--accent);color:#fff;font-size:12px;font-weight:600;cursor:pointer}.ai-key-bar{display:flex;gap:5px;align-items:center}.ai-provider-sel{width:100%;padding:4px 7px;border:1px solid var(--border);border-radius:var(--r3);font-size:11px;font-family:'Geist',sans-serif;color:var(--tx);background:var(--bg);outline:none;cursor:pointer;margin-bottom:5px}.ai-provider-sel:focus{border-color:var(--accent)}.ai-key-inp{flex:1;padding:5px 8px;border:1px solid var(--border);border-radius:var(--r3);font-size:11px;font-family:'Geist Mono',monospace;color:var(--tx);outline:none;background:var(--bg)}.ai-key-inp:focus{border-color:var(--accent)}.ai-run-btn{padding:5px 10px;background:#3B82F6;color:#fff;border:none;border-radius:var(--r3);font-size:11px;font-weight:600;cursor:pointer;white-space:nowrap;font-family:'Geist',sans-serif;transition:background .15s}.ai-run-btn:hover{background:#2563EB}.ai-run-btn:disabled{background:#93C5FD;cursor:not-allowed;opacity:1}.ai-progress{font-size:10.5px;color:var(--tx3);margin-top:5px;display:none}.ai-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r2);margin-bottom:7px;overflow:hidden;transition:border-color .13s}.ai-card.criteria-item{border-left:3px solid #3b82f6;background:linear-gradient(90deg,#eff6ff 0%,var(--surface) 18px)}.ai-card:hover{border-color:var(--border-strong)}.ai-card-main{display:flex;align-items:flex-start;gap:9px;padding:10px 12px;cursor:pointer}.ai-chk{width:17px;height:17px;border:1.5px solid var(--border-strong);border-radius:3px;flex-shrink:0;margin-top:2px;display:flex;align-items:center;justify-content:center;transition:all .13s}.ai-chk.on{background:var(--accent);border-color:var(--accent)}.ai-chk.self-done{background:#1a1916;border-color:#1a1916}.ai-num{font-size:11px;color:var(--tx3);font-family:'Geist Mono',monospace;min-width:18px;margin-top:2px}.ai-badge{font-size:10.5px;font-weight:600;padding:1px 7px;border-radius:10px;white-space:nowrap;flex-shrink:0;margin-top:2px}.ai-badge.spell{background:#fee2e2;color:#b91c1c}.ai-badge.space{background:#fef9c3;color:#854d0e}.ai-badge.sent{background:var(--surface2);color:var(--tx2)}.ai-badge.logic{background:#fef3c7;color:#92400e}.ai-badge.fact{background:#d1fae5;color:#065f46}.ai-badge.fact-ok{background:#f0fdf4;color:#15803d;border:1.5px solid #86efac}.ai-diff{flex:1;font-size:13px;line-height:1.7}.ai-del{color:var(--err);font-family:'Noto Serif KR',serif}mark.ai-hl{background:#fde047;color:#1a1916;border-radius:3px;padding:0 2px;box-shadow:0 0 0 2px #fde047;animation:ai-hl-flash .6s ease}mark.ai-hl-all{background:#fef9c3;color:inherit;border-radius:2px;padding:0 1px;cursor:pointer;border-bottom:1.5px solid #eab308}mark.ai-hl-all:hover{background:#fde047}mark.ai-hl-all.active{background:#fde047;box-shadow:0 0 0 2px #fde047;border-radius:3px;animation:ai-hl-flash .6s ease}mark.ai-applied{background:#86efac;color:#15803d;border-radius:3px;padding:0 2px}
mark.ai-applied-content{background:#fde68a;color:#92400e;border-radius:3px;padding:0 2px;}mark.ai-hl.ai-applied{box-shadow:none}mark.ai-hl.ai-applied-content{box-shadow:none;background:#fde68a}.ai-card.applied{border-color:#22c55e !important;background:#f0fdf4}.ai-arr{color:var(--tx3);margin:0 5px;font-size:11px}.ai-ins{color:var(--ok);font-family:'Noto Serif KR',serif}.ai-auto-tag{font-size:10px;background:#dbeafe;color:#1e40af;padding:1px 6px;border-radius:8px;margin-left:5px;font-weight:600}.ai-memo-tag{font-size:10px;background:#fef3c7;color:#92400e;padding:1px 6px;border-radius:8px;margin-left:5px}.ai-reason-row{display:flex;align-items:center;justify-content:space-between;padding:0 12px 0 48px}.ai-reason-toggle{font-size:11px;color:var(--tx3);cursor:pointer;padding:0 0 8px;display:flex;align-items:center;gap:3px}.ai-reason-toggle:hover{color:var(--tx2)}.ai-reason-body{display:none;padding:8px 12px 10px 48px;font-size:11.5px;color:var(--tx2);line-height:1.6;border-top:1px solid var(--border)}.ai-reason-body.open{display:block}.ai-reason-preview{padding:0 12px 4px 48px;font-size:11px;color:var(--tx3);line-height:1.5;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.ai-reason-preview.hidden{display:none;}.restore-badge{display:inline-flex;align-items:center;gap:3px;padding:2px 9px;background:#fee2e2;border:1px solid #fca5a5;border-radius:10px;font-size:10.5px;font-weight:600;color:#991b1b;cursor:pointer;font-family:'Geist',sans-serif;transition:all .13s;}.restore-badge:hover:not(.disabled){background:#fecaca;border-color:#f87171;}.restore-badge.disabled{background:#f3f4f6;border-color:#e5e7eb;color:#9ca3af;cursor:default;opacity:.7;}.restore-modal-box{width:520px;max-width:95vw;max-height:78vh;display:flex;flex-direction:column;}.restore-modal-sub{font-size:11px;color:var(--tx3);padding:8px 18px 10px;border-bottom:1px solid var(--border);background:var(--bg);line-height:1.55;}.restore-modal-list{flex:1;overflow-y:auto;padding:8px;background:var(--bg);}.restore-modal-list::-webkit-scrollbar{width:5px;}.restore-modal-list::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px;}.restore-item{background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:9px 11px;margin-bottom:6px;}.restore-item-head{display:flex;align-items:center;gap:6px;margin-bottom:5px;}.restore-item-time{font-size:10.5px;color:var(--tx3);font-family:'Geist Mono',monospace;}.restore-item-btn{margin-left:auto;padding:3px 11px;background:var(--accent);color:#fff;border:none;border-radius:5px;font-size:11px;font-weight:600;cursor:pointer;font-family:'Geist',sans-serif;transition:all .13s;}.restore-item-btn:hover{background:var(--accent-h);}.restore-item-diff{font-size:11.5px;line-height:1.55;padding:3px 0 0 30px;}.restore-modal-foot{display:flex;gap:6px;padding:11px 14px;border-top:1px solid var(--border);background:var(--surface);}.restore-foot-btn{padding:6px 13px;font-size:11.5px;font-weight:600;border-radius:5px;cursor:pointer;font-family:'Geist',sans-serif;border:1px solid var(--border);background:var(--surface2);color:var(--tx2);transition:all .13s;}.restore-foot-btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent);}.restore-foot-btn:disabled{opacity:.4;cursor:not-allowed;}.restore-foot-btn.primary{background:var(--accent);border-color:var(--accent);color:#fff;}.restore-foot-btn.primary:hover:not(:disabled){background:var(--accent-h);border-color:var(--accent-h);color:#fff;}.restore-foot-btn.danger{color:#991b1b;border-color:#fca5a5;background:#fef2f2;}.restore-foot-btn.danger:hover:not(:disabled){background:#fee2e2;border-color:#f87171;color:#991b1b;}.ai-toolbar{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border-bottom:1px solid var(--border);background:var(--surface);flex-shrink:0}.ai-filter-seg{display:flex;border:1px solid var(--border);border-radius:var(--r3);overflow:hidden}.ai-filter-seg button{padding:3px 10px;font-size:11px;background:transparent;border:none;cursor:pointer;color:var(--tx2);font-family:'Geist',sans-serif}.ai-filter-seg button.on{background:var(--surface2);color:var(--tx)}.ai-apply-sel{padding:5px 14px;background:var(--accent);color:#fff;border:none;border-radius:var(--r3);font-size:11.5px;font-weight:600;cursor:pointer;font-family:'Geist',sans-serif}.ai-apply-sel:hover{background:var(--accent-h)}.ai-apply-sel:disabled{opacity:.4;cursor:not-allowed}.ai-trash-btn{background:none;border:none;padding:3px 4px;cursor:pointer;color:var(--tx3);display:flex;align-items:center;border-radius:4px;transition:all .13s;flex-shrink:0;margin-top:1px}.ai-trash-btn:hover{color:#ef4444;background:#fee2e2}.ai-card-foot{display:flex;align-items:center;justify-content:flex-end;padding:2px 12px 8px;gap:8px}.ai-reflect-btn{padding:3px 11px;background:#7591C0;color:#fff;border:none;border-radius:var(--r3);font-size:11px;font-weight:600;cursor:pointer;font-family:'Geist',sans-serif;transition:all .13s}.ai-reflect-btn:hover{background:#5B7CB5}.ai-reflect-btn:disabled{opacity:.4;cursor:not-allowed}.ai-reflect-btn.muted{background:#C07591;color:#fff;border:none;cursor:not-allowed;opacity:.85}.ai-reflect-btn.muted:hover{background:#C07591}.ai-reflect-btn.applied{background:#86efac;color:#15803d;border:1px solid #86efac}.ai-reflect-btn.applied:hover{background:#6ee7b7;color:#166534;border-color:#6ee7b7}.ai-cnt{font-size:11px;color:var(--tx3)}.ai-chunk-info{font-size:10px;color:var(--tx3);font-family:'Geist Mono',monospace}.rp-toggle{display:flex;gap:3px;margin-left:auto}.rp-toggle button{font-size:10.5px;padding:3px 9px;border:1px solid transparent;border-radius:var(--r3);background:transparent;color:var(--tx2);cursor:pointer;font-family:'Geist',sans-serif;transition:all .13s}.rp-toggle button.on{background:var(--surface);color:var(--tx);border-color:var(--border);box-shadow:0 1px 3px rgba(0,0,0,.08)}.rp-pdf-wrap{flex:1;overflow:auto;background:#666;display:none;flex-direction:column;align-items:center;padding-bottom:12px}.rp-pdf-wrap.on{display:flex}.pdf-hl{position:absolute;background:rgba(0,210,180,.45);border-radius:2px;pointer-events:none;outline:2px solid rgba(0,180,155,.6)}.rp-pdf-ctl{display:none;align-items:center;gap:5px;flex-shrink:0}.rp-pdf-ctl.on{display:flex}.rp-vbtn{background:none;border:1px solid var(--border);border-radius:5px;width:27px;height:27px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--tx2);transition:all .13s}.rp-vbtn:hover:not(:disabled){border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.rp-vbtn:disabled{opacity:.3;cursor:not-allowed}.rp-vpi{font-family:'Geist Mono',monospace;font-size:11px;color:var(--tx2);white-space:nowrap;display:flex;align-items:center;gap:4px}.pdf-clean-wrap{display:flex;flex-direction:column;gap:5px}.pdf-clean-row{display:flex;gap:4px;align-items:center}.pdf-chk-label{display:flex;align-items:center;gap:5px;font-size:11px;color:var(--tx2);cursor:pointer;user-select:none}.pdf-chk-label input{accent-color:var(--accent);width:13px;height:13px;cursor:pointer}.pdf-run{padding:5px 10px;background:var(--surface2);color:var(--tx2);border:1px solid var(--border);border-radius:var(--r3);font-size:11px;font-weight:600;cursor:pointer;font-family:'Geist',sans-serif;transition:all .13s;white-space:nowrap}.pdf-run:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.ai-add-tag{font-size:10px;background:#f0fdf4;color:#15803d;border:0.5px solid #86efac;padding:1px 6px;border-radius:8px;margin-left:5px;font-weight:500;font-family:'Geist',sans-serif}.ai-review-tag{display:inline-block;padding:1px 7px;border-radius:8px;font-size:10px;font-weight:700;background:#fef3c7;color:#92400e;border:0.5px solid #fcd34d;margin-left:5px;font-family:'Geist',sans-serif}.lp-tab{display:none;flex:1;overflow-y:auto;flex-direction:column;min-height:0}.lp-tab::-webkit-scrollbar{width:3px}.lp-tab::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}.lp-tab.on{display:flex}.data-sec{padding:13px 14px;border-bottom:1px solid var(--border)}.data-sec-label{font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--tx3);margin-bottom:8px}.data-file-row{display:flex;gap:4px;margin-bottom:4px}.data-file-btn{flex:1;display:flex;align-items:center;justify-content:center;gap:4px;padding:6px 8px;background:var(--surface2);border:1px solid var(--border);border-radius:var(--r2);font-size:11px;font-weight:600;color:var(--tx2);cursor:pointer;font-family:'Geist',sans-serif;transition:all .15s;white-space:nowrap}.data-file-btn:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.data-file-btn.green{border-color:#86efac;color:#15803d}.data-file-btn.green:hover{background:#f0fdf4;border-color:#4ade80}.data-status{font-family:'Geist Mono',monospace;font-size:9.5px;color:var(--tx3);padding:2px 2px 6px;line-height:1.4}.dev-btn{display:flex;align-items:center;gap:5px;padding:4px 10px;background:var(--surface2);border:1px solid var(--border);border-radius:5px;font-family:'Geist Mono',monospace;font-size:10.5px;font-weight:600;color:var(--tx3);cursor:pointer;transition:all .15s;margin-left:8px}.dev-btn:hover{border-color:var(--accent);color:var(--accent)}.dev-btn.on{background:var(--accent);border-color:var(--accent);color:#fff}.dev-panel{display:none;position:absolute;inset:0;z-index:100;flex-direction:column;background:var(--surface);overflow:hidden}.dev-panel.on{display:flex}.lp.dev-mode>:not(.dev-panel){display:none !important}.dev-ph{padding:11px 14px;background:var(--surface2);border-bottom:1px solid var(--border);flex-shrink:0;display:flex;align-items:center;justify-content:space-between}.dev-ph-title{font-family:'Geist Mono',monospace;font-size:11.5px;font-weight:600;color:var(--tx);display:flex;align-items:center;gap:6px}.dev-ph-ver{font-size:9.5px;background:var(--border);color:var(--tx2);border-radius:3px;padding:1px 6px}.dev-body{flex:1;overflow-y:auto;padding:12px;display:flex;flex-direction:column;gap:10px}.dev-body::-webkit-scrollbar{width:3px}.dev-body::-webkit-scrollbar-thumb{background:var(--border)}.dev-sec{border:1px solid var(--border);border-radius:var(--r2);overflow:hidden}.dev-sec-hdr{padding:6px 11px;background:var(--surface2);border-bottom:1px solid var(--border);font-size:9.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--tx3)}.dev-sec-body{padding:9px 11px;font-family:'Geist Mono',monospace;font-size:11px;color:var(--tx2);line-height:1.9}.dev-row{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:3px 0;border-bottom:1px dashed var(--border)}.dev-row:last-child{border:none}.dev-key{color:var(--tx);font-weight:600;flex-shrink:0}.dev-val{color:var(--tx2);text-align:right;flex:1}.dev-date{font-size:9px;color:var(--tx3);background:var(--surface2);border:1px solid var(--border);border-radius:10px;padding:1px 6px;white-space:nowrap;flex-shrink:0;font-family:'Geist Mono',monospace}.dev-history-more{width:100%;padding:4px 0;background:none;border:none;border-top:1px dashed var(--border);font-size:10px;color:var(--tx3);cursor:pointer;font-family:'Geist Mono',monospace;text-align:center;margin-top:2px}.dev-history-more:hover{color:var(--accent)}.dev-tag{display:inline-flex;align-items:center;padding:2px 7px;border-radius:3px;font-family:'Geist Mono',monospace;font-size:10px;font-weight:600;margin:2px 2px 2px 0}.dev-tag.ok{background:#dcfce7;color:#166534;border:1px solid #bbf7d0}.dev-tag.warn{background:#fef9c3;color:#854d0e;border:1px solid #fde68a}.dev-tag.err{background:#fee2e2;color:#991b1b;border:1px solid #fecaca}.dev-empty{padding:40px 20px;text-align:center;color:var(--tx3);font-size:12px;line-height:1.8}.dev-action-btn{width:100%;display:flex;align-items:center;justify-content:center;gap:6px;padding:9px;background:var(--surface);color:var(--tx);border:1px solid var(--border);border-radius:6px;font-family:'Geist',sans-serif;font-size:12.5px;font-weight:600;cursor:pointer;transition:all .15s}.dev-action-btn:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.dev-sub-btn{width:100%;display:flex;align-items:center;justify-content:center;gap:6px;padding:8px;background:var(--surface);color:var(--tx2);border:1px solid var(--border);border-radius:6px;font-family:'Geist',sans-serif;font-size:12px;font-weight:600;cursor:pointer;transition:all .15s}.dev-sub-btn:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.dev-ghost-btn{width:100%;display:flex;align-items:center;justify-content:center;gap:6px;padding:8px;background:var(--surface2);color:var(--tx3);border:1px solid var(--border);border-radius:6px;font-family:'Geist',sans-serif;font-size:12px;font-weight:500;cursor:pointer;transition:all .15s}.dev-ghost-btn:hover{border-color:var(--accent);color:var(--accent)}.help-modal{width:560px;max-width:95vw}.help-body{padding:18px 22px;max-height:65vh;overflow-y:auto;min-height:auto}.help-body::-webkit-scrollbar{width:5px}.help-body::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}.hb-sec{margin:10px 0}.hb-sec-title{font-size:13px;font-weight:700;color:var(--tx);margin-bottom:5px}.hb-sec-body{font-size:12.5px;color:var(--tx2);line-height:1.75;white-space:pre-line;font-family:'Noto Sans KR',sans-serif}.hb-filename{display:inline-block;background:var(--surface2);border:1px solid var(--border);border-radius:var(--r3);padding:4px 10px;margin-top:6px;font-family:'Geist Mono',monospace;font-size:11.5px;color:var(--tx2);word-break:break-all}.hb-tip{background:var(--accent-soft);border-left:3px solid var(--accent);padding:10px 13px;margin:12px 0;font-size:12.5px;color:var(--tx);line-height:1.7;border-radius:0 var(--r3) var(--r3) 0}.hb-files{background:var(--surface2);border-radius:var(--r2);padding:12px 14px;margin-top:14px;font-size:12px;color:var(--tx2);line-height:1.9}.hb-files-title{font-weight:700;color:var(--tx);margin-bottom:5px;font-size:12.5px}.hb-cards-row{display:flex;gap:8px;margin:8px 0 10px;}.hb-card-box{flex:1;padding:11px 13px;border:1px solid var(--border);border-radius:7px;background:var(--surface);}.hb-card-title{font-size:12.5px;font-weight:700;color:var(--tx);margin-bottom:5px;display:flex;align-items:center;gap:5px;}.hb-card-body{font-size:11.5px;color:var(--tx2);line-height:1.6;}.hb-warn-sec{background:#fef2f2;border-left:3px solid #fca5a5;padding:10px 13px;margin:12px 0;font-size:12.5px;color:var(--tx);line-height:1.65;border-radius:0 var(--r3) var(--r3) 0;}.hb-warn-sec b{color:#991b1b;font-weight:700;}.hb-flow-sec{background:var(--surface2);border-radius:var(--r2);padding:11px 14px;margin:12px 0;}.hb-flow-title{font-size:12.5px;font-weight:700;color:var(--tx);margin-bottom:6px;}.hb-flow-step{font-size:12px;color:var(--tx2);line-height:1.85;display:flex;gap:7px;}.hb-flow-step b{color:var(--accent);font-weight:700;flex-shrink:0;min-width:14px;}.help-trigger-btn{display:inline-flex;align-items:center;gap:4px;padding:3px 11px;background:var(--accent);border:1px solid var(--accent);border-radius:20px;font-size:10.5px;font-weight:600;color:#fff;cursor:pointer;font-family:'Geist',sans-serif;transition:all .15s}.help-trigger-btn:hover{background:var(--accent-h);border-color:var(--accent-h);transform:translateY(-1px);box-shadow:0 2px 6px rgba(26,86,219,.25)}
.ai-progress-v2{margin-top:8px;padding:10px 12px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r2);display:none;flex-direction:column;gap:10px}
.ai-progress-v2.on{display:flex}
.prog-stages{display:flex;justify-content:space-between;align-items:flex-start;position:relative;padding:0 4px}
.prog-stages::before{content:"";position:absolute;top:9px;left:14px;right:14px;height:1px;background:var(--border);z-index:0}
.prog-stage{display:flex;flex-direction:column;align-items:center;gap:4px;position:relative;z-index:1;flex:1;min-width:0}
.prog-dot{width:18px;height:18px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:600;background:var(--surface);border:1px solid var(--border);color:var(--tx3);transition:all .2s}
.prog-stage.done .prog-dot{background:var(--ok);border-color:var(--ok);color:#fff}
.prog-stage.active .prog-dot{background:var(--accent-soft);border:2px solid var(--accent);color:var(--accent);animation:prog-pulse 1.4s ease-in-out infinite}
.prog-stage.wait .prog-dot{background:var(--surface);border-color:var(--border);color:var(--tx3)}
.prog-label{font-size:10px;color:var(--tx3);font-weight:500;text-align:center;white-space:nowrap}
.prog-stage.active .prog-label{color:var(--tx);font-weight:600}
.prog-stage.done .prog-label{color:var(--tx2)}
.prog-sub{font-family:'Geist Mono',monospace;font-size:9px;color:var(--tx3)}
.prog-stage.active .prog-sub{color:var(--accent)}
.prog-stage.done .prog-sub{color:var(--ok)}
@keyframes prog-pulse{0%,100%{box-shadow:0 0 0 0 rgba(26,86,219,.35)}50%{box-shadow:0 0 0 5px rgba(26,86,219,0)}}
.prog-bar-wrap{display:flex;align-items:center;gap:8px}
.prog-bar{flex:1;height:5px;background:var(--surface2);border-radius:3px;overflow:hidden}
.prog-bar-fill{height:100%;background:var(--accent);border-radius:3px;transition:width .35s ease}
.prog-pct{font-family:'Geist Mono',monospace;font-size:11px;font-weight:600;color:var(--tx);min-width:34px;text-align:right}
.prog-meta{display:flex;align-items:center;justify-content:space-between;gap:8px}
.prog-eta{font-size:10.5px;color:var(--tx2);line-height:1.4;flex:1;min-width:0}
.prog-cancel{font-size:10.5px;padding:3px 10px;background:transparent;border:1px solid var(--border);border-radius:var(--r3);color:var(--tx2);cursor:pointer;font-family:'Geist',sans-serif;white-space:nowrap;transition:all .13s}
.prog-cancel:hover{border-color:var(--err);color:var(--err);background:var(--err-soft)}
.prog-cancel:disabled{opacity:.4;cursor:not-allowed}
.ai-reflect-undo{padding:3px 11px;background:var(--surface2);color:var(--tx2);border:1px solid var(--surface2);border-radius:var(--r3);font-size:11px;font-weight:600;font-family:'Geist',sans-serif;cursor:pointer;transition:all .13s}
.ai-reflect-undo:hover{background:var(--border);border-color:var(--border);color:var(--tx)}
