Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
62 changes: 62 additions & 0 deletions static/css/custom.css
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,68 @@ tbody tr:first-child td .tile .tile-content:before {
background: #2a2b2c;
}

.off-canvas-sidebar.active {
transform: translateX(0);
}

.off-canvas-sidebar.active ~ .off-canvas-overlay {
display: block;
}

/* MOBILE NAV DROPDOWNS */
.nav-dropdown-menu {
display: none;
list-style: none;
padding-left: 1rem;
margin: 0;
}

.nav-dropdown.active .nav-dropdown-menu {
display: block;
}

.nav-dropdown-toggle {
display: flex;
align-items: center;
justify-content: space-between;
width: 100%;
}

.nav-arrow {
display: inline-block;
transition: transform 0.2s ease;
}

.nav-dropdown.active .nav-arrow {
transform: rotate(90deg);
}

.nav-item {
padding: 0.3rem 0;
}

.nav-dropdown-menu li {
padding: 0.2rem 0;
}

.off-canvas .off-canvas-sidebar .nav-dropdown-menu .btn.btn-link,
.off-canvas .off-canvas-sidebar .nav-dropdown-toggle.btn.btn-link,
.off-canvas .off-canvas-sidebar .nav-item > .btn.btn-link {
color: #9acc14;
}

.off-canvas .off-canvas-sidebar .btn.btn-link:hover,
.off-canvas .off-canvas-sidebar .btn.btn-link:focus {
background: #3a3b3c;
color: #9acc14;
}

a.nav-highlight,
.btn.btn-link.nav-highlight {
color: #9acc14;
font-weight: bold;
}

/* UPLOAD BUTTON */
.upload-btn {
background: transparent;
Expand Down
15 changes: 7 additions & 8 deletions templates/base.html
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,6 @@
{% block head %}{% endblock %}
</head>
<body>
<style>
.off-canvas-sidebar.active {
transform: translateX(0);
}
.off-canvas-sidebar.active ~ .off-canvas-overlay {
display: block;
}
</style>
<script>
function toggleSidebar(id) {
var sidebar = document.getElementById(id);
Expand All @@ -40,6 +32,13 @@
history.replaceState(null, '', window.location.pathname + window.location.search);
}
}
function toggleNavDropdown(el) {
var dropdown = el.closest('.nav-dropdown');
if (dropdown) {
dropdown.classList.toggle('active');
el.setAttribute('aria-expanded', dropdown.classList.contains('active'));
}
}
</script>
{% include 'partial/menu.html' %}
{% with messages = get_flashed_messages(with_categories=true) %}
Expand Down
104 changes: 67 additions & 37 deletions templates/partial/menu.html
Original file line number Diff line number Diff line change
Expand Up @@ -5,71 +5,101 @@ <h2><a href="/" class="title-navbar">crackmes.one</a></h2>
<section class="navbar-center">
-
</section>

{% if AuthLevel == "auth" %}
<section class="navbar-section">
<a href="{{ BaseURI }}notifications" class="btn btn-link notif-link"><i class="icon icon-message"></i>{% if unread_notifications > 0 %}<span class="notif-badge">{{ unread_notifications }}</span>{% endif %}</a>
<a href="{{ BaseURI }}search" class="btn btn-link">Search</a>
<a href="{{ BaseURI }}upload/crackme" class="btn btn-link">Upload crackme</a>
<a href="{{ BaseURI }}lasts/1" class="btn btn-link">Latest Crackmes</a>
<a href="{{ BaseURI }}faq" class="btn btn-link">Faq</a>
<a href="{{ BaseURI }}faq" class="btn btn-link">FAQ</a>
<a href="https://discord.gg/2pPV3yq" class="btn btn-link">Discord</a>
<a href="https://crackmesone.ctfd.io/" class="btn btn-link" target="_blank" style="color: #9acc14; font-weight: bold;">🏆 CTF (Feb 2026)</a>
<a href="https://crackmesone.ctfd.io/" class="btn btn-link nav-highlight" target="_blank">CTF (Feb 2026)</a>
<a href="{{ BaseURI }}user/{{ usersess }}" class="btn btn-link">Profile</a>
<a href="{{ BaseURI }}logout" class="btn btn-link">Logout</a>
</section>
{% else %}
<section class="navbar-section">
<a href="{{ BaseURI }}search" class="btn btn-link">Search</a>
<a href="{{ BaseURI }}lasts/1" class="btn btn-link">Latest Crackmes</a>
<a href="{{ BaseURI }}faq" class="btn btn-link">FAQ</a>
<a href="https://discord.gg/2pPV3yq" class="btn btn-link">Discord</a>
<a href="https://crackmesone.ctfd.io/" class="btn btn-link nav-highlight" target="_blank">CTF (Feb 2026)</a>
<a href="{{ BaseURI }}login" class="btn btn-link">Login</a>
<a href="{{ BaseURI }}register" class="btn btn-link">Register</a>
</section>
{% endif %}
</header>

