Agent tests, TTS and STT settings, further fixes and developments
This commit is contained in:
parent
03b1995771
commit
94d002657a
|
|
@ -63,6 +63,9 @@
|
||||||
<Content Update="wwwroot\default.css">
|
<Content Update="wwwroot\default.css">
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
|
<Content Update="wwwroot\scripts\SeemGenCss.js">
|
||||||
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
|
</Content>
|
||||||
<Content Update="wwwroot\uploads\0988758e-e16c-4c2c-8c1e-efa3ac5f0274\images\10262403.jpg">
|
<Content Update="wwwroot\uploads\0988758e-e16c-4c2c-8c1e-efa3ac5f0274\images\10262403.jpg">
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,33 @@
|
||||||
|
@page "/agent"
|
||||||
|
@using System.Text.Json
|
||||||
|
@using System.Text
|
||||||
|
@inject HttpClient Http
|
||||||
|
@inject IJSRuntime JS
|
||||||
|
@inject IConfiguration _configuration
|
||||||
|
|
||||||
|
|
||||||
|
<div class="page" style="z-index: 1">
|
||||||
|
<NavMenu MenuString="@Menu" OnMenuClicked=@MenuClick></NavMenu>
|
||||||
|
<main>
|
||||||
|
|
||||||
|
<article class="content container text-center" style="position: relative; z-index: 4;">
|
||||||
|
<PageTitle>Home</PageTitle>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<iframe src="https://1drv.ms/w/c/525ec919106d1685/IQQRglCci9kyTqKi4VfB4NKZAYuZhmmFK9Wg73EyvkwcSY8" width="100%" height="900px" frameborder="0" scrolling="no"></iframe>
|
||||||
|
|
||||||
|
<elevenlabs-convai agent-id="agent_01jvyq2vw7ecz8w9zhm95v4zyj"></elevenlabs-convai>
|
||||||
|
|
||||||
|
<script src="https://elevenlabs.io/convai-widget/index.js" async type="text/javascript"></script>
|
||||||
|
</article>
|
||||||
|
</main>
|
||||||
|
</div>
|
||||||
|
@code {
|
||||||
|
private string Menu = "Tanulás, Gyakorlás, Tesztelés, Vizsgázás";
|
||||||
|
|
||||||
|
public async void MenuClick(string menuName)
|
||||||
|
{
|
||||||
|
//await CallCSharpMethod2(menuName, sessionId, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,102 @@
|
||||||
|
@page "/kids"
|
||||||
|
@using BLAIzor.Services
|
||||||
|
@inject IJSRuntime JS
|
||||||
|
@inject OpenAIApiService openAiApiService
|
||||||
|
|
||||||
|
<elevenlabs-convai agent-id="agent_01jw0srrwcet1sbxgajbkrmmxc"
|
||||||
|
dynamic-variables='{"user_name": "Beni", "user_likes": "kocsik, Super Mario, dinoszauruszok"}'>
|
||||||
|
</elevenlabs-convai>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.illustration {
|
||||||
|
max-width: 80vw;
|
||||||
|
border-radius: 20px;
|
||||||
|
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2);
|
||||||
|
font-size: 0.9rem;
|
||||||
|
white-space: nowrap;
|
||||||
|
z-index: 1000;
|
||||||
|
animation: float 6s ease-in-out infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
function initTools() {
|
||||||
|
const widget = document.querySelector('elevenlabs-convai');
|
||||||
|
console.log("🎙️ Widget element:", widget);
|
||||||
|
if (widget) {
|
||||||
|
widget.addEventListener('elevenlabs-convai:call', (event) => {
|
||||||
|
event.detail.config.clientTools = {
|
||||||
|
displayIllustration: async ({ illustrationPrompt }) => {
|
||||||
|
console.log("🖼️ Calling Blazor with:", illustrationPrompt);
|
||||||
|
await DotNet.invokeMethodAsync('BLAIzor', 'OnNewIllustrationPrompt', illustrationPrompt);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script src="https://elevenlabs.io/convai-widget/index.js" async type="text/javascript"></script>
|
||||||
|
|
||||||
|
<div class="page" style="height: 100vh; background-image: url('images/kids_bg.png'); background-attachment: fixed; background-size: cover; background-position: center">
|
||||||
|
<NavMenu MenuString="@Menu" OnMenuClicked=@MenuClick></NavMenu>
|
||||||
|
<main>
|
||||||
|
<article class="content container text-center" style="position: relative; z-index: 4;">
|
||||||
|
<PageTitle>Kids</PageTitle>
|
||||||
|
|
||||||
|
@if (ImageUrl is not null)
|
||||||
|
{
|
||||||
|
<div class="mt-5">
|
||||||
|
<img class="illustration" src="@ImageUrl"/>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
@if (IsLoading)
|
||||||
|
{
|
||||||
|
<p>🎨 Kép készül... kis türelmet kérek!</p>
|
||||||
|
}
|
||||||
|
</article>
|
||||||
|
</main>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@code {
|
||||||
|
private string Menu = "Tanulás, Gyakorlás, Tesztelés, Vizsgázás";
|
||||||
|
|
||||||
|
private string? ImageUrl;
|
||||||
|
private bool IsLoading = false;
|
||||||
|
|
||||||
|
protected override void OnInitialized()
|
||||||
|
{
|
||||||
|
// Hook the static bridge to this instance
|
||||||
|
IllustrationBridge.OnPromptReceived = async (prompt) =>
|
||||||
|
{
|
||||||
|
await GenerateImageFromPrompt(prompt);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task GenerateImageFromPrompt(string prompt)
|
||||||
|
{
|
||||||
|
Console.WriteLine($"[Component] Generating image for: {prompt}");
|
||||||
|
IsLoading = true;
|
||||||
|
ImageUrl = null;
|
||||||
|
StateHasChanged();
|
||||||
|
|
||||||
|
ImageUrl = await openAiApiService.GenerateImageAsync(prompt + ", watercolor, amazing colors");
|
||||||
|
|
||||||
|
IsLoading = false;
|
||||||
|
StateHasChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void MenuClick(string menuName)
|
||||||
|
{
|
||||||
|
// Optional: handle menu actions
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void OnAfterRender(bool firstRender)
|
||||||
|
{
|
||||||
|
if (firstRender)
|
||||||
|
{
|
||||||
|
JS.InvokeVoidAsync("initTools");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -5,6 +5,7 @@
|
||||||
@using Google.Cloud.Speech.V1
|
@using Google.Cloud.Speech.V1
|
||||||
@using Microsoft.AspNetCore.Identity.UI.Services
|
@using Microsoft.AspNetCore.Identity.UI.Services
|
||||||
@using System.Text
|
@using System.Text
|
||||||
|
@using System.Net
|
||||||
@using System.Text.Json
|
@using System.Text.Json
|
||||||
@using Sidio.Sitemap.Blazor
|
@using Sidio.Sitemap.Blazor
|
||||||
@inject AIService ChatGptService
|
@inject AIService ChatGptService
|
||||||
|
|
@ -20,6 +21,7 @@
|
||||||
@inject DesignTemplateService DesignTemplateService
|
@inject DesignTemplateService DesignTemplateService
|
||||||
@inject CssTemplateService CssTemplateService
|
@inject CssTemplateService CssTemplateService
|
||||||
@inject CssInjectorService CssService
|
@inject CssInjectorService CssService
|
||||||
|
@inject HttpClient Http
|
||||||
@attribute [Sitemap]
|
@attribute [Sitemap]
|
||||||
|
|
||||||
<div class="page" style="z-index: 1">
|
<div class="page" style="z-index: 1">
|
||||||
|
|
@ -35,7 +37,7 @@
|
||||||
|
|
||||||
</HeadContent> *@
|
</HeadContent> *@
|
||||||
|
|
||||||
<div id="maincontrol">
|
<div id="maincontrol" >
|
||||||
|
|
||||||
|
|
||||||
@* <div class="hoverslide"> *@
|
@* <div class="hoverslide"> *@
|
||||||
|
|
@ -45,15 +47,28 @@
|
||||||
|
|
||||||
<input @oninput="(e) => UserInput = e.Value.ToString()"
|
<input @oninput="(e) => UserInput = e.Value.ToString()"
|
||||||
@onkeydown="@Enter" class="searchInput" type="text" name="" value="@UserInput" placeholder="Ask any question">
|
@onkeydown="@Enter" class="searchInput" type="text" name="" value="@UserInput" placeholder="Ask any question">
|
||||||
<button class="searchButton border-0" @onclick="SendUserQuery" href="#">
|
<button data-hint="ask anything" class="searchButton border-0" @onclick="SendUserQuery" href="#">
|
||||||
<i class="fa-solid fa-magnifying-glass"></i>
|
<i class="fa-solid fa-hexagon-nodes-bolt" style="font-size:20px"></i>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@{
|
||||||
|
@if(VoiceEnabled)
|
||||||
|
{
|
||||||
|
if(STTEnabled)
|
||||||
|
{
|
||||||
<button id="recButton" class="btn btn-primary voicebutton" onclick="startRecording()"><i class="fa-solid fa-microphone"></i></button>
|
<button id="recButton" class="btn btn-primary voicebutton" onclick="startRecording()"><i class="fa-solid fa-microphone"></i></button>
|
||||||
|
|
||||||
<button id="stopButton" class="btn btn-primary voicebutton" onclick="stopRecording()" hidden><i class="fa-solid fa-microphone-slash"></i></button>
|
<button id="stopButton" class="btn btn-primary voicebutton" onclick="stopRecording()" hidden><i class="fa-solid fa-microphone-slash"></i></button>
|
||||||
|
}
|
||||||
|
|
||||||
|
if(TTSEnabled)
|
||||||
|
{
|
||||||
|
<button class="btn btn-primary voicebutton" @onclick="MuteAI"><i class="fa-solid fa-volume-high"></i></button>
|
||||||
|
<audio id="audioPlayer" hidden style="display: none;"></audio>
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
@ -120,57 +135,6 @@
|
||||||
.catch(error => console.error(error));
|
.catch(error => console.error(error));
|
||||||
}
|
}
|
||||||
|
|
||||||
var mediaRecorder;
|
|
||||||
var audioChunks = [];
|
|
||||||
var recButton = document.getElementById("recButton");
|
|
||||||
var stopButton = document.getElementById("stopButton");
|
|
||||||
var recText = document.getElementById("recordingText");
|
|
||||||
|
|
||||||
navigator.permissions.query({name: 'microphone'}).then(function (result) {
|
|
||||||
if (result.state == 'granted') {
|
|
||||||
} else if (result.state == 'prompt') {
|
|
||||||
} else if (result.state == 'denied') {
|
|
||||||
}
|
|
||||||
result.onchange = function () {};
|
|
||||||
});
|
|
||||||
|
|
||||||
async function startRecording() {
|
|
||||||
if (recButton) {
|
|
||||||
recButton.hidden = true;
|
|
||||||
stopButton.hidden = false;
|
|
||||||
recText.textContent = "recording...";
|
|
||||||
}
|
|
||||||
const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
|
|
||||||
mediaRecorder = new MediaRecorder(stream);
|
|
||||||
|
|
||||||
mediaRecorder.ondataavailable = event => audioChunks.push(event.data);
|
|
||||||
mediaRecorder.onstop = () => {
|
|
||||||
const audioBlob = new Blob(audioChunks, { type: 'audio/wav' });
|
|
||||||
audioChunks = [];
|
|
||||||
console.log("media stopped");
|
|
||||||
const reader = new FileReader();
|
|
||||||
reader.onload = () => {
|
|
||||||
const base64Audio = reader.result.split(',')[1];
|
|
||||||
DotNet.invokeMethodAsync('BLAIzor', 'ProcessAudio2', base64Audio, sessionId);
|
|
||||||
};
|
|
||||||
reader.readAsDataURL(audioBlob);
|
|
||||||
};
|
|
||||||
|
|
||||||
mediaRecorder.start();
|
|
||||||
}
|
|
||||||
|
|
||||||
function stopRecording() {
|
|
||||||
mediaRecorder.stop();
|
|
||||||
var recButton = document.getElementById("recButton");
|
|
||||||
var stopButton = document.getElementById("stopButton");
|
|
||||||
var recText = document.getElementById("recordingText");
|
|
||||||
mediaRecorder.stream.getTracks().forEach(track => track.stop()); // Free memory
|
|
||||||
if (stopButton) {
|
|
||||||
stopButton.hidden = true;
|
|
||||||
recButton.hidden = false;
|
|
||||||
recText.textContent = "";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
</script>
|
||||||
<script>
|
<script>
|
||||||
function openCalendar(calendlyUserName) {
|
function openCalendar(calendlyUserName) {
|
||||||
|
|
@ -190,14 +154,13 @@
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@code {
|
@code {
|
||||||
public static Index myHome;
|
public static Index myHome;
|
||||||
private string? Subdomain;
|
private string? Subdomain;
|
||||||
public int SiteId;
|
public int SiteId;
|
||||||
public SiteInfo SiteInfo;
|
public SiteInfo SiteInfo;
|
||||||
private StringBuilder HtmlContent = new StringBuilder("");
|
private StringBuilder HtmlContent = new StringBuilder("");
|
||||||
|
private string TextContent = "";
|
||||||
private string StatusContent = "";
|
private string StatusContent = "";
|
||||||
private string UserInput = string.Empty;
|
private string UserInput = string.Empty;
|
||||||
private string ChatGptResponse = string.Empty;
|
private string ChatGptResponse = string.Empty;
|
||||||
|
|
@ -216,13 +179,78 @@
|
||||||
private string sessionId;
|
private string sessionId;
|
||||||
private static readonly Dictionary<string, Index> _instances = new();
|
private static readonly Dictionary<string, Index> _instances = new();
|
||||||
private string Menu;
|
private string Menu;
|
||||||
|
private bool VoiceEnabled;
|
||||||
|
private bool TTSEnabled;
|
||||||
|
private bool STTEnabled;
|
||||||
|
private bool _initVoicePending = false;
|
||||||
|
private bool welcomeStage = true;
|
||||||
|
|
||||||
|
|
||||||
|
private string GetApiKey() =>
|
||||||
|
configuration?.GetSection("ElevenLabsAPI")?.GetValue<string>("ApiKey") ?? string.Empty;
|
||||||
|
|
||||||
|
|
||||||
|
private void MuteAI()
|
||||||
|
{
|
||||||
|
TTSEnabled = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task ConvertTextToSpeech()
|
||||||
|
{
|
||||||
|
// string plainText = WebUtility.HtmlDecode(HtmlContent.ToString());
|
||||||
|
|
||||||
|
if (string.IsNullOrWhiteSpace(TextContent) || VoiceEnabled == false || TTSEnabled == false || welcomeStage)
|
||||||
|
return;
|
||||||
|
|
||||||
|
Console.WriteLine("------------------------------OMGOMGOMG TTS call!!!!-------------");
|
||||||
|
|
||||||
|
var requestContent = new
|
||||||
|
{
|
||||||
|
text = TextContent,
|
||||||
|
// model_id = "eleven_multilingual_v2",
|
||||||
|
model_id = "eleven_flash_v2_5",
|
||||||
|
voice_settings = new
|
||||||
|
{
|
||||||
|
stability = 0.5,
|
||||||
|
similarity_boost = 0.75,
|
||||||
|
speed = 1
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
var requestJson = JsonSerializer.Serialize(requestContent);
|
||||||
|
string voiceId = "rE22Kc7UGoQj4zdHNYvd";
|
||||||
|
// string voiceId = "yyPLNYHg3CvjlSdSOdLh";
|
||||||
|
|
||||||
|
var httpRequest = new HttpRequestMessage(HttpMethod.Post, $"https://api.elevenlabs.io/v1/text-to-speech/{voiceId}/stream")
|
||||||
|
{
|
||||||
|
Content = new StringContent(requestJson, Encoding.UTF8, "application/json")
|
||||||
|
};
|
||||||
|
|
||||||
|
httpRequest.Headers.Add("xi-api-key", GetApiKey());
|
||||||
|
|
||||||
|
var response = await Http.SendAsync(httpRequest);
|
||||||
|
if (response.IsSuccessStatusCode)
|
||||||
|
{
|
||||||
|
var audioBytes = await response.Content.ReadAsByteArrayAsync();
|
||||||
|
var base64Audio = Convert.ToBase64String(audioBytes);
|
||||||
|
var audioDataUrl = $"data:audio/mpeg;base64,{base64Audio}";
|
||||||
|
|
||||||
|
await jsRuntime.InvokeVoidAsync("playAudio", audioDataUrl);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Handle error response
|
||||||
|
var errorContent = await response.Content.ReadAsStringAsync();
|
||||||
|
Console.Error.WriteLine($"Error: {errorContent}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
protected override async Task OnAfterRenderAsync(bool firstRender)
|
protected override async Task OnAfterRenderAsync(bool firstRender)
|
||||||
{
|
{
|
||||||
if (firstRender)
|
if (firstRender)
|
||||||
{
|
{
|
||||||
await jsRuntime.InvokeVoidAsync("setSessionId", sessionId);
|
await jsRuntime.InvokeVoidAsync("setSessionId", sessionId);
|
||||||
|
await jsRuntime.InvokeVoidAsync("initHints");
|
||||||
|
|
||||||
// sessionId = Guid.NewGuid().ToString();
|
// sessionId = Guid.NewGuid().ToString();
|
||||||
// _instances[sessionId] = this;
|
// _instances[sessionId] = this;
|
||||||
|
|
@ -246,12 +274,16 @@
|
||||||
SiteId = SiteInfo.Id;
|
SiteId = SiteInfo.Id;
|
||||||
|
|
||||||
_scopedContentService.SelectedBrandName = SiteInfo.SiteName;
|
_scopedContentService.SelectedBrandName = SiteInfo.SiteName;
|
||||||
|
|
||||||
|
TTSEnabled = SiteInfo.TTSActive;
|
||||||
|
STTEnabled = SiteInfo.STTActive;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SiteId = 1;
|
SiteId = 1;
|
||||||
_scopedContentService.SelectedBrandName = "default";
|
_scopedContentService.SelectedBrandName = "default";
|
||||||
|
TTSEnabled = false;
|
||||||
|
STTEnabled = false;
|
||||||
}
|
}
|
||||||
_scopedContentService.SelectedSiteId = SiteId;
|
_scopedContentService.SelectedSiteId = SiteId;
|
||||||
|
|
||||||
|
|
@ -282,8 +314,15 @@
|
||||||
// await ChatGptService.ProcessUserIntent(sessionId, UserInput, SiteId, (int)SiteInfo.TemplateId!, collectionName, Menu);
|
// await ChatGptService.ProcessUserIntent(sessionId, UserInput, SiteId, (int)SiteInfo.TemplateId!, collectionName, Menu);
|
||||||
}
|
}
|
||||||
UserInput = string.Empty;
|
UserInput = string.Empty;
|
||||||
await InvokeAsync(StateHasChanged);
|
// await InvokeAsync(StateHasChanged);
|
||||||
|
_initVoicePending = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_initVoicePending)
|
||||||
|
{
|
||||||
|
Console.WriteLine("PENDING VOICE--------------------------------------------------");
|
||||||
|
_initVoicePending = false;
|
||||||
|
await jsRuntime.InvokeVoidAsync("initVoiceRecorder", "ProcessAudio2");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -355,6 +394,8 @@
|
||||||
Console.Write("audio incoming");
|
Console.Write("audio incoming");
|
||||||
if (myHome != null)
|
if (myHome != null)
|
||||||
{
|
{
|
||||||
|
if (myHome.STTEnabled == false) return;
|
||||||
|
Console.WriteLine("STT ENABLED -------------------------------------------------------------------------------");
|
||||||
var languageCode = "hu-HU";
|
var languageCode = "hu-HU";
|
||||||
if (myHome._scopedContentService.SelectedLanguage == "Hungarian")
|
if (myHome._scopedContentService.SelectedLanguage == "Hungarian")
|
||||||
{
|
{
|
||||||
|
|
@ -416,9 +457,11 @@
|
||||||
AIService.OnContentReceiveFinished += UpdateFinished;
|
AIService.OnContentReceiveFinished += UpdateFinished;
|
||||||
// ChatGptService.OnStatusChangeReceived += UpdateStatus;
|
// ChatGptService.OnStatusChangeReceived += UpdateStatus;
|
||||||
AIService.OnStatusChangeReceived += UpdateStatus;
|
AIService.OnStatusChangeReceived += UpdateStatus;
|
||||||
|
AIService.OnTextContentAvailable += UpdateTextContentForVoice;
|
||||||
sessionId = Guid.NewGuid().ToString();
|
sessionId = Guid.NewGuid().ToString();
|
||||||
_instances[sessionId] = this;
|
_instances[sessionId] = this;
|
||||||
|
|
||||||
|
VoiceEnabled = configuration?.GetSection("AiSettings")?.GetValue<bool>("VoiceActivated") ?? false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private async void UpdateContent(string receivedSessionId, string content)
|
private async void UpdateContent(string receivedSessionId, string content)
|
||||||
|
|
@ -437,12 +480,24 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private async void UpdateTextContentForVoice(string receivedSessionId, string content)
|
||||||
|
{
|
||||||
|
if (receivedSessionId == sessionId) // Only accept messages meant for this tab
|
||||||
|
{
|
||||||
|
|
||||||
|
TextContent = content;
|
||||||
|
await ConvertTextToSpeech();
|
||||||
|
//_scopedContentService.CurrentDOM = await jsRuntime.InvokeAsync<string>("getDivContent", "currentContent");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private async void UpdateFinished(string receivedSessionId)
|
private async void UpdateFinished(string receivedSessionId)
|
||||||
{
|
{
|
||||||
if (receivedSessionId == sessionId) // Only accept messages meant for this tab
|
if (receivedSessionId == sessionId) // Only accept messages meant for this tab
|
||||||
{
|
{
|
||||||
Console.WriteLine("Content update finished");
|
Console.WriteLine("Content update finished");
|
||||||
var result = await jsRuntime.InvokeAsync<object>("getDivContent", "currentContent");
|
var result = await jsRuntime.InvokeAsync<object>("getDivContent", "currentContent");
|
||||||
|
//await ConvertTextToSpeech();
|
||||||
_scopedContentService.CurrentDOM = JsonSerializer.Serialize(result);
|
_scopedContentService.CurrentDOM = JsonSerializer.Serialize(result);
|
||||||
Console.Write(_scopedContentService.CurrentDOM);
|
Console.Write(_scopedContentService.CurrentDOM);
|
||||||
}
|
}
|
||||||
|
|
@ -502,6 +557,7 @@
|
||||||
|
|
||||||
private async Task SendUserQuery()
|
private async Task SendUserQuery()
|
||||||
{
|
{
|
||||||
|
welcomeStage = false;
|
||||||
if (!string.IsNullOrEmpty(UserInput))
|
if (!string.IsNullOrEmpty(UserInput))
|
||||||
{
|
{
|
||||||
HtmlContent.Clear();
|
HtmlContent.Clear();
|
||||||
|
|
@ -513,12 +569,13 @@
|
||||||
|
|
||||||
private async Task DisplayMenuContent(string input, bool forceUnmodified)
|
private async Task DisplayMenuContent(string input, bool forceUnmodified)
|
||||||
{
|
{
|
||||||
|
welcomeStage = false;
|
||||||
if (!string.IsNullOrEmpty(UserInput))
|
if (!string.IsNullOrEmpty(UserInput))
|
||||||
{
|
{
|
||||||
HtmlContent.Clear();
|
HtmlContent.Clear();
|
||||||
var menu = await GetMenuList();
|
var menu = await GetMenuList();
|
||||||
var menuItem = (await GetMenuItems()).Where(m => m.Name == input).FirstOrDefault();
|
var menuItem = (await GetMenuItems()).Where(m => m.Name == input).FirstOrDefault();
|
||||||
if(menuItem == null)
|
if (menuItem == null)
|
||||||
{
|
{
|
||||||
await ChatGptService.ProcessContentRequest(sessionId, input, SiteId, (int)SiteInfo.TemplateId!, collectionName, menu, forceUnmodified);
|
await ChatGptService.ProcessContentRequest(sessionId, input, SiteId, (int)SiteInfo.TemplateId!, collectionName, menu, forceUnmodified);
|
||||||
}
|
}
|
||||||
|
|
@ -565,6 +622,7 @@
|
||||||
AIService.OnContentReceived -= UpdateContent;
|
AIService.OnContentReceived -= UpdateContent;
|
||||||
AIService.OnContentReceiveFinished -= UpdateFinished;
|
AIService.OnContentReceiveFinished -= UpdateFinished;
|
||||||
AIService.OnStatusChangeReceived -= UpdateStatus;
|
AIService.OnStatusChangeReceived -= UpdateStatus;
|
||||||
|
AIService.OnTextContentAvailable -= UpdateTextContentForVoice;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async ValueTask DisposeAsync()
|
public async ValueTask DisposeAsync()
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,10 @@
|
||||||
Brand name:
|
Brand name:
|
||||||
<InputText class="form-control my-3" id="siteName" @bind-Value="siteInfo.SiteName" />
|
<InputText class="form-control my-3" id="siteName" @bind-Value="siteInfo.SiteName" />
|
||||||
</label>
|
</label>
|
||||||
|
<label>
|
||||||
|
Brand name:
|
||||||
|
<InputText class="form-control my-3" id="siteDescription" @bind-Value="siteInfo.SiteDescription" />
|
||||||
|
</label>
|
||||||
<label>
|
<label>
|
||||||
Logo url:
|
Logo url:
|
||||||
<InputText class="form-control my-3" id="brandLogoUrl" @bind-Value="siteInfo.BrandLogoUrl" />
|
<InputText class="form-control my-3" id="brandLogoUrl" @bind-Value="siteInfo.BrandLogoUrl" />
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@
|
||||||
@using BLAIzor.Components.Partials
|
@using BLAIzor.Components.Partials
|
||||||
@using System.Text
|
@using System.Text
|
||||||
@using System.Text.Json
|
@using System.Text.Json
|
||||||
|
@using System.Net
|
||||||
|
|
||||||
@inject AIService ChatGptService
|
@inject AIService ChatGptService
|
||||||
@rendermode InteractiveServer
|
@rendermode InteractiveServer
|
||||||
|
|
@ -20,6 +21,7 @@
|
||||||
@inject DesignTemplateService DesignTemplateService
|
@inject DesignTemplateService DesignTemplateService
|
||||||
@inject CssTemplateService CssTemplateService
|
@inject CssTemplateService CssTemplateService
|
||||||
@inject CssInjectorService CssService
|
@inject CssInjectorService CssService
|
||||||
|
@inject HttpClient Http
|
||||||
|
|
||||||
|
|
||||||
<div class="page" style="z-index: 1">
|
<div class="page" style="z-index: 1">
|
||||||
|
|
@ -28,7 +30,7 @@
|
||||||
|
|
||||||
<article class="content container text-center" style="position: relative; z-index: 4;">
|
<article class="content container text-center" style="position: relative; z-index: 4;">
|
||||||
<PageTitle>Home</PageTitle>
|
<PageTitle>Home</PageTitle>
|
||||||
<VideoComponent SelectedBrandName="@selectedBrandName"/>
|
<VideoComponent SelectedBrandName="@selectedBrandName" />
|
||||||
@* <HeadContent>
|
@* <HeadContent>
|
||||||
|
|
||||||
@if (!string.IsNullOrEmpty(dynamicallyLoadedCss))
|
@if (!string.IsNullOrEmpty(dynamicallyLoadedCss))
|
||||||
|
|
@ -47,15 +49,31 @@
|
||||||
|
|
||||||
<input @oninput="(e) => UserInput = e.Value.ToString()"
|
<input @oninput="(e) => UserInput = e.Value.ToString()"
|
||||||
@onkeydown="@Enter" class="searchInput" type="text" name="" value="@UserInput" placeholder="Ask any question">
|
@onkeydown="@Enter" class="searchInput" type="text" name="" value="@UserInput" placeholder="Ask any question">
|
||||||
<button class="searchButton border-0" @onclick="SendUserQuery" href="#">
|
<button data-hint="ask anything" class="searchButton border-0" @onclick="SendUserQuery" href="#">
|
||||||
<i class="fa-solid fa-magnifying-glass"></i>
|
<i class="fa-solid fa-hexagon-nodes-bolt" style="font-size:20px"></i>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@{
|
||||||
|
if (VoiceEnabled)
|
||||||
|
{
|
||||||
|
|
||||||
<button id="recButton" class="btn btn-primary voicebutton" onclick="startRecording()"><i class="fa-solid fa-microphone"></i></button>
|
if (STTEnabled)
|
||||||
|
{
|
||||||
|
<button data-hint="talk" id="recButton" class="btn btn-primary voicebutton" onclick="startRecording()"><i class="fa-solid fa-microphone"></i></button>
|
||||||
<button id="stopButton" class="btn btn-primary voicebutton" onclick="stopRecording()" hidden><i class="fa-solid fa-microphone-slash"></i></button>
|
<button id="stopButton" class="btn btn-primary voicebutton" onclick="stopRecording()" hidden><i class="fa-solid fa-microphone-slash"></i></button>
|
||||||
|
}
|
||||||
|
|
||||||
|
if(TTSEnabled)
|
||||||
|
{
|
||||||
|
<button data-hint="listen" class="btn btn-primary voicebutton" @onclick="ConvertTextToSpeech"><i class="fa-solid fa-volume-high"></i></button>
|
||||||
|
<audio id="audioPlayer" hidden style="display: none;"></audio>
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
@ -64,7 +82,6 @@
|
||||||
@* </div> *@
|
@* </div> *@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<p id="recordingText"></p>
|
<p id="recordingText"></p>
|
||||||
|
|
||||||
<div class="row" id="currentContent">
|
<div class="row" id="currentContent">
|
||||||
|
|
@ -119,48 +136,7 @@
|
||||||
.catch(error => console.error(error));
|
.catch(error => console.error(error));
|
||||||
}
|
}
|
||||||
|
|
||||||
var mediaRecorder;
|
|
||||||
var audioChunks = [];
|
|
||||||
var recButton = document.getElementById("recButton");
|
|
||||||
var stopButton = document.getElementById("stopButton");
|
|
||||||
var recText = document.getElementById("recordingText");
|
|
||||||
async function startRecording() {
|
|
||||||
if (recButton) {
|
|
||||||
recButton.hidden = true;
|
|
||||||
stopButton.hidden = false;
|
|
||||||
recText.textContent = "recording...";
|
|
||||||
}
|
|
||||||
const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
|
|
||||||
mediaRecorder = new MediaRecorder(stream);
|
|
||||||
|
|
||||||
mediaRecorder.ondataavailable = event => audioChunks.push(event.data);
|
|
||||||
mediaRecorder.onstop = () => {
|
|
||||||
const audioBlob = new Blob(audioChunks, { type: 'audio/wav' });
|
|
||||||
audioChunks = [];
|
|
||||||
console.log("media stopped");
|
|
||||||
const reader = new FileReader();
|
|
||||||
reader.onload = () => {
|
|
||||||
const base64Audio = reader.result.split(',')[1];
|
|
||||||
DotNet.invokeMethodAsync('BLAIzor', 'ProcessAudio3', base64Audio, sessionId);
|
|
||||||
};
|
|
||||||
reader.readAsDataURL(audioBlob);
|
|
||||||
};
|
|
||||||
|
|
||||||
mediaRecorder.start();
|
|
||||||
}
|
|
||||||
|
|
||||||
function stopRecording() {
|
|
||||||
mediaRecorder.stop();
|
|
||||||
var recButton = document.getElementById("recButton");
|
|
||||||
var stopButton = document.getElementById("stopButton");
|
|
||||||
var recText = document.getElementById("recordingText");
|
|
||||||
mediaRecorder.stream.getTracks().forEach(track => track.stop()); // Free memory
|
|
||||||
if (stopButton) {
|
|
||||||
stopButton.hidden = true;
|
|
||||||
recButton.hidden = false;
|
|
||||||
recText.textContent = "";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
</script>
|
||||||
<script>
|
<script>
|
||||||
function openCalendar(calendlyUserName) {
|
function openCalendar(calendlyUserName) {
|
||||||
|
|
@ -190,6 +166,7 @@
|
||||||
public int siteid { get; set; }
|
public int siteid { get; set; }
|
||||||
public SiteInfo SiteInfo;
|
public SiteInfo SiteInfo;
|
||||||
private StringBuilder HtmlContent = new();
|
private StringBuilder HtmlContent = new();
|
||||||
|
private string TextContent = "";
|
||||||
private string StatusContent = "";
|
private string StatusContent = "";
|
||||||
private string UserInput = string.Empty;
|
private string UserInput = string.Empty;
|
||||||
private string ChatGptResponse = string.Empty;
|
private string ChatGptResponse = string.Empty;
|
||||||
|
|
@ -209,13 +186,91 @@
|
||||||
private string sessionId;
|
private string sessionId;
|
||||||
private static readonly Dictionary<string, Preview> _instances = new();
|
private static readonly Dictionary<string, Preview> _instances = new();
|
||||||
private string Menu;
|
private string Menu;
|
||||||
|
private bool VoiceEnabled;
|
||||||
|
private bool TTSEnabled;
|
||||||
|
private bool STTEnabled;
|
||||||
|
private bool _initVoicePending = false;
|
||||||
|
private bool welcomeStage = true;
|
||||||
|
|
||||||
|
private string GetApiKey() =>
|
||||||
|
configuration?.GetSection("ElevenLabsAPI")?.GetValue<string>("ApiKey") ?? string.Empty;
|
||||||
|
|
||||||
|
private void MuteAI()
|
||||||
|
{
|
||||||
|
TTSEnabled = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task ConvertTextToSpeech()
|
||||||
|
{
|
||||||
|
// string plainText = WebUtility.HtmlDecode(HtmlContent.ToString());
|
||||||
|
|
||||||
|
if (string.IsNullOrWhiteSpace(TextContent) || VoiceEnabled == false || TTSEnabled == false || welcomeStage)
|
||||||
|
return;
|
||||||
|
|
||||||
|
Console.WriteLine("------------------------------OMGOMGOMG TTS call!!!!-------------");
|
||||||
|
|
||||||
|
var requestContent = new
|
||||||
|
{
|
||||||
|
text = TextContent,
|
||||||
|
// model_id = "eleven_multilingual_v2",
|
||||||
|
model_id = "eleven_flash_v2_5",
|
||||||
|
voice_settings = new
|
||||||
|
{
|
||||||
|
stability = 0.5,
|
||||||
|
similarity_boost = 0.75,
|
||||||
|
speed = 1.1
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
var requestJson = JsonSerializer.Serialize(requestContent);
|
||||||
|
string voiceId = "rE22Kc7UGoQj4zdHNYvd";
|
||||||
|
// string voiceId = "yyPLNYHg3CvjlSdSOdLh";
|
||||||
|
|
||||||
|
var httpRequest = new HttpRequestMessage(HttpMethod.Post, $"https://api.elevenlabs.io/v1/text-to-speech/{voiceId}/stream")
|
||||||
|
{
|
||||||
|
Content = new StringContent(requestJson, Encoding.UTF8, "application/json")
|
||||||
|
};
|
||||||
|
|
||||||
|
httpRequest.Headers.Add("xi-api-key", GetApiKey());
|
||||||
|
|
||||||
|
var response = await Http.SendAsync(httpRequest);
|
||||||
|
if (response.IsSuccessStatusCode)
|
||||||
|
{
|
||||||
|
var audioBytes = await response.Content.ReadAsByteArrayAsync();
|
||||||
|
var base64Audio = Convert.ToBase64String(audioBytes);
|
||||||
|
var audioDataUrl = $"data:audio/mpeg;base64,{base64Audio}";
|
||||||
|
|
||||||
|
await jsRuntime.InvokeVoidAsync("playAudio", audioDataUrl);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Handle error response
|
||||||
|
var errorContent = await response.Content.ReadAsStringAsync();
|
||||||
|
Console.Error.WriteLine($"Error: {errorContent}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
protected override async Task OnAfterRenderAsync(bool firstRender)
|
protected override async Task OnAfterRenderAsync(bool firstRender)
|
||||||
{
|
{
|
||||||
if (firstRender)
|
if (firstRender)
|
||||||
{
|
{
|
||||||
await jsRuntime.InvokeVoidAsync("setSessionId", sessionId);
|
await jsRuntime.InvokeVoidAsync("setSessionId", sessionId);
|
||||||
|
await jsRuntime.InvokeVoidAsync("initHints");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (_initVoicePending)
|
||||||
|
{
|
||||||
|
Console.WriteLine("PENDING VOICE--------------------------------------------------");
|
||||||
|
_initVoicePending = false;
|
||||||
|
await jsRuntime.InvokeVoidAsync("initVoiceRecorder", "ProcessAudio3");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override Task OnInitializedAsync()
|
||||||
|
{
|
||||||
|
VoiceEnabled = configuration?.GetSection("AiSettings")?.GetValue<bool>("VoiceActivated") ?? false;
|
||||||
|
return base.OnInitializedAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
public async void MenuClick(string menuName)
|
public async void MenuClick(string menuName)
|
||||||
|
|
@ -301,6 +356,8 @@
|
||||||
Console.Write("audio incoming");
|
Console.Write("audio incoming");
|
||||||
if (myHome != null)
|
if (myHome != null)
|
||||||
{
|
{
|
||||||
|
if (myHome.STTEnabled == false) return;
|
||||||
|
|
||||||
var languageCode = "hu-HU";
|
var languageCode = "hu-HU";
|
||||||
if (myHome._scopedContentService.SelectedLanguage == "Hungarian")
|
if (myHome._scopedContentService.SelectedLanguage == "Hungarian")
|
||||||
{
|
{
|
||||||
|
|
@ -365,12 +422,17 @@
|
||||||
// siteid = SiteInfo.Id;
|
// siteid = SiteInfo.Id;
|
||||||
|
|
||||||
_scopedContentService.SelectedBrandName = SiteInfo.SiteName.ToLower();
|
_scopedContentService.SelectedBrandName = SiteInfo.SiteName.ToLower();
|
||||||
|
TTSEnabled = SiteInfo.TTSActive;
|
||||||
|
STTEnabled = SiteInfo.STTActive;
|
||||||
|
|
||||||
Console.Write("Selected brand name:" + _scopedContentService.SelectedBrandName);
|
Console.Write("Selected brand name:" + _scopedContentService.SelectedBrandName);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// siteid = 1;
|
// siteid = 1;
|
||||||
_scopedContentService.SelectedBrandName = "default";
|
_scopedContentService.SelectedBrandName = "default";
|
||||||
|
TTSEnabled = false;
|
||||||
|
STTEnabled = false;
|
||||||
|
|
||||||
}
|
}
|
||||||
_scopedContentService.SelectedSiteId = siteid;
|
_scopedContentService.SelectedSiteId = siteid;
|
||||||
|
|
@ -395,6 +457,7 @@
|
||||||
AIService.OnContentReceived += UpdateContent;
|
AIService.OnContentReceived += UpdateContent;
|
||||||
// ChatGptService.OnStatusChangeReceived += UpdateStatus;
|
// ChatGptService.OnStatusChangeReceived += UpdateStatus;
|
||||||
AIService.OnStatusChangeReceived += UpdateStatus;
|
AIService.OnStatusChangeReceived += UpdateStatus;
|
||||||
|
AIService.OnTextContentAvailable += UpdateTextContentForVoice;
|
||||||
|
|
||||||
Menu = await GetMenuList();
|
Menu = await GetMenuList();
|
||||||
if (string.IsNullOrEmpty(HtmlContent.ToString()))
|
if (string.IsNullOrEmpty(HtmlContent.ToString()))
|
||||||
|
|
@ -405,7 +468,7 @@
|
||||||
// await ChatGptService.ProcessUserIntent(sessionId, UserInput, siteid, (int)SiteInfo.TemplateId!, collectionName, Menu);
|
// await ChatGptService.ProcessUserIntent(sessionId, UserInput, siteid, (int)SiteInfo.TemplateId!, collectionName, Menu);
|
||||||
}
|
}
|
||||||
UserInput = string.Empty;
|
UserInput = string.Empty;
|
||||||
|
_initVoicePending = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private async void UpdateContent(string receivedSessionId, string content)
|
private async void UpdateContent(string receivedSessionId, string content)
|
||||||
|
|
@ -423,6 +486,17 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private async void UpdateTextContentForVoice(string receivedSessionId, string content)
|
||||||
|
{
|
||||||
|
if (receivedSessionId == sessionId) // Only accept messages meant for this tab
|
||||||
|
{
|
||||||
|
|
||||||
|
TextContent = content;
|
||||||
|
await ConvertTextToSpeech();
|
||||||
|
//_scopedContentService.CurrentDOM = await jsRuntime.InvokeAsync<string>("getDivContent", "currentContent");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private async void UpdateFinished(string receivedSessionId)
|
private async void UpdateFinished(string receivedSessionId)
|
||||||
{
|
{
|
||||||
if (receivedSessionId == sessionId) // Only accept messages meant for this tab
|
if (receivedSessionId == sessionId) // Only accept messages meant for this tab
|
||||||
|
|
@ -488,6 +562,7 @@
|
||||||
|
|
||||||
private async Task SendUserQuery()
|
private async Task SendUserQuery()
|
||||||
{
|
{
|
||||||
|
welcomeStage = false;
|
||||||
if (!string.IsNullOrEmpty(UserInput))
|
if (!string.IsNullOrEmpty(UserInput))
|
||||||
{
|
{
|
||||||
HtmlContent.Clear();
|
HtmlContent.Clear();
|
||||||
|
|
@ -500,6 +575,7 @@
|
||||||
|
|
||||||
private async Task DisplayMenuContent(string input, bool forceUnmodified)
|
private async Task DisplayMenuContent(string input, bool forceUnmodified)
|
||||||
{
|
{
|
||||||
|
welcomeStage = false;
|
||||||
Console.WriteLine($"DisplayMenuContent 1: {input}");
|
Console.WriteLine($"DisplayMenuContent 1: {input}");
|
||||||
if (!string.IsNullOrEmpty(UserInput))
|
if (!string.IsNullOrEmpty(UserInput))
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,63 @@
|
||||||
|
@page "/text-to-speech"
|
||||||
|
@using System.Text.Json
|
||||||
|
@using System.Text
|
||||||
|
@inject HttpClient Http
|
||||||
|
@inject IJSRuntime JS
|
||||||
|
@inject IConfiguration _configuration
|
||||||
|
|
||||||
|
<h3>Text to Speech</h3>
|
||||||
|
|
||||||
|
<textarea @bind="InputText" rows="5" cols="60" placeholder="Enter text here..."></textarea>
|
||||||
|
<br />
|
||||||
|
<button @onclick="ConvertTextToSpeech">Convert to Speech</button>
|
||||||
|
|
||||||
|
<audio id="audioPlayer" controls style="display:none;"></audio>
|
||||||
|
|
||||||
|
@code {
|
||||||
|
private string InputText = string.Empty;
|
||||||
|
|
||||||
|
private string GetApiKey() =>
|
||||||
|
_configuration?.GetSection("ElevenLabsAPI")?.GetValue<string>("ApiKey") ?? string.Empty;
|
||||||
|
|
||||||
|
private async Task ConvertTextToSpeech()
|
||||||
|
{
|
||||||
|
if (string.IsNullOrWhiteSpace(InputText))
|
||||||
|
return;
|
||||||
|
|
||||||
|
var requestContent = new
|
||||||
|
{
|
||||||
|
text = InputText,
|
||||||
|
// model_id = "eleven_multilingual_v2",
|
||||||
|
model_id = "eleven_flash_v2_5",
|
||||||
|
voice_settings = new
|
||||||
|
{
|
||||||
|
stability = 0.5,
|
||||||
|
similarity_boost = 0.75
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
var requestJson = JsonSerializer.Serialize(requestContent);
|
||||||
|
var httpRequest = new HttpRequestMessage(HttpMethod.Post, "https://api.elevenlabs.io/v1/text-to-speech/yyPLNYHg3CvjlSdSOdLh/stream")
|
||||||
|
{
|
||||||
|
Content = new StringContent(requestJson, Encoding.UTF8, "application/json")
|
||||||
|
};
|
||||||
|
|
||||||
|
httpRequest.Headers.Add("xi-api-key", GetApiKey());
|
||||||
|
|
||||||
|
var response = await Http.SendAsync(httpRequest);
|
||||||
|
if (response.IsSuccessStatusCode)
|
||||||
|
{
|
||||||
|
var audioBytes = await response.Content.ReadAsByteArrayAsync();
|
||||||
|
var base64Audio = Convert.ToBase64String(audioBytes);
|
||||||
|
var audioDataUrl = $"data:audio/mpeg;base64,{base64Audio}";
|
||||||
|
|
||||||
|
await JS.InvokeVoidAsync("playAudio", audioDataUrl);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Handle error response
|
||||||
|
var errorContent = await response.Content.ReadAsStringAsync();
|
||||||
|
Console.Error.WriteLine($"Error: {errorContent}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -158,7 +158,7 @@ else if (!string.IsNullOrEmpty(ErrorMessage))
|
||||||
//try to get content from qDrant
|
//try to get content from qDrant
|
||||||
if (menuItem.QdrantPointId != null)
|
if (menuItem.QdrantPointId != null)
|
||||||
{
|
{
|
||||||
content = await QDrantService.GetContentAsync(SiteId, menuItem.SortOrder);
|
content = await QDrantService.GetContentAsync(SiteId, menuItem.PointId);
|
||||||
var selectedPoint = JsonConvert.DeserializeObject<QDrantGetContentPointResult>(content)!;
|
var selectedPoint = JsonConvert.DeserializeObject<QDrantGetContentPointResult>(content)!;
|
||||||
if (selectedPoint != null)
|
if (selectedPoint != null)
|
||||||
{
|
{
|
||||||
|
|
@ -199,7 +199,7 @@ else if (!string.IsNullOrEmpty(ErrorMessage))
|
||||||
document = WordFileReader.ExtractText(memoryStream);
|
document = WordFileReader.ExtractText(memoryStream);
|
||||||
|
|
||||||
//get website subject
|
//get website subject
|
||||||
var prompt1 = $"Analyze the following text and make an assumption about the characteristics of the company. Do not attach any explanation, make your answer like `A medical clinic of mammography` or `A webdesign and software development company` :\n\n{document}";
|
var prompt1 = $"Analyze the following text and make an assumption about the characteristics of the text type (website, document, book, etc). Do not attach any explanation, make your answer like `A medical clinic of mammography` or `A webdesign and software development company` or `A book about XY` :\n\n{document}";
|
||||||
var response1 = await ContentEditorService.GetGeneratedContentAsync(SessionId, prompt1);
|
var response1 = await ContentEditorService.GetGeneratedContentAsync(SessionId, prompt1);
|
||||||
Console.Write(response1);
|
Console.Write(response1);
|
||||||
subject = response1;
|
subject = response1;
|
||||||
|
|
@ -233,7 +233,9 @@ else if (!string.IsNullOrEmpty(ErrorMessage))
|
||||||
|
|
||||||
IsLoading = true;
|
IsLoading = true;
|
||||||
ErrorMessage = null;
|
ErrorMessage = null;
|
||||||
ExtractedMenuItems.Add(new MenuItemModel ("New menu item", "" ));
|
var newItem = new MenuItemModel("New menu item", "");
|
||||||
|
//TODO Fix
|
||||||
|
ExtractedMenuItems.Add(newItem);
|
||||||
IsLoading = false;
|
IsLoading = false;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -127,7 +127,7 @@ else if (!string.IsNullOrEmpty(errorMessage))
|
||||||
//try to get content from qDrant
|
//try to get content from qDrant
|
||||||
if (menuItem.QdrantPointId != null)
|
if (menuItem.QdrantPointId != null)
|
||||||
{
|
{
|
||||||
content = await QDrantService.GetContentAsync(SiteId, menuItem.SortOrder);
|
content = await QDrantService.GetContentAsync(SiteId, menuItem.PointId);
|
||||||
// content = await QDrantService.GetContentAsync(SiteId, menuItem.QdrantPointId); TODO
|
// content = await QDrantService.GetContentAsync(SiteId, menuItem.QdrantPointId); TODO
|
||||||
var selectedPoint = JsonConvert.DeserializeObject<QDrantGetContentPointResult>(content)!;
|
var selectedPoint = JsonConvert.DeserializeObject<QDrantGetContentPointResult>(content)!;
|
||||||
if (selectedPoint != null)
|
if (selectedPoint != null)
|
||||||
|
|
@ -179,7 +179,9 @@ else if (!string.IsNullOrEmpty(errorMessage))
|
||||||
|
|
||||||
isLoading = true;
|
isLoading = true;
|
||||||
errorMessage = null;
|
errorMessage = null;
|
||||||
extractedMenuItems.Add(new("New menu item"));
|
var newItem = new MenuItemModel("New menu item", "");
|
||||||
|
//TODO Fix
|
||||||
|
extractedMenuItems.Add(newItem);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -34,5 +34,5 @@
|
||||||
|
|
||||||
@code {
|
@code {
|
||||||
[Parameter]
|
[Parameter]
|
||||||
public string SelectedBrandName { get; set; }
|
public string SelectedBrandName { get; set; } = "default";
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,628 @@
|
||||||
|
// <auto-generated />
|
||||||
|
using System;
|
||||||
|
using BLAIzor.Data;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||||
|
using Microsoft.EntityFrameworkCore.Metadata;
|
||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace BLAIzor.Migrations
|
||||||
|
{
|
||||||
|
[DbContext(typeof(ApplicationDbContext))]
|
||||||
|
[Migration("20250523215717_SiteDescriptionAndSpeechManagement")]
|
||||||
|
partial class SiteDescriptionAndSpeechManagement
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void BuildTargetModel(ModelBuilder modelBuilder)
|
||||||
|
{
|
||||||
|
#pragma warning disable 612, 618
|
||||||
|
modelBuilder
|
||||||
|
.HasAnnotation("ProductVersion", "9.0.3")
|
||||||
|
.HasAnnotation("Relational:MaxIdentifierLength", 128);
|
||||||
|
|
||||||
|
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
|
||||||
|
|
||||||
|
modelBuilder.Entity("BLAIzor.Models.CssTemplate", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
|
||||||
|
|
||||||
|
b.Property<string>("CssContent")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("nvarchar(max)");
|
||||||
|
|
||||||
|
b.Property<int>("DesignTemplateId")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<DateTime>("LastUpdated")
|
||||||
|
.HasColumnType("datetime2");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.HasIndex("DesignTemplateId")
|
||||||
|
.IsUnique();
|
||||||
|
|
||||||
|
b.ToTable("CssTemplates");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("BLAIzor.Models.DesignTemplate", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
|
||||||
|
|
||||||
|
b.Property<DateTime>("CreatedAt")
|
||||||
|
.HasColumnType("datetime2");
|
||||||
|
|
||||||
|
b.Property<string>("Description")
|
||||||
|
.HasColumnType("nvarchar(max)");
|
||||||
|
|
||||||
|
b.Property<bool>("IsDeprecated")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<bool>("IsPrivate")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<bool>("IsPublished")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<string>("QDrandCollectionName")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("nvarchar(max)");
|
||||||
|
|
||||||
|
b.Property<string>("Status")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("nvarchar(max)");
|
||||||
|
|
||||||
|
b.Property<string>("Tags")
|
||||||
|
.HasColumnType("nvarchar(max)");
|
||||||
|
|
||||||
|
b.Property<string>("TemplateName")
|
||||||
|
.HasColumnType("nvarchar(max)");
|
||||||
|
|
||||||
|
b.Property<string>("TemplatePhotoUrl")
|
||||||
|
.HasColumnType("nvarchar(max)");
|
||||||
|
|
||||||
|
b.Property<DateTime?>("UpdatedAt")
|
||||||
|
.HasColumnType("datetime2");
|
||||||
|
|
||||||
|
b.Property<string>("UserId")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("nvarchar(450)");
|
||||||
|
|
||||||
|
b.Property<int>("Version")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.HasIndex("UserId");
|
||||||
|
|
||||||
|
b.ToTable("DesignTemplates");
|
||||||
|
|
||||||
|
b.HasData(
|
||||||
|
new
|
||||||
|
{
|
||||||
|
Id = 1,
|
||||||
|
CreatedAt = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified),
|
||||||
|
Description = "The default template",
|
||||||
|
IsDeprecated = false,
|
||||||
|
IsPrivate = false,
|
||||||
|
IsPublished = false,
|
||||||
|
QDrandCollectionName = "html_snippets",
|
||||||
|
Status = "Draft",
|
||||||
|
Tags = "system",
|
||||||
|
TemplateName = "Default Site",
|
||||||
|
TemplatePhotoUrl = "/images/default-logo.png",
|
||||||
|
UserId = "0988758e-e16c-4c2c-8c1e-efa3ac5f0274",
|
||||||
|
Version = 1
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("BLAIzor.Models.FormDefinition", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
|
||||||
|
|
||||||
|
b.Property<DateTime>("CreatedAt")
|
||||||
|
.HasColumnType("datetime2");
|
||||||
|
|
||||||
|
b.Property<string>("Description")
|
||||||
|
.HasColumnType("nvarchar(max)");
|
||||||
|
|
||||||
|
b.Property<string>("JsonDefinition")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("nvarchar(max)");
|
||||||
|
|
||||||
|
b.Property<int>("SiteInfoId")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<string>("Slug")
|
||||||
|
.IsRequired()
|
||||||
|
.HasMaxLength(100)
|
||||||
|
.HasColumnType("nvarchar(100)");
|
||||||
|
|
||||||
|
b.Property<string>("Title")
|
||||||
|
.IsRequired()
|
||||||
|
.HasMaxLength(100)
|
||||||
|
.HasColumnType("nvarchar(100)");
|
||||||
|
|
||||||
|
b.Property<int>("Version")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.HasIndex("SiteInfoId", "Slug")
|
||||||
|
.IsUnique();
|
||||||
|
|
||||||
|
b.ToTable("FormDefinitions");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("BLAIzor.Models.MenuItem", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
|
||||||
|
|
||||||
|
b.Property<string>("Name")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("nvarchar(max)");
|
||||||
|
|
||||||
|
b.Property<int>("PointId")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<Guid?>("QdrantPointId")
|
||||||
|
.HasColumnType("uniqueidentifier");
|
||||||
|
|
||||||
|
b.Property<bool>("ShowInMainMenu")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<int>("SiteInfoId")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("SortOrder")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<string>("StoredHtml")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("nvarchar(max)");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.HasIndex("SiteInfoId");
|
||||||
|
|
||||||
|
b.ToTable("MenuItems");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("BLAIzor.Models.SiteInfo", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
|
||||||
|
|
||||||
|
b.Property<string>("BrandLogoUrl")
|
||||||
|
.HasColumnType("nvarchar(max)");
|
||||||
|
|
||||||
|
b.Property<string>("DefaultColor")
|
||||||
|
.HasColumnType("nvarchar(max)");
|
||||||
|
|
||||||
|
b.Property<string>("DefaultUrl")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("nvarchar(max)");
|
||||||
|
|
||||||
|
b.Property<string>("DomainUrl")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("nvarchar(max)");
|
||||||
|
|
||||||
|
b.Property<bool>("IsPublished")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<bool>("STTActive")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<string>("SiteDescription")
|
||||||
|
.HasColumnType("nvarchar(max)");
|
||||||
|
|
||||||
|
b.Property<string>("SiteName")
|
||||||
|
.HasColumnType("nvarchar(max)");
|
||||||
|
|
||||||
|
b.Property<bool>("TTSActive")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<int?>("TemplateId")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<string>("UserId")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("nvarchar(450)");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.HasIndex("TemplateId");
|
||||||
|
|
||||||
|
b.HasIndex("UserId");
|
||||||
|
|
||||||
|
b.ToTable("SiteInfos");
|
||||||
|
|
||||||
|
b.HasData(
|
||||||
|
new
|
||||||
|
{
|
||||||
|
Id = 1,
|
||||||
|
BrandLogoUrl = "/images/default-logo.png",
|
||||||
|
DefaultColor = "#FFFFFF",
|
||||||
|
DefaultUrl = "https://ai.poppixel.cloud",
|
||||||
|
DomainUrl = "poppixel.cloud",
|
||||||
|
IsPublished = false,
|
||||||
|
STTActive = false,
|
||||||
|
SiteName = "Default Site",
|
||||||
|
TTSActive = false,
|
||||||
|
TemplateId = 1,
|
||||||
|
UserId = "0988758e-e16c-4c2c-8c1e-efa3ac5f0274"
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b =>
|
||||||
|
{
|
||||||
|
b.Property<string>("Id")
|
||||||
|
.HasColumnType("nvarchar(450)");
|
||||||
|
|
||||||
|
b.Property<string>("ConcurrencyStamp")
|
||||||
|
.IsConcurrencyToken()
|
||||||
|
.HasColumnType("nvarchar(max)");
|
||||||
|
|
||||||
|
b.Property<string>("Name")
|
||||||
|
.HasMaxLength(256)
|
||||||
|
.HasColumnType("nvarchar(256)");
|
||||||
|
|
||||||
|
b.Property<string>("NormalizedName")
|
||||||
|
.HasMaxLength(256)
|
||||||
|
.HasColumnType("nvarchar(256)");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.HasIndex("NormalizedName")
|
||||||
|
.IsUnique()
|
||||||
|
.HasDatabaseName("RoleNameIndex")
|
||||||
|
.HasFilter("[NormalizedName] IS NOT NULL");
|
||||||
|
|
||||||
|
b.ToTable("AspNetRoles", (string)null);
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
|
||||||
|
|
||||||
|
b.Property<string>("ClaimType")
|
||||||
|
.HasColumnType("nvarchar(max)");
|
||||||
|
|
||||||
|
b.Property<string>("ClaimValue")
|
||||||
|
.HasColumnType("nvarchar(max)");
|
||||||
|
|
||||||
|
b.Property<string>("RoleId")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("nvarchar(450)");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.HasIndex("RoleId");
|
||||||
|
|
||||||
|
b.ToTable("AspNetRoleClaims", (string)null);
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUser", b =>
|
||||||
|
{
|
||||||
|
b.Property<string>("Id")
|
||||||
|
.HasColumnType("nvarchar(450)");
|
||||||
|
|
||||||
|
b.Property<int>("AccessFailedCount")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<string>("ConcurrencyStamp")
|
||||||
|
.IsConcurrencyToken()
|
||||||
|
.HasColumnType("nvarchar(max)");
|
||||||
|
|
||||||
|
b.Property<string>("Email")
|
||||||
|
.HasMaxLength(256)
|
||||||
|
.HasColumnType("nvarchar(256)");
|
||||||
|
|
||||||
|
b.Property<bool>("EmailConfirmed")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<bool>("LockoutEnabled")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<DateTimeOffset?>("LockoutEnd")
|
||||||
|
.HasColumnType("datetimeoffset");
|
||||||
|
|
||||||
|
b.Property<string>("NormalizedEmail")
|
||||||
|
.HasMaxLength(256)
|
||||||
|
.HasColumnType("nvarchar(256)");
|
||||||
|
|
||||||
|
b.Property<string>("NormalizedUserName")
|
||||||
|
.HasMaxLength(256)
|
||||||
|
.HasColumnType("nvarchar(256)");
|
||||||
|
|
||||||
|
b.Property<string>("PasswordHash")
|
||||||
|
.HasColumnType("nvarchar(max)");
|
||||||
|
|
||||||
|
b.Property<string>("PhoneNumber")
|
||||||
|
.HasColumnType("nvarchar(max)");
|
||||||
|
|
||||||
|
b.Property<bool>("PhoneNumberConfirmed")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<string>("SecurityStamp")
|
||||||
|
.HasColumnType("nvarchar(max)");
|
||||||
|
|
||||||
|
b.Property<bool>("TwoFactorEnabled")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<string>("UserName")
|
||||||
|
.HasMaxLength(256)
|
||||||
|
.HasColumnType("nvarchar(256)");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.HasIndex("NormalizedEmail")
|
||||||
|
.HasDatabaseName("EmailIndex");
|
||||||
|
|
||||||
|
b.HasIndex("NormalizedUserName")
|
||||||
|
.IsUnique()
|
||||||
|
.HasDatabaseName("UserNameIndex")
|
||||||
|
.HasFilter("[NormalizedUserName] IS NOT NULL");
|
||||||
|
|
||||||
|
b.ToTable("AspNetUsers", (string)null);
|
||||||
|
|
||||||
|
b.HasData(
|
||||||
|
new
|
||||||
|
{
|
||||||
|
Id = "0988758e-e16c-4c2c-8c1e-efa3ac5f0274",
|
||||||
|
AccessFailedCount = 0,
|
||||||
|
ConcurrencyStamp = "a2836246-0303-4370-b283-e53a9a3f2813",
|
||||||
|
Email = "adam.g@aycode.com",
|
||||||
|
EmailConfirmed = true,
|
||||||
|
LockoutEnabled = false,
|
||||||
|
NormalizedEmail = "ADAM.G@AYCODE.COM",
|
||||||
|
NormalizedUserName = "ADAM.G@AYCODE.COM",
|
||||||
|
PasswordHash = "AQAAAAIAAYagAAAAEChxKCu+ReGvcZFR/6kPASbpnQdMp1MJuepeRyR4bfHTkUk8SfNAqmckGXvuw+GaGA==",
|
||||||
|
PhoneNumberConfirmed = false,
|
||||||
|
SecurityStamp = "7ecf121a-b0e7-4e30-a1f1-299eeaf0a9cc",
|
||||||
|
TwoFactorEnabled = false,
|
||||||
|
UserName = "adam.g@aycode.com"
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<string>", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
|
||||||
|
|
||||||
|
b.Property<string>("ClaimType")
|
||||||
|
.HasColumnType("nvarchar(max)");
|
||||||
|
|
||||||
|
b.Property<string>("ClaimValue")
|
||||||
|
.HasColumnType("nvarchar(max)");
|
||||||
|
|
||||||
|
b.Property<string>("UserId")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("nvarchar(450)");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.HasIndex("UserId");
|
||||||
|
|
||||||
|
b.ToTable("AspNetUserClaims", (string)null);
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<string>", b =>
|
||||||
|
{
|
||||||
|
b.Property<string>("LoginProvider")
|
||||||
|
.HasMaxLength(128)
|
||||||
|
.HasColumnType("nvarchar(128)");
|
||||||
|
|
||||||
|
b.Property<string>("ProviderKey")
|
||||||
|
.HasMaxLength(128)
|
||||||
|
.HasColumnType("nvarchar(128)");
|
||||||
|
|
||||||
|
b.Property<string>("ProviderDisplayName")
|
||||||
|
.HasColumnType("nvarchar(max)");
|
||||||
|
|
||||||
|
b.Property<string>("UserId")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("nvarchar(450)");
|
||||||
|
|
||||||
|
b.HasKey("LoginProvider", "ProviderKey");
|
||||||
|
|
||||||
|
b.HasIndex("UserId");
|
||||||
|
|
||||||
|
b.ToTable("AspNetUserLogins", (string)null);
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<string>", b =>
|
||||||
|
{
|
||||||
|
b.Property<string>("UserId")
|
||||||
|
.HasColumnType("nvarchar(450)");
|
||||||
|
|
||||||
|
b.Property<string>("RoleId")
|
||||||
|
.HasColumnType("nvarchar(450)");
|
||||||
|
|
||||||
|
b.HasKey("UserId", "RoleId");
|
||||||
|
|
||||||
|
b.HasIndex("RoleId");
|
||||||
|
|
||||||
|
b.ToTable("AspNetUserRoles", (string)null);
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<string>", b =>
|
||||||
|
{
|
||||||
|
b.Property<string>("UserId")
|
||||||
|
.HasColumnType("nvarchar(450)");
|
||||||
|
|
||||||
|
b.Property<string>("LoginProvider")
|
||||||
|
.HasMaxLength(128)
|
||||||
|
.HasColumnType("nvarchar(128)");
|
||||||
|
|
||||||
|
b.Property<string>("Name")
|
||||||
|
.HasMaxLength(128)
|
||||||
|
.HasColumnType("nvarchar(128)");
|
||||||
|
|
||||||
|
b.Property<string>("Value")
|
||||||
|
.HasColumnType("nvarchar(max)");
|
||||||
|
|
||||||
|
b.HasKey("UserId", "LoginProvider", "Name");
|
||||||
|
|
||||||
|
b.ToTable("AspNetUserTokens", (string)null);
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("BLAIzor.Models.CssTemplate", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("BLAIzor.Models.DesignTemplate", "DesignTemplate")
|
||||||
|
.WithOne("CssTemplate")
|
||||||
|
.HasForeignKey("BLAIzor.Models.CssTemplate", "DesignTemplateId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.Navigation("DesignTemplate");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("BLAIzor.Models.DesignTemplate", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", "User")
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey("UserId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.Navigation("User");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("BLAIzor.Models.FormDefinition", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("BLAIzor.Models.SiteInfo", "SiteInfo")
|
||||||
|
.WithMany("FormDefinitions")
|
||||||
|
.HasForeignKey("SiteInfoId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.Navigation("SiteInfo");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("BLAIzor.Models.MenuItem", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("BLAIzor.Models.SiteInfo", "SiteInfo")
|
||||||
|
.WithMany("MenuItems")
|
||||||
|
.HasForeignKey("SiteInfoId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.Navigation("SiteInfo");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("BLAIzor.Models.SiteInfo", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("BLAIzor.Models.DesignTemplate", "Template")
|
||||||
|
.WithMany("Sites")
|
||||||
|
.HasForeignKey("TemplateId")
|
||||||
|
.OnDelete(DeleteBehavior.Restrict);
|
||||||
|
|
||||||
|
b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", "User")
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey("UserId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.Navigation("Template");
|
||||||
|
|
||||||
|
b.Navigation("User");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null)
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey("RoleId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<string>", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null)
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey("UserId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<string>", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null)
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey("UserId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<string>", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null)
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey("RoleId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null)
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey("UserId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<string>", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null)
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey("UserId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("BLAIzor.Models.DesignTemplate", b =>
|
||||||
|
{
|
||||||
|
b.Navigation("CssTemplate")
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.Navigation("Sites");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("BLAIzor.Models.SiteInfo", b =>
|
||||||
|
{
|
||||||
|
b.Navigation("FormDefinitions");
|
||||||
|
|
||||||
|
b.Navigation("MenuItems");
|
||||||
|
});
|
||||||
|
#pragma warning restore 612, 618
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,68 @@
|
||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace BLAIzor.Migrations
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
public partial class SiteDescriptionAndSpeechManagement : Migration
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.AddColumn<bool>(
|
||||||
|
name: "STTActive",
|
||||||
|
table: "SiteInfos",
|
||||||
|
type: "bit",
|
||||||
|
nullable: false,
|
||||||
|
defaultValue: false);
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<string>(
|
||||||
|
name: "SiteDescription",
|
||||||
|
table: "SiteInfos",
|
||||||
|
type: "nvarchar(max)",
|
||||||
|
nullable: true);
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<bool>(
|
||||||
|
name: "TTSActive",
|
||||||
|
table: "SiteInfos",
|
||||||
|
type: "bit",
|
||||||
|
nullable: false,
|
||||||
|
defaultValue: false);
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<string>(
|
||||||
|
name: "StoredHtml",
|
||||||
|
table: "MenuItems",
|
||||||
|
type: "nvarchar(max)",
|
||||||
|
nullable: false,
|
||||||
|
defaultValue: "");
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "SiteInfos",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "STTActive", "SiteDescription", "TTSActive" },
|
||||||
|
values: new object[] { false, null, false });
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "STTActive",
|
||||||
|
table: "SiteInfos");
|
||||||
|
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "SiteDescription",
|
||||||
|
table: "SiteInfos");
|
||||||
|
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "TTSActive",
|
||||||
|
table: "SiteInfos");
|
||||||
|
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "StoredHtml",
|
||||||
|
table: "MenuItems");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -192,6 +192,10 @@ namespace BLAIzor.Migrations
|
||||||
b.Property<int>("SortOrder")
|
b.Property<int>("SortOrder")
|
||||||
.HasColumnType("int");
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<string>("StoredHtml")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("nvarchar(max)");
|
||||||
|
|
||||||
b.HasKey("Id");
|
b.HasKey("Id");
|
||||||
|
|
||||||
b.HasIndex("SiteInfoId");
|
b.HasIndex("SiteInfoId");
|
||||||
|
|
@ -224,9 +228,18 @@ namespace BLAIzor.Migrations
|
||||||
b.Property<bool>("IsPublished")
|
b.Property<bool>("IsPublished")
|
||||||
.HasColumnType("bit");
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<bool>("STTActive")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<string>("SiteDescription")
|
||||||
|
.HasColumnType("nvarchar(max)");
|
||||||
|
|
||||||
b.Property<string>("SiteName")
|
b.Property<string>("SiteName")
|
||||||
.HasColumnType("nvarchar(max)");
|
.HasColumnType("nvarchar(max)");
|
||||||
|
|
||||||
|
b.Property<bool>("TTSActive")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
b.Property<int?>("TemplateId")
|
b.Property<int?>("TemplateId")
|
||||||
.HasColumnType("int");
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
|
@ -251,7 +264,9 @@ namespace BLAIzor.Migrations
|
||||||
DefaultUrl = "https://ai.poppixel.cloud",
|
DefaultUrl = "https://ai.poppixel.cloud",
|
||||||
DomainUrl = "poppixel.cloud",
|
DomainUrl = "poppixel.cloud",
|
||||||
IsPublished = false,
|
IsPublished = false,
|
||||||
|
STTActive = false,
|
||||||
SiteName = "Default Site",
|
SiteName = "Default Site",
|
||||||
|
TTSActive = false,
|
||||||
TemplateId = 1,
|
TemplateId = 1,
|
||||||
UserId = "0988758e-e16c-4c2c-8c1e-efa3ac5f0274"
|
UserId = "0988758e-e16c-4c2c-8c1e-efa3ac5f0274"
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,8 @@ namespace BLAIzor.Models
|
||||||
|
|
||||||
public bool ShowInMainMenu { get; set; } = false;
|
public bool ShowInMainMenu { get; set; } = false;
|
||||||
|
|
||||||
|
public string StoredHtml { get; set; }
|
||||||
|
|
||||||
public Guid? QdrantPointId { get; set; }
|
public Guid? QdrantPointId { get; set; }
|
||||||
|
|
||||||
[ForeignKey("SiteInfo")]
|
[ForeignKey("SiteInfo")]
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ namespace BLAIzor.Models
|
||||||
public int Id { get; set; }
|
public int Id { get; set; }
|
||||||
|
|
||||||
public string? SiteName { get; set; }
|
public string? SiteName { get; set; }
|
||||||
|
public string? SiteDescription { get; set; }
|
||||||
|
|
||||||
public string? BrandLogoUrl { get; set; }
|
public string? BrandLogoUrl { get; set; }
|
||||||
|
|
||||||
|
|
@ -24,6 +25,8 @@ namespace BLAIzor.Models
|
||||||
public string DefaultUrl { get; set; } // For generated subdomains
|
public string DefaultUrl { get; set; } // For generated subdomains
|
||||||
public bool IsPublished { get; set; } // For generated subdomains
|
public bool IsPublished { get; set; } // For generated subdomains
|
||||||
public int? TemplateId { get; set; }
|
public int? TemplateId { get; set; }
|
||||||
|
public bool TTSActive { get; set; } = false;
|
||||||
|
public bool STTActive { get; set; } = false;
|
||||||
|
|
||||||
// Navigation property for IdentityUser
|
// Navigation property for IdentityUser
|
||||||
public IdentityUser User { get; set; }
|
public IdentityUser User { get; set; }
|
||||||
|
|
|
||||||
|
|
@ -62,6 +62,7 @@ namespace BLAIzor.Services
|
||||||
public static event Action<string>? OnContentReceiveFinished;
|
public static event Action<string>? OnContentReceiveFinished;
|
||||||
public static event Action<string, string>? OnContentReceivedError;
|
public static event Action<string, string>? OnContentReceivedError;
|
||||||
public static event Action<string, string>? OnStatusChangeReceived;
|
public static event Action<string, string>? OnStatusChangeReceived;
|
||||||
|
public static event Action<string, string>? OnTextContentAvailable;
|
||||||
public string Mood = "cool, and professional";
|
public string Mood = "cool, and professional";
|
||||||
private string _workingContent = null;
|
private string _workingContent = null;
|
||||||
public bool UseWebsocket = false;
|
public bool UseWebsocket = false;
|
||||||
|
|
@ -124,6 +125,7 @@ namespace BLAIzor.Services
|
||||||
//"and generate a short" +Mood+ "but kind marketing-oriented welcome message and introduction of the brand for the user, constructed as simple Bootstrap HTML codeblock with a <h1> tagged title and a paragraph." +
|
//"and generate a short" +Mood+ "but kind marketing-oriented welcome message and introduction of the brand for the user, constructed as simple Bootstrap HTML codeblock with a <h1> tagged title and a paragraph." +
|
||||||
"and generate a" + Mood + " marketing-oriented welcome message and a summary of the content and introduction of the brand for the user, aiming to explain clearly, what does the company/person offer, constructed as simple Bootstrap HTML codeblock with a <h1> tagged title and a paragraph." +
|
"and generate a" + Mood + " marketing-oriented welcome message and a summary of the content and introduction of the brand for the user, aiming to explain clearly, what does the company/person offer, constructed as simple Bootstrap HTML codeblock with a <h1> tagged title and a paragraph." +
|
||||||
"If there is any logo, or not logo but main brand image in the document use that url, and add that as a bootstrap responsive ('img-fluid py-3') image, with the maximum height of 30vh." +
|
"If there is any logo, or not logo but main brand image in the document use that url, and add that as a bootstrap responsive ('img-fluid py-3') image, with the maximum height of 30vh." +
|
||||||
|
//"In the end of your answer, always add in a new row: 'If you have any questions, you can simply ask either by typing in the message box, or by clicking the microphone icon on the top of the page. '"+
|
||||||
"Here is a list of topics " + menuList +
|
"Here is a list of topics " + menuList +
|
||||||
", make a new bootstrap clearfix and after that make a clickable bootstrap styled (btn btn-primary) button from each of the determined topics, " +
|
", make a new bootstrap clearfix and after that make a clickable bootstrap styled (btn btn-primary) button from each of the determined topics, " +
|
||||||
"that calls the javascript function 'callAI({the name of the topic})' on click. " +
|
"that calls the javascript function 'callAI({the name of the topic})' on click. " +
|
||||||
|
|
@ -177,6 +179,7 @@ namespace BLAIzor.Services
|
||||||
|
|
||||||
var baseResult = await ValidateAndFixJson<ChatGPTResultBase>(resultJson, FixJsonWithAI);
|
var baseResult = await ValidateAndFixJson<ChatGPTResultBase>(resultJson, FixJsonWithAI);
|
||||||
//var baseResult = System.Text.Json.JsonSerializer.Deserialize<ChatGPTResultBase>(resultJson, new JsonSerializerOptions { PropertyNameCaseInsensitive = true });
|
//var baseResult = System.Text.Json.JsonSerializer.Deserialize<ChatGPTResultBase>(resultJson, new JsonSerializerOptions { PropertyNameCaseInsensitive = true });
|
||||||
|
var fixedResult = System.Text.Json.JsonSerializer.Serialize(baseResult);
|
||||||
|
|
||||||
if (baseResult == null)
|
if (baseResult == null)
|
||||||
{
|
{
|
||||||
|
|
@ -194,15 +197,15 @@ namespace BLAIzor.Services
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "textresult":
|
case "textresult":
|
||||||
await ProcessTextResult(sessionId, resultJson, templateId, collectionName);
|
await ProcessTextResult(sessionId, fixedResult, templateId, collectionName);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "examinationresult":
|
case "examinationresult":
|
||||||
await ProcessExaminationResult(sessionId, resultJson, templateId, collectionName);
|
await ProcessExaminationResult(sessionId, fixedResult, templateId, collectionName);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "errorresult":
|
case "errorresult":
|
||||||
await ProcessErrorResult(sessionId, resultJson);
|
await ProcessErrorResult(sessionId, fixedResult);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
@ -243,6 +246,7 @@ namespace BLAIzor.Services
|
||||||
extractedText = _selectedPoint.result.payload.name + ": " + _selectedPoint.result.payload.content + ", ";
|
extractedText = _selectedPoint.result.payload.name + ": " + _selectedPoint.result.payload.content + ", ";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
string contentJson = await GetContentFromQuery(sessionId,
|
string contentJson = await GetContentFromQuery(sessionId,
|
||||||
"Enhance this text if needed, making its style and grammar suitable to be displayed as the content of a webpage",
|
"Enhance this text if needed, making its style and grammar suitable to be displayed as the content of a webpage",
|
||||||
extractedText,
|
extractedText,
|
||||||
|
|
@ -263,7 +267,7 @@ namespace BLAIzor.Services
|
||||||
OnStatusChangeReceived?.Invoke(sessionId, "Determining search vectors");
|
OnStatusChangeReceived?.Invoke(sessionId, "Determining search vectors");
|
||||||
vector = await _openAIEmbeddingService.GenerateEmbeddingAsync(requestedMenu);
|
vector = await _openAIEmbeddingService.GenerateEmbeddingAsync(requestedMenu);
|
||||||
OnStatusChangeReceived?.Invoke(sessionId, "Looking up content in the knowledge database");
|
OnStatusChangeReceived?.Invoke(sessionId, "Looking up content in the knowledge database");
|
||||||
var pointId = await _qDrantService.QueryContentAsync(siteId, vector, 1);
|
var pointId = await _qDrantService.QueryContentAsync(siteId, vector, 3);
|
||||||
|
|
||||||
|
|
||||||
if (pointId.Length > 0)
|
if (pointId.Length > 0)
|
||||||
|
|
@ -417,6 +421,9 @@ namespace BLAIzor.Services
|
||||||
//contentResult.Photos.Add("Clarification request", "https://www.reactiongifs.com/r/martin.gif");
|
//contentResult.Photos.Add("Clarification request", "https://www.reactiongifs.com/r/martin.gif");
|
||||||
//contentResult.Photos.Add("Compliment response", "https://www.reactiongifs.com/r/review.gif");
|
//contentResult.Photos.Add("Compliment response", "https://www.reactiongifs.com/r/review.gif");
|
||||||
|
|
||||||
|
//We have the text all available now, let's pass it to the voice generator
|
||||||
|
OnTextContentAvailable?.Invoke(sessionId, fixedResult.Text);
|
||||||
|
|
||||||
string snippets = await GetSnippetsForDisplay(sessionId, templateId, fixedResult.Text, collectionName);
|
string snippets = await GetSnippetsForDisplay(sessionId, templateId, fixedResult.Text, collectionName);
|
||||||
await DisplayHtml(sessionId, fixedResult.Text, "", "", snippets, fixedResult.Topics, fixedResult.Photos);
|
await DisplayHtml(sessionId, fixedResult.Text, "", "", snippets, fixedResult.Topics, fixedResult.Photos);
|
||||||
}
|
}
|
||||||
|
|
@ -460,7 +467,7 @@ namespace BLAIzor.Services
|
||||||
string systemMessage = "";
|
string systemMessage = "";
|
||||||
if(forceUnmodified)
|
if(forceUnmodified)
|
||||||
{
|
{
|
||||||
systemMessage = "You are a helpful assistant of a website. Respond in the name of the brand or person in the content, strictly in " + _scopedContentService.SelectedLanguage + " with a plain JSON object in the following format:\r\n\r\n1. " +
|
systemMessage = "You are a helpful assistant of a website. Display the Content strictly in " + _scopedContentService.SelectedLanguage + " with a plain JSON object in the following format:\r\n\r\n1. " +
|
||||||
//"**chatGPTContentResult**:\r\n " +
|
//"**chatGPTContentResult**:\r\n " +
|
||||||
"- `type`: A string with value `contentresult`.\r\n " +
|
"- `type`: A string with value `contentresult`.\r\n " +
|
||||||
"- `text`: A string with the actual response.\r\n " +
|
"- `text`: A string with the actual response.\r\n " +
|
||||||
|
|
@ -474,13 +481,14 @@ namespace BLAIzor.Services
|
||||||
"- Turn the following content into a nice informative webpage content.\r\n " +
|
"- Turn the following content into a nice informative webpage content.\r\n " +
|
||||||
"- Start with the page title.\r\n" +
|
"- Start with the page title.\r\n" +
|
||||||
"- Structure it nicely without leaving out any information.\r\n " +
|
"- Structure it nicely without leaving out any information.\r\n " +
|
||||||
"*** CONTENT START *** {" + extractedText + "} *** CONTENT END ***.\r\n" +
|
//"*** CONTENT START *** {" + extractedText + "} *** CONTENT END ***.\r\n" +
|
||||||
"**Style and Image Handling**:\r\n" +
|
"**Style and Image Handling**:\r\n" +
|
||||||
"- Make sure the json is valid json." +
|
"- Make sure the json is valid json." +
|
||||||
"- Do NOT include extraneous text outside the JSON structure.\r\n\r\n" +
|
"- Do NOT include extraneous text outside the JSON structure.\r\n\r\n" +
|
||||||
"When you understand the input, follow these rules strictly. Otherwise, seek clarification.\r\n" +
|
"When you understand the input, follow these rules strictly. Otherwise, seek clarification.\r\n" +
|
||||||
"Do not include linebreaks or any formatting, just the plain json string. Make sure it is valid json, and every objects is closed properly" +
|
"Do not include linebreaks or any formatting, just the plain json string. Make sure it is valid json, and every objects is closed properly" +
|
||||||
"Do NOT mark your answer with anything like `````json, and do not add any explanation.";
|
"Do NOT mark your answer with anything like `````json, and do not add any explanation.";
|
||||||
|
userPrompt = "Give me a formatted json from this content, without modifying the text: " + extractedText;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -496,9 +504,9 @@ namespace BLAIzor.Services
|
||||||
"Step 2: After that add the above mentioned relevant image urls list." +
|
"Step 2: After that add the above mentioned relevant image urls list." +
|
||||||
"Step 3: " +
|
"Step 3: " +
|
||||||
"- Base a detailed, but not lengthy response solely on the initial document provided below. " +
|
"- Base a detailed, but not lengthy response solely on the initial document provided below. " +
|
||||||
"- In your response, summarize all relevant information in the document, that is connected to the question." +
|
"- In your response, summarize ALL relevant information in the document, that is connected to the question." +
|
||||||
"*** CONTENT START *** {" + extractedText + "} *** CONTENT END ***.\r\n" +
|
"*** CONTENT START *** {" + extractedText + "} *** CONTENT END ***.\r\n" +
|
||||||
"- For missing information: Inform the user and provide a clarification. " +
|
"- For missing information: Inform the user and ask if you can help with something else. " +
|
||||||
//"- Do not generate lengthy answers." +
|
//"- Do not generate lengthy answers." +
|
||||||
"- If the user prompt is clear and they ask specific, well defined question, do not add other infromation or welcome message." +
|
"- If the user prompt is clear and they ask specific, well defined question, do not add other infromation or welcome message." +
|
||||||
"- If the user prompt is unclear, or makes no sense, ask for clarification." +
|
"- If the user prompt is unclear, or makes no sense, ask for clarification." +
|
||||||
|
|
@ -721,7 +729,7 @@ namespace BLAIzor.Services
|
||||||
|
|
||||||
string systemMessage = $"You are a helpful assistant built in a website, trying to figure out what the User wants to do or know about.\r\n" +
|
string systemMessage = $"You are a helpful assistant built in a website, trying to figure out what the User wants to do or know about.\r\n" +
|
||||||
"Your job is to classify the user's request into one of the following categories:\r\n" +
|
"Your job is to classify the user's request into one of the following categories:\r\n" +
|
||||||
"1. **Browse the website’s content** (Return a 'Text result')\r\n" +
|
"1. **Ask about or search infromation in the website’s content** (Return a 'Text result')\r\n" +
|
||||||
"2. **Analyze the currently displayed HTML content** (Return an 'Examination result')\r\n" +
|
"2. **Analyze the currently displayed HTML content** (Return an 'Examination result')\r\n" +
|
||||||
"3. **Initiate an action** (Return a 'Method result')\r\n" +
|
"3. **Initiate an action** (Return a 'Method result')\r\n" +
|
||||||
"If none of the above applies, return an 'Error result'.\r\n\r\n" +
|
"If none of the above applies, return an 'Error result'.\r\n\r\n" +
|
||||||
|
|
@ -907,78 +915,6 @@ namespace BLAIzor.Services
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//public async Task DisplayHtmlOld(string sessionId, string interMediateResult, string methodToCall = "", string methodParameter = "", string htmlToUse = "", string[]? topics = null, Dictionary<string, string>? photos = null)
|
|
||||||
//{
|
|
||||||
// Console.Write($"\n SessionId: {sessionId} \n");
|
|
||||||
// OnStatusChangeReceived?.Invoke(sessionId, "Casting spells to draw customized UI");
|
|
||||||
// _apiKey = GetApiKey();
|
|
||||||
// StringBuilder lst = new StringBuilder("You are a helpful assistant generating HTML responses in " + _scopedContentService.SelectedLanguage + " using Bootstrap. " +
|
|
||||||
// "Rules to follow:" +
|
|
||||||
// "- Based on the user's query and retrieved content, generate HTML that fits into a Bootstrap container. \r\n" +
|
|
||||||
// "- Begin with an `<h1>` tag styled with the 'p-3' class, and include a title based on the user's query. \r\n" +
|
|
||||||
// "- Use separate div element with `row` class for different logical sections." +
|
|
||||||
// "- Do not include elements outside the container (e.g., `<head>`, `<body>`, or `<script>` tags). ");
|
|
||||||
|
|
||||||
// if (!string.IsNullOrEmpty(methodToCall))
|
|
||||||
// {
|
|
||||||
// lst.AppendLine("Create a single clickable Bootstrap button (`btn btn-primary`) that calls the JavaScript function `" + methodToCall + "` with '" + methodParameter + "' on click. " +
|
|
||||||
// "Place this button at the end of the generated HTML. " +
|
|
||||||
// "Do NOT mark your answer with anything like `````html or such.");
|
|
||||||
// }
|
|
||||||
// else
|
|
||||||
// {
|
|
||||||
// if (!string.IsNullOrEmpty(htmlToUse))
|
|
||||||
// {
|
|
||||||
// lst.AppendLine("Use the following snippets when applicable: \n \n " + htmlToUse + ". \n \n For other content, use appropriate Bootstrap elements. " +
|
|
||||||
// "Structure the content using Bootstrap layouts: " +
|
|
||||||
|
|
||||||
// //"If there is a `styles to be applied` section in the content, include it as a `<style>` tag at the beginning of the HTML. " +
|
|
||||||
// " - Use 'row justify-content-center' for layout, 'col-xs-12 col-sm-6 col-md-3 text-center' for product cards, and 'img-fluid' for images. \r\n" +
|
|
||||||
// " - Separate logical sections using Bootstrap utilities like `clearfix`. Avoid unrelated elements and the use of the `d-grid` class inside `col` elements. \r\n" +
|
|
||||||
// " - DO NOT use d-grid class. Ever. \r\n" +
|
|
||||||
// "If you render a button you have two options: \r\n" +
|
|
||||||
// "1. Render a button for a url you found in the text\r\n" +
|
|
||||||
// "2. Any other button, which is not based on a url found in the content should call the JavaScript function `callAI({topic})` on click. \r\n" +
|
|
||||||
// "Do NOT generate fake image urls if there is no image url provided. \r\n");
|
|
||||||
// }
|
|
||||||
// if (photos != null)
|
|
||||||
// {
|
|
||||||
// lst.AppendLine("- Include related photo URLs from the following list where applicable without modifying the urls. " +
|
|
||||||
// "Photo urls: " + string.Join(", ", photos.Select(kv => $"{kv.Key}: {kv.Value}")) + ". \r\n" +
|
|
||||||
// "DO NOT modifiy the photo urls in any way.");
|
|
||||||
// }
|
|
||||||
|
|
||||||
// lst.AppendLine("- NEVER render image elements if you didn't find any image url in the `photo list`" +
|
|
||||||
// "- Maintain the original text content; do not moddify names, or mix information, only convert it into Bootstrap-styled HTML. \r\n");
|
|
||||||
|
|
||||||
|
|
||||||
// if (topics != null && topics.Any())
|
|
||||||
// {
|
|
||||||
// lst.AppendLine("- Here are the topics: " + string.Join(", ", topics) + ". Create a button for each topic using the `btn btn-primary` class." +
|
|
||||||
// "Each button should call the JavaScript function `callAI({topicName})` on click, and these buttons should appear at the end of the generated HTML. \r\n");
|
|
||||||
// }
|
|
||||||
// else
|
|
||||||
// {
|
|
||||||
// lst.AppendLine("- No topics are provided. Do not generate navigational topic buttons.");
|
|
||||||
// }
|
|
||||||
|
|
||||||
// }
|
|
||||||
// lst.AppendLine("- Do not add explanations and do not mark your response with ```html or similar syntax.");
|
|
||||||
// string systemMesage = lst.ToString();
|
|
||||||
// string userMessage = "Make a nice bootstrap 5 page content from the provided text, please.";
|
|
||||||
// string assistantMessage = "`Provided text to display as html`: `" + interMediateResult + "`";
|
|
||||||
// if (!UseWebsocket)
|
|
||||||
// {
|
|
||||||
// await _openAIApiService.GetChatGPTStreamedResponse(sessionId, systemMesage, userMessage, assistantMessage);
|
|
||||||
// }
|
|
||||||
// else
|
|
||||||
// {
|
|
||||||
// await _openAIRealtimeService.GetChatGPTResponseAsync(sessionId, systemMesage, userMessage + assistantMessage);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// //return response;
|
|
||||||
//}
|
|
||||||
|
|
||||||
public async Task DisplayHtml(string sessionId, string interMediateResult, string methodToCall = "", string methodParameter = "", string htmlToUse = "", string[]? topics = null, Dictionary<string, string>? photos = null)
|
public async Task DisplayHtml(string sessionId, string interMediateResult, string methodToCall = "", string methodParameter = "", string htmlToUse = "", string[]? topics = null, Dictionary<string, string>? photos = null)
|
||||||
{
|
{
|
||||||
Console.Write($"\n SessionId: {sessionId} \n");
|
Console.Write($"\n SessionId: {sessionId} \n");
|
||||||
|
|
@ -995,6 +931,11 @@ namespace BLAIzor.Services
|
||||||
"- DO NOT include `<head>`, `<body>`, or `<script>` tags—only content inside the Bootstrap container.\n" +
|
"- DO NOT include `<head>`, `<body>`, or `<script>` tags—only content inside the Bootstrap container.\n" +
|
||||||
"- Use `<h1 class='p-3'>` for the title, based on the user's query.\n" +
|
"- Use `<h1 class='p-3'>` for the title, based on the user's query.\n" +
|
||||||
"- Structure content using **separate `row` elements** for different sections.\n" +
|
"- Structure content using **separate `row` elements** for different sections.\n" +
|
||||||
|
"- Use Bootstrap classes to ensure proper spacing and alignment.\n" +
|
||||||
|
" - Use 'row justify-content-center' for layout, 'col-xx-x' classes for columns (ONLY IF multiple columns are needed), and always use 'img-fluid' class for images. \r\n" +
|
||||||
|
" - Do NOT use and 'col' class if there is only one column to display in the row. \n" +
|
||||||
|
"- Do NOT use additional class for paragraphs! \n" +
|
||||||
|
"- Do NOT nest images inside paragraphs! \n" +
|
||||||
"- Ensure clear **separation of content into multiple sections if multiple snippets are provided**.\n");
|
"- Ensure clear **separation of content into multiple sections if multiple snippets are provided**.\n");
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(methodToCall))
|
if (!string.IsNullOrEmpty(methodToCall))
|
||||||
|
|
@ -1023,8 +964,7 @@ namespace BLAIzor.Services
|
||||||
" </div>\n" +
|
" </div>\n" +
|
||||||
" </div>\n" +
|
" </div>\n" +
|
||||||
" ```\n\n" +
|
" ```\n\n" +
|
||||||
"- Use Bootstrap classes to ensure proper spacing and alignment.\n" +
|
|
||||||
" - Use 'row justify-content-center' for layout, 'col-xx-x' classes for columns (IF multiple columns are needed), and always use 'img-fluid' class for images. \r\n" +
|
|
||||||
"- If a snippet contains a button, ensure it is placed inside a `div.text-center` for proper alignment.\n");
|
"- If a snippet contains a button, ensure it is placed inside a `div.text-center` for proper alignment.\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1070,12 +1010,14 @@ namespace BLAIzor.Services
|
||||||
"- DO **NOT** merge different content sections.\n" +
|
"- DO **NOT** merge different content sections.\n" +
|
||||||
"- DO **NOT** wrap the entire content in a single `div`—use separate `row` divs.\n" +
|
"- DO **NOT** wrap the entire content in a single `div`—use separate `row` divs.\n" +
|
||||||
"- DO **NOT** modify the photo urls in any way." +
|
"- DO **NOT** modify the photo urls in any way." +
|
||||||
"- Do **NOT** generate or assume new image URLs.\n" +
|
"- Do **NOT** generate or assume new photo URLs.\n" +
|
||||||
"- If the snippet contains an image, but there is no photo url available, skip the image element." +
|
"- Do **NOT** skip or deny ANY part of the provided text. All of the provided text should be displayed as html\n" +
|
||||||
|
"- Do **NOT** assume ANY content, like missing prices, missing links. \n" +
|
||||||
|
"- If the snippet contains an image, but there is no photo url available, SKIP adding the image tag." +
|
||||||
"- **Never** add explanations or start with ```html syntax markers.\n");
|
"- **Never** add explanations or start with ```html syntax markers.\n");
|
||||||
|
|
||||||
string systemMessage = lst.ToString();
|
string systemMessage = lst.ToString();
|
||||||
string userMessage = "Create a perfect, production ready, structured Bootstrap 5 page content from the provided text, please.";
|
string userMessage = "Create a perfect, production ready, structured, responsive Bootstrap 5 webpage content from the provided text, please.";
|
||||||
string assistantMessage = "`Provided text to display as HTML`: `" + interMediateResult + "`";
|
string assistantMessage = "`Provided text to display as HTML`: `" + interMediateResult + "`";
|
||||||
//int mode = -1;
|
//int mode = -1;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -160,11 +160,15 @@ namespace BLAIzor.Services
|
||||||
await _qDrantService.CreateQdrantCollectionAsync("Site" + SiteId.ToString());
|
await _qDrantService.CreateQdrantCollectionAsync("Site" + SiteId.ToString());
|
||||||
hasCollection = true;
|
hasCollection = true;
|
||||||
}
|
}
|
||||||
|
var updateQdrantList = ExtractedMenuItems.OrderBy(mi => mi.MenuItem.PointId).ToList();
|
||||||
|
|
||||||
|
for (int i = 0; i < updateQdrantList.Count(); i++)
|
||||||
for (int i = 0; i < ExtractedMenuItems.Count(); i++)
|
|
||||||
{
|
{
|
||||||
MenuItem menuItem = new MenuItem();
|
MenuItem menuItem = new MenuItem();
|
||||||
|
menuItem.Name = ExtractedMenuItems[i].MenuItem.Name;
|
||||||
|
menuItem.SortOrder = i;
|
||||||
|
menuItem.SiteInfoId = SiteId;
|
||||||
|
menuItem.ShowInMainMenu = true;
|
||||||
if (!string.IsNullOrEmpty(ExtractedMenuItems[i].Content)) //if we have content in the menuItem, let's update the vector DB
|
if (!string.IsNullOrEmpty(ExtractedMenuItems[i].Content)) //if we have content in the menuItem, let's update the vector DB
|
||||||
{
|
{
|
||||||
if(updateVectorDatabase)
|
if(updateVectorDatabase)
|
||||||
|
|
@ -181,7 +185,7 @@ namespace BLAIzor.Services
|
||||||
content.LastUpdated = DateTime.UtcNow;
|
content.LastUpdated = DateTime.UtcNow;
|
||||||
|
|
||||||
menuItem.QdrantPointId = guid;
|
menuItem.QdrantPointId = guid;
|
||||||
|
menuItem.PointId = i;
|
||||||
await _htmlSnippetProcessor.ProcessAndStoreWebContentAsync(i, content, SiteId);
|
await _htmlSnippetProcessor.ProcessAndStoreWebContentAsync(i, content, SiteId);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -193,10 +197,10 @@ namespace BLAIzor.Services
|
||||||
|
|
||||||
if (!menuItemsSaved) //menuItems just extracted, no content yet because that can be generated only after menuItems have been saved first
|
if (!menuItemsSaved) //menuItems just extracted, no content yet because that can be generated only after menuItems have been saved first
|
||||||
{
|
{
|
||||||
menuItem.Name = ExtractedMenuItems[i].MenuItem.Name;
|
//menuItem.Name = ExtractedMenuItems[i].MenuItem.Name;
|
||||||
menuItem.SortOrder = i;
|
//menuItem.SortOrder = i;
|
||||||
menuItem.SiteInfoId = SiteId;
|
//menuItem.SiteInfoId = SiteId;
|
||||||
menuItem.ShowInMainMenu = true;
|
//menuItem.ShowInMainMenu = true;
|
||||||
await AddMenuItemAsync(menuItem);
|
await AddMenuItemAsync(menuItem);
|
||||||
}
|
}
|
||||||
else //menuItems available already
|
else //menuItems available already
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
// Services/IllustrationBridge.cs
|
||||||
|
using Microsoft.JSInterop;
|
||||||
|
|
||||||
|
namespace BLAIzor.Services
|
||||||
|
{
|
||||||
|
public static class IllustrationBridge
|
||||||
|
{
|
||||||
|
// A static delegate to allow any component to register its prompt handler
|
||||||
|
public static Func<string, Task>? OnPromptReceived;
|
||||||
|
|
||||||
|
[JSInvokable("OnNewIllustrationPrompt")]
|
||||||
|
public static async Task HandlePrompt(string prompt)
|
||||||
|
{
|
||||||
|
Console.WriteLine($"[Bridge] Prompt received from JS: {prompt}");
|
||||||
|
if (OnPromptReceived is not null)
|
||||||
|
{
|
||||||
|
await OnPromptReceived(prompt);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -2,6 +2,7 @@
|
||||||
using System.Net.Http;
|
using System.Net.Http;
|
||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
using System.Net.Http.Headers;
|
||||||
|
|
||||||
namespace BLAIzor.Services
|
namespace BLAIzor.Services
|
||||||
{
|
{
|
||||||
|
|
@ -14,6 +15,7 @@ namespace BLAIzor.Services
|
||||||
private static Action<string, string>? _onError;
|
private static Action<string, string>? _onError;
|
||||||
|
|
||||||
private const string OpenAiEndpoint = "https://api.openai.com/v1/chat/completions";
|
private const string OpenAiEndpoint = "https://api.openai.com/v1/chat/completions";
|
||||||
|
private const string OpenAiImageEndpoint = "https://api.openai.com/v1/images/generations";
|
||||||
|
|
||||||
public OpenAIApiService(IConfiguration configuration, HttpClient httpClient)
|
public OpenAIApiService(IConfiguration configuration, HttpClient httpClient)
|
||||||
{
|
{
|
||||||
|
|
@ -254,5 +256,40 @@ namespace BLAIzor.Services
|
||||||
|
|
||||||
return stringBuilder.ToString();
|
return stringBuilder.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public async Task<string?> GenerateImageAsync(string prompt)
|
||||||
|
{
|
||||||
|
var request = new HttpRequestMessage(HttpMethod.Post, OpenAiImageEndpoint);
|
||||||
|
//request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", GetApiKey());
|
||||||
|
|
||||||
|
var requestBody = new
|
||||||
|
{
|
||||||
|
model = "gpt-image-1",
|
||||||
|
prompt = prompt,
|
||||||
|
n = 1,
|
||||||
|
size = "1024x1024"
|
||||||
|
};
|
||||||
|
|
||||||
|
request.Content = new StringContent(JsonSerializer.Serialize(requestBody), Encoding.UTF8, "application/json");
|
||||||
|
|
||||||
|
var response = await _httpClient.SendAsync(request);
|
||||||
|
if (!response.IsSuccessStatusCode)
|
||||||
|
{
|
||||||
|
var error = await response.Content.ReadAsStringAsync();
|
||||||
|
Console.WriteLine($"Image generation failed: {error}");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
using var content = await response.Content.ReadAsStreamAsync();
|
||||||
|
var json = await JsonDocument.ParseAsync(content);
|
||||||
|
|
||||||
|
var base64Image = json.RootElement
|
||||||
|
.GetProperty("data")[0]
|
||||||
|
.GetProperty("b64_json")
|
||||||
|
.GetString();
|
||||||
|
|
||||||
|
return $"data:image/png;base64,{base64Image}";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -21,8 +21,9 @@
|
||||||
"Password": "Whoops82_"
|
"Password": "Whoops82_"
|
||||||
},
|
},
|
||||||
"AiSettings": {
|
"AiSettings": {
|
||||||
"Provider": "cerebras"
|
"Provider": "cerebras",
|
||||||
//"Provider": "chatgpt"
|
//"Provider": "chatgpt",
|
||||||
|
"VoiceActivated": true
|
||||||
},
|
},
|
||||||
"DeepSeek": {
|
"DeepSeek": {
|
||||||
"ApiKey": "sk-b97350ccb28c4129b5df08835bf2ea5f"
|
"ApiKey": "sk-b97350ccb28c4129b5df08835bf2ea5f"
|
||||||
|
|
@ -38,9 +39,9 @@
|
||||||
//"CredentialsPath": "D:\\GOOGLECREDENTIALS\\client_secret_359861037120-m3mjvr3kg51i2c2qb38dav62uuqoqs5k.apps.googleusercontent.com.json"
|
//"CredentialsPath": "D:\\GOOGLECREDENTIALS\\client_secret_359861037120-m3mjvr3kg51i2c2qb38dav62uuqoqs5k.apps.googleusercontent.com.json"
|
||||||
"ApiKey": "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",
|
"ApiKey": "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",
|
||||||
//"ApiKey": "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" //VG3Law
|
//"ApiKey": "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" //VG3Law
|
||||||
//"Model": "gpt-4.1-mini"
|
"Model": "gpt-4.1-mini"
|
||||||
//"Model": "gpt-4o-mini"
|
//"Model": "gpt-4o-mini"
|
||||||
"Model": "gpt-4.1-nano"
|
//"Model": "gpt-4.1-nano"
|
||||||
},
|
},
|
||||||
"QDrant": {
|
"QDrant": {
|
||||||
//"CredentialsPath": "D:\\GOOGLECREDENTIALS\\client_secret_359861037120-m3mjvr3kg51i2c2qb38dav62uuqoqs5k.apps.googleusercontent.com.json"
|
//"CredentialsPath": "D:\\GOOGLECREDENTIALS\\client_secret_359861037120-m3mjvr3kg51i2c2qb38dav62uuqoqs5k.apps.googleusercontent.com.json"
|
||||||
|
|
@ -50,5 +51,8 @@
|
||||||
//"CredentialsPath": "D:\\GOOGLECREDENTIALS\\client_secret_359861037120-m3mjvr3kg51i2c2qb38dav62uuqoqs5k.apps.googleusercontent.com.json"
|
//"CredentialsPath": "D:\\GOOGLECREDENTIALS\\client_secret_359861037120-m3mjvr3kg51i2c2qb38dav62uuqoqs5k.apps.googleusercontent.com.json"
|
||||||
"CredentialsPath": "D:\\GOOGLECREDENTIALS\\auiu-443908-3e45ecc1c67f.json"
|
"CredentialsPath": "D:\\GOOGLECREDENTIALS\\auiu-443908-3e45ecc1c67f.json"
|
||||||
},
|
},
|
||||||
|
"ElevenLabsAPI": {
|
||||||
|
"ApiKey": "sk_adaa84dce6ed60504c71aff230f2b8bdbd0effa347f715b6"
|
||||||
|
},
|
||||||
"AllowedHosts": "*"
|
"AllowedHosts": "*"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 1.1 MiB |
Binary file not shown.
|
After Width: | Height: | Size: 2.4 MiB |
|
|
@ -1,6 +1,46 @@
|
||||||
/*@import url('https://fonts.googleapis.com/css2?family=Quicksand&display=swap');
|
/*@import url('https://fonts.googleapis.com/css2?family=Quicksand&display=swap');
|
||||||
@import url('https://fonts.googleapis.com/css?family=Comfortaa:400,700,300');*/
|
@import url('https://fonts.googleapis.com/css?family=Comfortaa:400,700,300');*/
|
||||||
|
|
||||||
|
._poweredBy_1f9vw_251 {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Hint styling */
|
||||||
|
.floating-hint {
|
||||||
|
position: absolute;
|
||||||
|
background: #fff9c4;
|
||||||
|
color: #333;
|
||||||
|
padding: 6px 12px;
|
||||||
|
margin: 10px;
|
||||||
|
border-radius: 15px;
|
||||||
|
box-shadow: 0 2px 6px rgba(0,0,0,0.2);
|
||||||
|
font-size: 0.9rem;
|
||||||
|
white-space: nowrap;
|
||||||
|
z-index: 1000;
|
||||||
|
animation: float 0.6s ease-in-out infinite;
|
||||||
|
pointer-events: none;
|
||||||
|
opacity: 0;
|
||||||
|
transition: opacity 0.3s;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes float {
|
||||||
|
0% {
|
||||||
|
box-shadow: 0 5px 15px 0px rgba(0,0,0,0.6);
|
||||||
|
transform: translatey(0px);
|
||||||
|
}
|
||||||
|
|
||||||
|
50% {
|
||||||
|
box-shadow: 0 25px 15px 0px rgba(0,0,0,0.2);
|
||||||
|
transform: translatey(-20px);
|
||||||
|
}
|
||||||
|
|
||||||
|
100% {
|
||||||
|
box-shadow: 0 5px 15px 0px rgba(0,0,0,0.6);
|
||||||
|
transform: translatey(0px);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.upload-image-container {
|
.upload-image-container {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
|
@ -18,8 +58,11 @@
|
||||||
object-fit: cover; /* Ensures the image fills the container */
|
object-fit: cover; /* Ensures the image fills the container */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*Search2*/
|
/*Search2*/
|
||||||
.searchBox {
|
.searchBox {
|
||||||
|
position: relative;
|
||||||
width: 60px;
|
width: 60px;
|
||||||
background: rgba(255, 255, 255, 0.3);
|
background: rgba(255, 255, 255, 0.3);
|
||||||
height: 60px;
|
height: 60px;
|
||||||
|
|
@ -27,6 +70,7 @@
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
transition: 0.8s;
|
transition: 0.8s;
|
||||||
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
.searchInput:active > .searchBox{
|
.searchInput:active > .searchBox{
|
||||||
|
|
@ -61,10 +105,11 @@
|
||||||
background-size: 130vmax 130vmax, 80vmax 80vmax, 90vmax 90vmax, 110vmax 110vmax, 90vmax 90vmax;
|
background-size: 130vmax 130vmax, 80vmax 80vmax, 90vmax 90vmax, 110vmax 110vmax, 90vmax 90vmax;
|
||||||
background-position: -80vmax -80vmax, 60vmax -30vmax, 10vmax 10vmax, -30vmax -10vmax, 50vmax 50vmax;
|
background-position: -80vmax -80vmax, 60vmax -30vmax, 10vmax 10vmax, -30vmax -10vmax, 50vmax 50vmax;
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
animation: 10s movement linear infinite;
|
animation: 1s movement linear infinite;
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
z-index: 100;
|
||||||
}
|
}
|
||||||
|
|
||||||
.searchInput {
|
.searchInput {
|
||||||
|
|
|
||||||
|
|
@ -14,3 +14,95 @@
|
||||||
window.getUserLanguage = () => {
|
window.getUserLanguage = () => {
|
||||||
return navigator.language || navigator.userLanguage || "en";
|
return navigator.language || navigator.userLanguage || "en";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
window.playAudio = (audioDataUrl) => {
|
||||||
|
const audio = document.getElementById('audioPlayer');
|
||||||
|
audio.src = audioDataUrl;
|
||||||
|
audio.style.display = 'block';
|
||||||
|
audio.play();
|
||||||
|
};
|
||||||
|
|
||||||
|
window.initHints = () => {
|
||||||
|
const targets = document.querySelectorAll('[data-hint]');
|
||||||
|
if (!targets.length) {
|
||||||
|
console.warn("No elements with data-hint found.");
|
||||||
|
}
|
||||||
|
|
||||||
|
targets.forEach(target => {
|
||||||
|
const hintText = target.getAttribute('data-hint');
|
||||||
|
console.log("---------------HINT---------------------", hintText);
|
||||||
|
const hint = document.createElement('div');
|
||||||
|
hint.className = 'floating-hint';
|
||||||
|
hint.innerText = hintText;
|
||||||
|
document.body.appendChild(hint);
|
||||||
|
|
||||||
|
const showHint = () => {
|
||||||
|
const rect = target.getBoundingClientRect();
|
||||||
|
hint.style.left = `${rect.left + window.scrollX + rect.width + 8}px`;
|
||||||
|
hint.style.top = `${rect.top + window.scrollY}px`;
|
||||||
|
hint.style.opacity = '1';
|
||||||
|
setTimeout(() => hint.style.opacity = '0', 3000);
|
||||||
|
};
|
||||||
|
|
||||||
|
setInterval(showHint, 10000);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
window.initVoiceRecorder = function (dotnetMethodName) {
|
||||||
|
console.log("initVoiceRecorder called");
|
||||||
|
const recButton = document.getElementById("recButton");
|
||||||
|
const stopButton = document.getElementById("stopButton");
|
||||||
|
const recText = document.getElementById("recordingText");
|
||||||
|
|
||||||
|
if (!recButton || !stopButton || !recText) {
|
||||||
|
console.warn("Voice recorder elements not found");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
let mediaRecorder;
|
||||||
|
let audioChunks = [];
|
||||||
|
|
||||||
|
navigator.permissions.query({ name: 'microphone' }).then(function (result) {
|
||||||
|
if (result.state == 'granted') {
|
||||||
|
} else if (result.state == 'prompt') {
|
||||||
|
} else if (result.state == 'denied') {
|
||||||
|
}
|
||||||
|
result.onchange = function () { };
|
||||||
|
});
|
||||||
|
|
||||||
|
// Define globally so HTML can access it
|
||||||
|
window.startRecording = async function () {
|
||||||
|
recButton.hidden = true;
|
||||||
|
stopButton.hidden = false;
|
||||||
|
recText.textContent = "recording...";
|
||||||
|
|
||||||
|
const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
|
||||||
|
mediaRecorder = new MediaRecorder(stream);
|
||||||
|
|
||||||
|
mediaRecorder.ondataavailable = event => audioChunks.push(event.data);
|
||||||
|
|
||||||
|
mediaRecorder.onstop = () => {
|
||||||
|
const audioBlob = new Blob(audioChunks, { type: 'audio/wav' });
|
||||||
|
audioChunks = [];
|
||||||
|
|
||||||
|
const reader = new FileReader();
|
||||||
|
reader.onload = () => {
|
||||||
|
const base64Audio = reader.result.split(',')[1];
|
||||||
|
DotNet.invokeMethodAsync('BLAIzor', dotnetMethodName, base64Audio, window.sessionId);
|
||||||
|
};
|
||||||
|
reader.readAsDataURL(audioBlob);
|
||||||
|
};
|
||||||
|
|
||||||
|
mediaRecorder.start();
|
||||||
|
};
|
||||||
|
|
||||||
|
window.stopRecording = function () {
|
||||||
|
if (mediaRecorder) {
|
||||||
|
mediaRecorder.stop();
|
||||||
|
mediaRecorder.stream.getTracks().forEach(track => track.stop());
|
||||||
|
stopButton.hidden = true;
|
||||||
|
recButton.hidden = false;
|
||||||
|
recText.textContent = "";
|
||||||
|
}
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
|
||||||
|
|
@ -1,160 +0,0 @@
|
||||||
@import url('https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap');
|
|
||||||
|
|
||||||
.card {
|
|
||||||
background-color: rgba(255,255,255,0.3);
|
|
||||||
backdrop-filter: blur(2px);
|
|
||||||
}
|
|
||||||
|
|
||||||
.table {
|
|
||||||
color: #f2d8bb !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-collapse {
|
|
||||||
height: 100vh;
|
|
||||||
/*display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;*/
|
|
||||||
text-align: center !important;
|
|
||||||
align-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-collapse .nav-link {
|
|
||||||
font-size: 1.4em;
|
|
||||||
letter-spacing: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-collapse .nav-item:not(:last-child) {
|
|
||||||
border-bottom: 0px solid white;
|
|
||||||
padding: 0.2em 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar {
|
|
||||||
background-color: #022c28;
|
|
||||||
color: #d0eae9;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-link {
|
|
||||||
color: #d0eae9 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content {
|
|
||||||
top: 60px;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
/*background-image: url('/uploads/0988758e-e16c-4c2c-8c1e-efa3ac5f0274/images/ribi1_brighter.png') !important;*/
|
|
||||||
background-color: #022c28;
|
|
||||||
background-attachment: fixed;
|
|
||||||
background-position: center;
|
|
||||||
background-size: cover;
|
|
||||||
color: aqua;
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 300;
|
|
||||||
font-style: normal;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 {
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 700;
|
|
||||||
font-style: bold;
|
|
||||||
padding-top: 30px;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
font-size: 2.488rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
h2 {
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 500;
|
|
||||||
font-style: normal;
|
|
||||||
padding-top: 15px;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
font-size: 2.288rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
h3 {
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 400;
|
|
||||||
font-style: normal;
|
|
||||||
padding-top: 10px;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
font-size: 2.074rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
p {
|
|
||||||
color: #fff;
|
|
||||||
font-size: x-large;
|
|
||||||
text-align: justify;
|
|
||||||
text-justify: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
li {
|
|
||||||
color: #fff;
|
|
||||||
font-size: large;
|
|
||||||
text-align: center;
|
|
||||||
text-justify: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-primary {
|
|
||||||
color: #d0eae9;
|
|
||||||
background-color: #014d4e;
|
|
||||||
border: 0px;
|
|
||||||
margin: 5px;
|
|
||||||
}
|
|
||||||
.btn-primary:hover {
|
|
||||||
color: #fff;
|
|
||||||
background-color: #086262;
|
|
||||||
border: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.row {
|
|
||||||
padding-bottom: 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.searchInput::placeholder {
|
|
||||||
color:#d0eae9;
|
|
||||||
}
|
|
||||||
|
|
||||||
#myVideo {
|
|
||||||
position: fixed;
|
|
||||||
right: 0;
|
|
||||||
top: -100px;
|
|
||||||
min-width: 100%;
|
|
||||||
min-height: 100%;
|
|
||||||
transform: translateX(calc((100% - 100vw) / 2));
|
|
||||||
}
|
|
||||||
|
|
||||||
.img-fluid {
|
|
||||||
max-height: 50vh;
|
|
||||||
width: auto;
|
|
||||||
border-radius: 5px;
|
|
||||||
}
|
|
||||||
.col {
|
|
||||||
align-items: center;
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-select {
|
|
||||||
background-color: rgba(255, 255, 255, 0.2);
|
|
||||||
border-radius: 5px;
|
|
||||||
display: unset !important;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.list-group-item {
|
|
||||||
background-color: rgba(255,255,255,0.3);
|
|
||||||
backdrop-filter: blur(2px);
|
|
||||||
}
|
|
||||||
|
|
||||||
.bg-light {
|
|
||||||
background-color: rgba(255,255,255,0.3) !important;
|
|
||||||
backdrop-filter: blur(2px) !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.text-primary {
|
|
||||||
--bs-text-opacity: 1;
|
|
||||||
color: aqua;
|
|
||||||
}
|
|
||||||
|
|
@ -1,160 +0,0 @@
|
||||||
@import url('https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap');
|
|
||||||
|
|
||||||
.card {
|
|
||||||
background-color: rgba(255,255,255,0.3);
|
|
||||||
backdrop-filter: blur(2px);
|
|
||||||
}
|
|
||||||
|
|
||||||
.table {
|
|
||||||
color: #f2d8bb !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-collapse {
|
|
||||||
height: 100vh;
|
|
||||||
/*display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;*/
|
|
||||||
text-align: center !important;
|
|
||||||
align-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-collapse .nav-link {
|
|
||||||
font-size: 1.4em;
|
|
||||||
letter-spacing: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-collapse .nav-item:not(:last-child) {
|
|
||||||
border-bottom: 0px solid white;
|
|
||||||
padding: 0.2em 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar {
|
|
||||||
background-color: #022c28;
|
|
||||||
color: #d0eae9;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-link {
|
|
||||||
color: #d0eae9 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content {
|
|
||||||
top: 60px;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
/*background-image: url('/uploads/0988758e-e16c-4c2c-8c1e-efa3ac5f0274/images/ribi1_brighter.png') !important;*/
|
|
||||||
background-color: #022c28;
|
|
||||||
background-attachment: fixed;
|
|
||||||
background-position: center;
|
|
||||||
background-size: cover;
|
|
||||||
color: aqua;
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 300;
|
|
||||||
font-style: normal;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 {
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 700;
|
|
||||||
font-style: bold;
|
|
||||||
padding-top: 30px;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
font-size: 2.488rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
h2 {
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 500;
|
|
||||||
font-style: normal;
|
|
||||||
padding-top: 15px;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
font-size: 2.288rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
h3 {
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 400;
|
|
||||||
font-style: normal;
|
|
||||||
padding-top: 10px;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
font-size: 2.074rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
p {
|
|
||||||
color: #fff;
|
|
||||||
font-size: x-large;
|
|
||||||
text-align: justify;
|
|
||||||
text-justify: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
li {
|
|
||||||
color: #fff;
|
|
||||||
font-size: large;
|
|
||||||
text-align: center;
|
|
||||||
text-justify: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-primary {
|
|
||||||
color: #d0eae9;
|
|
||||||
background-color: #014d4e;
|
|
||||||
border: 0px;
|
|
||||||
margin: 5px;
|
|
||||||
}
|
|
||||||
.btn-primary:hover {
|
|
||||||
color: #fff;
|
|
||||||
background-color: #086262;
|
|
||||||
border: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.row {
|
|
||||||
padding-bottom: 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.searchInput::placeholder {
|
|
||||||
color:#d0eae9;
|
|
||||||
}
|
|
||||||
|
|
||||||
#myVideo {
|
|
||||||
position: fixed;
|
|
||||||
right: 0;
|
|
||||||
top: -100px;
|
|
||||||
min-width: 100%;
|
|
||||||
min-height: 100%;
|
|
||||||
transform: translateX(calc((100% - 100vw) / 2));
|
|
||||||
}
|
|
||||||
|
|
||||||
.img-fluid {
|
|
||||||
max-height: 50vh;
|
|
||||||
width: auto;
|
|
||||||
border-radius: 5px;
|
|
||||||
}
|
|
||||||
.col {
|
|
||||||
align-items: center;
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-select {
|
|
||||||
background-color: rgba(255, 255, 255, 0.2);
|
|
||||||
border-radius: 5px;
|
|
||||||
display: unset !important;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.list-group-item {
|
|
||||||
background-color: rgba(255,255,255,0.3);
|
|
||||||
backdrop-filter: blur(2px);
|
|
||||||
}
|
|
||||||
|
|
||||||
.bg-light {
|
|
||||||
background-color: rgba(255,255,255,0.3);
|
|
||||||
backdrop-filter: blur(2px);
|
|
||||||
}
|
|
||||||
|
|
||||||
.text-primary {
|
|
||||||
--bs-text-opacity: 1;
|
|
||||||
color: aqua;
|
|
||||||
}
|
|
||||||
|
|
@ -1,160 +0,0 @@
|
||||||
@import url('https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap');
|
|
||||||
|
|
||||||
.card {
|
|
||||||
background-color: rgba(255,255,255,0.3);
|
|
||||||
backdrop-filter: blur(2px);
|
|
||||||
}
|
|
||||||
|
|
||||||
.table {
|
|
||||||
color: #f2d8bb !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-collapse {
|
|
||||||
height: 100vh;
|
|
||||||
/*display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;*/
|
|
||||||
text-align: center !important;
|
|
||||||
align-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-collapse .nav-link {
|
|
||||||
font-size: 1.4em;
|
|
||||||
letter-spacing: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-collapse .nav-item:not(:last-child) {
|
|
||||||
border-bottom: 0px solid white;
|
|
||||||
padding: 0.2em 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar {
|
|
||||||
background-color: #022c28;
|
|
||||||
color: #d0eae9;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-link {
|
|
||||||
color: #d0eae9 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content {
|
|
||||||
top: 60px;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
/*background-image: url('/uploads/0988758e-e16c-4c2c-8c1e-efa3ac5f0274/images/ribi1_brighter.png') !important;*/
|
|
||||||
background-color: #022c28;
|
|
||||||
background-attachment: fixed;
|
|
||||||
background-position: center;
|
|
||||||
background-size: cover;
|
|
||||||
color: aqua;
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 300;
|
|
||||||
font-style: normal;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 {
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 700;
|
|
||||||
font-style: bold;
|
|
||||||
padding-top: 30px;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
font-size: 2.488rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
h2 {
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 500;
|
|
||||||
font-style: normal;
|
|
||||||
padding-top: 15px;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
font-size: 2.288rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
h3 {
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 400;
|
|
||||||
font-style: normal;
|
|
||||||
padding-top: 10px;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
font-size: 2.074rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
p {
|
|
||||||
color: #fff;
|
|
||||||
font-size: x-large;
|
|
||||||
text-align: justify;
|
|
||||||
text-justify: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
li {
|
|
||||||
color: #fff;
|
|
||||||
font-size: large;
|
|
||||||
text-align: center;
|
|
||||||
text-justify: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-primary {
|
|
||||||
color: #d0eae9;
|
|
||||||
background-color: #014d4e;
|
|
||||||
border: 0px;
|
|
||||||
margin: 5px;
|
|
||||||
}
|
|
||||||
.btn-primary:hover {
|
|
||||||
color: #fff;
|
|
||||||
background-color: #086262;
|
|
||||||
border: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.row {
|
|
||||||
padding-bottom: 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.searchInput::placeholder {
|
|
||||||
color:#d0eae9;
|
|
||||||
}
|
|
||||||
|
|
||||||
#myVideo {
|
|
||||||
position: fixed;
|
|
||||||
right: 0;
|
|
||||||
top: -100px;
|
|
||||||
min-width: 100%;
|
|
||||||
min-height: 100%;
|
|
||||||
transform: translateX(calc((100% - 100vw) / 2));
|
|
||||||
}
|
|
||||||
|
|
||||||
.img-fluid {
|
|
||||||
max-height: 50vh;
|
|
||||||
width: auto;
|
|
||||||
border-radius: 5px;
|
|
||||||
}
|
|
||||||
.col {
|
|
||||||
align-items: center;
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-select {
|
|
||||||
background-color: rgba(255, 255, 255, 0.2);
|
|
||||||
border-radius: 5px;
|
|
||||||
display: unset !important;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.list-group-item {
|
|
||||||
background-color: rgba(255,255,255,0.3);
|
|
||||||
backdrop-filter: blur(2px);
|
|
||||||
}
|
|
||||||
|
|
||||||
.bg-light {
|
|
||||||
background-color: rgba(255,255,255,0.3) !important;
|
|
||||||
backdrop-filter: blur(2px) !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.text-primary {
|
|
||||||
--bs-text-opacity: 1;
|
|
||||||
color: aqua;
|
|
||||||
}
|
|
||||||
|
|
@ -1,160 +0,0 @@
|
||||||
@import url('https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap');
|
|
||||||
|
|
||||||
.card {
|
|
||||||
background-color: rgba(255,255,255,0.3);
|
|
||||||
backdrop-filter: blur(2px);
|
|
||||||
}
|
|
||||||
|
|
||||||
.table {
|
|
||||||
color: #f2d8bb !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-collapse {
|
|
||||||
height: 100vh;
|
|
||||||
/*display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;*/
|
|
||||||
text-align: center !important;
|
|
||||||
align-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-collapse .nav-link {
|
|
||||||
font-size: 1.4em;
|
|
||||||
letter-spacing: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-collapse .nav-item:not(:last-child) {
|
|
||||||
border-bottom: 0px solid white;
|
|
||||||
padding: 0.2em 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar {
|
|
||||||
background-color: #022c28;
|
|
||||||
color: #d0eae9;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-link {
|
|
||||||
color: #d0eae9 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content {
|
|
||||||
top: 60px;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
/*background-image: url('/uploads/0988758e-e16c-4c2c-8c1e-efa3ac5f0274/images/ribi1_brighter.png') !important;*/
|
|
||||||
background-color: #022c28;
|
|
||||||
background-attachment: fixed;
|
|
||||||
background-position: center;
|
|
||||||
background-size: cover;
|
|
||||||
color: aqua;
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 300;
|
|
||||||
font-style: normal;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 {
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 700;
|
|
||||||
font-style: bold;
|
|
||||||
padding-top: 30px;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
font-size: 2.488rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
h2 {
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 500;
|
|
||||||
font-style: normal;
|
|
||||||
padding-top: 15px;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
font-size: 2.288rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
h3 {
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 400;
|
|
||||||
font-style: normal;
|
|
||||||
padding-top: 10px;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
font-size: 2.074rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
p {
|
|
||||||
color: #fff;
|
|
||||||
font-size: x-large;
|
|
||||||
text-align: justify;
|
|
||||||
text-justify: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
li {
|
|
||||||
color: #fff;
|
|
||||||
font-size: large;
|
|
||||||
text-align: center;
|
|
||||||
text-justify: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-primary {
|
|
||||||
color: #d0eae9;
|
|
||||||
background-color: #014d4e;
|
|
||||||
border: 0px;
|
|
||||||
margin: 5px;
|
|
||||||
}
|
|
||||||
.btn-primary:hover {
|
|
||||||
color: #fff;
|
|
||||||
background-color: #086262;
|
|
||||||
border: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.row {
|
|
||||||
padding-bottom: 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.searchInput::placeholder {
|
|
||||||
color:#d0eae9;
|
|
||||||
}
|
|
||||||
|
|
||||||
#myVideo {
|
|
||||||
position: fixed;
|
|
||||||
right: 0;
|
|
||||||
top: -100px;
|
|
||||||
min-width: 100%;
|
|
||||||
min-height: 100%;
|
|
||||||
transform: translateX(calc((100% - 100vw) / 2));
|
|
||||||
}
|
|
||||||
|
|
||||||
.img-fluid {
|
|
||||||
max-height: 50vh;
|
|
||||||
width: auto;
|
|
||||||
border-radius: 5px;
|
|
||||||
}
|
|
||||||
.col {
|
|
||||||
align-items: center;
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-select {
|
|
||||||
background-color: rgba(255, 255, 255, 0.2);
|
|
||||||
border-radius: 5px;
|
|
||||||
display: unset !important;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.list-group-item {
|
|
||||||
background-color: rgba(255,255,255,0.3);
|
|
||||||
backdrop-filter: blur(2px);
|
|
||||||
}
|
|
||||||
|
|
||||||
.bg-light {
|
|
||||||
background-color: rgba(255,255,255,0.3);
|
|
||||||
backdrop-filter: blur(2px);
|
|
||||||
}
|
|
||||||
|
|
||||||
.text-primary {
|
|
||||||
--bs-text-opacity: 1;
|
|
||||||
color: aqua;
|
|
||||||
}
|
|
||||||
|
|
@ -1,144 +0,0 @@
|
||||||
@import url('https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap');
|
|
||||||
|
|
||||||
.table {
|
|
||||||
color: #f2d8bb !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-collapse {
|
|
||||||
height: 100vh;
|
|
||||||
/*display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;*/
|
|
||||||
text-align: center !important;
|
|
||||||
align-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-collapse .nav-link {
|
|
||||||
font-size: 1.4em;
|
|
||||||
letter-spacing: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-collapse .nav-item:not(:last-child) {
|
|
||||||
border-bottom: 0px solid white;
|
|
||||||
padding: 0.2em 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar {
|
|
||||||
background-color: #022c28;
|
|
||||||
color: #d0eae9;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-link {
|
|
||||||
color: #d0eae9 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content {
|
|
||||||
top: 60px;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
/*background-image: url('/uploads/0988758e-e16c-4c2c-8c1e-efa3ac5f0274/images/ribi1_brighter.png') !important;*/
|
|
||||||
background-color: #022c28;
|
|
||||||
background-attachment: fixed;
|
|
||||||
background-position: center;
|
|
||||||
background-size: cover;
|
|
||||||
color: aqua;
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 300;
|
|
||||||
font-style: normal;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 {
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 700;
|
|
||||||
font-style: bold;
|
|
||||||
padding-top: 30px;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
font-size: 2.488rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
h2 {
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 500;
|
|
||||||
font-style: normal;
|
|
||||||
padding-top: 15px;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
font-size: 2.288rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
h3 {
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 400;
|
|
||||||
font-style: normal;
|
|
||||||
padding-top: 10px;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
font-size: 2.074rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
p {
|
|
||||||
color: #fff;
|
|
||||||
font-size: x-large;
|
|
||||||
text-align: justify;
|
|
||||||
text-justify: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
li {
|
|
||||||
color: #fff;
|
|
||||||
font-size: large;
|
|
||||||
text-align: center;
|
|
||||||
text-justify: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-primary {
|
|
||||||
color: #d0eae9;
|
|
||||||
background-color: #014d4e;
|
|
||||||
border: 0px;
|
|
||||||
}
|
|
||||||
.btn-primary:hover {
|
|
||||||
color: #fff;
|
|
||||||
background-color: #086262;
|
|
||||||
border: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.row {
|
|
||||||
padding-bottom: 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.searchInput::placeholder {
|
|
||||||
color:#d0eae9;
|
|
||||||
}
|
|
||||||
|
|
||||||
#myVideo {
|
|
||||||
position: fixed;
|
|
||||||
right: 0;
|
|
||||||
top: -100px;
|
|
||||||
min-width: 100%;
|
|
||||||
min-height: 100%;
|
|
||||||
transform: translateX(calc((100% - 100vw) / 2));
|
|
||||||
}
|
|
||||||
|
|
||||||
.img-fluid {
|
|
||||||
max-height: 50vh;
|
|
||||||
width: auto;
|
|
||||||
border-radius: 5px;
|
|
||||||
}
|
|
||||||
.col {
|
|
||||||
align-items: center;
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-select {
|
|
||||||
background-color: rgba(255, 255, 255, 0.2);
|
|
||||||
border-radius: 5px;
|
|
||||||
display: unset !important;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.list-group-item {
|
|
||||||
background-color: rgba(255,255,255,0.3);
|
|
||||||
backdrop-filter: blur(2px);
|
|
||||||
}
|
|
||||||
|
|
@ -1,455 +0,0 @@
|
||||||
@import url('https://fonts.googleapis.com/css2?family=Quicksand&display=swap');
|
|
||||||
|
|
||||||
|
|
||||||
/*search*/
|
|
||||||
|
|
||||||
|
|
||||||
p {
|
|
||||||
font-size: x-large;
|
|
||||||
}
|
|
||||||
|
|
||||||
label {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn {
|
|
||||||
background: rgba(255, 255, 255, 0.5);
|
|
||||||
border: 0;
|
|
||||||
color: #000000;
|
|
||||||
/* width: 98%; */
|
|
||||||
font-weight: bold;
|
|
||||||
border-radius: 20px;
|
|
||||||
min-height: 50px;
|
|
||||||
transition: all 0.2s ease;
|
|
||||||
padding: 10px;
|
|
||||||
margin-top: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.menubtn {
|
|
||||||
background: rgba(255, 255, 255, 0.5);
|
|
||||||
border: 0;
|
|
||||||
color: #000000;
|
|
||||||
/* width: 98%; */
|
|
||||||
font-weight: bold;
|
|
||||||
border-radius: 20px;
|
|
||||||
height: 40px;
|
|
||||||
transition: all 0.2s ease;
|
|
||||||
padding: 10px;
|
|
||||||
margin: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn:active {
|
|
||||||
background: rgba(255, 255, 255, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn:hover {
|
|
||||||
background: rgba(255, 255, 255, 0.8);
|
|
||||||
}
|
|
||||||
|
|
||||||
img {
|
|
||||||
border-radius: 20px !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
input.search_bar{
|
|
||||||
border: none;
|
|
||||||
outline: none;
|
|
||||||
width: 75px;
|
|
||||||
border-radius: 55px;
|
|
||||||
margin: 0 auto;
|
|
||||||
font-size: 1.3em;
|
|
||||||
color: #0d2840;
|
|
||||||
padding: 15px 30px 15px 45px;
|
|
||||||
transition: all .3s cubic-bezier(0,0,.5,1.5);
|
|
||||||
box-shadow: 0 3px 10px -2px rgba(0,0,0,.1);
|
|
||||||
background: rgba(255, 255, 255, 0.3) url(https://i.imgur.com/seveWIw.png) no-repeat center center;
|
|
||||||
}
|
|
||||||
|
|
||||||
input.search_bar:focus{
|
|
||||||
width: 100%;
|
|
||||||
background-position: calc(100% - 35px) center
|
|
||||||
}
|
|
||||||
|
|
||||||
/*Removes default x in search fields (webkit only i guess)*/
|
|
||||||
input[type=search]::-webkit-search-cancel-button {
|
|
||||||
-webkit-appearance: none;
|
|
||||||
}
|
|
||||||
/*Changes the color of the placeholder*/
|
|
||||||
::-webkit-input-placeholder {
|
|
||||||
color: #0d2840;
|
|
||||||
opacity: .5;
|
|
||||||
}
|
|
||||||
|
|
||||||
:-moz-placeholder {
|
|
||||||
color: #0d2840;
|
|
||||||
opacity: .5;
|
|
||||||
}
|
|
||||||
|
|
||||||
::-moz-placeholder {
|
|
||||||
color: #0d2840;
|
|
||||||
opacity: .5;
|
|
||||||
}
|
|
||||||
|
|
||||||
:-ms-input-placeholder {
|
|
||||||
color: #0d2840;
|
|
||||||
opacity: .5;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*search*/
|
|
||||||
|
|
||||||
/*Search2*/
|
|
||||||
.searchBox {
|
|
||||||
width: 60px;
|
|
||||||
background: rgba(255, 255, 255, 0.3);
|
|
||||||
height: 60px;
|
|
||||||
border-radius: 40px;
|
|
||||||
padding: 10px;
|
|
||||||
margin: 0 auto;
|
|
||||||
transition: 0.8s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.searchInput:active > .searchBox{
|
|
||||||
width:100%
|
|
||||||
}
|
|
||||||
.searchInput:focus > .searchBox {
|
|
||||||
width: 100%
|
|
||||||
}
|
|
||||||
|
|
||||||
.searchBox:hover {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.searchBox:hover > .searchInput {
|
|
||||||
width: calc(100% - 60px);
|
|
||||||
padding: 0 6px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.searchBox:hover > .searchButton {
|
|
||||||
background: white;
|
|
||||||
color: #2f3640;
|
|
||||||
}
|
|
||||||
|
|
||||||
.searchButton {
|
|
||||||
color: white;
|
|
||||||
float: right;
|
|
||||||
width: 40px;
|
|
||||||
height: 40px;
|
|
||||||
border-radius: 50%;
|
|
||||||
background-color: #e493d0;
|
|
||||||
background-image: radial-gradient(closest-side, rgba(235, 105, 78, 1), rgba(235, 105, 78, 0)), radial-gradient(closest-side, rgba(243, 11, 164, 1), rgba(243, 11, 164, 0)), radial-gradient(closest-side, rgba(254, 234, 131, 1), rgba(254, 234, 131, 0)), radial-gradient(closest-side, rgba(170, 142, 245, 1), rgba(170, 142, 245, 0)), radial-gradient(closest-side, rgba(248, 192, 147, 1), rgba(248, 192, 147, 0));
|
|
||||||
background-size: 130vmax 130vmax, 80vmax 80vmax, 90vmax 90vmax, 110vmax 110vmax, 90vmax 90vmax;
|
|
||||||
background-position: -80vmax -80vmax, 60vmax -30vmax, 10vmax 10vmax, -30vmax -10vmax, 50vmax 50vmax;
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
animation: 10s movement linear infinite;
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.searchInput {
|
|
||||||
border: none;
|
|
||||||
background: none;
|
|
||||||
outline: none;
|
|
||||||
font-size: 1.3em !important;
|
|
||||||
color: #0d2840 !important;
|
|
||||||
float: left;
|
|
||||||
padding: 0;
|
|
||||||
color: white;
|
|
||||||
font-size: 16px;
|
|
||||||
transition: 0.4s;
|
|
||||||
line-height: 40px;
|
|
||||||
width: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*Search2*/
|
|
||||||
|
|
||||||
|
|
||||||
.event {
|
|
||||||
border-radius: 20px !important;
|
|
||||||
background-color: rgba(255, 255, 255, 0.2) !important;
|
|
||||||
backdrop-filter: blur(20px);
|
|
||||||
border: 0;
|
|
||||||
box-shadow: 0 2px 20px rgba(0, 0, 0, 0.06), 0 2px 4px rgba(0, 0, 0, 0.07);
|
|
||||||
transition: all 0.15s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*card design*/
|
|
||||||
.card {
|
|
||||||
border-radius: 20px !important;
|
|
||||||
overflow: hidden;
|
|
||||||
background-color: rgba(255, 255, 255, 0.2) !important;
|
|
||||||
backdrop-filter: blur(20px);
|
|
||||||
border: 0;
|
|
||||||
box-shadow: 0 2px 20px rgba(0, 0, 0, 0.06), 0 2px 4px rgba(0, 0, 0, 0.07);
|
|
||||||
transition: all 0.15s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.card:hover {
|
|
||||||
box-shadow: 0 6px 30px rgba(0, 0, 0, 0.1), 0 10px 8px rgba(0, 0, 0, 0.015);
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-body .card-title {
|
|
||||||
font-family: 'Lato', sans-serif;
|
|
||||||
font-weight: 700;
|
|
||||||
letter-spacing: 0.3px;
|
|
||||||
font-size: 24px;
|
|
||||||
color: #121212;
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-text {
|
|
||||||
font-family: 'Lato', sans-serif;
|
|
||||||
font-weight: 400;
|
|
||||||
font-size: 15px;
|
|
||||||
letter-spacing: 0.3px;
|
|
||||||
color: #4E4E4E;
|
|
||||||
}
|
|
||||||
|
|
||||||
.card .container {
|
|
||||||
width: 88%;
|
|
||||||
/*background: #F0EEF8;*/
|
|
||||||
border-radius: 30px;
|
|
||||||
/*height: 140px;*/
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.container:hover > img {
|
|
||||||
transform: scale(1.2);
|
|
||||||
}
|
|
||||||
|
|
||||||
.container img {
|
|
||||||
/*padding: 75px;*/
|
|
||||||
/*margin-top: -40px;
|
|
||||||
margin-bottom: -40px;*/
|
|
||||||
transition: 0.4s ease;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn:hover {
|
|
||||||
background: #441CFF;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn:focus {
|
|
||||||
background: #441CFF;
|
|
||||||
outline: 0;
|
|
||||||
}
|
|
||||||
/*card design*/
|
|
||||||
|
|
||||||
/*bg*/
|
|
||||||
|
|
||||||
|
|
||||||
:root {
|
|
||||||
font-size: 15px;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
|
|
||||||
font-family: 'Quicksand', sans-serif;
|
|
||||||
margin: 0;
|
|
||||||
min-height: 100vh;
|
|
||||||
background-color: #e6e6e6;
|
|
||||||
/*background-image: radial-gradient(closest-side, rgba(235, 105, 78, 1), rgba(235, 105, 78, 0)), radial-gradient(closest-side, rgba(243, 11, 164, 1), rgba(243, 11, 164, 0)), radial-gradient(closest-side, rgba(254, 234, 131, 1), rgba(254, 234, 131, 0)), radial-gradient(closest-side, rgba(170, 142, 245, 1), rgba(170, 142, 245, 0)), radial-gradient(closest-side, rgba(248, 192, 147, 1), rgba(248, 192, 147, 0));*/
|
|
||||||
/*background-size: 130vmax 130vmax, 80vmax 80vmax, 90vmax 90vmax, 110vmax 110vmax, 90vmax 90vmax;*/
|
|
||||||
/*background-position: -80vmax -80vmax, 60vmax -30vmax, 10vmax 10vmax, -30vmax -10vmax, 50vmax 50vmax;*/
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
/*animation: 10s movement linear infinite;*/
|
|
||||||
}
|
|
||||||
|
|
||||||
body::after {
|
|
||||||
content: '';
|
|
||||||
display: block;
|
|
||||||
position: fixed;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
backdrop-filter: blur(10px);
|
|
||||||
-webkit-backdrop-filter: blur(10px);
|
|
||||||
}
|
|
||||||
|
|
||||||
.myspan {
|
|
||||||
position: relative;
|
|
||||||
z-index: 10;
|
|
||||||
display: flex;
|
|
||||||
min-height: 100vh;
|
|
||||||
width: 100%;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
font-size: 5rem;
|
|
||||||
color: transparent;
|
|
||||||
text-shadow: 0px 0px 1px rgba(255, 255, 255, .6), 0px 4px 4px rgba(0, 0, 0, .05);
|
|
||||||
letter-spacing: .2rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*@keyframes movement {
|
|
||||||
0%, 100% {
|
|
||||||
background-size: 130vmax 130vmax, 80vmax 80vmax, 90vmax 90vmax, 110vmax 110vmax, 90vmax 90vmax;
|
|
||||||
background-position: -80vmax -80vmax, 60vmax -30vmax, 10vmax 10vmax, -30vmax -10vmax, 50vmax 50vmax;
|
|
||||||
}
|
|
||||||
|
|
||||||
25% {
|
|
||||||
background-size: 100vmax 100vmax, 90vmax 90vmax, 100vmax 100vmax, 90vmax 90vmax, 60vmax 60vmax;
|
|
||||||
background-position: -60vmax -90vmax, 50vmax -40vmax, 0vmax -20vmax, -40vmax -20vmax, 40vmax 60vmax;
|
|
||||||
}
|
|
||||||
|
|
||||||
50% {
|
|
||||||
background-size: 80vmax 80vmax, 110vmax 110vmax, 80vmax 80vmax, 60vmax 60vmax, 80vmax 80vmax;
|
|
||||||
background-position: -50vmax -70vmax, 40vmax -30vmax, 10vmax 0vmax, 20vmax 10vmax, 30vmax 70vmax;
|
|
||||||
}
|
|
||||||
|
|
||||||
75% {
|
|
||||||
background-size: 90vmax 90vmax, 90vmax 90vmax, 100vmax 100vmax, 90vmax 90vmax, 70vmax 70vmax;
|
|
||||||
background-position: -50vmax -40vmax, 50vmax -30vmax, 20vmax 0vmax, -10vmax 10vmax, 40vmax 60vmax;
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
|
|
||||||
|
|
||||||
/*bg*/
|
|
||||||
|
|
||||||
.mytextarea {
|
|
||||||
background-color: rgba(255, 255, 255, 0.3);
|
|
||||||
backdrop-filter: blur(20px);
|
|
||||||
padding: 10px;
|
|
||||||
border-radius: 10px;
|
|
||||||
border-width: 0px;
|
|
||||||
height: unset !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mytextarea:active {
|
|
||||||
border-width: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mytextarea:focus-visible {
|
|
||||||
background-color: rgba(255, 255, 255, 0.5);
|
|
||||||
border-width: 0px !important;
|
|
||||||
outline: -webkit-focus-ring-color auto 0px;
|
|
||||||
outline-color: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-toggler-icon {
|
|
||||||
/*background-image: var(--bs-navbar-toggler-icon-bg);*/
|
|
||||||
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2833, 37, 41, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e;");
|
|
||||||
z-index: 10;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-brand {
|
|
||||||
font-size: 1.7rem;
|
|
||||||
color: #000;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-select {
|
|
||||||
background-color: rgba(255, 255, 255, 0.2);
|
|
||||||
border-radius: 55px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-select > option {
|
|
||||||
background-color: rgba(255, 255, 255, 0.2)
|
|
||||||
}
|
|
||||||
|
|
||||||
.contactform-overlay {
|
|
||||||
position: fixed;
|
|
||||||
z-index: 100;
|
|
||||||
height: 100vh;
|
|
||||||
width: 100%;
|
|
||||||
padding: 100px;
|
|
||||||
top: 0px;
|
|
||||||
left: 0px;
|
|
||||||
/* padding-top: 10vh; */
|
|
||||||
backdrop-filter: blur(20px);
|
|
||||||
/* background-color: rgba(1, 1, 1, .4); */
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-control {
|
|
||||||
background-color: rgba(255,255,255,0.4);
|
|
||||||
border-radius: 5px;
|
|
||||||
height: 50px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-control::placholder {
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.contactform-close-overlay {
|
|
||||||
position: relative;
|
|
||||||
height: 10vh;
|
|
||||||
}
|
|
||||||
|
|
||||||
.contactform-popup-content {
|
|
||||||
height: 80vh;
|
|
||||||
margin: 0px;
|
|
||||||
padding: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.contactform-popup-close {
|
|
||||||
position: relative;
|
|
||||||
height: 10vh;
|
|
||||||
z-index: 80;
|
|
||||||
}
|
|
||||||
|
|
||||||
.calendly-overlay {
|
|
||||||
position: absolute;
|
|
||||||
z-index: 100;
|
|
||||||
height: 100vh;
|
|
||||||
width: 100%;
|
|
||||||
top: 0px;
|
|
||||||
/* padding-top: 10vh; */
|
|
||||||
backdrop-filter: blur(20px);
|
|
||||||
/* background-color: rgba(1, 1, 1, .4); */
|
|
||||||
}
|
|
||||||
|
|
||||||
.calendly-close-overlay {
|
|
||||||
position: relative;
|
|
||||||
height: 10vh;
|
|
||||||
}
|
|
||||||
|
|
||||||
.calendly-popup-content {
|
|
||||||
height: 80vh;
|
|
||||||
margin: 0px;
|
|
||||||
padding: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.calendly-popup-close {
|
|
||||||
position: relative;
|
|
||||||
height: 10vh;
|
|
||||||
z-index: 80;
|
|
||||||
}
|
|
||||||
|
|
||||||
#myVideo {
|
|
||||||
position: fixed;
|
|
||||||
right: 0;
|
|
||||||
bottom: 0;
|
|
||||||
min-width: 100%;
|
|
||||||
min-height: 100%;
|
|
||||||
}
|
|
||||||
.navbar-collapse {
|
|
||||||
height: 100vh;
|
|
||||||
/*display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;*/
|
|
||||||
text-align: center !important;
|
|
||||||
align-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-collapse .nav-link {
|
|
||||||
font-size: 1.5em;
|
|
||||||
letter-spacing: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-collapse .nav-item:not(:last-child) {
|
|
||||||
border-bottom: 0px solid white;
|
|
||||||
padding: 0.2em 4em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar {
|
|
||||||
background-color: #fff;
|
|
||||||
color: #000;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-link {
|
|
||||||
color: #000;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content {
|
|
||||||
top: 60px;
|
|
||||||
}
|
|
||||||
|
|
@ -1,490 +0,0 @@
|
||||||
/*@import url('https://fonts.googleapis.com/css2?family=Quicksand&display=swap');
|
|
||||||
@import url('https://fonts.googleapis.com/css?family=Comfortaa:400,700,300');*/
|
|
||||||
|
|
||||||
/*search*/
|
|
||||||
|
|
||||||
|
|
||||||
p {
|
|
||||||
font-size: x-large;
|
|
||||||
}
|
|
||||||
|
|
||||||
li {
|
|
||||||
list-style: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
label {
|
|
||||||
color: #000;
|
|
||||||
/* display: none; */
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn {
|
|
||||||
background: rgba(255, 255, 255, 0.5);
|
|
||||||
border: 0;
|
|
||||||
color: #000000;
|
|
||||||
width: fit-content;
|
|
||||||
font-weight: bold;
|
|
||||||
transition: all 0.2s ease;
|
|
||||||
margin: 15px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.voicebutton {
|
|
||||||
border-radius: 50% !important;
|
|
||||||
padding: 10px !important;
|
|
||||||
width: 40px;
|
|
||||||
height:40px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.menubtn {
|
|
||||||
background: rgba(255, 255, 255, 0.5);
|
|
||||||
border: 0;
|
|
||||||
color: #000000;
|
|
||||||
/* width: 98%; */
|
|
||||||
font-weight: bold;
|
|
||||||
border-radius: 20px;
|
|
||||||
height: 40px;
|
|
||||||
transition: all 0.2s ease;
|
|
||||||
padding: 10px;
|
|
||||||
margin: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn:active {
|
|
||||||
background: rgba(255, 255, 255, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn:hover {
|
|
||||||
background: rgba(255, 255, 255, 0.8);
|
|
||||||
}
|
|
||||||
|
|
||||||
img {
|
|
||||||
border-radius: 20px !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
input.search_bar{
|
|
||||||
border: none;
|
|
||||||
outline: none;
|
|
||||||
width: 75px;
|
|
||||||
border-radius: 55px;
|
|
||||||
margin: 0 auto;
|
|
||||||
font-size: 1.3em;
|
|
||||||
color: #0d2840;
|
|
||||||
padding: 15px 30px 15px 45px;
|
|
||||||
transition: all .3s cubic-bezier(0,0,.5,1.5);
|
|
||||||
box-shadow: 0 3px 10px -2px rgba(0,0,0,.1);
|
|
||||||
background: rgba(255, 255, 255, 0.3) url(https://i.imgur.com/seveWIw.png) no-repeat center center;
|
|
||||||
}
|
|
||||||
|
|
||||||
input.search_bar:focus{
|
|
||||||
width: 100%;
|
|
||||||
background-position: calc(100% - 35px) center
|
|
||||||
}
|
|
||||||
|
|
||||||
/*Removes default x in search fields (webkit only i guess)*/
|
|
||||||
input[type=search]::-webkit-search-cancel-button {
|
|
||||||
-webkit-appearance: none;
|
|
||||||
}
|
|
||||||
/*Changes the color of the placeholder*/
|
|
||||||
::-webkit-input-placeholder {
|
|
||||||
color: #0d2840;
|
|
||||||
opacity: .5;
|
|
||||||
}
|
|
||||||
|
|
||||||
:-moz-placeholder {
|
|
||||||
color: #0d2840;
|
|
||||||
opacity: .5;
|
|
||||||
}
|
|
||||||
|
|
||||||
::-moz-placeholder {
|
|
||||||
color: #0d2840;
|
|
||||||
opacity: .5;
|
|
||||||
}
|
|
||||||
|
|
||||||
:-ms-input-placeholder {
|
|
||||||
color: #0d2840;
|
|
||||||
opacity: .5;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*search*/
|
|
||||||
|
|
||||||
/*Search2*/
|
|
||||||
.searchBox {
|
|
||||||
width: 60px;
|
|
||||||
background: rgba(255, 255, 255, 0.3);
|
|
||||||
height: 60px;
|
|
||||||
border-radius: 40px;
|
|
||||||
padding: 10px;
|
|
||||||
margin: 0 auto;
|
|
||||||
transition: 0.8s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.searchInput:active > .searchBox{
|
|
||||||
width:100%
|
|
||||||
}
|
|
||||||
.searchInput:focus > .searchBox {
|
|
||||||
width: 100%
|
|
||||||
}
|
|
||||||
|
|
||||||
.searchInput::placeholder {
|
|
||||||
color:#fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.searchBox:hover {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.searchBox:hover > .searchInput {
|
|
||||||
width: calc(100% - 60px);
|
|
||||||
padding: 0 6px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.searchBox:hover > .searchButton {
|
|
||||||
background: white;
|
|
||||||
color: #2f3640;
|
|
||||||
}
|
|
||||||
|
|
||||||
.searchButton {
|
|
||||||
color: white;
|
|
||||||
float: right;
|
|
||||||
width: 40px;
|
|
||||||
height: 40px;
|
|
||||||
border-radius: 50px;
|
|
||||||
background-color: #e493d0;
|
|
||||||
background-image: radial-gradient(closest-side, rgba(235, 105, 78, 1), rgba(235, 105, 78, 0)), radial-gradient(closest-side, rgba(243, 11, 164, 1), rgba(243, 11, 164, 0)), radial-gradient(closest-side, rgba(254, 234, 131, 1), rgba(254, 234, 131, 0)), radial-gradient(closest-side, rgba(170, 142, 245, 1), rgba(170, 142, 245, 0)), radial-gradient(closest-side, rgba(248, 192, 147, 1), rgba(248, 192, 147, 0));
|
|
||||||
background-size: 130vmax 130vmax, 80vmax 80vmax, 90vmax 90vmax, 110vmax 110vmax, 90vmax 90vmax;
|
|
||||||
background-position: -80vmax -80vmax, 60vmax -30vmax, 10vmax 10vmax, -30vmax -10vmax, 50vmax 50vmax;
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
animation: 10s movement linear infinite;
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.searchInput {
|
|
||||||
border: none;
|
|
||||||
background: none;
|
|
||||||
outline: none;
|
|
||||||
font-size: 1.3em !important;
|
|
||||||
color: #0d2840 !important;
|
|
||||||
float: left;
|
|
||||||
padding: 0;
|
|
||||||
color: white;
|
|
||||||
font-size: 16px;
|
|
||||||
transition: 0.4s;
|
|
||||||
line-height: 40px;
|
|
||||||
width: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*Search2*/
|
|
||||||
|
|
||||||
|
|
||||||
.event {
|
|
||||||
border-radius: 20px !important;
|
|
||||||
background-color: rgba(255, 255, 255, 0.2) !important;
|
|
||||||
backdrop-filter: blur(20px);
|
|
||||||
border: 0;
|
|
||||||
box-shadow: 0 2px 20px rgba(0, 0, 0, 0.06), 0 2px 4px rgba(0, 0, 0, 0.07);
|
|
||||||
transition: all 0.15s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*card design*/
|
|
||||||
.card {
|
|
||||||
border-radius: 20px !important;
|
|
||||||
overflow: hidden;
|
|
||||||
background-color: rgba(255, 255, 255, 0.2) !important;
|
|
||||||
backdrop-filter: blur(20px);
|
|
||||||
border: 0;
|
|
||||||
box-shadow: 0 2px 20px rgba(0, 0, 0, 0.06), 0 2px 4px rgba(0, 0, 0, 0.07);
|
|
||||||
transition: all 0.15s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.card:hover {
|
|
||||||
box-shadow: 0 6px 30px rgba(0, 0, 0, 0.1), 0 10px 8px rgba(0, 0, 0, 0.015);
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-body .card-title {
|
|
||||||
font-family: 'Lato', sans-serif;
|
|
||||||
font-weight: 700;
|
|
||||||
letter-spacing: 0.3px;
|
|
||||||
font-size: 24px;
|
|
||||||
color: #121212;
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-text {
|
|
||||||
font-family: 'Lato', sans-serif;
|
|
||||||
font-weight: 400;
|
|
||||||
font-size: 15px;
|
|
||||||
letter-spacing: 0.3px;
|
|
||||||
color: #4E4E4E;
|
|
||||||
}
|
|
||||||
|
|
||||||
.card .container {
|
|
||||||
width: 88%;
|
|
||||||
/*background: #F0EEF8;*/
|
|
||||||
border-radius: 30px;
|
|
||||||
/*height: 140px;*/
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.container:hover > img {
|
|
||||||
transform: scale(1.2);
|
|
||||||
}
|
|
||||||
|
|
||||||
.container img {
|
|
||||||
/*padding: 75px;*/
|
|
||||||
/*margin-top: -40px;
|
|
||||||
margin-bottom: -40px;*/
|
|
||||||
transition: 0.4s ease;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn:hover {
|
|
||||||
background-color: #e493d0;
|
|
||||||
background-image: radial-gradient(closest-side, rgba(235, 105, 78, 1), rgba(235, 105, 78, 0)), radial-gradient(closest-side, rgba(243, 11, 164, 1), rgba(243, 11, 164, 0)), radial-gradient(closest-side, rgba(254, 234, 131, 1), rgba(254, 234, 131, 0)), radial-gradient(closest-side, rgba(170, 142, 245, 1), rgba(170, 142, 245, 0)), radial-gradient(closest-side, rgba(248, 192, 147, 1), rgba(248, 192, 147, 0));
|
|
||||||
background-size: 130vmax 130vmax, 80vmax 80vmax, 90vmax 90vmax, 110vmax 110vmax, 90vmax 90vmax;
|
|
||||||
background-position: -80vmax -80vmax, 60vmax -30vmax, 10vmax 10vmax, -30vmax -10vmax, 50vmax 50vmax;
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
animation: 10s movement linear infinite;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn:focus {
|
|
||||||
background-color: #e493d0;
|
|
||||||
background-image: radial-gradient(closest-side, rgba(235, 105, 78, 1), rgba(235, 105, 78, 0)), radial-gradient(closest-side, rgba(243, 11, 164, 1), rgba(243, 11, 164, 0)), radial-gradient(closest-side, rgba(254, 234, 131, 1), rgba(254, 234, 131, 0)), radial-gradient(closest-side, rgba(170, 142, 245, 1), rgba(170, 142, 245, 0)), radial-gradient(closest-side, rgba(248, 192, 147, 1), rgba(248, 192, 147, 0));
|
|
||||||
background-size: 130vmax 130vmax, 80vmax 80vmax, 90vmax 90vmax, 110vmax 110vmax, 90vmax 90vmax;
|
|
||||||
background-position: -80vmax -80vmax, 60vmax -30vmax, 10vmax 10vmax, -30vmax -10vmax, 50vmax 50vmax;
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
animation: 10s movement linear infinite;
|
|
||||||
}
|
|
||||||
/*card design*/
|
|
||||||
|
|
||||||
/*bg*/
|
|
||||||
|
|
||||||
|
|
||||||
:root {
|
|
||||||
font-size: 15px;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
/*font-family: 'Comfortaa', 'Arial Narrow', Arial, sans-serif;*/
|
|
||||||
/*font-family: 'Quicksand', sans-serif;*/
|
|
||||||
color: #fff !important;
|
|
||||||
margin: 0;
|
|
||||||
min-height: 100vh;
|
|
||||||
background-color: #000;
|
|
||||||
/*background-image: radial-gradient(closest-side, rgba(235, 105, 78, 1), rgba(235, 105, 78, 0)), radial-gradient(closest-side, rgba(243, 11, 164, 1), rgba(243, 11, 164, 0)), radial-gradient(closest-side, rgba(254, 234, 131, 1), rgba(254, 234, 131, 0)), radial-gradient(closest-side, rgba(170, 142, 245, 1), rgba(170, 142, 245, 0)), radial-gradient(closest-side, rgba(248, 192, 147, 1), rgba(248, 192, 147, 0));*/
|
|
||||||
/*background-size: 130vmax 130vmax, 80vmax 80vmax, 90vmax 90vmax, 110vmax 110vmax, 90vmax 90vmax;*/
|
|
||||||
/*background-position: -80vmax -80vmax, 60vmax -30vmax, 10vmax 10vmax, -30vmax -10vmax, 50vmax 50vmax;*/
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
/*animation: 10s movement linear infinite;*/
|
|
||||||
}
|
|
||||||
|
|
||||||
body::after {
|
|
||||||
content: '';
|
|
||||||
display: block;
|
|
||||||
position: fixed;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
backdrop-filter: blur(10px);
|
|
||||||
-webkit-backdrop-filter: blur(10px);
|
|
||||||
}
|
|
||||||
|
|
||||||
.myspan {
|
|
||||||
position: relative;
|
|
||||||
z-index: 10;
|
|
||||||
display: flex;
|
|
||||||
min-height: 100vh;
|
|
||||||
width: 100%;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
font-size: 5rem;
|
|
||||||
color: transparent;
|
|
||||||
text-shadow: 0px 0px 1px rgba(255, 255, 255, .6), 0px 4px 4px rgba(0, 0, 0, .05);
|
|
||||||
letter-spacing: .2rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes movement {
|
|
||||||
0%, 100% {
|
|
||||||
background-size: 130vmax 130vmax, 80vmax 80vmax, 90vmax 90vmax, 110vmax 110vmax, 90vmax 90vmax;
|
|
||||||
background-position: -80vmax -80vmax, 60vmax -30vmax, 10vmax 10vmax, -30vmax -10vmax, 50vmax 50vmax;
|
|
||||||
}
|
|
||||||
|
|
||||||
25% {
|
|
||||||
background-size: 100vmax 100vmax, 90vmax 90vmax, 100vmax 100vmax, 90vmax 90vmax, 60vmax 60vmax;
|
|
||||||
background-position: -60vmax -90vmax, 50vmax -40vmax, 0vmax -20vmax, -40vmax -20vmax, 40vmax 60vmax;
|
|
||||||
}
|
|
||||||
|
|
||||||
50% {
|
|
||||||
background-size: 80vmax 80vmax, 110vmax 110vmax, 80vmax 80vmax, 60vmax 60vmax, 80vmax 80vmax;
|
|
||||||
background-position: -50vmax -70vmax, 40vmax -30vmax, 10vmax 0vmax, 20vmax 10vmax, 30vmax 70vmax;
|
|
||||||
}
|
|
||||||
|
|
||||||
75% {
|
|
||||||
background-size: 90vmax 90vmax, 90vmax 90vmax, 100vmax 100vmax, 90vmax 90vmax, 70vmax 70vmax;
|
|
||||||
background-position: -50vmax -40vmax, 50vmax -30vmax, 20vmax 0vmax, -10vmax 10vmax, 40vmax 60vmax;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*bg*/
|
|
||||||
|
|
||||||
.mytextarea {
|
|
||||||
background-color: rgba(255, 255, 255, 0.3);
|
|
||||||
backdrop-filter: blur(20px);
|
|
||||||
padding: 10px;
|
|
||||||
border-radius: 10px;
|
|
||||||
border-width: 0px;
|
|
||||||
height: unset !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mytextarea:active {
|
|
||||||
border-width: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mytextarea:focus-visible {
|
|
||||||
background-color: rgba(255, 255, 255, 0.5);
|
|
||||||
border-width: 0px !important;
|
|
||||||
outline: -webkit-focus-ring-color auto 0px;
|
|
||||||
outline-color: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-toggler {
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-brand {
|
|
||||||
font-size: 1.7rem;
|
|
||||||
color:#fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-select {
|
|
||||||
background-color: rgba(255, 255, 255, 0.2);
|
|
||||||
border-radius: 5px;
|
|
||||||
display: unset !important;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-select > option {
|
|
||||||
background-color: rgba(255, 255, 255, 0.2)
|
|
||||||
}
|
|
||||||
|
|
||||||
.contactform-overlay {
|
|
||||||
position: fixed;
|
|
||||||
z-index: 100;
|
|
||||||
height: 100vh;
|
|
||||||
width: 100%;
|
|
||||||
padding: 100px;
|
|
||||||
top: 0px;
|
|
||||||
left: 0px;
|
|
||||||
/* padding-top: 10vh; */
|
|
||||||
backdrop-filter: blur(20px);
|
|
||||||
/* background-color: rgba(1, 1, 1, .4); */
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-control {
|
|
||||||
background-color: rgba(255,255,255,0.4);
|
|
||||||
border-radius: 5px;
|
|
||||||
height: 50px;
|
|
||||||
}
|
|
||||||
.form-control::placeholder {
|
|
||||||
color:#fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.contactform-close-overlay {
|
|
||||||
position: relative;
|
|
||||||
height: 10vh;
|
|
||||||
}
|
|
||||||
|
|
||||||
.contactform-popup-content {
|
|
||||||
height: 80vh;
|
|
||||||
margin: 0px;
|
|
||||||
padding: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.contactform-popup-close {
|
|
||||||
position: relative;
|
|
||||||
height: 10vh;
|
|
||||||
z-index: 80;
|
|
||||||
}
|
|
||||||
|
|
||||||
.calendly-overlay {
|
|
||||||
position: absolute;
|
|
||||||
z-index: 100;
|
|
||||||
height: 100vh;
|
|
||||||
width: 100%;
|
|
||||||
top: 0px;
|
|
||||||
/* padding-top: 10vh; */
|
|
||||||
backdrop-filter: blur(20px);
|
|
||||||
/* background-color: rgba(1, 1, 1, .4); */
|
|
||||||
}
|
|
||||||
|
|
||||||
.calendly-close-overlay {
|
|
||||||
position: relative;
|
|
||||||
height: 10vh;
|
|
||||||
}
|
|
||||||
|
|
||||||
.calendly-popup-content {
|
|
||||||
height: 80vh;
|
|
||||||
margin: 0px;
|
|
||||||
padding: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.calendly-popup-close {
|
|
||||||
position: relative;
|
|
||||||
height: 10vh;
|
|
||||||
z-index: 80;
|
|
||||||
}
|
|
||||||
|
|
||||||
#myVideo {
|
|
||||||
position: fixed;
|
|
||||||
right: 0;
|
|
||||||
bottom: 0;
|
|
||||||
min-width: 100%;
|
|
||||||
min-height: 100%;
|
|
||||||
opacity: 0.2;
|
|
||||||
}
|
|
||||||
|
|
||||||
.table {
|
|
||||||
color: #fff !important;
|
|
||||||
padding-top: 10px;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
background-color: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-collapse {
|
|
||||||
height: 100vh;
|
|
||||||
/*display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;*/
|
|
||||||
text-align: center !important;
|
|
||||||
align-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-collapse .nav-link {
|
|
||||||
font-size: 1.5em;
|
|
||||||
letter-spacing: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-collapse .nav-item:not(:last-child) {
|
|
||||||
border-bottom: 0px solid white;
|
|
||||||
padding: 0.2em 4em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar {
|
|
||||||
background-color: #040206;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-link {
|
|
||||||
color: #fff !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content {
|
|
||||||
top: 60px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.row {
|
|
||||||
margin-bottom: 10px;
|
|
||||||
}
|
|
||||||
|
|
@ -1,160 +0,0 @@
|
||||||
@import url('https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap');
|
|
||||||
|
|
||||||
.card {
|
|
||||||
background-color: rgba(255,255,255,0.3);
|
|
||||||
backdrop-filter: blur(2px);
|
|
||||||
}
|
|
||||||
|
|
||||||
.table {
|
|
||||||
color: #f2d8bb !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-collapse {
|
|
||||||
height: 100vh;
|
|
||||||
/*display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;*/
|
|
||||||
text-align: center !important;
|
|
||||||
align-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-collapse .nav-link {
|
|
||||||
font-size: 1.4em;
|
|
||||||
letter-spacing: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-collapse .nav-item:not(:last-child) {
|
|
||||||
border-bottom: 0px solid white;
|
|
||||||
padding: 0.2em 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar {
|
|
||||||
background-color: #022c28;
|
|
||||||
color: #d0eae9;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-link {
|
|
||||||
color: #d0eae9 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content {
|
|
||||||
top: 60px;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
/*background-image: url('/uploads/0988758e-e16c-4c2c-8c1e-efa3ac5f0274/images/ribi1_brighter.png') !important;*/
|
|
||||||
background-color: #022c28;
|
|
||||||
background-attachment: fixed;
|
|
||||||
background-position: center;
|
|
||||||
background-size: cover;
|
|
||||||
color: aqua;
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 300;
|
|
||||||
font-style: normal;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 {
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 700;
|
|
||||||
font-style: bold;
|
|
||||||
padding-top: 30px;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
font-size: 2.488rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
h2 {
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 500;
|
|
||||||
font-style: normal;
|
|
||||||
padding-top: 15px;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
font-size: 2.288rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
h3 {
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 400;
|
|
||||||
font-style: normal;
|
|
||||||
padding-top: 10px;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
font-size: 2.074rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
p {
|
|
||||||
color: #fff;
|
|
||||||
font-size: x-large;
|
|
||||||
text-align: justify;
|
|
||||||
text-justify: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
li {
|
|
||||||
color: #fff;
|
|
||||||
font-size: large;
|
|
||||||
text-align: center;
|
|
||||||
text-justify: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-primary {
|
|
||||||
color: #d0eae9;
|
|
||||||
background-color: #014d4e;
|
|
||||||
border: 0px;
|
|
||||||
}
|
|
||||||
.btn-primary:hover {
|
|
||||||
color: #fff;
|
|
||||||
background-color: #086262;
|
|
||||||
border: 0px;
|
|
||||||
margin: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.row {
|
|
||||||
padding-bottom: 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.searchInput::placeholder {
|
|
||||||
color:#d0eae9;
|
|
||||||
}
|
|
||||||
|
|
||||||
#myVideo {
|
|
||||||
position: fixed;
|
|
||||||
right: 0;
|
|
||||||
top: -100px;
|
|
||||||
min-width: 100%;
|
|
||||||
min-height: 100%;
|
|
||||||
transform: translateX(calc((100% - 100vw) / 2));
|
|
||||||
}
|
|
||||||
|
|
||||||
.img-fluid {
|
|
||||||
max-height: 50vh;
|
|
||||||
width: auto;
|
|
||||||
border-radius: 5px;
|
|
||||||
}
|
|
||||||
.col {
|
|
||||||
align-items: center;
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-select {
|
|
||||||
background-color: rgba(255, 255, 255, 0.2);
|
|
||||||
border-radius: 5px;
|
|
||||||
display: unset !important;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.list-group-item {
|
|
||||||
background-color: rgba(255,255,255,0.3);
|
|
||||||
backdrop-filter: blur(2px);
|
|
||||||
}
|
|
||||||
|
|
||||||
.bg-light {
|
|
||||||
background-color: rgba(255,255,255,0.3);
|
|
||||||
backdrop-filter: blur(2px);
|
|
||||||
}
|
|
||||||
|
|
||||||
.text-primary {
|
|
||||||
--bs-text-opacity: 1;
|
|
||||||
color: aqua;
|
|
||||||
}
|
|
||||||
|
|
@ -1,160 +0,0 @@
|
||||||
@import url('https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap');
|
|
||||||
|
|
||||||
.card {
|
|
||||||
background-color: rgba(255,255,255,0.3);
|
|
||||||
backdrop-filter: blur(2px);
|
|
||||||
}
|
|
||||||
|
|
||||||
.table {
|
|
||||||
color: #f2d8bb !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-collapse {
|
|
||||||
height: 100vh;
|
|
||||||
/*display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;*/
|
|
||||||
text-align: center !important;
|
|
||||||
align-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-collapse .nav-link {
|
|
||||||
font-size: 1.4em;
|
|
||||||
letter-spacing: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-collapse .nav-item:not(:last-child) {
|
|
||||||
border-bottom: 0px solid white;
|
|
||||||
padding: 0.2em 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar {
|
|
||||||
background-color: #022c28;
|
|
||||||
color: #d0eae9;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-link {
|
|
||||||
color: #d0eae9 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content {
|
|
||||||
top: 60px;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
/*background-image: url('/uploads/0988758e-e16c-4c2c-8c1e-efa3ac5f0274/images/ribi1_brighter.png') !important;*/
|
|
||||||
background-color: #022c28;
|
|
||||||
background-attachment: fixed;
|
|
||||||
background-position: center;
|
|
||||||
background-size: cover;
|
|
||||||
color: aqua;
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 300;
|
|
||||||
font-style: normal;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 {
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 700;
|
|
||||||
font-style: bold;
|
|
||||||
padding-top: 30px;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
font-size: 2.488rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
h2 {
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 500;
|
|
||||||
font-style: normal;
|
|
||||||
padding-top: 15px;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
font-size: 2.288rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
h3 {
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 400;
|
|
||||||
font-style: normal;
|
|
||||||
padding-top: 10px;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
font-size: 2.074rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
p {
|
|
||||||
color: #fff;
|
|
||||||
font-size: x-large;
|
|
||||||
text-align: justify;
|
|
||||||
text-justify: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
li {
|
|
||||||
color: #fff;
|
|
||||||
font-size: large;
|
|
||||||
text-align: center;
|
|
||||||
text-justify: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-primary {
|
|
||||||
color: #d0eae9;
|
|
||||||
background-color: #014d4e;
|
|
||||||
border: 0px;
|
|
||||||
}
|
|
||||||
.btn-primary:hover {
|
|
||||||
color: #fff;
|
|
||||||
background-color: #086262;
|
|
||||||
border: 0px;
|
|
||||||
margin: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.row {
|
|
||||||
padding-bottom: 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.searchInput::placeholder {
|
|
||||||
color:#d0eae9;
|
|
||||||
}
|
|
||||||
|
|
||||||
#myVideo {
|
|
||||||
position: fixed;
|
|
||||||
right: 0;
|
|
||||||
top: -100px;
|
|
||||||
min-width: 100%;
|
|
||||||
min-height: 100%;
|
|
||||||
transform: translateX(calc((100% - 100vw) / 2));
|
|
||||||
}
|
|
||||||
|
|
||||||
.img-fluid {
|
|
||||||
max-height: 50vh;
|
|
||||||
width: auto;
|
|
||||||
border-radius: 5px;
|
|
||||||
}
|
|
||||||
.col {
|
|
||||||
align-items: center;
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-select {
|
|
||||||
background-color: rgba(255, 255, 255, 0.2);
|
|
||||||
border-radius: 5px;
|
|
||||||
display: unset !important;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.list-group-item {
|
|
||||||
background-color: rgba(255,255,255,0.3);
|
|
||||||
backdrop-filter: blur(2px);
|
|
||||||
}
|
|
||||||
|
|
||||||
.bg-light {
|
|
||||||
background-color: rgba(255,255,255,0.3);
|
|
||||||
backdrop-filter: blur(2px);
|
|
||||||
}
|
|
||||||
|
|
||||||
.text-primary {
|
|
||||||
--bs-text-opacity: 1;
|
|
||||||
color: aqua;
|
|
||||||
}
|
|
||||||
|
|
@ -17,6 +17,18 @@ label {
|
||||||
/* display: none; */
|
/* display: none; */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.img-fluid {
|
||||||
|
max-height: 50vh;
|
||||||
|
width: auto;
|
||||||
|
border-radius: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-img-top {
|
||||||
|
max-height: 50vh;
|
||||||
|
width: auto;
|
||||||
|
border-radius: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
.btn {
|
.btn {
|
||||||
background: rgba(255, 255, 255, 0.5);
|
background: rgba(255, 255, 255, 0.5);
|
||||||
border: 0;
|
border: 0;
|
||||||
|
|
@ -1,160 +0,0 @@
|
||||||
@import url('https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap');
|
|
||||||
|
|
||||||
.card {
|
|
||||||
background-color: rgba(255,255,255,0.3);
|
|
||||||
backdrop-filter: blur(2px);
|
|
||||||
}
|
|
||||||
|
|
||||||
.table {
|
|
||||||
color: #f2d8bb !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-collapse {
|
|
||||||
height: 100vh;
|
|
||||||
/*display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;*/
|
|
||||||
text-align: center !important;
|
|
||||||
align-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-collapse .nav-link {
|
|
||||||
font-size: 1.4em;
|
|
||||||
letter-spacing: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-collapse .nav-item:not(:last-child) {
|
|
||||||
border-bottom: 0px solid white;
|
|
||||||
padding: 0.2em 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar {
|
|
||||||
background-color: #022c28;
|
|
||||||
color: #d0eae9;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-link {
|
|
||||||
color: #d0eae9 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content {
|
|
||||||
top: 60px;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
/*background-image: url('/uploads/0988758e-e16c-4c2c-8c1e-efa3ac5f0274/images/ribi1_brighter.png') !important;*/
|
|
||||||
background-color: #022c28;
|
|
||||||
background-attachment: fixed;
|
|
||||||
background-position: center;
|
|
||||||
background-size: cover;
|
|
||||||
color: aqua;
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 300;
|
|
||||||
font-style: normal;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 {
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 700;
|
|
||||||
font-style: bold;
|
|
||||||
padding-top: 30px;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
font-size: 2.488rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
h2 {
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 500;
|
|
||||||
font-style: normal;
|
|
||||||
padding-top: 15px;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
font-size: 2.288rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
h3 {
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 400;
|
|
||||||
font-style: normal;
|
|
||||||
padding-top: 10px;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
font-size: 2.074rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
p {
|
|
||||||
color: #fff;
|
|
||||||
font-size: x-large;
|
|
||||||
text-align: justify;
|
|
||||||
text-justify: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
li {
|
|
||||||
color: #fff;
|
|
||||||
font-size: large;
|
|
||||||
text-align: center;
|
|
||||||
text-justify: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-primary {
|
|
||||||
color: #d0eae9;
|
|
||||||
background-color: #014d4e;
|
|
||||||
border: 0px;
|
|
||||||
}
|
|
||||||
.btn-primary:hover {
|
|
||||||
color: #fff;
|
|
||||||
background-color: #086262;
|
|
||||||
border: 0px;
|
|
||||||
margin: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.row {
|
|
||||||
padding-bottom: 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.searchInput::placeholder {
|
|
||||||
color:#d0eae9;
|
|
||||||
}
|
|
||||||
|
|
||||||
#myVideo {
|
|
||||||
position: fixed;
|
|
||||||
right: 0;
|
|
||||||
top: -100px;
|
|
||||||
min-width: 100%;
|
|
||||||
min-height: 100%;
|
|
||||||
transform: translateX(calc((100% - 100vw) / 2));
|
|
||||||
}
|
|
||||||
|
|
||||||
.img-fluid {
|
|
||||||
max-height: 50vh;
|
|
||||||
width: auto;
|
|
||||||
border-radius: 5px;
|
|
||||||
}
|
|
||||||
.col {
|
|
||||||
align-items: center;
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-select {
|
|
||||||
background-color: rgba(255, 255, 255, 0.2);
|
|
||||||
border-radius: 5px;
|
|
||||||
display: unset !important;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.list-group-item {
|
|
||||||
background-color: rgba(255,255,255,0.3);
|
|
||||||
backdrop-filter: blur(2px);
|
|
||||||
}
|
|
||||||
|
|
||||||
.bg-light {
|
|
||||||
background-color: rgba(255,255,255,0.3);
|
|
||||||
backdrop-filter: blur(2px);
|
|
||||||
}
|
|
||||||
|
|
||||||
.text-primary {
|
|
||||||
--bs-text-opacity: 1;
|
|
||||||
color: aqua;
|
|
||||||
}
|
|
||||||
|
|
@ -1,490 +0,0 @@
|
||||||
/*@import url('https://fonts.googleapis.com/css2?family=Quicksand&display=swap');
|
|
||||||
@import url('https://fonts.googleapis.com/css?family=Comfortaa:400,700,300');*/
|
|
||||||
|
|
||||||
/*search*/
|
|
||||||
|
|
||||||
|
|
||||||
p {
|
|
||||||
font-size: x-large;
|
|
||||||
}
|
|
||||||
|
|
||||||
li {
|
|
||||||
list-style: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
label {
|
|
||||||
color: #000;
|
|
||||||
/* display: none; */
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn {
|
|
||||||
background: rgba(255, 255, 255, 0.5);
|
|
||||||
border: 0;
|
|
||||||
color: #000000;
|
|
||||||
width: fit-content;
|
|
||||||
font-weight: bold;
|
|
||||||
transition: all 0.2s ease;
|
|
||||||
margin: 15px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.voicebutton {
|
|
||||||
border-radius: 50% !important;
|
|
||||||
padding: 10px !important;
|
|
||||||
width: 40px;
|
|
||||||
height:40px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.menubtn {
|
|
||||||
background: rgba(255, 255, 255, 0.5);
|
|
||||||
border: 0;
|
|
||||||
color: #000000;
|
|
||||||
/* width: 98%; */
|
|
||||||
font-weight: bold;
|
|
||||||
border-radius: 20px;
|
|
||||||
height: 40px;
|
|
||||||
transition: all 0.2s ease;
|
|
||||||
padding: 10px;
|
|
||||||
margin: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn:active {
|
|
||||||
background: rgba(255, 255, 255, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn:hover {
|
|
||||||
background: rgba(255, 255, 255, 0.8);
|
|
||||||
}
|
|
||||||
|
|
||||||
img {
|
|
||||||
border-radius: 20px !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
input.search_bar{
|
|
||||||
border: none;
|
|
||||||
outline: none;
|
|
||||||
width: 75px;
|
|
||||||
border-radius: 55px;
|
|
||||||
margin: 0 auto;
|
|
||||||
font-size: 1.3em;
|
|
||||||
color: #0d2840;
|
|
||||||
padding: 15px 30px 15px 45px;
|
|
||||||
transition: all .3s cubic-bezier(0,0,.5,1.5);
|
|
||||||
box-shadow: 0 3px 10px -2px rgba(0,0,0,.1);
|
|
||||||
background: rgba(255, 255, 255, 0.3) url(https://i.imgur.com/seveWIw.png) no-repeat center center;
|
|
||||||
}
|
|
||||||
|
|
||||||
input.search_bar:focus{
|
|
||||||
width: 100%;
|
|
||||||
background-position: calc(100% - 35px) center
|
|
||||||
}
|
|
||||||
|
|
||||||
/*Removes default x in search fields (webkit only i guess)*/
|
|
||||||
input[type=search]::-webkit-search-cancel-button {
|
|
||||||
-webkit-appearance: none;
|
|
||||||
}
|
|
||||||
/*Changes the color of the placeholder*/
|
|
||||||
::-webkit-input-placeholder {
|
|
||||||
color: #0d2840;
|
|
||||||
opacity: .5;
|
|
||||||
}
|
|
||||||
|
|
||||||
:-moz-placeholder {
|
|
||||||
color: #0d2840;
|
|
||||||
opacity: .5;
|
|
||||||
}
|
|
||||||
|
|
||||||
::-moz-placeholder {
|
|
||||||
color: #0d2840;
|
|
||||||
opacity: .5;
|
|
||||||
}
|
|
||||||
|
|
||||||
:-ms-input-placeholder {
|
|
||||||
color: #0d2840;
|
|
||||||
opacity: .5;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*search*/
|
|
||||||
|
|
||||||
/*Search2*/
|
|
||||||
.searchBox {
|
|
||||||
width: 60px;
|
|
||||||
background: rgba(255, 255, 255, 0.3);
|
|
||||||
height: 60px;
|
|
||||||
border-radius: 40px;
|
|
||||||
padding: 10px;
|
|
||||||
margin: 0 auto;
|
|
||||||
transition: 0.8s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.searchInput:active > .searchBox{
|
|
||||||
width:100%
|
|
||||||
}
|
|
||||||
.searchInput:focus > .searchBox {
|
|
||||||
width: 100%
|
|
||||||
}
|
|
||||||
|
|
||||||
.searchInput::placeholder {
|
|
||||||
color:#fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.searchBox:hover {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.searchBox:hover > .searchInput {
|
|
||||||
width: calc(100% - 60px);
|
|
||||||
padding: 0 6px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.searchBox:hover > .searchButton {
|
|
||||||
background: white;
|
|
||||||
color: #2f3640;
|
|
||||||
}
|
|
||||||
|
|
||||||
.searchButton {
|
|
||||||
color: white;
|
|
||||||
float: right;
|
|
||||||
width: 40px;
|
|
||||||
height: 40px;
|
|
||||||
border-radius: 50px;
|
|
||||||
background-color: #e493d0;
|
|
||||||
background-image: radial-gradient(closest-side, rgba(235, 105, 78, 1), rgba(235, 105, 78, 0)), radial-gradient(closest-side, rgba(243, 11, 164, 1), rgba(243, 11, 164, 0)), radial-gradient(closest-side, rgba(254, 234, 131, 1), rgba(254, 234, 131, 0)), radial-gradient(closest-side, rgba(170, 142, 245, 1), rgba(170, 142, 245, 0)), radial-gradient(closest-side, rgba(248, 192, 147, 1), rgba(248, 192, 147, 0));
|
|
||||||
background-size: 130vmax 130vmax, 80vmax 80vmax, 90vmax 90vmax, 110vmax 110vmax, 90vmax 90vmax;
|
|
||||||
background-position: -80vmax -80vmax, 60vmax -30vmax, 10vmax 10vmax, -30vmax -10vmax, 50vmax 50vmax;
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
animation: 10s movement linear infinite;
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.searchInput {
|
|
||||||
border: none;
|
|
||||||
background: none;
|
|
||||||
outline: none;
|
|
||||||
font-size: 1.3em !important;
|
|
||||||
color: #0d2840 !important;
|
|
||||||
float: left;
|
|
||||||
padding: 0;
|
|
||||||
color: white;
|
|
||||||
font-size: 16px;
|
|
||||||
transition: 0.4s;
|
|
||||||
line-height: 40px;
|
|
||||||
width: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*Search2*/
|
|
||||||
|
|
||||||
|
|
||||||
.event {
|
|
||||||
border-radius: 20px !important;
|
|
||||||
background-color: rgba(255, 255, 255, 0.2) !important;
|
|
||||||
backdrop-filter: blur(20px);
|
|
||||||
border: 0;
|
|
||||||
box-shadow: 0 2px 20px rgba(0, 0, 0, 0.06), 0 2px 4px rgba(0, 0, 0, 0.07);
|
|
||||||
transition: all 0.15s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*card design*/
|
|
||||||
.card {
|
|
||||||
border-radius: 20px !important;
|
|
||||||
overflow: hidden;
|
|
||||||
background-color: rgba(255, 255, 255, 0.2) !important;
|
|
||||||
backdrop-filter: blur(20px);
|
|
||||||
border: 0;
|
|
||||||
box-shadow: 0 2px 20px rgba(0, 0, 0, 0.06), 0 2px 4px rgba(0, 0, 0, 0.07);
|
|
||||||
transition: all 0.15s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.card:hover {
|
|
||||||
box-shadow: 0 6px 30px rgba(0, 0, 0, 0.1), 0 10px 8px rgba(0, 0, 0, 0.015);
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-body .card-title {
|
|
||||||
font-family: 'Lato', sans-serif;
|
|
||||||
font-weight: 700;
|
|
||||||
letter-spacing: 0.3px;
|
|
||||||
font-size: 24px;
|
|
||||||
color: #121212;
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-text {
|
|
||||||
font-family: 'Lato', sans-serif;
|
|
||||||
font-weight: 400;
|
|
||||||
font-size: 15px;
|
|
||||||
letter-spacing: 0.3px;
|
|
||||||
color: #4E4E4E;
|
|
||||||
}
|
|
||||||
|
|
||||||
.card .container {
|
|
||||||
width: 88%;
|
|
||||||
/*background: #F0EEF8;*/
|
|
||||||
border-radius: 30px;
|
|
||||||
/*height: 140px;*/
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.container:hover > img {
|
|
||||||
transform: scale(1.2);
|
|
||||||
}
|
|
||||||
|
|
||||||
.container img {
|
|
||||||
/*padding: 75px;*/
|
|
||||||
/*margin-top: -40px;
|
|
||||||
margin-bottom: -40px;*/
|
|
||||||
transition: 0.4s ease;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn:hover {
|
|
||||||
background-color: #e493d0;
|
|
||||||
background-image: radial-gradient(closest-side, rgba(235, 105, 78, 1), rgba(235, 105, 78, 0)), radial-gradient(closest-side, rgba(243, 11, 164, 1), rgba(243, 11, 164, 0)), radial-gradient(closest-side, rgba(254, 234, 131, 1), rgba(254, 234, 131, 0)), radial-gradient(closest-side, rgba(170, 142, 245, 1), rgba(170, 142, 245, 0)), radial-gradient(closest-side, rgba(248, 192, 147, 1), rgba(248, 192, 147, 0));
|
|
||||||
background-size: 130vmax 130vmax, 80vmax 80vmax, 90vmax 90vmax, 110vmax 110vmax, 90vmax 90vmax;
|
|
||||||
background-position: -80vmax -80vmax, 60vmax -30vmax, 10vmax 10vmax, -30vmax -10vmax, 50vmax 50vmax;
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
animation: 10s movement linear infinite;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn:focus {
|
|
||||||
background-color: #e493d0;
|
|
||||||
background-image: radial-gradient(closest-side, rgba(235, 105, 78, 1), rgba(235, 105, 78, 0)), radial-gradient(closest-side, rgba(243, 11, 164, 1), rgba(243, 11, 164, 0)), radial-gradient(closest-side, rgba(254, 234, 131, 1), rgba(254, 234, 131, 0)), radial-gradient(closest-side, rgba(170, 142, 245, 1), rgba(170, 142, 245, 0)), radial-gradient(closest-side, rgba(248, 192, 147, 1), rgba(248, 192, 147, 0));
|
|
||||||
background-size: 130vmax 130vmax, 80vmax 80vmax, 90vmax 90vmax, 110vmax 110vmax, 90vmax 90vmax;
|
|
||||||
background-position: -80vmax -80vmax, 60vmax -30vmax, 10vmax 10vmax, -30vmax -10vmax, 50vmax 50vmax;
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
animation: 10s movement linear infinite;
|
|
||||||
}
|
|
||||||
/*card design*/
|
|
||||||
|
|
||||||
/*bg*/
|
|
||||||
|
|
||||||
|
|
||||||
:root {
|
|
||||||
font-size: 15px;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
/*font-family: 'Comfortaa', 'Arial Narrow', Arial, sans-serif;*/
|
|
||||||
/*font-family: 'Quicksand', sans-serif;*/
|
|
||||||
color: #fff !important;
|
|
||||||
margin: 0;
|
|
||||||
min-height: 100vh;
|
|
||||||
background-color: #000;
|
|
||||||
/*background-image: radial-gradient(closest-side, rgba(235, 105, 78, 1), rgba(235, 105, 78, 0)), radial-gradient(closest-side, rgba(243, 11, 164, 1), rgba(243, 11, 164, 0)), radial-gradient(closest-side, rgba(254, 234, 131, 1), rgba(254, 234, 131, 0)), radial-gradient(closest-side, rgba(170, 142, 245, 1), rgba(170, 142, 245, 0)), radial-gradient(closest-side, rgba(248, 192, 147, 1), rgba(248, 192, 147, 0));*/
|
|
||||||
/*background-size: 130vmax 130vmax, 80vmax 80vmax, 90vmax 90vmax, 110vmax 110vmax, 90vmax 90vmax;*/
|
|
||||||
/*background-position: -80vmax -80vmax, 60vmax -30vmax, 10vmax 10vmax, -30vmax -10vmax, 50vmax 50vmax;*/
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
/*animation: 10s movement linear infinite;*/
|
|
||||||
}
|
|
||||||
|
|
||||||
body::after {
|
|
||||||
content: '';
|
|
||||||
display: block;
|
|
||||||
position: fixed;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
backdrop-filter: blur(10px);
|
|
||||||
-webkit-backdrop-filter: blur(10px);
|
|
||||||
}
|
|
||||||
|
|
||||||
.myspan {
|
|
||||||
position: relative;
|
|
||||||
z-index: 10;
|
|
||||||
display: flex;
|
|
||||||
min-height: 100vh;
|
|
||||||
width: 100%;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
font-size: 5rem;
|
|
||||||
color: transparent;
|
|
||||||
text-shadow: 0px 0px 1px rgba(255, 255, 255, .6), 0px 4px 4px rgba(0, 0, 0, .05);
|
|
||||||
letter-spacing: .2rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes movement {
|
|
||||||
0%, 100% {
|
|
||||||
background-size: 130vmax 130vmax, 80vmax 80vmax, 90vmax 90vmax, 110vmax 110vmax, 90vmax 90vmax;
|
|
||||||
background-position: -80vmax -80vmax, 60vmax -30vmax, 10vmax 10vmax, -30vmax -10vmax, 50vmax 50vmax;
|
|
||||||
}
|
|
||||||
|
|
||||||
25% {
|
|
||||||
background-size: 100vmax 100vmax, 90vmax 90vmax, 100vmax 100vmax, 90vmax 90vmax, 60vmax 60vmax;
|
|
||||||
background-position: -60vmax -90vmax, 50vmax -40vmax, 0vmax -20vmax, -40vmax -20vmax, 40vmax 60vmax;
|
|
||||||
}
|
|
||||||
|
|
||||||
50% {
|
|
||||||
background-size: 80vmax 80vmax, 110vmax 110vmax, 80vmax 80vmax, 60vmax 60vmax, 80vmax 80vmax;
|
|
||||||
background-position: -50vmax -70vmax, 40vmax -30vmax, 10vmax 0vmax, 20vmax 10vmax, 30vmax 70vmax;
|
|
||||||
}
|
|
||||||
|
|
||||||
75% {
|
|
||||||
background-size: 90vmax 90vmax, 90vmax 90vmax, 100vmax 100vmax, 90vmax 90vmax, 70vmax 70vmax;
|
|
||||||
background-position: -50vmax -40vmax, 50vmax -30vmax, 20vmax 0vmax, -10vmax 10vmax, 40vmax 60vmax;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*bg*/
|
|
||||||
|
|
||||||
.mytextarea {
|
|
||||||
background-color: rgba(255, 255, 255, 0.3);
|
|
||||||
backdrop-filter: blur(20px);
|
|
||||||
padding: 10px;
|
|
||||||
border-radius: 10px;
|
|
||||||
border-width: 0px;
|
|
||||||
height: unset !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mytextarea:active {
|
|
||||||
border-width: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mytextarea:focus-visible {
|
|
||||||
background-color: rgba(255, 255, 255, 0.5);
|
|
||||||
border-width: 0px !important;
|
|
||||||
outline: -webkit-focus-ring-color auto 0px;
|
|
||||||
outline-color: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-toggler {
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-brand {
|
|
||||||
font-size: 1.7rem;
|
|
||||||
color:#fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-select {
|
|
||||||
background-color: rgba(255, 255, 255, 0.2);
|
|
||||||
border-radius: 5px;
|
|
||||||
display: unset !important;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-select > option {
|
|
||||||
background-color: rgba(255, 255, 255, 0.2)
|
|
||||||
}
|
|
||||||
|
|
||||||
.contactform-overlay {
|
|
||||||
position: fixed;
|
|
||||||
z-index: 100;
|
|
||||||
height: 100vh;
|
|
||||||
width: 100%;
|
|
||||||
padding: 100px;
|
|
||||||
top: 0px;
|
|
||||||
left: 0px;
|
|
||||||
/* padding-top: 10vh; */
|
|
||||||
backdrop-filter: blur(20px);
|
|
||||||
/* background-color: rgba(1, 1, 1, .4); */
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-control {
|
|
||||||
background-color: rgba(255,255,255,0.4);
|
|
||||||
border-radius: 5px;
|
|
||||||
height: 50px;
|
|
||||||
}
|
|
||||||
.form-control::placeholder {
|
|
||||||
color:#fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.contactform-close-overlay {
|
|
||||||
position: relative;
|
|
||||||
height: 10vh;
|
|
||||||
}
|
|
||||||
|
|
||||||
.contactform-popup-content {
|
|
||||||
height: 80vh;
|
|
||||||
margin: 0px;
|
|
||||||
padding: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.contactform-popup-close {
|
|
||||||
position: relative;
|
|
||||||
height: 10vh;
|
|
||||||
z-index: 80;
|
|
||||||
}
|
|
||||||
|
|
||||||
.calendly-overlay {
|
|
||||||
position: absolute;
|
|
||||||
z-index: 100;
|
|
||||||
height: 100vh;
|
|
||||||
width: 100%;
|
|
||||||
top: 0px;
|
|
||||||
/* padding-top: 10vh; */
|
|
||||||
backdrop-filter: blur(20px);
|
|
||||||
/* background-color: rgba(1, 1, 1, .4); */
|
|
||||||
}
|
|
||||||
|
|
||||||
.calendly-close-overlay {
|
|
||||||
position: relative;
|
|
||||||
height: 10vh;
|
|
||||||
}
|
|
||||||
|
|
||||||
.calendly-popup-content {
|
|
||||||
height: 80vh;
|
|
||||||
margin: 0px;
|
|
||||||
padding: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.calendly-popup-close {
|
|
||||||
position: relative;
|
|
||||||
height: 10vh;
|
|
||||||
z-index: 80;
|
|
||||||
}
|
|
||||||
|
|
||||||
#myVideo {
|
|
||||||
position: fixed;
|
|
||||||
right: 0;
|
|
||||||
bottom: 0;
|
|
||||||
min-width: 100%;
|
|
||||||
min-height: 100%;
|
|
||||||
opacity: 0.2;
|
|
||||||
}
|
|
||||||
|
|
||||||
.table {
|
|
||||||
color: #fff !important;
|
|
||||||
padding-top: 10px;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
background-color: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-collapse {
|
|
||||||
height: 100vh;
|
|
||||||
/*display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;*/
|
|
||||||
text-align: center !important;
|
|
||||||
align-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-collapse .nav-link {
|
|
||||||
font-size: 1.5em;
|
|
||||||
letter-spacing: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-collapse .nav-item:not(:last-child) {
|
|
||||||
border-bottom: 0px solid white;
|
|
||||||
padding: 0.2em 4em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar {
|
|
||||||
background-color: #040206;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-link {
|
|
||||||
color: #fff !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content {
|
|
||||||
top: 60px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.row {
|
|
||||||
margin-bottom: 10px;
|
|
||||||
}
|
|
||||||
|
|
@ -1,160 +0,0 @@
|
||||||
@import url('https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap');
|
|
||||||
|
|
||||||
.card {
|
|
||||||
background-color: rgba(255,255,255,0.3);
|
|
||||||
backdrop-filter: blur(2px);
|
|
||||||
}
|
|
||||||
|
|
||||||
.table {
|
|
||||||
color: #f2d8bb !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-collapse {
|
|
||||||
height: 100vh;
|
|
||||||
/*display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;*/
|
|
||||||
text-align: center !important;
|
|
||||||
align-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-collapse .nav-link {
|
|
||||||
font-size: 1.4em;
|
|
||||||
letter-spacing: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-collapse .nav-item:not(:last-child) {
|
|
||||||
border-bottom: 0px solid white;
|
|
||||||
padding: 0.2em 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar {
|
|
||||||
background-color: #022c28;
|
|
||||||
color: #d0eae9;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-link {
|
|
||||||
color: #d0eae9 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content {
|
|
||||||
top: 60px;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
/*background-image: url('/uploads/0988758e-e16c-4c2c-8c1e-efa3ac5f0274/images/ribi1_brighter.png') !important;*/
|
|
||||||
background-color: #022c28;
|
|
||||||
background-attachment: fixed;
|
|
||||||
background-position: center;
|
|
||||||
background-size: cover;
|
|
||||||
color: aqua;
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 300;
|
|
||||||
font-style: normal;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 {
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 700;
|
|
||||||
font-style: bold;
|
|
||||||
padding-top: 30px;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
font-size: 2.488rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
h2 {
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 500;
|
|
||||||
font-style: normal;
|
|
||||||
padding-top: 15px;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
font-size: 2.288rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
h3 {
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 400;
|
|
||||||
font-style: normal;
|
|
||||||
padding-top: 10px;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
font-size: 2.074rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
p {
|
|
||||||
color: #fff;
|
|
||||||
font-size: x-large;
|
|
||||||
text-align: justify;
|
|
||||||
text-justify: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
li {
|
|
||||||
color: #fff;
|
|
||||||
font-size: large;
|
|
||||||
text-align: center;
|
|
||||||
text-justify: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-primary {
|
|
||||||
color: #d0eae9;
|
|
||||||
background-color: #014d4e;
|
|
||||||
border: 0px;
|
|
||||||
margin: 5px;
|
|
||||||
}
|
|
||||||
.btn-primary:hover {
|
|
||||||
color: #fff;
|
|
||||||
background-color: #086262;
|
|
||||||
border: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.row {
|
|
||||||
padding-bottom: 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.searchInput::placeholder {
|
|
||||||
color:#d0eae9;
|
|
||||||
}
|
|
||||||
|
|
||||||
#myVideo {
|
|
||||||
position: fixed;
|
|
||||||
right: 0;
|
|
||||||
top: -100px;
|
|
||||||
min-width: 100%;
|
|
||||||
min-height: 100%;
|
|
||||||
transform: translateX(calc((100% - 100vw) / 2));
|
|
||||||
}
|
|
||||||
|
|
||||||
.img-fluid {
|
|
||||||
max-height: 50vh;
|
|
||||||
width: auto;
|
|
||||||
border-radius: 5px;
|
|
||||||
}
|
|
||||||
.col {
|
|
||||||
align-items: center;
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-select {
|
|
||||||
background-color: rgba(255, 255, 255, 0.2);
|
|
||||||
border-radius: 5px;
|
|
||||||
display: unset !important;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.list-group-item {
|
|
||||||
background-color: rgba(255,255,255,0.3);
|
|
||||||
backdrop-filter: blur(2px);
|
|
||||||
}
|
|
||||||
|
|
||||||
.bg-light {
|
|
||||||
background-color: rgba(255,255,255,0.3) !important;
|
|
||||||
backdrop-filter: blur(2px) !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.text-primary {
|
|
||||||
--bs-text-opacity: 1;
|
|
||||||
color: aqua;
|
|
||||||
}
|
|
||||||
|
|
@ -1,160 +0,0 @@
|
||||||
@import url('https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap');
|
|
||||||
|
|
||||||
.card {
|
|
||||||
background-color: rgba(255,255,255,0.3);
|
|
||||||
backdrop-filter: blur(2px);
|
|
||||||
}
|
|
||||||
|
|
||||||
.table {
|
|
||||||
color: #f2d8bb !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-collapse {
|
|
||||||
height: 100vh;
|
|
||||||
/*display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;*/
|
|
||||||
text-align: center !important;
|
|
||||||
align-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-collapse .nav-link {
|
|
||||||
font-size: 1.4em;
|
|
||||||
letter-spacing: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-collapse .nav-item:not(:last-child) {
|
|
||||||
border-bottom: 0px solid white;
|
|
||||||
padding: 0.2em 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar {
|
|
||||||
background-color: #022c28;
|
|
||||||
color: #d0eae9;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-link {
|
|
||||||
color: #d0eae9 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content {
|
|
||||||
top: 60px;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
/*background-image: url('/uploads/0988758e-e16c-4c2c-8c1e-efa3ac5f0274/images/ribi1_brighter.png') !important;*/
|
|
||||||
background-color: #022c28;
|
|
||||||
background-attachment: fixed;
|
|
||||||
background-position: center;
|
|
||||||
background-size: cover;
|
|
||||||
color: aqua;
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 300;
|
|
||||||
font-style: normal;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 {
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 700;
|
|
||||||
font-style: bold;
|
|
||||||
padding-top: 30px;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
font-size: 2.488rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
h2 {
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 500;
|
|
||||||
font-style: normal;
|
|
||||||
padding-top: 15px;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
font-size: 2.288rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
h3 {
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 400;
|
|
||||||
font-style: normal;
|
|
||||||
padding-top: 10px;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
font-size: 2.074rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
p {
|
|
||||||
color: #fff;
|
|
||||||
font-size: x-large;
|
|
||||||
text-align: justify;
|
|
||||||
text-justify: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
li {
|
|
||||||
color: #fff;
|
|
||||||
font-size: large;
|
|
||||||
text-align: center;
|
|
||||||
text-justify: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-primary {
|
|
||||||
color: #d0eae9;
|
|
||||||
background-color: #014d4e;
|
|
||||||
border: 0px;
|
|
||||||
margin: 5px;
|
|
||||||
}
|
|
||||||
.btn-primary:hover {
|
|
||||||
color: #fff;
|
|
||||||
background-color: #086262;
|
|
||||||
border: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.row {
|
|
||||||
padding-bottom: 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.searchInput::placeholder {
|
|
||||||
color:#d0eae9;
|
|
||||||
}
|
|
||||||
|
|
||||||
#myVideo {
|
|
||||||
position: fixed;
|
|
||||||
right: 0;
|
|
||||||
top: -100px;
|
|
||||||
min-width: 100%;
|
|
||||||
min-height: 100%;
|
|
||||||
transform: translateX(calc((100% - 100vw) / 2));
|
|
||||||
}
|
|
||||||
|
|
||||||
.img-fluid {
|
|
||||||
max-height: 50vh;
|
|
||||||
width: auto;
|
|
||||||
border-radius: 5px;
|
|
||||||
}
|
|
||||||
.col {
|
|
||||||
align-items: center;
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-select {
|
|
||||||
background-color: rgba(255, 255, 255, 0.2);
|
|
||||||
border-radius: 5px;
|
|
||||||
display: unset !important;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.list-group-item {
|
|
||||||
background-color: rgba(255,255,255,0.3);
|
|
||||||
backdrop-filter: blur(2px);
|
|
||||||
}
|
|
||||||
|
|
||||||
.bg-light {
|
|
||||||
background-color: rgba(255,255,255,0.3) !important;
|
|
||||||
backdrop-filter: blur(2px) !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.text-primary {
|
|
||||||
--bs-text-opacity: 1;
|
|
||||||
color: aqua;
|
|
||||||
}
|
|
||||||
|
|
@ -1,160 +0,0 @@
|
||||||
@import url('https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap');
|
|
||||||
|
|
||||||
.card {
|
|
||||||
background-color: rgba(255,255,255,0.3);
|
|
||||||
backdrop-filter: blur(2px);
|
|
||||||
}
|
|
||||||
|
|
||||||
.table {
|
|
||||||
color: #f2d8bb !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-collapse {
|
|
||||||
height: 100vh;
|
|
||||||
/*display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;*/
|
|
||||||
text-align: center !important;
|
|
||||||
align-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-collapse .nav-link {
|
|
||||||
font-size: 1.4em;
|
|
||||||
letter-spacing: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-collapse .nav-item:not(:last-child) {
|
|
||||||
border-bottom: 0px solid white;
|
|
||||||
padding: 0.2em 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar {
|
|
||||||
background-color: #022c28;
|
|
||||||
color: #d0eae9;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-link {
|
|
||||||
color: #d0eae9 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content {
|
|
||||||
top: 60px;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
/*background-image: url('/uploads/0988758e-e16c-4c2c-8c1e-efa3ac5f0274/images/ribi1_brighter.png') !important;*/
|
|
||||||
background-color: #022c28;
|
|
||||||
background-attachment: fixed;
|
|
||||||
background-position: center;
|
|
||||||
background-size: cover;
|
|
||||||
color: aqua;
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 300;
|
|
||||||
font-style: normal;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 {
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 700;
|
|
||||||
font-style: bold;
|
|
||||||
padding-top: 30px;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
font-size: 2.488rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
h2 {
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 500;
|
|
||||||
font-style: normal;
|
|
||||||
padding-top: 15px;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
font-size: 2.288rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
h3 {
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 400;
|
|
||||||
font-style: normal;
|
|
||||||
padding-top: 10px;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
font-size: 2.074rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
p {
|
|
||||||
color: #fff;
|
|
||||||
font-size: x-large;
|
|
||||||
text-align: justify;
|
|
||||||
text-justify: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
li {
|
|
||||||
color: #fff;
|
|
||||||
font-size: large;
|
|
||||||
text-align: center;
|
|
||||||
text-justify: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-primary {
|
|
||||||
color: #d0eae9;
|
|
||||||
background-color: #014d4e;
|
|
||||||
border: 0px;
|
|
||||||
margin: 5px;
|
|
||||||
}
|
|
||||||
.btn-primary:hover {
|
|
||||||
color: #fff;
|
|
||||||
background-color: #086262;
|
|
||||||
border: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.row {
|
|
||||||
padding-bottom: 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.searchInput::placeholder {
|
|
||||||
color:#d0eae9;
|
|
||||||
}
|
|
||||||
|
|
||||||
#myVideo {
|
|
||||||
position: fixed;
|
|
||||||
right: 0;
|
|
||||||
top: -100px;
|
|
||||||
min-width: 100%;
|
|
||||||
min-height: 100%;
|
|
||||||
transform: translateX(calc((100% - 100vw) / 2));
|
|
||||||
}
|
|
||||||
|
|
||||||
.img-fluid {
|
|
||||||
max-height: 50vh;
|
|
||||||
width: auto;
|
|
||||||
border-radius: 5px;
|
|
||||||
}
|
|
||||||
.col {
|
|
||||||
align-items: center;
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-select {
|
|
||||||
background-color: rgba(255, 255, 255, 0.2);
|
|
||||||
border-radius: 5px;
|
|
||||||
display: unset !important;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.list-group-item {
|
|
||||||
background-color: rgba(255,255,255,0.3);
|
|
||||||
backdrop-filter: blur(2px);
|
|
||||||
}
|
|
||||||
|
|
||||||
.bg-light {
|
|
||||||
background-color: rgba(255,255,255,0.3) !important;
|
|
||||||
backdrop-filter: blur(2px) !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.text-primary {
|
|
||||||
--bs-text-opacity: 1;
|
|
||||||
color: aqua;
|
|
||||||
}
|
|
||||||
|
|
@ -1,155 +0,0 @@
|
||||||
@import url('https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap');
|
|
||||||
|
|
||||||
.card {
|
|
||||||
background-color: rgba(255,255,255,0.3);
|
|
||||||
backdrop-filter: blur(2px);
|
|
||||||
}
|
|
||||||
|
|
||||||
.table {
|
|
||||||
color: #f2d8bb !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-collapse {
|
|
||||||
height: 100vh;
|
|
||||||
/*display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;*/
|
|
||||||
text-align: center !important;
|
|
||||||
align-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-collapse .nav-link {
|
|
||||||
font-size: 1.4em;
|
|
||||||
letter-spacing: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-collapse .nav-item:not(:last-child) {
|
|
||||||
border-bottom: 0px solid white;
|
|
||||||
padding: 0.2em 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar {
|
|
||||||
background-color: #022c28;
|
|
||||||
color: #d0eae9;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-link {
|
|
||||||
color: #d0eae9 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content {
|
|
||||||
top: 60px;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
/*background-image: url('/uploads/0988758e-e16c-4c2c-8c1e-efa3ac5f0274/images/ribi1_brighter.png') !important;*/
|
|
||||||
background-color: #022c28;
|
|
||||||
background-attachment: fixed;
|
|
||||||
background-position: center;
|
|
||||||
background-size: cover;
|
|
||||||
color: aqua;
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 300;
|
|
||||||
font-style: normal;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 {
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 700;
|
|
||||||
font-style: bold;
|
|
||||||
padding-top: 30px;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
font-size: 2.488rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
h2 {
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 500;
|
|
||||||
font-style: normal;
|
|
||||||
padding-top: 15px;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
font-size: 2.288rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
h3 {
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 400;
|
|
||||||
font-style: normal;
|
|
||||||
padding-top: 10px;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
font-size: 2.074rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
p {
|
|
||||||
color: #fff;
|
|
||||||
font-size: x-large;
|
|
||||||
text-align: justify;
|
|
||||||
text-justify: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
li {
|
|
||||||
color: #fff;
|
|
||||||
font-size: large;
|
|
||||||
text-align: center;
|
|
||||||
text-justify: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-primary {
|
|
||||||
color: #d0eae9;
|
|
||||||
background-color: #014d4e;
|
|
||||||
border: 0px;
|
|
||||||
}
|
|
||||||
.btn-primary:hover {
|
|
||||||
color: #fff;
|
|
||||||
background-color: #086262;
|
|
||||||
border: 0px;
|
|
||||||
margin: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.row {
|
|
||||||
padding-bottom: 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.searchInput::placeholder {
|
|
||||||
color:#d0eae9;
|
|
||||||
}
|
|
||||||
|
|
||||||
#myVideo {
|
|
||||||
position: fixed;
|
|
||||||
right: 0;
|
|
||||||
top: -100px;
|
|
||||||
min-width: 100%;
|
|
||||||
min-height: 100%;
|
|
||||||
transform: translateX(calc((100% - 100vw) / 2));
|
|
||||||
}
|
|
||||||
|
|
||||||
.img-fluid {
|
|
||||||
max-height: 50vh;
|
|
||||||
width: auto;
|
|
||||||
border-radius: 5px;
|
|
||||||
}
|
|
||||||
.col {
|
|
||||||
align-items: center;
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-select {
|
|
||||||
background-color: rgba(255, 255, 255, 0.2);
|
|
||||||
border-radius: 5px;
|
|
||||||
display: unset !important;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.list-group-item {
|
|
||||||
background-color: rgba(255,255,255,0.3);
|
|
||||||
backdrop-filter: blur(2px);
|
|
||||||
}
|
|
||||||
|
|
||||||
.bg-light {
|
|
||||||
background-color: rgba(255,255,255,0.3);
|
|
||||||
backdrop-filter: blur(2px);
|
|
||||||
}
|
|
||||||
|
|
@ -1,160 +0,0 @@
|
||||||
@import url('https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap');
|
|
||||||
|
|
||||||
.card {
|
|
||||||
background-color: rgba(255,255,255,0.3);
|
|
||||||
backdrop-filter: blur(2px);
|
|
||||||
}
|
|
||||||
|
|
||||||
.table {
|
|
||||||
color: #f2d8bb !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-collapse {
|
|
||||||
height: 100vh;
|
|
||||||
/*display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;*/
|
|
||||||
text-align: center !important;
|
|
||||||
align-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-collapse .nav-link {
|
|
||||||
font-size: 1.4em;
|
|
||||||
letter-spacing: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-collapse .nav-item:not(:last-child) {
|
|
||||||
border-bottom: 0px solid white;
|
|
||||||
padding: 0.2em 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar {
|
|
||||||
background-color: #022c28;
|
|
||||||
color: #d0eae9;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-link {
|
|
||||||
color: #d0eae9 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content {
|
|
||||||
top: 60px;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
/*background-image: url('/uploads/0988758e-e16c-4c2c-8c1e-efa3ac5f0274/images/ribi1_brighter.png') !important;*/
|
|
||||||
background-color: #022c28;
|
|
||||||
background-attachment: fixed;
|
|
||||||
background-position: center;
|
|
||||||
background-size: cover;
|
|
||||||
color: aqua;
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 300;
|
|
||||||
font-style: normal;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 {
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 700;
|
|
||||||
font-style: bold;
|
|
||||||
padding-top: 30px;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
font-size: 2.488rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
h2 {
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 500;
|
|
||||||
font-style: normal;
|
|
||||||
padding-top: 15px;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
font-size: 2.288rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
h3 {
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 400;
|
|
||||||
font-style: normal;
|
|
||||||
padding-top: 10px;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
font-size: 2.074rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
p {
|
|
||||||
color: #fff;
|
|
||||||
font-size: x-large;
|
|
||||||
text-align: justify;
|
|
||||||
text-justify: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
li {
|
|
||||||
color: #fff;
|
|
||||||
font-size: large;
|
|
||||||
text-align: center;
|
|
||||||
text-justify: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-primary {
|
|
||||||
color: #d0eae9;
|
|
||||||
background-color: #014d4e;
|
|
||||||
border: 0px;
|
|
||||||
margin: 5px;
|
|
||||||
}
|
|
||||||
.btn-primary:hover {
|
|
||||||
color: #fff;
|
|
||||||
background-color: #086262;
|
|
||||||
border: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.row {
|
|
||||||
padding-bottom: 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.searchInput::placeholder {
|
|
||||||
color:#d0eae9;
|
|
||||||
}
|
|
||||||
|
|
||||||
#myVideo {
|
|
||||||
position: fixed;
|
|
||||||
right: 0;
|
|
||||||
top: -100px;
|
|
||||||
min-width: 100%;
|
|
||||||
min-height: 100%;
|
|
||||||
transform: translateX(calc((100% - 100vw) / 2));
|
|
||||||
}
|
|
||||||
|
|
||||||
.img-fluid {
|
|
||||||
max-height: 50vh;
|
|
||||||
width: auto;
|
|
||||||
border-radius: 5px;
|
|
||||||
}
|
|
||||||
.col {
|
|
||||||
align-items: center;
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-select {
|
|
||||||
background-color: rgba(255, 255, 255, 0.2);
|
|
||||||
border-radius: 5px;
|
|
||||||
display: unset !important;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.list-group-item {
|
|
||||||
background-color: rgba(255,255,255,0.3);
|
|
||||||
backdrop-filter: blur(2px);
|
|
||||||
}
|
|
||||||
|
|
||||||
.bg-light {
|
|
||||||
background-color: rgba(255,255,255,0.3);
|
|
||||||
backdrop-filter: blur(2px);
|
|
||||||
}
|
|
||||||
|
|
||||||
.text-primary {
|
|
||||||
--bs-text-opacity: 1;
|
|
||||||
color: aqua;
|
|
||||||
}
|
|
||||||
|
|
@ -1,154 +0,0 @@
|
||||||
@import url('https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap');
|
|
||||||
|
|
||||||
.card {
|
|
||||||
background-color: rgba(255,255,255,0.3);
|
|
||||||
backdrop-filter: blur(2px);
|
|
||||||
}
|
|
||||||
|
|
||||||
.table {
|
|
||||||
color: #f2d8bb !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-collapse {
|
|
||||||
height: 100vh;
|
|
||||||
/*display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;*/
|
|
||||||
text-align: center !important;
|
|
||||||
align-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-collapse .nav-link {
|
|
||||||
font-size: 1.4em;
|
|
||||||
letter-spacing: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-collapse .nav-item:not(:last-child) {
|
|
||||||
border-bottom: 0px solid white;
|
|
||||||
padding: 0.2em 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar {
|
|
||||||
background-color: #022c28;
|
|
||||||
color: #d0eae9;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-link {
|
|
||||||
color: #d0eae9 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content {
|
|
||||||
top: 60px;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
/*background-image: url('/uploads/0988758e-e16c-4c2c-8c1e-efa3ac5f0274/images/ribi1_brighter.png') !important;*/
|
|
||||||
background-color: #022c28;
|
|
||||||
background-attachment: fixed;
|
|
||||||
background-position: center;
|
|
||||||
background-size: cover;
|
|
||||||
color: aqua;
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 300;
|
|
||||||
font-style: normal;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 {
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 700;
|
|
||||||
font-style: bold;
|
|
||||||
padding-top: 30px;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
font-size: 2.488rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
h2 {
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 500;
|
|
||||||
font-style: normal;
|
|
||||||
padding-top: 15px;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
font-size: 2.288rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
h3 {
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 400;
|
|
||||||
font-style: normal;
|
|
||||||
padding-top: 10px;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
font-size: 2.074rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
p {
|
|
||||||
color: #fff;
|
|
||||||
font-size: x-large;
|
|
||||||
text-align: justify;
|
|
||||||
text-justify: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
li {
|
|
||||||
color: #fff;
|
|
||||||
font-size: large;
|
|
||||||
text-align: center;
|
|
||||||
text-justify: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-primary {
|
|
||||||
color: #d0eae9;
|
|
||||||
background-color: #014d4e;
|
|
||||||
border: 0px;
|
|
||||||
}
|
|
||||||
.btn-primary:hover {
|
|
||||||
color: #fff;
|
|
||||||
background-color: #086262;
|
|
||||||
border: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.row {
|
|
||||||
padding-bottom: 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.searchInput::placeholder {
|
|
||||||
color:#d0eae9;
|
|
||||||
}
|
|
||||||
|
|
||||||
#myVideo {
|
|
||||||
position: fixed;
|
|
||||||
right: 0;
|
|
||||||
top: -100px;
|
|
||||||
min-width: 100%;
|
|
||||||
min-height: 100%;
|
|
||||||
transform: translateX(calc((100% - 100vw) / 2));
|
|
||||||
}
|
|
||||||
|
|
||||||
.img-fluid {
|
|
||||||
max-height: 50vh;
|
|
||||||
width: auto;
|
|
||||||
border-radius: 5px;
|
|
||||||
}
|
|
||||||
.col {
|
|
||||||
align-items: center;
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-select {
|
|
||||||
background-color: rgba(255, 255, 255, 0.2);
|
|
||||||
border-radius: 5px;
|
|
||||||
display: unset !important;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.list-group-item {
|
|
||||||
background-color: rgba(255,255,255,0.3);
|
|
||||||
backdrop-filter: blur(2px);
|
|
||||||
}
|
|
||||||
|
|
||||||
.bg-light {
|
|
||||||
background-color: rgba(255,255,255,0.3);
|
|
||||||
backdrop-filter: blur(2px);
|
|
||||||
}
|
|
||||||
|
|
@ -1,490 +0,0 @@
|
||||||
/*@import url('https://fonts.googleapis.com/css2?family=Quicksand&display=swap');
|
|
||||||
@import url('https://fonts.googleapis.com/css?family=Comfortaa:400,700,300');*/
|
|
||||||
|
|
||||||
/*search*/
|
|
||||||
|
|
||||||
|
|
||||||
p {
|
|
||||||
font-size: x-large;
|
|
||||||
}
|
|
||||||
|
|
||||||
li {
|
|
||||||
list-style: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
label {
|
|
||||||
color: #000;
|
|
||||||
/* display: none; */
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn {
|
|
||||||
background: rgba(255, 255, 255, 0.5);
|
|
||||||
border: 0;
|
|
||||||
color: #000000;
|
|
||||||
width: fit-content;
|
|
||||||
font-weight: bold;
|
|
||||||
transition: all 0.2s ease;
|
|
||||||
margin: 15px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.voicebutton {
|
|
||||||
border-radius: 50% !important;
|
|
||||||
padding: 10px !important;
|
|
||||||
width: 40px;
|
|
||||||
height:40px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.menubtn {
|
|
||||||
background: rgba(255, 255, 255, 0.5);
|
|
||||||
border: 0;
|
|
||||||
color: #000000;
|
|
||||||
/* width: 98%; */
|
|
||||||
font-weight: bold;
|
|
||||||
border-radius: 20px;
|
|
||||||
height: 40px;
|
|
||||||
transition: all 0.2s ease;
|
|
||||||
padding: 10px;
|
|
||||||
margin: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn:active {
|
|
||||||
background: rgba(255, 255, 255, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn:hover {
|
|
||||||
background: rgba(255, 255, 255, 0.8);
|
|
||||||
}
|
|
||||||
|
|
||||||
img {
|
|
||||||
border-radius: 20px !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
input.search_bar{
|
|
||||||
border: none;
|
|
||||||
outline: none;
|
|
||||||
width: 75px;
|
|
||||||
border-radius: 55px;
|
|
||||||
margin: 0 auto;
|
|
||||||
font-size: 1.3em;
|
|
||||||
color: #0d2840;
|
|
||||||
padding: 15px 30px 15px 45px;
|
|
||||||
transition: all .3s cubic-bezier(0,0,.5,1.5);
|
|
||||||
box-shadow: 0 3px 10px -2px rgba(0,0,0,.1);
|
|
||||||
background: rgba(255, 255, 255, 0.3) url(https://i.imgur.com/seveWIw.png) no-repeat center center;
|
|
||||||
}
|
|
||||||
|
|
||||||
input.search_bar:focus{
|
|
||||||
width: 100%;
|
|
||||||
background-position: calc(100% - 35px) center
|
|
||||||
}
|
|
||||||
|
|
||||||
/*Removes default x in search fields (webkit only i guess)*/
|
|
||||||
input[type=search]::-webkit-search-cancel-button {
|
|
||||||
-webkit-appearance: none;
|
|
||||||
}
|
|
||||||
/*Changes the color of the placeholder*/
|
|
||||||
::-webkit-input-placeholder {
|
|
||||||
color: #0d2840;
|
|
||||||
opacity: .5;
|
|
||||||
}
|
|
||||||
|
|
||||||
:-moz-placeholder {
|
|
||||||
color: #0d2840;
|
|
||||||
opacity: .5;
|
|
||||||
}
|
|
||||||
|
|
||||||
::-moz-placeholder {
|
|
||||||
color: #0d2840;
|
|
||||||
opacity: .5;
|
|
||||||
}
|
|
||||||
|
|
||||||
:-ms-input-placeholder {
|
|
||||||
color: #0d2840;
|
|
||||||
opacity: .5;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*search*/
|
|
||||||
|
|
||||||
/*Search2*/
|
|
||||||
.searchBox {
|
|
||||||
width: 60px;
|
|
||||||
background: rgba(255, 255, 255, 0.3);
|
|
||||||
height: 60px;
|
|
||||||
border-radius: 40px;
|
|
||||||
padding: 10px;
|
|
||||||
margin: 0 auto;
|
|
||||||
transition: 0.8s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.searchInput:active > .searchBox{
|
|
||||||
width:100%
|
|
||||||
}
|
|
||||||
.searchInput:focus > .searchBox {
|
|
||||||
width: 100%
|
|
||||||
}
|
|
||||||
|
|
||||||
.searchInput::placeholder {
|
|
||||||
color:#fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.searchBox:hover {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.searchBox:hover > .searchInput {
|
|
||||||
width: calc(100% - 60px);
|
|
||||||
padding: 0 6px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.searchBox:hover > .searchButton {
|
|
||||||
background: white;
|
|
||||||
color: #2f3640;
|
|
||||||
}
|
|
||||||
|
|
||||||
.searchButton {
|
|
||||||
color: white;
|
|
||||||
float: right;
|
|
||||||
width: 40px;
|
|
||||||
height: 40px;
|
|
||||||
border-radius: 50px;
|
|
||||||
background-color: #e493d0;
|
|
||||||
background-image: radial-gradient(closest-side, rgba(235, 105, 78, 1), rgba(235, 105, 78, 0)), radial-gradient(closest-side, rgba(243, 11, 164, 1), rgba(243, 11, 164, 0)), radial-gradient(closest-side, rgba(254, 234, 131, 1), rgba(254, 234, 131, 0)), radial-gradient(closest-side, rgba(170, 142, 245, 1), rgba(170, 142, 245, 0)), radial-gradient(closest-side, rgba(248, 192, 147, 1), rgba(248, 192, 147, 0));
|
|
||||||
background-size: 130vmax 130vmax, 80vmax 80vmax, 90vmax 90vmax, 110vmax 110vmax, 90vmax 90vmax;
|
|
||||||
background-position: -80vmax -80vmax, 60vmax -30vmax, 10vmax 10vmax, -30vmax -10vmax, 50vmax 50vmax;
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
animation: 10s movement linear infinite;
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.searchInput {
|
|
||||||
border: none;
|
|
||||||
background: none;
|
|
||||||
outline: none;
|
|
||||||
font-size: 1.3em !important;
|
|
||||||
color: #0d2840 !important;
|
|
||||||
float: left;
|
|
||||||
padding: 0;
|
|
||||||
color: white;
|
|
||||||
font-size: 16px;
|
|
||||||
transition: 0.4s;
|
|
||||||
line-height: 40px;
|
|
||||||
width: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*Search2*/
|
|
||||||
|
|
||||||
|
|
||||||
.event {
|
|
||||||
border-radius: 20px !important;
|
|
||||||
background-color: rgba(255, 255, 255, 0.2) !important;
|
|
||||||
backdrop-filter: blur(20px);
|
|
||||||
border: 0;
|
|
||||||
box-shadow: 0 2px 20px rgba(0, 0, 0, 0.06), 0 2px 4px rgba(0, 0, 0, 0.07);
|
|
||||||
transition: all 0.15s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*card design*/
|
|
||||||
.card {
|
|
||||||
border-radius: 20px !important;
|
|
||||||
overflow: hidden;
|
|
||||||
background-color: rgba(255, 255, 255, 0.2) !important;
|
|
||||||
backdrop-filter: blur(20px);
|
|
||||||
border: 0;
|
|
||||||
box-shadow: 0 2px 20px rgba(0, 0, 0, 0.06), 0 2px 4px rgba(0, 0, 0, 0.07);
|
|
||||||
transition: all 0.15s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.card:hover {
|
|
||||||
box-shadow: 0 6px 30px rgba(0, 0, 0, 0.1), 0 10px 8px rgba(0, 0, 0, 0.015);
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-body .card-title {
|
|
||||||
font-family: 'Lato', sans-serif;
|
|
||||||
font-weight: 700;
|
|
||||||
letter-spacing: 0.3px;
|
|
||||||
font-size: 24px;
|
|
||||||
color: #121212;
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-text {
|
|
||||||
font-family: 'Lato', sans-serif;
|
|
||||||
font-weight: 400;
|
|
||||||
font-size: 15px;
|
|
||||||
letter-spacing: 0.3px;
|
|
||||||
color: #4E4E4E;
|
|
||||||
}
|
|
||||||
|
|
||||||
.card .container {
|
|
||||||
width: 88%;
|
|
||||||
/*background: #F0EEF8;*/
|
|
||||||
border-radius: 30px;
|
|
||||||
/*height: 140px;*/
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.container:hover > img {
|
|
||||||
transform: scale(1.2);
|
|
||||||
}
|
|
||||||
|
|
||||||
.container img {
|
|
||||||
/*padding: 75px;*/
|
|
||||||
/*margin-top: -40px;
|
|
||||||
margin-bottom: -40px;*/
|
|
||||||
transition: 0.4s ease;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn:hover {
|
|
||||||
background-color: #e493d0;
|
|
||||||
background-image: radial-gradient(closest-side, rgba(235, 105, 78, 1), rgba(235, 105, 78, 0)), radial-gradient(closest-side, rgba(243, 11, 164, 1), rgba(243, 11, 164, 0)), radial-gradient(closest-side, rgba(254, 234, 131, 1), rgba(254, 234, 131, 0)), radial-gradient(closest-side, rgba(170, 142, 245, 1), rgba(170, 142, 245, 0)), radial-gradient(closest-side, rgba(248, 192, 147, 1), rgba(248, 192, 147, 0));
|
|
||||||
background-size: 130vmax 130vmax, 80vmax 80vmax, 90vmax 90vmax, 110vmax 110vmax, 90vmax 90vmax;
|
|
||||||
background-position: -80vmax -80vmax, 60vmax -30vmax, 10vmax 10vmax, -30vmax -10vmax, 50vmax 50vmax;
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
animation: 10s movement linear infinite;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn:focus {
|
|
||||||
background-color: #e493d0;
|
|
||||||
background-image: radial-gradient(closest-side, rgba(235, 105, 78, 1), rgba(235, 105, 78, 0)), radial-gradient(closest-side, rgba(243, 11, 164, 1), rgba(243, 11, 164, 0)), radial-gradient(closest-side, rgba(254, 234, 131, 1), rgba(254, 234, 131, 0)), radial-gradient(closest-side, rgba(170, 142, 245, 1), rgba(170, 142, 245, 0)), radial-gradient(closest-side, rgba(248, 192, 147, 1), rgba(248, 192, 147, 0));
|
|
||||||
background-size: 130vmax 130vmax, 80vmax 80vmax, 90vmax 90vmax, 110vmax 110vmax, 90vmax 90vmax;
|
|
||||||
background-position: -80vmax -80vmax, 60vmax -30vmax, 10vmax 10vmax, -30vmax -10vmax, 50vmax 50vmax;
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
animation: 10s movement linear infinite;
|
|
||||||
}
|
|
||||||
/*card design*/
|
|
||||||
|
|
||||||
/*bg*/
|
|
||||||
|
|
||||||
|
|
||||||
:root {
|
|
||||||
font-size: 15px;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
/*font-family: 'Comfortaa', 'Arial Narrow', Arial, sans-serif;*/
|
|
||||||
/*font-family: 'Quicksand', sans-serif;*/
|
|
||||||
color: #fff !important;
|
|
||||||
margin: 0;
|
|
||||||
min-height: 100vh;
|
|
||||||
background-color: #000;
|
|
||||||
/*background-image: radial-gradient(closest-side, rgba(235, 105, 78, 1), rgba(235, 105, 78, 0)), radial-gradient(closest-side, rgba(243, 11, 164, 1), rgba(243, 11, 164, 0)), radial-gradient(closest-side, rgba(254, 234, 131, 1), rgba(254, 234, 131, 0)), radial-gradient(closest-side, rgba(170, 142, 245, 1), rgba(170, 142, 245, 0)), radial-gradient(closest-side, rgba(248, 192, 147, 1), rgba(248, 192, 147, 0));*/
|
|
||||||
/*background-size: 130vmax 130vmax, 80vmax 80vmax, 90vmax 90vmax, 110vmax 110vmax, 90vmax 90vmax;*/
|
|
||||||
/*background-position: -80vmax -80vmax, 60vmax -30vmax, 10vmax 10vmax, -30vmax -10vmax, 50vmax 50vmax;*/
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
/*animation: 10s movement linear infinite;*/
|
|
||||||
}
|
|
||||||
|
|
||||||
body::after {
|
|
||||||
content: '';
|
|
||||||
display: block;
|
|
||||||
position: fixed;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
backdrop-filter: blur(10px);
|
|
||||||
-webkit-backdrop-filter: blur(10px);
|
|
||||||
}
|
|
||||||
|
|
||||||
.myspan {
|
|
||||||
position: relative;
|
|
||||||
z-index: 10;
|
|
||||||
display: flex;
|
|
||||||
min-height: 100vh;
|
|
||||||
width: 100%;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
font-size: 5rem;
|
|
||||||
color: transparent;
|
|
||||||
text-shadow: 0px 0px 1px rgba(255, 255, 255, .6), 0px 4px 4px rgba(0, 0, 0, .05);
|
|
||||||
letter-spacing: .2rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes movement {
|
|
||||||
0%, 100% {
|
|
||||||
background-size: 130vmax 130vmax, 80vmax 80vmax, 90vmax 90vmax, 110vmax 110vmax, 90vmax 90vmax;
|
|
||||||
background-position: -80vmax -80vmax, 60vmax -30vmax, 10vmax 10vmax, -30vmax -10vmax, 50vmax 50vmax;
|
|
||||||
}
|
|
||||||
|
|
||||||
25% {
|
|
||||||
background-size: 100vmax 100vmax, 90vmax 90vmax, 100vmax 100vmax, 90vmax 90vmax, 60vmax 60vmax;
|
|
||||||
background-position: -60vmax -90vmax, 50vmax -40vmax, 0vmax -20vmax, -40vmax -20vmax, 40vmax 60vmax;
|
|
||||||
}
|
|
||||||
|
|
||||||
50% {
|
|
||||||
background-size: 80vmax 80vmax, 110vmax 110vmax, 80vmax 80vmax, 60vmax 60vmax, 80vmax 80vmax;
|
|
||||||
background-position: -50vmax -70vmax, 40vmax -30vmax, 10vmax 0vmax, 20vmax 10vmax, 30vmax 70vmax;
|
|
||||||
}
|
|
||||||
|
|
||||||
75% {
|
|
||||||
background-size: 90vmax 90vmax, 90vmax 90vmax, 100vmax 100vmax, 90vmax 90vmax, 70vmax 70vmax;
|
|
||||||
background-position: -50vmax -40vmax, 50vmax -30vmax, 20vmax 0vmax, -10vmax 10vmax, 40vmax 60vmax;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*bg*/
|
|
||||||
|
|
||||||
.mytextarea {
|
|
||||||
background-color: rgba(255, 255, 255, 0.3);
|
|
||||||
backdrop-filter: blur(20px);
|
|
||||||
padding: 10px;
|
|
||||||
border-radius: 10px;
|
|
||||||
border-width: 0px;
|
|
||||||
height: unset !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mytextarea:active {
|
|
||||||
border-width: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mytextarea:focus-visible {
|
|
||||||
background-color: rgba(255, 255, 255, 0.5);
|
|
||||||
border-width: 0px !important;
|
|
||||||
outline: -webkit-focus-ring-color auto 0px;
|
|
||||||
outline-color: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-toggler {
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-brand {
|
|
||||||
font-size: 1.7rem;
|
|
||||||
color:#fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-select {
|
|
||||||
background-color: rgba(255, 255, 255, 0.2);
|
|
||||||
border-radius: 5px;
|
|
||||||
display: unset !important;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-select > option {
|
|
||||||
background-color: rgba(255, 255, 255, 0.2)
|
|
||||||
}
|
|
||||||
|
|
||||||
.contactform-overlay {
|
|
||||||
position: fixed;
|
|
||||||
z-index: 100;
|
|
||||||
height: 100vh;
|
|
||||||
width: 100%;
|
|
||||||
padding: 100px;
|
|
||||||
top: 0px;
|
|
||||||
left: 0px;
|
|
||||||
/* padding-top: 10vh; */
|
|
||||||
backdrop-filter: blur(20px);
|
|
||||||
/* background-color: rgba(1, 1, 1, .4); */
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-control {
|
|
||||||
background-color: rgba(255,255,255,0.4);
|
|
||||||
border-radius: 5px;
|
|
||||||
height: 50px;
|
|
||||||
}
|
|
||||||
.form-control::placeholder {
|
|
||||||
color:#fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.contactform-close-overlay {
|
|
||||||
position: relative;
|
|
||||||
height: 10vh;
|
|
||||||
}
|
|
||||||
|
|
||||||
.contactform-popup-content {
|
|
||||||
height: 80vh;
|
|
||||||
margin: 0px;
|
|
||||||
padding: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.contactform-popup-close {
|
|
||||||
position: relative;
|
|
||||||
height: 10vh;
|
|
||||||
z-index: 80;
|
|
||||||
}
|
|
||||||
|
|
||||||
.calendly-overlay {
|
|
||||||
position: absolute;
|
|
||||||
z-index: 100;
|
|
||||||
height: 100vh;
|
|
||||||
width: 100%;
|
|
||||||
top: 0px;
|
|
||||||
/* padding-top: 10vh; */
|
|
||||||
backdrop-filter: blur(20px);
|
|
||||||
/* background-color: rgba(1, 1, 1, .4); */
|
|
||||||
}
|
|
||||||
|
|
||||||
.calendly-close-overlay {
|
|
||||||
position: relative;
|
|
||||||
height: 10vh;
|
|
||||||
}
|
|
||||||
|
|
||||||
.calendly-popup-content {
|
|
||||||
height: 80vh;
|
|
||||||
margin: 0px;
|
|
||||||
padding: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.calendly-popup-close {
|
|
||||||
position: relative;
|
|
||||||
height: 10vh;
|
|
||||||
z-index: 80;
|
|
||||||
}
|
|
||||||
|
|
||||||
#myVideo {
|
|
||||||
position: fixed;
|
|
||||||
right: 0;
|
|
||||||
bottom: 0;
|
|
||||||
min-width: 100%;
|
|
||||||
min-height: 100%;
|
|
||||||
opacity: 0.2;
|
|
||||||
}
|
|
||||||
|
|
||||||
.table {
|
|
||||||
color: #fff !important;
|
|
||||||
padding-top: 10px;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
background-color: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-collapse {
|
|
||||||
height: 100vh;
|
|
||||||
/*display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;*/
|
|
||||||
text-align: center !important;
|
|
||||||
align-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-collapse .nav-link {
|
|
||||||
font-size: 1.5em;
|
|
||||||
letter-spacing: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-collapse .nav-item:not(:last-child) {
|
|
||||||
border-bottom: 0px solid white;
|
|
||||||
padding: 0.2em 4em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar {
|
|
||||||
background-color: #040206;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-link {
|
|
||||||
color: #fff !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content {
|
|
||||||
top: 60px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.row {
|
|
||||||
margin-bottom: 10px;
|
|
||||||
}
|
|
||||||
|
|
@ -1,154 +0,0 @@
|
||||||
@import url('https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap');
|
|
||||||
|
|
||||||
.card {
|
|
||||||
background-color: rgba(255,255,255,0.3);
|
|
||||||
backdrop-filter: blur(2px);
|
|
||||||
}
|
|
||||||
|
|
||||||
.table {
|
|
||||||
color: #f2d8bb !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-collapse {
|
|
||||||
height: 100vh;
|
|
||||||
/*display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;*/
|
|
||||||
text-align: center !important;
|
|
||||||
align-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-collapse .nav-link {
|
|
||||||
font-size: 1.4em;
|
|
||||||
letter-spacing: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-collapse .nav-item:not(:last-child) {
|
|
||||||
border-bottom: 0px solid white;
|
|
||||||
padding: 0.2em 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar {
|
|
||||||
background-color: #022c28;
|
|
||||||
color: #d0eae9;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-link {
|
|
||||||
color: #d0eae9 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content {
|
|
||||||
top: 60px;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
/*background-image: url('/uploads/0988758e-e16c-4c2c-8c1e-efa3ac5f0274/images/ribi1_brighter.png') !important;*/
|
|
||||||
background-color: #022c28;
|
|
||||||
background-attachment: fixed;
|
|
||||||
background-position: center;
|
|
||||||
background-size: cover;
|
|
||||||
color: aqua;
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 300;
|
|
||||||
font-style: normal;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 {
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 700;
|
|
||||||
font-style: bold;
|
|
||||||
padding-top: 30px;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
font-size: 2.488rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
h2 {
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 500;
|
|
||||||
font-style: normal;
|
|
||||||
padding-top: 15px;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
font-size: 2.288rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
h3 {
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 400;
|
|
||||||
font-style: normal;
|
|
||||||
padding-top: 10px;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
font-size: 2.074rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
p {
|
|
||||||
color: #fff;
|
|
||||||
font-size: x-large;
|
|
||||||
text-align: justify;
|
|
||||||
text-justify: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
li {
|
|
||||||
color: #fff;
|
|
||||||
font-size: large;
|
|
||||||
text-align: center;
|
|
||||||
text-justify: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-primary {
|
|
||||||
color: #d0eae9;
|
|
||||||
background-color: #014d4e;
|
|
||||||
border: 0px;
|
|
||||||
}
|
|
||||||
.btn-primary:hover {
|
|
||||||
color: #fff;
|
|
||||||
background-color: #086262;
|
|
||||||
border: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.row {
|
|
||||||
padding-bottom: 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.searchInput::placeholder {
|
|
||||||
color:#d0eae9;
|
|
||||||
}
|
|
||||||
|
|
||||||
#myVideo {
|
|
||||||
position: fixed;
|
|
||||||
right: 0;
|
|
||||||
top: -100px;
|
|
||||||
min-width: 100%;
|
|
||||||
min-height: 100%;
|
|
||||||
transform: translateX(calc((100% - 100vw) / 2));
|
|
||||||
}
|
|
||||||
|
|
||||||
.img-fluid {
|
|
||||||
max-height: 50vh;
|
|
||||||
width: auto;
|
|
||||||
border-radius: 5px;
|
|
||||||
}
|
|
||||||
.col {
|
|
||||||
align-items: center;
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-select {
|
|
||||||
background-color: rgba(255, 255, 255, 0.2);
|
|
||||||
border-radius: 5px;
|
|
||||||
display: unset !important;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.list-group-item {
|
|
||||||
background-color: rgba(255,255,255,0.3);
|
|
||||||
backdrop-filter: blur(2px);
|
|
||||||
}
|
|
||||||
|
|
||||||
.bg-light {
|
|
||||||
background-color: rgba(255,255,255,0.3);
|
|
||||||
backdrop-filter: blur(2px);
|
|
||||||
}
|
|
||||||
|
|
@ -1,160 +0,0 @@
|
||||||
@import url('https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap');
|
|
||||||
|
|
||||||
.card {
|
|
||||||
background-color: rgba(255,255,255,0.3);
|
|
||||||
backdrop-filter: blur(2px);
|
|
||||||
}
|
|
||||||
|
|
||||||
.table {
|
|
||||||
color: #f2d8bb !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-collapse {
|
|
||||||
height: 100vh;
|
|
||||||
/*display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;*/
|
|
||||||
text-align: center !important;
|
|
||||||
align-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-collapse .nav-link {
|
|
||||||
font-size: 1.4em;
|
|
||||||
letter-spacing: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-collapse .nav-item:not(:last-child) {
|
|
||||||
border-bottom: 0px solid white;
|
|
||||||
padding: 0.2em 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar {
|
|
||||||
background-color: #022c28;
|
|
||||||
color: #d0eae9;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-link {
|
|
||||||
color: #d0eae9 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content {
|
|
||||||
top: 60px;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
/*background-image: url('/uploads/0988758e-e16c-4c2c-8c1e-efa3ac5f0274/images/ribi1_brighter.png') !important;*/
|
|
||||||
background-color: #022c28;
|
|
||||||
background-attachment: fixed;
|
|
||||||
background-position: center;
|
|
||||||
background-size: cover;
|
|
||||||
color: aqua;
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 300;
|
|
||||||
font-style: normal;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 {
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 700;
|
|
||||||
font-style: bold;
|
|
||||||
padding-top: 30px;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
font-size: 2.488rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
h2 {
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 500;
|
|
||||||
font-style: normal;
|
|
||||||
padding-top: 15px;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
font-size: 2.288rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
h3 {
|
|
||||||
font-family: "Montserrat", sans-serif;
|
|
||||||
font-optical-sizing: auto;
|
|
||||||
font-weight: 400;
|
|
||||||
font-style: normal;
|
|
||||||
padding-top: 10px;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
font-size: 2.074rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
p {
|
|
||||||
color: #fff;
|
|
||||||
font-size: x-large;
|
|
||||||
text-align: justify;
|
|
||||||
text-justify: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
li {
|
|
||||||
color: #fff;
|
|
||||||
font-size: large;
|
|
||||||
text-align: center;
|
|
||||||
text-justify: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-primary {
|
|
||||||
color: #d0eae9;
|
|
||||||
background-color: #014d4e;
|
|
||||||
border: 0px;
|
|
||||||
margin: 5px;
|
|
||||||
}
|
|
||||||
.btn-primary:hover {
|
|
||||||
color: #fff;
|
|
||||||
background-color: #086262;
|
|
||||||
border: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.row {
|
|
||||||
padding-bottom: 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.searchInput::placeholder {
|
|
||||||
color:#d0eae9;
|
|
||||||
}
|
|
||||||
|
|
||||||
#myVideo {
|
|
||||||
position: fixed;
|
|
||||||
right: 0;
|
|
||||||
top: -100px;
|
|
||||||
min-width: 100%;
|
|
||||||
min-height: 100%;
|
|
||||||
transform: translateX(calc((100% - 100vw) / 2));
|
|
||||||
}
|
|
||||||
|
|
||||||
.img-fluid {
|
|
||||||
max-height: 50vh;
|
|
||||||
width: auto;
|
|
||||||
border-radius: 5px;
|
|
||||||
}
|
|
||||||
.col {
|
|
||||||
align-items: center;
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-select {
|
|
||||||
background-color: rgba(255, 255, 255, 0.2);
|
|
||||||
border-radius: 5px;
|
|
||||||
display: unset !important;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.list-group-item {
|
|
||||||
background-color: rgba(255,255,255,0.3);
|
|
||||||
backdrop-filter: blur(2px);
|
|
||||||
}
|
|
||||||
|
|
||||||
.bg-light {
|
|
||||||
background-color: rgba(255,255,255,0.3) !important;
|
|
||||||
backdrop-filter: blur(2px) !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.text-primary {
|
|
||||||
--bs-text-opacity: 1;
|
|
||||||
color: aqua;
|
|
||||||
}
|
|
||||||
Loading…
Reference in New Issue