/*-------------------------------------------------------------- # Video grid --------------------------------------------------------------*/ #videoMediaContainer { z-index: 1; position: absolute; display: flex; top: 0; width: 100%; height: 100%; border-radius: 5px; opacity: 1; align-content: center; flex-wrap: wrap; align-items: center; justify-content: center; vertical-align: middle; overflow: hidden; transition: opacity 500ms; /* border: 3px solid blue; */ } #videoPinMediaContainer { z-index: 1; position: absolute; display: none; top: 0; left: 0; width: 75%; height: 100%; border-radius: 5px; box-shadow: var(--box-shadow); overflow: hidden; /* animation: show 0.4s ease; */ /* border: 3px solid lime; */ } .Camera { position: relative; vertical-align: middle; align-self: center; overflow: hidden; display: inline-block; background: transparent; border-radius: 10px; /* border: var(--border); */ box-shadow: var(--box-shadow); animation: show 0.4s ease; } /* .Camera:hover { border: 3px solid rgb(113, 157, 239); } */ .Camera .fa-hand-paper { margin: 10px !important; font-size: 1.5rem !important; } #videoMediaContainer i { position: absolute; display: none; top: 0; color: rgb(0, 255, 71); font-size: 14px; align-items: center; padding: 5px; margin: 5px; width: auto; height: 25px; border-radius: 5px; background: rgba(0, 0, 0, 0.4); } .videoAvatarImage { z-index: 1; position: absolute; display: none; width: var(--vmi-wh); height: var(--vmi-wh); border-radius: 50%; transition: box-shadow 0.3s ease; } .audio { position: absolute; right: 0; color: #fff; margin: 5px; width: auto; height: 25px; border-radius: 5px; background: rgba(0, 0, 0, 0.1); } .username { z-index: 1; position: absolute; right: 0; bottom: 0; color: #fff; font-size: 10px; display: flex; align-items: center; padding: 10px; margin: 10px; width: auto; height: 25px; border-radius: 5px; background: var(--body-bg); } .fscreen { position: absolute; right: 0; bottom: 0px; color: #fff; margin: 5px; width: auto; height: 25px; border-radius: 5px; background: rgba(0, 0, 0, 0.1); } /* Video Menu Bar */ .videoMenuBar { z-index: 2; position: absolute; /* inside video feed by default */ top: 0; left: 0; width: 100%; display: flex; align-items: center; flex-direction: row-reverse; /* invert buttons order visually */ justify-content: flex-start; /* with row-reverse, this packs to the right */ flex-wrap: nowrap; gap: clamp(2px, 1vw, 8px); padding: clamp(4px, 1.2vw, 8px); backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); border-top-left-radius: 10px; border-top-right-radius: 10px; background: var(--body-bg); /* box-shadow: var(--box-shadow); */ cursor: default; overflow-x: auto; overflow-y: hidden; scrollbar-width: none; /* Firefox */ white-space: nowrap; -webkit-overflow-scrolling: touch; } /* Mobile floating menubar when appended to body */ .videoMenuBar.mobile-floating { z-index: 2; position: fixed; top: env(safe-area-inset-top, 0px); left: 0; right: 0; width: 100vw; border-radius: 0 0 10px 10px; } .videoAvatarMenuBar, .videoMenuBarShare { z-index: 2; position: absolute; display: flex; flex-direction: row-reverse; align-items: center; gap: 1px; top: 0; left: 0; padding: 10px; background: rgba(0, 0, 0, 0.2); font-size: small; font-weight: bold; text-align: center; width: 100%; cursor: default; overflow: hidden; } .videoMenuBar input, .videoMenuBar button, .videoAvatarMenuBar button, .videoMenuBarShare button { font-size: clamp(0.9rem, 1.1vw, 1.05rem); float: right; color: #fff; background: transparent; border-radius: 5px; display: inline; border: none; } .videoMenuBar button:hover, .videoAvatarMenuBar button:hover, .videoMenuBarShare button:hover { color: grey; transition: all 0.3s ease-in-out; } /* Touch-friendly sizing for buttons within menu bar */ .videoMenuBar button { min-width: 32px; min-height: 32px; flex: 0 0 auto; } .fa-bars { color: #66beff !important; } .expand-video .dropdown-button { cursor: pointer; position: relative; } .expand-video-content { z-index: 5; display: none; position: absolute; width: 100%; height: 100%; padding: 14px; border-radius: 5px; background: var(--body-bg); box-shadow: var(--box-shadow); overflow: auto; } .expand-video-content.show { z-index: 5; display: grid !important; grid-gap: 5px 5px; grid-template-columns: 1fr 1fr; grid-template-areas: 'header header' 'controls controls'; align-content: start; justify-items: start; overflow: auto; } .peer-name-container { display: row; width: 100%; height: 100%; padding: 10px; margin: 10px; } .expand-video-content .peer-name-header { grid-area: header; width: 100%; padding: 10px; height: 100px; background: var(--btns-bg-color); background-size: cover; background-position: center; background-repeat: no-repeat; border-radius: 10px; margin-bottom: 10px; display: flex; align-items: center; justify-content: center; } .expand-video-content .peer-name { font-size: 12px; font-weight: bold; color: #fff; background: var(--body-bg); border-radius: 10px; padding: 6px; width: 100%; } .expand-video-content input[type='range'] { display: inline !important; width: 100%; margin: 16px 0; background: rgba(255, 255, 255, 0.1); height: 6px; } /* Button Group Container */ .expand-video-content .button-group { display: flex !important; gap: 8px; flex-wrap: nowrap; width: 100%; } /* Individual Buttons */ .expand-video-content .button-group button { text-align: center; padding: 0 10px; font-size: 15px; color: #fff; background: var(--btns-bg-color); min-width: 42px; min-height: 42px; justify-content: center; align-items: center; display: inline-flex; /* center icon + label */ gap: 6px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; border-radius: 10px; border: none; cursor: pointer; transition: background 0.2s ease, transform 0.1s ease; } /* Icon alignment inside buttons */ .expand-video-content .button-group button i { line-height: 1; pointer-events: none; /* avoid accidental icon-only clicks interference */ } /* Hover & Active Effects */ .expand-video-content .button-group button:hover { background: var(--body-bg); transform: scale(1.05); } .expand-video-content .button-group button:active { transform: scale(0.95); } @media (max-width: 600px) { .expand-video-content .button-group { gap: 6px; flex-wrap: wrap; /* allow wrapping on small screens */ justify-content: center; } .expand-video-content .button-group button { font-size: 14px; min-width: 44px; /* accessible tap target */ min-height: 44px; padding: 0 8px; border-radius: 8px; } } .expand-video-content button:hover { color: white; background: var(--body-bg); } #videoMediaContainer video { position: absolute; margin-left: auto; margin-right: auto; } /* Keep peer name header on the left, controls on the right */ .videoMenuBar .peer-name-header { order: 9999; /* with row-reverse, last = leftmost */ padding: 0; background: transparent; height: auto; } .videoMenuBar .peer-name-header .peer-name-container { margin: 0; padding: 0; } .videoMenuBar .peer-name-header .peer-name { background: transparent; padding: 0; font-size: 0.95rem; } .videoCircle { position: absolute; width: var(--vmi-wh); height: var(--vmi-wh); border-radius: 50%; /* center */ top: 0; left: 0; right: 0; bottom: 0; margin: auto; transition: box-shadow 0.3s ease; } .videoDefault { position: absolute; width: 100%; height: 100%; border-radius: '10px'; transition: box-shadow 0.3s ease; } video { width: 100%; height: 100%; object-fit: var(--videoObjFit); border-radius: 10px; cursor: pointer; transition: transform 0.3s ease-in-out; } #canvasAIElement { width: 100%; height: 100%; object-fit: var(--videoObjFit); border-radius: 10px; cursor: pointer; } video:hover { filter: contrast(105%); } video:fullscreen { object-fit: contain; } .mirror { -webkit-transform: rotateY(180deg); -moz-transform: rotateY(180deg); transform: rotateY(180deg); } .blur { -webkit-filter: blur(5px); -moz-filter: blur(5px); -o-filter: blur(5px); -ms-filter: blur(5px); filter: blur(5px); } input[type='range'] { /* display: none; */ color: #fff; width: 50px; cursor: pointer; } @keyframes show { 0% { opacity: 0; transform: scale(0.4) translateY(20px); } 100% { opacity: 1; transform: scale(1) translateY(0); } } @media (max-width: 800px) { .videoMenuBar { gap: 6px; padding: 8px; } .videoMenuBar button, .videoAvatarMenuBar button, .videoMenuBarShare button { font-size: 1rem; } .expand-video-content { right: 6px; left: 6px; width: auto; max-width: none; } } @media (max-width: 480px) { /* Switch to a responsive grid for tighter screens */ .expand-video-content .button-group { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(56px, 1fr)); gap: 6px; justify-items: center; } .expand-video-content .button-group button { min-width: unset; /* let grid control width */ width: 100%; min-height: 44px; padding: 8px; font-size: 0.95rem; } .videoMenuBar { gap: 4px; padding: 6px; } .videoMenuBar button, .videoAvatarMenuBar button, .videoMenuBarShare button { font-size: 0.95rem; min-width: 40px; /* compact tap target */ min-height: 40px; } .videoMenuBar input[type='range'] { width: clamp(60px, 30vw, 140px); } } @media (max-width: 360px) { .expand-video-content .button-group { grid-template-columns: repeat(3, 1fr); gap: 5px; } .expand-video-content .button-group button { min-height: 40px; padding: 6px; font-size: 0.9rem; border-radius: 8px; } .videoMenuBar { gap: 4px; padding: 6px; } .videoMenuBar button, .videoAvatarMenuBar button, .videoMenuBarShare button { font-size: 0.95rem; min-width: 40px; min-height: 40px; } .expand-video-content { top: 6px; right: 6px; left: 6px; padding: 12px; } }