@import '../../../../../../src/assets/styles/design-tokens'; // Room Access Container - Main layout using design tokens .room-access-container { @include ov-container; @include ov-page-content; padding-top: var(--ov-meet-spacing-xxl); background: var(--ov-meet-background-color); gap: 0; } // Room Header - Clean title section .room-header { @include ov-flex-center; flex-direction: column; gap: var(--ov-meet-spacing-md); margin-bottom: var(--ov-meet-spacing-xxl); text-align: center; .room-icon { @include ov-icon(xl); color: var(--ov-meet-icon-rooms); margin-bottom: var(--ov-meet-spacing-sm); } .room-info { .room-title { margin: 0; font-size: var(--ov-meet-font-size-hero); font-weight: var(--ov-meet-font-weight-light); color: var(--ov-meet-text-primary); line-height: var(--ov-meet-line-height-tight); } } } // Action Cards Grid - Responsive layout .action-cards-grid { @include ov-grid-responsive(320px); gap: var(--ov-meet-spacing-xl); margin-bottom: var(--ov-meet-spacing-xxl); justify-content: center; // When there's only one card, limit its width to maintain visual consistency &:has(.action-card:only-child) { display: flex; justify-content: center; .action-card { max-width: 400px; width: 100%; } } @include ov-tablet-down { grid-template-columns: 1fr; gap: var(--ov-meet-spacing-lg); // On tablets and mobile, single cards should use full width &:has(.action-card:only-child) { .action-card { max-width: none; } } } } // Action Card Base - Consistent card styling .action-card { @include ov-card; @include ov-hover-lift(-4px); @include ov-theme-transition; padding: 0; overflow: hidden; min-height: 300px; display: flex; flex-direction: column; // Card Header .card-header { padding: var(--ov-meet-spacing-lg); border-bottom: 1px solid var(--ov-meet-border-color-light); display: flex; align-items: center; gap: var(--ov-meet-spacing-md); flex-shrink: 0; .card-icon { @include ov-icon(lg); flex-shrink: 0; } .card-title-group { flex: 1; .mat-mdc-card-title { margin: 0; font-size: var(--ov-meet-font-size-xl); font-weight: var(--ov-meet-font-weight-semibold); color: var(--ov-meet-text-primary); line-height: var(--ov-meet-line-height-tight); } .mat-mdc-card-subtitle { margin: var(--ov-meet-spacing-xs) 0 0 0; font-size: var(--ov-meet-font-size-sm); color: var(--ov-meet-text-secondary); line-height: var(--ov-meet-line-height-normal); } } } // Card Content .card-content { padding: var(--ov-meet-spacing-lg); flex: 1; display: flex; flex-direction: column; justify-content: space-between; } } // Primary Card - Join meeting styling .primary-card { .card-header { background: linear-gradient(135deg, var(--ov-meet-surface-color) 0%, var(--ov-meet-color-primary-light) 180%); color: var(--ov-meet-text-on-primary); } &.room-closed-card { .card-header { background: linear-gradient(135deg, var(--ov-meet-surface-color) 0%, var(--ov-meet-color-warning) 180%); .mat-icon { color: var(--ov-meet-color-warning) !important; } } } } .room-closed-message { @include ov-flex-center; flex-direction: column; gap: var(--ov-meet-spacing-md); text-align: center; .warning-icon { @include ov-icon(xl); color: var(--ov-meet-color-warning); } p { margin: 0; font-size: var(--ov-meet-font-size-md); color: var(--ov-meet-text-secondary); line-height: var(--ov-meet-line-height-relaxed); } } // Secondary Card - Recordings styling .secondary-card { .card-header { background: linear-gradient(135deg, var(--ov-meet-surface-color) 0%, var(--ov-meet-color-accent) 180%); } .card-content { text-align: center; } } // Join Form - Form styling .join-form { display: flex; flex-direction: column; gap: var(--ov-meet-spacing-lg); flex: 1; .name-field { width: 100%; .mat-mdc-form-field-icon-suffix { color: var(--ov-meet-text-hint); } } .join-button { @include ov-button-base; height: 56px; display: flex; align-items: center; justify-content: center; gap: var(--ov-meet-spacing-sm); margin-top: auto; background-color: var(--ov-meet-color-secondary); color: var(--ov-meet-text-on-secondary); } } // Recordings Info - Content for recordings card .recordings-info { flex: 1; display: flex; flex-direction: column; gap: var(--ov-meet-spacing-lg); .recordings-description { margin: 0; font-size: var(--ov-meet-font-size-md); color: var(--ov-meet-text-secondary); line-height: var(--ov-meet-line-height-relaxed); } } .recordings-button { @include ov-button-base; height: 56px; display: flex; align-items: center; justify-content: center; gap: var(--ov-meet-spacing-sm); margin-top: auto; } // Quick Actions - Footer actions .quick-actions { @include ov-flex-center; margin-top: var(--ov-meet-spacing-xl); .quick-action-button { display: flex; align-items: center; gap: var(--ov-meet-spacing-sm); color: var(--ov-meet-text-secondary); @include ov-theme-transition; &:hover { color: var(--ov-meet-text-primary); background-color: var(--ov-meet-surface-hover); } } } .share-meeting-link-container { padding: 10px; } .main-share-meeting-link-container { background-color: var(--ov-meet-surface-color); display: flex; align-items: center; justify-content: center; border-radius: var(--ov-meet-radius-md); } // Responsive adjustments @include ov-mobile-down { .room-access-container { padding: var(--ov-meet-spacing-lg); padding-top: var(--ov-meet-spacing-xl); } .room-header { margin-bottom: var(--ov-meet-spacing-xl); .room-info .room-title { font-size: var(--ov-meet-font-size-xxl); } } .action-card { min-height: auto; .card-header { padding: var(--ov-meet-spacing-md); .card-title-group { .mat-mdc-card-title { font-size: var(--ov-meet-font-size-lg); } } } .card-content { padding: var(--ov-meet-spacing-md); } } } // Custom leave button styling (existing functionality) ::ng-deep { #media-buttons-container .custom-leave-btn { &:hover { background-color: var(--ov-meet-color-error) !important; } text-align: center; background-color: var(--ov-meet-color-error) !important; color: var(--ov-meet-text-on-primary); border-radius: var(--ov-meet-radius-md) !important; width: 65px !important; margin: 0px !important; } } // Custom force disconnect button .force-disconnect-btn { color: var(--ov-meet-color-error); } .make-moderator-btn { color: var(--ov-meet-color-warning); } .participant-item-container { align-items: center; ::ng-deep .participant-container { padding: 2px 10px !important; } .moderator-badge { color: var(--ov-meet-color-warning); margin-right: var(--ov-meet-spacing-xs); } }