@import"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap";:root{--bg-primary: #0f172a;--bg-secondary: #1e293b;--text-primary: #f8fafc;--text-secondary: #94a3b8;--accent: #3b82f6;--accent-hover: #2563eb;--border: #334155}*{box-sizing:border-box}body{margin:0;font-family:Inter,sans-serif;background-color:var(--bg-primary);color:var(--text-primary)}.app-container{display:flex;height:100vh;overflow:hidden}.sidebar{width:250px;background-color:var(--bg-secondary);border-right:1px solid var(--border);display:flex;flex-direction:column}.sidebar-header{padding:16px;border-bottom:1px solid var(--border);font-weight:700;font-size:1.2rem}.channel-list{flex:1;overflow-y:auto;padding:8px}.channel-item{display:flex;align-items:center;padding:10px;cursor:pointer;border-radius:6px;color:var(--text-secondary);transition:all .2s}.channel-item:hover,.channel-item.active{background-color:#3b82f61a;color:var(--text-primary)}.channel-icon{margin-right:10px;width:20px;height:20px}.main-content{flex:1;display:flex;flex-direction:column;background-color:var(--bg-primary)}.header{height:60px;border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 20px;justify-content:space-between}.messages-area{flex:1 1 auto;min-height:0;overflow-y:auto;padding:20px;display:flex;flex-direction:column}.messages-area>:last-child{margin-bottom:0}.chat-container{flex:1 1 auto;min-height:0;display:flex;flex-direction:column}.message{margin-bottom:8px;line-height:1.4}.message:last-child{margin-bottom:0}.timestamp{color:var(--text-secondary);font-size:.8rem;margin-right:8px;font-family:monospace}.badge-list{display:inline;margin-right:4px}.badge-image{height:18px;width:18px;vertical-align:middle;margin-right:2px;display:inline-block}.username{font-weight:600;margin-right:8px}.login-modal{position:fixed;top:0;left:0;right:0;bottom:0;background:#000c;display:flex;justify-content:center;align-items:center;z-index:1000}.login-box{background:var(--bg-secondary);padding:30px;border-radius:8px;width:300px;border:1px solid var(--border)}input{background:var(--bg-primary);border:1px solid var(--border);color:#fff;padding:8px;border-radius:4px;width:100%;margin-bottom:10px}button{background:var(--accent);color:#fff;border:none;padding:8px 16px;border-radius:4px;cursor:pointer;width:100%}button:hover{background:var(--accent-hover)}.message-content{display:inline}.emote-image{height:28px;vertical-align:middle;margin:0 2px;display:inline-block;border-radius:2px;transition:transform .1s ease}.emote-image:hover{transform:scale(1.2)}.virtual-scroll-container{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;position:relative;will-change:transform;-webkit-overflow-scrolling:touch}.virtual-scroll-container::-webkit-scrollbar{width:8px}.virtual-scroll-container::-webkit-scrollbar-track{background:var(--bg-secondary)}.virtual-scroll-container::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}.virtual-scroll-container::-webkit-scrollbar-thumb:hover{background:var(--text-secondary)}.emote-viewer{padding:20px;overflow-y:auto;height:100%}.emote-section{margin-bottom:30px;border:1px solid var(--border);border-radius:8px;overflow:hidden}.emote-section-header{background:var(--bg-secondary);padding:12px 16px;font-weight:600;font-size:16px;border-bottom:1px solid var(--border)}.provider-section{border-bottom:1px solid var(--border)}.provider-section:last-child{border-bottom:none}.provider-header{display:flex;justify-content:space-between;align-items:center;padding:10px 16px;background:#3b82f60d;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background .2s}.provider-header:hover{background:#3b82f61a}.emote-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(60px,1fr));gap:8px;padding:16px}.emote-cell{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:8px;border-radius:4px;cursor:pointer;transition:all .2s;position:relative}.emote-cell:hover{background:#3b82f61a;transform:scale(1.1)}.emote-cell img{max-width:50px;max-height:50px;object-fit:contain}.emote-code{font-size:10px;color:var(--text-secondary);margin-top:4px;text-align:center;word-break:break-word}.temporal-controls{display:flex;align-items:center;gap:10px;padding:10px 16px;background:var(--bg-secondary);border-radius:8px;margin-bottom:20px;position:relative}.temporal-controls button{width:auto;padding:6px 12px;font-size:14px;display:flex;align-items:center}.temporal-controls button:disabled{opacity:.3;cursor:not-allowed}.timestamp-display{font-family:monospace;font-size:14px;padding:6px 12px;background:var(--bg-primary);border-radius:4px;cursor:pointer;border:1px solid var(--border);transition:all .2s}.timestamp-display:hover{background:#3b82f61a;border-color:var(--accent)}.pagination-controls{display:flex;justify-content:center;align-items:center;gap:10px;padding:12px;border-top:1px solid var(--border)}.pagination-controls button{width:auto;font-size:12px}.copy-feedback{position:absolute;background:#22c55e;color:#fff;padding:4px 8px;border-radius:4px;font-size:11px;pointer-events:none;animation:fadeOut 1s forwards}@keyframes fadeOut{0%{opacity:1}70%{opacity:1}to{opacity:0}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.emote-tabs{display:flex;gap:0;border-bottom:1px solid var(--border);background:var(--bg-secondary);overflow-x:auto}.emote-tab{flex:1;padding:12px 16px;background:transparent;border:none;color:var(--text-secondary);cursor:pointer;font-weight:500;font-size:14px;transition:all .2s;white-space:nowrap;border-bottom:2px solid transparent}.emote-tab:hover{color:var(--text-primary);background:#3b82f60d}.emote-tab.active{color:var(--accent);border-bottom-color:var(--accent)}.emote-sub-tabs{background:var(--bg-primary)}.emote-sub-tabs .emote-tab{flex:0;font-size:13px;padding:8px 16px}.stream-state-bar{display:flex;align-items:center;gap:12px;padding:10px 16px;background:var(--bg-secondary);border-bottom:1px solid var(--border);font-size:13px}.live-indicator{padding:2px 8px;border-radius:4px;font-size:11px;font-weight:700;text-transform:uppercase}.live-indicator.live{background:#ef4444;color:#fff}.live-indicator.offline{background:#444;color:#999}.state-item{color:var(--text-secondary)}.stream-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px;padding:16px}.stat-card{background:var(--bg-secondary);border-radius:8px;padding:14px;text-align:center;border:1px solid var(--border)}.stat-value{font-size:22px;font-weight:700;color:var(--text-primary)}.stat-label{font-size:11px;color:var(--text-secondary);margin-top:4px}.stream-chart,.session-list{padding:0 16px 16px}.session-header{display:flex;gap:12px;padding:6px 0;font-size:11px;color:var(--text-secondary);border-bottom:1px solid var(--border);text-transform:uppercase;font-weight:600}.session-row{display:flex;gap:12px;padding:8px 0;font-size:13px;color:var(--text-primary);border-bottom:1px solid #1a1a2e}.session-row:hover{background:#3b82f60d}.uplot,.uplot *,.uplot *:before,.uplot *:after{box-sizing:border-box}.uplot{font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";line-height:1.5;width:min-content}.u-title{text-align:center;font-size:18px;font-weight:700}.u-wrap{position:relative;-webkit-user-select:none;user-select:none}.u-over,.u-under{position:absolute}.u-under{overflow:hidden}.uplot canvas{display:block;position:relative;width:100%;height:100%}.u-axis{position:absolute}.u-legend{font-size:14px;margin:auto;text-align:center}.u-inline{display:block}.u-inline *{display:inline-block}.u-inline tr{margin-right:16px}.u-legend th{font-weight:600}.u-legend th>*{vertical-align:middle;display:inline-block}.u-legend .u-marker{width:1em;height:1em;margin-right:4px;background-clip:padding-box!important}.u-inline.u-live th:after{content:":";vertical-align:middle}.u-inline:not(.u-live) .u-value{display:none}.u-series>*{padding:4px}.u-series th{cursor:pointer}.u-legend .u-off>*{opacity:.3}.u-select{background:#00000012;position:absolute;pointer-events:none}.u-cursor-x,.u-cursor-y{position:absolute;left:0;top:0;pointer-events:none;will-change:transform}.u-hz .u-cursor-x,.u-vt .u-cursor-y{height:100%;border-right:1px dashed #607D8B}.u-hz .u-cursor-y,.u-vt .u-cursor-x{width:100%;border-bottom:1px dashed #607D8B}.u-cursor-pt{position:absolute;top:0;left:0;border-radius:50%;border:0 solid;pointer-events:none;will-change:transform;background-clip:padding-box!important}.u-axis.u-off,.u-select.u-off,.u-cursor-x.u-off,.u-cursor-y.u-off,.u-cursor-pt.u-off{display:none}
