Implement BIOS boot animation and enhance terminal interactivity with clickable commands

This commit is contained in:
2026-03-05 19:20:07 +11:00
parent 134e917cac
commit fb86ebbd0d
4 changed files with 443 additions and 63 deletions

View File

@@ -6,13 +6,69 @@
body {
font-family: 'Courier New', Courier, monospace;
background: #000;
background: #001800;
color: #0f0;
overflow: hidden;
height: 100vh;
position: relative;
}
/* Initial black screen fade-in */
.page-fade-overlay {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: #000;
z-index: 20000;
pointer-events: none;
opacity: 1;
transition: opacity 0.8s ease-out;
}
.page-fade-overlay.fade-out {
opacity: 0;
}
/* Boot screen */
.boot-screen {
position: absolute;
top: 80px;
left: 80px;
right: 80px;
bottom: 100px;
background: #001800;
z-index: 100;
padding: 20px;
font-family: 'Courier New', Courier, monospace;
font-size: 14px;
color: #aaa;
overflow: hidden;
transition: opacity 0.5s ease-out;
border: 3px solid #0f0;
border-radius: 8px;
}
.boot-screen.fade-out {
opacity: 0;
pointer-events: none;
}
.boot-screen pre {
margin: 0;
white-space: pre-wrap;
line-height: 1.4;
}
.boot-screen .highlight {
color: #0f0;
}
.boot-screen .white {
color: #fff;
}
.crt-border-overlay {
position: fixed;
top: 0;
@@ -115,6 +171,11 @@ body {
cursor: text;
}
/* Hide xterm cursor completely */
.xterm-cursor-layer {
display: none !important;
}
/* Inline terminal input */
.terminal-inline-input {
position: absolute;
@@ -131,6 +192,22 @@ body {
z-index: 10;
min-width: 50%;
max-width: 80%;
pointer-events: auto;
}
/* Clickable commands in terminal */
.xterm-screen a,
.xterm .xterm-link-layer a {
color: #0f0 !important;
text-decoration: underline !important;
cursor: pointer !important;
text-shadow: 0 0 5px #0f0;
}
.xterm-screen a:hover,
.xterm .xterm-link-layer a:hover {
color: #0ff !important;
text-shadow: 0 0 8px #0ff !important;
}
.terminal-inline-input::placeholder {
@@ -155,6 +232,36 @@ body {
opacity: 0.8;
}
/* Quick command buttons */
.quick-commands {
display: flex;
gap: 8px;
align-items: center;
}
.quick-cmd {
background: transparent;
color: #0f0;
border: 1px solid #0f0;
border-radius: 3px;
padding: 2px 8px;
font-family: 'Courier New', Courier, monospace;
font-size: 11px;
cursor: pointer;
transition: all 0.2s;
text-shadow: 0 0 3px #0f0;
}
.quick-cmd:hover {
background: #0f0;
color: #001800;
box-shadow: 0 0 8px #0f0;
}
.quick-cmd:active {
transform: scale(0.95);
}
/* CRT scanlines effect */
.container::before {
content: " ";
@@ -189,7 +296,8 @@ body {
border-image-width: 40px;
}
.container {
.container,
.boot-screen {
top: 40px;
left: 40px;
right: 40px;
@@ -219,6 +327,15 @@ body {
padding: 4px 12px;
font-size: 10px;
}
.quick-commands {
gap: 6px;
}
.quick-cmd {
padding: 2px 6px;
font-size: 10px;
}
}
@media (max-width: 480px) {
@@ -227,13 +344,19 @@ body {
border-image-width: 25px;
}
.container {
.container,
.boot-screen {
top: 25px;
left: 25px;
right: 25px;
bottom: 35px;
}
.boot-screen {
font-size: 11px;
padding: 10px;
}
.terminal-title {
letter-spacing: 1px;
font-size: 10px;