Files
Claper/assets/css/app.css
Alex Lion 5bd4793b6e Version 2.4.0
## ⚠️ Breaking changes

- S3 variables are now named: S3_ACCESS_KEY_ID, S3_SECRET_ACCESS_KEY, S3_REGION and S3_BUCKET
- Users now have roles. Refer to the `roles` table and assign a role to a user with the `role_id` column in the `users` table.

## Features

- Add Admin Panel to manage users and presentations
- Add user roles: user, admin
- Add `LANGUAGES` setting to configure available languages in the app
- Add hideable presenter attendee count (#183 #155)
- Add Hungarian translation (#161)
- Add Latvian translation (#163)
- Add custom S3 endpoint with `S3_SCHEME`, `S3_HOST`, `S3_PORT` and `S3_PUBLIC_URL`

## Fixes and improvements

- Upgrade JS dependencies
- Upgrade Elixir dependencies, including Phoenix Live View to 1.0.17
- Upgrade to Tailwind 4+
- Refactor view templates to use {} instead of <%= %>
- Fix event name validation to be required
- Docker image is now using Ubuntu instead of Alpine for better dependencies support
- Fix scrollbar not showing in event manager when no presentation file (#164) (@aryel780)
- Fix settings scroll for small screen (#168)
- Fix duplicate key quiz when duplicate (#182)
- Fix email change confirmation (#172)
- Fix italian translation (#179)
- Fix random poll choices (#184)
2025-12-26 14:46:16 +01:00

484 lines
14 KiB
CSS

@import 'air-datepicker/air-datepicker.css';
@import 'animate.css/animate.min.css';
@import 'tailwindcss';
@import './theme.css' layer(theme);
@plugin "daisyui" {
themes: light --default;
include: toggle;
}
@layer base {
*,
::after,
::before,
::backdrop,
::file-selector-button {
border-color: var(--color-gray-200, currentcolor);
}
}
* {
font-family: var(--font-family-sans);
}
[x-cloak] { display: none !important; }
/* Alerts and form errors used by phx.new */
.alert {
padding: 15px;
margin-bottom: 20px;
border: 1px solid transparent;
border-radius: 4px;
}
.alert-info {
color: var(--color-primary-700);
background-color: var(--color-primary-100);
border-color: var(--color-primary-200);
}
.alert-warning {
color: var(--color-supporting-yellow-700);
background-color: var(--color-supporting-yellow-50);
border-color: var(--color-supporting-yellow-100);
}
.alert-danger {
color: var(--color-supporting-red-700);
background-color: var(--color-supporting-red-100);
border-color: var(--color-supporting-red-200);
}
.alert p {
margin-bottom: 0;
}
.alert:empty {
display: none;
}
.invalid-feedback {
color: var(--color-supporting-red-700);
display: block;
margin-top: 2px;
}
/* LiveView specific classes for your customization */
.phx-no-feedback.invalid-feedback,
.phx-no-feedback .invalid-feedback {
display: none;
}
.phx-click-loading {
opacity: 0.5;
transition: opacity 1s ease-out;
}
.phx-disconnected{
cursor: wait;
}
.phx-disconnected *{
pointer-events: none;
}
.phx-modal {
opacity: 1!important;
position: fixed;
z-index: 1;
left: 0;
top: 0;
width: 100%;
height: 100%;
overflow: auto;
background-color: rgb(0,0,0);
background-color: rgba(0,0,0,0.4);
}
.phx-modal-content {
background-color: #fefefe;
margin: 15vh auto;
padding: 20px;
border: 1px solid var(--color-neutral-300);
width: 80%;
box-shadow: var(--shadow-lg);
}
.phx-modal-close {
color: var(--color-neutral-400);
float: right;
font-size: 28px;
font-weight: bold;
}
.phx-modal-close:hover,
.phx-modal-close:focus {
color: var(--color-neutral-900);
text-decoration: none;
cursor: pointer;
}
/**
Forms
**/
.input:focus~.label,
.input:active~.label,
.input.filled~.label {
font-size: 0.875rem;
transition-property: all;
transition-duration: 100ms;
top: -0.375rem;
color: var(--color-primary-500);
}
.input:focus~.icon,
.input:active~.icon,
.input.filled~.icon {
transition-property: all;
transition-duration: 100ms;
left: 0.75rem;
top: 1.5rem;
height: 1.25rem;
}
.date-placeholder-hidden::-webkit-datetime-edit {
display: none;
}
.date-placeholder-hidden::-webkit-inner-spin-button,
.date-placeholder-hidden::-webkit-calendar-picker-indicator {
display: none;
-webkit-appearance: none;
}
/**
Custom fonts
**/
/* roboto-100 - latin */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 100;
src: url('/fonts/Roboto/roboto-v29-latin-100.eot'); /* IE9 Compat Modes */
src: local(''),
url('/fonts/Roboto/roboto-v29-latin-100.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('/fonts/Roboto/roboto-v29-latin-100.woff2') format('woff2'), /* Super Modern Browsers */
url('/fonts/Roboto/roboto-v29-latin-100.woff') format('woff'), /* Modern Browsers */
url('/fonts/Roboto/roboto-v29-latin-100.ttf') format('truetype'), /* Safari, Android, iOS */
url('/fonts/Roboto/roboto-v29-latin-100.svg#Roboto') format('svg'); /* Legacy iOS */
}
/* roboto-100italic - latin */
@font-face {
font-family: 'Roboto';
font-style: italic;
font-weight: 100;
src: url('/fonts/Roboto/roboto-v29-latin-100italic.eot'); /* IE9 Compat Modes */
src: local(''),
url('/fonts/Roboto/roboto-v29-latin-100italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('/fonts/Roboto/roboto-v29-latin-100italic.woff2') format('woff2'), /* Super Modern Browsers */
url('/fonts/Roboto/roboto-v29-latin-100italic.woff') format('woff'), /* Modern Browsers */
url('/fonts/Roboto/roboto-v29-latin-100italic.ttf') format('truetype'), /* Safari, Android, iOS */
url('/fonts/Roboto/roboto-v29-latin-100italic.svg#Roboto') format('svg'); /* Legacy iOS */
}
/* roboto-300italic - latin */
@font-face {
font-family: 'Roboto';
font-style: italic;
font-weight: 300;
src: url('/fonts/Roboto/roboto-v29-latin-300italic.eot'); /* IE9 Compat Modes */
src: local(''),
url('/fonts/Roboto/roboto-v29-latin-300italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('/fonts/Roboto/roboto-v29-latin-300italic.woff2') format('woff2'), /* Super Modern Browsers */
url('/fonts/Roboto/roboto-v29-latin-300italic.woff') format('woff'), /* Modern Browsers */
url('/fonts/Roboto/roboto-v29-latin-300italic.ttf') format('truetype'), /* Safari, Android, iOS */
url('/fonts/Roboto/roboto-v29-latin-300italic.svg#Roboto') format('svg'); /* Legacy iOS */
}
/* roboto-300 - latin */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 300;
src: url('/fonts/Roboto/roboto-v29-latin-300.eot'); /* IE9 Compat Modes */
src: local(''),
url('/fonts/Roboto/roboto-v29-latin-300.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('/fonts/Roboto/roboto-v29-latin-300.woff2') format('woff2'), /* Super Modern Browsers */
url('/fonts/Roboto/roboto-v29-latin-300.woff') format('woff'), /* Modern Browsers */
url('/fonts/Roboto/roboto-v29-latin-300.ttf') format('truetype'), /* Safari, Android, iOS */
url('/fonts/Roboto/roboto-v29-latin-300.svg#Roboto') format('svg'); /* Legacy iOS */
}
/* roboto-regular - latin */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 400;
src: url('/fonts/Roboto/roboto-v29-latin-regular.eot'); /* IE9 Compat Modes */
src: local(''),
url('/fonts/Roboto/roboto-v29-latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('/fonts/Roboto/roboto-v29-latin-regular.woff2') format('woff2'), /* Super Modern Browsers */
url('/fonts/Roboto/roboto-v29-latin-regular.woff') format('woff'), /* Modern Browsers */
url('/fonts/Roboto/roboto-v29-latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */
url('/fonts/Roboto/roboto-v29-latin-regular.svg#Roboto') format('svg'); /* Legacy iOS */
}
/* roboto-italic - latin */
@font-face {
font-family: 'Roboto';
font-style: italic;
font-weight: 400;
src: url('/fonts/Roboto/roboto-v29-latin-italic.eot'); /* IE9 Compat Modes */
src: local(''),
url('/fonts/Roboto/roboto-v29-latin-italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('/fonts/Roboto/roboto-v29-latin-italic.woff2') format('woff2'), /* Super Modern Browsers */
url('/fonts/Roboto/roboto-v29-latin-italic.woff') format('woff'), /* Modern Browsers */
url('/fonts/Roboto/roboto-v29-latin-italic.ttf') format('truetype'), /* Safari, Android, iOS */
url('/fonts/Roboto/roboto-v29-latin-italic.svg#Roboto') format('svg'); /* Legacy iOS */
}
/* roboto-500 - latin */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 500;
src: url('/fonts/Roboto/roboto-v29-latin-500.eot'); /* IE9 Compat Modes */
src: local(''),
url('/fonts/Roboto/roboto-v29-latin-500.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('/fonts/Roboto/roboto-v29-latin-500.woff2') format('woff2'), /* Super Modern Browsers */
url('/fonts/Roboto/roboto-v29-latin-500.woff') format('woff'), /* Modern Browsers */
url('/fonts/Roboto/roboto-v29-latin-500.ttf') format('truetype'), /* Safari, Android, iOS */
url('/fonts/Roboto/roboto-v29-latin-500.svg#Roboto') format('svg'); /* Legacy iOS */
}
/* roboto-500italic - latin */
@font-face {
font-family: 'Roboto';
font-style: italic;
font-weight: 500;
src: url('/fonts/Roboto/roboto-v29-latin-500italic.eot'); /* IE9 Compat Modes */
src: local(''),
url('/fonts/Roboto/roboto-v29-latin-500italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('/fonts/Roboto/roboto-v29-latin-500italic.woff2') format('woff2'), /* Super Modern Browsers */
url('/fonts/Roboto/roboto-v29-latin-500italic.woff') format('woff'), /* Modern Browsers */
url('/fonts/Roboto/roboto-v29-latin-500italic.ttf') format('truetype'), /* Safari, Android, iOS */
url('/fonts/Roboto/roboto-v29-latin-500italic.svg#Roboto') format('svg'); /* Legacy iOS */
}
/* roboto-700 - latin */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 700;
src: url('/fonts/Roboto/roboto-v29-latin-700.eot'); /* IE9 Compat Modes */
src: local(''),
url('/fonts/Roboto/roboto-v29-latin-700.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('/fonts/Roboto/roboto-v29-latin-700.woff2') format('woff2'), /* Super Modern Browsers */
url('/fonts/Roboto/roboto-v29-latin-700.woff') format('woff'), /* Modern Browsers */
url('/fonts/Roboto/roboto-v29-latin-700.ttf') format('truetype'), /* Safari, Android, iOS */
url('/fonts/Roboto/roboto-v29-latin-700.svg#Roboto') format('svg'); /* Legacy iOS */
}
/* roboto-700italic - latin */
@font-face {
font-family: 'Roboto';
font-style: italic;
font-weight: 700;
src: url('/fonts/Roboto/roboto-v29-latin-700italic.eot'); /* IE9 Compat Modes */
src: local(''),
url('/fonts/Roboto/roboto-v29-latin-700italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('/fonts/Roboto/roboto-v29-latin-700italic.woff2') format('woff2'), /* Super Modern Browsers */
url('/fonts/Roboto/roboto-v29-latin-700italic.woff') format('woff'), /* Modern Browsers */
url('/fonts/Roboto/roboto-v29-latin-700italic.ttf') format('truetype'), /* Safari, Android, iOS */
url('/fonts/Roboto/roboto-v29-latin-700italic.svg#Roboto') format('svg'); /* Legacy iOS */
}
/* roboto-900 - latin */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 900;
src: url('/fonts/Roboto/roboto-v29-latin-900.eot'); /* IE9 Compat Modes */
src: local(''),
url('/fonts/Roboto/roboto-v29-latin-900.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('/fonts/Roboto/roboto-v29-latin-900.woff2') format('woff2'), /* Super Modern Browsers */
url('/fonts/Roboto/roboto-v29-latin-900.woff') format('woff'), /* Modern Browsers */
url('/fonts/Roboto/roboto-v29-latin-900.ttf') format('truetype'), /* Safari, Android, iOS */
url('/fonts/Roboto/roboto-v29-latin-900.svg#Roboto') format('svg'); /* Legacy iOS */
}
/* roboto-900italic - latin */
@font-face {
font-family: 'Roboto';
font-style: italic;
font-weight: 900;
src: url('/fonts/Roboto/roboto-v29-latin-900italic.eot'); /* IE9 Compat Modes */
src: local(''),
url('/fonts/Roboto/roboto-v29-latin-900italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('/fonts/Roboto/roboto-v29-latin-900italic.woff2') format('woff2'), /* Super Modern Browsers */
url('/fonts/Roboto/roboto-v29-latin-900italic.woff') format('woff'), /* Modern Browsers */
url('/fonts/Roboto/roboto-v29-latin-900italic.ttf') format('truetype'), /* Safari, Android, iOS */
url('/fonts/Roboto/roboto-v29-latin-900italic.svg#Roboto') format('svg'); /* Legacy iOS */
}
@font-face {
font-family: 'Montserrat';
font-style: normal;
font-weight: 100 300 400 500 700 900;
src: url('/fonts/Montserrat/Montserrat-VariableFont_wght.ttf');
}
@font-face {
font-family: 'Montserrat';
font-style: italic;
font-weight: 100 300 400 500 700 900;
src: url('/fonts/Montserrat/Montserrat-Italic-VariableFont_wght.ttf');
}
.bg-gradient-animate {
background: linear-gradient(-45deg, var(--color-secondary-500), var(--color-secondary-600), var(--color-primary-400), var(--color-primary-400));
background-size: 400% 400%;
animation: gradient 15s ease infinite;
}
@keyframes gradient {
0% {
background-position: 0% 50%;
}
50% {
background-position: 100% 50%;
}
100% {
background-position: 0% 50%;
}
}
.arrow_box {
position: relative;
background: #fff;
border: 2px solid var(--color-neutral-100);
}
.arrow_box.arrow_right:after, .arrow_box.arrow_right:before {
left: 100%;
top: 50%;
border: solid transparent;
content: "";
height: 0;
width: 0;
position: absolute;
pointer-events: none;
}
.arrow_box.arrow_right:after {
border-color: rgba(255, 255, 255, 0);
border-left-color: #fff;
border-width: 15px;
margin-top: -15px;
}
.arrow_box.arrow_right:before {
border-color: rgba(225, 225, 225, 0);
border-left-color: #e1e1e1;
border-width: 18px;
margin-top: -18px;
}
.arrow_box.arrow_left:after, .arrow_box.arrow_left:before {
right: 100%;
top: 50%;
border: solid transparent;
content: "";
height: 0;
width: 0;
position: absolute;
pointer-events: none;
}
.arrow_box.arrow_left:after {
border-color: rgba(255, 255, 255, 0);
border-right-color: #fff;
border-width: 15px;
margin-top: -15px;
}
.arrow_box.arrow_left:before {
border-color: rgba(225, 225, 225, 0);
border-right-color: #e1e1e1;
border-width: 18px;
margin-top: -18px;
}
:root {
--animate-duration: 0.3s;
}
/* Presenter fix for Safari */
@media not all and (min-resolution:.001dpcm)
{ @supports (-webkit-appearance:none) and (stroke-color:transparent) {
#post-list.showed {
@apply w-4/12;
}
}}
.react-animation {
opacity: 0;
}
.react-animation:nth-child(odd) {
animation: react 2s linear;
}
.react-animation:nth-child(even) {
animation: react2 2s linear;
}
@keyframes react {
0% {
transform: translateY(0%);
opacity: 0;
}
20% {
transform: translateY(-70%);
opacity: 1;
}
100% {
transform: translateY(-300%);
opacity: 0;
}
}
@keyframes react2 {
0% {
transform: translateY(0%);
opacity: 0;
}
40% {
transform: translateY(-70%);
opacity: 1;
}
100% {
transform: translateY(-500%);
opacity: 0;
}
}
.strikethrough {
position: relative;
}
.strikethrough:before {
position: absolute;
content: "";
left: 0;
top: 50%;
right: 0;
border-top: var(--color-supporting-red-600) 3px solid;
-webkit-transform:rotate(-20deg);
-moz-transform:rotate(-20deg);
-ms-transform:rotate(-20deg);
-o-transform:rotate(-20deg);
transform:rotate(-20deg);
}
/* Air datepicker */
.air-datepicker-body--day-name {
color: var(--color-primary-600);
}
.air-datepicker-cell.-selected-, .air-datepicker-cell.-selected-.-current- {
background-color: var(--color-primary-500);
color: var(--color-white);
}
.air-datepicker-cell.-current- {
color: var(--color-secondary-500);
}
.animate__slow_slow {
--animate-duration: 5s;
}