:root{--bg: #f7f7f5;--surface: #ffffff;--text: #1c1d1f;--muted: #6b6e75;--line: #e4e4e0;--accent: #2f6fed;--accent-text: #ffffff;--accent-soft: #e8efff;--ok: #1f8a4c;--bad: #c2372b;--warn-bg: #fff6e0;--warn-text: #7a5400;--img: #0f9d8a;--pdf: #d9482b;--radius: 12px;color-scheme:light}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg: #141517;--surface: #1d1f22;--text: #ececec;--muted: #9a9ea6;--line: #2e3136;--accent: #6b9bff;--accent-text: #0d1220;--accent-soft: #1f2a44;--ok: #4cc27f;--bad: #ff7a6b;--warn-bg: #3a2f12;--warn-text: #f1d48a;--img: #3fd1bc;--pdf: #ff8466;color-scheme:dark}}:root[data-theme=dark]{--bg: #141517;--surface: #1d1f22;--text: #ececec;--muted: #9a9ea6;--line: #2e3136;--accent: #6b9bff;--accent-text: #0d1220;--accent-soft: #1f2a44;--ok: #4cc27f;--bad: #ff7a6b;--warn-bg: #3a2f12;--warn-text: #f1d48a;--img: #3fd1bc;--pdf: #ff8466;color-scheme:dark}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:16px/1.55 system-ui,-apple-system,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif}a{color:inherit}main,.top,footer{max-width:960px;margin:0 auto;padding:0 16px}.top{display:flex;justify-content:space-between;align-items:center;height:60px}.logo{display:flex;gap:8px;align-items:center;font-weight:700;text-decoration:none;font-size:18px}.mark{width:22px;height:22px;border-radius:6px;background:linear-gradient(135deg,var(--img),var(--accent) 55%,var(--pdf))}.lang{color:var(--muted);text-decoration:none;font-size:14px;border:1px solid var(--line);padding:4px 10px;border-radius:999px}.lang:hover{color:var(--text)}.hero{padding:28px 0 20px}h1{font-size:clamp(26px,5vw,36px);line-height:1.2;margin:0 0 10px;letter-spacing:-.01em}.lead{color:var(--muted);margin:0 0 14px;max-width:640px}.privacy{display:inline-flex;align-items:center;gap:8px;margin:0;font-size:14px;font-weight:600;color:var(--ok)}.dot{width:8px;height:8px;border-radius:50%;background:var(--ok);box-shadow:0 0 0 4px color-mix(in srgb,var(--ok) 20%,transparent)}.cat h2,.more{font-size:15px;color:var(--muted);font-weight:600;margin:28px 0 12px}.grid{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}.card{display:grid;grid-template-columns:auto 1fr;gap:2px 12px;align-items:center;padding:14px 16px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);text-decoration:none;height:100%;transition:border-color .15s,transform .15s}.card:hover{border-color:var(--accent);transform:translateY(-1px)}.card.current{border-color:var(--accent);background:var(--accent-soft)}.card small{grid-column:2;color:var(--muted);font-size:13px;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.badge{grid-row:span 2;font-size:11px;font-weight:800;letter-spacing:.04em;padding:8px 6px;border-radius:8px;min-width:40px;text-align:center}.badge.image{color:var(--img);background:color-mix(in srgb,var(--img) 14%,transparent)}.badge.pdf{color:var(--pdf);background:color-mix(in srgb,var(--pdf) 14%,transparent)}#app{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px}.drop{border:2px dashed var(--line);border-radius:10px;padding:48px 16px;text-align:center;cursor:pointer;display:flex;flex-direction:column;gap:6px;transition:border-color .15s,background .15s}.drop strong{font-size:18px}.drop small{color:var(--muted)}.drop:hover,.drop:focus-visible,.drop.over{border-color:var(--accent);background:var(--accent-soft);outline:none}.drop.compact{padding:16px}.drop.compact strong{font-size:15px}.work{margin-top:16px;display:grid;gap:14px}.work[hidden]{display:none}.options{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}.options:empty{display:none}.opt{display:grid;gap:6px;font-size:14px}.opt>span{color:var(--muted)}.opt output{color:var(--text);font-weight:600}.opt small{color:var(--muted);font-size:12px}select,input[type=text],input[type=number]{font:inherit;font-size:15px;padding:8px 10px;border-radius:8px;border:1px solid var(--line);background:var(--bg);color:var(--text);width:100%;min-width:0}input[type=range]{width:100%;accent-color:var(--accent)}.warn{margin:0;padding:10px 12px;border-radius:8px;background:var(--warn-bg);color:var(--warn-text);font-size:14px}.queue{list-style:none;margin:0;padding:0;border:1px solid var(--line);border-radius:10px;overflow:hidden}.queue:empty{display:none}.queue li{display:flex;flex-wrap:wrap;align-items:center;gap:4px 12px;padding:10px 12px;border-top:1px solid var(--line);font-size:14px}.queue li:first-child{border-top:0}.queue .name{flex:1 1 180px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}.queue .meta{color:var(--muted);font-variant-numeric:tabular-nums}.queue.done{border-color:color-mix(in srgb,var(--ok) 40%,var(--line))}.state{font-size:13px;color:var(--muted)}.state.ok{color:var(--ok);font-weight:600}.state.bad{color:var(--bad)}.row-btns{display:flex;gap:4px;margin-left:auto}button{font:inherit;font-size:14px;padding:7px 14px;border-radius:8px;cursor:pointer;border:1px solid var(--line);background:var(--surface);color:var(--text)}button:hover:not(:disabled){border-color:var(--accent)}button:disabled{opacity:.45;cursor:default}button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-text);font-weight:600;padding:9px 18px}button.icon{padding:4px 9px;line-height:1}.actions{display:flex;gap:8px;flex-wrap:wrap}.status{margin:0;color:var(--muted);font-size:14px;min-height:1em}.status:empty{display:none}.results{display:grid;gap:10px;justify-items:start}.results:empty{display:none}.results .queue{width:100%}.note{color:var(--muted);font-size:13px;margin:14px 2px 0}.prose{max-width:720px;margin-top:32px}.prose h2{font-size:20px;margin:32px 0 12px}.prose h3{font-size:16px;margin:20px 0 6px}.prose p,.prose li{color:var(--text);margin:0 0 10px}.prose ol{padding-left:22px;margin:0}.prose li::marker{color:var(--muted);font-weight:600}footer{color:var(--muted);font-size:13px;padding:40px 16px 32px}footer nav{margin-bottom:6px}footer a{color:var(--muted)}footer a:hover{color:var(--text)}footer p{margin:0}.hero+.prose{margin-top:0}.hero+.prose h2:first-child{margin-top:8px}
