*{margin:0;padding:0;box-sizing:border-box}html,body,#root{height:100vh;height:100dvh;overflow:hidden;overscroll-behavior:none}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:#111;color:#fff;-webkit-text-size-adjust:100%}.center{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100vh;height:100dvh;text-align:center;padding:24px}.btn{padding:14px 28px;border-radius:8px;border:none;background:#2a6;color:#fff;font-size:16px;cursor:pointer;-webkit-tap-highlight-color:transparent}.btn:hover{background:#3b7}.btn:active{background:#295}.page{height:100vh;height:100dvh;display:flex;flex-direction:column;overflow:hidden;position:fixed;inset:0}.header{display:flex;align-items:center;padding:12px 16px;padding-top:max(12px,env(safe-area-inset-top));border-bottom:1px solid #333;min-height:48px;gap:8px}.header-title{font-weight:700;font-size:18px;white-space:nowrap}.header-back{background:none;border:none;color:#2a6;cursor:pointer;font-size:16px;padding:8px;margin:-8px 4px -8px -8px;-webkit-tap-highlight-color:transparent}.header-user{margin-left:auto;font-size:12px;color:#888;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:120px}.header-notify{margin-left:auto;background:none;border:1px solid #2a6;color:#2a6;padding:8px 12px;border-radius:6px;cursor:pointer;font-size:13px;white-space:nowrap;-webkit-tap-highlight-color:transparent}.header-notify:active{background:#22aa6626}.header-signout{margin-left:8px;background:none;border:1px solid #444;color:#888;padding:8px 14px;border-radius:6px;cursor:pointer;white-space:nowrap;-webkit-tap-highlight-color:transparent}.room-list{padding:16px;overflow-y:auto;flex:1}.room-btn{display:block;width:100%;padding:16px;margin-bottom:8px;border-radius:12px;border:1px solid #333;background:#1a1a1a;color:#fff;text-align:left;font-size:16px;cursor:pointer;-webkit-tap-highlight-color:transparent}.room-btn:active{background:#252525}.chat{display:flex;flex-direction:column;height:100%;position:relative}.chat-messages{flex:1;overflow-y:auto;padding:12px 16px;-webkit-overflow-scrolling:touch}.chat-row{margin-bottom:12px}.chat-row.mine{text-align:right}.chat-sender{font-size:12px;color:#888;margin-bottom:2px}.chat-bubble{display:inline-block;padding:10px 14px;border-radius:16px;background:#333;color:#fff;max-width:85%;word-break:break-word}.chat-bubble.mine{background:#2a6}.chat-bubble.system{background:#2a3a2a;color:#b5d4b5;font-family:monospace;font-size:13px}.chat-input-row{display:flex;padding:10px 12px;padding-bottom:max(10px,env(safe-area-inset-bottom));border-top:1px solid #333;gap:8px}.chat-input{flex:1;padding:12px;border-radius:20px;border:1px solid #444;background:#1a1a1a;color:#fff;outline:none;font-size:16px}.chat-input.mono{font-family:monospace}.chat-send{padding:12px 20px;border-radius:20px;border:none;background:#2a6;color:#fff;cursor:pointer;font-size:16px;white-space:nowrap;-webkit-tap-highlight-color:transparent}.chat-send:active{background:#295}.scroll-to-bottom{position:absolute;bottom:70px;left:50%;transform:translate(-50%);width:40px;height:40px;border-radius:50%;border:none;background:#2a2a2ae6;color:#fff;font-size:20px;cursor:pointer;display:flex;align-items:center;justify-content:center;-webkit-tap-highlight-color:transparent;z-index:10}.scroll-to-bottom:active{background:#3c3c3ce6}.chat-bubble.copied{background:#3b7!important;transition:background .15s}.copied-toast{display:block;font-size:11px;opacity:.8;margin-top:4px}[data-pull-refresh]:before{display:block;text-align:center;padding:12px;font-size:13px}[data-pull-refresh=ready]:before{content:"Release to refresh";color:#888}[data-pull-refresh=pulling]:before{content:"Pull to refresh...";color:#555}.console-bubble{display:inline-block;padding:10px 14px;border-radius:16px;max-width:90%;word-break:break-word;white-space:pre-wrap;font-family:monospace;font-size:13px;background:#333;color:#fff}.console-bubble.error{background:#633;color:#faa}.console-bubble.cmd{background:#2a6;font-family:inherit;font-size:inherit}.vim-chat .chat-messages{background:#000}.vim-chat .chat-bubble{background:#111;color:#0f0;font-family:monospace}.vim-chat .chat-bubble.mine{background:#0a2a0a;color:#0f0}.vim-chat .chat-sender{color:#0a0}.vim-disabled-notice{padding:16px;text-align:center;color:#0a0;font-family:monospace;font-size:14px;border-top:1px solid #333}.vim-input-row{align-items:center}.vim-mode-badge{font-family:monospace;font-size:11px;font-weight:700;padding:4px 8px;border-radius:4px;background:#333;color:#2a6;white-space:nowrap;min-width:56px;text-align:center}.vim-mode-badge.insert{color:#fa0;background:#332800}.vim-mode-badge.visual{color:#a6f;background:#2a1833}.vim-editor-wrapper{flex:1;min-width:0}.vim-editor-wrapper .cm-editor{border:1px solid #0a0;border-radius:20px;max-height:80px;overflow-y:auto;background:#000!important}.vim-editor-wrapper .cm-editor.cm-focused{outline:none;border-color:#0f0}.vim-editor-wrapper .cm-scroller{overflow-x:hidden}.vim-editor-wrapper .cm-vim-panel{display:none}.vim-editor-wrapper .cm-line{font-size:16px}.access-denied{padding:24px;color:#f66}.subtitle{color:#888;margin-bottom:24px}.error-text{color:#f66;margin-bottom:24px}.wishing-well-status{text-align:center;padding:8px 12px;color:#a8a0d0;font-style:italic;font-size:13px;border-bottom:1px solid #333}.well-message{text-align:center;color:#a8a0d0;font-style:italic;padding:12px 24px;margin:8px 0;font-size:14px}.bubblewrap-chat .chat-messages{flex:1;min-height:0}.bubblewrap-grid{padding:8px 4px;padding-bottom:max(8px,env(safe-area-inset-bottom));border-top:1px solid #333;background:#1a1a1a}.bubblewrap-row{display:flex;justify-content:center;gap:4px;margin-bottom:4px}.bubblewrap-bubble{width:34px;height:42px;border-radius:50%;border:none;background:radial-gradient(circle at 35% 35%,#5cf,#28a);color:#fff;font-size:12px;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s ease;box-shadow:0 2px 4px #0000004d,inset 0 -2px 4px #0003;-webkit-tap-highlight-color:transparent}.bubblewrap-bubble:active{transform:scale(.95)}.bubblewrap-bubble.popped{background:#222;box-shadow:inset 0 2px 4px #0006;color:#555;transform:scale(.8);animation:bw-pop .3s ease-out}@keyframes bw-pop{0%{transform:scale(1)}30%{transform:scale(1.15)}60%{transform:scale(.7)}to{transform:scale(.8)}}.bw-space{flex:1;max-width:200px;border-radius:21px}.bw-newline{width:50px;border-radius:21px;font-size:14px}.bw-batch-bar{display:flex;align-items:center;gap:8px;padding:6px 12px;background:#111;border-top:1px solid #333;animation:bw-batch-pulse .3s ease-out}@keyframes bw-batch-pulse{0%{background:#1a3a4a}to{background:#111}}.bw-batch-label{color:#888;font-size:12px;flex-shrink:0}.bw-batch-keys{display:flex;flex-wrap:wrap;gap:4px}.bw-batch-key{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:24px;padding:0 4px;border-radius:50%;background:radial-gradient(circle at 35% 35%,#5cf,#28a);color:#fff;font-size:10px;font-weight:700;animation:bw-key-appear .25s ease-out}@keyframes bw-key-appear{0%{transform:scale(0);opacity:0}60%{transform:scale(1.3)}to{transform:scale(1);opacity:1}}.bw-collapsed{display:inline-flex!important;align-items:center;flex-wrap:wrap;gap:6px}.bw-popper{margin-right:2px}.bw-keys{display:inline-flex;flex-wrap:wrap;gap:4px}.bw-key-bubble{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;background:radial-gradient(circle at 35% 35%,#5cf,#28a);color:#fff;font-size:11px;font-weight:700;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;box-shadow:0 1px 3px #0000004d}
