Skip to content

Commit 1f34da9

Browse files
committed
minor changes
1 parent 03d0c27 commit 1f34da9

File tree

2 files changed

+585
-6
lines changed

2 files changed

+585
-6
lines changed

index.html

Lines changed: 175 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -349,6 +349,72 @@
349349
letter-spacing: 0.1em;
350350
}
351351

352+
/* Show More Button */
353+
.show-more-container {
354+
text-align: center;
355+
margin: 3rem 0 4rem 0;
356+
opacity: 0;
357+
animation: fadeIn 0.8s ease forwards 1.2s;
358+
}
359+
360+
.show-more-btn {
361+
background: rgba(26, 31, 58, 0.6);
362+
border: 1px solid rgba(0, 217, 255, 0.3);
363+
color: var(--electric);
364+
padding: 0.8rem 2rem;
365+
font-family: 'JetBrains Mono', monospace;
366+
font-size: 0.85rem;
367+
text-transform: uppercase;
368+
letter-spacing: 0.1em;
369+
cursor: pointer;
370+
transition: all 0.3s ease;
371+
font-weight: 600;
372+
position: relative;
373+
overflow: hidden;
374+
}
375+
376+
.show-more-btn:hover {
377+
background: rgba(26, 31, 58, 0.8);
378+
border-color: var(--electric);
379+
transform: translateY(-2px);
380+
}
381+
382+
.show-more-btn::after {
383+
content: '▼';
384+
margin-left: 0.5rem;
385+
transition: transform 0.3s ease;
386+
display: inline-block;
387+
}
388+
389+
.show-more-btn.expanded::after {
390+
transform: rotate(180deg);
391+
}
392+
393+
/* Additional Projects Section */
394+
.additional-projects {
395+
max-height: 0;
396+
overflow: hidden;
397+
transition: max-height 0.5s ease;
398+
}
399+
400+
.additional-projects.expanded {
401+
max-height: 3000px;
402+
}
403+
404+
.additional-projects .project-card {
405+
opacity: 0;
406+
transform: translateY(20px);
407+
animation: none;
408+
}
409+
410+
.additional-projects.expanded .project-card {
411+
animation: slideUp 0.5s ease forwards;
412+
}
413+
414+
.additional-projects.expanded .project-card:nth-child(1) { animation-delay: 0.1s; }
415+
.additional-projects.expanded .project-card:nth-child(2) { animation-delay: 0.2s; }
416+
.additional-projects.expanded .project-card:nth-child(3) { animation-delay: 0.3s; }
417+
352418
footer {
353419
text-align: center;
354420
padding: 3rem 0;
@@ -466,10 +532,10 @@ <h1>ARCHIVE</h1>
466532
<span>SYSTEM ACTIVE</span>
467533
</div>
468534
<div class="status-item">
469-
<span>3 PROJECTS INDEXED</span>
535+
<span>0 PROJECTS INDEXED</span>
470536
</div>
471537
<div class="status-item">
472-
<span>LAST UPDATE: 2026.02.16</span>
538+
<span>LAST UPDATE: 2024.02.16</span>
473539
</div>
474540
</div>
475541

@@ -481,8 +547,8 @@ <h1>ARCHIVE</h1>
481547
<article class="project-card">
482548
<div class="project-header">
483549
<div>
484-
<div class="project-id">PROJECT-001</div>
485-
<h2 class="project-title">MCP Server for Detection Engineering</h2>
550+
<div class="project-id"></div>
551+
<h2 class="project-title">MCP Server for Detection Engineering (Security & Anti-Fraud)</h2>
486552
</div>
487553
<span class="tlp-label tlp-amber">TLP:AMBER</span>
488554
</div>
@@ -515,15 +581,15 @@ <h2 class="project-title">ML Classifier: Hunting Down Bot Email Addresses</h2>
515581
<span class="tag">Anti Fraud</span>
516582
</div>
517583
<div class="project-footer">
518-
<a href="#" class="project-link">Details</a>
584+
<a href="projects/ml-classifier-hunting-down-bot-email-addresses.html" class="project-link" target="_blank">Details</a>
519585
<span class="project-date">2025.11</span>
520586
</div>
521587
</article>
522588

523589
<article class="project-card">
524590
<div class="project-header">
525591
<div>
526-
<div class="project-id">PROJECT-003</div>
592+
<div class="project-id"></div>
527593
<h2 class="project-title">AI-Assisted Runtime Detection on GKE (Falco + ADK)</h2>
528594
</div>
529595
<span class="tlp-label tlp-clear">TLP:CLEAR</span>
@@ -549,6 +615,22 @@ <h2 class="project-title">AI-Assisted Runtime Detection on GKE (Falco + ADK)</h2
549615

550616
</div>
551617

618+
<!-- Show More Button -->
619+
<div class="show-more-container">
620+
<button class="show-more-btn" id="showMoreBtn" onclick="toggleProjects()">
621+
Show More Projects (0)
622+
</button>
623+
</div>
624+
625+
<!-- Additional Projects (Hidden by default) -->
626+
<div class="additional-projects" id="additionalProjects">
627+
<div class="projects-grid">
628+
<!-- Add more projects here when you have them -->
629+
<!-- Example: Copy a project-card from above and paste here -->
630+
631+
</div>
632+
</div>
633+
552634
<footer>
553635
<p>// SECURE COMMUNICATIONS ONLY</p>
554636
<div class="contact-links">
@@ -557,5 +639,92 @@ <h2 class="project-title">AI-Assisted Runtime Detection on GKE (Falco + ADK)</h2
557639
</div>
558640
</footer>
559641
</div>
642+
643+
<script>
644+
// Auto-count projects and update status bar on page load
645+
document.addEventListener('DOMContentLoaded', function() {
646+
console.log('Script loaded'); // Debug
647+
648+
// Count main projects (only the first projects-grid, not the one inside additionalProjects)
649+
const mainProjectsGrid = document.querySelector('.projects-grid');
650+
const mainProjects = mainProjectsGrid.querySelectorAll('.project-card');
651+
console.log('Main projects found:', mainProjects.length); // Debug
652+
653+
// Count additional (hidden) projects
654+
const additionalProjects = document.querySelectorAll('#additionalProjects .project-card');
655+
console.log('Additional projects found:', additionalProjects.length); // Debug
656+
657+
// Total projects
658+
const totalProjects = mainProjects.length + additionalProjects.length;
659+
console.log('Total projects:', totalProjects); // Debug
660+
661+
// Update status bar with total count
662+
const statusItems = document.querySelectorAll('.status-item');
663+
console.log('Status items found:', statusItems.length); // Debug
664+
665+
if (statusItems.length >= 2) {
666+
const countSpan = statusItems[1].querySelector('span');
667+
console.log('Count span found:', countSpan); // Debug
668+
if (countSpan) {
669+
countSpan.textContent = `${totalProjects} PROJECTS INDEXED`;
670+
console.log('Updated to:', countSpan.textContent); // Debug
671+
}
672+
}
673+
674+
// Auto-number all projects
675+
const allProjectCards = document.querySelectorAll('.project-card');
676+
allProjectCards.forEach((card, index) => {
677+
const projectId = card.querySelector('.project-id');
678+
if (projectId) {
679+
const projectNumber = String(index + 1).padStart(3, '0');
680+
projectId.textContent = `PROJECT-${projectNumber}`;
681+
}
682+
});
683+
684+
// Update "Show More" button with additional project count
685+
const showMoreBtn = document.getElementById('showMoreBtn');
686+
if (additionalProjects.length > 0) {
687+
showMoreBtn.textContent = `Show More Projects (${additionalProjects.length})`;
688+
showMoreBtn.style.display = 'inline-block';
689+
} else {
690+
showMoreBtn.style.display = 'none';
691+
}
692+
693+
// Get last update date from most recent project
694+
const allProjectDates = document.querySelectorAll('.project-date');
695+
let latestDate = '2024.01.01';
696+
697+
allProjectDates.forEach(dateEl => {
698+
const dateText = dateEl.textContent.trim();
699+
if (dateText > latestDate) {
700+
latestDate = dateText;
701+
}
702+
});
703+
704+
// Update status bar with latest date
705+
if (statusItems.length >= 3) {
706+
const dateSpan = statusItems[2].querySelector('span');
707+
if (dateSpan) {
708+
dateSpan.textContent = `LAST UPDATE: ${latestDate}`;
709+
}
710+
}
711+
});
712+
713+
function toggleProjects() {
714+
const additionalProjects = document.getElementById('additionalProjects');
715+
const btn = document.getElementById('showMoreBtn');
716+
const additionalProjectCount = document.querySelectorAll('#additionalProjects .project-card').length;
717+
718+
additionalProjects.classList.toggle('expanded');
719+
btn.classList.toggle('expanded');
720+
721+
if (additionalProjects.classList.contains('expanded')) {
722+
btn.textContent = 'Show Less';
723+
} else {
724+
btn.textContent = `Show More Projects (${additionalProjectCount})`;
725+
}
726+
}
727+
</script>
728+
560729
</body>
561730
</html>

0 commit comments

Comments
 (0)