@charset "utf-8";html {line-height: 1.15;-webkit-text-size-adjust: 100%;}body {margin: 0;}main {display: block;}h1 {font-size: 2em;margin: 0.67em 0;}hr {box-sizing: content-box;height: 0;overflow: visible;}pre {font-family: monospace, monospace;font-size: 1em;}a {background-color: transparent;}abbr[title] {  border-bottom: none;text-decoration: underline;text-decoration: underline dotted;}b,strong,.strong {font-weight: 600;}code,kbd,samp {font-family: monospace, monospace;font-size: 1em;}small {font-size: 80%;}sub,sup {font-size: 75%;line-height: 0;position: relative;  vertical-align: baseline;}sub {bottom: -0.25em;}sup {top: -0.5em;}img {border-style: none;}button,input,optgroup,select,textarea {font-family: inherit;font-size: 100%;line-height: 1.15;margin: 0;}button,input {overflow: visible;}button,select {text-transform: none;}button,[type="button"],[type="reset"],[type="submit"] { -webkit-appearance: button;}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner {border-style: none;padding: 0;}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring {outline: 1px dotted ButtonText;}fieldset {padding: 0.35em 0.75em 0.625em;}legend {box-sizing: border-box;color: inherit;display: table;max-width: 100%;padding: 0;white-space: normal;}progress { vertical-align: baseline;}textarea {overflow: auto;}[type="checkbox"],[type="radio"] { box-sizing: border-box;padding: 0;}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button {height: auto;}[type="search"] {-webkit-appearance: textfield;outline-offset: -2px;}[type="search"]::-webkit-search-decoration {-webkit-appearance: none;}::-webkit-file-upload-button {-webkit-appearance: button;font: inherit;}details {  display: block;}summary {  display: list-item;}template {display: none;}[hidden] {display: none;}

:root{
	--Pad: 14px;
	--TopPad: 60px;
	--BtnH: 48px;
	--PanelBg: rgba(20,20,20,.55);
	--Text: #eaeaea;
}
* {
	-webkit-box-sizing: border-box;-moz-box-sizing: border-box;box-sizing:border-box;
}
html,body{
	height:100%;
	height:100vh;
	margin:0;
	background:#000;
	color:var(--Text);
	font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;
	font-size:14px;
	line-height:20px;
}
.logo{
	margin:0;
	display:flex;
	align-items:center;
	flex-direction:row;
	
}
.logo b {
	display: inline-block;
    width: 52px;
    height: 51px;
    background-image: url(../img/alena-icon-min-min.svg);
    background-position: top left;
    background-repeat: no-repeat;
    background-size: 52px 51px;
    text-indent: -500px;
    text-align: left;
	margin-right:15px;
	top: 5px;
    position: relative;
}
.logo + div{margin-top:10px;}
.logo + div,
.logo + div + div {	
	font-size:10px;
}
.logo .status,
.logo .Presence {	
    position: relative;
}

hr{
	margin: 40px 0 20px;
    border: none;
    height: 1px;
    background-color: rgba(255, 255, 255, .12);
}

