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
7 changes: 7 additions & 0 deletions .jules/palette.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
## 2026-05-03 - Layout Shift Prevention in Navigation
**Learning:** When using borders as hover indicators in a terminal-style navigation, initializing the element with a transparent border of the same width (e.g., `border-bottom: 2px solid transparent;`) prevents layout shifts (jank) when the active border is applied on hover.
**Action:** Always initialize hover-bordered elements with a transparent border to ensure visual stability.

## 2026-05-03 - Contextual Utility Visibility
**Learning:** Using Tailwind's `group-hover` and `focus` utilities allows for "clean" UI that only shows utility buttons (like "Copy") when relevant. Ensuring `focus:opacity-100` is critical for keyboard accessibility so that tab-navigation reveals these hidden actions.
**Action:** Use `group` on containers and `group-hover:opacity-100 focus:opacity-100` on contextual actions to balance aesthetics and accessibility.
7 changes: 5 additions & 2 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,12 @@
.industrial-border { border: 2px solid #27272a; }
.license-box { background: #000; border: 1px solid #3f3f46; position: relative; }

.nav-link { font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: 0.2em; color: #a1a1aa; transition: all 0.2s; }
.nav-link { font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: 0.2em; color: #a1a1aa; transition: all 0.2s; border-bottom: 2px solid transparent; }
.nav-link:hover { color: #fff; border-bottom: 2px solid var(--lime); }

@keyframes blink { 0%, 100% { opacity: 1; } 50% { opacity: 0; } }
.terminal-blink { animation: blink 1s step-end infinite; }

.roadmap-card { border-left: 2px solid #3f3f46; transition: all 0.3s ease; }
.roadmap-card:hover { border-left-color: var(--lime); background: #111113; }
</style>
Expand All @@ -30,7 +33,7 @@
<nav class="border-b-2 border-white bg-black sticky top-0 z-50">
<div class="max-w-7xl mx-auto px-6 flex justify-between h-20 items-center">
<div class="flex items-center gap-12">
<div class="font-black text-3xl tracking-tighter uppercase italic">RTECH<span class="text-lime-500">_</span></div>
<a href="index.html" class="font-black text-3xl tracking-tighter uppercase italic hover:text-lime-500 transition-colors">RTECH<span class="text-lime-500 terminal-blink">_</span></a>
<div class="hidden lg:flex gap-10">
<a href="#modding" class="nav-link">/Modding</a>
<a href="#roadmap" class="nav-link">/Roadmap</a>
Expand Down
40 changes: 34 additions & 6 deletions os2.html
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,9 @@

.btn-pending { background: transparent; color: #475569; cursor: not-allowed; border: 1px solid #1e293b; }

@keyframes blink { 0%, 100% { opacity: 1; } 50% { opacity: 0; } }
.terminal-blink { animation: blink 1s step-end infinite; }

.code-window { background: #000; border: 1px solid #334155; padding: 2rem; position: relative; }
.code-window::before { content: "TERMINAL_FEED"; position: absolute; top: -10px; left: 20px; background: #000; padding: 0 10px; font-size: 10px; color: var(--lime); font-weight: 800; }

Expand All @@ -43,11 +46,11 @@
<nav class="border-b border-slate-800 bg-slate-950/90 backdrop-blur-xl sticky top-0 z-50">
<div class="max-w-7xl mx-auto px-6 flex justify-between h-20 items-center">
<div class="flex items-center gap-12">
<a href="index.html" class="font-black text-2xl tracking-tighter hover:text-lime-500 transition-colors uppercase">RTECH</a>
<a href="index.html" class="font-black text-3xl tracking-tighter uppercase italic hover:text-lime-500 transition-colors">RTECH<span class="text-lime-500 terminal-blink">_</span></a>
<div class="hidden lg:flex gap-10 text-[10px] font-black uppercase tracking-[0.2em] text-slate-400">
<a href="#about" class="hover:text-white">Specs</a>
<a href="#testing" class="hover:text-white">VM_Guidance</a>
<a href="#deployment" class="text-lime-500 underline underline-offset-8">Deployment</a>
<a href="#about" class="hover:text-white">/Specs</a>
<a href="#testing" class="hover:text-white">/VM_Guidance</a>
<a href="#deployment" class="text-lime-500 underline underline-offset-8">/Deployment</a>
</div>
</div>
<div class="text-[10px] font-black uppercase px-4 py-1.5 border border-slate-700 bg-slate-900">VER: 2026.04</div>
Expand Down Expand Up @@ -84,8 +87,11 @@ <h4 class="text-lime-500 font-black text-xs uppercase mb-2">The Zest UI</h4>
</div>
</div>
</div>
<div class="code-window">
<pre class="text-lime-500 text-xs leading-loose">
<div class="code-window group">
<button onclick="copyCode(this)" class="absolute top-4 right-4 bg-zinc-900 border border-zinc-700 text-zinc-500 hover:text-lime-500 hover:border-lime-500 px-3 py-1 text-[10px] font-black uppercase transition-all opacity-0 group-hover:opacity-100 focus:opacity-100">
Copy
</button>
<pre id="assembly-code" class="text-lime-500 text-xs leading-loose">
; OS*2 SYSTEM_INIT
move rdi 10 ; ALLOC_SOVEREIGNTY
push rdi ; SECURE_REGISTER
Expand Down Expand Up @@ -148,6 +154,28 @@ <h4 class="text-[10px] font-black text-slate-400 uppercase mb-6 tracking-widest"
</footer>

<script>
async function copyCode(btn) {
const code = document.getElementById('assembly-code').innerText;
try {
await navigator.clipboard.writeText(code);
} catch (err) {
const textarea = document.createElement('textarea');
textarea.value = code;
document.body.appendChild(textarea);
textarea.select();
document.execCommand('copy');
document.body.removeChild(textarea);
}

const originalText = btn.innerText;
btn.innerText = "COPIED!";
btn.classList.add('text-lime-500', 'border-lime-500');
setTimeout(() => {
btn.innerText = originalText;
btn.classList.remove('text-lime-500', 'border-lime-500');
}, 2000);
}

async function checkAvailability() {
const btn = document.getElementById('download-btn');
const status = document.getElementById('system-status');
Expand Down