@import url("https://fonts.googleapis.com/css2?family=Geist:wght@400;500;600;700&family=Geist+Mono:wght@400;500&display=swap");@import url("https://unpkg.com/@phosphor-icons/web@2.1.1/src/regular/style.css");@import url("https://unpkg.com/@phosphor-icons/web@2.1.1/src/fill/style.css");:root{--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:40px;--space-8:56px;--canvas:#eceff3;--surface:#fff;--surface-2:#f6f7f9;--surface-3:#eef0f4;--line:#e6e9ee;--fg:#151821;--fg-2:#5b6472;--fg-3:#98a1b0;--accent:#b5822a;--accent-soft:#fdf4e4;--accent-line:#f1e2c4;--shadow:0 1px 2px rgba(21,24,33,.04),0 8px 24px rgba(21,24,33,.06);--shadow-sm:0 1px 2px rgba(21,24,33,.05);--r-lg:20px;--r-md:14px;--r-sm:10px;--code-bg:#f6f7f9;--code-fg:#242a35;--ok:#2e9e5b;--danger:#d64545;--font-ui:"Geist",Inter,-apple-system,sans-serif;--font-mono:"Geist Mono",ui-monospace,monospace}:root[data-theme=dark]{--canvas:#0c0e12;--surface:#14171d;--surface-2:#191d24;--surface-3:#1f242c;--line:#242932;--fg:#eceef2;--fg-2:#98a1af;--fg-3:#6b7482;--accent:#e0ab52;--accent-soft:rgba(224,171,82,.12);--accent-line:rgba(224,171,82,.28);--shadow:0 1px 2px rgba(0,0,0,.4),0 10px 30px rgba(0,0,0,.32);--shadow-sm:0 1px 2px rgba(0,0,0,.35);--code-bg:#101318;--code-fg:#dfe3ea}*{box-sizing:border-box}body,html{margin:0;padding:0;height:100%;overflow:hidden}body{background:var(--canvas);color:var(--fg);font-family:var(--font-ui);font-size:14px;-webkit-font-smoothing:antialiased}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline;text-underline-offset:3px}::selection{background:var(--accent-soft);color:var(--accent)}button{font-family:inherit}i.ph,i.ph-fill{display:inline-block;line-height:1}*{scrollbar-width:thin;scrollbar-color:var(--surface-3) transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--surface-3);border:3px solid transparent;background-clip:content-box;border-radius:8px}::-webkit-scrollbar-track{background:transparent}.frame{height:100vh;padding:var(--space-4);background:var(--canvas)}.app{height:100%;display:grid;grid-template-columns:244px minmax(0,1fr);background:var(--surface);border-radius:var(--r-lg);box-shadow:var(--shadow);overflow:hidden}.main-col{display:grid;grid-template-rows:auto minmax(0,1fr);min-width:0;background:var(--canvas)}.sidebar{display:flex;flex-direction:column;border-right:1px solid var(--line);overflow-y:auto;padding:var(--space-5) var(--space-3);background:var(--surface)}.side-brand{display:flex;align-items:center;gap:var(--space-2);padding:0 var(--space-3) var(--space-5);color:var(--fg)}.side-brand:hover{text-decoration:none}.side-brand .mark{width:26px;height:26px;border-radius:9px;background:var(--accent);display:flex;align-items:center;justify-content:center;color:#fff;font-size:13px;font-weight:700}.side-brand .name{font-size:17px;font-weight:600}.side-label{display:flex;align-items:center;justify-content:space-between;padding:0 var(--space-3) var(--space-3);font-size:11px;font-weight:600;color:var(--fg-3);letter-spacing:.02em}.side-tree{display:flex;flex-direction:column;gap:2px;flex:1 1}.sidebar details>summary{cursor:pointer;list-style:none;display:flex;align-items:center;gap:var(--space-2);width:100%;padding:var(--space-2) var(--space-3);border-radius:var(--r-sm);color:var(--fg);font-size:13.5px;font-weight:500;-webkit-user-select:none;-moz-user-select:none;user-select:none}.sidebar summary::-webkit-details-marker{display:none}.sidebar summary:hover{background:var(--surface-2)}.sidebar summary .caret{font-size:13px;color:var(--fg-3);transition:transform .15s ease}.sidebar details[open]>summary .caret{transform:rotate(90deg)}.sidebar summary .ficon{font-size:17px;color:var(--fg-3)}.sidebar summary .folder-name{flex:1 1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar summary .count{font-size:11px;color:var(--fg-3);background:var(--surface-2);border-radius:6px;padding:1px 6px}.sidebar .children{display:flex;flex-direction:column;gap:1px;padding:2px 0 var(--space-2) var(--space-3);margin-left:var(--space-4);border-left:1px solid var(--line)}.sidebar .children .children{margin-left:var(--space-3)}.sidebar .file-link{display:block;padding:6px var(--space-3);border-radius:var(--r-sm);color:var(--fg-2);font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar .file-link:hover{background:var(--surface-2);color:var(--fg);text-decoration:none}.sidebar .file-link.active{background:var(--accent-soft);color:var(--accent);font-weight:500}.side-user{margin-top:var(--space-5);padding:var(--space-3);border-radius:var(--r-md);background:var(--surface-2);gap:var(--space-3)}.side-user,.side-user .avatar{display:flex;align-items:center}.side-user .avatar{width:30px;height:30px;border-radius:50%;background:var(--accent-soft);color:var(--accent);justify-content:center;font-size:12px;font-weight:600;flex:0 0 auto}.side-user .who{flex:1 1;min-width:0}.side-user .who .n{font-size:13px;font-weight:500}.side-user .who .s{font-family:var(--font-mono);font-size:10.5px;color:var(--fg-3)}.side-user .logout-btn{background:none;border:0;color:var(--fg-3);cursor:pointer;padding:4px;border-radius:8px;display:flex}.side-user .logout-btn:hover{color:var(--fg);background:var(--surface-3)}.topbar{gap:var(--space-4);padding:var(--space-4) var(--space-5);background:var(--surface);border-bottom:1px solid var(--line)}.search-trigger,.topbar{display:flex;align-items:center}.search-trigger{gap:var(--space-3);flex:0 1 420px;min-width:160px;height:40px;padding:0 var(--space-4);background:var(--surface-2);border:1px solid transparent;border-radius:999px;color:var(--fg-3);font-size:14px;cursor:pointer;text-align:left}.search-trigger:hover{border-color:var(--line)}.search-trigger .st-text{flex:1 1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kbd-chip{font-family:var(--font-mono);font-size:11px;color:var(--fg-3);background:var(--surface);border-radius:6px;padding:2px 6px}.topbar-spacer{flex:1 1}.topbar-actions{display:flex;flex:0 0 auto}.btn,.topbar-actions{align-items:center;gap:var(--space-2)}.btn{display:inline-flex;height:36px;padding:0 var(--space-4);border-radius:999px;background:var(--surface-2);border:0;color:var(--fg-2);font-size:13px;font-weight:500;cursor:pointer;white-space:nowrap}.btn:hover{color:var(--fg);text-decoration:none}.btn.icon-only{width:36px;padding:0;justify-content:center}.btn.primary{background:var(--accent);color:#fff;box-shadow:var(--shadow-sm)}.btn.primary:hover{filter:brightness(1.06);color:#fff}.btn:disabled{opacity:.55;cursor:default}.content-area{display:grid;grid-template-columns:minmax(0,1fr) 312px;background:var(--canvas)}.content-area.no-toc{grid-template-columns:minmax(0,1fr)}.main-scroll{overflow-y:auto;min-width:0;padding:var(--space-5) var(--space-4) var(--space-8) var(--space-5)}.page{max-width:812px;margin:0 auto;display:flex;flex-direction:column;gap:var(--space-4)}.crumbs{display:flex;align-items:center;gap:var(--space-2);font-size:13px;color:var(--fg-3)}.crumbs .sep{font-size:11px}.crumbs .here{color:var(--fg);font-weight:500}.card{background:var(--surface);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);padding:var(--space-6)}.pill-badge{display:inline-flex;align-items:center;gap:var(--space-2);height:26px;padding:0 var(--space-3);border-radius:999px;background:var(--accent-soft);color:var(--accent);font-size:12px;font-weight:500;margin-bottom:var(--space-4)}.pill-badge i{font-size:7px}.page-footer{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-4);padding:var(--space-4) var(--space-5);border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--shadow-sm);font-size:12.5px;color:var(--fg-3)}.page-footer .meta-item{display:flex;align-items:center;gap:var(--space-2)}.page-footer .meta-item i{font-size:15px}.page-footer .mono{font-family:var(--font-mono)}.page-footer .grow{flex:1 1}.toc{overflow-y:auto;min-width:0;padding:var(--space-5) var(--space-5) var(--space-8) 0;display:flex;flex-direction:column;gap:var(--space-4);align-content:start}.rail-card{background:var(--surface);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);padding:var(--space-5)}.rail-card .rail-title{font-size:14px;font-weight:600;margin-bottom:var(--space-3)}.toc a.toc-link{display:block;padding:6px var(--space-3);border-radius:var(--r-sm);color:var(--fg-2);font-size:13px}.toc a.toc-link:hover{background:var(--surface-2);color:var(--fg);text-decoration:none}.toc a.toc-link.lvl-3{padding-left:var(--space-5);font-size:12.5px}.rail-spec{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-3);padding:var(--space-2) 0;border-bottom:1px solid var(--line);font-size:12.5px}.rail-spec:last-child{border-bottom:0}.rail-spec .k{color:var(--fg-3);flex:0 0 auto}.rail-spec .v{color:var(--fg);font-family:var(--font-mono);font-size:12px;overflow-wrap:anywhere;text-align:right}.md h1{font-size:32px;font-weight:600;line-height:1.15;letter-spacing:-.01em;margin:0 0 var(--space-3)}.md h1,.md h1+p{text-wrap:pretty}.md h1+p{font-size:16px;line-height:1.65;color:var(--fg-2)}.md h2{font-size:19px;letter-spacing:-.01em;margin:var(--space-6) 0 var(--space-3)}.md h2,.md h3{font-weight:600;scroll-margin-top:var(--space-5)}.md h3{font-size:16px;margin:var(--space-5) 0 var(--space-3)}.md ol,.md p,.md ul{margin:0 0 var(--space-4);font-size:15px;line-height:1.75;color:var(--fg-2)}.md ol,.md ul{padding-left:var(--space-5)}.md li{margin-bottom:var(--space-1)}.md li::marker{color:var(--fg-3)}.md code{font-family:var(--font-mono);font-size:13.5px;background:var(--surface-2);border-radius:6px;padding:2px 5px}.md blockquote{display:flex;gap:var(--space-3);margin:0 0 var(--space-4);padding:var(--space-4);border-radius:var(--r-md);background:var(--accent-soft);border:1px solid var(--accent-line)}.md blockquote:before{content:"\25CF";color:var(--accent);font-size:11px;line-height:1.9;flex:0 0 auto}.md blockquote p{margin:0;font-size:13.5px;line-height:1.6;color:var(--fg-2)}.md blockquote p strong{color:var(--fg)}.md table{border-collapse:separate;border-spacing:0;margin:0 0 var(--space-4);border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden;font-size:13px}.md th{background:var(--surface-2);font-size:11.5px;font-weight:600;color:var(--fg-3);text-align:left}.md td,.md th{padding:var(--space-3) var(--space-4)}.md td{border-top:1px solid var(--line);color:var(--fg-2)}.md td:first-child{color:var(--fg);font-weight:500}.md hr{border:none;border-top:1px solid var(--line);margin:var(--space-5) 0}.md input[type=checkbox]{accent-color:var(--accent)}.md mark{background:var(--accent-soft);color:var(--accent);border-radius:4px;padding:0 2px}.codeblock{margin:0 0 var(--space-4);border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden}.codeblock-bar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-2) var(--space-3);background:var(--surface-2);border-bottom:1px solid var(--line)}.codeblock-bar span{font-family:var(--font-mono);font-size:10.5px;font-weight:500;text-transform:uppercase;color:var(--accent);background:var(--accent-soft);border-radius:6px;padding:2px 6px}.copy-btn{display:inline-flex;align-items:center;gap:var(--space-1);height:24px;padding:0 var(--space-2);border-radius:7px;background:transparent;border:0;color:var(--fg-3);font-size:12px;cursor:pointer;font-family:var(--font-ui)}.copy-btn:hover{background:var(--surface-3);color:var(--fg)}.codeblock pre{margin:0;padding:var(--space-4);overflow-x:auto;background:var(--code-bg)}.codeblock code{background:none;border-radius:0;padding:0;font-family:var(--font-mono);font-size:12.5px;line-height:1.75}.codeblock code,.hljs{color:var(--code-fg)}.hljs-comment,.hljs-quote{color:var(--fg-3);font-style:italic}.hljs-keyword,.hljs-selector-tag{color:#7a6bd6}.hljs-built_in,.hljs-meta,.hljs-name,.hljs-title{color:var(--accent)}.hljs-attr,.hljs-string{color:#4b9a6b}.hljs-literal,.hljs-number{color:#b5822a}.hljs-template-variable,.hljs-variable{color:#3d7fbf}.code-render{border-top:1px solid var(--line);background:#fff}.code-render iframe{display:block;width:100%;height:320px;border:0;resize:vertical;overflow:auto}input[type=password],input[type=text],textarea{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-sm);color:var(--fg);font-family:var(--font-ui);font-size:14px;padding:var(--space-2) var(--space-3);width:100%}input:focus,textarea:focus{outline:none;border-color:var(--accent-line)}.editor-wrap{grid-gap:var(--space-4);height:100%;padding:var(--space-5);background:var(--canvas)}.editor-main,.editor-wrap{display:grid;gap:var(--space-4)}.editor-main{grid-template-columns:1fr;grid-gap:var(--space-4);min-height:0}.editor-main.split{grid-template-columns:1fr 1fr}.editor-pane{display:flex;flex-direction:column;min-width:0;min-height:0;background:var(--surface);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);overflow:hidden}.pane-bar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--line);font-size:12.5px;color:var(--fg-3)}.editor-pane textarea,.pane-bar .mono{font-family:var(--font-mono)}.editor-pane textarea{flex:1 1;min-height:0;resize:none;border:0;border-radius:0;background:transparent;padding:var(--space-4);font-size:12.5px;line-height:1.85;-moz-tab-size:2;tab-size:2}.editor-pane textarea:focus{border:0}.editor-pane .slug-input{flex:1 1;border:0;background:transparent;padding:0;font-family:var(--font-mono);font-size:12.5px;color:var(--fg)}.editor-pane .slug-input:focus{border:0}.preview-pane{flex:1 1;min-height:0;overflow-y:auto;padding:var(--space-5)}.editor-foot{display:flex;gap:var(--space-3);align-items:center;background:var(--surface);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);padding:var(--space-3) var(--space-4)}.editor-foot .commit-input{flex:1 1;background:var(--surface-2);border-radius:999px;border:1px solid transparent;padding:var(--space-2) var(--space-4)}.editor-foot .commit-input:focus{border-color:var(--line)}.status-msg{font-size:12.5px;color:var(--fg-3)}.status-msg.err{color:var(--danger)}.status-msg.ok{color:var(--ok)}.palette-overlay{position:fixed;inset:0;background:rgba(15,18,24,.42);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:flex-start;justify-content:center;padding-top:12vh;z-index:50}.palette{width:min(660px,92vw);max-height:64vh;display:flex;flex-direction:column;background:var(--surface);border-radius:var(--r-lg);box-shadow:0 24px 64px rgba(15,18,24,.28);overflow:hidden}.palette-bar{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--line)}.palette-bar i{font-size:18px;color:var(--fg-3)}.palette-bar input{flex:1 1;background:transparent;border:0;padding:0;color:var(--fg);font-size:16px}.palette-bar input:focus{border:0}.palette-results{overflow-y:auto;padding:var(--space-2)}.palette-result{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);border-radius:var(--r-md);color:var(--fg)}.palette-result:hover{background:var(--surface-2);text-decoration:none}.palette-result .tile{width:34px;height:34px;border-radius:10px;background:var(--surface-2);display:flex;align-items:center;justify-content:center;flex:0 0 auto}.palette-result .tile i{font-size:17px;color:var(--fg-3)}.palette-result .pr-body{flex:1 1;min-width:0}.palette-result .pr-title{font-size:14px;font-weight:500}.palette-result .excerpt{font-family:var(--font-mono);font-size:11.5px;color:var(--fg-2);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.palette-result .pr-path{font-size:11.5px;color:var(--fg-3);flex:0 0 auto}.palette-empty{padding:var(--space-6) var(--space-4);font-size:13px;color:var(--fg-3);text-align:center}.login-shell{height:100vh;display:flex;align-items:center;justify-content:center;background:var(--canvas)}.login-card{width:340px;background:var(--surface);border-radius:var(--r-lg);box-shadow:var(--shadow);padding:var(--space-6) var(--space-5);display:flex;flex-direction:column;gap:var(--space-3)}.login-card .login-masthead{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-3)}.login-card .mark{width:34px;height:34px;border-radius:11px;background:var(--accent);display:flex;align-items:center;justify-content:center;color:#fff;font-size:16px;font-weight:700}.login-card .title{font-size:19px;font-weight:600}.login-card .sub{font-size:12.5px;color:var(--fg-3)}.chat-overlay,.login-card .btn{justify-content:center}.chat-overlay{position:fixed;inset:0;background:rgba(15,18,24,.42);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:flex-start;padding-top:7vh;z-index:60}.chat-panel{width:min(720px,94vw);height:min(78vh,720px);display:flex;flex-direction:column;background:var(--surface);border-radius:var(--r-lg);box-shadow:0 24px 64px rgba(15,18,24,.28);overflow:hidden}.chat-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--line)}.chat-head .palette-label{font-size:14px;font-weight:600}.chat-head-right{display:flex;align-items:center;gap:var(--space-3)}.chat-head select{background:var(--surface-2);border:1px solid var(--line);border-radius:8px;color:var(--fg-2);padding:3px var(--space-2)}.chat-head select,.mono-label{font-family:var(--font-mono);font-size:11px}.mono-label{color:var(--fg-3)}.chat-scroll{flex:1 1;min-height:0;overflow-y:auto;padding:var(--space-5);display:flex;flex-direction:column;gap:var(--space-4)}.chat-note{font-size:13.5px;line-height:1.65;color:var(--fg-2);border:1px solid var(--accent-line);background:var(--accent-soft);border-radius:var(--r-md);padding:var(--space-4)}.chat-note code{display:block;margin-top:var(--space-2);font-family:var(--font-mono);font-size:11.5px;color:var(--fg-2)}.chat-msg .chat-msg-label{font-size:11px;font-weight:600;color:var(--fg-3);margin-bottom:var(--space-1)}.chat-msg.user .chat-msg-label{color:var(--accent)}.chat-user-text{font-size:15px;color:var(--fg)}.chat-msg .md p{margin-bottom:var(--space-2);font-size:14px}.chat-msg .md h1{font-size:20px}.chat-msg .md pre{margin:0 0 var(--space-2);padding:var(--space-3);background:var(--code-bg);border:1px solid var(--line);border-radius:var(--r-sm);overflow-x:auto;font-family:var(--font-mono);font-size:12px;line-height:1.6;color:var(--code-fg)}.chat-msg .btn{margin-top:var(--space-2);height:30px;font-size:12.5px}.chat-sources{padding-top:var(--space-3)}.chat-input-row,.chat-sources{border-top:1px solid var(--line)}.chat-input-row{display:flex;gap:var(--space-2);padding:var(--space-3) var(--space-4)}.chat-input-row input{flex:1 1;background:var(--surface-2);border-radius:999px;border:1px solid transparent;padding:var(--space-2) var(--space-4);font-size:14px}.chat-input-row input:focus{border-color:var(--line)}.delete-entry{display:inline-flex;align-items:center;gap:var(--space-3)}.delete-entry .mono-label{color:var(--accent)}@media (max-width:1100px){.content-area{grid-template-columns:minmax(0,1fr)}.toc{display:none}}@media (max-width:760px){.frame{padding:0}.app{grid-template-columns:minmax(0,1fr);border-radius:0}.sidebar{display:none}.editor-main.split{grid-template-columns:1fr}}.mobile-nav-btn,.nav-backdrop{display:none}@media (max-width:760px){.frame{height:100dvh}.mobile-nav-btn{display:inline-flex;flex:0 0 auto}.sidebar{display:flex;position:fixed;top:0;left:0;bottom:0;width:min(300px,84vw);height:100dvh;z-index:80;transform:translateX(-105%);transition:transform .2s ease;box-shadow:var(--shadow);border-right:1px solid var(--line)}body.nav-open .sidebar{transform:translateX(0)}.nav-backdrop{display:block;position:fixed;inset:0;background:rgba(15,18,24,.42);z-index:70}.topbar{flex-wrap:nowrap;gap:var(--space-2);padding:var(--space-3)}.search-trigger{flex:1 1 auto;min-width:0;height:36px;padding:0 var(--space-3)}.search-trigger .kbd-chip{display:none}.topbar-actions .btn.primary{width:36px;padding:0;justify-content:center;font-size:0;gap:0}.topbar-actions .btn.primary i{font-size:16px}.topbar-actions .btn.icon-only[title="Pull latest from git"]{display:none}.main-scroll{padding:var(--space-4) var(--space-3) var(--space-8)}.card{padding:var(--space-4);border-radius:var(--r-md)}.md h1{font-size:25px}.page-footer{padding:var(--space-3) var(--space-4);gap:var(--space-3)}.chat-overlay,.palette-overlay{padding-top:0;align-items:stretch}.chat-panel,.palette{width:100vw;max-height:none;height:100dvh;border-radius:0}.chat-head,.palette-bar{padding:var(--space-3) var(--space-4)}.chat-scroll{padding:var(--space-4) var(--space-3)}.editor-wrap{padding:var(--space-3);gap:var(--space-3)}.editor-foot{flex-wrap:wrap}.editor-foot .commit-input{flex:1 1 100%;order:-1}}.chat-msg .md,.md{overflow-wrap:anywhere}.chat-msg .md pre,.md pre{overflow-wrap:normal}.milk-emoji{font-size:16px;line-height:1;display:inline-block}.chat-head .milk-emoji{font-size:19px;margin-right:4px}@keyframes milk-wiggle{0%,82%{transform:rotate(0deg)}85%{transform:rotate(-14deg)}88%{transform:rotate(12deg)}91%{transform:rotate(-9deg)}94%{transform:rotate(6deg)}97%{transform:rotate(-3deg)}to{transform:rotate(0deg)}}.milk-emoji.wiggle{animation:milk-wiggle 3.2s ease-in-out infinite;transform-origin:50% 85%}.fab-milk{position:fixed;left:var(--space-5);bottom:var(--space-5);z-index:45;width:52px;height:52px;border-radius:50%;border:1px solid var(--line);background:var(--surface);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:transform .15s ease}.fab-milk .milk-emoji{font-size:24px}@media (max-width:760px){.fab-milk{left:var(--space-3);bottom:calc(var(--space-3) + env(safe-area-inset-bottom));width:46px;height:46px}}@media (prefers-reduced-motion:reduce){.milk-emoji.wiggle{animation:none}}.app{grid-template-rows:minmax(0,1fr)}.main-col{min-height:0}.content-area{grid-template-rows:minmax(0,1fr);min-height:0;height:100%}.main-scroll,.sidebar,.toc{min-height:0}.page>*{min-width:0}.codeblock,.md pre,.page>*{max-width:100%}.md table{display:block;overflow-x:auto}.fab-milk{bottom:calc(var(--space-5) + 78px);background:radial-gradient(circle at 32% 28%,#f3d68f,var(--accent) 68%,#8a5f1a);border:2px solid #8a5f1a;box-shadow:0 2px 0 #7a5416,var(--shadow)}.fab-milk:hover{transform:scale(1.08) rotate(-6deg)}:root[data-theme=dark] .fab-milk{border-color:#6e4d15;box-shadow:0 2px 0 #5c4012,var(--shadow)}@media (max-width:760px){.fab-milk{bottom:calc(var(--space-3) + env(safe-area-inset-bottom))}}.fab-milk{background:var(--accent);border:0;box-shadow:var(--shadow)}.fab-milk:hover{transform:scale(1.08);filter:brightness(1.06)}.main-col{grid-template-columns:minmax(0,1fr)}.topbar{overflow:hidden}.topbar,.topbar-actions{min-width:0}@media (max-width:760px){.topbar-actions .btn{flex:0 1 auto;min-width:0}}.editor-wrap{grid-template-rows:minmax(0,1fr) auto;min-height:0}.editor-main,.editor-pane{min-height:0}.editor-pane textarea{min-height:240px}@media (max-width:760px){.editor-wrap{display:flex;flex-direction:column;overflow-y:auto;height:100%}.editor-main.split{grid-template-columns:1fr}.editor-pane textarea{min-height:45dvh}.preview-pane{max-height:50dvh}.fab-milk{bottom:calc(var(--space-3) + env(safe-area-inset-bottom) + 64px)}}.md table{display:table;width:100%}.md .table-scroll{overflow-x:auto;max-width:100%}@media (max-width:760px){.md table{display:block;width:100%;overflow-x:auto;white-space:nowrap}}.chat-history-item{display:flex;align-items:center;gap:var(--space-3);width:100%;text-align:left;padding:var(--space-3);border:0;border-radius:var(--r-md);background:var(--surface-2);color:var(--fg);cursor:pointer}.chat-history-item:hover{background:var(--surface-3)}.chat-history-item.active{background:var(--accent-soft)}.chat-history-item .chi-body{flex:1 1;min-width:0}.chat-history-item .chi-title{display:block;font-size:14px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-history-item .chi-meta{display:block;font-family:var(--font-mono);font-size:11px;color:var(--fg-3);margin-top:2px}.chat-history-item .chi-del{flex:0 0 auto;color:var(--fg-3);padding:4px;border-radius:8px;display:flex}.chat-history-item .chi-del:hover{color:var(--danger);background:var(--surface)}.chat-msg-actions{display:flex;gap:var(--space-2);flex-wrap:wrap;margin-top:var(--space-2)}.chat-msg-actions .btn{height:30px;font-size:12.5px}.chat-preview{margin-top:var(--space-3);border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden;background:#fff}.chat-preview-bar{display:flex;align-items:center;justify-content:space-between;padding:var(--space-2) var(--space-3);background:var(--surface-2);border-bottom:1px solid var(--line)}.chat-preview iframe{display:block;width:100%;height:300px;border:0;resize:vertical;background:#fff;height:360px}.code-render iframe{height:380px}.md img{max-width:100%;height:auto;border-radius:var(--r-md);display:block;margin:0 0 var(--space-4)}.md img,.paste-note{border:1px solid var(--line)}.paste-note{position:fixed;left:50%;bottom:var(--space-5);transform:translateX(-50%);z-index:90;background:var(--surface);border-radius:999px;box-shadow:var(--shadow);padding:var(--space-2) var(--space-4);font-family:var(--font-mono);font-size:12px;color:var(--fg-2)}.comfy-panel{height:min(82vh,780px)}.comfy-prompt{width:100%;min-height:90px;resize:vertical;font-family:var(--font-ui);font-size:14px;line-height:1.6}.comfy-row{display:flex;gap:var(--space-2);align-items:center;flex-wrap:wrap}.comfy-row select{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-sm);color:var(--fg);font-size:13px;padding:var(--space-2) var(--space-3)}.comfy-result img{width:100%;border-radius:var(--r-md);border:1px solid var(--line);margin-bottom:var(--space-3)}@media (max-width:760px){.comfy-row .btn.primary{flex:1 1 100%;justify-content:center}}.ask-page{grid-template-columns:minmax(360px,440px) minmax(0,1fr);height:100%;background:var(--canvas)}.ask-chat,.ask-page{display:grid;min-height:0}.ask-chat{grid-template-rows:auto minmax(0,1fr) auto;background:var(--surface);border-right:1px solid var(--line)}.ask-chat-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-4) var(--space-4);border-bottom:1px solid var(--line)}.ask-chat-head .palette-label{font-size:15px;font-weight:600}.ask-scroll{overflow-y:auto;min-height:0;padding:var(--space-4);display:flex;flex-direction:column;gap:var(--space-4)}.ask-preview{display:grid;grid-template-rows:auto minmax(0,1fr);min-height:0;min-width:0}.ask-preview-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--line);background:var(--surface)}.ask-preview-tools{display:flex;align-items:center;gap:var(--space-1)}.ask-preview-tools .copy-btn.on{background:var(--accent-soft);color:var(--accent)}.ask-preview-body{min-height:0;overflow:auto;display:flex;justify-content:center}.ask-stage{width:100%;height:100%;border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-sm)}.ask-stage,.ask-stage iframe{min-height:520px}.ask-empty{margin:auto;text-align:center;color:var(--fg-3);display:flex;flex-direction:column;align-items:center;gap:var(--space-3);font-size:14px}@media (max-width:1000px){.ask-page{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr) minmax(320px,45vh)}.ask-chat{border-right:0;border-bottom:1px solid var(--line)}.ask-preview-body{padding:var(--space-3)}}.ask-preview-body{align-items:flex-start;padding:var(--space-5)}.ask-stage{flex:0 0 auto;height:auto;min-height:0;background:#fff;overflow:hidden}.ask-stage.full{width:100%;height:100%;min-height:560px}.ask-stage iframe{display:block;width:100%;height:100%;min-height:0;border:0}.ask-stage.full iframe{min-height:560px}.gallery-head{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-4)}.gallery-search{flex:1 1;background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:var(--space-2) var(--space-4);font-size:14px}.gallery-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));grid-gap:var(--space-4);gap:var(--space-4)}.gallery-item{margin:0;background:var(--surface);border-radius:var(--r-md);box-shadow:var(--shadow-sm);overflow:hidden}.gallery-thumb{display:block;width:100%;aspect-ratio:4/3;padding:0;border:0;background:var(--surface-2);cursor:zoom-in}.gallery-thumb img{width:100%;height:100%;object-fit:cover;display:block}.gallery-item figcaption{padding:var(--space-3);display:flex;flex-direction:column;gap:2px;min-width:0}.gi-name{font-size:12.5px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gi-meta{font-family:var(--font-mono);font-size:11px;color:var(--fg-3)}.lightbox{position:fixed;inset:0;z-index:100;background:rgba(15,18,24,.6);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;padding:var(--space-5)}.lightbox-inner{max-width:min(1100px,94vw);max-height:92vh;display:flex;flex-direction:column;background:var(--surface);border-radius:var(--r-lg);overflow:hidden;box-shadow:0 24px 64px rgba(15,18,24,.35)}.lightbox-bar{justify-content:space-between;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--line)}.lightbox-bar,.lightbox-tools{display:flex;align-items:center;flex-wrap:wrap}.lightbox-tools{gap:var(--space-1)}.lightbox-inner img{max-width:100%;max-height:78vh;object-fit:contain;background:var(--surface-2)}.provider-switch{display:grid;grid-template-columns:1fr 1fr;grid-gap:var(--space-2);gap:var(--space-2)}.provider-btn{display:flex;align-items:center;gap:var(--space-3);text-align:left;padding:var(--space-3);border-radius:var(--r-md);border:1px solid var(--line);background:var(--surface);color:var(--fg-2);cursor:pointer}.provider-btn:hover{border-color:var(--fg-3)}.provider-btn.on{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.provider-btn span{display:flex;flex-direction:column;min-width:0;font-size:13.5px;font-weight:500}.provider-btn em{font-style:normal;font-family:var(--font-mono);font-size:10.5px;color:var(--fg-3);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.provider-btn.on em{color:var(--accent);opacity:.75}@media (max-width:620px){.provider-switch{grid-template-columns:1fr}}.spend-bar{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap;padding:var(--space-2) var(--space-3);border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface-2)}.spend-bar .copy-btn{margin-left:auto}.spend-bar .copy-btn+.copy-btn{margin-left:0}