Spaces:
Running
Running
jnm-itb
feat: update remote journaling link and enhance simulation description in index.html
f746138
<html lang="en"> | |
<head> | |
<meta charset="UTF-8"> | |
<meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
<title>Jatnikonm's Simulation Showcase</title> | |
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"> | |
<style> | |
:root { | |
--space-blue: #0d0221; | |
--neon-purple: #9d00ff; | |
--cosmic-blue: #2b00ff; | |
--starlight: #f8f8ff; | |
--mystic-purple: #6a00f4; | |
} | |
* { | |
margin: 0; | |
padding: 0; | |
box-sizing: border-box; | |
font-family: 'Courier New', monospace; | |
} | |
body { | |
background-color: var(--space-blue); | |
color: var(--starlight); | |
overflow-x: hidden; | |
min-height: 100vh; | |
perspective: 1000px; | |
background-image: | |
radial-gradient(circle at 20% 30%, rgba(154, 0, 255, 0.15) 0%, transparent 30%), | |
radial-gradient(circle at 80% 70%, rgba(43, 0, 255, 0.15) 0%, transparent 30%); | |
} | |
.spiral-bg { | |
position: fixed; | |
top: 0; | |
left: 0; | |
width: 100%; | |
height: 100%; | |
z-index: -1; | |
opacity: 0.3; | |
} | |
.spiral { | |
position: absolute; | |
border-radius: 50%; | |
border: 1px solid var(--neon-purple); | |
animation: spin var(--duration) linear infinite; | |
filter: blur(0.5px); | |
} | |
@keyframes spin { | |
from { transform: rotate(0deg); } | |
to { transform: rotate(360deg); } | |
} | |
.container { | |
max-width: 800px; | |
margin: 0 auto; | |
padding: 2rem; | |
position: relative; | |
z-index: 1; | |
} | |
header { | |
text-align: center; | |
margin-bottom: 3rem; | |
position: relative; | |
} | |
h1 { | |
font-size: 2.5rem; | |
margin-bottom: 1rem; | |
color: var(--starlight); | |
text-shadow: 0 0 10px var(--neon-purple), 0 0 20px var(--cosmic-blue); | |
position: relative; | |
display: inline-block; | |
} | |
h1::after { | |
content: ''; | |
position: absolute; | |
bottom: -10px; | |
left: 50%; | |
transform: translateX(-50%); | |
width: 60%; | |
height: 3px; | |
background: linear-gradient(90deg, transparent, var(--neon-purple), var(--cosmic-blue), transparent); | |
border-radius: 50%; | |
} | |
.cat-icon { | |
position: absolute; | |
font-size: 1.8rem; | |
animation: float 3s ease-in-out infinite; | |
opacity: 0.8; | |
} | |
.cat-icon:nth-child(1) { | |
top: -20px; | |
left: 10%; | |
color: var(--neon-purple); | |
animation-delay: 0s; | |
} | |
.cat-icon:nth-child(2) { | |
top: 50px; | |
right: 15%; | |
color: var(--cosmic-blue); | |
animation-delay: 0.5s; | |
} | |
.cat-icon:nth-child(3) { | |
bottom: -30px; | |
left: 20%; | |
color: var(--mystic-purple); | |
animation-delay: 1s; | |
} | |
@keyframes float { | |
0%, 100% { transform: translateY(0) rotate(0deg); } | |
50% { transform: translateY(-10px) rotate(5deg); } | |
} | |
.subtitle { | |
font-style: italic; | |
color: var(--mystic-purple); | |
margin-bottom: 2rem; | |
text-align: center; | |
} | |
.links-container { | |
display: grid; | |
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); | |
gap: 1.5rem; | |
} | |
.card-link { | |
text-decoration: none; /* Remove underline from link */ | |
color: inherit; /* Inherit text color */ | |
display: block; /* Make the link a block element */ | |
transition: transform 0.3s ease, box-shadow 0.3s ease; /* Add transitions here */ | |
} | |
.card-link:hover { | |
transform: translateY(-5px) rotate(1deg); /* Move hover effect here */ | |
box-shadow: 0 5px 15px var(--neon-purple); /* Move hover effect here */ | |
} | |
.link-card { | |
background: rgba(13, 2, 33, 0.7); | |
border: 1px solid var(--neon-purple); | |
border-radius: 10px; | |
padding: 1.5rem; | |
position: relative; | |
overflow: hidden; | |
backdrop-filter: blur(5px); | |
height: 100%; /* Ensure cards fill the link height */ | |
} | |
.card-link:hover .link-card { /* Apply border color change on link hover */ | |
border-color: var(--cosmic-blue); | |
} | |
.link-card::before { | |
content: ''; | |
position: absolute; | |
top: -50%; | |
left: -50%; | |
width: 200%; | |
height: 200%; | |
background: radial-gradient(circle, var(--neon-purple), transparent 70%); | |
opacity: 0; | |
transition: opacity 0.5s ease; | |
} | |
.card-link:hover .link-card::before { | |
opacity: 0.1; | |
} | |
.link-title { | |
font-size: 1.2rem; | |
margin-bottom: 0.5rem; | |
color: var(--starlight); | |
display: flex; | |
align-items: center; | |
} | |
.link-icon { | |
margin-right: 0.5rem; | |
color: var(--cosmic-blue); | |
} | |
.link-description { | |
font-size: 0.9rem; | |
color: rgba(248, 248, 255, 0.7); | |
margin-bottom: 1rem; | |
} | |
footer { | |
text-align: center; | |
margin-top: 3rem; | |
font-size: 0.8rem; | |
color: var(--mystic-purple); | |
opacity: 0.7; | |
} | |
.stars { | |
position: fixed; | |
top: 0; | |
left: 0; | |
width: 100%; | |
height: 100%; | |
z-index: -2; | |
} | |
.star { | |
position: absolute; | |
width: 2px; | |
height: 2px; | |
background: white; | |
border-radius: 50%; | |
animation: twinkle 5s infinite; | |
} | |
@keyframes twinkle { | |
0%, 100% { opacity: 0.2; } | |
50% { opacity: 1; } | |
} | |
.mystic-eye { | |
position: fixed; | |
bottom: 20px; | |
right: 20px; | |
width: 60px; | |
height: 60px; | |
background: radial-gradient(circle, var(--neon-purple) 0%, var(--space-blue) 70%); | |
border-radius: 50%; | |
display: flex; | |
justify-content: center; | |
align-items: center; | |
cursor: pointer; | |
box-shadow: 0 0 15px var(--neon-purple); | |
z-index: 10; | |
transition: all 0.3s ease; | |
} | |
.mystic-eye:hover { | |
transform: scale(1.1); | |
} | |
.eye-pupil { | |
width: 15px; | |
height: 15px; | |
background-color: var(--space-blue); | |
border-radius: 50%; | |
position: relative; | |
animation: blink 5s infinite; | |
} | |
@keyframes blink { | |
0%, 48%, 52%, 100% { transform: scaleY(1); } | |
50% { transform: scaleY(0.1); } | |
} | |
@media (max-width: 600px) { | |
h1 { | |
font-size: 1.8rem; | |
} | |
.links-container { | |
grid-template-columns: 1fr; | |
} | |
} | |
</style> | |
</head> | |
<body> | |
<div class="stars" id="stars"></div> | |
<div class="spiral-bg" id="spiral-bg"></div> | |
<div class="container"> | |
<header> | |
<i class="fas fa-cogs cat-icon"></i> | |
<i class="fas fa-atom cat-icon"></i> | |
<i class="fas fa-project-diagram cat-icon"></i> | |
<h1>Jatnikonm's Simulation Showcase</h1> | |
<p class="subtitle">Exploring various simulation examples</p> | |
</header> | |
<div class="links-container"> | |
<!-- Wrap each card in an anchor tag --> | |
<a href="dt_preservasi.html" class="card-link"> <!-- Updated href --> | |
<div class="link-card"> | |
<h3 class="link-title"><i class="fas fa-archive link-icon"></i> Digital Twin Preservasi Arsip</h3> <!-- Updated icon and title --> | |
<p class="link-description">Simulasi digital twin untuk manajemen dan preservasi arsip statis.</p> <!-- Updated description --> | |
<!-- Removed inner link --> | |
</div> | |
</a> | |
<a href="remote_journaling.html" class="card-link"> <!-- Updated href --> | |
<div class="link-card"> | |
<h3 class="link-title"><i class="fas fa-sync-alt link-icon"></i> Remote Journaling Simulation</h3> <!-- Updated icon and title --> | |
<p class="link-description">Simulasi proses remote journaling untuk disaster recovery.</p> <!-- Updated description --> | |
<!-- Removed inner link --> | |
</div> | |
</a> | |
<a href="blockchain.html" class="card-link"> <!-- Updated href --> | |
<div class="link-card"> | |
<h3 class="link-title"><i class="fas fa-cubes link-icon"></i> Blockchain Simulation</h3> <!-- Updated icon and title --> | |
<p class="link-description">Visualisasi alur penyimpanan arsip menggunakan IPFS dan Blockchain.</p> <!-- Updated description --> | |
<!-- Removed inner link --> | |
</div> | |
</a> | |
<a href="#" class="card-link"> | |
<div class="link-card"> | |
<h3 class="link-title"><i class="fas fa-leaf link-icon"></i> Ecosystem Simulation</h3> | |
<p class="link-description">A model demonstrating predator-prey dynamics.</p> | |
<!-- Removed inner link --> | |
</div> | |
</a> | |
<a href="#" class="card-link"> | |
<div class="link-card"> | |
<h3 class="link-title"><i class="fas fa-network-wired link-icon"></i> Network Traffic</h3> | |
<p class="link-description">Simulate data flow and congestion in networks.</p> | |
<!-- Removed inner link --> | |
</div> | |
</a> | |
<a href="#" class="card-link"> | |
<div class="link-card"> | |
<h3 class="link-title"><i class="fas fa-car link-icon"></i> Traffic Simulation</h3> | |
<p class="link-description">Model vehicle movement and traffic light systems.</p> | |
<!-- Removed inner link --> | |
</div> | |
</a> | |
<a href="unet.html" class="card-link"> | |
<div class="link-card"> | |
<h3 class="link-title"><i class="fas fa-brain link-icon"></i> Simulasi Arsitektur U-Net</h3> | |
<p class="link-description">Visualisasi arsitektur U-Net yang umum digunakan untuk segmentasi gambar biomedis.</p> | |
<!-- Removed inner link --> | |
</div> | |
</a> | |
</div> | |
<footer> | |
<p>🌀 Created by jatnikonm · 2024 · Simulation Examples ⚙️</p> | |
</footer> | |
</div> | |
<div class="mystic-eye"> | |
<div class="eye-pupil"></div> | |
</div> | |
<script> | |
// Create spirals in background | |
const spiralBg = document.getElementById('spiral-bg'); | |
for (let i = 0; i < 10; i++) { | |
const spiral = document.createElement('div'); | |
spiral.classList.add('spiral'); | |
const size = Math.random() * 300 + 100; | |
const x = Math.random() * 100; | |
const y = Math.random() * 100; | |
const duration = Math.random() * 60 + 60; | |
spiral.style.width = `${size}px`; | |
spiral.style.height = `${size}px`; | |
spiral.style.left = `${x}%`; | |
spiral.style.top = `${y}%`; | |
spiral.style.borderWidth = `${Math.random() * 3 + 1}px`; | |
spiral.style.setProperty('--duration', `${duration}s`); | |
spiralBg.appendChild(spiral); | |
} | |
// Create stars | |
const starsContainer = document.getElementById('stars'); | |
for (let i = 0; i < 200; i++) { | |
const star = document.createElement('div'); | |
star.classList.add('star'); | |
const size = Math.random() * 3; | |
const x = Math.random() * 100; | |
const y = Math.random() * 100; | |
const delay = Math.random() * 5; | |
const duration = Math.random() * 5 + 5; | |
star.style.width = `${size}px`; | |
star.style.height = `${size}px`; | |
star.style.left = `${x}%`; | |
star.style.top = `${y}%`; | |
star.style.animationDelay = `${delay}s`; | |
star.style.animationDuration = `${duration}s`; | |
starsContainer.appendChild(star); | |
} | |
// Mystic eye interaction | |
const mysticEye = document.querySelector('.mystic-eye'); | |
mysticEye.addEventListener('click', () => { | |
document.body.classList.toggle('show-secret'); | |
alert('⚙️ Welcome to the simulation hub! Created by jatnikonm. ✨'); | |
// Create a temporary spiral effect | |
for (let i = 0; i < 10; i++) { | |
const spiral = document.createElement('div'); | |
spiral.classList.add('spiral'); | |
const size = Math.random() * 200 + 50; | |
const x = Math.random() * 80 + 10; | |
const y = Math.random() * 80 + 10; | |
const duration = Math.random() * 40 + 20; | |
spiral.style.width = `${size}px`; | |
spiral.style.height = `${size}px`; | |
spiral.style.left = `${x}%`; | |
spiral.style.top = `${y}%`; | |
spiral.style.borderColor = `hsl(${Math.random() * 60 + 270}, 100%, 70%)`; | |
spiral.style.position = 'fixed'; | |
spiral.style.zIndex = '5'; | |
spiral.style.setProperty('--duration', `${duration}s`); | |
document.body.appendChild(spiral); | |
// Remove after animation completes | |
setTimeout(() => { | |
spiral.remove(); | |
}, duration * 1000); | |
} | |
}); | |
</script> | |
</body> | |
</html> |