body { /* Firefox has a weird default font, which is a different size from the one in Chrome * and makes some renderings bad. */ font-family: "Arial", sans-serif; background: #222; color: #fff; height: 100vh; margin: 0; } a { color: #ccf; } input, textarea { background: #222; color: #fff; border-color: #444; } textarea { /* This will look better if it's consistent with input fields */ border-style: inset; border-width: 2px; } button, select { background: #333; color: #fff; } button:active { background: #000; } a, .click { cursor: pointer; } a.click { text-decoration: underline; } .input-error { border-color: #b00; } .input-error:focus { outline: #d00 solid 1px; } #errors { color: #f33; display: flex; flex-direction: column; } #errors > div { border-bottom: 1px solid #f33; background: #300; padding: 4px; } .error-dismiss { float: right; } #page-container { position: relative; max-height: 100vh; display: flex; flex-direction: column; justify-content: flex-start; align-items: stretch; } #page-container > * { flex: 0 1 auto; } #editor-help { position: absolute; top: 0; right: 0; background: #222; padding: 5px; } #stream-time-settings { display: flex; align-items: flex-end; gap: 5px; margin-bottom: 10px; margin-top: 5px; } #stream-time-settings > div { margin: 0 2px; } .field-label { display: block; } #video { width: 100%; max-height: 50vh; } #video-controls { font-size: 110%; } #video-controls select { appearance: none; font-size: inherit; background: inherit; border: none; text-align: center; } #video-controls option { background: #222; padding: 2px; } #video-controls-bar { display: flex; align-items: center; gap: 8px; } #video-controls-spacer { flex-grow: 1; } #video-controls-volume { display: flex; align-items: center; gap: 2px; } #video-controls-volume-level { width: 100px; height: 8px; border-radius: 0; border: 0; } #video-controls-playback-position { height: 10px; border-radius: 0; border: 0; } /* For some reason, there's not a cross-browser way to style elements. * This should be replaced with a cross-browser way of doing this when possible. * I only implemented WebKit/Blink and Firefox here because if you still use IE, * I quite frankly don't care about you. */ /* WEBKIT/BLINK SECTION */ #video-controls-volume-level::-webkit-progress-bar { background: #ffffff30; } #video-controls-volume-level::-webkit-progress-value { background: #ffffffc0; } #video-controls-playback-position::-webkit-progress-bar { background: #ffffff30; } #video-controls-playback-position::-webkit-progress-value { background: #ffffffc0; } /* END WEBKIT/BLINK */ /* FIREFOX SECTION */ #video-controls-volume-level { background: #ffffff30; } #video-controls-volume-level::-moz-progress-bar { background: #ffffffc0; } #video-controls-playback-position { background: #ffffff30; } #video-controls-playback-position::-moz-progress-bar { background: #ffffffc0; } /* END FIREFOX */ #video-controls-playback-position { width: 100%; } #clip-bar { width: 100%; min-height: 7px; background-color: #bbb; position: relative; } #clip-bar > div { position: absolute; background-color: #d80; height: 100%; } #waveform-container { position: relative; } #waveform { width: 100%; /* With an unbound height, the waveform can appear a bit away from the video. * The intended effect still works if we scrunch the height a bit, so here's * a height bound for the waveform image. */ max-height: 100px; filter: invert(90%); } #waveform-marker { width: 1px; height: 100%; background: #dd8800a0; position: absolute; top: 0; } #range-definitions { display: flex; flex-direction: column; gap: 1px; } .range-transition-duration-section { display: inline-block; } .range-transition-duration { width: 50px; } .range-definition-times { display: flex; align-items: center; gap: 4px; } .range-definition-start, .range-definition-end { width: 100px; text-align: right; } .range-definition-between-time-gap { width: 5px; } .range-definition-icon-gap { width: 16px; } #add-range-definition { margin-top: 2px; } .range-definition-chapter-markers > div { display: flex; align-items: center; gap: 10px; margin-left: 30px; } .range-definition-chapter-marker-start-field { display: flex; align-items: center; gap: 4px; } .range-definition-chapter-marker-start { width: 100px; text-align: right; } .range-definition-chapter-marker-edit-gap { width: 16px; } input.range-definition-chapter-marker-description { width: 500px; } .add-range-definition-chapter-marker { margin-left: 30px; margin-bottom: 7px; } #video-info { margin: 5px 0; display: grid; grid-template-columns: 200px 1fr; grid-template-rows: minmax(min-content, max-content) 1.25em 3em minmax(4em, max-content) 1.25em; gap: 2px; } #video-info-editor-notes-container { border: 1px solid #666; background-color: #125; grid-column-end: span 2; } /* In order to maintain the grid dimensions, when we hide the editors notes (for there not being them), * they still need to take up a grid slot. As such, we replace `display: none` in this context with * an effective equivalent that doesn't remove its rendering entirely. */ #video-info-editor-notes-container.hidden { display: block; visibility: hidden; height: 0; } #video-info-title-full { display: flex; align-items: center; white-space: pre; } #video-info-title { flex-grow: 1; } #video-info-title-abbreviated { width: 200px; overflow: hidden; font-size: 1em; line-height: 1em; height: 2em; text-overflow: ellipsis; /* For some reason, all this Webkit-specific-looking stuff is required to show ellipses on wrapped text. It also somehow works on Firefox. */ display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; } .video-info-thumbnail-mode-options { margin: 2px 0; } .video-info-thumbnail-position { width: 50px; } #video-info-thumbnail-template-preview-image { max-width: 320px; } #video-info-thumbnail-template-video-source-image { max-width: 640px; } #video-info-thumbnail-template-overlay-image { max-width: 640px; } .video-info-thumbnail-advanced-crop-flex-wrapper { display: flex; align-items: center; } .video-info-thumbnail-advanced-crop-flex-column { display: flex; flex-direction: column; justify-content: center; align-items: center; } .video-info-thumbnail-advanced-crop-flex-column div { margin: 0.5em; } .submission-response-error { white-space: pre-wrap; } .hidden { display: none; } #submission { margin: 5px 0; } #download { margin: 5px 0; } #data-correction { margin: 5px 0; } #data-correction-force-reset-confirm p { margin: 5px 0; } .submission-response-pending { color: #cc0; } .submission-response-error { color: #c00; } .submission-response-success { color: #0c0; } .time-converter-time { display: block; width: 200px; } #chat-replay { overflow-y: auto; min-height: 250px; } .chat-replay-message { display: flex; align-items: baseline; gap: 10px; } .chat-replay-message-time { flex-basis: 110px; color: #ccc; text-align: right; } .chat-replay-message-text { flex-basis: 200px; flex-grow: 1; } .chat-replay-message-text-action { font-style: italic; } .chat-replay-message-system { color: #aaf; } .chat-replay-message-text-action .chat-replay-message-reply:not(.chat-replay-message-text-action) { font-style: normal; /* Clear the italics from the action */ } .chat-replay-message-emote { /* This size is set based on Twitch's 1.0 emote size. This will need to be updated if that changes. (Otherwise, auto-scrolling will break.) */ width: 28px; height: 28px; } .chat-replay-message-reply { font-size: 80%; } .chat-replay-message-reply a { text-decoration: none; } .chat-replay-message-cleared { opacity: 0.5; } .chat-replay-message-cleared .chat-replay-message-text { text-decoration: line-through; }