:root{--bg: #f1f5f9;--panel: #ffffff;--panel-2: #f8fafc;--line: #e2e8f0;--line-strong: #cbd5e1;--text: #0f172a;--muted: #64748b;--accent: #6d28d9;--accent-2: #0ea5e9;--accent-soft: #ede9fe;--ok: #059669;--ok-soft: #d1fae5;--err: #dc2626;--err-soft: #fee2e2;--warn: #b45309;--head-bg: linear-gradient(100deg, #0f172a 0%, #1e1b4b 55%, #312e81 100%);--head-text: #e2e8f0;--shadow: 0 1px 2px rgb(15 23 42 / 6%), 0 8px 24px rgb(15 23 42 / 8%);--radius: 10px;--mono: ui-monospace, "Cascadia Code", "JetBrains Mono", Consolas, "Liberation Mono", monospace;color-scheme:light}:root[data-theme=dark]{--bg: #020617;--panel: #0b1120;--panel-2: #0f172a;--line: #1e293b;--line-strong: #334155;--text: #e2e8f0;--muted: #94a3b8;--accent: #a78bfa;--accent-2: #38bdf8;--accent-soft: #2e1065;--ok: #34d399;--ok-soft: #064e3b;--err: #f87171;--err-soft: #450a0a;--warn: #fbbf24;--head-bg: linear-gradient(100deg, #020617 0%, #1e1b4b 60%, #2e1065 100%);--shadow: 0 1px 2px rgb(0 0 0 / 40%), 0 8px 24px rgb(0 0 0 / 35%);color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font:14px/1.45 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;-webkit-font-smoothing:antialiased}button,select,input{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--accent-2);outline-offset:2px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.app{display:grid;grid-template-rows:auto 1fr auto;height:100%;min-height:0}.body{display:flex;min-height:0;gap:12px;padding:12px}.work{flex:1;min-width:0;display:grid;grid-template-columns:1fr 1fr;gap:12px;min-height:0}.work.diff{grid-template-columns:1fr}.head{background:var(--head-bg);color:var(--head-text);display:flex;align-items:center;gap:10px;padding:10px 14px;flex-wrap:wrap;box-shadow:0 1px #ffffff0f inset}.brand{display:flex;align-items:center;gap:10px;font-weight:750;font-size:16px;letter-spacing:-.01em;margin-right:6px;white-space:nowrap}.brand img{width:30px;height:30px}.brand small{display:block;font-weight:500;font-size:11px;color:#a5b4fc;letter-spacing:.02em}.head .sep{width:1px;align-self:stretch;background:#ffffff1f;margin:2px}.head .grow{flex:1}.field{display:flex;flex-direction:column;gap:2px}.field>span{font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;color:#a5b4fc;font-weight:650}.head select{background:#ffffff14;border:1px solid rgb(255 255 255 / 16%);border-radius:8px;padding:6px 8px;min-width:150px;color:#fff}.head select option,.head select optgroup{color:#0f172a;background:#fff}.btn{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--line-strong);background:var(--panel);border-radius:8px;padding:6px 11px;cursor:pointer;font-weight:600;font-size:13px;white-space:nowrap;transition:background .15s,border-color .15s,transform .05s}.btn:hover{border-color:var(--accent)}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.45;cursor:not-allowed}.head .btn{background:#ffffff14;border-color:#ffffff29;color:#fff}.head .btn:hover{background:#ffffff29}.head .btn.on{background:#a78bfa47;border-color:#a78bfa}.btn.primary,.head .btn.primary{background:linear-gradient(135deg,#7c3aed,#0ea5e9);border-color:transparent;color:#fff;box-shadow:0 4px 14px #7c3aed59}.head .btn.primary.dim{background:#ffffff14;box-shadow:none;border-color:#ffffff29}.btn.icon{padding:7px}.kbd{font:11px var(--mono);opacity:.75;border:1px solid currentColor;border-radius:4px;padding:0 4px}.switch{display:inline-flex;align-items:center;gap:7px;cursor:pointer;user-select:none;font-weight:600;font-size:13px}.switch input{appearance:none;width:34px;height:20px;border-radius:999px;background:var(--line-strong);position:relative;cursor:pointer;transition:background .15s;margin:0;flex:none}.switch input:after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 1px 2px #0000004d;transition:left .15s}.switch input:checked{background:var(--accent)}.switch input:checked:after{left:16px}.head .switch input{background:#fff3}.head .switch input:checked{background:#8b5cf6}.pane{display:flex;flex-direction:column;min-height:0;min-width:0;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.pane-head{display:flex;align-items:center;gap:6px;padding:7px 8px 7px 12px;border-bottom:1px solid var(--line);background:var(--panel-2);flex-wrap:wrap}.pane-title{font-weight:750;font-size:13px;letter-spacing:.02em;text-transform:uppercase;color:var(--muted);margin-right:4px}.pane-head .grow{flex:1}.chip{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:650;padding:2px 9px;border-radius:999px;background:var(--accent-soft);color:var(--accent)}.chip.ok{background:var(--ok-soft);color:var(--ok)}.chip.err{background:var(--err-soft);color:var(--err)}.pane .btn{padding:5px 9px;font-size:12.5px;background:var(--panel)}.editor-host{flex:1;min-height:0;position:relative}.editor-fallback{position:absolute;inset:0;width:100%;height:100%;border:0;resize:none;padding:10px 14px;font:13.5px/1.55 var(--mono);background:var(--panel);color:var(--text);outline:none}.error-bar{display:flex;gap:8px;align-items:flex-start;padding:9px 12px;background:var(--err-soft);color:var(--err);border-top:1px solid color-mix(in srgb,var(--err) 30%,transparent);font-size:13px}.error-bar button{background:none;border:0;color:inherit;text-decoration:underline;cursor:pointer;padding:0;font-weight:700}.busy{position:absolute;top:8px;right:18px;z-index:5;font-size:12px;font-weight:650;color:var(--accent);background:var(--panel);border:1px solid var(--line);border-radius:999px;padding:2px 10px}.gridsync-err{background:color-mix(in srgb,var(--err) 20%,transparent)}.options{width:340px;flex:none;display:flex;flex-direction:column;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);min-height:0}.options-head{padding:10px 12px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:8px}.options-head h2{font-size:15px;margin:0;flex:1}.options-sub{padding:8px 12px;border-bottom:1px solid var(--line);color:var(--muted);font-size:12.5px;display:flex;flex-direction:column;gap:6px}.options-scroll{overflow:auto;flex:1;padding:4px 0 12px}.opt-section h3{font-size:11.5px;text-transform:uppercase;letter-spacing:.07em;color:var(--accent);margin:14px 12px 4px}.opt{display:grid;grid-template-columns:1fr auto;align-items:center;gap:2px 10px;padding:7px 12px}.opt:hover{background:var(--panel-2)}.opt label{font-weight:600;font-size:13px}.opt p{grid-column:1 / -1;margin:0;color:var(--muted);font-size:12px}.opt.inactive{opacity:.45}.opt select,.opt input[type=number]{background:var(--panel-2);border:1px solid var(--line-strong);border-radius:7px;padding:4px 6px;max-width:170px}.opt input[type=number]{width:76px}.options-foot{border-top:1px solid var(--line);padding:10px 12px;display:flex;gap:6px;flex-wrap:wrap}.options-foot select{flex:1;min-width:0;background:var(--panel-2);border:1px solid var(--line-strong);border-radius:8px;padding:5px 6px}.status{display:flex;align-items:center;gap:14px;padding:5px 14px;font-size:12px;color:var(--muted);border-top:1px solid var(--line);background:var(--panel);flex-wrap:wrap}.status b{color:var(--text);font-weight:650}.status .grow{flex:1}.status .good{color:var(--ok);font-weight:700}.backdrop{position:fixed;inset:0;background:#0206178c;backdrop-filter:blur(3px);display:grid;place-items:center;z-index:50;padding:16px}.dialog{background:var(--panel);border:1px solid var(--line);border-radius:14px;box-shadow:0 30px 80px #00000059;width:min(760px,100%);max-height:min(86vh,900px);display:flex;flex-direction:column}.dialog-head{display:flex;align-items:center;gap:10px;padding:14px 18px;border-bottom:1px solid var(--line)}.dialog-head h2{margin:0;font-size:17px;flex:1}.dialog-body{padding:16px 18px;overflow:auto}.dialog-body h3{margin:18px 0 6px;font-size:14px}.dialog-body h3:first-child{margin-top:0}.dialog-body p,.dialog-body li{color:var(--muted)}.dialog-body ol,.dialog-body ul{padding-left:20px;margin:6px 0}.dialog-foot{padding:12px 18px;border-top:1px solid var(--line);display:flex;gap:8px;align-items:center;flex-wrap:wrap}.dialog-foot .grow{flex:1}.shortcuts{display:grid;grid-template-columns:auto 1fr;gap:6px 16px;align-items:center}.shortcuts kbd{font:12px var(--mono);background:var(--panel-2);border:1px solid var(--line-strong);border-bottom-width:2px;border-radius:6px;padding:1px 7px;white-space:nowrap}.lang-grid{display:flex;flex-wrap:wrap;gap:6px}.drop{border:2px dashed var(--line-strong);border-radius:12px;padding:22px;text-align:center;color:var(--muted);background:var(--panel-2)}.drop.hot{border-color:var(--accent);background:var(--accent-soft)}.batch-list{margin-top:12px;border:1px solid var(--line);border-radius:10px;overflow:hidden}.batch-row{display:grid;grid-template-columns:1fr 120px 110px;gap:8px;padding:7px 12px;border-top:1px solid var(--line);font-size:13px;align-items:center}.batch-row:first-child{border-top:0;background:var(--panel-2);font-weight:700;color:var(--muted);font-size:12px}.batch-row .name{font-family:var(--mono);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.batch-row .st-ok{color:var(--ok);font-weight:650}.batch-row .st-err{color:var(--err);font-weight:650}.batch-row .st-skip{color:var(--muted)}.toasts{position:fixed;bottom:44px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;gap:8px;z-index:60;pointer-events:none}.toast{background:#0f172a;color:#fff;border-radius:10px;padding:9px 16px;box-shadow:0 10px 30px #0000004d;display:flex;gap:8px;align-items:center;font-weight:600;animation:rise .18s ease-out}.toast.error{background:#991b1b}@keyframes rise{0%{opacity:0;transform:translateY(8px)}}.dropzone-overlay{position:fixed;inset:0;z-index:40;display:grid;place-items:center;background:#6d28d92e;border:3px dashed #8b5cf6;font-size:22px;font-weight:750;color:#fff;text-shadow:0 2px 10px rgb(0 0 0 / 50%);pointer-events:none}@media(max-width:1100px){.options{position:fixed;right:12px;top:12px;bottom:12px;z-index:30;box-shadow:0 30px 80px #00000059}}@media(max-width:860px){.work{grid-template-columns:1fr;grid-template-rows:1fr 1fr}.head .label-text,.brand small{display:none}.head{gap:8px}.head select{min-width:0;width:100%}.head .field{flex:1 1 140px}.options{left:12px;width:auto}}.stale{opacity:.4;filter:grayscale(.6)}
