@font-face {
  font-family: 'roboto-regular';
  src: url("/css/fonts/roboto-regular/roboto-regular.eot"); /* IE9 Compat Modes */
  src: url("/css/fonts/roboto-regular/roboto-regular.eot?#iefix") format("embedded-opentype"), url("/css/fonts/roboto-regular/roboto-regular.otf") format('opentype'), url("/css/fonts/roboto-regular/roboto-regular.svg") format('svg'), url("/css/fonts/roboto-regular/roboto-regular.ttf") format('truetype'), url("/css/fonts/roboto-regular/roboto-regular.woff") format('woff'), url("/css/fonts/roboto-regular/roboto-regular.woff2") format('woff2'); /* Modern Browsers */
  font-weight: normal;
  font-style: normal;
  font-display: swap;
}
[align] {
  display: flex;
}
[row-center] {
  justify-content: center;
  align-items: center;
}
[col] {
  flex-direction: column;
}
[col-center] {
  justify-content: center;
  align-items: center;
}
[row-top] {
  align-items: flex-start;
}
[row-bottom] {
  align-items: flex-end;
}
[row-left] {
  justify-content: flex-start;
}
[row-right] {
  justify-content: flex-end;
}
[col-top] {
  justify-content: flex-start;
}
[col-bottom] {
  justify-content: flex-end;
}
[col-left] {
  align-items: flex-start;
}
[col-right] {
  align-items: flex-end;
}
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  webkit-tap-highlight-color: transparent;
}
*:after,
*:before {
  box-sizing: border-box;
}
html {
  min-height: 100%;
}
body,
#page {
  min-height: 100vh;
  min-height: 100dvh;
}
#page {
  background-color: #202020;
  overflow: hidden;
}
input,
button,
textarea {
  outline: none;
}
a,
button,
input[type=button],
input[type=submit] {
  cursor: pointer;
}
button,
input[type=button],
input[type=submit] {
  border: none;
  -webkit-tap-highlight-color: transparent;
}
a {
  text-decoration: none;
}
input[type=number]::-webkit-inner-spin-button,
input[type=number]::-webkit-outer-spin-button {
  -webkit-appearance: none;
  margin: 0;
}
:root {
  --app-border: 1px solid rgba(128,128,128,0.3);
}
* {
  box-sizing: border-box;
}
.concord-page {
  width: 100vw;
  height: 100vh;
  background-color: #121214;
}
.concord-page .app {
  width: 100%;
  height: 100%;
  display: flex;
}
.concord-page .app .server-list {
  width: 72px;
  max-width: 72px;
  height: 100%;
  flex: 2;
  display: flex;
  flex-direction: column;
  align-items: center;
}
.concord-page .app .server-list .server,
.concord-page .app .server-list .add-server {
  width: 48px;
  height: 48px;
  display: flex;
  justify-content: center;
  align-items: center;
  border-radius: 6px;
  overflow: hidden;
  margin-top: 8px;
  cursor: pointer;
  background-color: rgba(255,255,255,0.1);
}
.concord-page .app .server-list .server > *,
.concord-page .app .server-list .add-server > * {
  pointer-events: none;
}
.concord-page .app .server-list .server[active=yes],
.concord-page .app .server-list .add-server[active=yes] {
  border: 1px solid #ff8c00;
}
.concord-page .app .server-list .server:hover,
.concord-page .app .server-list .add-server:hover {
  background-color: #ff8c00;
}
.concord-page .app .server-list .server .avatar,
.concord-page .app .server-list .add-server .avatar {
  width: 40px;
  height: 40px;
  border-radius: 6px;
  overflow: hidden;
}
.concord-page .app .server-list .server .avatar img,
.concord-page .app .server-list .add-server .avatar img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.concord-page .app .server-list .add-server .icon {
  display: flex;
  justify-content: center;
  align-items: center;
}
.concord-page .app .server-list .add-server .icon span {
  color: #fff;
}
.concord-page .app .side-bar {
  width: 305px;
  max-width: 305px;
  height: 100%;
  flex: 2;
  border-left: var(--app-border);
  padding: 0 8px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}
