:root{color-scheme:light dark;--bg: #f7f8f5;--surface: #fff;--ink: #111214;--muted: #555b62;--line: #d4d8db;--accent: #f3a23b;--accent-ink: #111214}@media(prefers-color-scheme:dark){:root{--bg: #0d0e10;--surface: #15171a;--ink: #f4f5ef;--muted: #b5bac0;--line: #383c40}}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:DM Sans,Noto Sans TC,system-ui,sans-serif;line-height:1.55}.page{width:min(100% - 32px,1060px);margin-inline:auto;padding-bottom:48px}.top{display:flex;align-items:baseline;justify-content:space-between;padding:28px 0 8px;border-bottom:1px solid var(--line)}.brand{font-size:24px;font-weight:700;display:flex;align-items:center;gap:10px}.brandlogo{width:40px;height:40px;border-radius:10px;display:block}.sub{color:var(--muted);font-size:14px}.controls{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 0;flex-wrap:wrap}.seg{display:inline-flex;border:1px solid var(--line);border-radius:999px;overflow:hidden}.seg button{border:0;background:transparent;color:var(--ink);padding:8px 16px;cursor:pointer;font-size:14px}.seg button.on{background:var(--accent);color:var(--accent-ink);font-weight:700}.status{font-size:13px;color:var(--muted)}.cfgwrap{display:inline-flex;align-items:center;gap:8px;font-size:13px;color:var(--muted)}.cfgwrap select{font:inherit;font-size:14px;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:7px 12px;max-width:100%}.cfghint{margin:-6px 0 12px}.drop{border:2px dashed var(--line);border-radius:16px;padding:20px;text-align:center;background:var(--surface);margin-bottom:16px}.drop.over{border-color:var(--accent)}.filebtn{color:var(--accent);cursor:pointer;text-decoration:underline}.hint{color:var(--muted);font-size:13px}.filename{font-size:13px;font-weight:600}.grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}@media(max-width:760px){.grid{grid-template-columns:1fr}}.pane{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:12px;display:flex;flex-direction:column}.panehead{display:flex;justify-content:space-between;font-weight:700;margin-bottom:8px}.count{color:var(--muted);font-weight:400;font-size:13px}textarea{width:100%;min-height:280px;resize:vertical;border:1px solid var(--line);border-radius:12px;padding:12px;font-size:15px;background:var(--bg);color:var(--ink);font-family:inherit}.row{display:flex;gap:8px;margin-top:10px}button{font:inherit}.row button{border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:999px;padding:8px 18px;cursor:pointer}.row button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:700}.progress{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:14px 16px;margin-bottom:16px}.progress.done{border-color:var(--accent)}.prow{display:flex;align-items:center;gap:10px;font-size:14px;font-weight:600}.ppct{margin-left:auto;color:var(--muted);font-weight:400;font-size:13px}.spinner{width:18px;height:18px;flex:none;border-radius:50%;border:3px solid var(--line);border-top-color:var(--accent);animation:spin .8s linear infinite}.spinner.done{animation:none;border:0;width:auto;height:auto}.spinner.done:before{content:"✓";color:var(--accent);font-size:18px;font-weight:700}.spinner.error{animation:none;border:0;width:auto;height:auto}.spinner.error:before{content:"✗";color:#d33;font-size:18px;font-weight:700}.spinner.alert{animation:none;border:0;width:auto;height:auto}.spinner.alert:before{content:"⚠";font-size:18px}.progress.alertbox{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,var(--surface))}@keyframes spin{to{transform:rotate(360deg)}}.pbar{height:8px;background:var(--bg);border:1px solid var(--line);border-radius:999px;margin-top:10px;overflow:hidden}.pbar>div{height:100%;width:0%;background:var(--accent);border-radius:999px;transition:width .15s ease}.pbar.indet>div{width:35%;animation:indet 1.1s ease-in-out infinite alternate}@keyframes indet{0%{margin-left:0}to{margin-left:65%}}.outstats{font-size:13px;color:var(--muted);margin-top:8px;min-height:1em}.batch{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:14px 16px;margin-bottom:16px}.batchhead{display:flex;justify-content:space-between;align-items:baseline;font-weight:700;margin-bottom:8px}.batchlist{list-style:none;margin:0;padding:0}.batchlist li{display:flex;align-items:center;gap:10px;padding:7px 0;border-bottom:1px dashed var(--line);font-size:14px;flex-wrap:wrap}.batchlist li:last-child{border-bottom:0}.bname{font-weight:600;word-break:break-all}.bsize{color:var(--muted);font-size:13px}.bstatus{margin-left:auto;font-size:13px}.bstatus.ok{color:#1a7f37;font-weight:600}.bstatus.noop{color:var(--muted)}.bstatus.err{color:#d33;font-weight:600}.bstatus.working{color:var(--muted)}.batchlist button{border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:999px;padding:4px 14px;cursor:pointer;font-size:13px}#diffBox{margin-top:8px;font-size:13px}#diffBox summary{cursor:pointer;color:var(--muted);font-weight:600}.difflist{max-height:280px;overflow:auto;margin-top:6px;border:1px solid var(--line);border-radius:12px;padding:8px 10px;background:var(--bg)}.diffrow{padding:3px 0;border-bottom:1px dashed var(--line);white-space:pre-wrap;word-break:break-all;font-size:12.5px;line-height:1.5}.diffrow:last-child{border-bottom:0}.diffrow .ln{color:var(--muted);font-weight:600}.diffrow .old{color:#b3261e}.diffrow .new{color:#1a7f37}.diffmore{color:var(--muted);font-size:12.5px;padding-top:4px}button:disabled{opacity:.5;cursor:not-allowed}.foot{margin-top:24px;color:var(--muted);font-size:13px;text-align:center}code{font-family:IBM Plex Mono,monospace}