{% if AuthLevel == "auth" %}
<div class="off-canvas show-xs">
<h2 class="text-center"><a href="/" class="title-navbar">crackmes.one</a></h2>
<a class="off-canvas-toggle btn btn-primary btn-action" href="#" onclick="toggleSidebar('sidebar-id'); return false;">
<a class="off-canvas-toggle btn btn-primary btn-action" href="javascript:void(0)" onclick="toggleSidebar('sidebar-id')">
<i class="icon icon-menu"></i>
</a>

<div id="sidebar-id" class="off-canvas-sidebar">
<ul class="nav">
<li class="nav"><a href="{{ BaseURI }}notifications" class="btn btn-link notif-link"><i class="icon icon-message"></i>{% if unread_notifications > 0 %}<span class="notif-badge">{{ unread_notifications }}</span>{% endif %}</a>
<li class="nav"><a href="{{ BaseURI }}search" class="btn btn-link">Search</a>
<li class="nav"><a href="{{ BaseURI }}upload/crackme" class="btn btn-link">Upload crackme</a>
<li class="nav"><a href="{{ BaseURI }}lasts/1" class="btn btn-link">Latest Crackmes</a></li>
<li class="nav"><a href="https://discord.gg/2pPV3yq" class="btn btn-link">Discord</a></li>
<li class="nav"><a href="{{ BaseURI }}faq" class="btn btn-link">Faq</a></li>
<li class="nav"><a href="https://crackmesone.ctfd.io/" class="btn btn-link" target="_blank" style="color: #9acc14; font-weight: bold;">CTF (Feb 2026)</a></li>
<li class="nav"><a href="{{ BaseURI }}user/{{ usersess }}" class="btn btn-link">Profile</a></li>
<li class="nav"><a href="{{ BaseURI }}logout" class="btn btn-link">Logout</a></li>
<li class="nav-item"><a href="{{ BaseURI }}" class="btn btn-link">Home</a></li>
<li class="nav-item"><a href="{{ BaseURI }}notifications" class="btn btn-link notif-link"><i class="icon icon-message"></i> Notifications {% if unread_notifications > 0 %}<span class="notif-badge">{{ unread_notifications }}</span>{% endif %}</a></li>
<li class="nav-item nav-dropdown">
<a href="javascript:void(0)" class="btn btn-link nav-dropdown-toggle" role="button" aria-expanded="false" onclick="toggleNavDropdown(this)">Crackmes <span class="nav-arrow">&gt;</span></a>
<ul class="nav-dropdown-menu">
<li><a href="{{ BaseURI }}search" class="btn btn-link">Search</a></li>
<li><a href="{{ BaseURI }}lasts/1" class="btn btn-link">Latest Crackmes</a></li>
<li><a href="{{ BaseURI }}upload/crackme" class="btn btn-link">Upload crackme</a></li>
</ul>
</li>
<li class="nav-item nav-dropdown">
<a href="javascript:void(0)" class="btn btn-link nav-dropdown-toggle" role="button" aria-expanded="false" onclick="toggleNavDropdown(this)">Community <span class="nav-arrow">&gt;</span></a>
<ul class="nav-dropdown-menu">
<li><a href="{{ BaseURI }}faq" class="btn btn-link">FAQ</a></li>
<li><a href="https://discord.gg/2pPV3yq" class="btn btn-link">Discord</a></li>
<li><a href="https://crackmesone.ctfd.io/" class="btn btn-link nav-highlight" target="_blank">CTF (Feb 2026)</a></li>
</ul>
</li>
<li class="nav-item nav-dropdown">
<a href="javascript:void(0)" class="btn btn-link nav-dropdown-toggle" role="button" aria-expanded="false" onclick="toggleNavDropdown(this)">Account <span class="nav-arrow">&gt;</span></a>
<ul class="nav-dropdown-menu">
<li><a href="{{ BaseURI }}user/{{ usersess }}" class="btn btn-link">Profile</a></li>
<li><a href="{{ BaseURI }}logout" class="btn btn-link">Logout</a></li>
</ul>
</li>
</ul>
</div>
<a class="off-canvas-overlay" href="#" onclick="closeSidebar(); return false;"></a>
<a class="off-canvas-overlay" href="javascript:void(0)" onclick="closeSidebar()"></a>
</div>

