:root{--font-size:13px;--line-height:20px;--pad-x:12px;--mono:ui-monospace,"SFMono-Regular","Cascadia Code","JetBrains Mono","Liberation Mono",Menlo,Consolas,monospace;--ui:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;--sidebar-w:268px;--radius:4px}body[data-theme=dark]{--bg:#000000;--fg:#ffffff;--fg-dim:#b9b9b9;--muted:#808080;--panel:#000000;--panel-2:#070707;--border:#242424;--border-strong:#3a3a3a;--hover:#141414;--active:#1d1d1d;--accent:#6cb6ff;--accent-fg:#000000;--selection:rgba(108, 182, 255, 0.32);--k:#6cb6ff;--t:#e2c08d;--s:#7ec699;--n:#f0a45d;--c:#7d7d7d;--p:#c792ea;--b0:#ffd166;--b1:#8fd3ff;--b2:#ff8fab;--danger:#ff6b6b}body[data-theme=light]{--bg:#ffffff;--fg:#000000;--fg-dim:#333333;--muted:#6b6b6b;--panel:#ffffff;--panel-2:#f7f7f7;--border:#d9d9d9;--border-strong:#b4b4b4;--hover:#f0f0f0;--active:#e6e6e6;--accent:#005fcc;--accent-fg:#ffffff;--selection:rgba(0, 95, 204, 0.22);--k:#0033b3;--t:#875000;--s:#067d17;--n:#b35c00;--c:#757575;--p:#7a2f9e;--b0:#9a6700;--b1:#005fa3;--b2:#b0004f;--danger:#c62828}*{box-sizing:border-box}[hidden]{display:none!important}body,html{margin:0;padding:0;height:100%;overscroll-behavior:none}body{background:var(--bg);color:var(--fg);font-family:var(--ui);font-size:13px;-webkit-tap-highlight-color:transparent}button,input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}button{background:0 0;border:1px solid var(--border);color:var(--fg);border-radius:var(--radius);cursor:pointer;padding:5px 10px}button:hover{background:var(--hover)}button:active{background:var(--active)}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:1px solid var(--accent);outline-offset:1px}input,select{background:var(--panel);color:var(--fg);border:1px solid var(--border-strong);border-radius:var(--radius);padding:4px 6px}#app{display:flex;flex-direction:column;height:100dvh;min-height:100dvh}body.softkb #app{padding-bottom:94px}#topbar{display:flex;align-items:center;gap:8px;height:46px;padding:0 8px;border-bottom:1px solid var(--border);background:var(--panel);flex:0 0 auto;min-width:0}.brand{display:flex;align-items:center;gap:7px;font-weight:700;letter-spacing:.2px;white-space:nowrap}.brand-mark{font-family:var(--mono);color:var(--accent)}.doc-head{display:flex;align-items:center;gap:6px;min-width:0;flex:1 1 auto;padding-left:8px;border-left:1px solid var(--border);color:var(--fg-dim);font-family:var(--mono);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#docName{overflow:hidden;text-overflow:ellipsis}.dirty-dot{width:7px;height:7px;border-radius:50%;background:var(--accent);flex:0 0 auto}.top-actions{display:flex;align-items:center;gap:5px;flex:0 0 auto}.tool-btn{white-space:nowrap}.tool-btn.primary{border-color:var(--accent);color:var(--accent)}.icon-btn{padding:5px 8px;font-size:15px;line-height:1}#body{display:flex;flex:1 1 auto;min-height:0}#sidebar{width:var(--sidebar-w);flex:0 0 auto;border-right:1px solid var(--border);background:var(--panel-2);display:flex;flex-direction:column;min-height:0}#sidebar.hidden{display:none}.vol-tabs{display:flex;padding:7px 7px 0;gap:4px}.vol-tab{flex:1 1 0;padding:6px 4px;font-size:12px;border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom-color:transparent}.vol-tab.active{border-color:var(--border-strong);border-bottom-color:var(--panel-2);background:var(--panel-2);color:var(--accent)}.side-actions{display:flex;gap:4px;padding:7px;flex-wrap:wrap}.mini-btn{padding:4px 7px;font-size:12px;border-color:var(--border)}.mini-btn.wide{width:100%}.path-bar{margin:0 7px 6px;padding:5px 7px;font-family:var(--mono);font-size:12px;color:var(--muted);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-list{flex:1 1 auto;overflow:auto;padding:0 5px;min-height:0}.file-row{display:flex;align-items:center;gap:7px;padding:6px 8px;border-radius:var(--radius);cursor:pointer;font-family:var(--mono);font-size:12.5px;white-space:nowrap;overflow:hidden}.file-row:hover{background:var(--hover)}.file-row.active{background:var(--active)}.file-row .ficon{color:var(--accent);width:14px;text-align:center;flex:0 0 auto}.file-row .fname{overflow:hidden;text-overflow:ellipsis}.file-row .fdel{margin-left:auto;border:0;padding:0 4px;color:var(--muted);opacity:0}.file-row:hover .fdel{opacity:1}.file-row .fdel:hover{color:var(--danger)}.file-empty{color:var(--muted);padding:14px 10px;font-size:12px}.side-foot{padding:7px;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:5px}.vol-status{color:var(--muted);font-size:11px;min-height:14px}#main{flex:1 1 auto;min-width:0;min-height:0;display:flex;flex-direction:column;position:relative}.editor-wrap{flex:1 1 auto;display:flex;min-height:0;position:relative;background:var(--bg)}.gutter{flex:0 0 auto;width:var(--gutter-w,52px);overflow:hidden;border-right:1px solid var(--border);background:var(--bg);user-select:none;padding-top:0;transition:width .1s linear}.gl{height:var(--line-height);line-height:var(--line-height);font-family:var(--mono);font-size:var(--font-size);color:var(--muted);text-align:right;padding-right:8px;white-space:nowrap}.gl.current{color:var(--fg)}.viewport{flex:1 1 auto;position:relative;min-width:0;overflow:hidden}.editor,.highlight{font-family:var(--mono);font-size:var(--font-size);line-height:var(--line-height);tab-size:4;white-space:pre;letter-spacing:0;padding:0 var(--pad-x);margin:0;border:0}.highlight{position:absolute;inset:0 auto auto 0;pointer-events:none;z-index:1;color:var(--fg);will-change:transform;overflow:visible}.highlight .vl{height:var(--line-height);line-height:var(--line-height);white-space:pre}.highlight .lc{white-space:pre}.editor{position:absolute;inset:0;width:100%;height:100%;resize:none;overflow:auto;background:0 0;color:transparent;-webkit-text-fill-color:transparent;caret-color:var(--fg);outline:0;z-index:2;scrollbar-color:var(--border-strong) transparent}.editor::selection{background:var(--selection);color:transparent;-webkit-text-fill-color:transparent}.editor::-webkit-scrollbar{width:11px;height:11px}.editor::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:8px}.editor::-webkit-scrollbar-track{background:0 0}.drop-hint{position:absolute;inset:12px;border:2px dashed var(--accent);border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:17px;background:color-mix(in srgb,var(--bg) 82%,transparent);pointer-events:none;z-index:9}.find-bar{position:absolute;top:6px;right:16px;z-index:20;display:flex;align-items:center;gap:4px;padding:6px;background:var(--panel-2);border:1px solid var(--border-strong);border-radius:6px;box-shadow:0 8px 28px rgba(0,0,0,.35)}.find-bar[hidden]{display:none}.find-bar input[type=text]{width:148px}.find-bar .find-case{color:var(--muted);font-size:12px;display:flex;align-items:center;gap:3px}.t-k{color:var(--k)}.t-t{color:var(--t)}.t-s{color:var(--s)}.t-n{color:var(--n)}.t-c{color:var(--c);font-style:italic}.t-p{color:var(--p)}.t-b0{color:var(--b0)}.t-b1{color:var(--b1)}.t-b2{color:var(--b2)}.no-bracket-color .t-b0,.no-bracket-color .t-b1,.no-bracket-color .t-b2{color:var(--fg)}.panel-toolbar{display:flex;align-items:center;gap:8px;padding:6px 9px;border-bottom:1px solid var(--border);background:var(--panel-2);flex:0 0 auto;flex-wrap:wrap;font-size:12px}.panel-title{font-weight:700;margin-right:4px}.panel-toolbar label{color:var(--muted);display:flex;align-items:center;gap:4px}.muted{color:var(--muted)}.hex-wrap,.term-wrap{flex:1 1 auto;display:flex;flex-direction:column;min-height:0}.hex-wrap[hidden],.term-wrap[hidden]{display:none}.hex-view{flex:1 1 auto;overflow:auto;padding:8px 10px;font-family:var(--mono);font-size:12.5px;line-height:20px}.hr{white-space:pre}.ha{color:var(--muted)}.hb{color:var(--fg);cursor:pointer}.hb:hover{background:var(--active)}.hb.empty{color:var(--border)}.hc{color:var(--fg-dim)}.hex-byte-sel{outline:1px solid var(--accent)}.term{flex:1 1 auto;overflow:auto;margin:0;padding:7px 9px;background:var(--bg);color:var(--fg);font-family:var(--mono);font-size:var(--font-size);line-height:1.25;white-space:pre;outline:0;cursor:text}.term-lines{white-space:pre}.term:focus{box-shadow:inset 0 0 0 1px var(--accent)}.ansi-black{color:#555}.ansi-red{color:#ff5f5f}.ansi-green{color:#5fd75f}.ansi-yellow{color:#e5e55f}.ansi-blue{color:#6cb6ff}.ansi-magenta{color:#d18cff}.ansi-cyan{color:#5fe0e0}.ansi-white{color:#ddd}.ansi-bright-black{color:#8a8a8a}.ansi-bright-red{color:#ff8a8a}.ansi-bright-green{color:#8dff8d}.ansi-bright-yellow{color:#ffff8d}.ansi-bright-blue{color:#9dccff}.ansi-bright-magenta{color:#e0b0ff}.ansi-bright-cyan{color:#8dffff}.ansi-bright-white{color:#fff}body[data-theme=light] .ansi-black{color:#000}body[data-theme=light] .ansi-red{color:#b00020}body[data-theme=light] .ansi-green{color:#007a33}body[data-theme=light] .ansi-yellow{color:#8a6d00}body[data-theme=light] .ansi-blue{color:#0033b3}body[data-theme=light] .ansi-magenta{color:#7a2f9e}body[data-theme=light] .ansi-cyan{color:#006b6b}body[data-theme=light] .ansi-white{color:#333}.tb{font-weight:700}.tu{text-decoration:underline}.tinv{filter:invert(1)}#statusbar{display:flex;align-items:center;gap:12px;height:26px;padding:0 9px;border-top:1px solid var(--border);background:var(--panel-2);color:var(--muted);font-size:11.5px;font-family:var(--mono);flex:0 0 auto;overflow:hidden;white-space:nowrap}#statusbar .spacer{flex:1 1 auto}.status-btn{border:0;padding:1px 4px;color:var(--muted);font-family:var(--mono);font-size:11.5px}.status-btn:hover{color:var(--fg);background:var(--hover)}.soft-keyboard{position:fixed;left:0;right:0;bottom:0;z-index:60;background:var(--panel-2);border-top:1px solid var(--border-strong);padding:6px 7px calc(6px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:5px;box-shadow:0 -8px 24px rgba(0,0,0,.35)}.soft-keyboard[hidden]{display:none}.sk-row{display:flex;gap:5px}.sk-key{flex:1 1 0;min-width:34px;padding:9px 4px;font-family:var(--mono);font-size:12px;border-color:var(--border-strong);touch-action:manipulation}.sk-key.wide{flex:1.6 1 0}.sk-key.accent{border-color:var(--accent);color:var(--accent)}.sk-key.mod.on{background:var(--accent);color:var(--accent-fg);border-color:var(--accent)}.modal{position:fixed;inset:0;z-index:100;background:rgba(0,0,0,.55);display:flex;align-items:center;justify-content:center;padding:16px}.modal[hidden]{display:none}.modal-card{width:min(660px,100%);max-height:min(86dvh,860px);background:var(--panel);border:1px solid var(--border-strong);border-radius:8px;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 18px 60px rgba(0,0,0,.45)}.modal-head{display:flex;align-items:center;padding:12px 14px;border-bottom:1px solid var(--border)}.modal-head h2{margin:0;font-size:16px;flex:1 1 auto}.modal-body{overflow:auto;padding:10px 14px 16px;display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:4px 22px}.modal-body section{padding:4px 0 10px}.modal-body h3{margin:8px 0;font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.modal-body .row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:5px 0;font-size:12.5px}.modal-body .row input[type=number]{width:70px}.modal-body .row input[type=text],.modal-body .row input[type=url]{width:min(230px,55%)}.modal-body .row.check{justify-content:flex-start;gap:8px}.modal-foot{display:flex;align-items:center;gap:8px;padding:10px 14px;border-top:1px solid var(--border)}.modal-foot .spacer{flex:1 1 auto}.toast{position:fixed;left:50%;bottom:48px;transform:translate(-50%,12px);max-width:min(520px,calc(100vw - 24px));padding:9px 14px;background:var(--fg);color:var(--bg);border-radius:6px;font-size:12.5px;opacity:0;pointer-events:none;transition:opacity .16s,transform .16s;z-index:200;white-space:pre-wrap}.toast.show{opacity:1;transform:translate(-50%,0)}.toast.error{background:var(--danger);color:#fff}@media (max-width:900px){:root{--sidebar-w:240px}.top-actions .tool-btn{padding:5px 7px}#saveAsBtn,.brand span:last-child{display:none}}@media (max-width:720px){#topbar{height:44px;gap:5px}.doc-head{border-left:0;padding-left:0}#sidebar{position:absolute;top:44px;bottom:26px;left:0;z-index:40;width:min(84vw,320px);box-shadow:12px 0 32px rgba(0,0,0,.4)}#statusbar{gap:8px}#statusLang,#statusWasm{display:none}.modal-body{grid-template-columns:1fr}.tool-btn{padding:4px 6px;font-size:12px}}@media (max-width:520px){#openBtn{display:none}.top-actions{gap:3px}}@media (prefers-reduced-motion:reduce){*{transition:none!important}}