/* Path:T2Editor/plugin/ai_complex/ai_complex.css *//* * ai_complex — ai + ai_rearrange 통폐합 플러그인 스타일 * 디자인 토큰은 ai_rearrange.css의 체계를 계승(다크모드 포함),두 플러그인의 * 팔레트(#7c3aed / #667eea 계열 보라)를 하나의 accent로 수렴시킴. */:root{--t2-aic-font:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Noto Sans KR","Apple SD Gothic Neo",sans-serif;--t2-aic-accent:#7c5cf0;--t2-aic-accent-strong:#6d3ff0;--t2-aic-accent-text:#4c2fb0;--t2-aic-accent-surface:#f5f3ff;--t2-aic-accent-border:#ded9ff;--t2-aic-success:#16723a;--t2-aic-success-surface:#effaf3;--t2-aic-success-border:#bfe8cd;--t2-aic-warning:#a16207;--t2-aic-warning-surface:#fffbeb;--t2-aic-warning-border:#f3d68a;--t2-aic-danger:#b42318;--t2-aic-danger-surface:#fff1f0;--t2-aic-danger-border:#f2c0bc;--t2-aic-text:#18181b;--t2-aic-text-soft:#3f3f46;--t2-aic-text-muted:#71717a;--t2-aic-text-faint:#a1a1aa;--t2-aic-surface:#ffffff;--t2-aic-surface-subtle:#f7f7f8;--t2-aic-surface-muted:#efedff;--t2-aic-border:#e3e4e8;--t2-aic-border-strong:#cfd2da;--t2-aic-overlay:rgba(24,24,27,0.34);--t2-aic-modal-shadow:0 20px 60px rgba(24,24,27,0.20);--t2-aic-radius-sm:8px;--t2-aic-radius-md:12px;--t2-aic-radius-lg:16px}html[data-t2editor-theme="dark"]{--t2-aic-accent:#b3a2ff;--t2-aic-accent-strong:#c7baff;--t2-aic-accent-text:#ded6ff;--t2-aic-accent-surface:#2c2949;--t2-aic-accent-border:#4c4680;--t2-aic-success:#86efac;--t2-aic-success-surface:#203428;--t2-aic-success-border:#315f3f;--t2-aic-warning:#fcd34d;--t2-aic-warning-surface:#3a2f10;--t2-aic-warning-border:#6b551c;--t2-aic-danger:#fca5a5;--t2-aic-danger-surface:#3a1f1d;--t2-aic-danger-border:#6b332e;--t2-aic-text:#f4f4f5;--t2-aic-text-soft:#d4d4d8;--t2-aic-text-muted:#a1a1aa;--t2-aic-text-faint:#71717a;--t2-aic-surface:#1f1f24;--t2-aic-surface-subtle:#26262c;--t2-aic-surface-muted:#302c47;--t2-aic-border:#35353c;--t2-aic-border-strong:#47474f;--t2-aic-overlay:rgba(0,0,0,0.55)}@keyframes t2AicShimmer{0%,100%{opacity:1}50%{opacity:0.55}}@keyframes t2AicSlideUp{from{transform:translateY(16px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes t2AicSpin{to{transform:rotate(360deg)}}/* ── Overlay / Modal shell ─────────────────────────────────────────────── */.t2-aic-overlay{position:fixed;inset:0;background:var(--t2-aic-overlay);display:flex;align-items:center;justify-content:center;z-index:10001;font-family:var(--t2-aic-font)}.t2-aic-modal{background:var(--t2-aic-surface);color:var(--t2-aic-text);border-radius:var(--t2-aic-radius-lg);box-shadow:var(--t2-aic-modal-shadow);width:92%;max-width:720px;max-height:86vh;display:flex;flex-direction:column;overflow:hidden;animation:t2AicSlideUp 0.22s ease-out}/* 채팅 모드 — 모달을 항상 고정 높이로 띄운다. max-height만 있고 height가 없으면 대화가 짧을 때 모달이 작아지고,메시지 영역(flex:1)도 따라 작아져 거의 안 보이게 된다. 채팅은 항상 넉넉한 세로 공간이 필요하므로 height를 고정한다. */.t2-aic-modal.is-chat-mode{height:86vh;min-height:520px;max-width:760px}/* ── Header ────────────────────────────────────────────────────────────── */.t2-aic-header{padding:18px 20px;border-bottom:1px solid var(--t2-aic-border);display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-shrink:0}.t2-aic-title-block{display:flex;align-items:center;gap:12px}.t2-aic-title-icon{color:var(--t2-aic-accent);background:linear-gradient(135deg,#667eea,#8b5cf6);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;font-size:28px !important}.t2-aic-title-copy h3{margin:0;font-size:17px;font-weight:700}.t2-aic-title-copy p{margin:2px 0 0;font-size:12.5px;color:var(--t2-aic-text-muted)}.t2-aic-close{background:none;border:none;cursor:pointer;padding:6px;display:flex;color:var(--t2-aic-text-muted);border-radius:50%;transition:background 0.15s}.t2-aic-close:hover{background:var(--t2-aic-surface-subtle)}/* ── Mode tabs (write / rearrange / chat) ─────────────────────────────── */.t2-aic-tabs{display:flex;gap:6px;padding:12px 20px 0;flex-shrink:0}/* 채팅 모드에서는 tabs를 본문과 확실히 구분되는 상단 메뉴 구획으로 — 구조적으로 분리해 안내 문구가 탭에 가려지는 일이 없도록 한다. */.t2-aic-modal.is-chat-mode .t2-aic-tabs{padding-bottom:10px;border-bottom:1px solid var(--t2-aic-border);background:var(--t2-aic-surface)}.t2-aic-tab{flex:1;display:flex;align-items:center;justify-content:center;gap:6px;padding:9px 10px;border:1px solid var(--t2-aic-border);background:var(--t2-aic-surface-subtle);color:var(--t2-aic-text-muted);border-radius:var(--t2-aic-radius-sm) var(--t2-aic-radius-sm) 0 0;font-size:13px;font-weight:600;cursor:pointer;transition:all 0.15s}.t2-aic-tab .material-icons{font-size:17px}.t2-aic-tab.is-active{background:var(--t2-aic-accent-surface);border-color:var(--t2-aic-accent-border);color:var(--t2-aic-accent-text)}/* ── Content / body ───────────────────────────────────────────────────── */.t2-aic-body{padding:16px 20px 20px;overflow-y:auto;display:flex;flex-direction:column;gap:14px}/* 채팅 모드 — 본문 자체는 스크롤하지 않고,메시지 영역만 내부 스크롤을 갖는다(컴포저가 항상 보이도록). flex:1 1 0 + min-height:0 조합이 있어야 부모가 줄어들 때 이 영역도 줄어들고 overflow가 정상 작동한다. */.t2-aic-body.is-chat-mode{overflow:hidden;flex:1 1 0;min-height:0;padding:0;gap:0}.t2-aic-section-label{display:block;font-size:12.5px;font-weight:700;color:var(--t2-aic-text-soft);margin-bottom:4px}.t2-aic-section-desc{margin:0 0 8px;font-size:12px;color:var(--t2-aic-text-muted)}.t2-aic-input-shell{position:relative}.t2-aic-instruction{width:100%;min-height:92px;resize:vertical;border:1px solid var(--t2-aic-border-strong);border-radius:var(--t2-aic-radius-sm);padding:12px 12px 26px;font-size:14px;font-family:inherit;color:var(--t2-aic-text);background:var(--t2-aic-surface);box-sizing:border-box}.t2-aic-instruction:focus{outline:none;border-color:var(--t2-aic-accent)}.t2-aic-char-count{position:absolute;right:10px;bottom:8px;font-size:11px;color:var(--t2-aic-text-faint)}.t2-aic-char-count.is-warning{color:var(--t2-aic-warning)}.t2-aic-char-count.is-danger{color:var(--t2-aic-danger)}.t2-aic-prompt-hints{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.t2-aic-prompt-hint{border:1px solid var(--t2-aic-accent-border);background:var(--t2-aic-accent-surface);color:var(--t2-aic-accent-text);border-radius:999px;padding:5px 11px;font-size:12px;cursor:pointer;transition:transform 0.1s}.t2-aic-prompt-hint:hover{transform:translateY(-1px)}/* focus-pick (요소 선택) */.t2-aic-focus-row{display:flex;align-items:center;gap:8px;margin-top:8px;flex-wrap:wrap}.t2-aic-focus-btn{display:inline-flex;align-items:center;gap:5px;border:1px dashed var(--t2-aic-border-strong);background:var(--t2-aic-surface-subtle);color:var(--t2-aic-text-soft);border-radius:999px;padding:5px 12px;font-size:12px;cursor:pointer}.t2-aic-focus-btn.is-active{border-style:solid;border-color:var(--t2-aic-accent);color:var(--t2-aic-accent-text)}.t2-aic-focus-btn .material-icons{font-size:15px}.t2-aic-focus-chip{display:inline-flex;align-items:center;gap:6px;background:var(--t2-aic-accent-surface);border:1px solid var(--t2-aic-accent-border);color:var(--t2-aic-accent-text);border-radius:999px;padding:4px 10px 4px 10px;font-size:12px;max-width:100%}.t2-aic-focus-chip span.txt{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:220px}.t2-aic-focus-chip button{border:none;background:none;cursor:pointer;color:inherit;display:flex;padding:0;font-size:14px;line-height:1}/* 여러 블록을 골랐을 때(2개 이상) 칩 줄 끝에 붙는 "전체 해제" 링크 버튼 */.t2-aic-focus-clear-all{border:none;background:none;cursor:pointer;color:var(--t2-aic-text-soft);font-size:11.5px;text-decoration:underline;padding:4px 2px}.t2-aic-focus-clear-all:hover{color:var(--t2-aic-text)}/* editor-side highlight while picking */.t2-aic-focus-pick{outline:2px dashed var(--t2-aic-accent) !important;outline-offset:2px;cursor:pointer !important}.t2-aic-focus-selected{outline:2px solid var(--t2-aic-accent) !important;outline-offset:2px}/* ── 하단 상태 바 (v3.5.0) ──────────────────────────────────────────────── "person내 요청 / public서버 요청" 배지 + "Powered by T2Editor AI" 링크는 더 이상 본문(body) 스크롤 안의 한 섹션이 아니라,모달의 독립된 하단 구획(header/tabs/body와 같은 레벨의 형제 요소)이다. flex-shrink:0으로 고정해 두어서 어떤 탭이든,본문을 얼마나 스크롤하든 항상 맨 아래에 그대로 보인다 — 매 renderBody 호출마다 다시 그릴 필요도 없다. */.t2-aic-status-bar{padding:10px 20px;border-top:1px solid var(--t2-aic-border);background:var(--t2-aic-surface-subtle);display:flex;flex-direction:column;gap:4px;flex-shrink:0}.t2-aic-status-bar-row{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.t2-aic-status-bar-right{display:flex;align-items:center;gap:8px}.t2-aic-rate-limits{display:flex;gap:8px;flex-wrap:wrap}.t2-aic-rate-badge{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;color:var(--t2-aic-text-muted);background:var(--t2-aic-surface);border:1px solid var(--t2-aic-border);border-radius:999px;padding:3px 9px}.t2-aic-rate-badge.is-warning{color:var(--t2-aic-warning);border-color:var(--t2-aic-warning-border);background:var(--t2-aic-warning-surface)}.t2-aic-rate-badge .material-icons{font-size:13px}.t2-aic-powered{border:none;background:none;cursor:pointer;font-size:11.5px;font-weight:600;color:var(--t2-aic-accent-text);text-decoration:underline;padding:0}.t2-aic-disclosure{margin:2px 0 0;font-size:10.5px;color:var(--t2-aic-text-faint);line-height:1.5}/* ── Tool on/off (알약 + 전체 목록 팝업) ─────────────────────────────── */.t2-aic-tools-section{display:flex;flex-direction:column;gap:8px}.t2-aic-tools-toprow{display:flex;align-items:center;justify-content:space-between;gap:8px}.t2-aic-tools-title{font-size:11.5px;font-weight:700;color:var(--t2-aic-text-muted);letter-spacing:0.01em}.t2-aic-tools-caret{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border:1px solid var(--t2-aic-border-strong);background:var(--t2-aic-surface);color:var(--t2-aic-text-soft);border-radius:999px;cursor:pointer;transition:background 0.15s ease,color 0.15s ease}.t2-aic-tools-caret .material-icons{font-size:16px}.t2-aic-tools-caret:hover{background:var(--t2-aic-surface-subtle)}.t2-aic-tools-caret.is-open{background:var(--t2-aic-text);color:var(--t2-aic-surface);border-color:var(--t2-aic-text)}.t2-aic-tools-pills{display:flex;flex-wrap:wrap;gap:6px}.t2-aic-tools-empty{font-size:11.5px;color:var(--t2-aic-text-faint)}.t2-aic-tool-pill{display:inline-flex;align-items:center;gap:4px;padding:4px 6px 4px 10px;background:var(--t2-aic-surface-subtle);border:1px solid var(--t2-aic-border);border-radius:999px;font-size:11.5px;color:var(--t2-aic-text-soft);max-width:100%}.t2-aic-tool-pill-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.t2-aic-tool-pill-x{display:flex;align-items:center;justify-content:center;width:16px;height:16px;border:none;background:transparent;padding:0;color:var(--t2-aic-text-faint);border-radius:999px;cursor:pointer;transition:background 0.15s ease,color 0.15s ease}.t2-aic-tool-pill-x .material-icons{font-size:13px}.t2-aic-tool-pill-x:hover{background:var(--t2-aic-danger-surface);color:var(--t2-aic-danger)}/* 전체 도구 목록 팝업 — document.body에 fixed로 붙어서 모달의 스크롤/ overflow에 영향받지 않는다. overlay 자체는 화면을 가리지 않고(뒤 배경 클릭 가능),팝업 패널만 클릭을 받는다. */.t2-aic-tools-popup-overlay{position:fixed;inset:0;z-index:10002;pointer-events:none}.t2-aic-tools-popup{position:fixed;pointer-events:auto;background:var(--t2-aic-surface);color:var(--t2-aic-text);border:1px solid var(--t2-aic-border-strong);border-radius:var(--t2-aic-radius-md);box-shadow:var(--t2-aic-modal-shadow);overflow:hidden;display:flex;flex-direction:column;animation:t2AicSlideUp 0.15s ease-out}.t2-aic-tools-popup-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px;padding:10px 12px;border-bottom:1px solid var(--t2-aic-border);font-size:12.5px;font-weight:700}.t2-aic-tools-popup-hint{font-size:10.5px;font-weight:400;color:var(--t2-aic-text-faint)}.t2-aic-tools-popup-list{overflow-y:auto;padding:6px;display:flex;flex-direction:column;gap:2px}.t2-aic-tools-popup-row{display:flex;align-items:center;gap:8px;padding:8px 8px;border-radius:var(--t2-aic-radius-sm);cursor:pointer;background:transparent;color:var(--t2-aic-text-soft);transition:background 0.15s ease,color 0.15s ease}.t2-aic-tools-popup-row:hover{background:var(--t2-aic-surface-subtle)}/* 사용중(활성) 도구 — 요청사항:초록 등 유채색 금지,무채색(흑/백 스펙트럼)만 사용. 짙은 배경 + 대비되는 무채색 텍스트/체크로만 "현재 사용중"임을 표현한다. */.t2-aic-tools-popup-row.is-active{background:var(--t2-aic-text);color:var(--t2-aic-surface)}.t2-aic-tools-popup-row.is-active:hover{background:var(--t2-aic-text-soft)}.t2-aic-tools-popup-check{display:flex;align-items:center;justify-content:center;width:16px;height:16px;flex:none}.t2-aic-tools-popup-check .material-icons{font-size:15px;color:currentColor}.t2-aic-tools-popup-name{flex:1;font-size:12.5px;font-weight:600}.t2-aic-tools-popup-info{display:flex;align-items:center;justify-content:center;width:22px;height:22px;flex:none;border:none;background:transparent;padding:0;color:currentColor;opacity:0.6;border-radius:999px;cursor:pointer;transition:opacity 0.15s ease,background 0.15s ease}.t2-aic-tools-popup-info:hover{opacity:1;background:rgba(127,127,127,0.18)}.t2-aic-tools-popup-info .material-icons{font-size:16px}.t2-aic-tool-info-popup{max-width:360px}.t2-aic-model-badge{display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--t2-aic-accent-text);background:var(--t2-aic-accent-surface,var(--t2-aic-surface-subtle));border:1px solid var(--t2-aic-accent-border);border-radius:var(--t2-aic-radius-sm);padding:6px 10px}.t2-aic-model-badge .material-icons{font-size:14px}.t2-aic-model-badge strong{font-weight:700}/* ── Result:DSL preview cards (write mode) ──────────────────────────── */.t2-aic-result{display:none;flex-direction:column;gap:10px}.t2-aic-result.is-visible{display:flex}.t2-aic-loading{display:flex;align-items:center;gap:10px;padding:22px 10px;color:var(--t2-aic-text-muted);font-size:13.5px}.t2-aic-spinner{width:20px;height:20px;border-radius:50%;border:2.5px solid var(--t2-aic-accent-border);border-top-color:var(--t2-aic-accent);animation:t2AicSpin 0.7s linear infinite}.t2-aic-error-box{border:1px solid var(--t2-aic-danger-border);background:var(--t2-aic-danger-surface);color:var(--t2-aic-danger);border-radius:var(--t2-aic-radius-sm);padding:12px 14px;font-size:13px;display:flex;gap:8px;align-items:flex-start}.t2-aic-error-box .material-icons{font-size:18px;flex-shrink:0}.t2-aic-dsl-preview{border:1px solid var(--t2-aic-border);border-radius:var(--t2-aic-radius-sm);max-height:320px;overflow-y:auto}.t2-aic-dsl-card{display:flex;gap:10px;padding:10px 12px;border-bottom:1px solid var(--t2-aic-border);font-size:13.5px;line-height:1.5}.t2-aic-dsl-card:last-child{border-bottom:none}.t2-aic-dsl-tag{flex-shrink:0;width:26px;height:26px;border-radius:7px;background:var(--t2-aic-accent-surface);color:var(--t2-aic-accent-text);display:flex;align-items:center;justify-content:center}.t2-aic-dsl-tag .material-icons{font-size:16px}.t2-aic-dsl-body{flex:1;min-width:0;word-break:break-word}.t2-aic-dsl-body b{font-weight:700}.t2-aic-dsl-body i{font-style:italic}.t2-aic-dsl-body code{background:var(--t2-aic-surface-muted);padding:1px 5px;border-radius:4px;font-size:12.5px}.t2-aic-dsl-body pre{margin:4px 0 0;background:var(--t2-aic-surface-muted);padding:8px 10px;border-radius:6px;overflow-x:auto;font-size:12px}.t2-aic-dsl-meta{font-size:11px;color:var(--t2-aic-text-faint);margin-bottom:2px}/* ── Result:split diff (rearrange mode) ─────────────────────────────── */.t2-aic-diff-shell{border:1px solid var(--t2-aic-border);border-radius:var(--t2-aic-radius-sm);overflow:auto;max-height:360px}.t2-aic-diff-head{display:grid;grid-template-columns:34px 1fr 34px 1fr;background:var(--t2-aic-surface-subtle);position:sticky;top:0;font-size:11px;font-weight:700;color:var(--t2-aic-text-muted)}.t2-aic-diff-head > div{padding:6px 8px;border-bottom:1px solid var(--t2-aic-border)}.t2-aic-diff-row{display:grid;grid-template-columns:34px 1fr 34px 1fr;font-size:12.5px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.t2-aic-diff-linenum{padding:4px 6px;text-align:right;color:var(--t2-aic-text-faint);background:var(--t2-aic-surface-subtle)}.t2-aic-diff-cell{padding:4px 8px;white-space:pre-wrap;word-break:break-word}.t2-aic-diff-cell.is-removed{background:var(--t2-aic-danger-surface)}.t2-aic-diff-cell.is-added{background:var(--t2-aic-success-surface)}.t2-aic-diff-cell.is-empty{background:var(--t2-aic-surface-subtle)}.t2-ai-diff-token.is-removed{background:var(--t2-aic-danger-border);border-radius:3px}.t2-ai-diff-token.is-added{background:var(--t2-aic-success-border);border-radius:3px}.t2-ai-diff-empty,.t2-ai-diff-blank-line{color:var(--t2-aic-text-faint);font-style:italic}/* ── Footer ───────────────────────────────────────────────────────────── */.t2-aic-footer{padding:14px 20px;border-top:1px solid var(--t2-aic-border);display:flex;justify-content:flex-end;gap:8px}.t2-aic-footer.is-hidden{display:none}.t2-aic-btn{display:inline-flex;align-items:center;gap:6px;border:none;border-radius:var(--t2-aic-radius-sm);padding:9px 16px;font-size:13.5px;font-weight:600;cursor:pointer;transition:opacity 0.15s}.t2-aic-btn .material-icons{font-size:17px}.t2-aic-btn:hover{opacity:0.88}.t2-aic-btn-primary{background:linear-gradient(135deg,#667eea,#7c5cf0);color:#fff}.t2-aic-btn-ghost{background:var(--t2-aic-surface-subtle);color:var(--t2-aic-text-soft);border:1px solid var(--t2-aic-border)}.t2-aic-btn-success{background:linear-gradient(135deg,#16a34a,#16723a);color:#fff}.t2-aic-btn[disabled]{opacity:0.5;cursor:not-allowed}/* ── Info popup (marketing/설명) ──────────────────────────────────────── */.t2-aic-info-overlay{position:fixed;inset:0;background:var(--t2-aic-overlay);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;z-index:10003;font-family:var(--t2-aic-font)}.t2-aic-info-popup{background:var(--t2-aic-surface);color:var(--t2-aic-text);border:1px solid var(--t2-aic-border);border-radius:20px;box-shadow:0 24px 70px rgba(24,24,27,0.22),0 2px 6px rgba(24,24,27,0.06);width:92%;max-width:460px;max-height:82vh;overflow-y:auto;padding:26px 28px 22px;animation:t2AicSlideUp 0.22s cubic-bezier(.2,.7,.3,1)}.t2-aic-info-head{display:flex;align-items:center;gap:12px;margin-bottom:22px;padding-bottom:20px;border-bottom:1px solid var(--t2-aic-border)}.t2-aic-info-head-copy{flex:1;display:flex;flex-direction:column;gap:2px}.t2-aic-info-eyebrow{font-size:10.5px;font-weight:700;letter-spacing:0.09em;text-transform:uppercase;color:var(--t2-aic-accent-text)}.t2-aic-info-head strong{font-size:18.5px;font-weight:700;letter-spacing:-0.01em;line-height:1.3}.t2-aic-info-badge{flex-shrink:0;width:34px;height:34px;border-radius:10px;background:var(--t2-aic-accent-surface);color:var(--t2-aic-accent-text);display:flex;align-items:center;justify-content:center}.t2-aic-info-badge .material-icons{font-size:18px}.t2-aic-info-badge-title{width:42px;height:42px;border-radius:12px;background:linear-gradient(135deg,var(--t2-aic-accent-surface),var(--t2-aic-surface-muted));color:var(--t2-aic-accent-strong)}.t2-aic-info-badge-title .material-icons{font-size:21px}.t2-aic-info-list{display:flex;flex-direction:column;gap:20px}.t2-aic-info-item{display:flex;align-items:flex-start;gap:14px}.t2-aic-info-copy{flex:1;min-width:0}.t2-aic-info-copy h4{margin:0 0 5px;font-size:14px;font-weight:700;letter-spacing:-0.005em;color:var(--t2-aic-text)}.t2-aic-info-copy p{margin:0;font-size:12.5px;color:var(--t2-aic-text-muted);line-height:1.7}.t2-aic-info-mono{font-family:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,monospace;font-size:11.5px;font-weight:600;color:var(--t2-aic-accent-text);background:var(--t2-aic-accent-surface);padding:1px 5px;border-radius:4px}.t2-aic-info-footer{display:flex;align-items:flex-start;gap:10px;margin-top:24px;padding:12px 14px;background:var(--t2-aic-surface-subtle);border-radius:var(--t2-aic-radius-md)}.t2-aic-info-footer-tag{flex-shrink:0;font-size:9.5px;font-weight:700;letter-spacing:0.08em;color:var(--t2-aic-text-faint);background:var(--t2-aic-surface);border:1px solid var(--t2-aic-border);border-radius:5px;padding:2px 6px;margin-top:1px}.t2-aic-info-footer p{margin:0;font-size:11.5px;color:var(--t2-aic-text-faint);line-height:1.6}/* ── 요소 선택 모드 — 모달을 잠깐 숨기고 안내 바만 노출 ─────────────────── *//* 요소 선택(포커스 픽) 모드:enterPickMode()가 this.modal(= .t2-aic-overlay 전체 — 배경 딤 + 모달 박스를 함께 감싸는 element)에 이 클래스를 붙인다. 풀스크린 오버레이 자체를 숨겨야 뒤에 있는 에디터 콘텐츠 클릭이 통과된다 (.t2-aic-modal만 숨기면 부모인 .t2-aic-overlay가 fixed inset:0 상태로 그대로 남아 클릭을 계속 가로챈다 — 실제 버그였던 지점). */.t2-aic-overlay.t2-aic-hidden-while-picking{display:none}.t2-aic-pick-bar{position:fixed;top:16px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:8px;background:var(--t2-aic-surface);color:var(--t2-aic-text);border:1px solid var(--t2-aic-accent-border);box-shadow:var(--t2-aic-modal-shadow);border-radius:999px;padding:8px 10px 8px 14px;font-size:12.5px;z-index:10005;animation:t2AicSlideUp 0.18s ease-out}.t2-aic-pick-bar .material-icons{font-size:16px;color:var(--t2-aic-accent)}.t2-aic-pick-bar-text{white-space:nowrap}.t2-aic-pick-bar .t2-aic-pick-clear{border:none;background:none;color:var(--t2-aic-text-soft);padding:4px 6px;font-size:11.5px;text-decoration:underline;cursor:pointer;white-space:nowrap}.t2-aic-pick-bar .t2-aic-pick-clear:hover{color:var(--t2-aic-text)}.t2-aic-pick-bar .t2-aic-pick-cancel{border:1px solid var(--t2-aic-border-strong);background:var(--t2-aic-surface-subtle);color:var(--t2-aic-text-soft);border-radius:999px;padding:4px 10px;font-size:11.5px;cursor:pointer;white-space:nowrap}/* ── Chat 탭 (v3.5.0) — 위지윅 에디터계의 "에이전트"처럼,문서를 직접 고치지 않고도 AI와 짧게 티키타카하며 Tool 상태/사용법/편집 조언을 받을 수 있는 채팅창. 본문은 두 개의 독립된 컨테이너로 분리된다:┌─────────────────────────────────────┐ │ 상단 메뉴바 (tabs) │ ← 모달 직접 자식(body 바깥) ├─────────────────────────────────────┤ │ 채팅 메시지 (.t2-aic-chat-messages) │ ← 컨테이너 A:메시지 스크롤 │ (빈 힌트도 이 안) │ flex:1 1 0,overflow:auto ├─────────────────────────────────────┤ │ Tool list + 채팅 입력란 │ ← 컨테이너 B:하단 고정 │ (.t2-aic-chat-bottom) │ flex:0 0 auto └─────────────────────────────────────┘ A는 남는 공간을 모두 차지해 스크롤되고,B는 항상 같은 높이로 하단에 고정된다 — 입력창과 전송 버튼이 대화가 얼마나 길어지든 항상 보인다. */.t2-aic-chat-messages-wrap{display:flex;flex-direction:column;flex:1 1 0;min-height:0;overflow:hidden;position:relative;padding:0 16px}.t2-aic-chat-messages{flex:1 1 0;min-height:0;overflow-y:auto;overflow-x:hidden;display:flex;flex-direction:column;gap:10px;padding:4px 4px 8px;scroll-behavior:smooth}/* 빈 힌트 — 대화 기록이 없을 때만 보이는 안내. 일반 흐름(flex 자식)으로 배치되어 tabs와 겹치지 않는다. 메시지가 생기면 JS가 숨긴다. */.t2-aic-chat-empty-hint{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:var(--t2-aic-text-faint);pointer-events:none;text-align:center;padding:28px 20px;margin:auto 0}.t2-aic-chat-empty-hint .material-icons{font-size:36px;opacity:0.55}.t2-aic-chat-empty-hint p{margin:0;font-size:12.5px;line-height:1.6;max-width:360px}/* 하단 입력 영역 — Tool list + 채팅 입력란을 하나로 묶는다. 절대 줄어들지 않게(flex:0 0 auto) 고정. 상단 보더로 메시지 영역과 분리. */.t2-aic-chat-bottom{flex:0 0 auto;display:flex;flex-direction:column;gap:8px;padding:10px 16px 12px;border-top:1px solid var(--t2-aic-border);background:var(--t2-aic-surface)}/* 개별 메시지 — 사용자/AI 공통. 아바타 + 이름 + 말풍선. */.t2-aic-chat-msg{display:flex;gap:8px;max-width:100%;animation:t2AicSlideUp 0.18s ease-out}.t2-aic-chat-msg.is-user{flex-direction:row-reverse}.t2-aic-chat-msg.is-user .t2-aic-chat-msg-name{text-align:right}.t2-aic-chat-msg-avatar{flex-shrink:0;width:28px;height:28px;border-radius:50%;background:var(--t2-aic-accent-surface);color:var(--t2-aic-accent-text);display:flex;align-items:center;justify-content:center}.t2-aic-chat-msg.is-user .t2-aic-chat-msg-avatar{background:var(--t2-aic-surface-muted);color:var(--t2-aic-text-soft)}.t2-aic-chat-msg-avatar .material-icons{font-size:16px}.t2-aic-chat-msg-body{min-width:0;max-width:calc(100% - 40px);display:flex;flex-direction:column;gap:3px}.t2-aic-chat-msg-name{font-size:10.5px;color:var(--t2-aic-text-faint);font-weight:600;padding:0 4px}.t2-aic-chat-bubble{padding:9px 12px;border-radius:12px;font-size:13px;line-height:1.55;word-break:break-word;background:var(--t2-aic-surface-subtle);color:var(--t2-aic-text);border:1px solid var(--t2-aic-border)}.t2-aic-chat-msg.is-user .t2-aic-chat-bubble{background:var(--t2-aic-accent-surface);color:var(--t2-aic-accent-text);border-color:var(--t2-aic-accent-border)}.t2-aic-chat-msg.is-assistant .t2-aic-chat-bubble{background:var(--t2-aic-surface);color:var(--t2-aic-text)}/* 말풍선 내부 경량 마크다운 요소 */.t2-aic-chat-bubble p{margin:0 0 6px}.t2-aic-chat-bubble p:last-child{margin-bottom:0}.t2-aic-chat-bubble b,.t2-aic-chat-bubble strong{font-weight:700}.t2-aic-chat-bubble i,.t2-aic-chat-bubble em{font-style:italic}.t2-aic-chat-bubble s{text-decoration:line-through}.t2-aic-chat-bubble code{background:var(--t2-aic-surface-muted);padding:1px 5px;border-radius:4px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}.t2-aic-chat-bubble a{color:var(--t2-aic-accent-text);text-decoration:underline;word-break:break-all}.t2-aic-chat-bubble ul,.t2-aic-chat-bubble ol{margin:4px 0 6px;padding-left:20px}.t2-aic-chat-bubble li{margin:2px 0}.t2-aic-chat-bubble pre.t2-aic-chat-codeblock{background:var(--t2-aic-surface-muted);border:1px solid var(--t2-aic-border);border-radius:8px;padding:8px 10px;margin:6px 0;overflow-x:auto;font-size:11.5px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;line-height:1.5}.t2-aic-chat-bubble pre.t2-aic-chat-codeblock code{background:none;padding:0;color:inherit;font-size:inherit}/* 로딩(타이핑 인디케이터) — 세 개의 점이 순차적으로 깜빡임 */.t2-aic-chat-msg.is-loading .t2-aic-chat-bubble{display:inline-flex;align-items:center;padding:12px 14px}.t2-aic-chat-typing{display:inline-flex;gap:4px;align-items:center}.t2-aic-chat-typing span{width:6px;height:6px;border-radius:50%;background:var(--t2-aic-text-faint);animation:t2AicShimmer 1.2s ease-in-out infinite}.t2-aic-chat-typing span:nth-child(2){animation-delay:0.15s}.t2-aic-chat-typing span:nth-child(3){animation-delay:0.30s}/* 도구 실행 중 라운드 표시 — 스피너 + 라운드 카운트 */.t2-aic-chat-tool-round{display:inline-flex;align-items:center;gap:8px;font-size:12px;color:var(--t2-aic-text-muted)}.t2-aic-chat-tool-round .t2-aic-spinner{width:14px;height:14px;border-width:2px}/* 에러 말풍선 */.t2-aic-chat-msg.is-error .t2-aic-chat-bubble{background:var(--t2-aic-danger-surface);border-color:var(--t2-aic-danger-border);color:var(--t2-aic-danger)}.t2-aic-chat-error{display:inline-flex;align-items:center;gap:6px}.t2-aic-chat-error .material-icons{font-size:16px;flex-shrink:0}/* 편집 제안 카드 — 채팅 응답 중 "이 부분 문서에 반영해도 될까요?" 제안이 실렸을 때 말풍선 안에 함께 표시된다. 버튼을 눌러야만 T2LLM.apply()가 호출된다 — 채팅 자체만으로는 문서가 절대 자동으로 바뀌지 않는다. */.t2-aic-chat-edit-card{margin-top:8px;padding-top:8px;border-top:1px dashed var(--t2-aic-border-strong);display:flex;flex-direction:column;gap:6px}.t2-aic-chat-edit-head{display:flex;align-items:center;gap:5px;font-size:11.5px;font-weight:700;color:var(--t2-aic-accent-text)}.t2-aic-chat-edit-head .material-icons{font-size:14px}.t2-aic-chat-edit-card .t2-aic-btn{align-self:flex-start;padding:6px 12px;font-size:12.5px}.t2-aic-chat-model{margin-top:6px;font-size:10.5px;color:var(--t2-aic-text-faint)}/* 입력 컴포저 — textarea + 전송 버튼 한 줄 + 그 아래 글자수/퀵버튼 */.t2-aic-chat-composer{flex:0 0 auto;display:flex;flex-direction:column;gap:6px}.t2-aic-chat-composer-row{display:flex;gap:8px;align-items:stretch}.t2-aic-chat-input{flex:1 1 auto;min-height:56px;max-height:140px;resize:none;border:1px solid var(--t2-aic-border-strong);border-radius:var(--t2-aic-radius-sm);padding:10px 12px;font-size:13.5px;font-family:inherit;color:var(--t2-aic-text);background:var(--t2-aic-surface);box-sizing:border-box}.t2-aic-chat-input:focus{outline:none;border-color:var(--t2-aic-accent)}.t2-aic-chat-send{flex:0 0 auto;align-self:stretch;padding:0 16px}.t2-aic-chat-composer-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}.t2-aic-chat-char-count{position:static;font-size:11px;color:var(--t2-aic-text-faint)}.t2-aic-chat-quick{display:flex;gap:6px;flex-wrap:wrap}.t2-aic-chat-quick-btn{border:1px solid var(--t2-aic-accent-border);background:var(--t2-aic-accent-surface);color:var(--t2-aic-accent-text);border-radius:999px;padding:4px 10px;font-size:11px;cursor:pointer;transition:transform 0.1s}.t2-aic-chat-quick-btn:hover{transform:translateY(-1px)}/* 채팅 모드에서 Tool 섹션을 조금 더 컴팩트하게 — 절대 줄어들지 않게 */.t2-aic-tools-section-compact{gap:6px;flex:0 0 auto}.t2-aic-tools-section-compact .t2-aic-tools-title{font-size:11px}/* ── Tool 목록 접기/펼치기 (채팅 모드) ──────────────────────────────────── 노출된 Tool 알약 행이 여러 개면 가로로 길게 늘어져 입력창 위 공간을 많이 차지한다. toprow를 클릭하면 알약 행 전체를 접었다/펼쳤다 할 수 있다(팝업 버튼 영역은 클릭 전파를 막아 제외). */.t2-aic-tools-section-compact .t2-aic-tools-toprow{cursor:pointer;user-select:none;padding:2px 0;border-radius:4px;transition:background 0.12s ease}.t2-aic-tools-section-compact .t2-aic-tools-toprow:hover{background:var(--t2-aic-surface-subtle)}.t2-aic-tools-toprow-actions{display:flex;align-items:center;gap:4px}.t2-aic-tools-collapse-btn{display:flex;align-items:center;justify-content:center;width:22px;height:22px;border:none;background:transparent;color:var(--t2-aic-text-muted);border-radius:999px;cursor:pointer;transition:background 0.12s ease,color 0.12s ease}.t2-aic-tools-collapse-btn:hover{background:var(--t2-aic-surface-muted);color:var(--t2-aic-text)}.t2-aic-tools-collapse-btn .material-icons{font-size:18px;transition:transform 0.18s ease}.t2-aic-tools-section-compact.is-collapsed .t2-aic-tools-collapse-btn .material-icons{transform:rotate(0deg)}.t2-aic-tools-section-compact:not(.is-collapsed) .t2-aic-tools-collapse-btn .material-icons{transform:rotate(180deg)}.t2-aic-tools-pills-wrap{overflow:hidden;max-height:240px;transition:max-height 0.22s ease,opacity 0.18s ease,margin-top 0.22s ease;opacity:1;margin-top:6px}.t2-aic-tools-section-compact:not(.is-collapsed) .t2-aic-tools-pills-wrap{overflow-y:auto;overflow-x:hidden}.t2-aic-tools-section-compact.is-collapsed .t2-aic-tools-pills-wrap{max-height:0;opacity:0;margin-top:0}.t2-aic-tools-section-compact.is-collapsed{gap:0}/* 채팅 모드 푸터의 "새 대화" 버튼은 우측이 아니라 좌측에 두는 게 자연스럽다. */.t2-aic-footer:has(.t2-aic-chat-clear){justify-content:flex-start}/* ── Small screens ────────────────────────────────────────────────────── */@media (max-width:560px){.t2-aic-modal{width:100%;max-height:100dvh;border-radius:0}.t2-aic-diff-head,.t2-aic-diff-row{grid-template-columns:26px 1fr 26px 1fr;font-size:11.5px}.t2-aic-pick-bar{left:12px;right:12px;transform:none;width:auto;max-width:none;flex-wrap:wrap}.t2-aic-pick-bar-text{white-space:normal;flex:1 1 100%}.t2-aic-chat-msg-body{max-width:calc(100% - 36px)}.t2-aic-chat-send span:last-child{display:none}.t2-aic-chat-send{padding:0 12px}.t2-aic-chat-quick-btn{font-size:10.5px;padding:3px 8px}.t2-aic-modal.is-chat-mode{height:100dvh;min-height:100dvh;max-width:100%}}