local_playlist.css 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539
  1. body {
  2. display: grid;
  3. grid-gap: 20px;
  4. grid-template-areas:
  5. "header"
  6. "main"
  7. "footer";
  8. /* Fix height */
  9. height: 100vh;
  10. grid-template-rows: auto 1fr auto;
  11. /* fix top and bottom */
  12. margin-left: 1rem;
  13. margin-right: 1rem;
  14. }
  15. img {
  16. width: 100%;
  17. height: auto;
  18. }
  19. a:link {
  20. color: var(--link);
  21. }
  22. a:visited {
  23. color: var(--link-visited);
  24. }
  25. input[type="text"],
  26. input[type="search"] {
  27. background: var(--background);
  28. border: 1px solid var(--button-border);
  29. padding: 0.4rem 0.4rem;
  30. font-size: 15px;
  31. color: var(--search-text);
  32. outline: none;
  33. box-shadow: none;
  34. }
  35. input[type='search'] {
  36. border-bottom: 1px solid var(--button-border);
  37. border-top: 0px;
  38. border-left: 0px;
  39. border-right: 0px;
  40. border-radius: 0px;
  41. }
  42. header {
  43. display: grid;
  44. grid-gap: 1px;
  45. grid-template-areas:
  46. "home"
  47. "form"
  48. "playlist";
  49. grid-area: header;
  50. }
  51. .home {
  52. grid-area: home;
  53. margin-left: auto;
  54. margin-right: auto;
  55. margin-bottom: 1rem;
  56. margin-top: 1rem;
  57. }
  58. .form {
  59. display: grid;
  60. grid-gap: 4px;
  61. grid-template-areas:
  62. "search-box"
  63. "search-button"
  64. "dropdown";
  65. grid-area: form;
  66. }
  67. .search-box {
  68. grid-area: search-box;
  69. }
  70. .search-button {
  71. grid-area: search-button;
  72. cursor: pointer;
  73. padding-bottom: 6px;
  74. padding-left: .75em;
  75. padding-right: .75em;
  76. padding-top: 6px;
  77. text-align: center;
  78. white-space: nowrap;
  79. background-color: var(--buttom);
  80. border: 1px solid var(--button-border);
  81. color: var(--buttom-text);
  82. border-radius: 5px;
  83. }
  84. .search-button:hover {
  85. background-color: var(--buttom-hover);
  86. }
  87. .dropdown {
  88. display: grid;
  89. grid-gap: 1px;
  90. grid-template-areas:
  91. "dropdown-label"
  92. "dropdown-content";
  93. grid-area: dropdown;
  94. }
  95. .dropdown-label {
  96. grid-area: dropdown-label;
  97. padding-bottom: 6px;
  98. padding-left: .75em;
  99. padding-right: .75em;
  100. padding-top: 6px;
  101. text-align: center;
  102. white-space: nowrap;
  103. background-color: var(--buttom);
  104. border: 1px solid var(--button-border);
  105. color: var(--buttom-text);
  106. border-radius: 5px;
  107. }
  108. .dropdown-label:hover {
  109. background-color: var(--buttom-hover);
  110. }
  111. /* playlist */
  112. .playlist {
  113. display: grid;
  114. grid-gap: 4px;
  115. grid-template-areas:
  116. "play-box"
  117. "play-hidden"
  118. "play-add"
  119. "play-clean";
  120. grid-area: playlist;
  121. }
  122. .play-box {
  123. grid-area: play-box;
  124. }
  125. .play-hidden {
  126. grid-area: play-hidden;
  127. }
  128. .play-add {
  129. grid-area: play-add;
  130. cursor: pointer;
  131. padding-bottom: 6px;
  132. padding-left: .75em;
  133. padding-right: .75em;
  134. padding-top: 6px;
  135. text-align: center;
  136. white-space: nowrap;
  137. background-color: var(--buttom);
  138. border: 1px solid var(--button-border);
  139. color: var(--buttom-text);
  140. border-radius: 5px;
  141. }
  142. .play-add:hover {
  143. background-color: var(--buttom-hover);
  144. }
  145. .play-clean {
  146. display: grid;
  147. grid-area: play-clean;
  148. }
  149. .play-clean > button {
  150. padding-bottom: 6px;
  151. padding-left: .75em;
  152. padding-right: .75em;
  153. padding-top: 6px;
  154. text-align: center;
  155. white-space: nowrap;
  156. background-color: var(--buttom);
  157. border: 1px solid var(--button-border);
  158. color: var(--buttom-text);
  159. border-radius: 5px;
  160. }
  161. .play-clean > button:hover {
  162. background-color: var(--buttom-hover);
  163. }
  164. /* /playlist */
  165. /* ------------- Menu Mobile sin JS ---------------- */
  166. /* input hidden */
  167. .opt-box {
  168. display: none;
  169. }
  170. .dropdown-content {
  171. display: none;
  172. grid-area: dropdown-content;
  173. }
  174. label[for=options-toggle-cbox] {
  175. cursor: pointer;
  176. -webkit-touch-callout: none;
  177. -webkit-user-select: none;
  178. -khtml-user-select: none;
  179. -moz-user-select: none;
  180. -ms-user-select: none;
  181. user-select: none;
  182. }
  183. #options-toggle-cbox:checked ~ .dropdown-content {
  184. display: block;
  185. white-space: nowrap;
  186. background: var(--secondary-background);
  187. padding: 0.5rem 1rem;
  188. }
  189. /*- ----------- End Menu Mobile sin JS ------------- */
  190. .main {
  191. grid-area: main;
  192. display: grid;
  193. grid-row-gap: 1rem;
  194. }
  195. /* fix hr when is children of grid */
  196. hr {
  197. width: 100%;
  198. }
  199. .playlist-metadata {
  200. display: grid;
  201. grid-template-columns: 1fr;
  202. margin: auto;
  203. grid-template-areas:
  204. "play-title"
  205. "play-action";
  206. }
  207. .play-title {
  208. grid-area: play-title;
  209. text-align: center;
  210. }
  211. .play-action {
  212. grid-area: play-action;
  213. }
  214. /* Video list item */
  215. .video-container {
  216. display: grid;
  217. grid-row-gap: 0.5rem;
  218. }
  219. .item-box {
  220. display: grid;
  221. grid-template-columns: 1.9fr 0.1fr;
  222. grid-template-rows: 1fr;
  223. grid-gap: 1px;
  224. grid-template-areas:
  225. "item-video item-checkbox";
  226. }
  227. .item-video {
  228. grid-area: item-video;
  229. display: grid;
  230. grid-template-columns: auto;
  231. grid-template-rows: repeat(4, auto);
  232. grid-row-gap: 0.4rem;
  233. grid-template-areas:
  234. "thumbnail-box"
  235. "info-box";
  236. align-items: center;
  237. font-size: 0.7rem;
  238. }
  239. .item-video a {
  240. text-decoration: none;
  241. cursor: pointer;
  242. }
  243. .thumbnail-box {
  244. grid-area: thumbnail-box;
  245. position: relative;
  246. }
  247. .thumbnail {
  248. padding: 28.125%;
  249. position: relative;
  250. box-sizing: border-box;
  251. }
  252. .thumbnail-img {
  253. position: absolute;
  254. width: 100%;
  255. height: 100%;
  256. left: 0;
  257. top: 0;
  258. object-fit: cover;
  259. background-color: var(--thumb-background);
  260. }
  261. .length {
  262. position: absolute;
  263. background-color: rgba(35, 35, 35, 0.75);
  264. color: #fff;
  265. border-radius: 2px;
  266. padding: 2px;
  267. font-size: 16px;
  268. right: 0.25em;
  269. bottom: -0.75em;
  270. }
  271. .playlist-item .thumbnail-info {
  272. position: absolute;
  273. right: 0px;
  274. bottom: 0px;
  275. height: 100%;
  276. width: 50%;
  277. text-align: center;
  278. white-space: pre-line;
  279. opacity: .8;
  280. color: var(--text);
  281. font-size: 0.8125rem;
  282. background: var(--secondary-background);
  283. padding: 0;
  284. }
  285. .playlist-item .thumbnail-info span {
  286. position: absolute;
  287. top: 50%;
  288. transform: translate(-50%, -50%);
  289. text-transform: none;
  290. }
  291. .info-box {
  292. grid-area: info-box;
  293. display: grid;
  294. grid-template-columns: 1fr;
  295. grid-template-rows: auto auto auto auto auto;
  296. grid-gap: 1px;
  297. grid-template-areas:
  298. "."
  299. "."
  300. "."
  301. "."
  302. ".";
  303. }
  304. .title {
  305. font-size: 0.8rem;
  306. margin: 0px;
  307. font-weight: normal;
  308. overflow: hidden;
  309. text-overflow: ellipsis;
  310. }
  311. .info-box address {
  312. white-space: nowrap;
  313. overflow: hidden;
  314. text-overflow: ellipsis;
  315. }
  316. .thumbnail-info {
  317. background-color: var(--time-background);
  318. color: #fff;
  319. padding: 2px 5px;
  320. text-transform: uppercase;
  321. font-weight: 700;
  322. font-size: 12px;
  323. position: absolute;
  324. right: 0;
  325. bottom: .2rem;
  326. }
  327. .item-checkbox {
  328. grid-area: item-checkbox;
  329. justify-self: start;
  330. align-self: center;
  331. min-width: 30px;
  332. margin: 0px;
  333. }
  334. .stats {
  335. display: flex;
  336. justify-content: space-between;
  337. }
  338. .horizontal-stats {
  339. white-space: nowrap;
  340. overflow: hidden;
  341. text-overflow: ellipsis;
  342. }
  343. .horizontal-stats > li {
  344. display: inline;
  345. }
  346. .horizontal-stats > li:first-child::after {
  347. content: " | ";
  348. }
  349. /* pagination */
  350. .main .pagination-container {
  351. display: grid;
  352. justify-content: center;
  353. }
  354. .main .pagination-container .pagination-list {
  355. display: flex;
  356. flex-direction: row;
  357. flex-wrap: wrap;
  358. justify-content: center;
  359. }
  360. .main .pagination-container .pagination-list .page-link {
  361. border-style: none;
  362. font-weight: bold;
  363. text-align: center;
  364. background: var(--secondary-focus);
  365. text-decoration: none;
  366. align-self: center;
  367. padding: .5rem;
  368. margin: 0.2rem;
  369. width: 1rem;
  370. }
  371. .main .pagination-container .pagination-list .page-link.is-current {
  372. background: var(--secondary-background);
  373. }
  374. /* /video list item */
  375. .footer {
  376. grid-area: footer;
  377. display: grid;
  378. grid-template-columns: auto;
  379. align-items: center;
  380. justify-content: center;
  381. margin: auto;
  382. text-align: center;
  383. }
  384. .footer > p {
  385. text-align: center;
  386. }
  387. @media (min-width: 480px) {
  388. .item-video {
  389. font-size: 0.85rem;
  390. }
  391. .info-box {
  392. grid-gap: 2px;
  393. }
  394. .title {
  395. font-size: 1rem;
  396. }
  397. }
  398. @media (min-width: 600px) {
  399. .video-container {
  400. display: grid;
  401. grid-row-gap: 0.5rem;
  402. grid-template-columns: 1fr 1fr;
  403. }
  404. }
  405. @media (min-width: 992px) {
  406. body {
  407. display: grid;
  408. grid-template-columns: 0.3fr 2fr 1fr 0.3fr;
  409. grid-template-rows: auto 1fr auto;
  410. grid-template-areas:
  411. "header header header header"
  412. "main main main main"
  413. "footer footer footer footer";
  414. }
  415. .form {
  416. display: grid;
  417. grid-gap: 1px;
  418. grid-template-columns: 1fr 1.4fr 0.3fr 1.3fr;
  419. grid-template-areas: ". search-box search-button dropdown";
  420. grid-area: form;
  421. position: relative;
  422. }
  423. .dropdown {
  424. display: grid;
  425. grid-gap: 1px;
  426. grid-template-columns: 100px auto;
  427. grid-template-areas:
  428. "dropdown-label"
  429. "dropdown-content";
  430. grid-area: dropdown;
  431. position: absolute;
  432. z-index: 1;
  433. }
  434. #options-toggle-cbox:checked ~ .dropdown-content {
  435. width: calc(100% + 100px);
  436. max-height: 80vh;
  437. overflow-y: scroll;
  438. }
  439. .playlist-metadata {
  440. max-width: 50vw;
  441. }
  442. /* playlist */
  443. .playlist {
  444. display: grid;
  445. grid-gap: 1px;
  446. grid-template-columns: 1fr 1.4fr 0.3fr 1.3fr;
  447. grid-template-areas: ". play-box play-add play-clean";
  448. grid-area: playlist;
  449. }
  450. .play-clean {
  451. grid-template-columns: 100px auto;
  452. }
  453. .play-clean > button {
  454. padding-left: 0px;
  455. padding-right: 0px;
  456. padding-bottom: 6px;
  457. padding-top: 6px;
  458. text-align: center;
  459. white-space: nowrap;
  460. background-color: var(--buttom);
  461. color: var(--buttom-text);
  462. border-radius: 5px;
  463. cursor: pointer;
  464. }
  465. .video-container {
  466. display: grid;
  467. grid-template-columns: repeat(4, 1fr);
  468. grid-row-gap: 1rem;
  469. grid-column-gap: 1rem;
  470. }
  471. .footer {
  472. display: grid;
  473. grid-template-columns: repeat(3, 1fr);
  474. grid-column-gap: 2rem;
  475. align-items: center;
  476. justify-content: center;
  477. text-align: center;
  478. margin-top: 1rem;
  479. margin-bottom: 1rem;
  480. }
  481. }