.concord-page .app .side-bar .top-container > .title {
  font-family: roboto-regular;
  font-size: 24px;
  color: #fff;
  padding: 16px 8px;
  border-bottom: var(--app-border);
}
.concord-page .app .side-bar .top-container .voice-channels {
  margin-top: 16px;
}
.concord-page .app .side-bar .top-container .voice-channels .title {
  font-family: roboto-regular;
  color: #808080;
  padding-left: 8px;
  font-size: 14px;
}
.concord-page .app .side-bar .top-container .voice-channels .list .voice-channel {
  font-family: roboto-regular;
  border-radius: 6px;
  margin-top: 8px;
  cursor: pointer;
}
.concord-page .app .side-bar .top-container .voice-channels .list .voice-channel > * {
  pointer-events: none;
}
.concord-page .app .side-bar .top-container .voice-channels .list .voice-channel:hover .title {
  background-color: rgba(128,128,128,0.1);
}
.concord-page .app .side-bar .top-container .voice-channels .list .voice-channel[active=yes] .title {
  background-color: rgba(128,128,128,0.3);
}
.concord-page .app .side-bar .top-container .voice-channels .list .voice-channel .title {
  display: flex;
  align-items: center;
  color: #fff;
  padding: 8px;
}
.concord-page .app .side-bar .top-container .voice-channels .list .voice-channel .title span {
  font-size: 20px;
}
.concord-page .app .side-bar .top-container .voice-channels .list .voice-channel .title div {
  margin-left: 8px;
}
.concord-page .app .side-bar .top-container .voice-channels .list .voice-channel .users {
  padding-left: 32px;
  margin-top: 2px;
}
.concord-page .app .side-bar .top-container .voice-channels .list .voice-channel .users .user {
  display: flex;
  align-items: center;
  margin-top: 6px;
}
.concord-page .app .side-bar .top-container .voice-channels .list .voice-channel .users .user .avatar {
  width: 24px;
  height: 24px;
  border-radius: 50%;
  overflow: hidden;
}
.concord-page .app .side-bar .top-container .voice-channels .list .voice-channel .users .user .avatar img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.concord-page .app .side-bar .top-container .voice-channels .list .voice-channel .users .user .username {
  color: #808080;
  margin-left: 8px;
}
.concord-page .app .side-bar .bottom-container {
  padding-bottom: 8px;
}
.concord-page .app .side-bar .bottom-container .user-bar {
  background-color: rgba(255,255,255,0.1);
  width: 100%;
  height: 80px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 8px;
  border-radius: 6px;
  overflow: hidden;
}
.concord-page .app .side-bar .bottom-container .user-bar .profile {
  display: flex;
  align-items: center;
}
.concord-page .app .side-bar .bottom-container .user-bar .profile .avatar {
  width: 60px;
  height: 60px;
  border-radius: 50%;
  overflow: hidden;
}
.concord-page .app .side-bar .bottom-container .user-bar .profile .avatar img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.concord-page .app .side-bar .bottom-container .user-bar .profile .data {
  margin-left: 8px;
}
.concord-page .app .side-bar .bottom-container .user-bar .profile .data .username {
  font-family: roboto-regular;
  color: #fff;
}
.concord-page .app .side-bar .bottom-container .user-bar .actions {
  display: flex;
  align-items: center;
}
.concord-page .app .side-bar .bottom-container .user-bar .actions .action {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  overflow: hidden;
  display: flex;
  justify-content: center;
  align-items: center;
  cursor: pointer;
  background-color: rgba(255,255,255,0.2);
  margin-left: 8px;
}
.concord-page .app .side-bar .bottom-container .user-bar .actions .action:hover {
  background-color: rgba(255,255,255,0.4);
}
.concord-page .app .side-bar .bottom-container .user-bar .actions .action:first-child {
  margin-left: 0;
}
.concord-page .app .side-bar .bottom-container .user-bar .actions .action[state=on] .off {
  display: none;
}
.concord-page .app .side-bar .bottom-container .user-bar .actions .action[state=off] .on {
  display: none;
}
.concord-page .app .side-bar .bottom-container .user-bar .actions .action > * {
  pointer-events: none;
}
.concord-page .app .side-bar .bottom-container .user-bar .actions .action .icon {
  width: 100%;
  height: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
}
.concord-page .app .side-bar .bottom-container .user-bar .actions .action .icon .material-symbols-outlined {
  color: #fff;
  font-size: 16px;
}
.concord-page .app .content {
  width: 100%;
  height: 100%;
  flex: 1;
  background-color: #1a1a1e;
  position: relative;
}
.concord-page .app .content .video-grid {
  width: 100%;
  height: 100%;
  padding: 40px;
}
.concord-page .app .content .video-grid .video-item {
  width: 100%;
  height: auto;
  aspect-ratio: 16/9;
  max-width: 730px;
}
.concord-page .app .content .video-grid .video-item video {
  width: 100%;
  height: 100%;
  object-fit: cover;
  background: url("https://wp2s3.s3.amazonaws.com/wp-content/uploads/2022/01/02060944/no-video-available.jpg");
  background-repeat: no-repeat;
  background-size: cover;
  background-position: center;
}
.concord-page .app .content .call-actions-container {
  position: absolute;
  bottom: 50px;
  border-radius: 6px;
  overflow: hidden;
  left: 50%;
  transform: translateX(-50%);
}
.concord-page .app .content .call-actions-container .call-actions {
  padding: 8px;
  background-color: #121214;
  align-items: center;
  display: none;
}
.concord-page .app .content .call-actions-container .call-actions[state=yes] {
  display: flex;
}
.concord-page .app .content .call-actions-container .call-actions .action {
  width: 50px;
  height: 50px;
  border-radius: 50%;
  overflow: hidden;
  display: flex;
  justify-content: center;
  align-items: center;
  cursor: pointer;
  background-color: rgba(255,255,255,0.2);
  margin-left: 8px;
}
.concord-page .app .content .call-actions-container .call-actions .action:hover {
  background-color: rgba(255,255,255,0.4);
}
.concord-page .app .content .call-actions-container .call-actions .action:first-child {
  margin-left: 0;
}
.concord-page .app .content .call-actions-container .call-actions .action[state=on] .off {
  display: none;
}
.concord-page .app .content .call-actions-container .call-actions .action[state=off] .on {
  display: none;
}
.concord-page .app .content .call-actions-container .call-actions .action > * {
  pointer-events: none;
}
.concord-page .app .content .call-actions-container .call-actions .action .icon {
  width: 100%;
  height: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
}
.concord-page .app .content .call-actions-container .call-actions .action .icon .material-symbols-outlined {
  color: #fff;
  font-size: 32px;
}
.concord-page .app .content .call-actions-container .call-actions .action.videocam .icon span {
  margin-right: -3px;
}
.concord-page .app .content .call-actions-container .call-actions .action.call-end {
  background-color: #8b0000;
}
.concord-page .app .content .call-actions-container .call-actions .action.call-end:hover {
  background-color: #f00;
}
.concord-page .auth-page {
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
}
.video-item.local {
  position: fixed;
  width: 30%;
  height: auto;
  right: 20px;
  bottom: 20px;
}
.video-item.local video {
  width: 100%;
  height: 100%;
  object-fit: contain;
  transform: scaleX(-1);
}
.video-item.remote {
  width: auto;
  height: 100%;
}
.video-item.remote > div {
  width: 100%;
  height: 100%;
}
.video-item.remote video {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}
.start-overlay {
  position: fixed;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  width: 100vw;
  width: 100dvw;
  height: 100vh;
  height: 100dvh;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
}
.start-overlay[show=yes] {
  display: flex;
}
.start-overlay[show=no] {
  display: none;
}
.start-overlay #start {
  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
  color: #fff;
  border: none;
  padding: 15px 30px;
  font-size: 18px;
  font-weight: 600;
  border-radius: 50px;
  cursor: pointer;
  box-shadow: 0 4px 15px rgba(102,126,234,0.4);
  transition: all 0.3s ease;
  position: relative;
  overflow: hidden;
}
.start-overlay #start[show=yes] {
  visibility: visible;
}
.start-overlay #start[show=no] {
  visibility: hidden;
  width: 0;
  height: 0;
  padding: 0;
}
.start-overlay #start:hover {
  transform: translateY(-2px);
  box-shadow: 0 6px 20px rgba(102,126,234,0.6);
}
.start-overlay #start:active {
  transform: translateY(0);
  box-shadow: 0 2px 10px rgba(102,126,234,0.4);
}
.start-overlay #start:before {
  content: "📞";
  margin-right: 8px;
  font-size: 20px;
}
.start-overlay #createChannel {
  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
  color: #fff;
  border: none;
  padding: 15px 30px;
  font-size: 18px;
  font-weight: 600;
  border-radius: 50px;
  cursor: pointer;
  box-shadow: 0 4px 15px rgba(102,126,234,0.4);
  position: relative;
  overflow: hidden;
}
.start-overlay #createChannel[show=yes] {
  visibility: visible;
}
.start-overlay #createChannel[show=no] {
  visibility: hidden;
  width: 0;
  height: 0;
  padding: 0;
}
.start-overlay #createChannel::before {
  content: "📡";
  margin-right: 8px;
  font-size: 20px;
}
.start-overlay #createChannel:hover {
  transform: translateY(-2px);
  box-shadow: 0 6px 20px rgba(102,126,234,0.6);
}
.start-overlay #createChannel:active {
  transform: translateY(0);
  box-shadow: 0 2px 10px rgba(102,126,234,0.4);
}
#share {
  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
  color: #fff;
  border: none;
  padding: 15px 30px;
  font-size: 18px;
  font-weight: 600;
  border-radius: 50px;
  cursor: pointer;
  box-shadow: 0 4px 15px rgba(102,126,234,0.4);
  position: absolute;
  overflow: hidden;
  left: 10%;
  bottom: 5%;
  z-index: 1;
}
#share:hover {
  transform: translateY(-2px);
  box-shadow: 0 6px 20px rgba(102,126,234,0.6);
}
#share:active {
  transform: translateY(0);
  box-shadow: 0 2px 10px rgba(102,126,234,0.4);
}
#share:before {
  content: "🔗";
  font-size: 20px;
}
#hangup {
  background: linear-gradient(135deg, #f43f5e 0%, #ec4899 100%);
  color: #fff;
  border: none;
  padding: 15px 30px;
  font-size: 18px;
  font-weight: 600;
  border-radius: 50px;
  cursor: pointer;
  box-shadow: 0 4px 15px rgba(244,63,94,0.4);
  overflow: hidden;
  position: absolute;
  left: 50%;
  bottom: 5%;
  transform: translateX(-50%);
}
#hangup:hover {
  box-shadow: 0 6px 20px rgba(244,63,94,0.6);
}
#hangup:active {
  box-shadow: 0 2px 10px rgba(244,63,94,0.4);
}
#hangup:before {
  content: "📞";
  font-size: 20px;
  transform: rotate(135deg);
  display: inline-block;
}
.start-overlay[show="yes"] ~ #share,
.start-overlay[show="yes"] ~ #hangup {
  visibility: hidden;
}
/* ============  общие сбросы  ============ */
[data-grid] {
  display: grid;
  place-items: center;
  gap: var(--gap, 10px);
  height: 100dvh;
  margin: 0;
}
/* ============  шаблоны сеток  ============ */
[data-grid="1"] {
  grid-template-areas: "a";
}
[data-grid="2"] {
  grid-template-areas: "a" "b";
}
[data-grid="4"] {
  grid-template-areas: "a b" "c d";
}
[data-grid="6"] {
  grid-template-areas: "a b" "c d" "e f";
}
/* ============  высота одной строки  ============ */
[data-grid="1"] {
  --rows: 1;
}
[data-grid="2"] {
  --rows: 2;
}
[data-grid="4"] {
  --rows: 2;
}
[data-grid="6"] {
  --rows: 3;
}
/* ============  области + высота для .remote  ============ */
[data-grid] .remote {
  height: calc(100dvh / var(--rows));
  width: 100%;
}
/* 1 участник */
[data-grid="1"] .remote:nth-of-type(1) {
  grid-area: a;
}
/* 2 участника */
[data-grid="2"] .remote:nth-of-type(1) {
  grid-area: a;
}
[data-grid="2"] .remote:nth-of-type(2) {
  grid-area: b;
}
/* 3–4 участника */
[data-grid="4"] .remote:nth-of-type(1) {
  grid-area: a;
}
[data-grid="4"] .remote:nth-of-type(2) {
  grid-area: b;
}
[data-grid="4"] .remote:nth-of-type(3) {
  grid-area: c;
}
[data-grid="4"] .remote:nth-of-type(4) {
  grid-area: d;
}
/* 5–6 участников */
[data-grid="6"] .remote:nth-of-type(1) {
  grid-area: a;
}
[data-grid="6"] .remote:nth-of-type(2) {
  grid-area: b;
}
[data-grid="6"] .remote:nth-of-type(3) {
  grid-area: c;
}
[data-grid="6"] .remote:nth-of-type(4) {
  grid-area: d;
}
[data-grid="6"] .remote:nth-of-type(5) {
  grid-area: e;
}
[data-grid="6"] .remote:nth-of-type(6) {
  grid-area: f;
}
