:root{--bg0: #050705;--bg1: #090b09;--bg2: #0d100d;--line: #1e241e;--line-bright: #2c342c;--text: #c8d0c8;--text-bright: #e8f0e8;--muted: #5f6b5f;--accent: #bd93f9;--accent-dim: #221832;--accent-line: #4d3566;--danger: #f85149;--warn: #d29922;--mono: ui-monospace, "JetBrains Mono", "SF Mono", Menlo, Consolas, "Liberation Mono", monospace}*{box-sizing:border-box;margin:0;padding:0;border-radius:0!important}html,body,#app{height:100%;overflow:hidden}body{font-family:var(--mono);background:var(--bg0);color:var(--text);font-size:14px;line-height:1.45}::selection{background:var(--accent);color:#000}button{font:inherit;color:inherit;background:none;border:none;cursor:pointer}a{color:var(--accent);text-decoration:none}input,textarea{font:inherit;color:var(--text-bright);background:var(--bg1);border:1px solid var(--line);padding:8px 10px;outline:none;caret-color:var(--accent)}input:focus,textarea:focus{border-color:var(--accent-line);box-shadow:none}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--line-bright);border:2px solid var(--bg0)}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-corner{background:transparent}.app-shell{display:flex;height:100%}.content{flex:1;display:flex;flex-direction:column;min-width:0;background:var(--bg1)}.content-empty{margin:auto;text-align:center;color:var(--muted)}.content-empty h1,.content-empty h2{color:var(--accent);font-weight:600;margin-bottom:8px}.content-empty h1:before{content:"~/ ";color:var(--muted)}.server-bar{width:64px;background:var(--bg0);border-right:1px solid var(--line);display:flex;flex-direction:column;align-items:center;gap:6px;padding:10px 0;overflow-y:auto;flex-shrink:0}.server-icon{width:44px;height:44px;border:1px solid var(--line);background:var(--bg1);color:var(--muted);font-size:15px;font-weight:700;display:flex;align-items:center;justify-content:center;transition:color .1s,border-color .1s,background .1s}.server-icon:hover{border-color:var(--accent-line);color:var(--accent)}.server-icon.active{border-color:var(--accent);color:#000;background:var(--accent)}.server-icon.home{color:var(--accent);font-size:13px}.server-icon.home.active{color:#000;background:var(--accent)}.server-icon.action{color:var(--muted)}.server-icon.action:hover{color:var(--accent)}.server-sep{width:28px;height:1px;background:var(--line)}.sidebar{width:232px;background:var(--bg1);border-right:1px solid var(--line);display:flex;flex-direction:column;flex-shrink:0}.empty-sidebar{align-items:center;justify-content:center}.sidebar-hint{color:var(--muted);text-align:center;padding:0 20px;font-size:13px}.guild-header{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;font-weight:700;color:var(--text-bright);border-bottom:1px solid var(--line);text-transform:lowercase}.guild-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.guild-name:before{content:"./";color:var(--accent)}.guild-actions{display:flex;gap:4px}.icon-btn{padding:2px 5px;border:1px solid transparent;color:var(--muted);font-size:12px;font-family:var(--mono)}.icon-btn:hover{border-color:var(--line-bright);color:var(--accent)}.icon-btn.danger:hover{color:var(--danger)}.channel-scroll{flex:1;overflow-y:auto;padding:6px}.channel-group{font-size:11px;font-weight:700;text-transform:uppercase;color:var(--muted);padding:12px 6px 4px;letter-spacing:1px;display:flex;align-items:center;gap:8px}.channel-group:after{content:"";flex:1;height:1px;background:var(--line)}.channel-item{display:flex;align-items:center;gap:6px;width:100%;padding:4px 6px;color:var(--muted);text-align:left;font-size:13px;border-left:2px solid transparent}.channel-item:hover{background:var(--bg2);color:var(--text)}.channel-item.active{background:var(--accent-dim);border-left-color:var(--accent);color:var(--accent)}.channel-item.unread{color:var(--text-bright);font-weight:700}.channel-item.unread .channel-hash{color:var(--accent)}.channel-item.unread:after{content:"●";margin-left:auto;color:var(--accent);font-size:9px}.server-icon.unread:not(.active){border-color:var(--accent);color:var(--accent)}.channel-hash{color:var(--muted);font-weight:600}.channel-item.active .channel-hash{color:var(--accent)}.voice-occupant{display:flex;align-items:center;gap:6px;padding:2px 6px 2px 22px;color:var(--muted);font-size:12px}.voice-occupant:before{content:"├";color:var(--line-bright)}.voice-occupant-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.voice-badge{font-size:11px;color:var(--warn)}.voice-status{background:var(--bg0);padding:6px 10px;display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--line)}.voice-status-info{color:var(--accent);font-size:12px}.voice-live{margin-right:4px;animation:blink 1.4s steps(2) infinite}@keyframes blink{50%{opacity:.25}}.user-panel{background:var(--bg0);padding:8px 10px;display:flex;align-items:center;gap:8px;border-top:1px solid var(--line)}.user-panel-names{display:flex;flex-direction:column;min-width:0;flex:1}.user-display{color:var(--text-bright);font-weight:600;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-tag{color:var(--muted);font-size:11px}.user-tag:before{content:""}.avatar{width:30px;height:30px;background:var(--accent-dim);border:1px solid var(--accent-line);color:var(--accent);display:inline-flex;align-items:center;justify-content:center;font-weight:700;flex-shrink:0;position:relative}.avatar.small{width:22px;height:22px;font-size:11px}.avatar.large{width:64px;height:64px;font-size:26px}.online-dot:after{content:"";position:absolute;right:-2px;bottom:-2px;width:7px;height:7px;background:var(--accent);border:1px solid var(--bg0)}.chat-area{display:flex;flex-direction:column;height:100%;min-width:0}.chat-header{display:flex;align-items:center;gap:8px;padding:10px 14px;border-bottom:1px solid var(--line);flex-shrink:0;background:var(--bg1)}.chat-title{font-weight:700;color:var(--text-bright)}.chat-topic{color:var(--muted);font-size:12px;border-left:1px solid var(--line-bright);padding-left:8px}.chat-topic:before{content:"// "}.message-list{flex:1;overflow-y:auto;padding:8px 14px}.chat-start{color:var(--muted);padding:24px 0 8px;font-size:13px}.chat-start h3:before{content:"$ ";color:var(--accent)}.chat-loading{color:var(--muted);text-align:center;padding:8px;font-size:12px}.day-divider{display:flex;align-items:center;gap:12px;color:var(--muted);font-size:11px;margin:14px 0 6px}.day-divider:before,.day-divider:after{content:"";flex:1;height:1px;background:var(--line)}.message{display:flex;gap:10px;padding:3px 6px;margin-top:10px}.message.grouped{margin-top:0}.message.grouped .avatar{visibility:hidden;height:0}.message:hover{background:var(--bg2)}.message-meta{display:flex;align-items:baseline;gap:8px}.message-author{font-weight:700;color:var(--accent)}.message-time{font-size:11px;color:var(--muted)}.message-content{color:var(--text);white-space:pre-wrap;word-break:break-word}.msg-delete,.msg-edit{visibility:hidden;color:var(--muted);font-size:11px;margin-left:8px;padding:0 4px;font-family:var(--mono)}.message:hover .msg-delete,.message:hover .msg-edit{visibility:visible}.msg-delete:hover{color:var(--danger)}.msg-edit:hover{color:var(--accent)}.edited{color:var(--muted);font-size:10px;margin-left:6px}.edit-input{width:100%;margin-top:4px;resize:none}.edit-hint{font-size:11px;color:var(--muted);margin-top:4px}.new-divider{display:flex;align-items:center;gap:12px;color:var(--accent);font-size:10px;font-weight:700;letter-spacing:2px;margin:10px 0 4px}.new-divider:before{content:"";flex:1;height:1px;background:var(--accent-line)}.new-divider:after{content:"";width:40px;height:1px;background:var(--accent-line)}.typing-row{min-height:18px;padding:0 14px;font-size:11px;color:var(--muted)}.typing-dots{color:var(--accent)}.message-input{padding:0 14px 16px;display:flex;align-items:flex-start;gap:8px}.message-input:before{content:">";color:var(--accent);font-weight:700;padding-top:9px}.message-input textarea{flex:1;resize:none;min-height:40px;max-height:200px}.member-list{width:200px;background:var(--bg1);border-left:1px solid var(--line);overflow-y:auto;padding:10px 8px;flex-shrink:0}.member-group{font-size:11px;font-weight:700;text-transform:uppercase;color:var(--muted);letter-spacing:1px;padding:10px 6px 4px}.member-item{display:flex;align-items:center;gap:8px;padding:3px 6px;color:var(--text);font-size:13px}.member-item.offline{opacity:.35}.member-item.offline .avatar{border-color:var(--line);color:var(--muted);background:var(--bg2)}.member-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.member-op{color:var(--warn);font-weight:700}.voice-room{display:flex;flex-direction:column;height:100%}.tile-grid{flex:1;overflow-y:auto;display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:10px;padding:14px;align-content:center}.tile{position:relative;background:#000;border:1px solid var(--line);aspect-ratio:16 / 9;display:flex;align-items:center;justify-content:center;overflow:hidden}.tile.screen{grid-column:span 2;border-color:var(--accent-line)}.tile video{width:100%;height:100%;object-fit:contain}.tile video.mirror{transform:scaleX(-1)}.tile-tag{position:absolute;left:6px;bottom:6px;background:#000000d9;border:1px solid var(--line);color:var(--text);font-size:11px;padding:2px 6px;z-index:3;text-transform:lowercase}.tile-source{color:var(--accent);margin-right:4px}.audio-tile{aspect-ratio:auto;min-height:120px;flex-direction:column;gap:8px}.voice-controls{display:flex;justify-content:center;gap:8px;padding:14px;border-top:1px solid var(--line)}.voice-btn{padding:8px 14px;border:1px solid var(--line-bright);background:var(--bg1);color:var(--text);font-family:var(--mono);font-size:12px;text-transform:uppercase;letter-spacing:1px;transition:background .1s,color .1s,border-color .1s}.voice-btn:hover{border-color:var(--accent-line);color:var(--accent)}.voice-btn.on{background:var(--accent);border-color:var(--accent);color:#000}.voice-btn.off,.voice-btn.disconnect{border-color:var(--danger);color:var(--danger)}.voice-btn.disconnect:hover{background:var(--danger);color:#000}.voice-btn:disabled{opacity:.35;cursor:default}.voice-btn:disabled:hover{border-color:var(--line-bright);color:var(--text);background:var(--bg1)}.draw-overlay{position:absolute;pointer-events:none;touch-action:none;z-index:2}.draw-overlay.enabled{pointer-events:auto;cursor:crosshair}.draw-toolbar{display:flex;align-items:center;justify-content:center;gap:10px;padding:8px 14px 0}.muted-label{color:var(--muted);font-size:12px}.draw-swatch{width:20px;height:20px;border:1px solid var(--line-bright)}.draw-swatch.selected{border-color:var(--text-bright);outline:1px solid var(--text-bright);outline-offset:2px}.draw-toolbar input[type=range]{width:120px;accent-color:var(--accent)}.auth-page{height:100%;display:flex;align-items:center;justify-content:center;background:var(--bg0)}.auth-card{background:var(--bg1);border:1px solid var(--line);padding:28px;width:400px;display:flex;flex-direction:column;gap:12px}.auth-card h1{color:var(--accent);font-size:18px;font-weight:700}.auth-card h1:before{content:"$ ";color:var(--muted)}.auth-sub{color:var(--muted);font-size:13px}.auth-card label,.modal-card label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--muted)}.auth-error{color:var(--danger);font-size:12px}.auth-error:before{content:"error: "}.auth-alt{color:var(--muted);font-size:12px}.btn{padding:8px 14px;border:1px solid var(--line-bright);color:var(--text);background:var(--bg1);font-family:var(--mono);font-size:12px;text-transform:uppercase;letter-spacing:1px;transition:background .1s,color .1s,border-color .1s}.btn:hover{border-color:var(--accent-line);color:var(--accent)}.btn.primary{background:var(--accent);border-color:var(--accent);color:#000;font-weight:700}.btn.primary:hover{background:#d0aaff}.btn.primary:disabled{opacity:.5;cursor:default}.modal-backdrop{position:fixed;inset:0;background:#000c;display:flex;align-items:center;justify-content:center;z-index:100}.modal-card{background:var(--bg1);border:1px solid var(--line-bright);padding:24px;width:400px}.modal-card form{display:flex;flex-direction:column;gap:12px}.modal-card h2{color:var(--accent);font-size:16px;font-weight:700}.modal-card h2:before{content:"$ ";color:var(--muted)}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:8px}.channel-type-picker{display:flex;gap:8px}.channel-type-picker label{flex:1;border:1px solid var(--line);padding:10px;cursor:pointer;color:var(--muted);text-transform:none;font-size:13px;font-weight:400;text-align:center}.channel-type-picker label.active{border-color:var(--accent);color:var(--accent);background:var(--accent-dim)}.channel-type-picker input{display:none}
