Files
ladill-meet/resources/css/app.css
T
isaaccladandCursor 1037cd6ee6
Deploy Ladill Meet / deploy (push) Successful in 37s
Add conference stage layouts for plenary and panel discussions.
Speakers get a full-screen spotlight with overlapping audience avatars; hosts can configure panels in the green room and switch layouts live.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-01 21:03:02 +00:00

572 lines
13 KiB
CSS

@import 'tailwindcss';
@plugin '@tailwindcss/forms';
@source '../../vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php';
@source '../../storage/framework/views/*.php';
@source '../**/*.blade.php';
@source '../**/*.js';
@theme {
--font-sans: 'Figtree', ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji',
'Segoe UI Symbol', 'Noto Color Emoji';
}
[x-cloak] {
display: none !important;
}
/* App shell: always light (ignore OS dark mode). Live meeting keeps dark UI. */
html.app-shell {
color-scheme: light;
}
html.app-shell :is(input, select, textarea) {
color-scheme: light;
}
html.meet-room-page {
color-scheme: dark;
}
.meet-room-page .meet-toolbar-icon {
filter: brightness(0) invert(1);
opacity: 0.92;
}
.meet-room-page .meet-chat-bubble {
max-width: 85%;
}
.meet-room-page .meet-chat-bubble--own {
margin-left: auto;
}
.meet-room-page .meet-tile-speaking {
box-shadow: 0 0 0 2px rgb(52 211 153 / 0.9);
}
.meet-room-page #meet-stage:not(.meet-stage) #meet-stage-spotlight,
.meet-room-page #meet-stage:not(.meet-stage) #meet-audience-strip {
display: none;
}
.meet-room-page .meet-stage {
height: 100%;
}
.meet-room-page .meet-stage--plenary #video-grid {
display: none;
}
.meet-room-page .meet-stage--plenary .meet-stage-spotlight {
flex: 1 1 auto;
min-height: min(70vh, 100%);
}
.meet-room-page .meet-stage--plenary .meet-stage-spotlight-tile {
height: 100%;
width: 100%;
aspect-ratio: auto;
}
.meet-room-page .meet-stage--panel #meet-stage-spotlight,
.meet-room-page .meet-stage--panel #meet-audience-strip {
display: none;
}
.meet-room-page .meet-stage-panel-grid {
display: grid;
height: 100%;
grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr));
grid-auto-rows: minmax(0, 1fr);
align-content: center;
}
.meet-room-page .meet-stage-panel-tile {
height: 100%;
min-height: 12rem;
}
.meet-room-page .meet-audience-strip {
display: flex;
align-items: center;
min-height: 2.75rem;
padding: 0.25rem 0;
}
.meet-room-page .meet-audience-avatar {
position: relative;
display: flex;
height: 2.25rem;
width: 2.25rem;
flex-shrink: 0;
align-items: center;
justify-content: center;
margin-left: -0.45rem;
overflow: hidden;
border-radius: 9999px;
border: 2px solid rgb(15 23 42);
background: rgb(30 41 59);
}
.meet-room-page .meet-audience-avatar:first-child {
margin-left: 0;
}
.meet-room-page .meet-audience-avatar__image {
height: 100%;
width: 100%;
object-fit: cover;
}
.meet-room-page .meet-audience-avatar__initials {
display: flex;
height: 100%;
width: 100%;
align-items: center;
justify-content: center;
font-size: 0.65rem;
font-weight: 600;
color: white;
}
.meet-room-page .meet-audience-avatar--more {
z-index: 0;
width: auto;
min-width: 2.25rem;
padding: 0 0.5rem;
font-size: 0.65rem;
font-weight: 600;
color: rgb(203 213 225);
white-space: nowrap;
}
.meet-room-page .meet-audio-grid {
place-content: center;
place-items: center;
grid-template-columns: repeat(auto-fill, minmax(7rem, 9rem));
gap: 1rem;
}
.meet-room-page .meet-audio-tile [data-tile-avatar-circle] {
height: 4.5rem;
width: 4.5rem;
font-size: 1.25rem;
}
.meet-room-page .meet-speaking-bar {
transform-origin: center bottom;
animation: meet-speaking-pulse 0.9s ease-in-out infinite;
}
.meet-room-page .meet-speaking-bar--1 {
animation-delay: 0s;
}
.meet-room-page .meet-speaking-bar--2 {
animation-delay: 0.15s;
}
.meet-room-page .meet-speaking-bar--3 {
animation-delay: 0.3s;
}
@keyframes meet-speaking-pulse {
0%,
100% {
transform: scaleY(0.45);
opacity: 0.65;
}
50% {
transform: scaleY(1);
opacity: 1;
}
}
/* Meeting room footer */
@media (max-width: 639px) {
.meet-room-page .meet-toolbar__track {
display: flex;
align-items: center;
justify-content: space-between;
gap: 0.75rem;
padding-inline: 1rem;
padding-bottom: max(0.25rem, env(safe-area-inset-bottom, 0px));
}
.meet-room-page .meet-toolbar__primary {
display: flex;
min-width: 0;
flex: 1;
align-items: center;
gap: 0.5rem;
}
.meet-room-page .meet-toolbar__divider {
width: 1px;
height: 2rem;
flex-shrink: 0;
background-color: rgb(51 65 85);
}
.meet-room-page .meet-toolbar__actions {
display: flex;
flex-shrink: 0;
align-items: center;
gap: 0.5rem;
}
}
@media (min-width: 640px) {
.meet-room-page .meet-toolbar__track {
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: center;
gap: 0.75rem;
}
}
/* Meeting room chat / participants: bottom sheet on mobile, sidebar on desktop */
.meet-room-page .meet-room-panel {
position: fixed;
inset: 0;
z-index: 50;
display: flex;
flex-direction: column;
justify-content: flex-end;
}
.meet-room-page .meet-room-panel__backdrop {
position: absolute;
inset: 0;
background-color: rgb(2 6 23 / 0.72);
backdrop-filter: blur(4px);
}
.meet-room-page .meet-room-panel__sheet {
position: relative;
z-index: 1;
display: flex;
width: 100%;
max-height: min(85vh, 100%);
flex-direction: column;
border-radius: 1.5rem 1.5rem 0 0;
background-color: rgb(2 6 23);
padding: 0 0.75rem max(0.75rem, env(safe-area-inset-bottom, 0px));
}
.meet-room-page .meet-room-panel__handle {
display: flex;
justify-content: center;
padding: 0.75rem 0 0.25rem;
}
.meet-room-page .meet-room-panel__handle span {
display: block;
height: 0.25rem;
width: 2.5rem;
border-radius: 9999px;
background-color: rgb(51 65 85);
}
.meet-room-page .meet-room-panel__header {
display: flex;
flex-shrink: 0;
align-items: flex-start;
justify-content: space-between;
gap: 0.75rem;
padding: 0 0.25rem 0.75rem;
}
.meet-room-page .meet-room-panel__body {
display: flex;
min-height: 0;
flex: 1;
flex-direction: column;
overflow: hidden;
border-radius: 1rem;
background-color: rgb(15 23 42 / 0.9);
padding: 0.75rem;
}
@media (min-width: 640px) {
.meet-room-page .meet-room-panel {
position: relative;
inset: auto;
z-index: auto;
display: flex;
height: 100%;
width: 20rem;
flex-shrink: 0;
justify-content: flex-start;
}
.meet-room-page .meet-room-panel__backdrop,
.meet-room-page .meet-room-panel__handle {
display: none;
}
.meet-room-page .meet-room-panel__sheet {
display: flex;
height: 100%;
max-height: none;
flex: 1;
flex-direction: column;
border-radius: 0;
padding: 0.75rem;
}
.meet-room-page .meet-room-panel__body {
border-radius: 1rem;
}
}
/* QR create/show: flush mobile action bar to the physical screen bottom (mobile only) */
@media (max-width: 1023px) {
.mobile-action-bar {
position: fixed;
inset-inline: 0;
bottom: 0;
z-index: 50;
display: flex;
flex-direction: column;
background-color: #fff;
}
.mobile-action-bar__toolbar {
display: flex;
height: 4rem;
flex-shrink: 0;
align-items: center;
gap: 0.75rem;
border-top: 1px solid rgb(226 232 240);
background-color: #fff;
padding-inline: 1rem;
}
.mobile-action-bar__inset-fill {
flex-shrink: 0;
width: 100%;
background-color: #fff;
height: env(safe-area-inset-bottom, 0px);
min-height: max(env(safe-area-inset-bottom, 0px), 20px);
}
}
/* Extra white bleed behind the bar for any remaining viewport gap on mobile */
.qr-mobile-bottom-bleed {
position: fixed;
inset-inline: 0;
bottom: 0;
z-index: 48;
pointer-events: none;
background-color: #fff;
height: calc(4rem + env(safe-area-inset-bottom, 0px) + 24px);
min-height: calc(4rem + 24px);
}
html.qr-mobile-page {
background-color: #fff;
}
html.qr-mobile-page body {
background-color: #fff;
}
/* Payment QR landing: lock scroll and keep the amount sheet flush to the screen bottom */
@media (max-width: 767px) {
html.mini-payment-page,
html.mini-payment-page body {
overflow: hidden;
width: 100%;
height: 100%;
}
html.mini-payment-page body {
position: fixed;
inset: 0;
}
.mini-payment-sheet {
position: fixed;
inset-inline: 0;
bottom: 0;
z-index: 20;
}
.mini-payment-bottom-bleed {
position: fixed;
inset-inline: 0;
bottom: 0;
z-index: 19;
pointer-events: none;
background-color: #fff;
height: calc(12rem + env(safe-area-inset-bottom, 0px));
min-height: 8rem;
}
}
.mobile-stats-card {
width: calc(66.666667% - 0.5rem);
}
@layer components {
.btn-primary {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 0.5rem;
border-radius: 9999px;
background-image: linear-gradient(to right, rgb(79 70 229), rgb(124 58 237));
padding: 0.5rem 1rem;
font-size: 0.875rem;
line-height: 1.25rem;
font-weight: 600;
color: #fff;
box-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);
transition: filter 0.15s ease;
}
.btn-primary:hover {
filter: brightness(0.92);
}
.btn-primary:disabled {
opacity: 0.6;
pointer-events: none;
}
.btn-primary-sm {
padding: 0.375rem 0.75rem;
font-size: 0.75rem;
line-height: 1rem;
}
.btn-primary-lg {
padding: 0.625rem 1.25rem;
}
.btn-secondary {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 0.5rem;
border-radius: 9999px;
border: 1px solid rgb(226 232 240);
background-color: #fff;
padding: 0.5rem 1rem;
font-size: 0.875rem;
line-height: 1.25rem;
font-weight: 600;
color: rgb(51 65 85);
box-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);
transition: background-color 0.15s ease, border-color 0.15s ease;
}
.btn-secondary:hover {
background-color: rgb(248 250 252);
border-color: rgb(203 213 225);
}
.btn-secondary:disabled {
opacity: 0.6;
pointer-events: none;
}
.btn-secondary-sm {
padding: 0.375rem 0.75rem;
font-size: 0.75rem;
line-height: 1rem;
}
.btn-group {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 0.5rem;
}
.btn-fab {
display: inline-flex;
height: 2.75rem;
width: 2.75rem;
align-items: center;
justify-content: center;
border-radius: 9999px;
background-image: linear-gradient(to right, rgb(79 70 229), rgb(124 58 237));
color: #fff;
box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1);
transition: filter 0.15s ease;
}
.btn-fab:hover {
filter: brightness(0.92);
}
}
@media (min-width: 640px) {
.mobile-stats-card {
width: auto;
}
}
/* Ladill app launcher — cap at 5 rows (15 apps), always-visible scroll indicator */
.ladill-launcher-apps-wrap {
position: relative;
}
.ladill-launcher-apps {
max-height: calc(5 * 5.25rem + 4 * 0.25rem);
overflow-y: scroll;
overscroll-behavior: contain;
scrollbar-gutter: stable;
scrollbar-width: thin;
scrollbar-color: rgb(148 163 184) rgb(241 245 249);
margin-right: -0.25rem;
padding-right: 0.25rem;
}
.ladill-launcher-apps::-webkit-scrollbar {
-webkit-appearance: none;
width: 8px;
}
.ladill-launcher-apps::-webkit-scrollbar-track {
background: rgb(241 245 249);
border-radius: 9999px;
}
.ladill-launcher-apps::-webkit-scrollbar-thumb {
background-color: rgb(148 163 184);
border-radius: 9999px;
min-height: 2.5rem;
border: 2px solid rgb(241 245 249);
background-clip: padding-box;
}
.ladill-launcher-apps::-webkit-scrollbar-thumb:hover {
background-color: rgb(100 116 139);
}
.ladill-launcher-scroll-more {
position: absolute;
left: 50%;
bottom: 0.125rem;
z-index: 1;
display: flex;
height: 1.25rem;
width: 1.25rem;
-webkit-transform: translateX(-50%);
transform: translateX(-50%);
align-items: center;
justify-content: center;
border-radius: 9999px;
background: rgb(255 255 255);
color: rgb(100 116 139);
box-shadow: 0 1px 2px rgb(15 23 42 / 0.08);
pointer-events: none;
}