:root,[data-theme=light]{--bg: #f6f7f9;--panel: #ffffff;--text: #1f2328;--muted: #656d76;--border: #e1e4e8;--accent: #1f6feb;--accent-text: #ffffff;--error-bg: #ffebe9;--error-border: #ffcecb;--error-text: #cf222e;--notice-bg: #dafbe1;--notice-border: #aceebb;--notice-text: #116329}[data-theme=dark]{--bg: #0d1117;--panel: #161b22;--text: #e6edf3;--muted: #8b949e;--border: #30363d;--accent: #388bfd;--accent-text: #ffffff;--error-bg: #3d1418;--error-border: #6e2b30;--error-text: #ff9a9a;--notice-bg: #12261a;--notice-border: #2b5c3a;--notice-text: #8ee6a8}*{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--text)}body{font-family:system-ui,-apple-system,Segoe UI,sans-serif;line-height:1.6}.shell{min-height:100vh}.shell .appbar{display:flex;align-items:center;gap:1.5rem;padding:.6rem 1.5rem;background:var(--panel);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:10}.brand{display:flex;align-items:center;color:var(--text);text-decoration:none}.brand img{height:2rem;width:auto}.brand-mark{width:2rem;height:2rem;border-radius:8px;display:grid;place-items:center;background:var(--accent);color:var(--accent-text);font-weight:700;font-size:.9rem}.appnav{display:flex;gap:.25rem;flex:1;justify-content:center}.appnav button{border:none;background:transparent;color:var(--muted);padding:.4rem .7rem;border-radius:6px;font:inherit;font-size:.9rem;cursor:pointer}.appnav button:hover{color:var(--text);background:var(--bg)}.appnav button.active{color:var(--text);background:var(--bg);font-weight:600}.appactions{display:flex;align-items:center;gap:.6rem}.theme-button{border:1px solid var(--border);background:transparent;color:var(--text);border-radius:6px;padding:.3rem .7rem;font:inherit;font-size:.85rem;cursor:pointer}.avatar-wrap{position:relative}.avatar{width:2.1rem;height:2.1rem;border-radius:50%;border:1px solid var(--border);background:var(--accent);color:var(--accent-text);font-weight:700;cursor:pointer;overflow:hidden;padding:0;display:grid;place-items:center}.avatar-img{width:100%;height:100%;object-fit:cover;display:block}.avatar-large{width:4rem;height:4rem;cursor:default;font-size:1.4rem}.avatar-preview{display:flex;align-items:center;gap:1rem;margin-bottom:1.5rem}.upload{display:block;margin-bottom:.25rem}.upload input{margin-top:.35rem}.avatar-menu{position:absolute;right:0;top:calc(100% + .4rem);min-width:10rem;background:var(--panel);border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 24px #0000001f;padding:.35rem;display:flex;flex-direction:column}.avatar-menu button,.avatar-menu a{text-align:left;border:none;background:transparent;color:var(--text);padding:.45rem .6rem;border-radius:6px;font:inherit;font-size:.88rem;text-decoration:none;cursor:pointer}.avatar-menu button:hover,.avatar-menu a:hover{background:var(--bg)}.appmain{max-width:60rem;margin:0 auto;padding:1.5rem 1.5rem 4rem}.appmain section{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:1.5rem}section h2{font-size:1.1rem;margin:0 0 1rem}section h3{font-size:.95rem;margin:1.75rem 0 .5rem}label{display:block;margin-bottom:.75rem;font-size:.9rem;color:var(--muted)}label input,label select,label textarea,input,select,textarea{display:block;width:100%;margin-top:.25rem;padding:.5rem;border:1px solid var(--border);border-radius:6px;font:inherit;color:var(--text);background:var(--panel)}textarea{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.85rem}input:disabled{color:var(--muted);background:var(--bg)}.checkbox{display:flex;align-items:center;gap:.5rem;color:var(--text);margin-bottom:0}.checkbox input{width:auto;margin:0}button{padding:.45rem .9rem;border:1px solid var(--border);border-radius:6px;background:var(--panel);color:var(--text);font:inherit;cursor:pointer}button[type=submit],button.active{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}button:disabled{opacity:.6;cursor:not-allowed}.row{display:flex;gap:1rem;flex-wrap:wrap}.row>label{flex:1;min-width:12rem}.row.align{align-items:flex-end}.row.align>button{margin-bottom:.75rem}.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}table{width:100%;border-collapse:collapse;font-size:.9rem;margin-top:1rem}th,td{text-align:left;padding:.45rem .5rem;border-bottom:1px solid var(--border)}td button{margin-right:.4rem}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;word-break:break-all}.small{font-size:.8rem}.error{color:var(--error-text);background:var(--error-bg);border:1px solid var(--error-border);border-radius:6px;padding:.5rem .75rem}.notice{color:var(--notice-text);background:var(--notice-bg);border:1px solid var(--notice-border);border-radius:6px;padding:.5rem .75rem}.hint{color:var(--muted);font-size:.85rem}.auth{max-width:26rem;margin:4rem auto;background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:1.75rem}.auth h1{font-size:1.4rem;margin:0 0 1rem}.tabs{display:flex;gap:.5rem;margin-bottom:1rem}.tabs button{flex:1}.tabs.small button{padding:.3rem .7rem;font-size:.85rem}.tabs button.active{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.editor-shell{border:1px solid var(--border);border-radius:10px;overflow:hidden;background:var(--panel);margin:.5rem 0 1rem}.editor-toolbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.45rem .8rem;background:var(--bg);border-bottom:1px solid var(--border);color:var(--muted);font-size:.8rem}.editor-toolbar span:first-child{color:var(--text);font-weight:600}.editor-toolbar-right{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;justify-content:flex-end}.preview-toggle{padding:.2rem .55rem;font-size:.75rem;min-height:0;border-radius:5px}.editor-workbench{display:grid;grid-template-columns:minmax(0,1fr)}.editor-workbench.with-preview{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.editor-pane{min-width:0}.preview-pane{min-width:0;display:flex;flex-direction:column;border-left:1px solid var(--border);background:#fff}.preview-head{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.45rem .8rem;background:var(--bg);border-bottom:1px solid var(--border);color:var(--muted);font-size:.8rem}.preview-head span:first-child{color:var(--text);font-weight:600}.preview-frame{width:100%;height:58vh;min-height:20rem;border:0;background:#fff}.preview-error{margin:.75rem}.preview-empty{padding:1rem;color:var(--muted);font-size:.85rem;background:var(--bg);border-top:1px solid var(--border)}.code-editor .cm-editor{min-height:20rem}.code-editor .cm-scroller{max-height:58vh}.code-editor .cm-editor.cm-focused{outline:none}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:grid;place-items:center;padding:1rem;background:#0000007a}.modal{width:min(26rem,100%);background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:1.25rem;box-shadow:0 20px 60px #00000047}.modal h3{margin:0 0 .35rem;font-size:1.05rem}.modal .tabs{margin:.9rem 0}.modal-actions{display:flex;justify-content:flex-end;gap:.5rem;margin-top:.9rem;flex-wrap:wrap}.build-log{max-height:16rem;overflow:auto;background:var(--bg,#f6f6f4);padding:.75rem;font-size:.8rem;line-height:1.5;white-space:pre-wrap;word-break:break-all}.dir-tree-toggle{border:1px solid var(--border);background:transparent;color:var(--text);border-radius:6px;padding:.3rem .7rem;font:inherit;font-size:.9rem;cursor:pointer}.dir-tree-panel{position:absolute;top:100%;left:1.5rem;z-index:20;width:min(24rem,calc(100vw - 3rem));max-height:70vh;overflow:auto;padding:.9rem 1rem;background:var(--panel);border:1px solid var(--border);border-radius:0 0 10px 10px;box-shadow:0 12px 30px #0000002e}.dir-tree-title{color:var(--muted);font-size:.8rem;margin-bottom:.4rem}.dir-tree,.dir-children{list-style:none;margin:0;padding-left:.9rem}.dir-tree{padding-left:0}.dir-tree li{margin:.15rem 0}.dir-toggle,.dir-file{border:0;background:transparent;color:var(--text);font:inherit;font-size:.9rem;cursor:pointer;padding:.1rem 0;text-align:left}.dir-toggle:before{content:"▸ ";color:var(--muted)}.dir-toggle[aria-expanded=true]:before{content:"▾ "}.dir-file{color:var(--muted)}.dir-file:hover{color:var(--accent)}.dir-file:before{content:"· ";color:var(--border)}@media (max-width: 720px){.shell .appbar{flex-wrap:wrap;gap:.5rem .65rem;padding:.5rem .8rem}.brand img{height:1.8rem}.brand-mark{width:1.8rem;height:1.8rem}.appnav{order:5;flex:1 0 100%;justify-content:flex-start;overflow-x:auto;gap:.15rem;padding-bottom:.1rem;scrollbar-width:none}.appnav::-webkit-scrollbar{display:none}.appnav button{flex:0 0 auto;white-space:nowrap;padding:.45rem .65rem}.appactions{margin-left:auto;gap:.45rem}.theme-button{padding:.35rem .55rem;font-size:.8rem}.appmain{padding:.85rem .75rem 3rem}.appmain section{padding:1rem .85rem;border-radius:8px}section h2{font-size:1.05rem}.row{flex-direction:column;gap:.25rem}.row>label{min-width:0;width:100%}.row.align{align-items:stretch}.row.align>button{width:100%;margin-bottom:.35rem}.row.align>.checkbox{margin-bottom:.35rem}label input,label select,label textarea,input,select,textarea{font-size:16px}button{min-height:2.4rem}.table-wrap{margin-top:1rem;border:1px solid var(--border);border-radius:6px}.table-wrap table{margin-top:0;min-width:36rem}.table-wrap th,.table-wrap td{white-space:nowrap}.table-wrap td:first-child{white-space:normal;min-width:8rem}.dir-tree-panel{left:.8rem;width:calc(100vw - 1.6rem);max-height:calc(100vh - 8rem)}.avatar-menu{right:0}.auth{max-width:none;margin:2rem .85rem;padding:1.25rem}.auth h1{font-size:1.25rem}.tabs{gap:.35rem}.tabs button{padding:.5rem .35rem;font-size:.85rem}.editor-toolbar{font-size:.75rem}.editor-shell .cm-editor{min-height:15rem}.code-editor .cm-scroller{max-height:45vh}.build-log{font-size:.75rem}.editor-toolbar-right{gap:.4rem}.preview-toggle{padding:.25rem .5rem;font-size:.75rem;min-height:0}.editor-workbench.with-preview{grid-template-columns:minmax(0,1fr)}.preview-pane{border-left:0;border-top:1px solid var(--border)}.preview-frame{height:45vh;min-height:14rem}}@media (max-width: 380px){.appbar{padding-left:.6rem;padding-right:.6rem}.appactions{gap:.3rem}.theme-button{padding-left:.4rem;padding-right:.4rem}.avatar{width:1.95rem;height:1.95rem}}.projects-layout{display:grid;grid-template-columns:240px minmax(0,1fr);gap:1rem;align-items:start}.project-sidebar{display:flex;flex-direction:column;gap:.75rem;padding:.75rem;border:1px solid var(--border);border-radius:10px;background:var(--panel)}.project-create{display:flex;flex-direction:column;gap:.5rem;padding-bottom:.75rem;border-bottom:1px solid var(--border)}.project-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.3rem}.project-list button{width:100%;display:flex;flex-direction:column;align-items:flex-start;gap:.15rem;text-align:left;padding:.45rem .55rem;border:1px solid transparent;border-radius:8px;background:transparent}.project-list button.active,.project-files button.active{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,transparent)}.project-list small{color:var(--muted)}.project-main{min-width:0;display:flex;flex-direction:column;gap:.75rem}.project-head{display:flex;justify-content:space-between;gap:1rem;align-items:flex-start}.project-head h3{margin:0 0 .25rem}.project-head-actions{display:flex;gap:.4rem}.project-browser{display:grid;grid-template-columns:260px minmax(0,1fr);gap:1rem;align-items:start}.project-files{border:1px solid var(--border);border-radius:10px;background:var(--panel);padding:.6rem;min-height:12rem}.project-crumbs{display:flex;flex-wrap:wrap;gap:.2rem;margin-bottom:.5rem}.project-crumbs button{font-size:.8rem;padding:.15rem .3rem;background:transparent;border:0;color:var(--accent)}.project-files ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.2rem}.project-files li button{width:100%;display:flex;justify-content:space-between;gap:.5rem;text-align:left;padding:.3rem .4rem;border:1px solid transparent;border-radius:6px;background:transparent}.project-files small{color:var(--muted)}.project-editor{min-width:0;border:1px solid var(--border);border-radius:10px;background:var(--panel);padding:.75rem}.project-tabs{display:flex;gap:.25rem;border-bottom:1px solid var(--border)}.project-tabs button{padding:.4rem .8rem;border:1px solid transparent;border-bottom:2px solid transparent;border-radius:8px 8px 0 0;background:transparent;color:var(--muted)}.project-tabs button.active{color:var(--accent);border-bottom-color:var(--accent);background:color-mix(in srgb,var(--accent) 8%,transparent)}.collab-layout{display:grid;grid-template-columns:minmax(0,320px) minmax(0,1fr);gap:1rem;align-items:start}.collab-list,.collab-detail{min-width:0;border:1px solid var(--border);border-radius:10px;background:var(--panel);padding:.75rem}.collab-create{display:flex;flex-direction:column;gap:.5rem;padding-bottom:.75rem;border-bottom:1px solid var(--border)}.collab-create h4,.collab-detail h4{margin:0}.collab-create label{display:flex;flex-direction:column;gap:.2rem}.collab-items{list-style:none;margin:.75rem 0 0;padding:0;display:flex;flex-direction:column;gap:.3rem}.collab-items li.hint{padding:.3rem .4rem}.collab-items button{width:100%;display:flex;flex-direction:column;align-items:flex-start;gap:.15rem;text-align:left;padding:.45rem .55rem;border:1px solid transparent;border-radius:8px;background:transparent}.collab-items button.active{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,transparent)}.collab-items small{color:var(--muted)}.collab-detail-head{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.collab-detail h5{margin:1rem 0 .4rem;font-size:.9rem}.collab-body{white-space:pre-wrap;overflow-wrap:anywhere;margin:.5rem 0}.commit-message{white-space:pre-wrap;overflow-wrap:anywhere;margin:.5rem 0;padding:.6rem .75rem;border:1px solid var(--border);border-radius:.5rem;background:var(--panel, transparent);font-size:.85rem}.pill{flex:none;font-size:.75rem;padding:.1rem .5rem;border-radius:999px;border:1px solid var(--border);color:var(--muted)}.pill.status-open{color:var(--notice-text);border-color:var(--notice-border);background:var(--notice-bg)}.pill.status-merged{color:var(--accent-text);border-color:var(--accent);background:var(--accent)}.pill.status-closed{color:var(--muted);border-color:var(--border)}.diff-list,.comment-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.4rem}.diff-list li{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;padding:.3rem .5rem;border:1px solid var(--border);border-radius:6px;overflow-wrap:anywhere}.diff-status{flex:none;font-size:.75rem;padding:.05rem .4rem;border-radius:4px;border:1px solid var(--border)}.diff-status.diff-add{color:var(--notice-text);border-color:var(--notice-border);background:var(--notice-bg)}.diff-status.diff-delete{color:var(--error-text);border-color:var(--error-border);background:var(--error-bg)}.diff-status.diff-modify{color:var(--accent);border-color:var(--accent)}.diff-list li.diff-file{display:block;padding:0;overflow:hidden}.diff-file-head{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;padding:.4rem .6rem;border-bottom:1px solid var(--border)}.diff-file-head code{overflow-wrap:anywhere}.diff-stat{margin-left:auto;display:inline-flex;gap:.5rem;font-size:.8rem;font-variant-numeric:tabular-nums}.diff-plus{color:var(--notice-text)}.diff-minus{color:var(--error-text)}.diff-hunk{border-top:1px solid var(--border)}.diff-hunk:first-of-type{border-top:none}.diff-hunk-head{padding:.2rem .6rem;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.78rem;color:var(--muted)}.diff-table{width:100%;border-collapse:collapse;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.78rem;line-height:1.5;table-layout:fixed}.diff-no{width:3.2rem;padding:0 .4rem;text-align:right;color:var(--muted);-webkit-user-select:none;user-select:none;vertical-align:top;font-variant-numeric:tabular-nums}.diff-sign{width:1.2rem;text-align:center;-webkit-user-select:none;user-select:none;vertical-align:top}.diff-text{padding-right:.6rem;overflow-x:auto;white-space:pre}.diff-row.diff-add{background:var(--notice-bg)}.diff-row.diff-del{background:var(--error-bg)}.comment-list li{padding:.5rem .6rem;border:1px solid var(--border);border-radius:8px}.comment-list li.hint{border-style:dashed}.comment-meta{font-size:.8rem;color:var(--muted)}.comment-form{display:flex;flex-direction:column;gap:.5rem;margin-top:.75rem}.comment-form button{align-self:flex-start}@media (max-width: 900px){.collab-layout{grid-template-columns:minmax(0,1fr)}}@media (max-width: 900px){.projects-layout,.project-browser{grid-template-columns:minmax(0,1fr)}}.token-list{list-style:none;padding:0;margin:.75rem 0;display:flex;flex-direction:column;gap:.5rem}.token-list li{display:flex;justify-content:space-between;align-items:center;gap:.75rem;padding:.5rem .75rem;border:1px solid var(--border);border-radius:8px;background:var(--panel)}.token-list button.danger{color:var(--error-text);border-color:var(--error-border);background:transparent}