{% else %}

<section class="navbar-section">
<a href="{{ BaseURI }}search" class="btn btn-link">Search</a>
<a href="{{ BaseURI }}lasts/1" class="btn btn-link">Latest Crackmes</a>
<a href="{{ BaseURI }}faq" class="btn btn-link">Faq</a>
<a href="https://discord.gg/2pPV3yq" class="btn btn-link">Discord</a>
<a href="https://crackmesone.ctfd.io/" class="btn btn-link" target="_blank" style="color: #9acc14; font-weight: bold;">CTF (Feb 2026)</a>
<a href="{{ BaseURI }}login" class="btn btn-link">Login</a>
<a href="{{ BaseURI }}register" class="btn btn-link">Register</a>
</section>
</header>
<div class="off-canvas show-xs">
<h2 class="text-center"><a href="/" class="title-navbar">crackmes.one</a></h2>
<a class="off-canvas-toggle btn btn-primary btn-action" href="#" onclick="toggleSidebar('sidebar-id-guest'); return false;">
<a class="off-canvas-toggle btn btn-primary btn-action" href="javascript:void(0)" onclick="toggleSidebar('sidebar-id-guest')">
<i class="icon icon-menu"></i>
</a>

<div id="sidebar-id-guest" class="off-canvas-sidebar">
<ul class="nav">
<li class="nav"><a href="{{ BaseURI }}search" class="btn btn-link">Search</a>
<li class="nav"><a href="{{ BaseURI }}lasts/1" class="btn btn-link">Latest Crackmes</a></li>
<li class="nav"><a href="{{ BaseURI }}faq" class="btn btn-link">Faq</a></li>
<li class="nav"><a href="https://discord.gg/2pPV3yq" class="btn btn-link">Discord</a></li>
<li class="nav"><a href="https://crackmesone.ctfd.io/" class="btn btn-link" target="_blank" style="color: #9acc14; font-weight: bold;">CTF (Feb 2026)</a></li>
<li class="nav"><a href="{{ BaseURI }}login" class="btn btn-link">Login</a></li>
<li class="nav"><a href="{{ BaseURI }}register" class="btn btn-link">Register</a></li>
<li class="nav-item"><a href="{{ BaseURI }}" class="btn btn-link">Home</a></li>
<li class="nav-item nav-dropdown">
<a href="javascript:void(0)" class="btn btn-link nav-dropdown-toggle" role="button" aria-expanded="false" onclick="toggleNavDropdown(this)">Crackmes <span class="nav-arrow">&gt;</span></a>
<ul class="nav-dropdown-menu">
<li><a href="{{ BaseURI }}search" class="btn btn-link">Search</a></li>
<li><a href="{{ BaseURI }}lasts/1" class="btn btn-link">Latest Crackmes</a></li>
</ul>
</li>
<li class="nav-item nav-dropdown">
<a href="javascript:void(0)" class="btn btn-link nav-dropdown-toggle" role="button" aria-expanded="false" onclick="toggleNavDropdown(this)">Community <span class="nav-arrow">&gt;</span></a>
<ul class="nav-dropdown-menu">
<li><a href="{{ BaseURI }}faq" class="btn btn-link">FAQ</a></li>
<li><a href="https://discord.gg/2pPV3yq" class="btn btn-link">Discord</a></li>
<li><a href="https://crackmesone.ctfd.io/" class="btn btn-link nav-highlight" target="_blank">CTF (Feb 2026)</a></li>
</ul>
</li>
<li class="nav-item nav-dropdown">
<a href="javascript:void(0)" class="btn btn-link nav-dropdown-toggle" role="button" aria-expanded="false" onclick="toggleNavDropdown(this)">Account <span class="nav-arrow">&gt;</span></a>
<ul class="nav-dropdown-menu">
<li><a href="{{ BaseURI }}login" class="btn btn-link">Login</a></li>
<li><a href="{{ BaseURI }}register" class="btn btn-link">Register</a></li>
</ul>
</li>
</ul>
</div>
<a class="off-canvas-overlay" href="#" onclick="closeSidebar(); return false;"></a>
<a class="off-canvas-overlay" href="javascript:void(0)" onclick="closeSidebar()"></a>
</div>
{% endif %}