:root{--bg:#f6f5f2;--surface:#fff;--surface-2:#f1efe9;--text:#1f1d1a;--muted:#6b665e;--border:#e2ded6;--accent:#3b5bdb;--accent-soft:#e8edfb;--ghost:#9a958c;--ins-bg:#dcf5e3;--ins-fg:#14532d;--del-bg:#fde2e2;--del-fg:#7f1d1d;--mark:#fff0a8;--warn:#b45309;--radius:10px;--font-ui:-apple-system, BlinkMacSystemFont, "Segoe UI", Inter, Roboto, sans-serif;--font-doc:Georgia, "Iowan Old Style", "Times New Roman", serif}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--text);font-family:var(--font-ui);margin:0;padding:0;font-size:15px;line-height:1.5}button{font:inherit;cursor:pointer}input,textarea{font:inherit;color:inherit}.app{max-width:1180px;margin:0 auto;padding:24px 20px 60px}.header{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:16px;margin-bottom:14px;display:flex}.header h1{letter-spacing:-.01em;margin:0;font-size:22px}.header p{color:var(--muted);margin:2px 0 0;font-size:14px}.badge{border:1px solid var(--border);background:var(--surface);color:var(--muted);white-space:nowrap;border-radius:999px;align-items:center;gap:6px;padding:4px 10px;font-size:12px;font-weight:600;display:inline-flex}.badge .dot{background:#c7c2b8;border-radius:50%;width:8px;height:8px}.badge.live .dot{background:#16a34a}.tabs{border-bottom:1px solid var(--border);scrollbar-width:thin;gap:4px;margin-bottom:18px;padding-bottom:6px;display:flex;overflow-x:auto}.tab{color:var(--muted);background:0 0;border:1px solid #0000;border-radius:8px;flex:none;padding:7px 12px;font-size:14px;font-weight:500}.tab:hover{background:var(--surface-2);color:var(--text)}.tab.active{background:var(--surface);color:var(--text);border-color:var(--border);box-shadow:0 1px 2px #0000000a}.tab .num{color:var(--ghost);font-variant-numeric:tabular-nums;margin-right:6px;font-size:12px}.pattern-info{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:16px;padding:14px 18px}.pattern-info summary{cursor:pointer;align-items:center;gap:10px;font-size:16px;font-weight:600;list-style:none;display:flex}.pattern-info summary::-webkit-details-marker{display:none}.pattern-info summary .chev{color:var(--muted);font-size:12px;transition:transform .15s}.pattern-info[open] summary .chev{transform:rotate(90deg)}.pattern-info .tagline{color:var(--muted);font-size:14px;font-weight:400}.pattern-info .grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;margin-top:12px;font-size:14px;display:grid}.pattern-info h4{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:0 0 4px;font-size:12px}.pattern-info ul{margin:0;padding-left:18px}.pattern-info li{margin:2px 0}.pattern-info .try{background:var(--accent-soft);border-radius:8px;margin-top:12px;padding:10px 12px;font-size:14px}.workspace{grid-template-columns:minmax(0,1fr) 320px;align-items:start;gap:16px;display:grid}.workspace.single{grid-template-columns:minmax(0,1fr)}@media (max-width:860px){.workspace{grid-template-columns:minmax(0,1fr)}}.paper{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);min-height:420px;font-family:var(--font-doc);padding:28px 32px;font-size:17px;line-height:1.65;position:relative}.paper:focus-within{border-color:#c9c3b6;box-shadow:0 0 0 3px #3b5bdb14}.editor{white-space:pre-wrap;word-wrap:break-word;outline:none;min-height:360px}.editor:empty:before{content:attr(data-placeholder);color:var(--ghost)}.paper p{margin:0 0 1em}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px;font-size:14px}.panel h3{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:0 0 8px;font-size:13px}.panel .hint{color:var(--muted);font-size:13px}.toolbar{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px;display:flex}.btn{border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:8px;padding:6px 12px;font-size:13px;font-weight:500}.btn:hover:not(:disabled){background:var(--surface-2)}.btn:disabled{opacity:.5;cursor:default}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover:not(:disabled){background:#3352c9}.btn.small{padding:3px 8px;font-size:12px}.btn.ghost{color:var(--muted);background:0 0;border-color:#0000}.btn.ghost:hover:not(:disabled){background:var(--surface-2);color:var(--text)}.spacer{flex:1}.status{color:var(--muted);font-size:13px}.error{color:#b91c1c;font-size:13px}.kbd{background:var(--surface-2);border:1px solid var(--border);border-bottom-width:2px;border-radius:5px;padding:1px 6px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}.editor span.ghost{-webkit-user-select:none;user-select:none}.editor span.ghost:before{content:attr(data-text);color:var(--ghost)}.ghost-tip{font-family:var(--font-ui);color:var(--muted);background:var(--surface-2);border-radius:6px;padding:3px 8px;font-size:12px;position:absolute;bottom:12px;right:16px}.bubble{z-index:20;color:#fff;font-family:var(--font-ui);background:#1f1d1a;border-radius:10px;flex-wrap:wrap;align-items:center;gap:4px;max-width:520px;padding:6px;font-size:13px;display:flex;position:absolute;box-shadow:0 8px 24px #0000002e}.bubble:after{content:"";background:#1f1d1a;width:12px;height:12px;position:absolute;bottom:-6px;left:18px;transform:rotate(45deg)}.bubble.below:after{top:-6px;bottom:auto}.bubble button{color:#fff;background:0 0;border:0;border-radius:6px;padding:5px 9px;font-size:13px}.bubble button:hover:not(:disabled){background:#ffffff1f}.bubble button:disabled{opacity:.5}.bubble .sep{background:#fff3;width:1px;height:18px;margin:0 2px}.bubble input{color:#fff;background:#ffffff1a;border:1px solid #ffffff26;border-radius:6px;min-width:200px;padding:5px 8px}.bubble input::placeholder{color:#ffffff80}.caret-prompt{z-index:20;background:var(--surface);border:1px solid var(--border);width:min(480px,90%);font-family:var(--font-ui);border-radius:10px;padding:8px;font-size:14px;position:absolute;box-shadow:0 10px 30px #0000001f}.caret-prompt form{gap:6px;display:flex}.caret-prompt input{border:1px solid var(--border);border-radius:6px;flex:1;padding:6px 8px}.caret-prompt .chips{flex-wrap:wrap;gap:6px;margin-top:6px;display:flex}.caret-prompt .chips button{border:1px solid var(--border);background:var(--surface-2);border-radius:999px;padding:2px 8px;font-size:12px}.diff{white-space:pre-wrap}.diff del{background:var(--del-bg);color:var(--del-fg);border-radius:3px;-webkit-text-decoration:line-through #7f1d1d80;text-decoration:line-through #7f1d1d80}.diff ins{background:var(--ins-bg);color:var(--ins-fg);border-radius:3px;text-decoration:none}.diff .hunk{position:relative}.diff .hunk-actions{vertical-align:middle;font-family:var(--font-ui);gap:2px;margin:0 2px;display:inline-flex}.diff .hunk-actions button{border:1px solid var(--border);background:var(--surface);border-radius:5px;width:20px;height:20px;padding:0;font-size:11px;line-height:1}.diff .hunk-actions button.ok:hover{background:var(--ins-bg)}.diff .hunk-actions button.no:hover{background:var(--del-bg)}.diff-list{flex-direction:column;gap:8px;display:flex}.diff-item{border:1px solid var(--border);border-radius:8px;padding:8px 10px;font-size:13px}.diff-item.done{opacity:.55}.diff-item .row{gap:6px;margin-top:6px;display:flex}.doc-view{white-space:pre-wrap}mark.anchor{background:var(--mark);border-radius:3px;padding:0 1px;transition:background .15s}mark.anchor.hot{background:#ffd866}.comment-list{flex-direction:column;gap:8px;display:flex}.comment{border:1px solid var(--border);background:var(--surface);border-radius:8px;padding:10px 12px;font-size:13px;transition:border-color .15s,transform .15s}.comment.hot{border-color:#e2b93b;transform:translate(-4px)}.comment .who{color:var(--muted);align-items:center;gap:6px;margin-bottom:4px;font-size:12px;display:flex}.comment .avatar{background:var(--accent);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:18px;height:18px;font-size:10px;font-weight:700;display:inline-flex}.comment .quote{color:var(--muted);border-left:2px solid var(--border);margin-bottom:4px;padding-left:6px;font-size:12px;font-style:italic}.comment .actions{gap:6px;margin-top:8px;display:flex}.comment textarea{border:1px solid var(--border);resize:vertical;border-radius:6px;width:100%;min-height:48px;margin-top:6px;padding:6px;font-size:13px}.chat{flex-direction:column;height:520px;display:flex}.chat .log{flex-direction:column;flex:1;gap:10px;padding-right:4px;display:flex;overflow-y:auto}.msg{white-space:pre-wrap;border-radius:12px;max-width:92%;padding:8px 11px;font-size:14px}.msg.user{background:var(--accent);color:#fff;border-bottom-right-radius:4px;align-self:flex-end}.msg.assistant{background:var(--surface-2);border-bottom-left-radius:4px;align-self:flex-start}.proposal{border:1px solid var(--border);border-left:3px solid var(--accent);background:var(--surface);white-space:pre-wrap;max-height:160px;font-size:13px;font-family:var(--font-doc);border-radius:8px;padding:8px 10px;overflow:auto}.proposal-actions{gap:6px;margin-top:6px;display:flex}.chat form{gap:6px;margin-top:10px;display:flex}.chat input{border:1px solid var(--border);border-radius:8px;flex:1;padding:8px 10px}.chat .suggest{flex-wrap:wrap;gap:6px;margin-top:8px;display:flex}.chat .suggest button{border:1px solid var(--border);background:var(--surface);color:var(--muted);border-radius:999px;padding:3px 9px;font-size:12px}.cards{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;margin-top:14px;display:grid}.card{border:1px solid var(--border);background:var(--surface);border-radius:10px;flex-direction:column;gap:8px;padding:12px 14px;display:flex}.card .label{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-size:11px}.card .body{font-family:var(--font-doc);white-space:pre-wrap;flex:1;font-size:15px;line-height:1.5}.card:hover{border-color:var(--accent)}.slider-row{margin:12px 0}.slider-row label{color:var(--muted);justify-content:space-between;margin-bottom:4px;font-size:13px;display:flex}.slider-row input[type=range]{width:100%;accent-color:var(--accent)}.slider-row .ticks{color:var(--ghost);justify-content:space-between;font-size:11px;display:flex}.preview{border:1px dashed var(--border);font-family:var(--font-doc);white-space:pre-wrap;background:var(--surface-2);border-radius:8px;min-height:80px;max-height:260px;margin-top:10px;padding:10px;font-size:15px;line-height:1.5;overflow:auto}.lint-text{white-space:pre-wrap}.lint-text .issue{cursor:pointer;text-decoration-skip-ink:none;text-underline-offset:3px;border-radius:2px;-webkit-text-decoration:underline wavy;text-decoration:underline wavy}.issue.Spelling{text-decoration-color:#dc2626}.issue.Style{text-decoration-color:#7c3aed}.issue.Clarity{text-decoration-color:#2563eb}.issue.Formatting{text-decoration-color:#ca8a04}.issue.selected{background:var(--mark)}.lint-card{border:1px solid var(--border);border-radius:8px;padding:10px 12px;font-size:13px}.lint-card .cat{text-transform:uppercase;letter-spacing:.06em;font-size:11px;font-weight:700}.cat.Spelling{color:#dc2626}.cat.Style{color:#7c3aed}.cat.Clarity{color:#2563eb}.cat.Formatting{color:#ca8a04}.lint-card .fix{font-family:var(--font-doc)}.lint-card .actions{gap:6px;margin-top:8px;display:flex}.score{align-items:baseline;gap:8px;margin-bottom:8px;display:flex}.score b{font-size:28px}.legend{color:var(--muted);flex-wrap:wrap;gap:8px 12px;margin-top:10px;font-size:12px;display:flex}.legend span:before{content:"";vertical-align:middle;border-radius:2px;width:10px;height:3px;margin-right:5px;display:inline-block}.legend .Spelling:before{background:#dc2626}.legend .Style:before{background:#7c3aed}.legend .Clarity:before{background:#2563eb}.legend .Formatting:before{background:#ca8a04}.plain-textarea{resize:vertical;width:100%;min-height:360px;font-family:var(--font-doc);background:0 0;border:0;outline:none;font-size:17px;line-height:1.65}.footer{color:var(--muted);flex-wrap:wrap;align-items:center;gap:14px;margin-top:28px;font-size:13px;display:flex}.footer a{color:var(--accent)}.bubble.above{transform:translateY(-100%)}.bubble.above:after{top:auto;bottom:-6px}.editor .pending{background:var(--accent-soft);box-shadow:0 0 0 2px var(--accent-soft);border-radius:3px;animation:1.2s ease-in-out infinite pulse}.editor .locked{background:var(--accent-soft);box-shadow:0 0 0 2px var(--accent-soft);border-radius:3px}.editor .just-changed{background:var(--ins-bg);border-radius:3px;animation:1.4s ease-out forwards fade-out}@keyframes pulse{0%,to{background:var(--accent-soft)}50%{background:#d5ddf8}}@keyframes fade-out{0%{background:var(--ins-bg)}to{background:0 0}}.bubble .working{align-items:center;gap:8px;padding:4px 8px;display:inline-flex}.bubble .spinner{border:2px solid #ffffff4d;border-top-color:#fff;border-radius:50%;width:12px;height:12px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.ghost-tip button{font:inherit;background:var(--accent);color:#fff;border:0;border-radius:5px;margin-left:6px;padding:2px 8px}