button, [type="button"], [type="reset"], [type="submit"]{
	height: var(--BtnH);
    min-width: 46px;
    padding: 0 14px;
    border-radius: 16px;
    border: 1px solid rgba(255, 255, 255, .12);
    background: rgba(0, 0, 0, .35);
    color: var(--Text);
    font-weight: 600;
    cursor: pointer;
}
.BtnLogout{
	padding:0 7px;
	font-size:12px;
	margin-left:10px;
}
.logo span.status{
    font-size: 12px;
    line-height: 13px;	
}
.VideoStage{
	position:relative;
	width:100%;
	height:100vh;
	overflow:hidden;
	background-color:#000;
}
.Btn.videoBtn,
.Btn.audioBtn{
	position:relative;
}
.Btn.videoBtn::before,
.Btn.audioBtn::before{
	content:' ';
	display:inline-block;
	width:32px;
	height:32px;
	background-color:transparent;
	position:absolute;
	left: 10px;
    top: 7px;
}
.VideoStage.audio .VideoRemote{
	background-image: url(../icons/audio-min.svg);    
    background-size: 140px 140px;
    background-position: center center;
    background-repeat: no-repeat;
}
.Btn.audioBtn::before{
	background-image: url(../icons/audio-min.svg);    
    background-size: 32px 32px;
    background-position: center center;
    background-repeat: no-repeat;
}
.VideoStage.video .VideoRemote{
	background-image: url(../icons/video-min.svg);
    background-size: 140px 140px;
    background-position: center center;
    background-repeat: no-repeat;
}
.Btn.videoBtn::before{
	background-image: url(../icons/video-min.svg);    
    background-size: 32px 32px;
    background-position: center center;
    background-repeat: no-repeat;
}

.VideoRemote{
	position:absolute;
	inset:0;
	width:100%;
	height:100%;
	object-fit:cover;
	background-color:#000;
}

.VideoLocal{
	position:absolute;
	right:var(--Pad);
	bottom:calc(var(--Pad) + var(--BtnH) + 18px);
	width:min(34vw, 190px);
	aspect-ratio: 9/16;
	border-radius:16px;
	overflow:hidden;
	box-shadow: 0 10px 35px rgba(0,0,0,.45);
	background:#111;
	object-fit:cover;
	transform: scaleX(-1);
}

.VideoLocal.Hidden{ display:none; }

.VideoStage.Flipped .VideoLocal{
	inset:0;
	width:100%;
	height:100%;
	aspect-ratio:auto;
	border-radius:0;
	transform:none;
}

.VideoStage.Flipped .VideoRemote{
	right:var(--Pad);
	bottom:calc(var(--Pad) + var(--BtnH) + 18px);
	left:auto;
	top:auto;
	width:min(34vw, 190px);
	height:auto;
	aspect-ratio: 9/16;
	border-radius:16px;
	overflow:hidden;
	box-shadow: 0 10px 35px rgba(0,0,0,.45);
}

.TopInfo{
	position:absolute;
	left:var(--Pad);
	top:var(--TopPad);
	padding:10px 12px;
	border-radius:14px;
	background: var(--PanelBg);
	backdrop-filter: blur(10px);
	font-size:13px;
	opacity:.95;
	max-width: calc(100% - 2*var(--Pad));
	
	display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
    width: 100%;
}

.TopInfo .Small{ opacity:.75; }

.BottomBar{
	position:absolute;
	left:var(--Pad);
	right:var(--Pad);
	bottom:calc( 3 * var(--Pad) );
	display:flex;
	gap:10px;
	justify-content:center;
	align-items:center;
	padding:10px 12px;
	border-radius:18px;
	background: var(--PanelBg);
	backdrop-filter: blur(10px);
	flex-wrap:wrap;
}

.Btn{
	height:var(--BtnH);
	min-width: 46px;
	padding: 0 14px;
	border-radius: 16px;
	border: 1px solid rgba(255,255,255,.12);
	background: rgba(0,0,0,.35);
	color: var(--Text);
	font-weight: 600;
	cursor:pointer;
	font-size:14px;
}
a.Btn{
	display:inline-block;
	text-align:center;
	line-height:48px;
}

.Btn:hover{
	box-shadow: 0 0 8px rgb(34 181 95 / 56%);
}
.Btn:disabled{
	opacity:.45;
	cursor:not-allowed;
}

.Btn.Danger{
	background: rgba(220,40,40,.35);
	border-color: rgba(220,40,40,.35);
}

.Btn.Good{
	background: rgba(30,150,80,.30);
	border-color: rgb(39 255 129 / 53%);
}

.Btn.Tiny{
	min-width:46px;
	padding:0 10px;
}

