300426 Index update

This commit is contained in:
Kishore Kumar C
2026-04-30 17:19:01 +05:30
parent 7deb9dd383
commit b7dec3aaa9
36 changed files with 7462 additions and 6876 deletions

View File

@@ -35,7 +35,7 @@
<div class="button-widget">
<div class="button-container">
<a href="https://demo.artureanec.com/themes/logico-rounded/home-4/" target="_blank" class="logico-small-button">
<a href="#" target="_blank" class="logico-small-button">
Explore more<svg viewBox="0 0 13 20">
<polyline points="0.5 19.5 3 19.5 12.5 10 3 0.5"></polyline>
</svg> </a>
@@ -218,71 +218,72 @@
</div>
</div>
<style>/* Core Styling */
<style>
/* Core Styling */
.logico-title .word {
display: inline-block;
white-space: nowrap;
margin-right: 0.1em;
}
.logico-title .letter {
display: inline-block;
opacity: 0;
transform: translateY(0.5em);
animation: fadeInUp 0.8s cubic-bezier(0.23, 1, 0.32, 1) forwards;
}
/* Animation Keyframes */
@keyframes fadeInUp {
to {
opacity: 1;
transform: translateY(0);
.logico-title .word {
display: inline-block;
white-space: nowrap;
margin-right: 0.1em;
}
.logico-title .letter {
display: inline-block;
opacity: 0;
transform: translateY(0.5em);
animation: fadeInUp 0.8s cubic-bezier(0.23, 1, 0.32, 1) forwards;
}
/* Animation Keyframes */
@keyframes fadeInUp {
to {
opacity: 1;
transform: translateY(0);
}
}
}
</style>
<script>/**
* Automatically splits text into words and letters
* and applies incrementing animation delays.
*/
document.querySelectorAll('[data-animate]').forEach(element => {
// Preserve the internal HTML structure (like <br>) for line breaks
const lines = element.innerHTML.split(/<br\s*\/?>/i);
element.textContent = '';
<script>
/**
* Automatically splits text into words and letters
* and applies incrementing animation delays.
*/
document.querySelectorAll('[data-animate]').forEach(element => {
// Preserve the internal HTML structure (like <br>) for line breaks
const lines = element.innerHTML.split(/<br\s*\/?>/i);
element.textContent = '';
lines.forEach((line, lineIdx) => {
const lineContainer = document.createElement('div');
lineContainer.style.display = 'block';
lines.forEach((line, lineIdx) => {
const lineContainer = document.createElement('div');
lineContainer.style.display = 'block';
// Extract text from potential nested spans
const tempDiv = document.createElement('div');
tempDiv.innerHTML = line;
const text = tempDiv.textContent.trim();
// Extract text from potential nested spans
const tempDiv = document.createElement('div');
tempDiv.innerHTML = line;
const text = tempDiv.textContent.trim();
text.split(/\s+/).forEach((word, wordIdx) => {
const wordSpan = document.createElement('span');
wordSpan.className = 'word';
text.split(/\s+/).forEach((word, wordIdx) => {
const wordSpan = document.createElement('span');
wordSpan.className = 'word';
word.split('').forEach((letter, letterIdx) => {
const letterSpan = document.createElement('span');
letterSpan.className = 'letter';
letterSpan.textContent = letter;
// Stagger delay based on line, word, and letter
const delay = (lineIdx * 0.2) + (wordIdx * 0.1) + (letterIdx * 0.03);
letterSpan.style.animationDelay = `${delay}s`;
wordSpan.appendChild(letterSpan);
word.split('').forEach((letter, letterIdx) => {
const letterSpan = document.createElement('span');
letterSpan.className = 'letter';
letterSpan.textContent = letter;
// Stagger delay based on line, word, and letter
const delay = (lineIdx * 0.2) + (wordIdx * 0.1) + (letterIdx * 0.03);
letterSpan.style.animationDelay = `${delay}s`;
wordSpan.appendChild(letterSpan);
});
lineContainer.appendChild(wordSpan);
// Add a non-breaking space after each word span for spacing
lineContainer.appendChild(document.createTextNode('\u00A0'));
});
lineContainer.appendChild(wordSpan);
// Add a non-breaking space after each word span for spacing
lineContainer.appendChild(document.createTextNode('\u00A0'));
element.appendChild(lineContainer);
});
element.appendChild(lineContainer);
});
});
</script>
</script>