:root{--bg:#fff;--bg-2:#f6f7f9;--bg-3:#eceef2;--border:#dde1e7;--text:#1c2430;--text-muted:#687384;--accent:#0f766e;--accent-hover:#0b5f58;--accent-soft:#ccfbf1;--accent-contrast:#fff;--danger:#c2322f;--danger-soft:#fde8e8;--warning:#b7791f;--warning-soft:#fdf3dc;--info:#2b6cb0;--info-soft:#e3effc;--pdf-bg:#e4e7ec;--shadow:0 8px 28px #10182824, 0 2px 6px #1018280f;--radius:8px;--font:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--mono:ui-monospace, "Cascadia Code", "JetBrains Mono", Menlo, Consolas, monospace;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}[data-theme=dark]{--bg:#161b22;--bg-2:#1c222b;--bg-3:#262d38;--border:#303845;--text:#e3e8ef;--text-muted:#8b96a6;--accent:#2dd4bf;--accent-hover:#5eead4;--accent-soft:#134e4a;--accent-contrast:#062a27;--danger:#f87171;--danger-soft:#3b1d1d;--warning:#f6c25b;--warning-soft:#3a2f16;--info:#7cb4f5;--info-soft:#1b2b40;--pdf-bg:#0f1318;--shadow:0 10px 30px #00000080;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{background:var(--bg);height:100%;color:var(--text);font:14px/1.45 var(--font);margin:0}#app{height:100%}a{color:var(--accent)}button{font:inherit;color:inherit}h1,h2,h3{margin:0;font-weight:600}hr{border:0;border-top:1px solid var(--border);width:100%;margin:4px 0}.muted{color:var(--text-muted)}.small{font-size:12px}.mono{font-family:var(--mono);font-size:12.5px}.spacer{flex:1}[hidden]{display:none!important}:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.icon{flex:none;display:inline-flex}.icon svg{display:block}.btn{border:1px solid var(--border);background:var(--bg);cursor:pointer;white-space:nowrap;height:32px;color:var(--text);border-radius:6px;align-items:center;gap:6px;padding:0 12px;text-decoration:none;display:inline-flex}.btn:hover{background:var(--bg-3)}.btn:disabled{opacity:.6;cursor:default}.btn.small{height:28px;padding:0 9px;font-size:13px}.btn.wide{justify-content:center;width:100%}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-contrast);font-weight:500}.btn.primary:hover:not(:disabled){background:var(--accent-hover)}.btn.danger,.btn.primary.danger{color:var(--danger);border-color:var(--danger);background:0 0}.btn.primary.danger{background:var(--danger);color:#fff}.btn.active{background:var(--accent-soft);border-color:var(--accent)}.icon-btn{width:30px;height:30px;color:var(--text-muted);cursor:pointer;background:0 0;border:0;border-radius:6px;flex:none;justify-content:center;align-items:center;text-decoration:none;display:inline-flex}.icon-btn:hover:not(:disabled){background:var(--bg-3);color:var(--text)}.icon-btn:disabled,.icon-btn[aria-disabled=true]{opacity:.4;pointer-events:none}.txt-icon{font-size:15px;font-weight:700}.input{border:1px solid var(--border);background:var(--bg);height:34px;color:var(--text);font:inherit;border-radius:6px;width:100%;padding:0 10px}.input.small{width:auto;height:28px}.input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}select.input{padding-right:4px}.field{flex-direction:column;gap:5px;display:flex}.field-inline{flex-direction:row;justify-content:space-between;align-items:center;gap:16px}.field-inline .input{width:220px}.field-label{font-size:13px;font-weight:500}.field-hint{color:var(--text-muted);font-size:12px}.form-error{color:var(--danger);min-height:1px;font-size:13px}.input-row{gap:6px;display:flex}.stack{flex-direction:column;gap:14px;display:flex}.row-end{justify-content:flex-end;display:flex}.badge{background:var(--bg-3);color:var(--text-muted);vertical-align:middle;white-space:nowrap;border-radius:999px;margin-left:8px;padding:1px 7px;font-size:11px;font-weight:500;display:inline-block}.brand{color:var(--text);align-items:center;gap:8px;text-decoration:none;display:inline-flex}.brand-mark{background:var(--accent);width:30px;height:30px;color:var(--accent-contrast);letter-spacing:.02em;border-radius:7px;flex:none;place-items:center;font:700 11px/1 Georgia,Times New Roman,serif;display:inline-grid}.brand-mark.small{border-radius:6px;width:24px;height:24px;font-size:9px}.brand-name{font-size:18px;font-weight:500}.brand-name b{font-family:Georgia,Times New Roman,serif;font-weight:700}.brand-lg .brand-mark{width:40px;height:40px;font-size:14px}.brand-lg .brand-name{font-size:24px}.topbar{border-bottom:1px solid var(--border);background:var(--bg);flex:none;align-items:center;gap:10px;height:52px;padding:0 16px;display:flex}.avatar{color:#fff;-webkit-user-select:none;user-select:none;border-radius:50%;flex:none;place-items:center;width:28px;height:28px;font-size:11px;font-weight:600;display:inline-grid}.avatar.clickable{cursor:pointer}.avatar-btn{cursor:pointer;background:0 0;border:0;border-radius:50%;padding:0}.menu{z-index:1000;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);min-width:200px;max-width:340px;box-shadow:var(--shadow);padding:4px;position:fixed}.menu-item{text-align:left;cursor:pointer;background:0 0;border:0;border-radius:5px;align-items:center;gap:8px;width:100%;padding:7px 10px;display:flex}.menu-item span:nth-child(2){text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.menu-item .icon{width:16px;color:var(--text-muted)}.menu-item:hover:not(:disabled),.menu-item:focus-visible{background:var(--bg-3);outline:none}.menu-item:disabled{color:var(--text-muted);cursor:default;font-size:12px}.menu-item.danger{color:var(--danger)}.menu-check{color:var(--accent);font-weight:700}.menu-sep{background:var(--border);height:1px;margin:4px 0}.modal-backdrop{z-index:900;background:#0a0e1473;place-items:center;padding:16px;animation:.12s ease-out fade;display:grid;position:fixed;inset:0}.modal{background:var(--bg);border:1px solid var(--border);width:min(440px,100%);max-height:calc(100vh - 32px);box-shadow:var(--shadow);border-radius:12px;overflow:auto}.modal-wide{width:min(620px,100%)}.modal-head{justify-content:space-between;align-items:center;padding:14px 16px 6px 20px;display:flex}.modal-head h2{font-size:17px}.modal-body{padding:10px 20px 18px}.modal-body p{margin:0}.modal-foot{border-top:1px solid var(--border);background:var(--bg-2);border-radius:0 0 12px 12px;justify-content:flex-end;gap:8px;padding:12px 20px;display:flex}.toasts{z-index:1100;flex-direction:column;align-items:center;gap:8px;display:flex;position:fixed;bottom:16px;left:50%;transform:translate(-50%)}.toast{background:var(--text);color:var(--bg);box-shadow:var(--shadow);border-radius:8px;max-width:min(560px,100vw - 32px);padding:9px 16px;transition:opacity .3s,transform .3s}.toast-error{background:var(--danger);color:#fff}.toast.out{opacity:0;transform:translateY(8px)}@keyframes fade{0%{opacity:0}}.auth-page{background:radial-gradient(1200px 500px at 10% -10%, var(--accent-soft), transparent 60%), var(--bg-2);place-items:center;min-height:100%;padding:24px 16px;display:grid}.auth-card{border:1px solid var(--border);background:var(--bg);width:min(400px,100%);box-shadow:var(--shadow);border-radius:14px;padding:32px 28px}.auth-tagline{color:var(--text-muted);margin:10px 0 22px}.auth-title{margin-bottom:16px;font-size:20px}.auth-form{flex-direction:column;gap:14px;display:flex}.auth-switch{text-align:center;color:var(--text-muted);margin:18px 0 0}.dashboard{background:var(--bg-2);flex-direction:column;min-height:100%;display:flex}.dash-main{width:min(1040px,100%);margin:0 auto;padding:28px 16px 48px}.dash-head{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:18px;display:flex}.dash-head h1{font-size:24px}.search{width:240px}.project-list{border:1px solid var(--border);background:var(--bg);border-radius:10px;overflow:hidden}table.projects{border-collapse:collapse;width:100%}.projects th{text-align:left;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--border);padding:10px 16px;font-size:12px;font-weight:600}.projects td{border-bottom:1px solid var(--border);padding:11px 16px}.projects tr:last-child td{border-bottom:0}.projects tbody tr:hover{background:var(--bg-2)}.projects td.name a{color:var(--text);font-weight:500;text-decoration:none}.projects td.name a:hover{color:var(--accent)}.projects td.actions{text-align:right;width:48px}.empty-state{color:var(--text-muted);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:10px;height:100%;padding:48px 16px;display:flex}@media (max-width:640px){.projects th:nth-child(2),.projects td:nth-child(2){display:none}.search{order:5;width:100%}.hide-sm{display:none}}.page-loading{height:100%;color:var(--text-muted);place-items:center;display:grid}.editor-page{flex-direction:column;height:100%;display:flex;overflow:hidden}.editor-page.resizing{cursor:col-resize;-webkit-user-select:none;user-select:none}.editor-page.resizing iframe,.editor-page.resizing .pdf-host{pointer-events:none}.editor-top{gap:6px;height:46px;padding:0 10px}.project-name{cursor:pointer;text-overflow:ellipsis;white-space:nowrap;background:0 0;border:0;border-radius:6px;max-width:40vw;padding:4px 8px;font-size:15px;font-weight:600;overflow:hidden}.project-name:hover{background:var(--bg-3)}.conn-status{color:var(--warning);font-size:12px}.online{gap:2px;margin-right:6px;display:flex}.online .avatar{border:2px solid var(--bg);width:26px;height:26px}.workspace{--sidebar-w:240px;--split:.5;grid-template-columns:var(--sidebar-w) 5px calc((100% - var(--sidebar-w) - 10px) * var(--split)) 5px 1fr;flex:1;min-height:0;display:grid}.workspace[data-layout=editor]{grid-template-columns:var(--sidebar-w) 5px 1fr 0 0}.workspace[data-layout=pdf]{grid-template-columns:var(--sidebar-w) 5px 0 0 1fr}.workspace[data-layout=editor] .pane-pdf,.workspace[data-layout=pdf] .pane-editor,.workspace[data-layout=editor] .splitter:nth-of-type(2),.workspace[data-layout=pdf] .splitter:nth-of-type(2){display:none}.splitter{background:var(--border);cursor:col-resize;border-left:2px solid var(--bg-2);border-right:2px solid var(--bg-2);touch-action:none}.splitter:hover{background:var(--accent)}.sidebar{background:var(--bg-2);flex-direction:column;min-width:0;min-height:0;display:flex}.section-head{flex:none;align-items:center;height:38px;padding:0 6px 0 12px;display:flex}.section-title{text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);cursor:pointer;background:0 0;border:0;align-items:center;gap:4px;padding:0;font-size:11.5px;font-weight:600;display:inline-flex}.outline-head{border-top:1px solid var(--border)}.tree-host{flex:1;min-height:80px;overflow:auto}.outline-host{flex:0 36%;min-height:60px;padding-bottom:8px;overflow:auto}.filetree{min-height:100%;padding:2px 0 12px}.filetree.drop-target{background:var(--accent-soft)}.tree-row{cursor:pointer;height:28px;color:var(--text);-webkit-user-select:none;user-select:none;white-space:nowrap;align-items:center;gap:5px;padding-right:8px;display:flex}.tree-row .icon{color:var(--text-muted)}.tree-row:hover{background:var(--bg-3)}.tree-row.selected{background:var(--accent-soft);box-shadow:inset 3px 0 0 var(--accent)}.tree-row.drop-target{outline:2px dashed var(--accent);outline-offset:-2px}.tree-indent{flex:none;width:14px}.tree-name{text-overflow:ellipsis;flex:1;overflow:hidden}.tree-main{background:var(--accent);color:var(--accent-contrast);border-radius:4px;padding:0 5px;font-size:10px;font-weight:600}.outline-item{text-align:left;width:100%;color:var(--text);cursor:pointer;text-overflow:ellipsis;white-space:nowrap;background:0 0;border:0;padding:4px 10px;font-size:13px;display:block;overflow:hidden}.outline-item:hover{background:var(--bg-3)}.outline-item.active{color:var(--accent);font-weight:600}.outline-empty{color:var(--text-muted);padding:4px 12px;font-size:12.5px}.pane{background:var(--bg);flex-direction:column;min-width:0;min-height:0;display:flex}.pane-toolbar{border-bottom:1px solid var(--border);background:var(--bg-2);flex:none;align-items:center;gap:4px;height:40px;padding:0 8px;display:flex;overflow:hidden}.file-path{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;min-width:0;padding-left:4px;font-size:13px;overflow:hidden}.format-bar{gap:1px;display:flex}.toolbar-sep{background:var(--border);width:1px;height:20px;margin:0 4px}.editor-host{flex:1;min-height:0;position:relative;overflow:hidden}.editor-host>.cm-editor{height:100%}.file-preview{background:var(--bg-2);place-items:center;height:100%;padding:16px;display:grid;overflow:auto}.file-preview img{background:repeating-conic-gradient(#ddd 0 25%, #fff 0 50%) 0 0 / 16px 16px;max-width:100%;max-height:100%;box-shadow:var(--shadow)}.file-preview iframe{border:0;width:100%;height:100%}.split-btn{display:inline-flex}.compile-btn{border-radius:6px 0 0 6px;height:30px}.compile-more{border-left:1px solid #ffffff40;border-radius:0 6px 6px 0;height:30px;padding:0 6px}.compile-btn.busy .icon{animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.logs-btn{margin-left:6px}.log-counts{gap:3px;display:inline-flex}.count{text-align:center;color:#fff;border-radius:999px;min-width:18px;padding:0 5px;font-size:11px;font-weight:700;line-height:18px}.count-error{background:var(--danger)}.count-warning{background:var(--warning)}.count-info{background:var(--info)}.page-label{white-space:nowrap;margin-right:6px;font-size:12.5px}.zoom-label{justify-content:center;min-width:58px}.pdf-stack{flex:1;min-height:0;position:relative}.pdf-stack>.pdf-host,.pdf-stack>.logs-host{position:absolute;inset:0}.logs-host{background:var(--bg);z-index:2;overflow:auto}.logs-head{background:var(--bg);border-bottom:1px solid var(--border);align-items:center;gap:8px;padding:10px 14px;display:flex;position:sticky;top:0}.logs-head h3{font-size:14px}.logs-body{flex-direction:column;gap:8px;padding:12px 14px 24px;display:flex}.log-item{border:1px solid var(--border);border-left:4px solid var(--info);background:var(--info-soft);border-radius:6px;overflow:hidden}.log-item.log-error{border-left-color:var(--danger);background:var(--danger-soft)}.log-item.log-warning{border-left-color:var(--warning);background:var(--warning-soft)}.log-item-head{flex-wrap:wrap;align-items:baseline;gap:8px;padding:8px 10px;display:flex}.log-level{text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);font-size:11px;font-weight:700}.log-message{word-break:break-word;flex:1;min-width:200px;font-weight:500}.log-where{color:var(--accent);font-family:var(--mono);cursor:pointer;background:0 0;border:0;padding:0;font-size:12px;text-decoration:underline}.log-context{border-top:1px solid var(--border);background:var(--bg);font:12px/1.45 var(--mono);white-space:pre-wrap;word-break:break-word;max-height:180px;margin:0;padding:8px 10px;overflow:auto}.log-ok{text-align:center;color:var(--text-muted);padding:24px}.log-raw{margin-top:10px}.log-raw summary{cursor:pointer;padding:4px 0;font-weight:500}.log-raw pre{border:1px solid var(--border);background:var(--bg-2);max-height:420px;font:11.5px/1.45 var(--mono);white-space:pre-wrap;word-break:break-all;border-radius:6px;margin:6px 0 0;padding:10px;overflow:auto}.page-overlay{z-index:800;background:#0a0e1480;place-items:center;display:grid;position:fixed;inset:0}.overlay-card{background:var(--bg);box-shadow:var(--shadow);text-align:center;border-radius:12px;flex-direction:column;align-items:center;gap:14px;padding:24px 28px;display:flex}.subhead{margin-top:6px;font-size:14px}.members{flex-direction:column;gap:8px;display:flex}.member{align-items:center;gap:10px;display:flex}.member-name{flex:1;min-width:0}@media (max-width:900px){.workspace,.workspace[data-layout]{grid-template-columns:0 0 1fr 0 0}.workspace .sidebar,.workspace .splitter{display:none}.workspace[data-layout=pdf]{grid-template-columns:0 0 0 0 1fr}.workspace[data-layout=both] .pane-pdf,.format-bar{display:none}}.editor-body{flex:1;min-height:0;display:flex;position:relative;container-type:inline-size}.editor-body>.editor-host{flex:1;min-width:0}.ai-host{border-left:1px solid var(--border);background:var(--bg-2);flex:0 0 clamp(250px,44%,420px);min-width:0;display:flex}.icon-btn.ai-toggle.active{background:var(--accent-soft);color:var(--accent)}.ai-panel{flex-direction:column;flex:1;min-width:0;display:flex;container-type:inline-size}@container (width<=380px){.ai-code-head .ai-btn-label{display:none}}.ai-head{height:38px;color:var(--accent);flex:none;align-items:center;gap:6px;padding:0 6px 0 12px;display:flex}.ai-title{color:var(--text);font-weight:600}.ai-model-row{flex:none;padding:0 10px 8px}.ai-model{width:100%}.ai-actions{border-bottom:1px solid var(--border);flex-wrap:wrap;flex:none;gap:5px;padding:0 10px 8px;display:flex}.chip{border:1px solid var(--border);background:var(--bg);color:var(--text);cursor:pointer;white-space:nowrap;border-radius:999px;padding:3px 10px;font-size:12px}.chip:hover{border-color:var(--accent);color:var(--accent)}.chip.chip-alert{border-color:var(--danger);color:var(--danger)}.ai-log{flex-direction:column;flex:1;gap:10px;min-height:0;padding:10px;display:flex;overflow:auto}.ai-empty{text-align:center;color:var(--text-muted);margin:auto 0;padding:12px}.ai-msg{word-break:break-word;border-radius:8px;padding:8px 10px;font-size:13.5px}.ai-msg p,.ai-msg ul,.ai-msg ol{white-space:pre-wrap;margin:0 0 6px}.ai-msg ul,.ai-msg ol{white-space:normal;padding-left:20px}.ai-msg>:last-child{margin-bottom:0}.ai-msg code{font-family:var(--mono);background:var(--bg-3);border-radius:4px;padding:0 3px;font-size:12px}.ai-user{background:var(--accent-soft);white-space:pre-wrap;align-self:flex-end;max-width:90%}.ai-tag{font-size:12.5px;font-weight:600}.ai-assistant{background:var(--bg);border:1px solid var(--border)}.ai-heading{font-weight:600}.ai-thinking{color:var(--text-muted);animation:1.2s ease-in-out infinite ai-pulse}@keyframes ai-pulse{50%{opacity:.4}}.ai-error{color:var(--danger);align-items:flex-start;gap:6px;display:flex}.ai-code{border:1px solid var(--border);background:var(--bg-2);border-radius:6px;margin:6px 0;overflow:hidden}.ai-code-head{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:4px;padding:4px 6px;display:flex}.ai-code-head .btn.small{height:24px;padding:0 7px;font-size:12px}.ai-code-lang{font:11px var(--mono);color:var(--text-muted);text-transform:lowercase}.ai-code pre{max-height:360px;font:12px/1.45 var(--mono);white-space:pre;margin:0;padding:8px 10px;overflow:auto}.ai-msg .ai-code code{background:0 0;padding:0}.ai-foot{border-top:1px solid var(--border);flex-direction:column;flex:none;gap:6px;padding:8px 10px 10px;display:flex}.ai-ctx{color:var(--text-muted);flex-wrap:wrap;gap:12px;font-size:12px;display:flex}.ai-check{cursor:pointer;align-items:center;gap:4px;display:inline-flex}.ai-compose{align-items:flex-end;gap:6px;display:flex}.ai-input{resize:vertical;min-width:0;height:auto;min-height:56px;max-height:220px;font:inherit;flex:1;padding:6px 8px}.ai-send.danger{color:var(--accent-contrast);background:var(--danger);border-color:var(--danger)}@container (width<=480px){.ai-host{z-index:5;border-left:0;position:absolute;inset:0}}