.Debug{
	position:absolute;
	left:var(--Pad);
	right:var(--Pad);
	top:calc(var(--Pad) + 72px);
	max-height: 70vh;
	overflow:auto;
	padding:12px;
	border-radius:16px;
	background: rgba(10,10,10,.70);
	border: 1px solid rgba(255,255,255,.10);
	font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
	font-size: 12px;
	white-space: pre-wrap;
	display:none;
	z-index:999;
}

.Debug.Show{ display:block; }

.Toast{
	position: fixed;
	left: 50%;
	bottom: 86px;
	transform: translateX(-50%);
	padding: 10px 14px;
	border-radius: 14px;
	background: rgba(0,0,0,.75);
	border: 1px solid rgba(255,255,255,.12);
	color: #eaeaea;
	font-size: 13px;
	opacity: 0;
	pointer-events: none;
	transition: opacity .15s ease;
	z-index:99999;
}

.Toast.Show{
	opacity: 1;
}

.IsHidden{
	display:none !important;
}

.SideControls{
	position:absolute;
	left:var(--Pad);
	top: calc(var(--TopPad) + 120px);
	display:flex;
	flex-direction:column;
	gap:10px;
	z-index:5;
}

.CtrlBtn{
	width:46px;
	height:46px;
	border-radius:16px;
	border: 1px solid rgba(255,255,255,.14);
	background: rgba(0,0,0,.35);
	backdrop-filter: blur(10px);
	color: var(--Text);
	font-weight: 700;
	cursor:pointer;
	padding:0;
	font-size:12px;
}

.CtrlBtn:disabled{
	opacity:.45;
	cursor:not-allowed;
}

.CtrlBtn.BtnFlip{
	background-image: url(../icons/flip-min.svg);
    background-size: 22px auto;
    background-position: center center;
    background-repeat: no-repeat;
	text-indent:-5000px;
	overflow:hidden;
}
.CtrlBtn.BtnMic{
	background-image: url(../icons/mic-min.svg);
    background-size: 22px auto;
    background-position: center center;
    background-repeat: no-repeat;
	text-indent:-5000px;
	overflow:hidden;
}
.CtrlBtn.BtnCam{
	background-image: url(../icons/cam-min.svg);
    background-size: 27px auto;
    background-position: center center;
    background-repeat: no-repeat;
	text-indent:-5000px;
	overflow:hidden;
}
.CtrlBtn.BtnSwitchCam{
	background-image: url(../icons/flip-min.svg);
    background-size: 22px auto;
    background-position: center center;
    background-repeat: no-repeat;
	text-indent:-5000px;
	overflow:hidden;
}
.CtrlBtn.BtnAudioOut{
	background-image: url(../icons/sound-min.svg);
    background-size: 26px auto;
    background-position: center center;
    background-repeat: no-repeat;
	text-indent:-5000px;
	overflow:hidden;
}

.CtrlBtn.IsOff{
	border-color: rgba(255, 70, 70, .75);
	background-color: rgba(255, 70, 70, .12);
	box-shadow: 0 0 0 1px rgba(255, 70, 70, .22) inset;
}


.Modal{
	position:fixed;
	inset:0;
	z-index:50;
	overflow:auto;
	padding: var(--Pad);
}

.Modal__backdrop{
	position:absolute;
	inset:0;
	background: rgba(0,0,0,.55);
	backdrop-filter: blur(10px);	
}

.Modal__card{
	position:relative;
	margin: 18vh auto 0;
	width: min(92vw, 680px);
	border-radius: 18px;
	padding: 14px;
	background: rgba(20,20,20,.85);
	border: 1px solid rgba(255,255,255,.12);
	box-shadow: 0 28px 60px rgba(0,0,0,.55);
	
	margin: clamp(12px, 18vh, 160px) auto 12px;
	max-height: calc(100vh - (2 * var(--Pad)));	
	-webkit-overflow-scrolling: touch;   
	
}

