:root{--font-mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,Consolas,monospace;--font-ui:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;--font-serif:"Songti SC","STSong","SimSun","Noto Serif SC",serif;--cm-fs:14px;--sp:.5;--ws-max:1680px}html[data-theme=light]{--bg:#eceae1;--panel:#f6f4ec;--panel-2:#efede2;--editor:#fdfcf7;--ink:#26221c;--ink-2:#6e6759;--ink-3:#a29a89;--line:#dcd7c6;--line-2:#e7e3d5;--accent:#c73e09;--accent-h:#e04a10;--accent-soft:#c73e091a;--accent-ink:#fff8f2;--ok:#2f7d32;--err:#c0392b;--err-soft:#c0392b1a;--sel:#c73e092e;--activeline:#0000000b;--kbd-bg:#ffffff38;--ruler:#c73e0959;--shadow:0 12px 32px #3c321e2e;--sb:#cfc9b7;--tk-tag:#b8370a;--tk-bracket:#8a8377;--tk-attr:#8f5d0e;--tk-string:#347d3a;--tk-comment:#a8a08c;--tk-kw:#0f68a8;--tk-atom:#0e7490;--tk-num:#c2410c;--tk-var:#2a2620;--tk-var2:#4a453c;--tk-prop:#3d6fb3;--tk-qual:#7a5c12;--tk-meta:#7a756a;--tk-op:#5f594f;--tk-builtin:#5b7826;--tk-err:#d13c31}html[data-theme=dark]{--bg:#101014;--panel:#16161b;--panel-2:#1d1d24;--editor:#121216;--ink:#e8e5dd;--ink-2:#a3a096;--ink-3:#6f6b62;--line:#26262d;--line-2:#2f2f38;--accent:#ec9234;--accent-h:#f5a54e;--accent-soft:#ec923421;--accent-ink:#241703;--ok:#7bc96f;--err:#e5645e;--err-soft:#e5645e1f;--sel:#ec923438;--activeline:#ffffff0a;--kbd-bg:#0000002e;--ruler:#ec923459;--shadow:0 12px 32px #00000080;--sb:#2c2c34;--tk-tag:#f0885a;--tk-bracket:#6f6a62;--tk-attr:#d8a55f;--tk-string:#a2c17c;--tk-comment:#6c6861;--tk-kw:#6fb3d2;--tk-atom:#55c1d4;--tk-num:#ec9234;--tk-var:#dcd8cf;--tk-var2:#b7b2a7;--tk-prop:#8fc8e8;--tk-qual:#c4a06a;--tk-meta:#8b867d;--tk-op:#a8a39a;--tk-builtin:#97c079;--tk-err:#e5645e}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%}body{background:var(--bg);color:var(--ink);font-family:var(--font-ui);overflow:hidden}button{font-family:inherit}.hidden{display:none!important}html.theming *,html.theming{transition:background-color .32s,color .32s,border-color .32s,fill .32s,stroke .32s!important}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--sb);background-clip:padding-box;border:2.5px solid #0000;border-radius:6px}::-webkit-scrollbar-track{background:0 0}.app{display:flex;flex-direction:column;height:100dvh}.topbar{display:flex;border-bottom:1px solid var(--line);background:var(--panel);padding:0 14px;padding-left:max(14px,env(safe-area-inset-left));padding-right:max(14px,env(safe-area-inset-right));flex:none;align-items: center;gap:14px;height:54px}.seal{background:var(--accent);color:var(--accent-ink);display:grid;font:700 19px/1 var(--font-serif);border-radius:9px;flex:none;place-items: center;width:36px;height:36px;transition:all .2s;transform:rotate(-3deg);box-shadow:inset 0 0 0 1.5px #ffffff59}.seal:hover{transform:rotate(0)scale(1.05)}.brand{display:flex;user-select:none;flex-direction:column;gap:1px}.brand-name{font:700 13.5px var(--font-ui);color:var(--ink);display:flex;align-items:baseline;gap:7px}.brand-name .cn{font-family:var(--font-serif);letter-spacing:1px;font-size:17px}.brand-sub{font:500 8.5px var(--font-mono);letter-spacing:2.4px;color:var(--ink-3)}.status-pill{display:inline-flex;border:1px solid var(--line);font:500 11px var(--font-mono);color:var(--ink-2);background:var(--panel);white-space:nowrap;border-radius:20px;align-items: center;gap:8px;height:28px;padding:0 12px}.status-pill .dot{background:var(--ink-3);border-radius:50%;flex:none;width:7px;height:7px}.pill-loading .dot{background:var(--accent);animation:1.2s infinite pulse}.pill-dirty .dot{background:var(--accent)}.pill-ready .dot,.pill-synced .dot,.pill-custom .dot{background:var(--ok)}.pill-error .dot{background:var(--err);animation:1.2s infinite pulse}@keyframes pulse{50%{opacity:.3}}.topbar .spacer{flex:1}.actions{display:flex;align-items: center;gap:8px}.btn-primary{display:inline-flex;background:var(--accent);color:var(--accent-ink);font:600 13.5px var(--font-ui);cursor:pointer;box-shadow:0 2px 12px var(--accent-soft);border:0;border-radius:9px;align-items: center;gap:8px;height:34px;padding:0 13px;transition:all .15s}.btn-primary:hover{background:var(--accent-h);transform:translateY(-1px)}.btn-primary:active{transform:translateY(0)scale(.98)}.btn-primary svg{width:15px;height:15px}.btn-primary kbd{font:500 10px var(--font-mono);background:var(--kbd-bg);border-radius:5px;padding:2px 6px}.btn-ghost{display:inline-flex;border:1px solid var(--line);color:var(--ink-2);font:500 13px var(--font-ui);cursor:pointer;background:0 0;border-radius:9px;align-items: center;gap:7px;height:34px;padding:0 12px;transition:all .15s}.btn-ghost:hover{border-color:var(--ink-3);color:var(--ink);background:var(--panel-2)}.btn-ghost:active{transform:scale(.97)}.btn-ghost svg{width:15px;height:15px}.icon-btn{display:grid;border:1px solid var(--line);color:var(--ink-2);cursor:pointer;font:700 12px var(--font-mono);background:0 0;border-radius:9px;place-items: center;width:34px;height:34px;padding:0;transition:all .15s}.icon-btn:hover{color:var(--ink);border-color:var(--ink-3);background:var(--panel-2)}.icon-btn svg{width:16px;height:16px}html[data-theme=dark] .ico-moon,html[data-theme=light] .ico-sun{display:none}.lang-wrap{position:relative;flex:none}.lang-menu{position:absolute;background:var(--panel);border:1px solid var(--line);z-index:80;box-shadow:var(--shadow);opacity:0;visibility:hidden;border-radius:10px;min-width:150px;margin-top:8px;padding:6px;transition:opacity .2s,transform .2s,visibility .2s;top:100%;right:0;transform:translateY(-6px)}.lang-menu.open{opacity:1;visibility:visible;transform:translateY(0)}.lang-item{cursor:pointer;font:500 13px var(--font-ui);color:var(--ink-2);white-space:nowrap;user-select:none;border-radius:7px;padding:9px 14px;transition:all .15s}.lang-item:hover{background:var(--panel-2);color:var(--ink)}.lang-item.active{color:var(--accent);background:var(--accent-soft);font-weight:600}.lang-item.active:after{content:"✓";margin-left:6px}.pulse-dot{background:var(--ok);box-shadow:0 0 0 3px color-mix(in srgb,var(--ok)18%,transparent);border-radius:50%;flex:none;width:9px;height:9px;transition:all .25s}.pulse-dot.offline{background:var(--err);box-shadow:0 0 0 3px color-mix(in srgb,var(--err)18%,transparent)}.view-tabs{display:none;background:var(--panel);border-bottom:1px solid var(--line);flex:none;gap:6px;padding:6px 10px}.view-tabs button{border:1px solid var(--line);color:var(--ink-2);font:600 13px var(--font-ui);cursor:pointer;display:inline-flex;background:0 0;border-radius:9px;flex:1;justify-content:center;align-items: center;gap:7px;height:38px;transition:all .15s}.view-tabs button .pdot{background:var(--ink-3);border-radius:2px;width:6px;height:6px}.view-tabs button.tab-out .pdot{background:var(--accent)}.view-tabs button.on{background:var(--accent-soft);color:var(--accent);border-color:var(--accent-soft)}.view-tabs button:not(.on):active{transform:scale(.98)}.workspace{display:grid;grid-template-columns:calc((100% - 10px)*var(--sp))10px calc((100% - 10px)*(1 - var(--sp)));max-width:var(--ws-max);border-left:1px solid var(--line-2);border-right:1px solid var(--line-2);flex:1;width:100%;min-height:0;margin:0 auto}.pane{display:flex;background:var(--editor);flex-direction:column;min-width:0;min-height:0}.pane-head{display:flex;border-bottom:1px solid var(--line);background:var(--panel);flex:none;align-items: center;gap:8px;height:40px;padding:0 10px 0 14px}.pane-title{display:flex;font:600 10.5px var(--font-mono);letter-spacing:2.5px;color:var(--ink-2);white-space:nowrap;align-items: center;gap:8px}.pdot{background:var(--ink-3);border-radius:2px;width:6px;height:6px}.pane-out .pdot{background:var(--accent)}.pane-actions{display:flex;gap:3px;margin-left:auto}.chip{display:inline-flex;color:var(--ink-2);font:500 12px var(--font-ui);cursor:pointer;white-space:nowrap;background:0 0;border:1px solid #0000;border-radius:7px;align-items: center;gap:6px;height:26px;padding:0 8px;transition:all .15s}.chip:hover{background:var(--panel-2);color:var(--ink);border-color:var(--line)}.chip:active{transform:scale(.95)}.chip svg{width:13px;height:13px}.chip.danger:hover{color:var(--err);border-color:var(--err-soft);background:var(--err-soft)}.pane.flash{animation:.55s ease-out paneFlash}@keyframes paneFlash{0%{box-shadow:inset 0 0 0 2px var(--accent)}to{box-shadow:inset 0 0 0 2px #0000}}.editor-host{display:flex;position:relative;background:var(--editor);flex-direction:column;flex:1;min-height:0}.cm-fill{position:relative;flex:1;min-height:0}.cm-fill .CodeMirror{height:100%}.splitter{position:relative;cursor:col-resize;z-index:6;touch-action:none;background:0 0;border:0}.splitter:after{content:"";position:absolute;background:var(--line);width:4px;transition:background .15s;top:0;bottom:0;left:50%;transform:translate(-50%)}.splitter:hover:after,body.resizing .splitter:after{background:var(--accent)}body.resizing{cursor:col-resize;user-select:none}body.resizing *{pointer-events:none}@media (max-width:899px) and (min-width:720px){.workspace{grid-template-columns:1fr;grid-template-rows:calc((100% - 10px)*var(--sp))10px calc((100% - 10px)*(1 - var(--sp)))}.splitter{cursor:row-resize}.splitter:after{width:auto;height:4px;top:50%;left:0;right:0;transform:translateY(-50%)}}@media (max-width:719px){.view-tabs{display:flex}.workspace{display:flex;flex-direction:column}.workspace .splitter,.workspace[data-mobile-tab=in] .pane-out,.workspace[data-mobile-tab=out] .pane-in{display:none}.workspace .pane{flex:1}}.hint{position:absolute;display:flex;color:var(--ink-3);pointer-events:none;z-index:4;text-align:center;flex-direction:column;justify-content:center;align-items: center;gap:9px;padding:24px;inset:0}.hint[hidden]{display:none}.hint .h1{font:600 13px var(--font-ui)}.hint .h2{font:400 11px var(--font-mono);letter-spacing:.5px}.hint kbd{font:500 10px var(--font-mono);border:1px solid var(--line);color:var(--ink-2);border-radius:5px;padding:2px 6px}.errbar{display:flex;background:var(--err-soft);color:var(--err);font:500 12px var(--font-mono);border-bottom:1px solid var(--line);flex:none;align-items: center;gap:10px;padding:7px 12px}.errbar[hidden]{display:none}.errbar-msg{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.errbar-close{color:inherit;font:600 15px var(--font-ui);cursor:pointer;opacity:.7;background:0 0;border:0;padding:0 4px}.errbar-close:hover{opacity:1}.ruler{position:absolute;border-left:1px dashed var(--ruler);pointer-events:none;z-index:5;display:none;width:0;top:0;bottom:0}.fatal{font:500 14px var(--font-mono);color:var(--err);text-align:center;max-width:420px;margin:auto;padding:30px;line-height:2}.statusbar{display:flex;border-top:1px solid var(--line);background:var(--panel);font:500 11px var(--font-mono);color:var(--ink-2);padding:7px 14px;padding-left:max(14px,env(safe-area-inset-left));padding-right:max(14px,env(safe-area-inset-right));padding-bottom:max(7px,env(safe-area-inset-bottom));flex-wrap:wrap;flex:none;align-items: center;gap:6px 16px}.stat-group{display:flex;flex-wrap:wrap;align-items: center;gap:13px}.stat{display:inline-flex;align-items:baseline;gap:5px}.stat em{color:var(--ink-3);font-size:10px;font-style:normal}.stat b{color:var(--ink);border-radius:4px;margin:0 -3px;padding:0 3px;font-weight:600}.stat b.tick{animation:.6s tickA}@keyframes tickA{0%{background:var(--accent-soft);color:var(--accent)}}.gsep{background:var(--line);width:1px;height:14px}#cursorPos{color:var(--ink-3);white-space:nowrap;margin-left:auto}.glabel{letter-spacing:2px;color:var(--accent);border:1px solid var(--line);border-radius:4px;padding:1px 6px;font-size:9px}.drawer-mask{position:fixed;opacity:0;pointer-events:none;z-index:40;background:#00000073;transition:opacity .25s;inset:0}.drawer-mask.on{opacity:1;pointer-events:auto}.drawer{position:fixed;background:var(--panel);border-left:1px solid var(--line);z-index:50;display:flex;box-shadow:var(--shadow);flex-direction:column;width:min(342px,92vw);transition:transform .28s cubic-bezier(.2,.8,.2,1);top:0;bottom:0;right:0;transform:translate(103%)}.drawer.open{transform:none}.drawer-head{display:flex;border-bottom:1px solid var(--line);flex:none;justify-content:space-between;align-items: center;padding:14px 18px}.drawer-head h2{font-size:14px;font-weight:700}.drawer-head .en{display:block;font:500 8.5px var(--font-mono);letter-spacing:2.4px;color:var(--ink-3);margin-top:2px}.drawer-body{overflow-y:auto;-webkit-overflow-scrolling:touch;flex:1}.dgroup{border-bottom:1px solid var(--line-2);padding:15px 18px 17px}.dgroup h3{font:600 10.5px var(--font-mono);letter-spacing:2.5px;color:var(--ink-2);margin-bottom:13px}.ctl{margin-bottom:15px}.ctl:last-child{margin-bottom:0}.ctl-row{display:flex;justify-content:space-between;align-items: center;gap:10px;margin-bottom:8px}.ctl-row label{font:600 12.5px var(--font-ui);color:var(--ink)}.ctl-row label i{font:400 10px var(--font-mono);color:var(--ink-3);margin-left:5px;font-style:normal}.ctl-row output{font:600 12px var(--font-mono);color:var(--accent)}.ctl-desc{color:var(--ink-3);margin-top:7px;font-size:11.5px;line-height:1.65}input[type=range]{-webkit-appearance:none;appearance:none;cursor:pointer;background:0 0;width:100%;height:28px}input[type=range]::-webkit-slider-runnable-track{background:var(--line);border-radius:4px;height:4px}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;background:var(--accent);border:2.5px solid var(--panel);box-shadow:0 0 0 1px var(--line);border-radius:50%;width:15px;height:15px;margin-top:-5.5px}input[type=range]::-moz-range-track{background:var(--line);border-radius:4px;height:4px}input[type=range]::-moz-range-thumb{background:var(--accent);border:2px solid var(--panel);border-radius:50%;width:11px;height:11px}.seg{display:inline-flex;border:1px solid var(--line);overflow:hidden;border-radius:8px;flex-wrap:wrap}.seg button{font:500 11px var(--font-mono);color:var(--ink-2);cursor:pointer;background:0 0;border:0;padding:7px 12px;transition:all .15s}.seg button+button{border-left:1px solid var(--line)}.seg button:hover{color:var(--ink)}.seg button.on{background:var(--accent-soft);color:var(--accent);font-weight:600}.switch{display:flex;cursor:pointer;align-items: center;gap:10px;padding:6px 0}.switch input{display:none}.switch .track{background:var(--line);position:relative;border-radius:20px;flex:none;width:36px;height:20px;transition:background .2s}.switch .track:after{content:"";position:absolute;background:#fff;border-radius:50%;width:16px;height:16px;transition:transform .2s;top:2px;left:2px;box-shadow:0 1px 3px #0000004d}.switch input:checked+.track{background:var(--accent)}.switch input:checked+.track:after{transform:translate(16px)}.switch .lab{font:500 12.5px var(--font-ui);color:var(--ink)}.drawer-foot{border-top:1px solid var(--line);display:flex;flex:none;justify-content:space-between;align-items: center;padding:12px 18px}.engine-info{font:400 9px var(--font-mono);color:var(--ink-3);letter-spacing:.8px}.toasts{position:fixed;z-index:70;display:flex;flex-direction:column;gap:10px;bottom:52px;right:18px}.toast{display:flex;background:var(--panel);border:1px solid var(--line);border-left:3px solid var(--accent);font:500 12.5px var(--font-ui);color:var(--ink);box-shadow:var(--shadow);animation:.25s ease-out toastIn;border-radius:10px;align-items: center;max-width:320px;padding:10px 14px}.toast.warn{border-left-color:var(--err)}.toast.out{animation:.25s forwards toastOut}@keyframes toastIn{0%{opacity:0;transform:translate(12px)}}@keyframes toastOut{to{opacity:0;transform:translateY(6px)}}.CodeMirror{font-family:var(--font-mono);font-size:var(--cm-fs);color:var(--tk-var);background:var(--editor);height:100%;line-height:1.7}.cm-s-pressy .CodeMirror-gutters{background:var(--editor);border-right:1px solid var(--line)}.cm-s-pressy .CodeMirror-linenumber{color:var(--ink-3);padding-right:10px;font-size:.86em}.cm-s-pressy .CodeMirror-cursor{border-left:2px solid var(--accent)}.cm-s-pressy .CodeMirror-selected,.cm-s-pressy .CodeMirror-focused .CodeMirror-selected{background:var(--sel)}.cm-s-pressy .CodeMirror-activeline-background{background:var(--activeline)}.cm-s-pressy .CodeMirror-activeline .CodeMirror-linenumber{color:var(--accent)}.cm-s-pressy .CodeMirror-matchingbracket{background:var(--accent-soft);text-decoration:underline;color:var(--accent)!important}.cm-s-pressy .cm-matchtag,.cm-s-pressy .CodeMirror-matchtag{background:var(--accent-soft)}.cm-s-pressy .CodeMirror-scrollbar-filler{background:var(--editor)}.cm-s-pressy .cm-tag{color:var(--tk-tag)}.cm-s-pressy .cm-bracket{color:var(--tk-bracket)}.cm-s-pressy .cm-attribute{color:var(--tk-attr)}.cm-s-pressy .cm-string,.cm-s-pressy .cm-string-2{color:var(--tk-string)}.cm-s-pressy .cm-comment{color:var(--tk-comment);font-style:italic}.cm-s-pressy .cm-keyword{color:var(--tk-kw)}.cm-s-pressy .cm-atom{color:var(--tk-atom)}.cm-s-pressy .cm-number{color:var(--tk-num)}.cm-s-pressy .cm-def{color:var(--tk-tag)}.cm-s-pressy .cm-variable{color:var(--tk-var)}.cm-s-pressy .cm-variable-2,.cm-s-pressy .cm-variable-3{color:var(--tk-var2)}.cm-s-pressy .cm-property{color:var(--tk-prop)}.cm-s-pressy .cm-qualifier{color:var(--tk-qual)}.cm-s-pressy .cm-operator{color:var(--tk-op)}.cm-s-pressy .cm-meta{color:var(--tk-meta)}.cm-s-pressy .cm-builtin{color:var(--tk-builtin)}.cm-s-pressy .cm-error{color:var(--tk-err)}.CodeMirror-dialog{background:var(--panel);color:var(--ink-2);font:500 12px var(--font-mono);border-bottom:1px solid var(--line);padding:5px 10px}.CodeMirror-dialog input{background:var(--editor);border:1px solid var(--line);color:var(--ink);font:inherit;outline:none;border-radius:5px;padding:2px 6px}.CodeMirror-dialog button{background:var(--panel-2);border:1px solid var(--line);color:var(--ink-2);font:500 11px var(--font-mono);cursor:pointer;border-radius:5px;margin-left:6px;padding:2px 8px}@media (max-width:899px){.brand-sub{display:none}}@media (max-width:719px){.topbar{gap:8px;height:56px;padding:0 10px}.seal{border-radius:8px;width:32px;height:32px;font-size:17px}.brand{display:none}.status-pill{padding:0 9px}.status-pill span{display:none}.status-pill{gap:0}.actions{gap:6px}.btn-primary{height:40px;padding:0 12px}.btn-primary kbd{display:none}.btn-ghost{justify-content:center;width:40px;height:40px;padding:0}.btn-ghost .t{display:none}.icon-btn{width:40px;height:40px}.chip{height:32px}.chip .t{display:none}.chip{padding:0 9px}.pane-head{height:38px;padding:0 8px 0 12px}.glabel{display:none}.statusbar{gap:4px 12px;padding:6px 10px;font-size:10.5px}.statusbar .opt{display:none}.stat-group{gap:9px}#cursorPos{display:none}.toasts{left:10px;right:10px;bottom:calc(54px + env(safe-area-inset-bottom))}.toast{max-width:none}.CodeMirror,.CodeMirror textarea{font-size:max(16px,var(--cm-fs))}.CodeMirror-lines{padding:8px 0}.hint .h1{font-size:14px}.hint .h2{font-size:12px}}@media (pointer:coarse){.switch{padding:9px 0}.chip{height:30px}}
