diff options
Diffstat (limited to 'res/css/des.css')
| -rw-r--r-- | res/css/des.css | 385 |
1 files changed, 332 insertions, 53 deletions
diff --git a/res/css/des.css b/res/css/des.css index 99a2c58..da003e7 100644 --- a/res/css/des.css +++ b/res/css/des.css @@ -39,6 +39,7 @@ --warning: var(--cl-yellow); --error: var(--cl-red-6); --border: var(--cl-gray-3); + --paused-by: var(--cl-white); --box-shadow: 0rem .25rem 1rem rgba(0, 0, 0, .25); } @@ -392,6 +393,10 @@ button.danger-bg:focus { overflow: hidden; } +.paused-by { + color: var(--paused-by); +} + .info header { display: flex; align-items: center; @@ -431,6 +436,83 @@ header h4 { align-items: center; } +.playlist-menu-wrap { + position: relative; + display: inline-flex; + margin-left: .5rem; +} + +#playlist-menu-btn { + position: relative; +} + +#playlist-menu-indicator { + position: absolute; + top: 4px; + right: 4px; + width: 8px; + height: 8px; + background-color: var(--accent); + border-radius: 50%; +} + +.playlist-menu-dropdown { + position: absolute; + top: calc(100% + .5rem); + right: 0; + background: var(--background-chat); + border: .063rem solid var(--border); + border-radius: 0; + box-shadow: var(--box-shadow); + z-index: 1000; + min-width: 14rem; + padding: .35rem 0; + display: flex; + flex-direction: column; +} + +.playlist-menu-dropdown button.playlist-menu-item { + display: flex; + align-items: center; + width: 100%; + padding: .6rem 1rem; + margin-left: 0; + background: transparent; + border-radius: 0; + text-align: left; + white-space: nowrap; + font-size: .9rem; + color: var(--midground); + transition: background-color ease .15s, color ease .15s; +} + +.playlist-menu-dropdown button.playlist-menu-item:hover, +.playlist-menu-dropdown button.playlist-menu-item.active { + background-color: rgba(255, 255, 255, .08); + color: var(--foreground); +} + +.playlist-menu-dropdown button.playlist-menu-item ion-icon { + margin-right: .6rem; + font-size: 1.1rem; +} + +.playlist-menu-dropdown button.playlist-menu-item .hotkey-hint { + color: var(--midground); + opacity: .75; + font-size: .85em; + margin-left: .25rem; +} + +.hotkeys-disabled .hotkey-hint { + display: none; +} + +#playlist-menu-btn.danger, +#playlist-menu-btn.danger ion-icon { + color: var(--error); +} + /* * Start main */ @@ -453,9 +535,7 @@ header h4 { grid-area: video; width: 100%; height: 100%; - /* Breaks subs after viewport overflow on FF+Linux (SyncTube#28) */ - /* overflow: auto; */ - overflow: scroll; + overflow: auto; background: var(--background-video); } } @@ -488,14 +568,54 @@ header h4 { /* Embed responsive */ -.embed-responsive:empty { - min-height: 60vh; +.embed-responsive:empty, +.embed-responsive:not(:has(iframe, video, object, embed)) { + aspect-ratio: 16 / 9; + min-height: unset; } .embed-responsive { background-color: var(--background); width: 100%; max-height: 80vh; + position: relative; +} + +.fullscreen-chat-btn { + display: none; + position: absolute; + top: 15px; + right: 15px; + z-index: 1; + background: rgba(0, 0, 0, 0.5); + opacity: 0.5; + border-radius: 50%; + width: 42px; + height: 42px; + justify-content: center; + outline: none; + transition: opacity 0.2s ease, background-color 0.2s ease, transform 0.15s ease; +} + +.fullscreen-chat-btn:hover { + opacity: 1; + background: rgba(0, 0, 0, 0.75); + color: #ffffff; + transform: scale(1.08); +} + +.fullscreen-chat-btn:active { + transform: scale(0.95); +} + +.fullscreen-chat-btn ion-icon { + color: white; + font-size: 22px; +} + +/* Fullscreen chat button display only when unread messages exist */ +#ytapiplayer:fullscreen .fullscreen-chat-btn.has-unread { + display: flex; } .temp-videoplayer { @@ -507,6 +627,10 @@ header h4 { max-height: 80vh; } +#ytapiplayer:fullscreen #videoplayer { + max-height: unset; +} + .videoplayerIframeParent { width: 100%; height: 100%; @@ -520,10 +644,6 @@ iframe#videoplayer { } @media only screen and (orientation: portrait) { - .embed-responsive:empty { - min-height: 20vh; - } - .embed-responsive { max-height: 30vh; } @@ -623,6 +743,8 @@ iframe#videoplayer { } .queue_entry { + position: relative; + overflow: hidden; padding: 1rem; border-bottom: .063rem solid; border-color: var(--border); @@ -632,9 +754,56 @@ iframe#videoplayer { transition: background-color ease-in-out .15s; } +.queue_entry>header, +.queue_entry>.controls { + position: relative; + z-index: 1; +} + +.qe_progress { + position: absolute; + left: 0; + top: 0; + z-index: 0; + height: 100%; + width: 0; + background-color: var(--background-chat); + pointer-events: none; + transition: width ease-out .2s; +} + +.queue_cached { + background-color: var(--background-chat); +} + +.queue_entry.queue_incomplete { + background-color: transparent; +} + +.queue_incomplete>header, +.queue_incomplete .qe_title { + color: color-mix(in srgb, var(--foreground) 50%, transparent); +} + +.queue_incomplete .controls button { + background-color: color-mix(in srgb, var(--background-chat) 50%, transparent); +} + +.queue_entry.queue_incomplete { + border-left: .25rem solid; + border-left-color: var(--background-chat); + animation: queue_incomplete_blinker 3s ease-in-out infinite; +} + +@keyframes queue_incomplete_blinker { + 50% { + border-left-color: var(--border); + } +} + .queue_entry:first-child { border-top: .063rem solid; - border-color: var(--border); + border-top-color: var(--border); } .queue_entry a { @@ -654,10 +823,6 @@ footer#footer { padding: 1rem; } -/* - * End main - */ - .gutter { display: none; } @@ -687,10 +852,26 @@ footer#footer { order: 0; flex-direction: column; flex-wrap: nowrap; - padding: 1rem; + container-type: inline-size; + --chat-px: clamp(0.25rem, 10cqw - 1rem, 1rem); + --chat-py: clamp(0.25rem, 2vh, 1rem); + padding: 0; height: 40vh; } +#chat>* { + padding-left: var(--chat-px); + padding-right: var(--chat-px); +} + +#chat>*:first-child { + padding-top: var(--chat-py); +} + +#chat>#chat-body { + padding-bottom: var(--chat-py); +} + @media only screen and (orientation: landscape) { #chat { grid-area: chat; @@ -707,7 +888,15 @@ footer#footer { #chat .controls { display: flex; justify-content: space-between; - padding-bottom: 1rem; + padding-bottom: clamp(0.25rem, 1.5vh, 1rem); +} + +#chat-body { + position: relative; + flex: 1; + display: flex; + flex-direction: column; + min-height: 0; } /* Users online */ @@ -763,7 +952,7 @@ footer#footer { text-align: left; } -#pause-indicator-portrait { +#pause-indicator-chat { padding-left: 0.2rem; } @@ -780,38 +969,91 @@ footer#footer { /* Options */ +.toggle-switch { + position: relative; + display: inline-block; + width: 44px; + height: 24px; + background-color: var(--midground); + border-radius: 24px; + transition: background-color 0.3s; + flex-shrink: 0; + margin-left: 1rem; + cursor: pointer; +} + +.toggle-switch.on { + background-color: var(--accent); +} + +.toggle-switch::after { + content: ''; + position: absolute; + top: 2px; + left: 2px; + width: 20px; + height: 20px; + background-color: #fff; + border-radius: 50%; + transition: transform 0.2s ease; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4); +} + +.toggle-switch.on::after { + transform: translateX(20px); +} + #optionsPanel { + display: flex; + flex-direction: column; z-index: 1; background-color: var(--background-chat); - overflow-y: scroll; position: absolute; - top: 4rem; - left: 1rem; - bottom: 1rem; - right: 1rem; + /* to prevent fraction gap between chat controls and this panel */ + top: -1px; + bottom: 0; + left: 0; + right: 0; + padding-left: var(--chat-px); + padding-right: var(--chat-px); + padding-bottom: var(--chat-py); + padding-top: 1rem; transition: opacity 200ms; opacity: 0; } -#optionsList div { +#optionsList { + overflow-y: auto; +} + +.options-category { display: flex; flex-direction: column; - margin-bottom: .5rem; + margin-bottom: 0.5rem; } -#optionsList div:not(:first-child) { +.options-category:not(:first-child) { border-top: .063rem solid; border-color: var(--border); - padding-top: 1rem; + padding-top: 1.25rem; +} + +#optionsList h4 { + padding: 0 1.25rem 0.75rem 0; + font-size: 1.15rem; + font-weight: 600; + color: #fff; } #optionsList li button { - padding: 1rem 0; + padding: 0.8rem 0.8rem 0.8rem 0; display: flex; - align-items: stretch; + align-items: center; + justify-content: space-between; width: 100%; border-radius: 0; text-align: left; + font-size: 1rem; } #optionsList li button:hover { @@ -915,7 +1157,7 @@ footer#footer { } #chatbox { - padding-top: 1rem; + padding-top: clamp(0.25rem, 1.5vh, 1rem); border-top: .063rem solid; border-color: var(--border); display: flex; @@ -931,6 +1173,66 @@ footer#footer { width: 2rem; } +#chat-commands-wrap { + display: flex; + width: 100%; + background: var(--cl-gray-2); + border-radius: 0; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; + overflow: hidden; + flex-direction: column; + position: absolute; + bottom: 100%; + z-index: 1; +} + +#chat-commands-list { + display: flex; + max-height: 50vh; + overflow-y: auto; + flex-direction: column; + width: 100%; + padding: 0.5rem; +} + +.chat-command-item { + display: flex; + flex-direction: column; + align-items: flex-start; + gap: 0.25rem; + padding: 0.5rem 1rem; + cursor: pointer; + border-radius: 0; +} + +.chat-command-item.active { + background: var(--cl-gray-3); +} + +.chat-command-item-name { + font-weight: bold; +} + +.chat-command-item-desc { + font-size: 0.8rem; + opacity: 0.8; +} + +.chat-command-arg-active { + color: var(--accent); + font-weight: bold; + opacity: 1; +} + +.chat-command-code { + font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; + background-color: var(--cl-gray-1); + color: var(--foreground); + padding: 0.1rem 0.3rem; + border-radius: 0; +} + /* Emotes */ #smiles-wrap { @@ -1006,10 +1308,6 @@ footer#footer { } /* - * End chat - */ - -/* * Scrollbar */ @@ -1028,28 +1326,9 @@ html { ::-webkit-scrollbar-thumb { background: rgba(255, 255, 255, 0.1); + border-radius: .5rem; } ::-webkit-scrollbar-thumb:hover { background: rgba(255, 255, 255, 0.2); } - -/* Mobile page fullscreen */ - -.mobile-view #chatbox { - padding-top: 0; - border-top: 0; -} - -.mobile-view #chat { - padding: 0 1rem; -} - -.mobile-view #chat .controls { - padding-bottom: 0; -} - -.mobile-view #optionsPanel { - top: 2.2rem; - bottom: 0; -} |