.Modal__title{
	font-weight: 800;
	margin-bottom: 4px;
}

.Modal__hint{
	opacity:.75;
	font-size: 13px;
	margin-bottom: 10px;
}

.QrBox{
	background: #fff;
	border-radius: 14px;
	padding: 12px;
	display:flex;
	justify-content:center;
	align-items:center;
	min-height: 240px;
}
.QrBox img{
	max-width:100%;
}

.Modal__row{
	display:flex;
	gap:10px;
	margin-top: 12px;
	justify-content: space-between;
}


.ScanBox{
	width:min(86vw, 360px);
	border-radius:14px;
	overflow:hidden;
	background:#000;
	box-shadow: 0 10px 35px rgba(0,0,0,.45);
}

#ScanVideo{
	width:100%;
	aspect-ratio: 1/1;
	object-fit:cover;
	display:block;
	max-width:100%;
}


.Presence{
    display: flex;
    align-items: center;
    gap: 3px;
    margin: 0 0 0 10px;
    opacity: .95;
	background-color: #dcdcdc40;
    height: 30px;
    line-height: 30px;
    align-items: center;
    justify-content: flex-end;
    border-radius: 10px;
    padding: 10px 5px;
}
.Presence .Person{ width:18px; height:18px; display:inline-flex; top:0;}
.Presence .Person svg{ width:18px; height:18px; fill:currentColor; }
.Presence .Person.Off{ color:#9aa0a6; }
.Presence .Person.On{ color:#2ecc71; }
.Presence .Link{ width:22px; height:3px; border-radius:999px; background:#9aa0a6; opacity:.9; top: 0px;}
.Presence .Link.On{ background:#2ecc71; }


.Btn.Wide{ width:100%; }
.Modal__row{ align-items: stretch; }
.Modal__row .Btn{ flex:1; }


.Select{
	width:100%;
	height:44px;
	border-radius:14px;
	border:1px solid rgba(255,255,255,.12);
	background: rgba(0,0,0,.35);
	color: var(--Text);
	padding: 0 12px;
	font-size: 14px;
	outline:none;
}

.Select:disabled{
	opacity:.55;
}
.Input{
	flex:1;
	height:48px;
	padding:0 12px;
	border-radius:12px;
	border:1px solid rgba(255,255,255,.18);
	background: rgba(0,0,0,.22);
	color:#fff;
	outline:none;
	min-width: 0;
}
.Input::placeholder{
	color: rgba(255,255,255,.55);
}
.Input:focus{
	box-shadow: 0 0 0 3px rgba(34,181,95,.22);
}

.Modal__sep{
	margin: 10px 0;
	text-align:center;
	opacity:.65;
	font-size:12px;
}





.AdminWrap{
	padding: 18px;
	max-width: 980px;
	margin: 0 auto;
}
.AdminH1{
	margin: 14px 0 6px;
	font-size: 22px;
	line-height: 26px;
}
.AdminSub{
	opacity: .7;
	margin-bottom: 14px;
}
.AdminGrid{
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 12px;
}
@media (min-width: 900px){
	.AdminGrid{
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}
}
.AdminCard{
	border: 1px solid rgba(255,255,255,.12);
	background: rgba(0,0,0,.25);
	border-radius: 16px;
	padding: 12px;
}
.AdminCardWide{
	margin-top: 12px;
}
.AdminLabel{
	opacity: .7;
	font-size: 12px;
	margin-bottom: 8px;
}
.AdminValue{
	font-size: 24px;
	line-height: 28px;
	font-weight: 700;
}
.AdminMeta{
	opacity: .75;
	margin-top: 6px;
	font-size: 12px;
}
.AdminPre{
	margin: 10px 0 0;
	white-space: pre-wrap;
	word-break: break-word;
	background: rgba(0,0,0,.35);
	border-radius: 12px;
	padding: 12px;
	border: 1px solid rgba(255,255,255,.10);
}
