*,:before,:after{box-sizing:border-box;margin:0;padding:0}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}button:focus-visible,[role=button]:focus-visible{outline:2px solid var(--accent);outline-offset:2px}:root,[data-theme=dark]{--bg:#121211;--surface:#1a1a18;--border:#282826;--border-light:#333330;--text:#e8e6e1;--muted:#8a8a86;--accent:#c8b89a;--accent-dim:#917f6b;--green:#4ade80;--red:#f87171;--hover:#1e1e1c}[data-theme=light]{--bg:#f5f4f1;--surface:#fff;--border:#e2e0dc;--border-light:#d1cfc9;--text:#1a1a18;--muted:#5c5c58;--accent:#6b5d4a;--accent-dim:#7a6e58;--green:#15803d;--red:#d42424;--hover:#eceae6}html{height:100%;font-size:100%}body{background:var(--bg);height:100%;color:var(--text);font-family:Geist Mono,monospace;font-size:.8125rem;line-height:1.6;overflow:hidden}#root{height:100%}#connect-screen{flex-direction:column;justify-content:center;align-items:center;height:100%;animation:.6s both fadeIn;display:flex}.connect-logo{margin-bottom:16px}.wordmark{letter-spacing:-.02em;color:var(--text);margin-bottom:8px;font-family:Instrument Serif,Georgia,serif;font-size:clamp(3.25rem,8vw,5.5rem);line-height:1}.wordmark span{color:var(--accent);font-style:italic}.tagline{color:var(--muted);letter-spacing:.12em;text-transform:uppercase;margin-bottom:52px;font-size:.6875rem}.connect-btn{background:var(--accent);color:var(--bg);letter-spacing:.08em;text-transform:uppercase;cursor:pointer;border:none;align-items:center;gap:10px;padding:14px 28px;font-family:Geist Mono,monospace;font-size:.75rem;font-weight:500;transition:all .15s;display:flex}.connect-btn:hover:not(:disabled){opacity:.85;transform:translateY(-1px)}.connect-btn:active{transform:translateY(0)}.connect-btn:disabled{opacity:.5;cursor:not-allowed}.status-line{color:var(--muted);text-align:center;justify-content:center;align-items:center;gap:6px;max-width:400px;min-height:1.125rem;margin-top:20px;font-size:.6875rem;display:flex}.status-line.error{color:var(--red)}.status-line.loading{color:var(--accent-dim)}[hidden]{display:none!important}.connect-recovery{flex-direction:column;align-items:center;gap:6px;margin-top:16px;display:flex}.connect-recovery-note{color:var(--muted);letter-spacing:.04em;font-family:Geist Mono,monospace;font-size:.6875rem}.connect-btn-secondary{color:var(--accent);border:1px solid var(--accent);background:0 0}.connect-btn-secondary:hover:not(:disabled){background:var(--accent-dim)}.connect-link{color:var(--muted);letter-spacing:.08em;text-transform:uppercase;cursor:pointer;text-underline-offset:4px;background:0 0;border:none;margin-top:18px;padding:6px 10px;font-family:Geist Mono,monospace;font-size:.6875rem;text-decoration:underline}.connect-link:hover{color:var(--accent)}.installations-usage{color:var(--muted);border:1px solid var(--border,#2a2a2a);border-radius:4px;margin-bottom:10px;padding:6px 10px;font-family:Geist Mono,monospace;font-size:.6875rem}.installations-usage.near-limit{color:var(--accent);border-color:var(--accent-dim)}.installations-usage.at-limit{color:var(--red);border-color:var(--red)}#app{flex-direction:column;height:100%;display:none}body.app-connected #connect-screen{display:none}body.app-connected #app{display:flex}.hint{color:var(--muted);margin-top:4px}.topbar{border-bottom:1px solid var(--border);flex-shrink:0;justify-content:space-between;align-items:center;height:48px;padding:0 20px;display:flex}.topbar-logo{color:var(--text);align-items:center;gap:6px;font-family:Instrument Serif,serif;font-size:1.25rem;display:flex}.topbar-logo span span{color:var(--accent);font-style:italic}.topbar-logo-icon{border-radius:4px}.topbar-right{align-items:center;gap:12px;display:flex}.topbar-address{color:var(--muted);cursor:pointer;background:0 0;border:none;align-items:center;gap:8px;font-family:inherit;font-size:.8125rem;transition:opacity .12s;display:flex}.topbar-address:hover{opacity:.75}.topbar-avatar{background:var(--border-light);width:28px;height:28px;color:var(--muted);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:.75rem;display:flex;overflow:hidden}.topbar-avatar img{object-fit:cover;width:100%;height:100%}.dot{background:var(--green);border-radius:50%;flex-shrink:0;width:6px;height:6px}.layout{flex:1;display:flex;overflow:hidden}.sidebar{border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;width:300px;display:flex}.sidebar-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:14px 16px;display:flex}.sidebar-title{letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-size:.75rem}.convo-count{color:var(--accent-dim);background:var(--bg);border:1px solid var(--border);padding:2px 8px;font-size:.6875rem}.new-convo-btn{border:1px dashed var(--border-light);color:var(--muted);cursor:pointer;letter-spacing:.04em;background:0 0;align-items:center;gap:6px;width:calc(100% - 32px);margin:12px 16px;padding:8px 12px;font-family:Geist Mono,monospace;font-size:.8125rem;transition:all .12s;display:flex}.new-convo-btn:hover{border-color:var(--accent-dim);color:var(--accent)}.conversations{flex:1;overflow-y:auto}.conversations::-webkit-scrollbar{width:4px}.conversations::-webkit-scrollbar-track{background:0 0}.conversations::-webkit-scrollbar-thumb{background:var(--border-light)}.convo-item{border-bottom:1px solid var(--border);cursor:pointer;align-items:center;gap:12px;padding:14px 16px;transition:background .1s;display:flex;position:relative}.convo-avatar,.message-avatar{background:var(--border-light);width:36px;height:36px;color:var(--muted);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:.875rem;display:flex;overflow:hidden}.convo-avatar img,.message-avatar img{object-fit:cover;width:100%;height:100%}.convo-body{flex:1;min-width:0}.convo-item:hover,.convo-item.active{background:var(--hover)}.convo-item.active:before{content:"";background:var(--accent);width:2px;position:absolute;top:0;bottom:0;left:0}.convo-peer{color:var(--text);justify-content:space-between;align-items:center;margin-bottom:4px;font-size:.875rem;display:flex}.convo-peer-addr{white-space:nowrap;text-overflow:ellipsis;max-width:180px;overflow:hidden}.convo-time{color:var(--muted);flex-shrink:0;font-size:.75rem}.convo-preview{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:.8125rem;overflow:hidden}.convo-item.inactive{opacity:.5}.convo-section-separator{letter-spacing:.1em;text-transform:uppercase;color:var(--muted);align-items:center;gap:10px;padding:10px 16px;font-size:.6875rem;display:flex}.convo-section-separator:before,.convo-section-separator:after{content:"";background:var(--border);flex:1;height:1px}.empty-state{color:var(--muted);text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:8px;padding:40px;font-size:.6875rem;display:flex}.empty-icon{opacity:.4;margin-bottom:4px;font-size:1.75rem}.message-pane{flex-direction:column;flex:1;display:flex;overflow:hidden}.message-header{border-bottom:1px solid var(--border);flex-shrink:0;align-items:center;gap:12px;padding:14px 24px;display:flex}.message-header-identity{align-items:center;gap:12px;display:flex}.msg-sync-status{color:var(--accent-dim);border-bottom:1px solid var(--border);flex-shrink:0;align-items:center;gap:8px;padding:6px 24px;font-size:.6875rem;display:flex}.message-peer{color:var(--text);font-size:.875rem}.message-peer-full{color:var(--muted);margin-top:2px;font-size:.75rem}.messages-list{flex-direction:column;flex:1;gap:16px;padding:24px;display:flex;overflow-y:auto}.messages-list::-webkit-scrollbar{width:4px}.messages-list::-webkit-scrollbar-track{background:0 0}.messages-list::-webkit-scrollbar-thumb{background:var(--border-light)}.message-bubble{flex-direction:column;max-width:72%;display:flex}.message-bubble.mine{align-self:flex-end;align-items:flex-end}.message-bubble.theirs{align-self:flex-start;align-items:flex-start}.bubble-body{word-break:break-word;white-space:pre-wrap;padding:10px 14px;font-size:.875rem;line-height:1.55}.message-bubble.mine .bubble-body{background:var(--accent);color:var(--bg)}.message-bubble.theirs .bubble-body{background:var(--surface);border:1px solid var(--border);color:var(--text)}.message-bubble{position:relative}.bubble-meta{align-items:center;gap:6px;margin-top:4px;padding:0 2px;display:flex}.bubble-meta .bubble-time{margin-top:0;padding:0}.react-btn{cursor:pointer;color:var(--muted);opacity:.55;background:0 0;border:none;align-items:center;padding:0 2px;line-height:1;transition:opacity .12s,color .12s;display:inline-flex}.react-btn:hover{color:var(--accent);opacity:1}@media (hover:hover) and (pointer:fine){.react-btn{opacity:0}.message-bubble:hover .react-btn,.react-btn:focus-visible{opacity:1}}.bubble-reactions{flex-wrap:wrap;gap:4px;margin-top:4px;display:flex}.message-bubble.mine .bubble-reactions{justify-content:flex-end}.reaction-pill{background:var(--surface);border:1px solid var(--border-light);cursor:pointer;color:var(--text);border-radius:10px;align-items:center;gap:4px;padding:1px 8px;font-family:Geist Mono,monospace;font-size:.75rem;line-height:1.5;transition:border-color .12s;display:inline-flex}.reaction-pill:hover{border-color:var(--accent-dim)}.reaction-pill.mine{border-color:var(--accent);background:var(--hover)}.reaction-count{color:var(--muted);font-size:.6875rem}.react-palette{background:var(--surface);border:1px solid var(--border-light);z-index:10;gap:2px;margin-bottom:4px;padding:4px;display:flex;position:absolute;bottom:100%}.message-bubble.mine .react-palette{right:0}.message-bubble.theirs .react-palette{left:0}.react-palette-btn{cursor:pointer;background:0 0;border:none;padding:3px 6px;font-size:1.05rem;line-height:1}.react-palette-btn:hover{background:var(--hover)}.bubble-time{color:var(--muted);margin-top:4px;padding:0 2px;font-size:.6875rem}.message-bubble.send-error{color:var(--red);align-self:center;padding:4px 8px;font-size:.75rem}.compose-area{border-top:1px solid var(--border);flex-shrink:0;align-items:flex-end;gap:12px;padding:16px 24px;display:flex}.compose-input-wrap{flex:1;min-height:42px;max-height:120px;display:grid}.compose-input-wrap:after{content:attr(data-replicated-value) " ";white-space:pre-wrap;visibility:hidden;word-break:break-word;border:1px solid #0000;max-height:120px;padding:10px 14px;font-family:Geist Mono,monospace;font-size:.875rem;overflow:hidden}.compose-input-wrap>textarea,.compose-input-wrap:after{grid-area:1/1/2/2}.compose-input{background:var(--surface);border:1px solid var(--border-light);color:var(--text);resize:none;outline:none;padding:10px 14px;font-family:Geist Mono,monospace;font-size:.875rem;transition:border-color .12s;overflow-y:auto}.compose-input:focus{border-color:var(--accent-dim)}.compose-input::placeholder{color:var(--muted)}.send-btn{background:var(--accent);color:var(--bg);letter-spacing:.06em;cursor:pointer;border:none;flex-shrink:0;height:42px;padding:10px 18px;font-family:Geist Mono,monospace;font-size:.8125rem;font-weight:500;transition:all .12s}.send-btn:hover:not(:disabled){opacity:.85}.send-btn:disabled{opacity:.4;cursor:not-allowed}.no-convo{color:var(--muted);text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:8px;font-size:.8125rem;display:flex}.no-convo-logo{color:var(--border-light);margin-bottom:8px;font-family:Instrument Serif,serif;font-size:2.5rem;font-style:italic}.spinner{border:2px solid var(--border-light);border-top-color:var(--accent);box-sizing:border-box;border-radius:50%;flex-shrink:0;width:12px;height:12px;animation:.7s linear infinite spin;display:inline-block}.loading-row{color:var(--muted);align-items:center;gap:8px;padding:16px;font-size:.6875rem;display:flex}.modal-overlay{z-index:100;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#000000b3;justify-content:center;align-items:center;display:none;position:fixed;inset:0}.modal-overlay.open{display:flex}.modal{background:var(--surface);border:1px solid var(--border-light);width:440px;padding:28px;animation:.2s both fadeIn}.modal-title{color:var(--text);margin-bottom:6px;font-family:Instrument Serif,serif;font-size:1.375rem;font-style:italic;font-weight:400}.modal-sub{color:var(--muted);white-space:pre-line;margin-bottom:20px;font-size:.8125rem}.modal-input{background:var(--bg);border:1px solid var(--border-light);width:100%;color:var(--text);outline:none;margin-bottom:14px;padding:10px 14px;font-family:Geist Mono,monospace;font-size:.875rem;transition:border-color .12s}.modal-input:focus{border-color:var(--accent-dim)}.modal-actions{justify-content:flex-end;gap:10px;display:flex}.modal-cancel{border:1px solid var(--border-light);color:var(--muted);cursor:pointer;background:0 0;padding:8px 16px;font-family:Geist Mono,monospace;font-size:.8125rem;transition:all .12s}.modal-cancel:hover{border-color:var(--muted);color:var(--text)}.modal-start{background:var(--accent);color:var(--bg);cursor:pointer;border:none;padding:8px 16px;font-family:Geist Mono,monospace;font-size:.8125rem;font-weight:500;transition:all .12s}.modal-start:hover{opacity:.85}.modal-start:disabled{opacity:.4;cursor:not-allowed}.modal-error{color:var(--red);min-height:1rem;margin-bottom:10px;font-size:.8125rem}.drawer-backdrop{z-index:200;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#00000080;display:none;position:fixed;inset:0}.drawer-backdrop.open{display:block}.drawer{background:var(--surface);border-left:1px solid var(--border);z-index:201;flex-direction:column;width:320px;transition:transform .25s;display:flex;position:fixed;top:0;bottom:0;right:0;overflow-y:auto;transform:translate(100%)}.drawer.open{transform:translate(0)}.drawer-header{border-bottom:1px solid var(--border);flex-shrink:0;justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.drawer-title{letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-size:.75rem}.drawer-close{color:var(--muted);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:4px;transition:color .12s;display:flex}.drawer-close:hover{color:var(--text)}.drawer-section{border-bottom:1px solid var(--border);padding:20px}.drawer-section:last-child{border-bottom:none}.drawer-section-label{letter-spacing:.1em;text-transform:uppercase;color:var(--muted);align-items:center;gap:6px;margin-bottom:14px;font-size:.6875rem;display:flex}.info-btn{border:1px solid var(--border-light);width:16px;height:16px;color:var(--muted);cursor:pointer;text-transform:none;letter-spacing:0;background:0 0;border-radius:50%;justify-content:center;align-items:center;padding:0;font-size:.6rem;font-weight:600;line-height:1;transition:all .12s;display:inline-flex}.info-btn:hover{border-color:var(--accent-dim);color:var(--accent)}.drawer-wallet{align-items:center;gap:12px;margin-bottom:16px;display:flex}.drawer-wallet-avatar{background:var(--border-light);width:40px;height:40px;color:var(--muted);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:.9375rem;display:flex;overflow:hidden}.drawer-wallet-avatar img{object-fit:cover;width:100%;height:100%}.drawer-wallet-info{min-width:0}.drawer-wallet-name{color:var(--text);font-size:.875rem}.drawer-wallet-addr{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:.75rem;overflow:hidden}.drawer-disconnect{border:1px solid var(--border-light);color:var(--muted);letter-spacing:.06em;cursor:pointer;background:0 0;width:100%;padding:8px 14px;font-family:Geist Mono,monospace;font-size:.75rem;transition:all .12s}.drawer-disconnect:hover{border-color:var(--red);color:var(--red)}.drawer-wipe{border:1px solid var(--red);color:var(--red);letter-spacing:.06em;cursor:pointer;background:0 0;width:100%;margin-top:8px;padding:8px 14px;font-family:Geist Mono,monospace;font-size:.75rem;transition:all .12s}.drawer-wipe:hover{background:var(--red);color:var(--bg)}.connect-link-danger{color:var(--red)}.connect-link-danger:hover{color:var(--red);opacity:.85}.drawer-toggle{cursor:pointer;justify-content:space-between;align-items:center;display:flex}.drawer-toggle-label{color:var(--text);font-size:.8125rem}.drawer-toggle input[type=checkbox]{accent-color:var(--accent);cursor:pointer;width:16px;height:16px}.theme-options{gap:8px;display:flex}.theme-option{background:var(--surface);border:1px solid var(--border-light);color:var(--text);cursor:pointer;text-align:center;flex:1;padding:10px 0;font-family:Geist Mono,monospace;font-size:.75rem;transition:all .12s}.theme-option:hover{border-color:var(--accent-dim)}.theme-option.active{border-color:var(--accent);color:var(--accent);background:var(--bg)}.installations-summary{justify-content:space-between;align-items:center;display:flex}.installations-text{color:var(--text);font-size:.8125rem}.installation-count{color:var(--accent);font-weight:500}.installations-manage-btn{border:1px solid var(--border-light);color:var(--muted);cursor:pointer;background:0 0;padding:6px 12px;font-family:Geist Mono,monospace;font-size:.75rem;transition:all .12s}.installations-manage-btn:hover{border-color:var(--accent-dim);color:var(--accent)}.installations-manage-btn:disabled{opacity:.4;cursor:not-allowed}.archive-actions{gap:8px;display:flex}.archive-status{color:var(--muted);margin-top:10px;font-size:.6875rem}.archive-status:empty{display:none}.archive-status.error{color:var(--red)}.update-banner{z-index:500;background:var(--surface);border:1px solid var(--accent-dim);color:var(--text);white-space:nowrap;align-items:center;gap:8px;padding:4px 6px 4px 10px;font-size:.6875rem;animation:.2s both fadeIn;display:flex;position:fixed;top:10px;left:50%;transform:translate(-50%)}.update-banner-reload{background:var(--accent);color:var(--bg);cursor:pointer;border:none;padding:3px 10px;font-family:Geist Mono,monospace;font-size:.6875rem}.update-banner-reload:hover{opacity:.85}.update-banner-dismiss{color:var(--muted);cursor:pointer;background:0 0;border:none;padding:2px 4px;font-size:.875rem;line-height:1}.update-banner-dismiss:hover{color:var(--text)}@media (width<=639px){.update-banner{top:56px}}.installations-modal{flex-direction:column;max-height:80vh;display:flex}.installations-list{border:1px solid var(--border);flex:1;max-height:360px;margin-bottom:14px;overflow-y:auto}.installation-row{border-bottom:1px solid var(--border)}.installation-row:last-child{border-bottom:none}.installation-label{cursor:pointer;align-items:center;gap:12px;padding:12px 14px;transition:background .1s;display:flex}.installation-label:hover{background:var(--hover)}.installation-label.current{background:var(--hover);cursor:default}.installation-checkbox{accent-color:var(--accent);flex-shrink:0;width:16px;height:16px}.installation-info{min-width:0}.installation-id{color:var(--text);align-items:center;gap:8px;font-size:.8125rem;display:flex}.installation-id code{font-family:Geist Mono,monospace;font-size:.75rem}.installation-badge{letter-spacing:.08em;text-transform:uppercase;color:var(--green);border:1px solid var(--green);padding:1px 6px;font-size:.625rem;line-height:1.4}.installation-time{color:var(--muted);margin-top:2px;font-size:.75rem}.installations-revoke-btn,.confirm-action-btn{border:1px solid var(--red);color:var(--red);cursor:pointer;background:0 0;padding:8px 16px;font-family:Geist Mono,monospace;font-size:.8125rem;transition:all .12s}.installations-revoke-btn:hover:not(:disabled),.confirm-action-btn:hover{background:var(--red);color:var(--bg)}.installations-revoke-btn:disabled{opacity:.4;cursor:not-allowed}#installations-modal{z-index:300}#info-modal{z-index:350}#confirm-modal{z-index:400}.back-btn{color:var(--muted);cursor:pointer;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;margin-right:8px;padding:4px;transition:color .12s;display:none}.back-btn:hover{color:var(--text)}.addr{align-items:center;gap:4px;display:inline-flex}.addr-copy{cursor:pointer;color:var(--muted);background:0 0;border:none;border-radius:4px;align-items:center;padding:2px;transition:color .12s;display:inline-flex}.addr-copy:hover{color:var(--text)}@media (width<=639px){.sidebar{border-right:none;width:100%}.message-pane,.layout.show-conversation .sidebar{display:none}.layout.show-conversation .message-pane,.back-btn{display:flex}.messages-list{padding:12px}.compose-area,.message-header{padding:10px 12px}.topbar{padding:0 12px}.message-bubble{max-width:88%}.modal{width:calc(100% - 32px);padding:20px}.drawer{width:100%}.connect-logo{width:80px;height:80px}.message-peer-full{text-overflow:ellipsis;white-space:nowrap;max-width:calc(100vw - 100px);overflow:hidden}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
