:root{
  --bg:#f5f7f6;--card:#fff;--text:#1d2a26;--muted:#6b7b75;--line:#e3e9e6;--brand:#15a46a;--brand-d:#0f8556;
  --grammar:#e5484d;--spelling:#f76b15;--punctuation:#8e4ec6;--capitalization:#0091ff;--clarity:#30a46c;--style:#d6409f;
  --shadow:0 1px 2px rgba(20,40,30,.06),0 8px 24px rgba(20,40,30,.06);
  --font:17px/1.7 "Inter",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
}
[data-theme=dark]{--bg:#0f1513;--card:#17201c;--text:#e6eeea;--muted:#8fa19a;--line:#26332d;--shadow:0 1px 2px #0006,0 8px 24px #0005}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
button,input,textarea{font:inherit;color:inherit}
kbd{font:600 11px ui-monospace,monospace;padding:1px 5px;border:1px solid var(--line);border-bottom-width:2px;border-radius:5px;background:var(--bg)}
.top{display:flex;justify-content:space-between;align-items:center;padding:12px 24px;background:var(--card);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:5}
.brand{display:flex;align-items:center;gap:10px;font-size:18px}
.logo{display:grid;place-items:center;width:30px;height:30px;border-radius:9px;background:var(--brand);color:#fff;font-weight:800}
.tag{font-size:12px;color:var(--muted);margin-left:6px;padding:2px 8px;border:1px solid var(--line);border-radius:99px}
.actions{display:flex;gap:6px;align-items:center}
button,.btn{cursor:pointer}
.ghost{background:transparent;border:1px solid var(--line);border-radius:9px;padding:7px 12px;font-size:14px;transition:.15s}
.ghost:hover{background:var(--bg)}
.icon{width:36px;padding:7px 0}
.primary{background:var(--brand);border:0;color:#fff;border-radius:9px;padding:8px 14px;font-weight:600;font-size:14px}
.primary:hover:not(:disabled){background:var(--brand-d)}
.primary:disabled{opacity:.45;cursor:default}
.primary kbd{background:#ffffff26;border-color:#ffffff40;color:#fff;margin-left:4px}
.layout{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:20px;max-width:1280px;margin:20px auto;padding:0 20px}
.editor-card,.card{background:var(--card);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow)}
.editor-card{display:flex;flex-direction:column;min-height:calc(100vh - 120px)}
.editor-wrap{position:relative;flex:1;min-height:420px}
.layer{position:absolute;inset:0;width:100%;height:100%;margin:0;padding:26px 30px;font:var(--font);letter-spacing:0;white-space:pre-wrap;word-wrap:break-word;overflow-wrap:break-word;border:0;overflow:auto;tab-size:4}
#backdrop{color:transparent;pointer-events:none;overflow:hidden}
#editor{background:transparent;resize:none;outline:none;color:var(--text);caret-color:var(--brand)}
#editor::placeholder{color:var(--muted)}
mark{color:transparent;background:transparent;border-radius:3px;padding:0;border-bottom:2.5px solid var(--c,var(--grammar));background:color-mix(in srgb,var(--c,var(--grammar)) 9%,transparent)}
mark.grammar{--c:var(--grammar)}mark.spelling{--c:var(--spelling)}mark.punctuation{--c:var(--punctuation)}mark.capitalization{--c:var(--capitalization)}mark.clarity{--c:var(--clarity)}mark.style{--c:var(--style)}
mark.active{background:color-mix(in srgb,var(--c) 22%,transparent)}
.editor-foot{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 18px;border-top:1px solid var(--line);flex-wrap:wrap}
.foot-actions{display:flex;gap:8px}
.status{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--muted)}
.dot{width:8px;height:8px;border-radius:50%;background:var(--brand)}
.status.busy .dot{background:#f5a623;animation:pulse 1s infinite}
.status.err .dot{background:var(--grammar)}
@keyframes pulse{50%{opacity:.3}}
.side{display:flex;flex-direction:column;gap:16px}
.card{padding:18px}
.card h3{margin:0 0 12px;font-size:13px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.score{display:flex;align-items:center;gap:16px}
.ring-bg{fill:none;stroke:var(--line);stroke-width:10}
.ring{fill:none;stroke:var(--brand);stroke-width:10;stroke-linecap:round;stroke-dasharray:326.7;stroke-dashoffset:0;transition:stroke-dashoffset .5s,stroke .3s}
#scoreNum{font:700 34px system-ui;fill:var(--text)}
.big{font-size:19px;font-weight:700}
.muted{color:var(--muted)}.small{font-size:13px}
.chips{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px}
.chip{font-size:12px;padding:3px 9px;border-radius:99px;border:1px solid var(--line);display:flex;align-items:center;gap:6px;cursor:pointer;background:transparent}
.chip i{width:8px;height:8px;border-radius:50%;background:var(--c)}
.chip.off{opacity:.4}
.list{list-style:none;margin:0;padding:0;max-height:340px;overflow:auto;display:flex;flex-direction:column;gap:6px}
.list li{padding:10px 12px;border:1px solid var(--line);border-left:4px solid var(--c);border-radius:10px;cursor:pointer;font-size:14px;transition:.12s}
.list li:hover{background:var(--bg)}
.list li.empty{border:0;color:var(--muted);cursor:default;padding:4px}
.list li.empty:hover{background:none}
.list .cat{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--c);font-weight:700}
.list .diff{margin-top:2px}
del{color:var(--grammar);text-decoration-thickness:2px}
ins{color:var(--brand);text-decoration:none;font-weight:600}
.stats{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:0}
.stats dt{font-size:12px;color:var(--muted)}.stats dd{margin:2px 0 0;font-size:18px;font-weight:700}
.tips{line-height:1.7}
.popover{position:absolute;z-index:10;width:300px;background:var(--card);border:1px solid var(--line);border-radius:14px;box-shadow:0 12px 40px rgba(0,0,0,.22);padding:14px;animation:pop .12s ease-out}
@keyframes pop{from{opacity:0;transform:translateY(4px)}}
.popover .cat{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--c);font-weight:700;margin-bottom:6px}
.popover .fix{font-size:16px;margin-bottom:10px}
.popover .row{display:flex;gap:8px}
.popover .row button{flex:1}
@media(max-width:900px){.layout{grid-template-columns:1fr}.tag{display:none}.top{padding:10px 14px}.editor-card{min-height:70vh}}

.ext-btn{border-color:var(--brand);color:var(--brand);font-weight:600}
.banner{display:flex;justify-content:space-between;align-items:center;gap:16px;max-width:1280px;margin:16px auto 0;padding:12px 18px;border:1px solid color-mix(in srgb,var(--brand) 40%,var(--line));background:color-mix(in srgb,var(--brand) 8%,var(--card));border-radius:14px}
.banner[hidden],.modal[hidden],.ext-btn[hidden]{display:none}
.banner-text{display:flex;flex-direction:column;gap:2px;font-size:14px}
.banner-text span{color:var(--muted);font-size:13px}
.banner-actions{display:flex;gap:8px;align-items:center;flex:none}
.btn-link{display:inline-block;text-decoration:none}
.modal{position:fixed;inset:0;z-index:50;background:rgba(0,0,0,.5);display:grid;place-items:center;padding:16px}
.modal-card{position:relative;background:var(--card);border:1px solid var(--line);border-radius:18px;padding:26px;max-width:520px;width:100%;box-shadow:0 20px 60px rgba(0,0,0,.35)}
.modal-card h2{margin:0 0 6px;font-size:20px}
.modal-x{position:absolute;top:12px;right:12px}
.steps{padding-left:20px;display:flex;flex-direction:column;gap:12px;line-height:1.5}
.steps code,.modal code{background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:1px 6px;font-size:13px}
.linkish{background:none;border:0;padding:0;cursor:pointer}
@media(max-width:700px){.banner{margin:12px 12px 0;flex-direction:column;align-items:flex-start}}
