:root{color-scheme:light;--ink: #1c1915;--muted: #6d645b;--line: #e4ddd4;--paper: #f7f4ef;--panel: #fffdf9;--accent: #0f6e56;--accent-ink: #ffffff;--danger: #8d2f2f;--mine: #e7f3ee;font-family:Iowan Old Style,Palatino Linotype,Palatino,Georgia,serif}*{box-sizing:border-box}html,body{height:100%;overflow:hidden;overscroll-behavior:none}body{margin:0;color:var(--ink);background:var(--paper)}button,input,textarea{font:inherit;color:inherit}button{cursor:pointer}#app{position:fixed;top:var(--vv-top, 0px);left:0;right:0;height:100%;height:100svh;height:var(--vvh, 100svh);display:flex;flex-direction:column;overflow:hidden;background:var(--paper)}.auth,.check-email{flex:1;min-height:0;overflow:auto;display:flex;flex-direction:column;padding:24px}.card{width:min(420px,100%);margin:auto;background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:28px}h1,h2{font-weight:600;letter-spacing:-.03em;margin:0}h1{font-size:2rem}h2{font-size:1.15rem}.lede{color:var(--muted);line-height:1.45}.tabs,.row,.composer,.thread-head,.sidebar-head{display:flex;gap:8px}.tabs{margin:20px 0 12px}.tabs button,.ghost,.primary{border-radius:999px;border:1px solid var(--line);background:transparent;padding:8px 14px}.tabs button[aria-pressed=true],.primary{background:var(--ink);color:var(--accent-ink);border-color:var(--ink)}.primary{background:var(--accent);border-color:var(--accent)}label{display:grid;gap:6px;margin-top:14px;font-size:.92rem}input,textarea{width:100%;border:1px solid var(--line);border-radius:12px;padding:10px 12px;background:#fff}textarea{resize:vertical;min-height:44px}.banner{margin-top:14px;padding:10px 12px;border-radius:12px;background:#f8e8e4;color:var(--danger)}.status{color:var(--muted)}.shell{flex:1;min-height:0;height:100%;display:grid;grid-template-rows:minmax(0,1fr);grid-template-columns:320px 1fr}.sidebar,.thread{min-height:0;display:flex;flex-direction:column}.sidebar{border-right:1px solid var(--line);background:var(--panel)}.sidebar-head,.thread-head{align-items:center;justify-content:space-between;padding:16px;border-bottom:1px solid var(--line)}.identity{min-width:0}.identity h2{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.account{padding:4px 16px 16px;border-bottom:1px solid var(--line)}.account .row{margin-top:14px}.finder{padding:12px 16px;border-bottom:1px solid var(--line)}.conversation-list,.messages{overflow:auto;flex:1;overscroll-behavior:contain}.conversation{position:relative;width:100%;text-align:left;border:0;border-bottom:1px solid var(--line);background:transparent;padding:14px 16px}.conversation[aria-current=true]{background:#efeae3}.conversation strong,.meta{display:block}.conversation strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.conversation:has(.unread) strong,.conversation:has(.unread) .preview{max-width:calc(100% - 36px)}.meta,.preview,.time{color:var(--muted);font-family:Avenir Next,Segoe UI,sans-serif;font-size:.85rem}.preview{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:230px}.unread{position:absolute;top:12px;right:12px;min-width:1.4rem;padding:0 6px;border-radius:999px;background:var(--accent);color:#fff;text-align:center;line-height:1.4rem;font-family:Avenir Next,Segoe UI,sans-serif;font-size:.75rem}.transcript{position:relative;flex:1;min-height:0;display:flex;flex-direction:column}.messages{padding:18px 18px 28px;display:flex;flex-direction:column;gap:14px}.bubble{position:relative;max-width:min(70%,520px);padding:10px 12px;border-radius:16px;background:#fff;border:1px solid var(--line);-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.bubble.mine{align-self:flex-end;background:var(--mine)}.bubble.pending{opacity:.7}.bubble.failed{border-color:var(--danger)}.bubble:hover,.bubble.reacting{z-index:2}.bubble small{display:block;margin-top:4px;color:var(--muted);font-family:Avenir Next,Segoe UI,sans-serif}.reaction-dock{position:absolute;right:-4px;bottom:0;z-index:1;display:flex;align-items:center;justify-content:flex-end;gap:6px;transform:translateY(50%)}.copy-message{display:inline-flex;align-items:center;justify-content:center;flex:none;width:44px;height:46px;padding:0;border-radius:999px;border:1px solid var(--line);background:#fff;color:var(--muted);box-shadow:0 6px 18px #1c191524}.copy-message svg{display:block;width:18px;height:18px}.copy-message.copied{color:var(--accent)}.reaction-row{display:flex;align-items:center;gap:4px}.reaction-row[hidden]{display:none}.chip,.react-bar button{font-family:"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",sans-serif}.chip{position:relative;display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border-radius:50%;border:1px solid var(--line);background:#fff;box-shadow:0 1px 3px #1c19151f;font-size:.95rem}.chip.mine{border-color:var(--accent)}.chip .count{position:absolute;top:-5px;right:-5px;min-width:14px;height:14px;padding:0 3px;border-radius:999px;background:var(--accent);color:#fff;font-family:Avenir Next,Segoe UI,sans-serif;font-size:.65rem;line-height:14px}.react-toggle{display:none;position:absolute;right:0;top:50%;transform:translateY(-50%);align-items:center;justify-content:center;width:28px;height:22px;padding:0;border-radius:999px;border:1px solid var(--line);background:#fff;color:var(--muted);box-shadow:0 1px 3px #1c19151f}.react-toggle svg{display:block}.react-bar{display:flex;align-items:center;gap:2px;padding:4px;border-radius:999px;border:1px solid var(--line);background:#fff;box-shadow:0 6px 18px #1c191524}.react-bar[hidden]{display:none}.react-bar button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:0;border-radius:50%;background:transparent;font-size:1.2rem}.react-bar button[aria-pressed=true]{outline:2px solid var(--accent);outline-offset:-2px}.bubble.reacting .reaction-row,.bubble.reacting .react-toggle{display:none}@media(hover:hover)and (pointer:fine){.bubble:hover .react-toggle,.bubble:focus-within .react-toggle{display:inline-flex}.bubble:hover .reaction-row,.bubble:focus-within .reaction-row{margin-right:34px}.bubble.reacting .react-toggle,.bubble.reacting .reaction-row{display:none;margin-right:0}}.attachment{display:block;max-width:100%;max-height:240px;border-radius:12px;margin-bottom:6px}.attachment-button{display:block;padding:0;border:0;background:transparent;cursor:zoom-in}.icon{display:grid;place-items:center;width:44px;height:44px;padding:0;flex:none;border-radius:999px;border:1px solid var(--line);background:transparent}.icon svg{display:block}.viewer{position:fixed;top:var(--vv-top, 0px);left:0;right:0;height:100%;height:100svh;height:var(--vvh, 100svh);z-index:20;display:grid;grid-template-rows:minmax(0,1fr);grid-template-columns:minmax(0,1fr);place-items:center;padding:64px 24px 24px;overflow:hidden;background:#1c1915eb}.viewer img{min-width:0;min-height:0;max-width:100%;max-height:calc(100svh - 88px);max-height:calc(var(--vvh, 100svh) - 88px);object-fit:contain}.viewer .close{position:absolute;top:16px;right:16px;color:#fffdf9;border-color:transparent}body:has(.viewer){overflow:hidden}.drafts{display:flex;gap:8px;flex-wrap:wrap;padding:8px 16px 0}.draft{display:grid;gap:4px}.draft .attachment,.draft .attachment-button{width:72px;height:72px}.draft .attachment{object-fit:cover;margin:0}.composer{align-items:end;padding:12px 16px 16px;border-top:1px solid var(--line)}.composer textarea{flex:1}.empty{margin:auto;color:var(--muted);text-align:center;padding:24px}.presence{color:var(--accent);font-family:Avenir Next,Segoe UI,sans-serif;font-size:.85rem}.typing{position:absolute;z-index:1;left:18px;bottom:8px;max-width:calc(100% - 36px);padding:2px 8px;border-radius:999px;background:transparent;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);pointer-events:none;color:var(--muted);font-family:Avenir Next,Segoe UI,sans-serif;font-size:.85rem;line-height:1.2rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.typing:empty{display:none}.dev-link{word-break:break-all}@media(max-width:760px){.shell{grid-template-columns:1fr}.shell.thread-open .sidebar{display:none}.shell:not(.thread-open) .thread{display:none}.preview{max-width:70vw}.bubble{max-width:min(88%,520px)}}
