@charset "utf-8"; /* CSS Document */ @import url(https://rsms.me/inter/inter.css); :root { --background-video: #000; --background-chat: #111; --midground: #888; --foreground: #ddd; --accent: #0055ff; --success: #009632; --warning: #ffb800; --error: #ff0800; --border: #333; --box-shadow: 0rem .25rem 1rem rgba(0, 0, 0, .25); } html { box-sizing: border-box; } *, *:before, *:after { box-sizing: inherit; } body { font-family: Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: .875rem; line-height: 1.4; color: var(--foreground); background-color: var(--background-chat); margin: 0; padding: 0; display: flex; flex-direction: column; } h1, h2, h3, h4, h5, h6 { margin: 0; display: inline; } h1 { font-size: 2.441rem; } h2 { font-size: 1.953rem; } h3 { font-size: 1.563rem; } h4 { font-size: 1.25rem; } h5 { font-size: 1rem; } h6 { font-size: .8rem; } a { color: var(--accent); } ul { list-style: none outside none; padding: 0; margin: 0; } input, button, textarea { font-family: inherit; font-size: inherit; line-height: inherit; } code, textarea { font-family: Menlo, Monaco, Consolas, "Courier New", monospace; } input[type="text"]:focus, input[type="password"]:focus, button:focus, textarea:focus { outline: none; } /* Button */ button { display: inline-flex; align-items: center; text-align: center; background-color: var(--background-chat); color: var(--midground); line-height: 1; cursor: pointer; padding: .5rem; border-radius: .5rem; border: 0; transition: background-color ease-in-out .15s, color ease-in-out .15s; } button:not(:first-child) { margin-left: .5rem; } button:hover, button.active { background-color: rgba(0, 0, 0, .5); color: var(--foreground); } button:hover ion-icon, button.active ion-icon, button:focus, button:focus ion-icon { color: var(--foreground); } button > * { line-height: 1; } ion-icon { pointer-events: none; font-size: 1.2rem; color: var(--midground); transition: background-color ease-in-out .15s, color ease-in-out .15s; } button span { pointer-events: none; } /* Input */ label { font-weight: bold; } input, textarea { color: var(--foreground); } input[type=text], input[type="password"], textarea { padding: .5rem; border-radius: .5rem; color: var(--foreground); background-color: var(--background-video); border: .125rem solid; border-color: var(--border); transition: border-color ease-in-out .15s; } input[type=text]:focus, input[type="password"]:focus, textarea:focus { border-color: var(--accent); } /* States */ button.success, button.success ion-icon, button.success:hover, button.success:focus, .server-msg-reconnect { color: var(--success); } button.success-bg, button.success-bg ion-icon, button.success-bg:hover, button.success-bg:focus { color: var(--foreground); background-color: var(--success); } button.danger, button.danger ion-icon, button.danger:hover, button.danger:focus, .server-msg-disconnect { color: var(--error); } button.danger-bg, button.danger-bg ion-icon, button.danger-bg:hover, button.danger-bg:focus { color: var(--foreground); background-color: var(--error); } .server-msg-disconnect, .server-msg-reconnect { text-align: center; } .collapse { display :none; visibility :hidden; } .collapse.in { display: block; visibility: visible; } /* Info */ .info { padding: 1rem; display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; } .info header { flex-wrap: nowrap; overflow-x: hidden; white-space: nowrap; } .info header:first-child { display: flex; align-items: center; flex-wrap: wrap; margin-right: .5rem; } .info header > *:not(:last-child) { margin-right: .5rem; } .info header button { background-color: var(--background-video); } header h4 { overflow: hidden; text-overflow: ellipsis; } .controls { position: relative; display: flex; flex-wrap: nowrap; padding-bottom: 1rem; } .controls span { display: flex; align-items: center; } /* * Start main */ /* Video */ #video { order: 2; background: var(--background-video); } /* Embed responsive */ .embed-responsive { position: relative; display: block; height: 0; padding: 0; overflow: hidden; background-color: var(--background-video); } .embed-responsive video, .embed-responsive iframe { position: absolute; top: 0; left: 0; bottom: 0; height: 100%; width: 100%; border: 0; } .embed-responsive.embed-responsive-16by9 { padding-bottom: 56.25%; } .embed-responsive.embed-responsive-4by3 { padding-bottom: 75% } .embed-responsive:full-screen { width: 100%; } /* Playlist */ #playlist { border-top: .063rem solid; border-color: var(--border); } /* Metadata */ .metadata { display: flex; align-items: center; padding: 1rem; color: var(--midground); padding-top: 0; } .metadata > span { display: flex; align-items: center; margin-right: 1rem; } .metadata ion-icon { margin-right: .25rem; } /* Add video */ #addfromurl, #customembed { padding: 1rem; margin: 0 auto; max-width: 32rem; } #addfromurl > *, #customembed > * { margin-bottom: 1rem; } #addfromurl > div:first-child { display: flex; } #mediaurl { flex-grow: 2; } #customembed > input, #customembed > textarea { display: block; width: 100%; } #addfromurl div, #customembed div { text-align: right; } /* Queue */ .queue_temp { background-color: var(--background-chat); } .queue_entry { padding: 1rem; border-bottom: .063rem solid; border-color: var(--border); display: flex; flex-wrap: wrap; justify-content: space-between; transition: background-color ease-in-out .15s; } .queue_entry:first-child { border-top: .063rem solid; border-color: var(--border); } .queue_entry a { color: var(--foreground); text-decoration: none; } .queue_entry.queue_active { border-left: .25rem solid; border-left-color: var(--accent); } .queue_sortable li { cursor: row-resize; } /* Footer */ footer#footer { text-align: center; padding: 1rem; } /* * End main */ .gutter { display: none; } /* * Start chat */ #chat { position: relative; display: flex; order: 0; flex-direction: column; flex-wrap: nowrap; padding: 1rem; height: calc( 100vh - 56.25vw ); } #chat header { display: flex; align-items: center; justify-content: space-between; } #chat .controls { display: flex; justify-content: space-between; } /* Users online */ #userlist { overflow-y: auto; background-color: var(--background-video); border-right: 0; padding: 1rem; border-radius: 1rem; height: 12rem; margin-bottom: 1rem; } .userlist_item { display: flex; align-items: center; margin-bottom: .25em; cursor: pointer; } .userlist_item > *:not(:last-child) { margin-right: .25em; } .userlist_owner { color: var(--accent); font-weight: bold; } .userlist_guest { color: var(--midground); } #userlisttoggle { overflow: hidden; white-space: nowrap; text-align: left; } .md.hydrated { flex-shrink: 0; } #usercount { display: block; text-overflow: ellipsis; overflow: hidden; } /* Options */ #optionsPanel { z-index: 1; background-color: var(--background-chat); overflow-y: scroll; position: absolute; top: 3rem; left: 1rem; bottom: 1rem; right: 1rem; } #optionsPanel div { margin-bottom: .5rem; } #optionsPanel div:not(:first-child) { border-top: .063rem solid; border-color: var(--border); padding-top: 1rem; } #optionsPanel li button { padding: 1rem 0; display: flex; align-items: stretch; width: 100%; border-radius: 0; text-align: left; } #optionsPanel li button:hover { background-color: var(--background-chat); } /* Message buffer */ #messagebuffer { flex-grow: 2; flex-shrink: 8; overflow: auto; white-space: pre-wrap; word-wrap: break-word; width: 100%; height: 100%; } #messagebuffer > * { margin-bottom: 1em; } .head { display: flex; align-items: center; } .username { display: block; } .timestamp { margin-left: .5em; line-height: 1; font-size: .8em; font-style: normal; color: var(--midground); } #messagebuffer .text { color: var(--midground); } .server-whisper { font-style: italic; } /* Chat input */ #chatbox { padding-top: 1rem; border-top: .063rem solid; border-color: var(--border); display: flex; flex-direction: row; } #chatbox > *:not(:first-child) { margin-left: .5rem; } #chatline { flex-grow: 2; width: 2rem; } /* Emotes */ #smileswrap { display: none; background: rgba(0,0,0,0.7); width: 100%; height: 12rem; padding: 1rem; border-radius: 1rem; overflow-y: scroll; text-align: center; grid-template-columns: repeat( auto-fit, minmax( 4rem, 1fr ) ); grid-gap: .5rem; gap: .5rem; } .smile-preview { height: 4rem; width: 4rem; object-fit: scale-down; cursor: pointer; } .channel-emote { max-width: 10rem; max-height: 10rem; } .chat-img { max-width: 12.5rem; max-height: 12.5rem; } #guestlogin, #guestpassword { display: flex; flex-direction: column; padding-top: 1rem; border-top: .063rem solid; border-color: var(--border); } /* Guest login */ #guestlogin label, #guestpassword label { display: block; margin-bottom: 1em; } #guestpassword span > *:not(:first-child) { margin-left: .5rem; } #guestpass_icon:hover { cursor: pointer; } /* * End chat */ /* * Scrollbar */ html { scrollbar-color: rgba(255, 255, 255, 0.1) transparent; scrollbar-width: thin; } ::-webkit-scrollbar { width: 5px; } ::-webkit-scrollbar-track { background: transparent; } ::-webkit-scrollbar-thumb { background: rgba(255, 255, 255, 0.1); } ::-webkit-scrollbar-thumb:hover { background: rgba(255, 255, 255, 0.2); } /* * Media queries */ @media only screen and (min-width: 50rem) { body { display: grid; grid-template-areas: "video gutter chat"; overflow-y: hidden; font-size: 1rem; width: 100%; height: 100vh; } body.swap { grid-template-areas: "chat gutter video"; } .info { flex-wrap: nowrap; } #video { grid-area: video; width: 100%; height: 100%; overflow: auto; background: var(--background-video); } #header { font-size: 1.953rem; display: inline-block; flex: 1; overflow-x: hidden; white-space: nowrap; text-overflow: ellipsis; } .gutter { grid-area: gutter; display: block; cursor: col-resize; background-color: var(--border); transition: background-color ease-in-out .15s; } .gutter:hover { background-color: var(--accent); } #chat { grid-area: chat; height: 100vh; } } @-ms-viewport { width:device-width } /* Mobile page fullscreen */ .mobile-view #chatbox { padding-top: 0; border-top: 0; } .mobile-view #chat { padding: 0 1rem; } .mobile-view .controls { padding-bottom: 0; } .mobile-view #optionsPanel { top: 2rem; bottom: 0; }