aboutsummaryrefslogtreecommitdiffstats
path: root/youtube/static
diff options
context:
space:
mode:
authorJesús <heckyel@hyperbola.info>2020-12-14 23:44:29 -0500
committerJesús <heckyel@hyperbola.info>2020-12-14 23:44:29 -0500
commit7a765dc664d20f966e4e52abac1f5372045e166c (patch)
tree641f4de8cc11fd9f3234558f957b7bb6b8faf45b /youtube/static
parent9d0be82e7425641a58a551fefce26385dee2f9d3 (diff)
downloadyt-local-7a765dc664d20f966e4e52abac1f5372045e166c.tar.lz
yt-local-7a765dc664d20f966e4e52abac1f5372045e166c.tar.xz
yt-local-7a765dc664d20f966e4e52abac1f5372045e166c.zip
Change general design theme
Diffstat (limited to 'youtube/static')
-rw-r--r--youtube/static/channel.css557
-rw-r--r--youtube/static/comments.css359
-rw-r--r--youtube/static/dark_theme.css54
-rw-r--r--youtube/static/gray_theme.css33
-rw-r--r--youtube/static/home.css197
-rw-r--r--youtube/static/light_theme.css34
-rw-r--r--youtube/static/local_playlist.css527
-rw-r--r--youtube/static/normalize.css349
-rw-r--r--youtube/static/playlist.css537
-rw-r--r--youtube/static/search.css495
-rw-r--r--youtube/static/settings.css241
-rw-r--r--youtube/static/subscription.css530
-rw-r--r--youtube/static/subscription_manager.css403
-rw-r--r--youtube/static/watch.css633
14 files changed, 4764 insertions, 185 deletions
diff --git a/youtube/static/channel.css b/youtube/static/channel.css
new file mode 100644
index 0000000..467bb0d
--- /dev/null
+++ b/youtube/static/channel.css
@@ -0,0 +1,557 @@
+html {
+ font-family: "liberation serif", "times new roman", calibri, carlito, serif;
+ background: var(--background);
+ color: var(--text);
+}
+
+body {
+ display: grid;
+ grid-gap: 20px;
+ grid-template-areas:
+ "header"
+ "main"
+ "footer";
+ /* Fix height */
+ height: 100vh;
+ grid-template-rows: auto 1fr auto;
+ /* fix top and bottom */
+ margin-left: 1rem;
+ margin-right: 1rem;
+}
+
+img {
+ width: 100%;
+ height: auto;
+}
+
+a:link {
+ color: var(--link);
+}
+
+a:visited {
+ color: var(--link-visited);
+}
+
+input[type="text"],
+input[type="search"] {
+ background: var(--background);
+ border: 1px solid var(--button-border);
+ padding: 0.4rem 0.4rem;
+ font-size: 15px;
+ color: var(--search-text);
+}
+
+input[type='search'] {
+ border-bottom: 1px solid var(--button-border);
+ border-top: 0px;
+ border-left: 0px;
+ border-right: 0px;
+ border-radius: 0px;
+}
+
+header {
+ display: grid;
+ grid-gap: 1px;
+ grid-template-areas:
+ "home"
+ "form"
+ "playlist";
+ grid-area: header;
+}
+
+.home {
+ grid-area: home;
+ margin-left: auto;
+ margin-right: auto;
+ margin-bottom: 1rem;
+ margin-top: 1rem;
+}
+
+.form {
+ display: grid;
+ grid-gap: 4px;
+ grid-template-areas:
+ "search-box"
+ "search-button"
+ "dropdown";
+ grid-area: form;
+}
+
+.search-box {
+ grid-area: search-box;
+}
+.search-button {
+ grid-area: search-button;
+
+ cursor: pointer;
+ padding-bottom: 6px;
+ padding-left: .75em;
+ padding-right: .75em;
+ padding-top: 6px;
+ text-align: center;
+ white-space: nowrap;
+ background-color: var(--buttom);
+ border: 1px solid var(--button-border);
+ color: var(--buttom-text);
+ border-radius: 5px;
+}
+.search-button:hover {
+ background-color: var(--buttom-hover);
+}
+
+.dropdown {
+ display: grid;
+ grid-gap: 1px;
+ grid-template-areas:
+ "dropdown-label"
+ "dropdown-content";
+ grid-area: dropdown;
+ z-index: 1;
+}
+.dropdown-label {
+ grid-area: dropdown-label;
+
+ padding-bottom: 6px;
+ padding-left: .75em;
+ padding-right: .75em;
+ padding-top: 6px;
+ text-align: center;
+ white-space: nowrap;
+ background-color: var(--buttom);
+ border: 1px solid var(--button-border);
+ color: var(--buttom-text);
+ border-radius: 5px;
+}
+.dropdown-label:hover {
+ background-color: var(--buttom-hover);
+}
+
+/* playlist */
+.playlist {
+ display: grid;
+ grid-gap: 4px;
+ grid-template-areas:
+ "play-box"
+ "play-hidden"
+ "play-add"
+ "play-clean";
+ grid-area: playlist;
+}
+.play-box {
+ grid-area: play-box;
+}
+
+.play-hidden {
+ grid-area: play-hidden;
+}
+
+.play-add {
+ grid-area: play-add;
+ cursor: pointer;
+
+ padding-bottom: 6px;
+ padding-left: .75em;
+ padding-right: .75em;
+ padding-top: 6px;
+ text-align: center;
+ white-space: nowrap;
+ background-color: var(--buttom);
+ border: 1px solid var(--button-border);
+ color: var(--buttom-text);
+ border-radius: 5px;
+}
+.play-add:hover {
+ background-color: var(--buttom-hover);
+}
+
+.play-clean {
+ display: grid;
+ grid-area: play-clean;
+}
+
+.play-clean > button {
+ padding-bottom: 6px;
+ padding-left: .75em;
+ padding-right: .75em;
+ padding-top: 6px;
+ text-align: center;
+ white-space: nowrap;
+ background-color: var(--buttom);
+ border: 1px solid var(--button-border);
+ color: var(--buttom-text);
+ border-radius: 5px;
+}
+.play-clean > button:hover {
+ background-color: var(--buttom-hover);
+}
+/* /playlist */
+
+/* ------------- Menu Mobile sin JS ---------------- */
+/* input hidden */
+.opt-box {
+ display: none;
+}
+.dropdown-content {
+ display: none;
+ grid-area: dropdown-content;
+}
+label[for=options-toggle-cbox] {
+ cursor: pointer;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+#options-toggle-cbox:checked ~ .dropdown-content {
+ display: inline-grid;
+ white-space: nowrap;
+}
+/*- ----------- End Menu Mobile sin JS ------------- */
+
+.main {
+ grid-area: main;
+ display: grid;
+ grid-row-gap: 1rem;
+}
+
+/* fix hr when is children of grid */
+hr {
+ width: 100%;
+}
+
+.author-container {
+ display: grid;
+ grid-template-columns: 1fr;
+ margin: auto;
+ grid-template-areas:
+ "author"
+ "summary"
+ "subscribe";
+}
+.author {
+ grid-area: author;
+ display: grid;
+ grid-template-columns: 100px 1fr;
+ grid-column-gap: 1rem;
+ align-items: center;
+ justify-self: center;
+}
+.summary { grid-area: summary; }
+.summary p {
+ text-align: center;
+}
+.subscribe {
+ grid-area: subscribe;
+ justify-self: center;
+}
+.subscribe .btn-subscribe {
+ background-color: var(--buttom);
+ color: var(--buttom-text);
+ text-shadow: none;
+ cursor: pointer;
+ padding-bottom: 6px;
+ padding-left: .75em;
+ padding-right: .75em;
+ padding-top: 6px;
+ text-align: center;
+ white-space: nowrap;
+ border: none;
+ border-radius: 0.2rem;
+}
+
+/* Video list item */
+.video-container {
+ display: grid;
+ grid-row-gap: 0.5rem;
+}
+
+.item-box {
+ display: grid;
+ grid-template-columns: 1.9fr 0.1fr;
+ grid-template-rows: 1fr;
+ grid-gap: 1px;
+ grid-template-areas:
+ "item-video item-checkbox";
+}
+
+.item-video {
+ grid-area: item-video;
+
+ display: grid;
+ grid-template-columns: auto;
+ grid-template-rows: repeat(4, auto);
+ grid-row-gap: 0.4rem;
+ grid-template-areas:
+ "thumbnail-box"
+ "info-box";
+ align-items: center;
+
+ font-size: 0.7rem;
+}
+
+.item-video a {
+ text-decoration: none;
+ cursor: pointer;
+}
+
+.item-video.channel-item {
+ border-radius: 50%;
+ width: 150px;
+ height: 150px;
+}
+
+.thumbnail-box {
+ grid-area: thumbnail-box;
+ position: relative;
+}
+
+.thumbnail {
+ padding: 28.125%;
+ position: relative;
+ box-sizing: border-box;
+}
+
+.thumbnail-img {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ left: 0;
+ top: 0;
+ object-fit: cover;
+}
+
+.length {
+ z-index: 100;
+ position: absolute;
+ background-color: rgba(35, 35, 35, 0.75);
+ color: #fff;
+ border-radius: 2px;
+ padding: 2px;
+ font-size: 16px;
+ right: 0.25em;
+ bottom: -0.75em;
+}
+
+.playlist-item .thumbnail-info {
+ position: absolute;
+ right: 0px;
+ bottom: 0px;
+ height: 100%;
+ width: 50%;
+ text-align: center;
+ white-space: pre-line;
+ opacity: .8;
+ color: var(--text);
+ font-size: 0.8125rem;
+ background: var(--secondary-background);
+ padding: 0;
+}
+
+.playlist-item .thumbnail-info span {
+ position: absolute;
+ top: 50%;
+ transform: translate(-50%, -50%);
+ text-transform: none;
+}
+
+.thumbnail-img {
+ margin: auto;
+ display: block;
+ max-height: 100%;
+ max-width: 100%;
+}
+
+.info-box {
+ grid-area: info-box;
+ display: grid;
+ grid-template-columns: 1fr;
+ grid-template-rows: auto auto auto auto auto;
+ grid-gap: 1px;
+ grid-template-areas:
+ "."
+ "."
+ "."
+ "."
+ ".";
+}
+
+.title {
+ font-size: 0.8rem;
+ margin: 0px;
+ font-weight: normal;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+.info-box address {
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+.thumbnail-info {
+ background-color: var(--time-background);
+ color: #fff;
+ padding: 2px 5px;
+ text-transform: uppercase;
+ font-weight: 700;
+ font-size: 12px;
+ position: absolute;
+ right: 0;
+ bottom: .2rem;
+}
+
+.item-checkbox {
+ grid-area: item-checkbox;
+ justify-self: start;
+ align-self: center;
+ min-width: 30px;
+ margin: 0px;
+}
+
+.stats {
+ display: flex;
+ justify-content: space-between;
+}
+
+.horizontal-stats {
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+.horizontal-stats > li {
+ display: inline;
+}
+
+.horizontal-stats > li:first-child::after {
+ content: " | ";
+}
+
+/* pagination */
+.main .pagination-container {
+ display: grid;
+ justify-content: center;
+}
+
+.main .pagination-container .pagination-list {
+ display: grid;
+ grid-auto-flow: column;
+ grid-column-gap: 0.5rem;
+}
+
+.main .pagination-container .pagination-list .page-link {
+ border-style: none;
+ font-weight: bold;
+ text-align: center;
+ background: var(--secondary-focus);
+ text-decoration: none;
+ align-self: center;
+ padding: .5rem;
+ width: 1rem;
+}
+
+.main .pagination-container .pagination-list .page-link.is-current {
+ background: var(--secondary-background);
+}
+
+/* /video list item */
+
+.footer {
+ grid-area: footer;
+}
+
+.footer > p {
+ text-align: center;
+}
+
+@media (min-width: 480px) {
+ .item-video {
+ font-size: 0.85rem;
+ }
+ .info-box {
+ grid-gap: 2px;
+ }
+ .title {
+ font-size: 1rem;
+ }
+}
+
+@media (min-width: 600px) {
+ .video-container {
+ display: grid;
+ grid-row-gap: 0.5rem;
+ grid-template-columns: 1fr 1fr;
+ }
+}
+
+@media (min-width: 992px) {
+ body {
+ display: grid;
+ grid-template-columns: 0.3fr 2fr 1fr 0.3fr;
+ grid-template-rows: auto 1fr auto;
+ grid-template-areas:
+ "header header header header"
+ "main main main main"
+ "footer footer footer footer";
+ }
+ .form {
+ display: grid;
+ grid-gap: 1px;
+ grid-template-columns: 1fr 1.4fr 0.3fr 1.3fr;
+ grid-template-areas: ". search-box search-button dropdown";
+ grid-area: form;
+ position: relative;
+ }
+ .dropdown {
+ display: grid;
+ grid-gap: 1px;
+ grid-template-columns: minmax(50px, 100px);
+ grid-template-areas:
+ "dropdown-label"
+ "dropdown-content";
+ grid-area: dropdown;
+ background: var(--background);
+ padding-right: 4rem;
+ z-index: 1;
+ position: absolute;
+ }
+
+ .author-container {
+ max-width: 50vw;
+ }
+
+ /* playlist */
+ .playlist {
+ display: grid;
+ grid-gap: 1px;
+ grid-template-columns: 1fr 1.4fr 0.3fr 1.3fr;
+ grid-template-areas: ". play-box play-add play-clean";
+ grid-area: playlist;
+ }
+ .play-clean {
+ grid-template-columns: minmax(50px, 100px);
+ }
+ .play-clean > button {
+ padding-left: 0px;
+ padding-right: 0px;
+ padding-bottom: 6px;
+ padding-top: 6px;
+ text-align: center;
+ white-space: nowrap;
+ background-color: var(--buttom);
+ color: var(--buttom-text);
+ border-radius: 5px;
+ cursor: pointer;
+ }
+
+ .video-container {
+ display: grid;
+ grid-template-columns: repeat(4, 1fr);
+ grid-row-gap: 1rem;
+ grid-column-gap: 1rem;
+ }
+}
diff --git a/youtube/static/comments.css b/youtube/static/comments.css
index b177a4f..080810e 100644
--- a/youtube/static/comments.css
+++ b/youtube/static/comments.css
@@ -1,148 +1,283 @@
-.video-metadata{
- display: grid;
- grid-template-columns: auto 1fr;
- grid-template-rows: auto auto 1fr auto;
+html {
+ font-family: "liberation serif", "times new roman", calibri, carlito, serif;
+ background: var(--background);
+ color: var(--text);
}
- .video-metadata > .video-metadata-thumbnail-box{
- grid-row: 1 / span 3;
- }
- .video-metadata > .title{
- word-wrap:break-word;
- grid-row: 1;
- }
- .video-metadata > h2{
- grid-row: 2;
- font-size: 0.875rem;
- }
- .video-metadata > span{
- grid-row:3;
- }
- .video-metadata > hr{
- grid-row: 4;
- grid-column: 1 / span 2;
- width: 100%;
- }
-.comment-form{
+body {
display: grid;
- align-content: start;
- justify-items: start;
- align-items: start;
-}
- #comment-account-options{
- display:grid;
- grid-auto-flow: column;
- grid-column-gap: 10px;
- margin-top:10px;
- margin-bottom:10px;
- }
- #comment-account-options a{
- margin-left:10px;
- }
+ grid-gap: 20px;
+ grid-template-areas:
+ "header"
+ "main"
+ "footer";
+ /* Fix height */
+ height: 100vh;
+ grid-template-rows: auto 1fr auto;
+ /* fix top and bottom */
+ margin-left: 1rem;
+ margin-right: 1rem;
+}
-.comments-area{
- display:grid;
+h1, h2, h3, h4, h5, h6, div, button {
+ margin: 0;
+ padding: 0;
+}
+
+img {
+ width: 100%;
+ height: auto;
}
- .comments-area textarea{
- resize: vertical;
- justify-self:stretch;
- }
- .post-comment-button{
- margin-top:10px;
- justify-self:end;
- }
- .comment-links{
- display:grid;
- grid-auto-flow: column;
- grid-column-gap: 10px;
- justify-content:start;
- }
-.comments{
- margin-top:10px;
- grid-row-gap: 10px;
+a:link {
+ color: var(--link);
+}
+
+a:visited {
+ color: var(--link-visited);
+}
+
+input[type="text"],
+input[type="search"] {
+ background: var(--background);
+ border: 1px solid var(--button-border);
+ border-radius: 5px;
+ padding: 0.4rem 0.4rem;
+ font-size: 15px;
+ color: var(--search-text);
+}
+
+input[type='search'] {
+ border-bottom: 1px solid var(--button-border);
+ border-top: 0px;
+ border-left: 0px;
+ border-right: 0px;
+ border-radius: 0px;
+}
+
+header {
display: grid;
- align-content:start;
+ grid-gap: 1px;
+ grid-template-areas:
+ "home"
+ "form";
+ grid-area: header;
}
-.comment{
- display:grid;
- grid-template-columns: auto auto 100px 1fr;
- grid-template-rows: 0fr 0fr 0fr 0fr;
- background-color: var(--interface-color);
- justify-content: start;
+.home {
+ grid-area: home;
+ margin-left: auto;
+ margin-right: auto;
+ margin-bottom: 1rem;
+ margin-top: 1rem;
}
-.comment .author-avatar{
- grid-column: 1;
- grid-row: 1 / span 3;
- align-self: start;
- margin-right: 5px;
- height:32px;
- width:32px;
+.form {
+ display: grid;
+ grid-gap: 4px;
+ grid-template-areas:
+ "search-box"
+ "search-button"
+ "dropdown";
+ grid-area: form;
}
- .comment .author-avatar-img{
- max-height: 100%;
- }
-.comment address{
- grid-column: 2;
- grid-row: 1;
- margin-right:15px;
+.search-box {
+ grid-area: search-box;
+}
+.search-button {
+ grid-area: search-button;
+
+ cursor: pointer;
+ padding-bottom: 6px;
+ padding-left: .75em;
+ padding-right: .75em;
+ padding-top: 6px;
+ text-align: center;
white-space: nowrap;
- overflow:hidden;
+ background-color: var(--buttom);
+ border: 1px solid var(--button-border);
+ color: var(--buttom-text);
+ border-radius: 5px;
+}
+.search-button:hover {
+ background-color: var(--buttom-hover);
}
-.comment .text{
- grid-column: 2 / span 3;
- grid-row: 2;
- white-space: pre-wrap;
- min-width: 0;
- word-wrap: break-word;
+.dropdown {
+ display: grid;
+ grid-gap: 1px;
+ grid-template-areas:
+ "dropdown-label"
+ "dropdown-content";
+ grid-area: dropdown;
+ background: var(--background);
+ padding-right: 4rem;
+ z-index: 1;
}
+.dropdown-label {
+ grid-area: dropdown-label;
-.comment .permalink{
- grid-column: 3;
- grid-row: 1;
+ padding-bottom: 6px;
+ padding-left: .75em;
+ padding-right: .75em;
+ padding-top: 6px;
+ text-align: center;
white-space: nowrap;
+ background-color: var(--buttom);
+ border: 1px solid var(--button-border);
+ color: var(--buttom-text);
+ border-radius: 5px;
+}
+.dropdown-label:hover {
+ background-color: var(--buttom-hover);
}
+/* ------------- Menu Mobile sin JS ---------------- */
+/* input hidden */
+.opt-box {
+ display: none;
+}
+.dropdown-content {
+ display: none;
+ grid-area: dropdown-content;
+}
+label[for=options-toggle-cbox] {
+ cursor: pointer;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
-.comment .likes{
- grid-column:2;
- grid-row:3;
- font-weight:bold;
+#options-toggle-cbox:checked ~ .dropdown-content {
+ display: inline-grid;
white-space: nowrap;
}
+/*- ----------- End Menu Mobile sin JS ------------- */
+
+.main {
+ grid-area: main;
+ margin: 0 auto;
+ max-width: 80ch;
+}
+
+/* comments */
+.comments-area {
+ display: grid;
+ grid-row-gap: 0.5rem;
+}
+
+.comments-area textarea {
+ resize: vertical;
+}
-.comment .bottom-row{
- grid-column:2 / span 3;
- grid-row:4;
- justify-self:start;
+.video-metadata {
display: grid;
- grid-auto-flow: column;
- grid-column-gap: 10px;
+ grid-template-columns: auto 1fr;
+ grid-column-gap: 0.5rem;
+ grid-template-rows: auto auto 1fr auto;
+ grid-template-areas:
+ "video-metadata-thumbnail-box ."
+ "video-metadata-thumbnail-box ."
+ "video-metadata-thumbnail-box .";
+}
+
+.video-metadata > h2 {
+ font-size: 0.875rem;
}
-details.replies > summary{
- background-color: var(--interface-color);
- border-style: outset;
- border-width: 1px;
- font-weight: bold;
- padding-bottom: 0px;
+.video-metadata-thumbnail-box {
+ grid-area: video-metadata-thumbnail-box;
}
-.replies-open-new-tab{
- display: inline-block;
- margin-top: 5px;
+.comment-form {
+ display: grid;
+ grid-row-gap: 0.5rem;
}
-details.replies .comment{
- width: 600px;
+.post-comment-button {
+ justify-self: end;
}
-.more-comments{
- justify-self:center;
- margin-top:10px;
+.comments {
+ display: grid;
+ grid-row-gap: 0.5rem;
+}
+
+.comment {
+ display: grid;
+ grid-template-columns: repeat(3, auto) 3fr;
+ grid-template-rows: repeat(4, auto);
+ grid-column-gap: 0.4rem;
+ grid-template-areas:
+ "author-avatar author-name permalink permalink"
+ "author-avatar comment-text comment-text comment-text"
+ ". comment-likes comment-likes comment-likes"
+ ". button-row button-row button-row";
+ background: var(--secondary-background);
+}
+
+.author-avatar { grid-area: author-avatar; }
+.author-name { grid-area: author-name; }
+.permalink { grid-area: permalink; }
+.comment-text { grid-area: comment-text; }
+.comment-likes { grid-area: comment-likes; }
+.button-row { grid-area: button-row; }
+
+.more-comments {
+ justify-self: center;
+ margin-top: 10px;
margin-bottom: 10px;
+ background: var(--secondary-background);
+ padding: 5px;
+
+ /* disable text selection */
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.footer {
+ grid-area: footer;
+}
+
+.footer > p {
+ text-align: center;
+}
+
+@media (min-width: 780px) {
+ body {
+ display: grid;
+ grid-template-columns: 0.3fr 2fr 1fr 0.3fr;
+ grid-template-rows: auto 1fr auto;
+ grid-template-areas:
+ "header header header header"
+ "main main main main"
+ "footer footer footer footer";
+ }
+ .form {
+ display: grid;
+ grid-gap: 1px;
+ grid-template-columns: 1fr 1.4fr 0.3fr 1.3fr;
+ grid-template-areas: ". search-box search-button dropdown";
+ grid-area: form;
+ position: relative;
+ }
+ .dropdown {
+ display: grid;
+ grid-gap: 1px;
+ grid-template-columns: minmax(50px, 100px);
+ grid-template-areas:
+ "dropdown-label"
+ "dropdown-content";
+ grid-area: dropdown;
+ z-index: 1;
+ position: absolute;
+ }
}
diff --git a/youtube/static/dark_theme.css b/youtube/static/dark_theme.css
index 221dc95..bc14f5c 100644
--- a/youtube/static/dark_theme.css
+++ b/youtube/static/dark_theme.css
@@ -1,39 +1,17 @@
-body{
- --interface-color: #333333;
- --text-color: #cccccc;
- --background-color: #000000;
- --video-background-color: #080808;
+:root {
+ --background: #121212;
+ --text: #FFF;
+ --secondary-hover: #73828c;
+ --secondary-focus: #616161;
+ --secondary-inverse: #FFF;
+ --secondary-background: #424242;
+ --link: #22aaff;
+ --link-visited: #7755ff;
+ --buttom: #dcdcdb;
+ --buttom-text: #415462;
+ --button-border: #91918c;
+ --buttom-hover: #BBB;
+ --search-text: #FFF;
+ --time-background: #000;
+ --time-text: #FFF;
}
-
-a:link {
- color: #22aaff;
-}
-
-a:visited {
- color: #7755ff;
-}
-
-a:not([href]){
- color: var(--text-color);
-}
-
-.comment .permalink{
- color: #ffffff;
-}
-
-.setting-item{
- background-color: #444444;
-}
-
-
-.muted{
- background-color: #111111;
- color: gray;
-}
-
-.muted a:link {
- color: #10547f;
-}
-
-
-
diff --git a/youtube/static/gray_theme.css b/youtube/static/gray_theme.css
index ca699c7..cae689d 100644
--- a/youtube/static/gray_theme.css
+++ b/youtube/static/gray_theme.css
@@ -1,18 +1,17 @@
-body{
- --interface-color: #dadada;
- --text-color: #222222;
- --background-color: #bcbcbc;
- --video-background-color: #dadada;
-}
-
-.comment .permalink{
- color: #000000;
-}
-
-.setting-item{
- background-color: #eeeeee;
-}
-
-.muted{
- background-color: #888888;
+:root {
+ --background: #2d3743;
+ --text: #FFF;
+ --secondary-hover: #73828c;
+ --secondary-focus: rgba(115, 130, 140, 0.125);
+ --secondary-inverse: #FFF;
+ --secondary-background: #102027;
+ --link: #22aaff;
+ --link-visited: #7755ff;
+ --buttom: #dcdcdb;
+ --buttom-text: #415462;
+ --button-border: #91918c;
+ --buttom-hover: #BBB;
+ --search-text: #FFF;
+ --time-background: #000;
+ --time-text: #FFF;
}
diff --git a/youtube/static/home.css b/youtube/static/home.css
new file mode 100644
index 0000000..9bea07c
--- /dev/null
+++ b/youtube/static/home.css
@@ -0,0 +1,197 @@
+html {
+ font-family: "liberation serif", "times new roman", calibri, carlito, serif;
+ background: var(--background);
+ color: var(--text);
+}
+
+body {
+ display: grid;
+ grid-gap: 20px;
+ grid-template-areas:
+ "header"
+ "main"
+ "footer";
+ /* Fix height */
+ height: 100vh;
+ grid-template-rows: auto 1fr auto;
+ /* fix top and bottom */
+ margin-left: 1rem;
+ margin-right: 1rem;
+}
+
+a:link {
+ color: var(--link);
+}
+
+a:visited {
+ color: var(--link-visited);
+}
+
+input[type="text"],
+input[type="search"] {
+ background: var(--background);
+ border: 1px solid var(--button-border);
+ border-radius: 5px;
+ padding: 0.4rem 0.4rem;
+ font-size: 15px;
+ color: var(--search-text);
+}
+
+input[type='search'] {
+ border-bottom: 1px solid var(--button-border);
+ border-top: 0px;
+ border-left: 0px;
+ border-right: 0px;
+ border-radius: 0px;
+}
+
+header {
+ display: grid;
+ grid-gap: 1px;
+ grid-template-areas:
+ "home"
+ "form";
+ grid-area: header;
+}
+
+.home {
+ grid-area: home;
+ margin-left: auto;
+ margin-right: auto;
+ margin-bottom: 1rem;
+ margin-top: 1rem;
+}
+
+.form {
+ display: grid;
+ grid-gap: 4px;
+ grid-template-areas:
+ "search-box"
+ "search-button"
+ "dropdown";
+ grid-area: form;
+}
+
+.search-box {
+ grid-area: search-box;
+}
+.search-button {
+ grid-area: search-button;
+
+ cursor: pointer;
+ padding-bottom: 6px;
+ padding-left: .75em;
+ padding-right: .75em;
+ padding-top: 6px;
+ text-align: center;
+ white-space: nowrap;
+ background-color: var(--buttom);
+ border: 1px solid var(--button-border);
+ color: var(--buttom-text);
+ border-radius: 5px;
+}
+.search-button:hover {
+ background-color: var(--buttom-hover);
+}
+
+.dropdown {
+ display: grid;
+ grid-gap: 1px;
+ grid-template-areas:
+ "dropdown-label"
+ "dropdown-content";
+ grid-area: dropdown;
+ z-index: 1;
+}
+.dropdown-label {
+ grid-area: dropdown-label;
+
+ padding-bottom: 6px;
+ padding-left: .75em;
+ padding-right: .75em;
+ padding-top: 6px;
+ text-align: center;
+ white-space: nowrap;
+ background-color: var(--buttom);
+ border: 1px solid var(--button-border);
+ color: var(--buttom-text);
+ border-radius: 5px;
+}
+.dropdown-label:hover {
+ background-color: var(--buttom-hover);
+}
+
+/* ------------- Menu Mobile sin JS ---------------- */
+/* input hidden */
+.opt-box {
+ display: none;
+}
+.dropdown-content {
+ display: none;
+ grid-area: dropdown-content;
+}
+label[for=options-toggle-cbox] {
+ cursor: pointer;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+#options-toggle-cbox:checked ~ .dropdown-content {
+ display: inline-grid;
+ white-space: nowrap;
+}
+/*- ----------- End Menu Mobile sin JS ------------- */
+
+.main {
+ grid-area: main;
+ margin: 0 auto;
+ max-width: 80ch;
+}
+
+.code-error {
+ background: var(--secondary-background);
+ padding: 1rem;
+}
+
+.footer {
+ grid-area: footer;
+}
+
+.footer > p {
+ text-align: center;
+}
+
+@media (min-width: 780px) {
+ body {
+ display: grid;
+ grid-template-columns: 0.3fr 2fr 1fr 0.3fr;
+ grid-template-rows: auto 1fr auto;
+ grid-template-areas:
+ "header header header header"
+ "main main main main"
+ "footer footer footer footer";
+ }
+ .form {
+ display: grid;
+ grid-gap: 1px;
+ grid-template-columns: 1fr 1.4fr 0.3fr 1.3fr;
+ grid-template-areas: ". search-box search-button dropdown";
+ grid-area: form;
+ position: relative;
+ }
+ .dropdown {
+ display: grid;
+ grid-gap: 1px;
+ grid-template-columns: minmax(50px, 100px);
+ grid-template-areas:
+ "dropdown-label"
+ "dropdown-content";
+ grid-area: dropdown;
+ z-index: 1;
+ position: absolute;
+ }
+}
diff --git a/youtube/static/light_theme.css b/youtube/static/light_theme.css
index e4d7eb3..a0540f4 100644
--- a/youtube/static/light_theme.css
+++ b/youtube/static/light_theme.css
@@ -1,19 +1,17 @@
-body{
- --interface-color: #ffffff;
- --text-color: #222222;
- --background-color: #f8f8f8;
- --video-background-color: #ffffff;
+:root {
+ --background: #FAFAFA;
+ --text: #415462;
+ --secondary-hover: #415462;
+ --secondary-focus: rgba(115, 130, 140, 0.125);
+ --secondary-inverse: #FFF;
+ --secondary-background: #eeeeee;
+ --link: #22aaff;
+ --link-visited: #7755ff;
+ --buttom: #dcdcdb;
+ --buttom-text: #415462;
+ --button-border: #91918c;
+ --buttom-hover: #BBB;
+ --search-text: #415462;
+ --time-background: #000;
+ --time-text: #FFF;
}
-
-.comment .permalink{
- color: #000000;
-}
-
-.setting-item{
- background-color: #f8f8f8;
-}
-
-.muted{
- background-color: #888888;
-}
-
diff --git a/youtube/static/local_playlist.css b/youtube/static/local_playlist.css
new file mode 100644
index 0000000..bd68c5b
--- /dev/null
+++ b/youtube/static/local_playlist.css
@@ -0,0 +1,527 @@
+html {
+ font-family: "liberation serif", "times new roman", calibri, carlito, serif;
+ background: var(--background);
+ color: var(--text);
+}
+
+body {
+ display: grid;
+ grid-gap: 20px;
+ grid-template-areas:
+ "header"
+ "main"
+ "footer";
+ /* Fix height */
+ height: 100vh;
+ grid-template-rows: auto 1fr auto;
+ /* fix top and bottom */
+ margin-left: 1rem;
+ margin-right: 1rem;
+}
+
+img {
+ width: 100%;
+ height: auto;
+}
+
+a:link {
+ color: var(--link);
+}
+
+a:visited {
+ color: var(--link-visited);
+}
+
+input[type="text"],
+input[type="search"] {
+ background: var(--background);
+ border: 1px solid var(--button-border);
+ padding: 0.4rem 0.4rem;
+ font-size: 15px;
+ color: var(--search-text);
+}
+
+input[type='search'] {
+ border-bottom: 1px solid var(--button-border);
+ border-top: 0px;
+ border-left: 0px;
+ border-right: 0px;
+ border-radius: 0px;
+}
+
+header {
+ display: grid;
+ grid-gap: 1px;
+ grid-template-areas:
+ "home"
+ "form"
+ "playlist";
+ grid-area: header;
+}
+
+.home {
+ grid-area: home;
+ margin-left: auto;
+ margin-right: auto;
+ margin-bottom: 1rem;
+ margin-top: 1rem;
+}
+
+.form {
+ display: grid;
+ grid-gap: 4px;
+ grid-template-areas:
+ "search-box"
+ "search-button"
+ "dropdown";
+ grid-area: form;
+}
+
+.search-box {
+ grid-area: search-box;
+}
+.search-button {
+ grid-area: search-button;
+
+ cursor: pointer;
+ padding-bottom: 6px;
+ padding-left: .75em;
+ padding-right: .75em;
+ padding-top: 6px;
+ text-align: center;
+ white-space: nowrap;
+ background-color: var(--buttom);
+ border: 1px solid var(--button-border);
+ color: var(--buttom-text);
+ border-radius: 5px;
+}
+.search-button:hover {
+ background-color: var(--buttom-hover);
+}
+
+.dropdown {
+ display: grid;
+ grid-gap: 1px;
+ grid-template-areas:
+ "dropdown-label"
+ "dropdown-content";
+ grid-area: dropdown;
+ z-index: 1;
+}
+.dropdown-label {
+ grid-area: dropdown-label;
+
+ padding-bottom: 6px;
+ padding-left: .75em;
+ padding-right: .75em;
+ padding-top: 6px;
+ text-align: center;
+ white-space: nowrap;
+ background-color: var(--buttom);
+ border: 1px solid var(--button-border);
+ color: var(--buttom-text);
+ border-radius: 5px;
+}
+.dropdown-label:hover {
+ background-color: var(--buttom-hover);
+}
+
+/* playlist */
+.playlist {
+ display: grid;
+ grid-gap: 4px;
+ grid-template-areas:
+ "play-box"
+ "play-hidden"
+ "play-add"
+ "play-clean";
+ grid-area: playlist;
+}
+.play-box {
+ grid-area: play-box;
+}
+
+.play-hidden {
+ grid-area: play-hidden;
+}
+
+.play-add {
+ grid-area: play-add;
+ cursor: pointer;
+
+ padding-bottom: 6px;
+ padding-left: .75em;
+ padding-right: .75em;
+ padding-top: 6px;
+ text-align: center;
+ white-space: nowrap;
+ background-color: var(--buttom);
+ border: 1px solid var(--button-border);
+ color: var(--buttom-text);
+ border-radius: 5px;
+}
+.play-add:hover {
+ background-color: var(--buttom-hover);
+}
+
+.play-clean {
+ display: grid;
+ grid-area: play-clean;
+}
+
+.play-clean > button {
+ padding-bottom: 6px;
+ padding-left: .75em;
+ padding-right: .75em;
+ padding-top: 6px;
+ text-align: center;
+ white-space: nowrap;
+ background-color: var(--buttom);
+ border: 1px solid var(--button-border);
+ color: var(--buttom-text);
+ border-radius: 5px;
+}
+.play-clean > button:hover {
+ background-color: var(--buttom-hover);
+}
+/* /playlist */
+
+/* ------------- Menu Mobile sin JS ---------------- */
+/* input hidden */
+.opt-box {
+ display: none;
+}
+.dropdown-content {
+ display: none;
+ grid-area: dropdown-content;
+}
+label[for=options-toggle-cbox] {
+ cursor: pointer;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+#options-toggle-cbox:checked ~ .dropdown-content {
+ display: inline-grid;
+ white-space: nowrap;
+}
+/*- ----------- End Menu Mobile sin JS ------------- */
+
+.main {
+ grid-area: main;
+ display: grid;
+ grid-row-gap: 1rem;
+}
+
+/* fix hr when is children of grid */
+hr {
+ width: 100%;
+}
+
+.playlist-metadata {
+ display: grid;
+ grid-template-columns: 1fr;
+ margin: auto;
+ grid-template-areas:
+ "play-title"
+ "play-action";
+}
+.play-title {
+ grid-area: play-title;
+ text-align: center;
+}
+.play-action {
+ grid-area: play-action;
+}
+
+/* Video list item */
+.video-container {
+ display: grid;
+ grid-row-gap: 0.5rem;
+}
+
+.item-box {
+ display: grid;
+ grid-template-columns: 1.9fr 0.1fr;
+ grid-template-rows: 1fr;
+ grid-gap: 1px;
+ grid-template-areas:
+ "item-video item-checkbox";
+}
+
+.item-video {
+ grid-area: item-video;
+
+ display: grid;
+ grid-template-columns: auto;
+ grid-template-rows: repeat(4, auto);
+ grid-row-gap: 0.4rem;
+ grid-template-areas:
+ "thumbnail-box"
+ "info-box";
+ align-items: center;
+
+ font-size: 0.7rem;
+}
+
+.item-video a {
+ text-decoration: none;
+ cursor: pointer;
+}
+
+.thumbnail-box {
+ grid-area: thumbnail-box;
+ position: relative;
+}
+
+.thumbnail {
+ padding: 28.125%;
+ position: relative;
+ box-sizing: border-box;
+}
+
+.thumbnail-img {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ left: 0;
+ top: 0;
+ object-fit: cover;
+}
+
+.length {
+ z-index: 100;
+ position: absolute;
+ background-color: rgba(35, 35, 35, 0.75);
+ color: #fff;
+ border-radius: 2px;
+ padding: 2px;
+ font-size: 16px;
+ right: 0.25em;
+ bottom: -0.75em;
+}
+
+.playlist-item .thumbnail-info {
+ position: absolute;
+ right: 0px;
+ bottom: 0px;
+ height: 100%;
+ width: 50%;
+ text-align: center;
+ white-space: pre-line;
+ opacity: .8;
+ color: var(--text);
+ font-size: 0.8125rem;
+ background: var(--secondary-background);
+ padding: 0;
+}
+
+.playlist-item .thumbnail-info span {
+ position: absolute;
+ top: 50%;
+ transform: translate(-50%, -50%);
+ text-transform: none;
+}
+
+.thumbnail-img {
+ margin: auto;
+ display: block;
+ max-height: 100%;
+ max-width: 100%;
+}
+
+.info-box {
+ grid-area: info-box;
+ display: grid;
+ grid-template-columns: 1fr;
+ grid-template-rows: auto auto auto auto auto;
+ grid-gap: 1px;
+ grid-template-areas:
+ "."
+ "."
+ "."
+ "."
+ ".";
+}
+
+.title {
+ font-size: 0.8rem;
+ margin: 0px;
+ font-weight: normal;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+.info-box address {
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+.thumbnail-info {
+ background-color: var(--time-background);
+ color: #fff;
+ padding: 2px 5px;
+ text-transform: uppercase;
+ font-weight: 700;
+ font-size: 12px;
+ position: absolute;
+ right: 0;
+ bottom: .2rem;
+}
+
+.item-checkbox {
+ grid-area: item-checkbox;
+ justify-self: start;
+ align-self: center;
+ min-width: 30px;
+ margin: 0px;
+}
+
+.stats {
+ display: flex;
+ justify-content: space-between;
+}
+
+.horizontal-stats {
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+.horizontal-stats > li {
+ display: inline;
+}
+
+.horizontal-stats > li:first-child::after {
+ content: " | ";
+}
+
+/* pagination */
+.main .pagination-container {
+ display: grid;
+ justify-content: center;
+}
+
+.main .pagination-container .pagination-list {
+ display: grid;
+ grid-auto-flow: column;
+ grid-column-gap: 0.5rem;
+}
+
+.main .pagination-container .pagination-list .page-link {
+ border-style: none;
+ font-weight: bold;
+ text-align: center;
+ background: var(--secondary-focus);
+ text-decoration: none;
+ align-self: center;
+ padding: .5rem;
+ width: 1rem;
+}
+
+.main .pagination-container .pagination-list .page-link.is-current {
+ background: var(--secondary-background);
+}
+
+/* /video list item */
+
+.footer {
+ grid-area: footer;
+}
+
+.footer > p {
+ text-align: center;
+}
+
+@media (min-width: 480px) {
+ .item-video {
+ font-size: 0.85rem;
+ }
+ .info-box {
+ grid-gap: 2px;
+ }
+ .title {
+ font-size: 1rem;
+ }
+}
+
+@media (min-width: 600px) {
+ .video-container {
+ display: grid;
+ grid-row-gap: 0.5rem;
+ grid-template-columns: 1fr 1fr;
+ }
+}
+
+@media (min-width: 992px) {
+ body {
+ display: grid;
+ grid-template-columns: 0.3fr 2fr 1fr 0.3fr;
+ grid-template-rows: auto 1fr auto;
+ grid-template-areas:
+ "header header header header"
+ "main main main main"
+ "footer footer footer footer";
+ }
+ .form {
+ display: grid;
+ grid-gap: 1px;
+ grid-template-columns: 1fr 1.4fr 0.3fr 1.3fr;
+ grid-template-areas: ". search-box search-button dropdown";
+ grid-area: form;
+ position: relative;
+ }
+ .dropdown {
+ display: grid;
+ grid-gap: 1px;
+ grid-template-columns: minmax(50px, 100px);
+ grid-template-areas:
+ "dropdown-label"
+ "dropdown-content";
+ grid-area: dropdown;
+ background: var(--background);
+ padding-right: 4rem;
+ z-index: 1;
+ position: absolute;
+ }
+
+ .playlist-metadata {
+ max-width: 50vw;
+ }
+
+ /* playlist */
+ .playlist {
+ display: grid;
+ grid-gap: 1px;
+ grid-template-columns: 1fr 1.4fr 0.3fr 1.3fr;
+ grid-template-areas: ". play-box play-add play-clean";
+ grid-area: playlist;
+ }
+ .play-clean {
+ grid-template-columns: minmax(50px, 100px);
+ }
+ .play-clean > button {
+ padding-left: 0px;
+ padding-right: 0px;
+ padding-bottom: 6px;
+ padding-top: 6px;
+ text-align: center;
+ white-space: nowrap;
+ background-color: var(--buttom);
+ color: var(--buttom-text);
+ border-radius: 5px;
+ cursor: pointer;
+ }
+
+ .video-container {
+ display: grid;
+ grid-template-columns: repeat(4, 1fr);
+ grid-row-gap: 1rem;
+ grid-column-gap: 1rem;
+ }
+}
diff --git a/youtube/static/normalize.css b/youtube/static/normalize.css
new file mode 100644
index 0000000..192eb9c
--- /dev/null
+++ b/youtube/static/normalize.css
@@ -0,0 +1,349 @@
+/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */
+
+/* Document
+ ========================================================================== */
+
+/**
+ * 1. Correct the line height in all browsers.
+ * 2. Prevent adjustments of font size after orientation changes in iOS.
+ */
+
+html {
+ line-height: 1.15; /* 1 */
+ -webkit-text-size-adjust: 100%; /* 2 */
+}
+
+/* Sections
+ ========================================================================== */
+
+/**
+ * Remove the margin in all browsers.
+ */
+
+body {
+ margin: 0;
+}
+
+/**
+ * Render the `main` element consistently in IE.
+ */
+
+main {
+ display: block;
+}
+
+/**
+ * Correct the font size and margin on `h1` elements within `section` and
+ * `article` contexts in Chrome, Firefox, and Safari.
+ */
+
+h1 {
+ font-size: 2em;
+ margin: 0.67em 0;
+}
+
+/* Grouping content
+ ========================================================================== */
+
+/**
+ * 1. Add the correct box sizing in Firefox.
+ * 2. Show the overflow in Edge and IE.
+ */
+
+hr {
+ box-sizing: content-box; /* 1 */
+ height: 0; /* 1 */
+ overflow: visible; /* 2 */
+}
+
+/**
+ * 1. Correct the inheritance and scaling of font size in all browsers.
+ * 2. Correct the odd `em` font sizing in all browsers.
+ */
+
+pre {
+ font-family: monospace, monospace; /* 1 */
+ font-size: 1em; /* 2 */
+}
+
+/* Text-level semantics
+ ========================================================================== */
+
+/**
+ * Remove the gray background on active links in IE 10.
+ */
+
+a {
+ background-color: transparent;
+}
+
+/**
+ * 1. Remove the bottom border in Chrome 57-
+ * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
+ */
+
+abbr[title] {
+ border-bottom: none; /* 1 */
+ text-decoration: underline; /* 2 */
+ text-decoration: underline dotted; /* 2 */
+}
+
+/**
+ * Add the correct font weight in Chrome, Edge, and Safari.
+ */
+
+b,
+strong {
+ font-weight: bolder;
+}
+
+/**
+ * 1. Correct the inheritance and scaling of font size in all browsers.
+ * 2. Correct the odd `em` font sizing in all browsers.
+ */
+
+code,
+kbd,
+samp {
+ font-family: monospace, monospace; /* 1 */
+ font-size: 1em; /* 2 */
+}
+
+/**
+ * Add the correct font size in all browsers.
+ */
+
+small {
+ font-size: 80%;
+}
+
+/**
+ * Prevent `sub` and `sup` elements from affecting the line height in
+ * all browsers.
+ */
+
+sub,
+sup {
+ font-size: 75%;
+ line-height: 0;
+ position: relative;
+ vertical-align: baseline;
+}
+
+sub {
+ bottom: -0.25em;
+}
+
+sup {
+ top: -0.5em;
+}
+
+/* Embedded content
+ ========================================================================== */
+
+/**
+ * Remove the border on images inside links in IE 10.
+ */
+
+img {
+ border-style: none;
+}
+
+/* Forms
+ ========================================================================== */
+
+/**
+ * 1. Change the font styles in all browsers.
+ * 2. Remove the margin in Firefox and Safari.
+ */
+
+button,
+input,
+optgroup,
+select,
+textarea {
+ font-family: inherit; /* 1 */
+ font-size: 100%; /* 1 */
+ line-height: 1.15; /* 1 */
+ margin: 0; /* 2 */
+}
+
+/**
+ * Show the overflow in IE.
+ * 1. Show the overflow in Edge.
+ */
+
+button,
+input { /* 1 */
+ overflow: visible;
+}
+
+/**
+ * Remove the inheritance of text transform in Edge, Firefox, and IE.
+ * 1. Remove the inheritance of text transform in Firefox.
+ */
+
+button,
+select { /* 1 */
+ text-transform: none;
+}
+
+/**
+ * Correct the inability to style clickable types in iOS and Safari.
+ */
+
+button,
+[type="button"],
+[type="reset"],
+[type="submit"] {
+ -webkit-appearance: button;
+}
+
+/**
+ * Remove the inner border and padding in Firefox.
+ */
+
+button::-moz-focus-inner,
+[type="button"]::-moz-focus-inner,
+[type="reset"]::-moz-focus-inner,
+[type="submit"]::-moz-focus-inner {
+ border-style: none;
+ padding: 0;
+}
+
+/**
+ * Restore the focus styles unset by the previous rule.
+ */
+
+button:-moz-focusring,
+[type="button"]:-moz-focusring,
+[type="reset"]:-moz-focusring,
+[type="submit"]:-moz-focusring {
+ outline: 1px dotted ButtonText;
+}
+
+/**
+ * Correct the padding in Firefox.
+ */
+
+fieldset {
+ padding: 0.35em 0.75em 0.625em;
+}
+
+/**
+ * 1. Correct the text wrapping in Edge and IE.
+ * 2. Correct the color inheritance from `fieldset` elements in IE.
+ * 3. Remove the padding so developers are not caught out when they zero out
+ * `fieldset` elements in all browsers.
+ */
+
+legend {
+ box-sizing: border-box; /* 1 */
+ color: inherit; /* 2 */
+ display: table; /* 1 */
+ max-width: 100%; /* 1 */
+ padding: 0; /* 3 */
+ white-space: normal; /* 1 */
+}
+
+/**
+ * Add the correct vertical alignment in Chrome, Firefox, and Opera.
+ */
+
+progress {
+ vertical-align: baseline;
+}
+
+/**
+ * Remove the default vertical scrollbar in IE 10+.
+ */
+
+textarea {
+ overflow: auto;
+}
+
+/**
+ * 1. Add the correct box sizing in IE 10.
+ * 2. Remove the padding in IE 10.
+ */
+
+[type="checkbox"],
+[type="radio"] {
+ box-sizing: border-box; /* 1 */
+ padding: 0; /* 2 */
+}
+
+/**
+ * Correct the cursor style of increment and decrement buttons in Chrome.
+ */
+
+[type="number"]::-webkit-inner-spin-button,
+[type="number"]::-webkit-outer-spin-button {
+ height: auto;
+}
+
+/**
+ * 1. Correct the odd appearance in Chrome and Safari.
+ * 2. Correct the outline style in Safari.
+ */
+
+[type="search"] {
+ -webkit-appearance: textfield; /* 1 */
+ outline-offset: -2px; /* 2 */
+}
+
+/**
+ * Remove the inner padding in Chrome and Safari on macOS.
+ */
+
+[type="search"]::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+
+/**
+ * 1. Correct the inability to style clickable types in iOS and Safari.
+ * 2. Change font properties to `inherit` in Safari.
+ */
+
+::-webkit-file-upload-button {
+ -webkit-appearance: button; /* 1 */
+ font: inherit; /* 2 */
+}
+
+/* Interactive
+ ========================================================================== */
+
+/*
+ * Add the correct display in Edge, IE 10+, and Firefox.
+ */
+
+details {
+ display: block;
+}
+
+/*
+ * Add the correct display in all browsers.
+ */
+
+summary {
+ display: list-item;
+}
+
+/* Misc
+ ========================================================================== */
+
+/**
+ * Add the correct display in IE 10+.
+ */
+
+template {
+ display: none;
+}
+
+/**
+ * Add the correct display in IE 10.
+ */
+
+[hidden] {
+ display: none;
+}
diff --git a/youtube/static/playlist.css b/youtube/static/playlist.css
new file mode 100644
index 0000000..8b75a7d
--- /dev/null
+++ b/youtube/static/playlist.css
@@ -0,0 +1,537 @@
+html {
+ font-family: "liberation serif", "times new roman", calibri, carlito, serif;
+ background: var(--background);
+ color: var(--text);
+}
+
+body {
+ display: grid;
+ grid-gap: 20px;
+ grid-template-areas:
+ "header"
+ "main"
+ "footer";
+ /* Fix height */
+ height: 100vh;
+ grid-template-rows: auto 1fr auto;
+ /* fix top and bottom */
+ margin-left: 1rem;
+ margin-right: 1rem;
+}
+
+img {
+ width: 100%;
+ height: auto;
+}
+
+a:link {
+ color: var(--link);
+}
+
+a:visited {
+ color: var(--link-visited);
+}
+
+input[type="text"],
+input[type="search"] {
+ background: var(--background);
+ border: 1px solid var(--button-border);
+ padding: 0.4rem 0.4rem;
+ font-size: 15px;
+ color: var(--search-text);
+}
+
+input[type='search'] {
+ border-bottom: 1px solid var(--button-border);
+ border-top: 0px;
+ border-left: 0px;
+ border-right: 0px;
+ border-radius: 0px;
+}
+
+header {
+ display: grid;
+ grid-gap: 1px;
+ grid-template-areas:
+ "home"
+ "form"
+ "playlist";
+ grid-area: header;
+}
+
+.home {
+ grid-area: home;
+ margin-left: auto;
+ margin-right: auto;
+ margin-bottom: 1rem;
+ margin-top: 1rem;
+}
+
+.form {
+ display: grid;
+ grid-gap: 4px;
+ grid-template-areas:
+ "search-box"
+ "search-button"
+ "dropdown";
+ grid-area: form;
+}
+
+.search-box {
+ grid-area: search-box;
+}
+.search-button {
+ grid-area: search-button;
+
+ cursor: pointer;
+ padding-bottom: 6px;
+ padding-left: .75em;
+ padding-right: .75em;
+ padding-top: 6px;
+ text-align: center;
+ white-space: nowrap;
+ background-color: var(--buttom);
+ border: 1px solid var(--button-border);
+ color: var(--buttom-text);
+ border-radius: 5px;
+}
+.search-button:hover {
+ background-color: var(--buttom-hover);
+}
+
+.dropdown {
+ display: grid;
+ grid-gap: 1px;
+ grid-template-areas:
+ "dropdown-label"
+ "dropdown-content";
+ grid-area: dropdown;
+ z-index: 1;
+}
+.dropdown-label {
+ grid-area: dropdown-label;
+
+ padding-bottom: 6px;
+ padding-left: .75em;
+ padding-right: .75em;
+ padding-top: 6px;
+ text-align: center;
+ white-space: nowrap;
+ background-color: var(--buttom);
+ border: 1px solid var(--button-border);
+ color: var(--buttom-text);
+ border-radius: 5px;
+}
+.dropdown-label:hover {
+ background-color: var(--buttom-hover);
+}
+
+/* playlist */
+.playlist {
+ display: grid;
+ grid-gap: 4px;
+ grid-template-areas:
+ "play-box"
+ "play-hidden"
+ "play-add"
+ "play-clean";
+ grid-area: playlist;
+}
+.play-box {
+ grid-area: play-box;
+}
+
+.play-hidden {
+ grid-area: play-hidden;
+}
+
+.play-add {
+ grid-area: play-add;
+ cursor: pointer;
+
+ padding-bottom: 6px;
+ padding-left: .75em;
+ padding-right: .75em;
+ padding-top: 6px;
+ text-align: center;
+ white-space: nowrap;
+ background-color: var(--buttom);
+ border: 1px solid var(--button-border);
+ color: var(--buttom-text);
+ border-radius: 5px;
+}
+.play-add:hover {
+ background-color: var(--buttom-hover);
+}
+
+.play-clean {
+ display: grid;
+ grid-area: play-clean;
+}
+
+.play-clean > button {
+ padding-bottom: 6px;
+ padding-left: .75em;
+ padding-right: .75em;
+ padding-top: 6px;
+ text-align: center;
+ white-space: nowrap;
+ background-color: var(--buttom);
+ border: 1px solid var(--button-border);
+ color: var(--buttom-text);
+ border-radius: 5px;
+}
+.play-clean > button:hover {
+ background-color: var(--buttom-hover);
+}
+/* /playlist */
+
+/* ------------- Menu Mobile sin JS ---------------- */
+/* input hidden */
+.opt-box {
+ display: none;
+}
+.dropdown-content {
+ display: none;
+ grid-area: dropdown-content;
+}
+label[for=options-toggle-cbox] {
+ cursor: pointer;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+#options-toggle-cbox:checked ~ .dropdown-content {
+ display: inline-grid;
+ white-space: nowrap;
+}
+/*- ----------- End Menu Mobile sin JS ------------- */
+
+.main {
+ grid-area: main;
+ display: grid;
+ grid-row-gap: 1rem;
+}
+
+/* fix hr when is children of grid */
+hr {
+ width: 100%;
+}
+
+.playlist-metadata {
+ display: grid;
+ grid-template-columns: 1fr;
+ margin: auto;
+ grid-template-areas:
+ "author"
+ "summary"
+ "playlist-stats";
+}
+.author {
+ grid-area: author;
+ display: grid;
+ grid-template-columns: 100px 1fr;
+ grid-column-gap: 1rem;
+ align-items: center;
+ justify-self: center;
+}
+.summary {
+ grid-area: summary;
+ justify-self: start;
+}
+.playlist-stats {
+ grid-area: playlist-stats;
+ justify-self: start;
+}
+
+/* Video list item */
+.video-container {
+ display: grid;
+ grid-row-gap: 0.5rem;
+}
+
+.item-box {
+ display: grid;
+ grid-template-columns: 1.9fr 0.1fr;
+ grid-template-rows: 1fr;
+ grid-gap: 1px;
+ grid-template-areas:
+ "item-video item-checkbox";
+}
+
+.item-video {
+ grid-area: item-video;
+
+ display: grid;
+ grid-template-columns: auto;
+ grid-template-rows: repeat(4, auto);
+ grid-row-gap: 0.4rem;
+ grid-template-areas:
+ "thumbnail-box"
+ "info-box";
+ align-items: center;
+
+ font-size: 0.7rem;
+}
+
+.item-video a {
+ text-decoration: none;
+ cursor: pointer;
+}
+
+.thumbnail-box {
+ grid-area: thumbnail-box;
+ position: relative;
+}
+
+.thumbnail {
+ padding: 28.125%;
+ position: relative;
+ box-sizing: border-box;
+}
+
+.thumbnail-img {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ left: 0;
+ top: 0;
+ object-fit: cover;
+}
+
+.length {
+ z-index: 100;
+ position: absolute;
+ background-color: rgba(35, 35, 35, 0.75);
+ color: #fff;
+ border-radius: 2px;
+ padding: 2px;
+ font-size: 16px;
+ right: 0.25em;
+ bottom: -0.75em;
+}
+
+.playlist-item .thumbnail-info {
+ position: absolute;
+ right: 0px;
+ bottom: 0px;
+ height: 100%;
+ width: 50%;
+ text-align: center;
+ white-space: pre-line;
+ opacity: .8;
+ color: var(--text);
+ font-size: 0.8125rem;
+ background: var(--secondary-background);
+ padding: 0;
+}
+
+.playlist-item .thumbnail-info span {
+ position: absolute;
+ top: 50%;
+ transform: translate(-50%, -50%);
+ text-transform: none;
+}
+
+.thumbnail-img {
+ margin: auto;
+ display: block;
+ max-height: 100%;
+ max-width: 100%;
+}
+
+.info-box {
+ grid-area: info-box;
+ display: grid;
+ grid-template-columns: 1fr;
+ grid-template-rows: auto auto auto auto auto;
+ grid-gap: 1px;
+ grid-template-areas:
+ "."
+ "."
+ "."
+ "."
+ ".";
+}
+
+.title {
+ font-size: 0.8rem;
+ margin: 0px;
+ font-weight: normal;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+.info-box address {
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+.thumbnail-info {
+ background-color: var(--time-background);
+ color: #fff;
+ padding: 2px 5px;
+ text-transform: uppercase;
+ font-weight: 700;
+ font-size: 12px;
+ position: absolute;
+ right: 0;
+ bottom: .2rem;
+}
+
+.item-checkbox {
+ grid-area: item-checkbox;
+ justify-self: start;
+ align-self: center;
+ min-width: 30px;
+ margin: 0px;
+}
+
+.stats {
+ display: flex;
+ justify-content: space-between;
+}
+
+.horizontal-stats {
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+.horizontal-stats > li {
+ display: inline;
+}
+
+.horizontal-stats > li:first-child::after {
+ content: " | ";
+}
+
+/* pagination */
+.main .pagination-container {
+ display: grid;
+ justify-content: center;
+}
+
+.main .pagination-container .pagination-list {
+ display: grid;
+ grid-auto-flow: column;
+ grid-column-gap: 0.5rem;
+}
+
+.main .pagination-container .pagination-list .page-link {
+ border-style: none;
+ font-weight: bold;
+ text-align: center;
+ background: var(--secondary-focus);
+ text-decoration: none;
+ align-self: center;
+ padding: .5rem;
+ width: 1rem;
+}
+
+.main .pagination-container .pagination-list .page-link.is-current {
+ background: var(--secondary-background);
+}
+
+/* /video list item */
+
+.footer {
+ grid-area: footer;
+}
+
+.footer > p {
+ text-align: center;
+}
+
+@media (min-width: 480px) {
+ .item-video {
+ font-size: 0.85rem;
+ }
+ .info-box {
+ grid-gap: 2px;
+ }
+ .title {
+ font-size: 1rem;
+ }
+}
+
+@media (min-width: 600px) {
+ .video-container {
+ display: grid;
+ grid-row-gap: 0.5rem;
+ grid-template-columns: 1fr 1fr;
+ }
+}
+
+@media (min-width: 992px) {
+ body {
+ display: grid;
+ grid-template-columns: 0.3fr 2fr 1fr 0.3fr;
+ grid-template-rows: auto 1fr auto;
+ grid-template-areas:
+ "header header header header"
+ "main main main main"
+ "footer footer footer footer";
+ }
+ .form {
+ display: grid;
+ grid-gap: 1px;
+ grid-template-columns: 1fr 1.4fr 0.3fr 1.3fr;
+ grid-template-areas: ". search-box search-button dropdown";
+ grid-area: form;
+ position: relative;
+ }
+ .dropdown {
+ display: grid;
+ grid-gap: 1px;
+ grid-template-columns: minmax(50px, 100px);
+ grid-template-areas:
+ "dropdown-label"
+ "dropdown-content";
+ grid-area: dropdown;
+ background: var(--background);
+ padding-right: 4rem;
+ z-index: 1;
+ position: absolute;
+ }
+
+ .playlist-metadata {
+ max-width: 50vw;
+ }
+
+ /* playlist */
+ .playlist {
+ display: grid;
+ grid-gap: 1px;
+ grid-template-columns: 1fr 1.4fr 0.3fr 1.3fr;
+ grid-template-areas: ". play-box play-add play-clean";
+ grid-area: playlist;
+ }
+ .play-clean {
+ grid-template-columns: minmax(50px, 100px);
+ }
+ .play-clean > button {
+ padding-left: 0px;
+ padding-right: 0px;
+ padding-bottom: 6px;
+ padding-top: 6px;
+ text-align: center;
+ white-space: nowrap;
+ background-color: var(--buttom);
+ color: var(--buttom-text);
+ border-radius: 5px;
+ cursor: pointer;
+ }
+
+ .video-container {
+ display: grid;
+ grid-template-columns: repeat(4, 1fr);
+ grid-row-gap: 1rem;
+ grid-column-gap: 1rem;
+ }
+}
diff --git a/youtube/static/search.css b/youtube/static/search.css
new file mode 100644
index 0000000..6c463bc
--- /dev/null
+++ b/youtube/static/search.css
@@ -0,0 +1,495 @@
+html {
+ font-family: "liberation serif", "times new roman", calibri, carlito, serif;
+ background: var(--background);
+ color: var(--text);
+}
+
+body {
+ display: grid;
+ grid-gap: 20px;
+ grid-template-areas:
+ "header"
+ "main"
+ "footer";
+ /* Fix height */
+ height: 100vh;
+ grid-template-rows: auto 1fr auto;
+ /* fix top and bottom */
+ margin-left: 1rem;
+ margin-right: 1rem;
+}
+
+img {
+ width: 100%;
+ height: auto;
+}
+
+a:link {
+ color: var(--link);
+}
+
+a:visited {
+ color: var(--link-visited);
+}
+
+input[type="text"],
+input[type="search"] {
+ background: var(--background);
+ border: 1px solid var(--button-border);
+ padding: 0.4rem 0.4rem;
+ font-size: 15px;
+ color: var(--search-text);
+}
+
+input[type='search'] {
+ border-bottom: 1px solid var(--button-border);
+ border-top: 0px;
+ border-left: 0px;
+ border-right: 0px;
+ border-radius: 0px;
+}
+
+header {
+ display: grid;
+ grid-gap: 1px;
+ grid-template-areas:
+ "home"
+ "form"
+ "playlist";
+ grid-area: header;
+}
+
+.home {
+ grid-area: home;
+ margin-left: auto;
+ margin-right: auto;
+ margin-bottom: 1rem;
+ margin-top: 1rem;
+}
+
+.form {
+ display: grid;
+ grid-gap: 4px;
+ grid-template-areas:
+ "search-box"
+ "search-button"
+ "dropdown";
+ grid-area: form;
+}
+
+.search-box {
+ grid-area: search-box;
+}
+.search-button {
+ grid-area: search-button;
+
+ cursor: pointer;
+ padding-bottom: 6px;
+ padding-left: .75em;
+ padding-right: .75em;
+ padding-top: 6px;
+ text-align: center;
+ white-space: nowrap;
+ background-color: var(--buttom);
+ border: 1px solid var(--button-border);
+ color: var(--buttom-text);
+ border-radius: 5px;
+}
+.search-button:hover {
+ background-color: var(--buttom-hover);
+}
+
+.dropdown {
+ display: grid;
+ grid-gap: 1px;
+ grid-template-areas:
+ "dropdown-label"
+ "dropdown-content";
+ grid-area: dropdown;
+ z-index: 1;
+}
+.dropdown-label {
+ grid-area: dropdown-label;
+
+ padding-bottom: 6px;
+ padding-left: .75em;
+ padding-right: .75em;
+ padding-top: 6px;
+ text-align: center;
+ white-space: nowrap;
+ background-color: var(--buttom);
+ border: 1px solid var(--button-border);
+ color: var(--buttom-text);
+ border-radius: 5px;
+}
+.dropdown-label:hover {
+ background-color: var(--buttom-hover);
+}
+
+/* playlist */
+.playlist {
+ display: grid;
+ grid-gap: 4px;
+ grid-template-areas:
+ "play-box"
+ "play-hidden"
+ "play-add"
+ "play-clean";
+ grid-area: playlist;
+}
+.play-box {
+ grid-area: play-box;
+}
+
+.play-hidden {
+ grid-area: play-hidden;
+}
+
+.play-add {
+ grid-area: play-add;
+ cursor: pointer;
+
+ padding-bottom: 6px;
+ padding-left: .75em;
+ padding-right: .75em;
+ padding-top: 6px;
+ text-align: center;
+ white-space: nowrap;
+ background-color: var(--buttom);
+ border: 1px solid var(--button-border);
+ color: var(--buttom-text);
+ border-radius: 5px;
+}
+.play-add:hover {
+ background-color: var(--buttom-hover);
+}
+
+.play-clean {
+ display: grid;
+ grid-area: play-clean;
+}
+
+.play-clean > button {
+ padding-bottom: 6px;
+ padding-left: .75em;
+ padding-right: .75em;
+ padding-top: 6px;
+ text-align: center;
+ white-space: nowrap;
+ background-color: var(--buttom);
+ border: 1px solid var(--button-border);
+ color: var(--buttom-text);
+ border-radius: 5px;
+}
+.play-clean > button:hover {
+ background-color: var(--buttom-hover);
+}
+/* /playlist */
+
+/* ------------- Menu Mobile sin JS ---------------- */
+/* input hidden */
+.opt-box {
+ display: none;
+}
+.dropdown-content {
+ display: none;
+ grid-area: dropdown-content;
+}
+label[for=options-toggle-cbox] {
+ cursor: pointer;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+#options-toggle-cbox:checked ~ .dropdown-content {
+ display: inline-grid;
+ white-space: nowrap;
+}
+/*- ----------- End Menu Mobile sin JS ------------- */
+
+.main {
+ grid-area: main;
+ display: grid;
+ grid-row-gap: 1rem;
+}
+
+/* fix hr when is children of grid */
+hr {
+ width: 100%;
+}
+
+.result-info {
+ justify-self: center;
+}
+
+/* pagination */
+.main .pagination-container {
+ display: grid;
+ justify-content: center;
+}
+
+.main .pagination-container .pagination-list {
+ display: grid;
+ grid-auto-flow: column;
+ grid-column-gap: 0.5rem;
+}
+
+.main .pagination-container .pagination-list .page-link {
+ border-style: none;
+ font-weight: bold;
+ text-align: center;
+ background: var(--secondary-focus);
+ text-decoration: none;
+ align-self: center;
+ padding: .5rem;
+ width: 1rem;
+}
+
+.main .pagination-container .pagination-list .page-link.is-current {
+ background: var(--secondary-background);
+}
+
+/* Video list item */
+.video-container {
+ display: grid;
+ grid-row-gap: 0.5rem;
+}
+
+.length {
+ z-index: 100;
+ position: absolute;
+ background-color: rgba(35, 35, 35, 0.75);
+ color: #fff;
+ border-radius: 2px;
+ padding: 2px;
+ font-size: 16px;
+ right: 0.25em;
+ bottom: -0.75em;
+}
+
+.item-box {
+ display: grid;
+ grid-template-columns: 1.9fr 0.1fr;
+ grid-template-rows: 1fr;
+ grid-gap: 1px;
+ grid-template-areas:
+ "item-video item-checkbox";
+}
+
+.item-video {
+ grid-area: item-video;
+
+ display: grid;
+ grid-template-columns: auto;
+ grid-template-rows: repeat(4, auto);
+ grid-row-gap: 0.4rem;
+ grid-template-areas:
+ "thumbnail-box"
+ "info-box";
+ align-items: center;
+
+ font-size: 0.7rem;
+}
+
+.item-video a {
+ text-decoration: none;
+ cursor: pointer;
+}
+
+.item-video.channel-item .thumbnail.channel {
+ padding: 0px;
+ text-align: center;
+}
+
+.item-video.channel-item .thumbnail-img.channel {
+ width: 56.25%;
+ position: relative;
+}
+
+.thumbnail-box {
+ grid-area: thumbnail-box;
+ position: relative;
+}
+
+.playlist-item .thumbnail-info {
+ position: absolute;
+ right: 0px;
+ bottom: 0px;
+ height: 100%;
+ width: 50%;
+ text-align: center;
+ white-space: pre-line;
+ opacity: .8;
+ color: var(--text);
+ font-size: 0.8125rem;
+ background: var(--secondary-background);
+ padding: 0;
+}
+
+.playlist-item .thumbnail-info span {
+ position: absolute;
+ top: 50%;
+ transform: translate(-50%, -50%);
+ text-transform: none;
+}
+
+.thumbnail {
+ padding: 28.125%;
+ position: relative;
+ box-sizing: border-box;
+}
+
+.thumbnail-img {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ left: 0;
+ top: 0;
+ object-fit: cover;
+}
+
+.title {
+ font-size: 0.8rem;
+ margin: 0px;
+ font-weight: normal;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+.info-box address {
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+.thumbnail-info {
+ background-color: var(--time-background);
+ color: #fff;
+ padding: 2px 5px;
+ text-transform: uppercase;
+ font-weight: 700;
+ font-size: 12px;
+ position: absolute;
+ right: 0;
+ bottom: .2rem;
+}
+
+.item-checkbox {
+ grid-area: item-checkbox;
+ justify-self: start;
+ align-self: center;
+ min-width: 30px;
+ margin: 0px;
+}
+
+.stats {
+ display: flex;
+ justify-content: space-between;
+}
+
+.horizontal-stats > li {
+ display: inline;
+}
+
+
+.horizontal-stats > li:first-child::after {
+ content: " | ";
+}
+
+/* /video list item */
+
+.footer {
+ grid-area: footer;
+}
+
+.footer > p {
+ text-align: center;
+}
+
+@media (min-width: 480px) {
+ .item-video {
+ font-size: 0.85rem;
+ }
+ .info-box {
+ grid-gap: 2px;
+ }
+ .title {
+ font-size: 1rem;
+ }
+}
+
+@media (min-width: 600px) {
+ .video-container {
+ display: grid;
+ grid-row-gap: 0.5rem;
+ grid-template-columns: 1fr 1fr;
+ }
+}
+
+@media (min-width: 992px) {
+ body {
+ display: grid;
+ grid-template-columns: 0.3fr 2fr 1fr 0.3fr;
+ grid-template-rows: auto 1fr auto;
+ grid-template-areas:
+ "header header header header"
+ "main main main main"
+ "footer footer footer footer";
+ }
+ .form {
+ display: grid;
+ grid-gap: 1px;
+ grid-template-columns: 1fr 1.4fr 0.3fr 1.3fr;
+ grid-template-areas: ". search-box search-button dropdown";
+ grid-area: form;
+ position: relative;
+ }
+ .dropdown {
+ display: grid;
+ grid-gap: 1px;
+ grid-template-columns: minmax(50px, 100px);
+ grid-template-areas:
+ "dropdown-label"
+ "dropdown-content";
+ grid-area: dropdown;
+ background: var(--background);
+ padding-right: 4rem;
+ z-index: 1;
+ position: absolute;
+ }
+
+ /* playlist */
+ .playlist {
+ display: grid;
+ grid-gap: 1px;
+ grid-template-columns: 1fr 1.4fr 0.3fr 1.3fr;
+ grid-template-areas: ". play-box play-add play-clean";
+ grid-area: playlist;
+ }
+ .play-clean {
+ grid-template-columns: minmax(50px, 100px);
+ }
+ .play-clean > button {
+ padding-left: 0px;
+ padding-right: 0px;
+ padding-bottom: 6px;
+ padding-top: 6px;
+ text-align: center;
+ white-space: nowrap;
+ background-color: var(--buttom);
+ color: var(--buttom-text);
+ border-radius: 5px;
+ cursor: pointer;
+ }
+
+ .video-container {
+ display: grid;
+ grid-template-columns: repeat(4, 1fr);
+ grid-row-gap: 1rem;
+ grid-column-gap: 1rem;
+ }
+}
diff --git a/youtube/static/settings.css b/youtube/static/settings.css
new file mode 100644
index 0000000..2e72505
--- /dev/null
+++ b/youtube/static/settings.css
@@ -0,0 +1,241 @@
+html {
+ font-family: "liberation serif", "times new roman", calibri, carlito, serif;
+ background: var(--background);
+ color: var(--text);
+}
+
+body {
+ display: grid;
+ grid-gap: 20px;
+ grid-template-areas:
+ "header"
+ "main"
+ "footer";
+ /* Fix height */
+ height: 100vh;
+ grid-template-rows: auto 1fr auto;
+ /* fix top and bottom */
+ margin-left: 1rem;
+ margin-right: 1rem;
+}
+
+a:link {
+ color: var(--link);
+}
+
+a:visited {
+ color: var(--link-visited);
+}
+
+input[type="text"],
+input[type="search"] {
+ background: var(--background);
+ border: 1px solid var(--button-border);
+ border-radius: 5px;
+ padding: 0.4rem 0.4rem;
+ font-size: 15px;
+ color: var(--search-text);
+}
+
+input[type='search'] {
+ border-bottom: 1px solid var(--button-border);
+ border-top: 0px;
+ border-left: 0px;
+ border-right: 0px;
+ border-radius: 0px;
+}
+
+header {
+ display: grid;
+ grid-gap: 1px;
+ grid-template-areas:
+ "home"
+ "form";
+ grid-area: header;
+}
+
+.home {
+ grid-area: home;
+ margin-left: auto;
+ margin-right: auto;
+ margin-bottom: 1rem;
+ margin-top: 1rem;
+}
+
+.form {
+ display: grid;
+ grid-gap: 4px;
+ grid-template-areas:
+ "search-box"
+ "search-button"
+ "dropdown";
+ grid-area: form;
+}
+
+.search-box {
+ grid-area: search-box;
+}
+.search-button {
+ grid-area: search-button;
+
+ cursor: pointer;
+ padding-bottom: 6px;
+ padding-left: .75em;
+ padding-right: .75em;
+ padding-top: 6px;
+ text-align: center;
+ white-space: nowrap;
+ background-color: var(--buttom);
+ border: 1px solid var(--button-border);
+ color: var(--buttom-text);
+ border-radius: 5px;
+}
+.search-button:hover {
+ background-color: var(--buttom-hover);
+}
+
+.dropdown {
+ display: grid;
+ grid-gap: 1px;
+ grid-template-areas:
+ "dropdown-label"
+ "dropdown-content";
+ grid-area: dropdown;
+ z-index: 1;
+}
+.dropdown-label {
+ grid-area: dropdown-label;
+
+ padding-bottom: 6px;
+ padding-left: .75em;
+ padding-right: .75em;
+ padding-top: 6px;
+ text-align: center;
+ white-space: nowrap;
+ background-color: var(--buttom);
+ border: 1px solid var(--button-border);
+ color: var(--buttom-text);
+ border-radius: 5px;
+}
+.dropdown-label:hover {
+ background-color: var(--buttom-hover);
+}
+
+/* ------------- Menu Mobile sin JS ---------------- */
+/* input hidden */
+.opt-box {
+ display: none;
+}
+.dropdown-content {
+ display: none;
+ grid-area: dropdown-content;
+}
+label[for=options-toggle-cbox] {
+ cursor: pointer;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+#options-toggle-cbox:checked ~ .dropdown-content {
+ display: inline-grid;
+ white-space: nowrap;
+}
+/*- ----------- End Menu Mobile sin JS ------------- */
+
+.main {
+ grid-area: main;
+ margin: 0 auto;
+ width: 100%;
+}
+
+.settings-form {
+ background-color: var(--secondary-background);
+ padding: 1rem;
+}
+
+.settings-list {
+ display: grid;
+ grid-row-gap: 1rem;
+ list-style: none;
+ padding: 0px;
+}
+
+.setting-item {
+ display: grid;
+ grid-template-columns: auto auto;
+ background-color: var(--secondary-focus);
+ align-items: center;
+ padding: 5px;
+}
+
+.setting-item select {
+ max-width: 100%;
+ justify-self: end;
+}
+
+.setting-item input {
+ max-width: 80px;
+ justify-self: end;
+}
+
+.settings-form input[type="submit"] {
+ cursor: pointer;
+}
+
+.footer {
+ grid-area: footer;
+}
+
+.footer > p {
+ text-align: center;
+}
+
+@media (min-width: 780px) {
+ body {
+ display: grid;
+ grid-template-columns: 0.3fr 2fr 1fr 0.3fr;
+ grid-template-rows: auto 1fr auto;
+ grid-template-areas:
+ "header header header header"
+ "main main main main"
+ "footer footer footer footer";
+ }
+ .form {
+ display: grid;
+ grid-gap: 1px;
+ grid-template-columns: 1fr 1.4fr 0.3fr 1.3fr;
+ grid-template-areas: ". search-box search-button dropdown";
+ grid-area: form;
+ position: relative;
+ }
+ .dropdown {
+ display: grid;
+ grid-gap: 1px;
+ grid-template-columns: minmax(50px, 100px);
+ grid-template-areas:
+ "dropdown-label"
+ "dropdown-content";
+ grid-area: dropdown;
+ z-index: 1;
+ position: absolute;
+ background: var(--background);
+ padding-right: 4rem;
+ }
+ .main {
+ display: grid;
+ justify-content: center;
+ }
+ .settings-form {
+ width: 50vw;
+ }
+ .setting-item select {
+ max-width: 250px;
+ }
+ .setting-item input {
+ max-width: 250px;
+ }
+}
diff --git a/youtube/static/subscription.css b/youtube/static/subscription.css
new file mode 100644
index 0000000..74571fc
--- /dev/null
+++ b/youtube/static/subscription.css
@@ -0,0 +1,530 @@
+html {
+ font-family: "liberation serif", "times new roman", calibri, carlito, serif;
+ background: var(--background);
+ color: var(--text);
+}
+
+body {
+ display: grid;
+ grid-gap: 20px;
+ grid-template-areas:
+ "header"
+ "main"
+ "footer";
+ /* Fix height */
+ height: 100vh;
+ grid-template-rows: auto 1fr auto;
+ /* fix top and bottom */
+ margin-left: 1rem;
+ margin-right: 1rem;
+}
+
+img {
+ width: 100%;
+ height: auto;
+}
+
+a:link {
+ color: var(--link);
+}
+
+a:visited {
+ color: var(--link-visited);
+}
+
+input[type="text"],
+input[type="search"] {
+ background: var(--background);
+ border: 1px solid var(--button-border);
+ padding: 0.4rem 0.4rem;
+ font-size: 15px;
+ color: var(--search-text);
+}
+
+input[type='search'] {
+ border-bottom: 1px solid var(--button-border);
+ border-top: 0px;
+ border-left: 0px;
+ border-right: 0px;
+ border-radius: 0px;
+}
+
+header {
+ display: grid;
+ grid-gap: 1px;
+ grid-template-areas:
+ "home"
+ "form"
+ "playlist";
+ grid-area: header;
+}
+
+.home {
+ grid-area: home;
+ margin-left: auto;
+ margin-right: auto;
+ margin-bottom: 1rem;
+ margin-top: 1rem;
+}
+
+.form {
+ display: grid;
+ grid-gap: 4px;
+ grid-template-areas:
+ "search-box"
+ "search-button"
+ "dropdown";
+ grid-area: form;
+}
+
+.search-box {
+ grid-area: search-box;
+}
+.search-button {
+ grid-area: search-button;
+
+ cursor: pointer;
+ padding-bottom: 6px;
+ padding-left: .75em;
+ padding-right: .75em;
+ padding-top: 6px;
+ text-align: center;
+ white-space: nowrap;
+ background-color: var(--buttom);
+ border: 1px solid var(--button-border);
+ color: var(--buttom-text);
+ border-radius: 5px;
+}
+.search-button:hover {
+ background-color: var(--buttom-hover);
+}
+
+.dropdown {
+ display: grid;
+ grid-gap: 1px;
+ grid-template-areas:
+ "dropdown-label"
+ "dropdown-content";
+ grid-area: dropdown;
+ z-index: 1;
+}
+.dropdown-label {
+ grid-area: dropdown-label;
+
+ padding-bottom: 6px;
+ padding-left: .75em;
+ padding-right: .75em;
+ padding-top: 6px;
+ text-align: center;
+ white-space: nowrap;
+ background-color: var(--buttom);
+ border: 1px solid var(--button-border);
+ color: var(--buttom-text);
+ border-radius: 5px;
+}
+.dropdown-label:hover {
+ background-color: var(--buttom-hover);
+}
+
+/* playlist */
+.playlist {
+ display: grid;
+ grid-gap: 4px;
+ grid-template-areas:
+ "play-box"
+ "play-hidden"
+ "play-add"
+ "play-clean";
+ grid-area: playlist;
+}
+.play-box {
+ grid-area: play-box;
+}
+
+.play-hidden {
+ grid-area: play-hidden;
+}
+
+.play-add {
+ grid-area: play-add;
+ cursor: pointer;
+
+ padding-bottom: 6px;
+ padding-left: .75em;
+ padding-right: .75em;
+ padding-top: 6px;
+ text-align: center;
+ white-space: nowrap;
+ background-color: var(--buttom);
+ border: 1px solid var(--button-border);
+ color: var(--buttom-text);
+ border-radius: 5px;
+}
+.play-add:hover {
+ background-color: var(--buttom-hover);
+}
+
+.play-clean {
+ display: grid;
+ grid-area: play-clean;
+}
+
+.play-clean > button {
+ padding-bottom: 6px;
+ padding-left: .75em;
+ padding-right: .75em;
+ padding-top: 6px;
+ text-align: center;
+ white-space: nowrap;
+ background-color: var(--buttom);
+ border: 1px solid var(--button-border);
+ color: var(--buttom-text);
+ border-radius: 5px;
+}
+.play-clean > button:hover {
+ background-color: var(--buttom-hover);
+}
+/* /playlist */
+
+/* ------------- Menu Mobile sin JS ---------------- */
+/* input hidden */
+.opt-box {
+ display: none;
+}
+.dropdown-content {
+ display: none;
+ grid-area: dropdown-content;
+}
+label[for=options-toggle-cbox] {
+ cursor: pointer;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+#options-toggle-cbox:checked ~ .dropdown-content {
+ display: inline-grid;
+ white-space: nowrap;
+}
+/*- ----------- End Menu Mobile sin JS ------------- */
+
+.main {
+ grid-area: main;
+ display: grid;
+ grid-row-gap: 1rem;
+}
+
+/* fix hr when is children of grid */
+hr {
+ width: 100%;
+}
+
+.sidebar-links {
+ display: grid;
+ grid-template-columns: 1fr;
+ margin: auto;
+ grid-template-areas:
+ "sidebar-title"
+ "sidebar-action";
+ align-items: center;
+ justify-items: center;
+ justify-content: center;
+}
+.sidebar-title {
+ grid-area: sidebar-title;
+ text-align: center;
+}
+.sidebar-action {
+ grid-area: sidebar-action;
+}
+
+/* Video list item */
+.video-container {
+ display: grid;
+ grid-row-gap: 0.5rem;
+}
+
+.item-box {
+ display: grid;
+ grid-template-columns: 1.9fr 0.1fr;
+ grid-template-rows: 1fr;
+ grid-gap: 1px;
+ grid-template-areas:
+ "item-video item-checkbox";
+}
+
+.item-video {
+ grid-area: item-video;
+
+ display: grid;
+ grid-template-columns: auto;
+ grid-template-rows: repeat(4, auto);
+ grid-row-gap: 0.4rem;
+ grid-template-areas:
+ "thumbnail-box"
+ "info-box";
+ align-items: center;
+
+ font-size: 0.7rem;
+}
+
+.item-video a {
+ text-decoration: none;
+ cursor: pointer;
+}
+
+.thumbnail-box {
+ grid-area: thumbnail-box;
+ position: relative;
+}
+
+.thumbnail {
+ padding: 28.125%;
+ position: relative;
+ box-sizing: border-box;
+}
+
+.thumbnail-img {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ left: 0;
+ top: 0;
+ object-fit: cover;
+}
+
+.length {
+ z-index: 100;
+ position: absolute;
+ background-color: rgba(35, 35, 35, 0.75);
+ color: #fff;
+ border-radius: 2px;
+ padding: 2px;
+ font-size: 16px;
+ right: 0.25em;
+ bottom: -0.75em;
+}
+
+.playlist-item .thumbnail-info {
+ position: absolute;
+ right: 0px;
+ bottom: 0px;
+ height: 100%;
+ width: 50%;
+ text-align: center;
+ white-space: pre-line;
+ opacity: .8;
+ color: var(--text);
+ font-size: 0.8125rem;
+ background: var(--secondary-background);
+ padding: 0;
+}
+
+.playlist-item .thumbnail-info span {
+ position: absolute;
+ top: 50%;
+ transform: translate(-50%, -50%);
+ text-transform: none;
+}
+
+.thumbnail-img {
+ margin: auto;
+ display: block;
+ max-height: 100%;
+ max-width: 100%;
+}
+
+.info-box {
+ grid-area: info-box;
+ display: grid;
+ grid-template-columns: 1fr;
+ grid-template-rows: auto auto auto auto auto;
+ grid-gap: 1px;
+ grid-template-areas:
+ "."
+ "."
+ "."
+ "."
+ ".";
+}
+
+.title {
+ font-size: 0.8rem;
+ margin: 0px;
+ font-weight: normal;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+.info-box address {
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+.thumbnail-info {
+ background-color: var(--time-background);
+ color: #fff;
+ padding: 2px 5px;
+ text-transform: uppercase;
+ font-weight: 700;
+ font-size: 12px;
+ position: absolute;
+ right: 0;
+ bottom: .2rem;
+}
+
+.item-checkbox {
+ grid-area: item-checkbox;
+ justify-self: start;
+ align-self: center;
+ min-width: 30px;
+ margin: 0px;
+}
+
+.stats {
+ display: flex;
+ justify-content: space-between;
+}
+
+.horizontal-stats {
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+.horizontal-stats > li {
+ display: inline;
+}
+
+.horizontal-stats > li:first-child::after {
+ content: " | ";
+}
+
+/* pagination */
+.main .pagination-container {
+ display: grid;
+ justify-content: center;
+}
+
+.main .pagination-container .pagination-list {
+ display: grid;
+ grid-auto-flow: column;
+ grid-column-gap: 0.5rem;
+}
+
+.main .pagination-container .pagination-list .page-link {
+ border-style: none;
+ font-weight: bold;
+ text-align: center;
+ background: var(--secondary-focus);
+ text-decoration: none;
+ align-self: center;
+ padding: .5rem;
+ width: 1rem;
+}
+
+.main .pagination-container .pagination-list .page-link.is-current {
+ background: var(--secondary-background);
+}
+
+/* /video list item */
+
+.footer {
+ grid-area: footer;
+}
+
+.footer > p {
+ text-align: center;
+}
+
+@media (min-width: 480px) {
+ .item-video {
+ font-size: 0.85rem;
+ }
+ .info-box {
+ grid-gap: 2px;
+ }
+ .title {
+ font-size: 1rem;
+ }
+}
+
+@media (min-width: 600px) {
+ .video-container {
+ display: grid;
+ grid-row-gap: 0.5rem;
+ grid-template-columns: 1fr 1fr;
+ }
+}
+
+@media (min-width: 992px) {
+ body {
+ display: grid;
+ grid-template-columns: 0.3fr 2fr 1fr 0.3fr;
+ grid-template-rows: auto 1fr auto;
+ grid-template-areas:
+ "header header header header"
+ "main main main main"
+ "footer footer footer footer";
+ }
+ .form {
+ display: grid;
+ grid-gap: 1px;
+ grid-template-columns: 1fr 1.4fr 0.3fr 1.3fr;
+ grid-template-areas: ". search-box search-button dropdown";
+ grid-area: form;
+ position: relative;
+ }
+ .dropdown {
+ display: grid;
+ grid-gap: 1px;
+ grid-template-columns: minmax(50px, 100px);
+ grid-template-areas:
+ "dropdown-label"
+ "dropdown-content";
+ grid-area: dropdown;
+ background: var(--background);
+ padding-right: 4rem;
+ z-index: 1;
+ position: absolute;
+ }
+
+ .sidebar-links {
+ max-width: 50vw;
+ }
+
+ /* playlist */
+ .playlist {
+ display: grid;
+ grid-gap: 1px;
+ grid-template-columns: 1fr 1.4fr 0.3fr 1.3fr;
+ grid-template-areas: ". play-box play-add play-clean";
+ grid-area: playlist;
+ }
+ .play-clean {
+ grid-template-columns: minmax(50px, 100px);
+ }
+ .play-clean > button {
+ padding-left: 0px;
+ padding-right: 0px;
+ padding-bottom: 6px;
+ padding-top: 6px;
+ text-align: center;
+ white-space: nowrap;
+ background-color: var(--buttom);
+ color: var(--buttom-text);
+ border-radius: 5px;
+ cursor: pointer;
+ }
+
+ .video-container {
+ display: grid;
+ grid-template-columns: repeat(4, 1fr);
+ grid-row-gap: 1rem;
+ grid-column-gap: 1rem;
+ }
+}
diff --git a/youtube/static/subscription_manager.css b/youtube/static/subscription_manager.css
new file mode 100644
index 0000000..a7d9780
--- /dev/null
+++ b/youtube/static/subscription_manager.css
@@ -0,0 +1,403 @@
+html {
+ font-family: "liberation serif", "times new roman", calibri, carlito, serif;
+ background: var(--background);
+ color: var(--text);
+}
+
+body {
+ display: grid;
+ grid-gap: 20px;
+ grid-template-areas:
+ "header"
+ "main"
+ "footer";
+ /* Fix height */
+ height: 100vh;
+ grid-template-rows: auto 1fr auto;
+ /* fix top and bottom */
+ margin-left: 1rem;
+ margin-right: 1rem;
+}
+
+img {
+ width: 100%;
+ height: auto;
+}
+
+a:link {
+ color: var(--link);
+}
+
+a:visited {
+ color: var(--link-visited);
+}
+
+input[type="text"],
+input[type="search"] {
+ background: var(--background);
+ border: 1px solid var(--button-border);
+ padding: 0.4rem 0.4rem;
+ font-size: 15px;
+ color: var(--search-text);
+}
+
+input[type='search'] {
+ border-bottom: 1px solid var(--button-border);
+ border-top: 0px;
+ border-left: 0px;
+ border-right: 0px;
+ border-radius: 0px;
+}
+
+header {
+ display: grid;
+ grid-gap: 1px;
+ grid-template-areas:
+ "home"
+ "form"
+ "playlist";
+ grid-area: header;
+}
+
+.home {
+ grid-area: home;
+ margin-left: auto;
+ margin-right: auto;
+ margin-bottom: 1rem;
+ margin-top: 1rem;
+}
+
+.form {
+ display: grid;
+ grid-gap: 4px;
+ grid-template-areas:
+ "search-box"
+ "search-button"
+ "dropdown";
+ grid-area: form;
+}
+
+.search-box {
+ grid-area: search-box;
+}
+.search-button {
+ grid-area: search-button;
+
+ cursor: pointer;
+ padding-bottom: 6px;
+ padding-left: .75em;
+ padding-right: .75em;
+ padding-top: 6px;
+ text-align: center;
+ white-space: nowrap;
+ background-color: var(--buttom);
+ border: 1px solid var(--button-border);
+ color: var(--buttom-text);
+ border-radius: 5px;
+}
+.search-button:hover {
+ background-color: var(--buttom-hover);
+}
+
+.dropdown {
+ display: grid;
+ grid-gap: 1px;
+ grid-template-areas:
+ "dropdown-label"
+ "dropdown-content";
+ grid-area: dropdown;
+ z-index: 1;
+}
+.dropdown-label {
+ grid-area: dropdown-label;
+
+ padding-bottom: 6px;
+ padding-left: .75em;
+ padding-right: .75em;
+ padding-top: 6px;
+ text-align: center;
+ white-space: nowrap;
+ background-color: var(--buttom);
+ border: 1px solid var(--button-border);
+ color: var(--buttom-text);
+ border-radius: 5px;
+}
+.dropdown-label:hover {
+ background-color: var(--buttom-hover);
+}
+
+/* playlist */
+.playlist {
+ display: grid;
+ grid-gap: 4px;
+ grid-template-areas:
+ "play-box"
+ "play-hidden"
+ "play-add"
+ "play-clean";
+ grid-area: playlist;
+}
+.play-box {
+ grid-area: play-box;
+}
+
+.play-hidden {
+ grid-area: play-hidden;
+}
+
+.play-add {
+ grid-area: play-add;
+ cursor: pointer;
+
+ padding-bottom: 6px;
+ padding-left: .75em;
+ padding-right: .75em;
+ padding-top: 6px;
+ text-align: center;
+ white-space: nowrap;
+ background-color: var(--buttom);
+ border: 1px solid var(--button-border);
+ color: var(--buttom-text);
+ border-radius: 5px;
+}
+.play-add:hover {
+ background-color: var(--buttom-hover);
+}
+
+.play-clean {
+ display: grid;
+ grid-area: play-clean;
+}
+
+.play-clean > button {
+ padding-bottom: 6px;
+ padding-left: .75em;
+ padding-right: .75em;
+ padding-top: 6px;
+ text-align: center;
+ white-space: nowrap;
+ background-color: var(--buttom);
+ border: 1px solid var(--button-border);
+ color: var(--buttom-text);
+ border-radius: 5px;
+}
+.play-clean > button:hover {
+ background-color: var(--buttom-hover);
+}
+/* /playlist */
+
+/* ------------- Menu Mobile sin JS ---------------- */
+/* input hidden */
+.opt-box {
+ display: none;
+}
+.dropdown-content {
+ display: none;
+ grid-area: dropdown-content;
+}
+label[for=options-toggle-cbox] {
+ cursor: pointer;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+#options-toggle-cbox:checked ~ .dropdown-content {
+ display: inline-grid;
+ white-space: nowrap;
+}
+/*- ----------- End Menu Mobile sin JS ------------- */
+
+.main {
+ grid-area: main;
+ display: grid;
+ grid-row-gap: 1rem;
+}
+
+/* fix hr when is children of grid */
+hr {
+ width: 100%;
+}
+
+.import-export {
+ display: grid;
+ grid-template-columns: 1fr;
+ margin: auto;
+ grid-template-areas:
+ "subscriptions-import-form";
+ align-items: center;
+ justify-items: center;
+ justify-content: center;
+}
+.subscriptions-import-form {
+ grid-area: subscriptions-import-form;
+ text-align: center;
+}
+
+.sub-list-controls {
+ display: grid;
+ grid-row-gap: 0.2rem;
+}
+
+.subscriptions-import-form input[type='submit'],
+.sub-list-controls button[type='submit'],
+.sub-list-controls input[type='reset'] {
+ cursor: pointer;
+ padding-bottom: 6px;
+ padding-left: .75em;
+ padding-right: .75em;
+ padding-top: 6px;
+ text-align: center;
+ background-color: var(--buttom);
+ border: 1px solid var(--button-border);
+ color: var(--buttom-text);
+ border-radius: 5px;
+}
+
+.tag-group-list {
+ display: grid;
+ grid-template-columns: 1fr;
+ margin: auto;
+}
+
+.sub-list {
+ display: grid;
+ grid-template-columns: 1fr;
+ margin: auto;
+}
+
+/* pagination */
+.main .pagination-container {
+ display: grid;
+ justify-content: center;
+}
+
+.main .pagination-container .pagination-list {
+ display: grid;
+ grid-auto-flow: column;
+ grid-column-gap: 0.5rem;
+}
+
+.main .pagination-container .pagination-list .page-link {
+ border-style: none;
+ font-weight: bold;
+ text-align: center;
+ background: var(--secondary-focus);
+ text-decoration: none;
+ align-self: center;
+ padding: .5rem;
+ width: 1rem;
+}
+
+.main .pagination-container .pagination-list .page-link.is-current {
+ background: var(--secondary-background);
+}
+
+/* /video list item */
+
+.footer {
+ grid-area: footer;
+}
+
+.footer > p {
+ text-align: center;
+}
+
+@media (min-width: 480px) {
+ .item-video {
+ font-size: 0.85rem;
+ }
+ .info-box {
+ grid-gap: 2px;
+ }
+ .title {
+ font-size: 1rem;
+ }
+}
+
+@media (min-width: 600px) {
+ .video-container {
+ display: grid;
+ grid-row-gap: 0.5rem;
+ grid-template-columns: 1fr 1fr;
+ }
+}
+
+@media (min-width: 992px) {
+ body {
+ display: grid;
+ grid-template-columns: 0.3fr 2fr 1fr 0.3fr;
+ grid-template-rows: auto 1fr auto;
+ grid-template-areas:
+ "header header header header"
+ "main main main main"
+ "footer footer footer footer";
+ }
+ .form {
+ display: grid;
+ grid-gap: 1px;
+ grid-template-columns: 1fr 1.4fr 0.3fr 1.3fr;
+ grid-template-areas: ". search-box search-button dropdown";
+ grid-area: form;
+ position: relative;
+ }
+ .dropdown {
+ display: grid;
+ grid-gap: 1px;
+ grid-template-columns: minmax(50px, 100px);
+ grid-template-areas:
+ "dropdown-label"
+ "dropdown-content";
+ grid-area: dropdown;
+ background: var(--background);
+ padding-right: 4rem;
+ z-index: 1;
+ position: absolute;
+ }
+
+ .import-export {
+ max-width: 50vw;
+ }
+
+ .sub-list-controls {
+ grid-template-columns: repeat(8, auto);
+ max-height: 1rem;
+ grid-column-gap: 0.5rem;
+ justify-content: center;
+ align-items: center;
+ }
+
+ /* playlist */
+ .playlist {
+ display: grid;
+ grid-gap: 1px;
+ grid-template-columns: 1fr 1.4fr 0.3fr 1.3fr;
+ grid-template-areas: ". play-box play-add play-clean";
+ grid-area: playlist;
+ }
+ .play-clean {
+ grid-template-columns: minmax(50px, 100px);
+ }
+ .play-clean > button {
+ padding-left: 0px;
+ padding-right: 0px;
+ padding-bottom: 6px;
+ padding-top: 6px;
+ text-align: center;
+ white-space: nowrap;
+ background-color: var(--buttom);
+ color: var(--buttom-text);
+ border-radius: 5px;
+ cursor: pointer;
+ }
+
+ .video-container {
+ display: grid;
+ grid-template-columns: repeat(4, 1fr);
+ grid-row-gap: 1rem;
+ grid-column-gap: 1rem;
+ }
+}
diff --git a/youtube/static/watch.css b/youtube/static/watch.css
new file mode 100644
index 0000000..697961d
--- /dev/null
+++ b/youtube/static/watch.css
@@ -0,0 +1,633 @@
+html {
+ font-family: "liberation serif", "times new roman", calibri, carlito, serif;
+ background: var(--background);
+ color: var(--text);
+}
+
+body {
+ display: grid;
+ grid-gap: 20px;
+ grid-template-areas:
+ "header"
+ "main"
+ "footer";
+ /* Fix height */
+ height: 100vh;
+ grid-template-rows: auto 1fr auto;
+ /* fix top and bottom */
+ margin-left: 1rem;
+ margin-right: 1rem;
+}
+
+img {
+ width: 100%;
+ height: auto;
+}
+
+video {
+ width: 100%;
+ height: auto;
+ max-height: 480px;
+}
+
+a:link {
+ color: var(--link);
+}
+
+a:visited {
+ color: var(--link-visited);
+}
+
+input[type="text"],
+input[type="search"] {
+ background: var(--background);
+ border: 1px solid var(--button-border);
+ border-radius: 5px;
+ padding: 0.4rem 0.4rem;
+ font-size: 15px;
+ color: var(--search-text);
+}
+
+input[type='search'] {
+ border-bottom: 1px solid var(--button-border);
+ border-top: 0px;
+ border-left: 0px;
+ border-right: 0px;
+ border-radius: 0px;
+}
+
+header {
+ display: grid;
+ grid-gap: 4px;
+ grid-template-areas:
+ "home"
+ "form"
+ "playlist";
+ grid-area: header;
+}
+
+.home {
+ grid-area: home;
+ margin-left: auto;
+ margin-right: auto;
+ margin-bottom: 1rem;
+ margin-top: 1rem;
+}
+
+.form {
+ display: grid;
+ grid-gap: 4px;
+ grid-template-areas:
+ "search-box"
+ "search-button"
+ "dropdown";
+ grid-area: form;
+}
+
+.search-box {
+ grid-area: search-box;
+}
+.search-button {
+ grid-area: search-button;
+
+ cursor: pointer;
+ padding-bottom: 6px;
+ padding-left: .75em;
+ padding-right: .75em;
+ padding-top: 6px;
+ text-align: center;
+ white-space: nowrap;
+ background-color: var(--buttom);
+ border: 1px solid var(--button-border);
+ color: var(--buttom-text);
+ border-radius: 5px;
+}
+.search-button:hover {
+ background-color: var(--buttom-hover);
+}
+
+.dropdown {
+ display: grid;
+ grid-gap: 1px;
+ grid-template-areas:
+ "dropdown-label"
+ "dropdown-content";
+ grid-area: dropdown;
+ z-index: 1;
+}
+.dropdown-label {
+ grid-area: dropdown-label;
+
+ padding-bottom: 6px;
+ padding-left: .75em;
+ padding-right: .75em;
+ padding-top: 6px;
+ text-align: center;
+ white-space: nowrap;
+ background-color: var(--buttom);
+ border: 1px solid var(--button-border);
+ color: var(--buttom-text);
+ border-radius: 5px;
+}
+.dropdown-label:hover {
+ background-color: var(--buttom-hover);
+}
+
+.playlist {
+ display: grid;
+ grid-gap: 4px;
+ grid-template-areas:
+ "play-box"
+ "play-hidden"
+ "play-add"
+ "play-clean";
+ grid-area: playlist;
+}
+.play-box {
+ grid-area: play-box;
+}
+
+.play-hidden {
+ grid-area: play-hidden;
+}
+
+.play-add {
+ grid-area: play-add;
+ cursor: pointer;
+
+ padding-bottom: 6px;
+ padding-left: .75em;
+ padding-right: .75em;
+ padding-top: 6px;
+ text-align: center;
+ white-space: nowrap;
+ background-color: var(--buttom);
+ border: 1px solid var(--button-border);
+ color: var(--buttom-text);
+ border-radius: 5px;
+}
+.play-add:hover {
+ background-color: var(--buttom-hover);
+}
+
+.play-clean {
+ display: grid;
+ grid-area: play-clean;
+}
+
+.play-clean > button {
+ padding-bottom: 6px;
+ padding-left: .75em;
+ padding-right: .75em;
+ padding-top: 6px;
+ text-align: center;
+ white-space: nowrap;
+ background-color: var(--buttom);
+ border: 1px solid var(--button-border);
+ color: var(--buttom-text);
+ border-radius: 5px;
+}
+.play-clean > button:hover {
+ background-color: var(--buttom-hover);
+}
+
+/* ------------- Menu Mobile sin JS ---------------- */
+/* input hidden */
+.opt-box {
+ display: none;
+}
+.dropdown-content {
+ display: none;
+ grid-area: dropdown-content;
+}
+label[for=options-toggle-cbox] {
+ cursor: pointer;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+#options-toggle-cbox:checked ~ .dropdown-content {
+ display: inline-grid;
+ white-space: nowrap;
+ padding-left: 1rem;
+}
+/*- ----------- End Menu Mobile sin JS ------------- */
+
+.main {
+ grid-area: main;
+ margin: 0 auto;
+
+ display: grid;
+ grid-grap: 1px;
+ grid-template-columns: 1fr;
+ grid-template-areas:
+ "sc-video"
+ "sc-info";
+}
+.sc-video { grid-area: sc-video; }
+.sc-info {
+ display: grid;
+ grid-template-columns: 1fr;
+ grid-gap: 1px;
+ grid-template-areas:
+ "video-info"
+ "side-videos"
+ "comments-area-outer";
+ grid-area: sc-info;
+}
+.video-info {
+ grid-area: video-info;
+
+ display: grid;
+ grid-template-columns: 1fr 1fr;
+ grid-template-areas:
+ "v-title v-title"
+ "v-uploaded v-views"
+ "v-published v-likes-dislikes"
+ "external-player-controls v-checkbox"
+ "v-download v-download"
+ "v-description v-description"
+ "v-music-list v-music-list"
+ "v-more-info v-more-info";
+}
+.v-title {
+ grid-area: v-title;
+ margin: 0px;
+}
+.v-uploaded { grid-area: v-uploaded; }
+.v-views {
+ grid-area: v-views;
+ justify-self: end;
+}
+.v-published { grid-area: v-published; }
+.v-likes-dislikes {
+ grid-area: v-likes-dislikes;
+ justify-self: end;
+}
+.external-player-controls {
+ grid-area: external-player-controls;
+}
+.external-player-controls input.speed {
+ width: 65px;
+ text-align: center;
+}
+.v-checkbox {
+ grid-area: v-checkbox;
+ justify-self: end;
+}
+.v-download { grid-area: v-download; }
+.v-download > ul.download-dropdown-content {
+ background: var(--secondary-background);
+ padding-left: 0px;
+}
+.v-download > ul.download-dropdown-content > li.download-format {
+ list-style: none;
+ padding: 0.4rem 0;
+ padding-left: 1rem;
+}
+.v-download > ul.download-dropdown-content > li.download-format a.download-link {
+ text-decoration: none;
+}
+
+.v-description {
+ grid-area: v-description;
+ background-color: var(--secondary-background);
+ margin-top: 0.4rem;
+ white-space: pre-wrap;
+ word-wrap: break-word;
+ padding: 5px;
+}
+
+.v-music-list {
+ grid-area: v-music-list;
+ padding-bottom: 1rem;
+}
+.v-music-list table,th,td{
+ border: 1px solid;
+}
+.v-music-list th,td{
+ padding-left:4px;
+ padding-right:5px;
+}
+.v-music-list caption{
+ text-align:left;
+ font-weight:bold;
+ margin-bottom:5px;
+}
+
+.v-more-info {
+ grid-area: v-more-info;
+}
+.v-more-info > .more-info-content {
+ background-color: var(--secondary-background);
+ padding: 5px;
+}
+
+.side-videos { grid-area: side-videos; }
+
+/* playlist items */
+.side-videos .site-playlist {
+ border-style: solid;
+ border-width: 2px;
+ border-color: var(--secondary-focus);
+ margin-bottom: 1rem;
+}
+
+.side-videos .site-playlist .playlist-header {
+ background-color: var(--secondary-background);
+ padding: 1rem;
+ border-bottom-style: solid;
+ border-bottom-width: 2px;
+ border-bottom-color: var(--secondary-focus);
+}
+
+.side-videos .site-playlist .playlist-header h3 {
+ margin: 0px;
+ padding: 0px;
+}
+
+.side-videos .site-playlist .playlist-header .playlist-metadata {
+ list-style: none;
+ display: grid;
+ justify-content: start;
+ padding: 0;
+ margin: 0px;
+ grid-template-columns: repeat(3, auto);
+ grid-column-gap: 1rem;
+}
+
+.side-videos .site-playlist .playlist-videos {
+ display: grid;
+ grid-row-gap: 1rem;
+ height: 300px;
+ overflow-y: scroll;
+ padding-top: 1rem;
+}
+
+.side-videos .site-playlist .playlist-videos article.item-box {
+ padding-left: 1rem;
+}
+/* /playlist items */
+
+.comments-area-outer { grid-area: comments-area-outer; }
+
+.related-videos-inner {
+ padding-top: 10px;
+ display: grid;
+ grid-row-gap: 1rem;
+}
+
+.item-box {
+ display: grid;
+ grid-template-columns: 1.9fr 0.1fr;
+ grid-template-rows: 1fr;
+ grid-gap: 1px;
+ grid-template-areas:
+ "item-video item-checkbox";
+}
+
+.item-video {
+ grid-area: item-video;
+
+ display: grid;
+ grid-template-columns: auto;
+ grid-template-rows: repeat(4, auto);
+ grid-row-gap: 0.4rem;
+ grid-template-areas:
+ "thumbnail-box"
+ "info-box";
+ align-items: center;
+
+ font-size: 0.7rem;
+}
+
+.item-video a {
+ text-decoration: none;
+ cursor: pointer;
+}
+
+.thumbnail-box {
+ grid-area: thumbnail-box;
+ position: relative;
+}
+
+.thumbnail {
+ padding: 28.125%;
+ position: relative;
+ box-sizing: border-box;
+}
+
+.thumbnail-img {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ left: 0;
+ top: 0;
+ object-fit: cover;
+}
+
+.length {
+ z-index: 100;
+ position: absolute;
+ background-color: rgba(35, 35, 35, 0.75);
+ color: #fff;
+ border-radius: 2px;
+ padding: 2px;
+ font-size: 16px;
+ right: 0.25em;
+ bottom: -0.75em;
+}
+
+.info-box {
+ grid-area: info-box;
+ display: grid;
+ grid-template-columns: 1fr;
+ grid-template-rows: auto auto auto auto auto;
+ grid-gap: 1px;
+ grid-template-areas:
+ "."
+ "."
+ "."
+ "."
+ ".";
+}
+
+.title {
+ font-size: 0.8rem;
+ margin: 0px;
+ font-weight: normal;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+.info-box address {
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+.thumbnail-info {
+ background-color: var(--time-background);
+ color: #fff;
+ padding: 2px 5px;
+ text-transform: uppercase;
+ font-weight: 700;
+ font-size: 12px;
+ position: absolute;
+ right: 0;
+ bottom: .2rem;
+}
+
+.item-checkbox {
+ grid-area: item-checkbox;
+ justify-self: start;
+ align-self: center;
+ min-width: 30px;
+ margin: 0px;
+}
+
+.stats {
+ display: flex;
+ justify-content: space-between;
+}
+
+/* comments */
+.comments-area {
+ display: grid;
+ grid-row-gap: 0.5rem;
+}
+
+.comments {
+ display: grid;
+ grid-row-gap: 0.5rem;
+}
+
+.comment {
+ display: grid;
+ grid-template-columns: repeat(3, auto) 3fr;
+ grid-template-rows: repeat(4, auto);
+ grid-column-gap: 0.4rem;
+ grid-template-areas:
+ "author-avatar author-name permalink permalink"
+ "author-avatar comment-text comment-text comment-text"
+ ". comment-likes comment-likes comment-likes"
+ ". button-row button-row button-row";
+ background: var(--secondary-background);
+}
+
+.author-avatar { grid-area: author-avatar; }
+.author-name { grid-area: author-name; }
+.permalink { grid-area: permalink; }
+.comment-text { grid-area: comment-text; }
+.comment-likes { grid-area: comment-likes; }
+.button-row { grid-area: button-row; }
+
+.more-comments {
+ justify-self: center;
+ margin-top: 10px;
+ margin-bottom: 10px;
+ background: var(--secondary-background);
+ padding: 5px;
+
+ /* disable text selection */
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.footer {
+ grid-area: footer;
+}
+
+.footer > p {
+ text-align: center;
+}
+
+@media (min-width: 480px) {
+ .item-video {
+ font-size: 0.85rem;
+ }
+ .title {
+ font-size: 1rem;
+ }
+}
+
+@media (min-width: 992px) {
+ body {
+ display: grid;
+ grid-template-columns: 0.3fr 2fr 1fr 0.3fr;
+ grid-template-rows: auto 1fr auto;
+ grid-template-areas:
+ "header header header header"
+ ". main main ."
+ "footer footer footer footer";
+ }
+ .form {
+ display: grid;
+ grid-gap: 1px;
+ grid-template-columns: 1fr 1.4fr 0.3fr 1.3fr;
+ grid-template-areas: ". search-box search-button dropdown";
+ grid-area: form;
+ position: relative;
+ }
+ .dropdown {
+ display: grid;
+ grid-gap: 1px;
+ grid-template-columns: minmax(50px, 120px);
+ grid-template-areas:
+ "dropdown-label"
+ "dropdown-content";
+ grid-area: dropdown;
+
+ background: var(--background);
+ padding-right: 4rem;
+
+ z-index: 1;
+ position: absolute;
+ }
+ .playlist {
+ display: grid;
+ grid-gap: 1px;
+ grid-template-columns: 1fr 1.4fr 0.3fr 1.3fr;
+ grid-template-areas: ". play-box play-add play-clean";
+ grid-area: playlist;
+ }
+ .play-clean {
+ grid-template-columns: minmax(50px, 120px);
+ }
+ .play-clean > button {
+ padding-bottom: 6px;
+ padding-left: .75em;
+ padding-right: .75em;
+ padding-top: 6px;
+ text-align: center;
+ white-space: nowrap;
+ background-color: var(--buttom);
+ color: var(--buttom-text);
+ border-radius: 5px;
+ cursor: pointer;
+ }
+
+ .main {
+ grid-area: main;
+ margin: 0px;
+ }
+
+ .sc-info {
+ display: grid;
+ grid-template-columns: 3fr 1fr;
+ grid-gap: 1px 40px;
+ grid-template-areas:
+ "video-info side-videos"
+ "comments-area-outer side-videos"
+ ". side-videos";
+ grid-area: sc-info;
+ }
+}