From f4f3a16bca576c202887799066bd896863612e2b Mon Sep 17 00:00:00 2001 From: metamuffin Date: Tue, 24 Oct 2023 15:08:15 +0200 Subject: partial theme implementation --- web/forms.css | 75 ---------------------- web/js-player.css | 126 ------------------------------------- web/js-transition.css | 46 -------------- web/layout.css | 148 -------------------------------------------- web/nodecard.css | 148 -------------------------------------------- web/nodepage.css | 65 ------------------- web/player.css | 102 ------------------------------ web/style/forms.css | 75 ++++++++++++++++++++++ web/style/js-player.css | 126 +++++++++++++++++++++++++++++++++++++ web/style/js-transition.css | 46 ++++++++++++++ web/style/layout.css | 140 +++++++++++++++++++++++++++++++++++++++++ web/style/nodecard.css | 148 ++++++++++++++++++++++++++++++++++++++++++++ web/style/nodepage.css | 65 +++++++++++++++++++ web/style/player.css | 102 ++++++++++++++++++++++++++++++ web/style/themes.css | 20 ++++++ 15 files changed, 722 insertions(+), 710 deletions(-) delete mode 100644 web/forms.css delete mode 100644 web/js-player.css delete mode 100644 web/js-transition.css delete mode 100644 web/layout.css delete mode 100644 web/nodecard.css delete mode 100644 web/nodepage.css delete mode 100644 web/player.css create mode 100644 web/style/forms.css create mode 100644 web/style/js-player.css create mode 100644 web/style/js-transition.css create mode 100644 web/style/layout.css create mode 100644 web/style/nodecard.css create mode 100644 web/style/nodepage.css create mode 100644 web/style/player.css create mode 100644 web/style/themes.css (limited to 'web') diff --git a/web/forms.css b/web/forms.css deleted file mode 100644 index 259d7ef..0000000 --- a/web/forms.css +++ /dev/null @@ -1,75 +0,0 @@ -/* - This file is part of jellything (https://codeberg.org/metamuffin/jellything) - which is licensed under the GNU Affero General Public License (version 3); see /COPYING. - Copyright (C) 2023 metamuffin - Copyright (C) 2023 tpart -*/ -input { - outline: none; - box-sizing: border-box; - height: 2.5em; -} -input[type="text"], -input[type="password"] { - border-radius: 7px; - padding: 0.3em; - margin-top: 0.3em; - border: 2px solid var(--accent-light); -} -input[type="text"]:focus, -input[type="password"]:focus { - background-color: var(--background-light); -} -input[type="text"]:disabled, -input[type="password"]:disabled { - border: 2px solid grey; -} - -input[type="submit"], -form button { - padding: 0.5em; - margin: 0.5em; - justify-self: center; - border: 0px solid transparent; - background-color: var(--accent-dark); - border-radius: 8px; - cursor: pointer; -} -input[type="submit"]:disabled { - background-color: grey; -} -input[type="submit"]:hover { - filter: brightness(150%); -} - -form.account { - padding: 3em; - border-radius: 1em; - background-color: var(--background-light); - - min-width: 25em; - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); -} -form.account input { - width: 100%; - font-size: large; -} -form.account input, -form.account label { - display: block; -} -form.account input[type="submit"] { - margin: 0; - margin-top: 1em; - margin-bottom: 1.5em; - font-weight: bold; -} -form.account h1 { - margin-top: 0px; -} -form.account p { - color: var(--font-dark); -} diff --git a/web/js-player.css b/web/js-player.css deleted file mode 100644 index 6d1bd71..0000000 --- a/web/js-player.css +++ /dev/null @@ -1,126 +0,0 @@ -/* - This file is part of jellything (https://codeberg.org/metamuffin/jellything) - which is licensed under the GNU Affero General Public License (version 3); see /COPYING. - Copyright (C) 2023 metamuffin -*/ - -.jsp { - --csize: 50px; -} - -.jsp .jsp-controls { - position: absolute; - bottom: 0px; - left: 0px; - width: 100%; - height: var(--csize); - background-color: #1d1d1d99; - transition: opacity 0.2s; - - display: flex; - flex-direction: row; -} - -.jsp .jsp-controls button { - padding: 0px; - width: var(--csize); - height: 100%; - border: none; - background-color: #ffffff10; -} - -.jsp-controls p.jsp-status { - display: inline-block; - width: 6em; - text-align: right; - margin: 0px; - font-family: monospace; - margin: 0.4em; -} - -.jsp-pri { - position: relative; - flex-grow: 1; - padding: 0px; - display: inline-block; - margin: 0px; - width: calc(100% - var(--csize) * 2 - 2px); - height: var(--csize); - --pribufsize: calc(var(--csize) * 0.5); -} -.jsp-pri-current { - z-index: 101; - position: absolute; - height: var(--csize); - background-color: #ffffff20; -} -.jsp-pri-buffer { - z-index: 100; - position: absolute; - height: var(--pribufsize); -} -.jsp-pri-buffer-buffered { - background-color: #08fa0018; -} -.jsp-pri-buffer-loading { - background-color: #ffd00018; -} - -.jsp-overlay { - position: absolute; - bottom: var(--csize); - left: 0px; -} -.jsp-overlay .jsp-buffering { - margin: 0.2em; - font-size: larger; - color: grey; -} -.jsp-stats { - position: absolute; - background-color: rgba(0, 0, 0, 0.404); - bottom: var(--csize); - right: 0px; - padding: 1em; -} -.jsp-stats pre { - margin: 0.1em; -} - -.jsp .jsh-log { - position: absolute; - bottom: var(--csize); - left: 0px; -} -.jsp .jsh-log-line { - padding: 0.15em; - margin: 0px; - font-size: large; - animation-name: appear; - animation-timing-function: linear; - animation-duration: 0.5s; - animation-fill-mode: forwards; -} -.jsp .jsh-log-line-disappear { - animation-name: disappear; - animation-timing-function: linear; - animation-duration: 0.2s; - animation-fill-mode: forwards; -} - -@keyframes appear { - from { - opacity: 0; - } - to { - opacity: 1; - } -} -@keyframes disappear { - from { - opacity: 1; - } - to { - opacity: 0; - } -} diff --git a/web/js-transition.css b/web/js-transition.css deleted file mode 100644 index dbb80f0..0000000 --- a/web/js-transition.css +++ /dev/null @@ -1,46 +0,0 @@ -@keyframes jst-fadein { - from { - background-color: transparent; - } - to { - background-color: black; - } -} -@keyframes jst-fadeout { - from { - background-color: black; - } - to { - background-color: transparent; - } -} - -.jst-fade { - position: fixed; - left: 0px; - top: 0px; - width: 100vw; - height: 100vh; - z-index: 10; -} -.jst-error { - position: fixed; - top: 50vh; - left: 50vw; - transform: translate(-50%, -50%); - color: rgb(247, 69, 69); - font-size: large; - z-index: 11; -} -.jst-spinner { - position: fixed; - top: 50vh; - left: 50vw; - transform: translate(-50%, -50%); - color: rgb(252, 255, 78); - font-size: large; - z-index: 11; -} -nav { - z-index: 11; -} diff --git a/web/layout.css b/web/layout.css deleted file mode 100644 index 92a8929..0000000 --- a/web/layout.css +++ /dev/null @@ -1,148 +0,0 @@ -/* - This file is part of jellything (https://codeberg.org/metamuffin/jellything) - which is licensed under the GNU Affero General Public License (version 3); see /COPYING. - Copyright (C) 2023 metamuffin - Copyright (C) 2023 tpart -*/ -@font-face { - font-family: "Cantarell"; - src: url(/assets/cantarell.woff2) format("woff2"); -} - -:root { - --card-size: 17em; - --bar-height: 5em; - --port-poster-aspect: 1.41; - --land-poster-aspect: (1.41 / 2); - --land-thumb-aspect: (9 / 16); - --accent-light: rgb(255, 163, 87); - --accent-dark: rgb(199, 90, 0); - --backdrop-height: 24em; - --background-dark: #070707; - --background-light: #1c1c1c; - --background-very-light: #323232; - --main-side-margin: 2em; - --font: rgb(218, 218, 218); - --font-dark: rgb(148, 148, 148); - --font-highlight: white; -} - -::selection { - background-color: var(--accent-dark); -} - -* { - color: var(--font); - scrollbar-width: thin; - scrollbar-color: var(--background-light) #0000; -} -:root { - font-family: "Cantarell", sans-serif; - font-weight: 500; -} - -body { - background-color: var(--background-dark); - width: 100vw; - margin: 0px; - padding: 0px; -} - -h1 { - font-weight: bold; - color: var(--font-highlight); -} - -nav { - user-select: none; - z-index: 90; - position: fixed; - top: 0px; - left: 0px; - padding: 1em; - width: calc(100vw - 2em); - height: 2em; - backdrop-filter: blur(6px); - background-color: #1c1c1c9a; - - display: flex; - align-items: center; -} - -code { - font-family: monospace !important; -} -.log .time, -.log .module { - color: grey; -} - -nav a { - border: 0px solid transparent; - border-radius: 5px; - padding: 0.5em; - text-decoration: none; -} -nav a:hover { - background-color: #ffffff10; -} -nav a { - color: #dfe5f3; - text-decoration: none; - background-image: linear-gradient(transparent, transparent), - linear-gradient(var(--accent-light), var(--accent-light)); - background-size: 100% 2px, 0 2px; - background-position: 100% 100%, 0 100%; - background-repeat: no-repeat; - transition: background-size 0.15s linear; -} -nav a:hover { - background-size: 0 2px, 100% 2px; -} - -nav h1 { - margin: 0px; - margin-left: 0.5em; - margin-right: 0.5em; - font-size: 1.5em; - display: inline; -} -nav .account { - margin-left: auto; -} -nav .account .username { - color: var(--accent-light); - font-weight: bold; - margin-right: 1em; -} - -#main { - display: block; - margin-top: var(--bar-height); - margin-left: var(--main-side-margin); - margin-right: var(--main-side-margin); - margin-bottom: 1em; -} - -section.message { - background-color: var(--background-light); - border-radius: 8px; -} -.error { - padding: 1em; - color: rgb(255, 117, 117); - font-family: monospace; -} -.success { - padding: 1em; - color: rgb(117, 255, 117); -} - -footer { - padding: 0.1em; - text-align: center; -} -footer p { - color: #828282; - font-size: 0.8em; -} diff --git a/web/nodecard.css b/web/nodecard.css deleted file mode 100644 index d32d5f4..0000000 --- a/web/nodecard.css +++ /dev/null @@ -1,148 +0,0 @@ -/* - This file is part of jellything (https://codeberg.org/metamuffin/jellything) - which is licensed under the GNU Affero General Public License (version 3); see /COPYING. - Copyright (C) 2023 metamuffin - Copyright (C) 2023 tpart -*/ -.children { - padding: 1em; - padding-left: 3em; - padding-right: 3em; - list-style: none; - display: flex; - flex-wrap: wrap; - width: 100%; - box-sizing: border-box; -} -.children li { - display: block; -} - -.dirup { - width: 100%; - font-size: large; - display: block; - text-align: center; - background-color: var(--background-light); - border-radius: 0.2em; - padding: 0.6em; - margin: 0.2em; - transition: filter 0.22s; -} -.dirup:hover { - filter: brightness(120%); -} - -.node.card { - padding: 1em; -} - -.node.card .poster, -.node.card .poster img { - height: var(--card-size); -} -.node.card.aspect-port { - width: calc(var(--card-size) / var(--port-poster-aspect)); -} -.node.card.aspect-land { - width: calc(var(--card-size) / var(--land-poster-aspect)); -} -.node.card.aspect-thumb { - width: calc(var(--card-size) / var(--land-thumb-aspect)); -} -.node.card.aspect-square { - width: calc(var(--card-size)); -} - -.node.card .poster a img { - object-fit: cover; - object-position: center; - width: 100%; -} - -.node.card .title { - text-align: center; -} - -.node.card .title { - margin-top: 0.1em; - text-align: center; - text-overflow: ellipsis; -} -.node.card .poster { - display: grid; -} -.node.card .poster a { - grid-area: 1 / 1; -} - -.node.card.poster .poster .cardhover.open { - transition: opacity 0.3s, backdrop-filter 0.3s; - opacity: 0; - display: flex; - position: relative; - bottom: 0px; - height: 5em; - margin-top: -5em; -} -.node.card.poster .poster:hover .cardhover.open { - opacity: 1; - background-color: #0004; - backdrop-filter: blur(3px); -} -.node.card.poster .poster .cardhover.open a { - text-decoration: none; - width: 100%; - height: 1.7em; - font-size: large; - display: block; - text-align: center; - background-color: #0004; - border-radius: 0.2em; - padding: 0.6em; - margin: 0.6em; - transition: background-color 0.2s; -} -.node.card.poster .poster .cardhover.open a:hover { - background-color: #0008; -} - -.node.card.poster .poster .cardhover.item { - position: relative; - pointer-events: none; - grid-area: 1 / 1; - transition: opacity 0.3s, backdrop-filter 0.3s; - opacity: 0; - display: flex; - justify-content: center; - align-items: center; -} -.node.card.poster .poster:hover .cardhover.item { - opacity: 1; - background-color: #0004; - backdrop-filter: blur(3px); -} - -.node.card.poster .poster .cardhover.item a.play { - text-decoration: none; - font-stretch: 200%; - width: 1em; - height: 1em; - line-height: 1; - margin: auto; - padding: 0.4em 0.3em 0.4em 0.5em; - border-radius: 50%; - font-size: 1.8em; - pointer-events: all; - background-color: #0005; - transition: background-color 0.2s, font-size 0.2s; -} -.node.card.poster .poster .cardhover.item a.play:hover { - background-color: #0008; - font-size: 2.4em; -} -.node.card.poster .poster .cardhover.item .props { - position: absolute; - bottom: 0px; - left: 0px; -} diff --git a/web/nodepage.css b/web/nodepage.css deleted file mode 100644 index e40706e..0000000 --- a/web/nodepage.css +++ /dev/null @@ -1,65 +0,0 @@ -/* - This file is part of jellything (https://codeberg.org/metamuffin/jellything) - which is licensed under the GNU Affero General Public License (version 3); see /COPYING. - Copyright (C) 2023 metamuffin - Copyright (C) 2023 tpart -*/ -.backdrop { - width: calc(100% + 2 * var(--main-side-margin)); - height: calc(var(--backdrop-height) + 5em); - margin-left: calc(-1 * var(--main-side-margin)); - margin-right: calc(-1 * var(--main-side-margin)); - margin-top: calc(-1 * var(--bar-height)); - margin-bottom: -5em; - -webkit-mask-image: linear-gradient( - rgba(0, 0, 0, 1), - transparent calc(var(--backdrop-height) + 5em) - ); - mask-image: linear-gradient( - rgba(0, 0, 0, 1), - transparent calc(var(--backdrop-height) + 5em) - ); - -webkit-mask-mode: alpha; - mask-mode: alpha; - pointer-events: none; - object-fit: cover; - object-position: center; -} -.page.node { - position: relative; - width: 100%; -} -.page.node .bigposter { - width: max(8em, 25%); - float: left; - margin: 3em; - margin-top: -1em; -} -.page.node .bigposter img { - width: 100%; - height: 100%; - object-fit: cover; - object-position: center; -} - -.page.node .title h1 { - display: inline; - margin-right: 1em; -} -.page.node .title .play { - display: inline; - font-stretch: 200%; -} -.page.node .title .play::before { - content: "▶"; -} - -.props p { - margin: 0.4em; - font-size: small; - font-weight: bolder; - display: inline-block; - padding: 0.2em; - background: #5a5a5a85; - border-radius: 4px; -} diff --git a/web/player.css b/web/player.css deleted file mode 100644 index eb1a0a0..0000000 --- a/web/player.css +++ /dev/null @@ -1,102 +0,0 @@ -/* - This file is part of jellything (https://codeberg.org/metamuffin/jellything) - which is licensed under the GNU Affero General Public License (version 3); see /COPYING. - Copyright (C) 2023 metamuffin - Copyright (C) 2023 tpart -*/ - -input { - color: white; - background-color: black; -} -option { - font-family: "Cantarell", sans-serif; -} - -fieldset { - background-color: var(--background-light); - border-radius: 8px; -} - -form.playerconf { - display: grid; - grid-template-areas: - "h h h" - "v a s" - "b b b"; - gap: 1em; - grid-template-columns: auto auto auto; - grid-template-rows: 3em auto 5em; -} - -legend { - font-size: 1.5em; -} -input[type="radio"] { - appearance: none; - display: inline-block; - width: 1.2em; - height: 1.2em; - border-radius: 8px; - padding: 2px; - background-clip: content-box; - border: 2px solid var(--font); - background-color: transparent; - transition: background-color 0.3s; -} -input[type="radio"]:checked { - background-color: var(--accent-light); -} - -fieldset label { - transition: color 0.2s; -} -fieldset label:hover { - color: var(--accent-light); -} - -.playerconf { - margin: 2em; -} -.playerconf h2 { - grid-area: h; - text-align: center; -} -.playerconf h3 { - grid-area: h; - text-align: center; -} -.playerconf .video { - grid-area: v; -} -.playerconf .audio { - grid-area: a; -} -.playerconf .subtitles { - grid-area: s; -} -.playerconf input[type="submit"] { - grid-area: b; - width: 30%; - height: 3em; - font-size: 1.5em; -} - -.player nav { - opacity: 0; - transition: opacity 0.2s; -} -.player nav:hover { - opacity: 1; -} -.player #main { - margin-top: 0px; - margin-left: 0px; - margin-right: 0px; - margin-bottom: 0px; -} -.player video { - width: 100vw; - height: 100vh; - background-color: black; -} diff --git a/web/style/forms.css b/web/style/forms.css new file mode 100644 index 0000000..259d7ef --- /dev/null +++ b/web/style/forms.css @@ -0,0 +1,75 @@ +/* + This file is part of jellything (https://codeberg.org/metamuffin/jellything) + which is licensed under the GNU Affero General Public License (version 3); see /COPYING. + Copyright (C) 2023 metamuffin + Copyright (C) 2023 tpart +*/ +input { + outline: none; + box-sizing: border-box; + height: 2.5em; +} +input[type="text"], +input[type="password"] { + border-radius: 7px; + padding: 0.3em; + margin-top: 0.3em; + border: 2px solid var(--accent-light); +} +input[type="text"]:focus, +input[type="password"]:focus { + background-color: var(--background-light); +} +input[type="text"]:disabled, +input[type="password"]:disabled { + border: 2px solid grey; +} + +input[type="submit"], +form button { + padding: 0.5em; + margin: 0.5em; + justify-self: center; + border: 0px solid transparent; + background-color: var(--accent-dark); + border-radius: 8px; + cursor: pointer; +} +input[type="submit"]:disabled { + background-color: grey; +} +input[type="submit"]:hover { + filter: brightness(150%); +} + +form.account { + padding: 3em; + border-radius: 1em; + background-color: var(--background-light); + + min-width: 25em; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} +form.account input { + width: 100%; + font-size: large; +} +form.account input, +form.account label { + display: block; +} +form.account input[type="submit"] { + margin: 0; + margin-top: 1em; + margin-bottom: 1.5em; + font-weight: bold; +} +form.account h1 { + margin-top: 0px; +} +form.account p { + color: var(--font-dark); +} diff --git a/web/style/js-player.css b/web/style/js-player.css new file mode 100644 index 0000000..6d1bd71 --- /dev/null +++ b/web/style/js-player.css @@ -0,0 +1,126 @@ +/* + This file is part of jellything (https://codeberg.org/metamuffin/jellything) + which is licensed under the GNU Affero General Public License (version 3); see /COPYING. + Copyright (C) 2023 metamuffin +*/ + +.jsp { + --csize: 50px; +} + +.jsp .jsp-controls { + position: absolute; + bottom: 0px; + left: 0px; + width: 100%; + height: var(--csize); + background-color: #1d1d1d99; + transition: opacity 0.2s; + + display: flex; + flex-direction: row; +} + +.jsp .jsp-controls button { + padding: 0px; + width: var(--csize); + height: 100%; + border: none; + background-color: #ffffff10; +} + +.jsp-controls p.jsp-status { + display: inline-block; + width: 6em; + text-align: right; + margin: 0px; + font-family: monospace; + margin: 0.4em; +} + +.jsp-pri { + position: relative; + flex-grow: 1; + padding: 0px; + display: inline-block; + margin: 0px; + width: calc(100% - var(--csize) * 2 - 2px); + height: var(--csize); + --pribufsize: calc(var(--csize) * 0.5); +} +.jsp-pri-current { + z-index: 101; + position: absolute; + height: var(--csize); + background-color: #ffffff20; +} +.jsp-pri-buffer { + z-index: 100; + position: absolute; + height: var(--pribufsize); +} +.jsp-pri-buffer-buffered { + background-color: #08fa0018; +} +.jsp-pri-buffer-loading { + background-color: #ffd00018; +} + +.jsp-overlay { + position: absolute; + bottom: var(--csize); + left: 0px; +} +.jsp-overlay .jsp-buffering { + margin: 0.2em; + font-size: larger; + color: grey; +} +.jsp-stats { + position: absolute; + background-color: rgba(0, 0, 0, 0.404); + bottom: var(--csize); + right: 0px; + padding: 1em; +} +.jsp-stats pre { + margin: 0.1em; +} + +.jsp .jsh-log { + position: absolute; + bottom: var(--csize); + left: 0px; +} +.jsp .jsh-log-line { + padding: 0.15em; + margin: 0px; + font-size: large; + animation-name: appear; + animation-timing-function: linear; + animation-duration: 0.5s; + animation-fill-mode: forwards; +} +.jsp .jsh-log-line-disappear { + animation-name: disappear; + animation-timing-function: linear; + animation-duration: 0.2s; + animation-fill-mode: forwards; +} + +@keyframes appear { + from { + opacity: 0; + } + to { + opacity: 1; + } +} +@keyframes disappear { + from { + opacity: 1; + } + to { + opacity: 0; + } +} diff --git a/web/style/js-transition.css b/web/style/js-transition.css new file mode 100644 index 0000000..dbb80f0 --- /dev/null +++ b/web/style/js-transition.css @@ -0,0 +1,46 @@ +@keyframes jst-fadein { + from { + background-color: transparent; + } + to { + background-color: black; + } +} +@keyframes jst-fadeout { + from { + background-color: black; + } + to { + background-color: transparent; + } +} + +.jst-fade { + position: fixed; + left: 0px; + top: 0px; + width: 100vw; + height: 100vh; + z-index: 10; +} +.jst-error { + position: fixed; + top: 50vh; + left: 50vw; + transform: translate(-50%, -50%); + color: rgb(247, 69, 69); + font-size: large; + z-index: 11; +} +.jst-spinner { + position: fixed; + top: 50vh; + left: 50vw; + transform: translate(-50%, -50%); + color: rgb(252, 255, 78); + font-size: large; + z-index: 11; +} +nav { + z-index: 11; +} diff --git a/web/style/layout.css b/web/style/layout.css new file mode 100644 index 0000000..ea7d3e6 --- /dev/null +++ b/web/style/layout.css @@ -0,0 +1,140 @@ +/* + This file is part of jellything (https://codeberg.org/metamuffin/jellything) + which is licensed under the GNU Affero General Public License (version 3); see /COPYING. + Copyright (C) 2023 metamuffin + Copyright (C) 2023 tpart +*/ +@font-face { + font-family: "Cantarell"; + src: url(/assets/cantarell.woff2) format("woff2"); +} + +:root { + --card-size: 17em; + --bar-height: 5em; + --port-poster-aspect: 1.41; + --land-poster-aspect: (1.41 / 2); + --land-thumb-aspect: (9 / 16); + --backdrop-height: 24em; + --main-side-margin: 2em; +} + +::selection { + background-color: var(--accent-dark); +} + +* { + color: var(--font); + scrollbar-width: thin; + scrollbar-color: var(--background-light) #0000; +} +:root { + font-family: "Cantarell", sans-serif; + font-weight: 500; +} + +body { + background-color: var(--background-dark); + width: 100vw; + margin: 0px; + padding: 0px; +} + +h1 { + font-weight: bold; + color: var(--font-highlight); +} + +nav { + user-select: none; + z-index: 90; + position: fixed; + top: 0px; + left: 0px; + padding: 1em; + width: calc(100vw - 2em); + height: 2em; + backdrop-filter: blur(6px); + background-color: #1c1c1c9a; + + display: flex; + align-items: center; +} + +code { + font-family: monospace !important; +} +.log .time, +.log .module { + color: grey; +} + +nav a { + border: 0px solid transparent; + border-radius: 5px; + padding: 0.5em; + text-decoration: none; +} +nav a:hover { + background-color: #ffffff10; +} +nav a { + color: #dfe5f3; + text-decoration: none; + background-image: linear-gradient(transparent, transparent), + linear-gradient(var(--accent-light), var(--accent-light)); + background-size: 100% 2px, 0 2px; + background-position: 100% 100%, 0 100%; + background-repeat: no-repeat; + transition: background-size 0.15s linear; +} +nav a:hover { + background-size: 0 2px, 100% 2px; +} + +nav h1 { + margin: 0px; + margin-left: 0.5em; + margin-right: 0.5em; + font-size: 1.5em; + display: inline; +} +nav .account { + margin-left: auto; +} +nav .account .username { + color: var(--accent-light); + font-weight: bold; + margin-right: 1em; +} + +#main { + display: block; + margin-top: var(--bar-height); + margin-left: var(--main-side-margin); + margin-right: var(--main-side-margin); + margin-bottom: 1em; +} + +section.message { + background-color: var(--background-light); + border-radius: 8px; +} +.error { + padding: 1em; + color: rgb(255, 117, 117); + font-family: monospace; +} +.success { + padding: 1em; + color: rgb(117, 255, 117); +} + +footer { + padding: 0.1em; + text-align: center; +} +footer p { + color: #828282; + font-size: 0.8em; +} diff --git a/web/style/nodecard.css b/web/style/nodecard.css new file mode 100644 index 0000000..d32d5f4 --- /dev/null +++ b/web/style/nodecard.css @@ -0,0 +1,148 @@ +/* + This file is part of jellything (https://codeberg.org/metamuffin/jellything) + which is licensed under the GNU Affero General Public License (version 3); see /COPYING. + Copyright (C) 2023 metamuffin + Copyright (C) 2023 tpart +*/ +.children { + padding: 1em; + padding-left: 3em; + padding-right: 3em; + list-style: none; + display: flex; + flex-wrap: wrap; + width: 100%; + box-sizing: border-box; +} +.children li { + display: block; +} + +.dirup { + width: 100%; + font-size: large; + display: block; + text-align: center; + background-color: var(--background-light); + border-radius: 0.2em; + padding: 0.6em; + margin: 0.2em; + transition: filter 0.22s; +} +.dirup:hover { + filter: brightness(120%); +} + +.node.card { + padding: 1em; +} + +.node.card .poster, +.node.card .poster img { + height: var(--card-size); +} +.node.card.aspect-port { + width: calc(var(--card-size) / var(--port-poster-aspect)); +} +.node.card.aspect-land { + width: calc(var(--card-size) / var(--land-poster-aspect)); +} +.node.card.aspect-thumb { + width: calc(var(--card-size) / var(--land-thumb-aspect)); +} +.node.card.aspect-square { + width: calc(var(--card-size)); +} + +.node.card .poster a img { + object-fit: cover; + object-position: center; + width: 100%; +} + +.node.card .title { + text-align: center; +} + +.node.card .title { + margin-top: 0.1em; + text-align: center; + text-overflow: ellipsis; +} +.node.card .poster { + display: grid; +} +.node.card .poster a { + grid-area: 1 / 1; +} + +.node.card.poster .poster .cardhover.open { + transition: opacity 0.3s, backdrop-filter 0.3s; + opacity: 0; + display: flex; + position: relative; + bottom: 0px; + height: 5em; + margin-top: -5em; +} +.node.card.poster .poster:hover .cardhover.open { + opacity: 1; + background-color: #0004; + backdrop-filter: blur(3px); +} +.node.card.poster .poster .cardhover.open a { + text-decoration: none; + width: 100%; + height: 1.7em; + font-size: large; + display: block; + text-align: center; + background-color: #0004; + border-radius: 0.2em; + padding: 0.6em; + margin: 0.6em; + transition: background-color 0.2s; +} +.node.card.poster .poster .cardhover.open a:hover { + background-color: #0008; +} + +.node.card.poster .poster .cardhover.item { + position: relative; + pointer-events: none; + grid-area: 1 / 1; + transition: opacity 0.3s, backdrop-filter 0.3s; + opacity: 0; + display: flex; + justify-content: center; + align-items: center; +} +.node.card.poster .poster:hover .cardhover.item { + opacity: 1; + background-color: #0004; + backdrop-filter: blur(3px); +} + +.node.card.poster .poster .cardhover.item a.play { + text-decoration: none; + font-stretch: 200%; + width: 1em; + height: 1em; + line-height: 1; + margin: auto; + padding: 0.4em 0.3em 0.4em 0.5em; + border-radius: 50%; + font-size: 1.8em; + pointer-events: all; + background-color: #0005; + transition: background-color 0.2s, font-size 0.2s; +} +.node.card.poster .poster .cardhover.item a.play:hover { + background-color: #0008; + font-size: 2.4em; +} +.node.card.poster .poster .cardhover.item .props { + position: absolute; + bottom: 0px; + left: 0px; +} diff --git a/web/style/nodepage.css b/web/style/nodepage.css new file mode 100644 index 0000000..e40706e --- /dev/null +++ b/web/style/nodepage.css @@ -0,0 +1,65 @@ +/* + This file is part of jellything (https://codeberg.org/metamuffin/jellything) + which is licensed under the GNU Affero General Public License (version 3); see /COPYING. + Copyright (C) 2023 metamuffin + Copyright (C) 2023 tpart +*/ +.backdrop { + width: calc(100% + 2 * var(--main-side-margin)); + height: calc(var(--backdrop-height) + 5em); + margin-left: calc(-1 * var(--main-side-margin)); + margin-right: calc(-1 * var(--main-side-margin)); + margin-top: calc(-1 * var(--bar-height)); + margin-bottom: -5em; + -webkit-mask-image: linear-gradient( + rgba(0, 0, 0, 1), + transparent calc(var(--backdrop-height) + 5em) + ); + mask-image: linear-gradient( + rgba(0, 0, 0, 1), + transparent calc(var(--backdrop-height) + 5em) + ); + -webkit-mask-mode: alpha; + mask-mode: alpha; + pointer-events: none; + object-fit: cover; + object-position: center; +} +.page.node { + position: relative; + width: 100%; +} +.page.node .bigposter { + width: max(8em, 25%); + float: left; + margin: 3em; + margin-top: -1em; +} +.page.node .bigposter img { + width: 100%; + height: 100%; + object-fit: cover; + object-position: center; +} + +.page.node .title h1 { + display: inline; + margin-right: 1em; +} +.page.node .title .play { + display: inline; + font-stretch: 200%; +} +.page.node .title .play::before { + content: "▶"; +} + +.props p { + margin: 0.4em; + font-size: small; + font-weight: bolder; + display: inline-block; + padding: 0.2em; + background: #5a5a5a85; + border-radius: 4px; +} diff --git a/web/style/player.css b/web/style/player.css new file mode 100644 index 0000000..eb1a0a0 --- /dev/null +++ b/web/style/player.css @@ -0,0 +1,102 @@ +/* + This file is part of jellything (https://codeberg.org/metamuffin/jellything) + which is licensed under the GNU Affero General Public License (version 3); see /COPYING. + Copyright (C) 2023 metamuffin + Copyright (C) 2023 tpart +*/ + +input { + color: white; + background-color: black; +} +option { + font-family: "Cantarell", sans-serif; +} + +fieldset { + background-color: var(--background-light); + border-radius: 8px; +} + +form.playerconf { + display: grid; + grid-template-areas: + "h h h" + "v a s" + "b b b"; + gap: 1em; + grid-template-columns: auto auto auto; + grid-template-rows: 3em auto 5em; +} + +legend { + font-size: 1.5em; +} +input[type="radio"] { + appearance: none; + display: inline-block; + width: 1.2em; + height: 1.2em; + border-radius: 8px; + padding: 2px; + background-clip: content-box; + border: 2px solid var(--font); + background-color: transparent; + transition: background-color 0.3s; +} +input[type="radio"]:checked { + background-color: var(--accent-light); +} + +fieldset label { + transition: color 0.2s; +} +fieldset label:hover { + color: var(--accent-light); +} + +.playerconf { + margin: 2em; +} +.playerconf h2 { + grid-area: h; + text-align: center; +} +.playerconf h3 { + grid-area: h; + text-align: center; +} +.playerconf .video { + grid-area: v; +} +.playerconf .audio { + grid-area: a; +} +.playerconf .subtitles { + grid-area: s; +} +.playerconf input[type="submit"] { + grid-area: b; + width: 30%; + height: 3em; + font-size: 1.5em; +} + +.player nav { + opacity: 0; + transition: opacity 0.2s; +} +.player nav:hover { + opacity: 1; +} +.player #main { + margin-top: 0px; + margin-left: 0px; + margin-right: 0px; + margin-bottom: 0px; +} +.player video { + width: 100vw; + height: 100vh; + background-color: black; +} diff --git a/web/style/themes.css b/web/style/themes.css new file mode 100644 index 0000000..e006513 --- /dev/null +++ b/web/style/themes.css @@ -0,0 +1,20 @@ +body.theme-dark { + --accent-light: rgb(255, 163, 87); + --accent-dark: rgb(199, 90, 0); + --background-dark: #070707; + --background-light: #1c1c1c; + --background-very-light: #323232; + --font: rgb(218, 218, 218); + --font-dark: rgb(148, 148, 148); + --font-highlight: white; +} +body.theme-light { + --accent-light: rgb(255, 163, 87); + --accent-dark: rgb(199, 90, 0); + --background-dark: #ffffff; + --background-light: #e2e2e2; + --background-very-light: #b9b9b9; + --font: rgb(43, 43, 43); + --font-dark: rgb(0, 0, 0); + --font-highlight: rgb(0, 0, 0); +} -- cgit v1.2.3-70-g09d2