diff --git a/client/index.html b/client/index.html
index 5b1c6d3..1fab440 100644
--- a/client/index.html
+++ b/client/index.html
@@ -7,7 +7,7 @@
Chat E2EE - Minimal & Secure
-
+
diff --git a/client/src/components/CallOverlay/CallOverlay.css b/client/src/components/CallOverlay/CallOverlay.css
index 13eddb4..eb7837c 100644
--- a/client/src/components/CallOverlay/CallOverlay.css
+++ b/client/src/components/CallOverlay/CallOverlay.css
@@ -1,92 +1,90 @@
/**
- * Call overlay styles – terminal theme
+ * Call overlay styles
*/
.blur-overlay {
position: fixed;
- inset: 0;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
z-index: 200;
display: flex;
justify-content: center;
align-items: center;
- background: rgba(0, 0, 0, 0.88);
+ background: rgba(15, 23, 42, 0.8);
padding: 1rem;
padding-bottom: calc(1rem + env(safe-area-inset-bottom));
- animation: fadeIn 0.25s ease;
+ animation: fadeIn 0.3s ease;
}
@keyframes fadeIn {
- from { opacity: 0; }
- to { opacity: 1; }
+ from {
+ opacity: 0;
+ }
+
+ to {
+ opacity: 1;
+ }
}
.call-info {
text-align: center;
- display: flex;
- flex-direction: column;
- align-items: center;
- gap: 0.5rem;
}
-/* Terminal-style pulsing avatar */
.call-avatar {
- width: 110px;
- height: 110px;
+ width: 120px;
+ height: 120px;
border-radius: 50%;
- background: rgba(0, 10, 0, 0.9);
- margin-bottom: 1rem;
+ background: var(--glass);
+ margin: 0 auto 1.5rem;
border: 2px solid var(--primary);
- box-shadow: var(--glow-md), inset var(--glow-sm);
- position: relative;
- overflow: hidden;
-}
-
-.call-avatar::after {
- content: '';
- position: absolute;
- inset: 0;
- border-radius: 50%;
- background: radial-gradient(circle at 40% 35%, var(--primary-dim), transparent 60%);
}
.shimmer {
- animation: callPulse 1.8s ease-in-out infinite;
+ background: linear-gradient(90deg, var(--glass) 25%, rgba(99, 102, 241, 0.2) 50%, var(--glass) 75%);
+ background-size: 200% 100%;
+ animation: shimmer 1.5s infinite;
}
-@keyframes callPulse {
- 0%, 100% { box-shadow: var(--glow-md), inset var(--glow-sm); }
- 50% { box-shadow: var(--glow-lg), inset var(--glow-md); }
+@keyframes shimmer {
+ 0% {
+ background-position: 200% 0;
+ }
+
+ 100% {
+ background-position: -200% 0;
+ }
}
.call-status {
- font-size: 1.25rem;
- font-weight: 700;
- letter-spacing: 0.08em;
- text-transform: uppercase;
- color: var(--primary);
- text-shadow: var(--glow-md);
+ font-size: 1.5rem;
+ margin-bottom: 0.5rem;
+ color: white;
}
.call-duration {
color: var(--text-muted);
- margin-bottom: 1.75rem;
- font-size: 0.95rem;
- letter-spacing: 0.12em;
- font-variant-numeric: tabular-nums;
+ margin-bottom: 2rem;
+ font-size: 1.1rem;
}
/* Mobile responsive */
@media (max-width: 480px) {
+ .blur-overlay {
+ padding: 1rem;
+ }
+
.call-avatar {
- width: 90px;
- height: 90px;
+ width: 100px;
+ height: 100px;
}
.call-status {
- font-size: 1.05rem;
+ font-size: 1.25rem;
}
.call-duration {
- margin-bottom: 1.25rem;
+ margin-bottom: 1.5rem;
}
-}
+}
\ No newline at end of file
diff --git a/client/src/components/ChatContainer/ChatContainer.css b/client/src/components/ChatContainer/ChatContainer.css
index 7029894..9feae0c 100644
--- a/client/src/components/ChatContainer/ChatContainer.css
+++ b/client/src/components/ChatContainer/ChatContainer.css
@@ -1,23 +1,23 @@
/**
- * Chat container styles – terminal theme
+ * Chat container styles
*/
#chat-container {
width: 100%;
- max-width: 820px;
+ max-width: 800px;
height: 100%;
- max-height: 820px;
+ max-height: 800px;
display: flex;
flex-direction: column;
- border-radius: 0.25rem;
+ border-radius: 2rem;
overflow: hidden;
- border: 1px solid var(--glass-border);
- box-shadow: var(--glow-sm), 0 0 60px rgba(0, 0, 0, 0.8);
- background: rgba(0, 8, 0, 0.95);
+ opacity: 1;
+ transition: all 0.3s ease;
}
#chat-container.hidden {
display: none;
+ opacity: 0;
}
/* Mobile responsive */
@@ -26,6 +26,5 @@
max-width: 100%;
max-height: 100%;
border-radius: 0;
- border: none;
}
-}
+}
\ No newline at end of file
diff --git a/client/src/components/ChatContainer/ChatFooter.css b/client/src/components/ChatContainer/ChatFooter.css
index 239c9f2..a7c16b0 100644
--- a/client/src/components/ChatContainer/ChatFooter.css
+++ b/client/src/components/ChatContainer/ChatFooter.css
@@ -1,65 +1,48 @@
/**
- * Chat footer styles – terminal theme
+ * Chat footer styles
*/
.chat-footer {
- padding: 0.875rem 1.25rem;
- border-top: 1px solid var(--glass-border);
- background: rgba(0, 10, 0, 0.98);
- flex-shrink: 0;
+ padding: 1.5rem;
}
.input-container {
display: flex;
- gap: 0.625rem;
+ gap: 0.75rem;
align-items: center;
}
-/* Terminal prompt prefix */
-.input-container::before {
- content: '>';
- color: var(--primary);
- font-size: 1rem;
- font-weight: 700;
- flex-shrink: 0;
- text-shadow: var(--glow-sm);
- user-select: none;
-}
-
.message-input {
flex: 1;
- padding: 0.65rem 0.9rem;
- background: rgba(0, 5, 0, 0.85);
- border: 1px solid rgba(0, 255, 65, 0.2);
- border-radius: 0.2rem;
- color: var(--text);
+ padding: 0.75rem 1rem;
+ background: rgba(0, 0, 0, 0.2);
+ border: 1px solid var(--glass-border);
+ border-radius: 0.75rem;
+ color: white;
font-family: inherit;
- font-size: 0.9rem;
- transition: border-color 0.15s ease, box-shadow 0.15s ease;
- caret-color: var(--primary);
- min-width: 0;
-}
-
-.message-input::placeholder {
- color: var(--text-muted);
- opacity: 0.6;
+ font-size: 1rem;
+ transition: all 0.2s;
}
.message-input:focus {
outline: none;
border-color: var(--primary);
- box-shadow: var(--glow-sm);
+ background: rgba(0, 0, 0, 0.4);
+}
+
+.message-input::placeholder {
+ color: var(--text-muted);
}
.message-input:disabled {
- opacity: 0.4;
+ opacity: 0.6;
cursor: not-allowed;
}
/* Mobile responsive */
@media (max-width: 480px) {
.chat-footer {
- padding: 0.75rem 1rem;
+ padding: 0.75rem;
padding-bottom: calc(0.75rem + env(safe-area-inset-bottom));
}
@@ -69,6 +52,6 @@
.message-input {
font-size: 16px;
- /* Prevents iOS zoom */
+ /* Prevents zoom on iOS */
}
-}
+}
\ No newline at end of file
diff --git a/client/src/components/ChatContainer/ChatHeader.css b/client/src/components/ChatContainer/ChatHeader.css
index 3af1fee..661c3d8 100644
--- a/client/src/components/ChatContainer/ChatHeader.css
+++ b/client/src/components/ChatContainer/ChatHeader.css
@@ -1,135 +1,112 @@
/**
- * Chat header styles – terminal theme
+ * Chat header styles
*/
.chat-header {
- padding: 0.875rem 1.25rem;
+ padding: 1.5rem;
display: flex;
justify-content: space-between;
align-items: center;
gap: 1rem;
- border-bottom: 1px solid var(--glass-border);
- background: rgba(0, 10, 0, 0.98);
- flex-shrink: 0;
-}
-
-/* Terminal title bar row */
-.chat-header::before {
- display: none; /* used via pseudo on parent if needed */
+ flex-wrap: wrap;
}
.header-info {
flex: 1;
- min-width: 0;
}
.title-row {
display: flex;
align-items: center;
- gap: 0.625rem;
- margin-bottom: 0.2rem;
+ gap: 0.75rem;
+ margin-bottom: 0.25rem;
}
-/* Blinking status dot */
.status-dot {
- width: 7px;
- height: 7px;
+ width: 8px;
+ height: 8px;
border-radius: 50%;
background: var(--text-muted);
- flex-shrink: 0;
- transition: background 0.3s ease, box-shadow 0.3s ease;
+ transition: all 0.3s ease;
}
.status-dot.connected {
background: var(--success);
- box-shadow: var(--glow-md);
- animation: pulse 2s ease-in-out infinite;
-}
-
-@keyframes pulse {
- 0%, 100% { box-shadow: var(--glow-md); }
- 50% { box-shadow: var(--glow-sm); }
+ box-shadow: 0 0 8px var(--success);
}
.channel-title {
- font-size: 0.95rem;
- font-weight: 700;
- color: var(--primary);
- letter-spacing: 0.06em;
- text-transform: uppercase;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis;
+ font-size: 1.25rem;
+ font-weight: 600;
}
.badge {
- font-size: 0.6rem;
- background: rgba(0, 255, 65, 0.1);
- color: var(--primary);
- padding: 1px 7px;
- border-radius: 0.1rem;
- font-weight: 700;
- letter-spacing: 0.1em;
- border: 1px solid rgba(0, 255, 65, 0.3);
- text-shadow: var(--glow-sm);
+ font-size: 0.7rem;
+ background: rgba(16, 185, 129, 0.2);
+ color: var(--success);
+ padding: 2px 8px;
+ border-radius: 1rem;
+ font-weight: 600;
}
.hash-badge-container {
display: flex;
align-items: center;
- gap: 0.4rem;
- background: rgba(0, 255, 65, 0.03);
- padding: 0.2rem 0.5rem;
- border-radius: 0.15rem;
- margin-top: 0.3rem;
+ gap: 0.5rem;
+ background: rgba(255, 255, 255, 0.05);
+ padding: 0.25rem 0.5rem;
+ border-radius: 0.5rem;
+ margin-top: 0.5rem;
width: fit-content;
- border: 1px solid rgba(0, 255, 65, 0.12);
+ border: 1px solid var(--glass-border);
position: relative;
}
.hash-text {
- font-family: inherit;
- font-size: 0.7rem;
+ font-family: monospace;
+ font-size: 0.75rem;
color: var(--text-muted);
word-break: break-all;
- letter-spacing: 0.03em;
}
.copy-feedback-small {
position: absolute;
- top: -18px;
+ top: -20px;
right: 0;
- font-size: 0.65rem;
+ font-size: 0.75rem;
color: var(--success);
white-space: nowrap;
- letter-spacing: 0.04em;
}
.participant-info {
- font-size: 0.7rem;
+ font-size: 0.8rem;
color: var(--text-muted);
- margin-top: 0.2rem;
- letter-spacing: 0.03em;
+ margin-top: 0.25rem;
}
.header-actions {
display: flex;
- gap: 0.25rem;
- flex-shrink: 0;
+ gap: 0.5rem;
}
/* Mobile responsive */
@media (max-width: 480px) {
.chat-header {
- padding: 0.75rem 1rem;
- padding-top: calc(0.75rem + env(safe-area-inset-top));
+ padding: 0.875rem 1rem;
+ padding-top: calc(0.875rem + env(safe-area-inset-top));
+ flex-direction: column;
+ align-items: flex-start;
}
.channel-title {
- font-size: 0.875rem;
+ font-size: 1.05rem;
}
.hash-badge-container {
display: none;
}
-}
+
+ .header-actions {
+ align-self: flex-end;
+ }
+}
\ No newline at end of file
diff --git a/client/src/components/ChatContainer/MessageBubble.css b/client/src/components/ChatContainer/MessageBubble.css
index f64d0e9..4e7f773 100644
--- a/client/src/components/ChatContainer/MessageBubble.css
+++ b/client/src/components/ChatContainer/MessageBubble.css
@@ -1,22 +1,23 @@
/**
- * Message bubble styles – terminal theme
+ * Message bubble styles
*/
.message {
- max-width: 72%;
- padding: 0.6rem 0.9rem;
- border-radius: 0.2rem;
- font-size: 0.875rem;
- line-height: 1.5;
+ max-width: 70%;
+ padding: 0.75rem 1rem;
+ border-radius: 1.25rem;
+ font-size: 0.95rem;
+ line-height: 1.4;
position: relative;
- animation: msgIn 0.2s ease-out;
+ animation: slideUp 0.3s ease-out;
}
-@keyframes msgIn {
+@keyframes slideUp {
from {
opacity: 0;
- transform: translateY(6px);
+ transform: translateY(10px);
}
+
to {
opacity: 1;
transform: translateY(0);
@@ -25,58 +26,37 @@
.message.sent {
align-self: flex-end;
- background: rgba(0, 50, 10, 0.8);
- border: 1px solid rgba(0, 255, 65, 0.35);
- border-bottom-right-radius: 0;
- color: var(--text);
- box-shadow: var(--glow-sm);
+ background: var(--primary);
+ border-bottom-right-radius: 0.25rem;
+ color: white;
+ margin-left: auto;
}
.message.received {
align-self: flex-start;
- background: rgba(0, 8, 0, 0.9);
- border: 1px solid rgba(0, 255, 65, 0.15);
- border-bottom-left-radius: 0;
-}
-
-/* Small left marker on received messages */
-.message.received::before {
- content: '';
- position: absolute;
- left: -4px;
- top: 50%;
- transform: translateY(-50%);
- width: 2px;
- height: 60%;
- background: rgba(0, 255, 65, 0.3);
- border-radius: 1px;
+ background: var(--glass);
+ border: 1px solid var(--glass-border);
+ border-bottom-left-radius: 0.25rem;
}
.message-text {
word-wrap: break-word;
overflow-wrap: break-word;
- color: var(--text);
-}
-
-.message.sent .message-text {
- color: #c8ffcc;
}
.message-meta {
- font-size: 0.63rem;
- color: var(--text-muted);
- margin-top: 0.3rem;
+ font-size: 0.7rem;
+ color: rgba(255, 255, 255, 0.5);
+ margin-top: 0.25rem;
display: flex;
justify-content: space-between;
- gap: 0.75rem;
- letter-spacing: 0.03em;
- opacity: 0.7;
+ gap: 0.5rem;
}
/* Mobile responsive */
@media (max-width: 480px) {
.message {
- max-width: 86%;
- font-size: 0.85rem;
+ max-width: 85%;
+ font-size: 0.9rem;
}
-}
+}
\ No newline at end of file
diff --git a/client/src/components/ChatContainer/MessagesArea.css b/client/src/components/ChatContainer/MessagesArea.css
index 7885feb..a2d0877 100644
--- a/client/src/components/ChatContainer/MessagesArea.css
+++ b/client/src/components/ChatContainer/MessagesArea.css
@@ -1,61 +1,51 @@
/**
- * Messages area styles – terminal theme
+ * Messages area styles
*/
.messages-area {
flex: 1;
overflow-y: auto;
- padding: 1.25rem;
+ padding: 1.5rem;
display: flex;
flex-direction: column;
- gap: 0.75rem;
+ gap: 1rem;
scroll-behavior: smooth;
- background: rgba(0, 5, 0, 0.6);
}
.empty-state {
display: flex;
- flex-direction: column;
align-items: center;
justify-content: center;
height: 100%;
- gap: 0.5rem;
color: var(--text-muted);
}
.empty-state p {
- font-size: 0.8rem;
- letter-spacing: 0.06em;
text-align: center;
}
-.empty-state p::before {
- content: '$ ';
- opacity: 0.5;
-}
-
-/* Scrollbar */
+/* Scrollbar styling */
.messages-area::-webkit-scrollbar {
- width: 5px;
+ width: 8px;
}
.messages-area::-webkit-scrollbar-track {
- background: rgba(0, 255, 65, 0.02);
+ background: rgba(255, 255, 255, 0.05);
}
.messages-area::-webkit-scrollbar-thumb {
- background: rgba(0, 255, 65, 0.2);
- border-radius: 3px;
+ background: rgba(99, 102, 241, 0.4);
+ border-radius: 4px;
}
.messages-area::-webkit-scrollbar-thumb:hover {
- background: rgba(0, 255, 65, 0.4);
+ background: rgba(99, 102, 241, 0.6);
}
/* Mobile responsive */
@media (max-width: 480px) {
.messages-area {
padding: 0.875rem 0.75rem;
- gap: 0.625rem;
+ gap: 0.75rem;
}
-}
+}
\ No newline at end of file
diff --git a/client/src/components/SetupOverlay/CreateHashView.css b/client/src/components/SetupOverlay/CreateHashView.css
index 57cd336..81c6ea7 100644
--- a/client/src/components/SetupOverlay/CreateHashView.css
+++ b/client/src/components/SetupOverlay/CreateHashView.css
@@ -1,28 +1,23 @@
/**
- * Create hash view styles – terminal theme
+ * Create hash view styles
*/
.create-hash-view {
display: flex;
flex-direction: column;
- gap: 1.25rem;
+ gap: 1.5rem;
}
.copy-feedback {
- font-size: 0.75rem;
+ font-size: 0.85rem;
color: var(--success);
- margin-top: 0.35rem;
+ margin-top: 0.5rem;
display: block;
- letter-spacing: 0.06em;
-}
-
-.copy-feedback::before {
- content: '✓ ';
}
.button-group {
display: grid;
grid-template-columns: 1fr 1fr;
- gap: 0.875rem;
- margin-top: 0.5rem;
-}
+ gap: 1rem;
+ margin-top: 1rem;
+}
\ No newline at end of file
diff --git a/client/src/components/SetupOverlay/InitialActions.css b/client/src/components/SetupOverlay/InitialActions.css
index 5e2b181..51c03ca 100644
--- a/client/src/components/SetupOverlay/InitialActions.css
+++ b/client/src/components/SetupOverlay/InitialActions.css
@@ -5,5 +5,5 @@
.initial-actions {
display: flex;
flex-direction: column;
- gap: 0.875rem;
-}
+ gap: 1rem;
+}
\ No newline at end of file
diff --git a/client/src/components/SetupOverlay/JoinHashView.css b/client/src/components/SetupOverlay/JoinHashView.css
index 33b5c3d..a460154 100644
--- a/client/src/components/SetupOverlay/JoinHashView.css
+++ b/client/src/components/SetupOverlay/JoinHashView.css
@@ -1,15 +1,15 @@
/**
- * Join hash view styles – terminal theme
+ * Join hash view styles
*/
.join-hash-view {
display: flex;
flex-direction: column;
- gap: 1.25rem;
+ gap: 1.5rem;
}
.button-group {
display: grid;
grid-template-columns: 1fr 1fr;
- gap: 0.875rem;
-}
+ gap: 1rem;
+}
\ No newline at end of file
diff --git a/client/src/components/SetupOverlay/SetupOverlay.css b/client/src/components/SetupOverlay/SetupOverlay.css
index 3e7b7c9..5743be4 100644
--- a/client/src/components/SetupOverlay/SetupOverlay.css
+++ b/client/src/components/SetupOverlay/SetupOverlay.css
@@ -1,16 +1,19 @@
/**
- * SetupOverlay styles – terminal theme
+ * SetupOverlay styles
*/
.overlay {
position: fixed;
- inset: 0;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
z-index: 100;
display: flex;
justify-content: center;
align-items: center;
padding: 20px;
- background: rgba(0, 0, 0, 0.6);
+ opacity: 1;
transition: opacity 0.3s ease;
}
@@ -21,62 +24,38 @@
.overlay-content {
width: 100%;
- max-width: 420px;
+ max-width: 400px;
padding: 2.5rem;
- border-radius: 0.25rem;
+ border-radius: 2rem;
text-align: center;
}
-/* Terminal "window chrome" top bar */
-.overlay-content::before {
- content: '■ ■ ■ SECURE_TERMINAL v2';
- display: block;
- font-size: 0.65rem;
- letter-spacing: 0.12em;
- color: var(--text-muted);
- background: rgba(0, 255, 65, 0.05);
- border-bottom: 1px solid var(--glass-border);
- margin: -2.5rem -2.5rem 2rem -2.5rem;
- padding: 0.5rem 1rem;
- text-align: left;
-}
-
.overlay-content h1 {
- font-size: 1.6rem;
- margin-bottom: 0.4rem;
- font-weight: 700;
- color: var(--primary);
- letter-spacing: 0.05em;
- text-shadow: var(--glow-md);
+ font-size: 2rem;
+ margin-bottom: 0.5rem;
+ font-weight: 600;
}
.overlay-content p {
color: var(--text-muted);
margin-bottom: 2rem;
- font-size: 0.78rem;
- letter-spacing: 0.04em;
+ font-size: 0.9rem;
}
.setup-status {
margin-top: 1.5rem;
- padding: 0.65rem 1rem;
- background: rgba(0, 255, 65, 0.05);
- border: 1px solid rgba(0, 255, 65, 0.3);
- border-radius: 0.2rem;
+ padding: 0.75rem 1rem;
+ background: rgba(99, 102, 241, 0.1);
+ border: 1px solid var(--primary);
+ border-radius: 0.5rem;
color: var(--primary);
- font-size: 0.8rem;
- text-align: left;
- font-family: inherit;
-}
-
-.setup-status::before {
- content: '$ ';
- opacity: 0.5;
+ font-size: 0.9rem;
+ text-align: center;
}
.setup-status.error {
- background: rgba(255, 34, 68, 0.06);
- border-color: rgba(255, 34, 68, 0.4);
+ background: rgba(239, 68, 68, 0.1);
+ border-color: var(--danger);
color: var(--danger);
}
@@ -85,25 +64,20 @@
.overlay {
align-items: flex-end;
padding: 0;
- background: rgba(0, 0, 0, 0.7);
}
.overlay-content {
max-width: 100%;
- border-radius: 0.5rem 0.5rem 0 0;
- padding: 2rem 1.25rem;
- padding-bottom: calc(2rem + env(safe-area-inset-bottom));
- }
-
- .overlay-content::before {
- margin: -2rem -1.25rem 1.5rem -1.25rem;
+ border-radius: 1.75rem 1.75rem 0 0;
+ padding: 1.75rem 1.25rem;
+ padding-bottom: calc(1.75rem + env(safe-area-inset-bottom));
}
.overlay-content h1 {
- font-size: 1.25rem;
+ font-size: 1.5rem;
}
.overlay-content p {
- font-size: 0.75rem;
+ font-size: 0.85rem;
}
-}
+}
\ No newline at end of file
diff --git a/client/src/components/SetupOverlay/SetupOverlay.tsx b/client/src/components/SetupOverlay/SetupOverlay.tsx
index 89dc2a0..4c0af62 100644
--- a/client/src/components/SetupOverlay/SetupOverlay.tsx
+++ b/client/src/components/SetupOverlay/SetupOverlay.tsx
@@ -104,8 +104,8 @@ export const SetupOverlay: React.FC = ({ onSetupComplete, isH
return (
-
CHAT_E2EE
-
// end-to-end encrypted · zero knowledge · ephemeral
+
Secure Messenger
+
Simple. End-to-End Encrypted. Private.
{view === 'initial' && (
';
- opacity: 0.6;
-}
-
.input-field {
width: 100%;
- padding: 0.7rem 1rem;
- background: rgba(0, 5, 0, 0.85);
- border: 1px solid rgba(0, 255, 65, 0.2);
- border-radius: 0.2rem;
- color: var(--text);
+ padding: 0.75rem 1rem;
+ background: rgba(0, 0, 0, 0.2);
+ border: 1px solid var(--glass-border);
+ border-radius: 0.75rem;
+ color: white;
font-family: inherit;
- font-size: 0.9rem;
- transition: border-color 0.15s ease, box-shadow 0.15s ease;
- caret-color: var(--primary);
-}
-
-.input-field::placeholder {
- color: var(--text-muted);
- opacity: 0.7;
+ font-size: 1rem;
+ transition: all 0.2s;
}
.input-field:focus {
outline: none;
border-color: var(--primary);
- box-shadow: var(--glow-sm);
- background: rgba(0, 8, 0, 0.95);
+ background: rgba(0, 0, 0, 0.4);
}
.input-field:read-only {
- cursor: default;
- color: var(--text-muted);
- border-color: rgba(0, 255, 65, 0.1);
+ cursor: not-allowed;
+ opacity: 0.8;
}
/* Copy input container */
@@ -62,4 +49,4 @@
.copy-input .input-field {
flex: 1;
-}
+}
\ No newline at end of file
diff --git a/client/src/styles/global.css b/client/src/styles/global.css
index ae97e9d..5787ed4 100644
--- a/client/src/styles/global.css
+++ b/client/src/styles/global.css
@@ -1,34 +1,21 @@
/**
- * Global CSS variables – hacker / terminal dark theme
+ * Global CSS variables
*/
:root {
- /* Palette */
- --primary: #00ff41;
- --primary-hover: #33ff6a;
- --primary-dim: rgba(0, 255, 65, 0.12);
- --bg: #080808;
- --surface: #0d0d0d;
- --surface-alt: #111111;
- --text: #d4ffd4;
- --text-bright: #00ff41;
- --text-muted: #4d8c5e;
- --danger: #ff2244;
- --danger-hover: #cc1133;
- --success: #00ff41;
- --accent: #00ccff;
- --glass: rgba(0, 255, 65, 0.03);
- --glass-border: rgba(0, 255, 65, 0.18);
-
- /* Glows */
- --glow-sm: 0 0 6px rgba(0, 255, 65, 0.25);
- --glow-md: 0 0 14px rgba(0, 255, 65, 0.35);
- --glow-lg: 0 0 28px rgba(0, 255, 65, 0.4);
+ --primary: #6366f1;
+ --primary-hover: #4f46e5;
+ --bg: #0f172a;
+ --card-bg: rgba(30, 41, 59, 0.7);
+ --text: #f8fafc;
+ --text-muted: #94a3b8;
+ --danger: #ef4444;
+ --success: #10b981;
+ --glass: rgba(255, 255, 255, 0.05);
+ --glass-border: rgba(255, 255, 255, 0.1);
}
-*,
-*::before,
-*::after {
+* {
box-sizing: border-box;
margin: 0;
padding: 0;
@@ -41,34 +28,15 @@ body {
}
body {
- font-family: 'JetBrains Mono', 'Fira Code', 'Courier New', monospace;
+ font-family: 'Outfit', sans-serif;
background-color: var(--bg);
color: var(--text);
height: 100vh;
height: 100dvh;
overflow: hidden;
-
- /* Subtle terminal grid */
- background-image:
- linear-gradient(rgba(0, 255, 65, 0.025) 1px, transparent 1px),
- linear-gradient(90deg, rgba(0, 255, 65, 0.025) 1px, transparent 1px);
- background-size: 40px 40px;
-}
-
-/* CRT scanline overlay */
-body::after {
- content: '';
- position: fixed;
- inset: 0;
- background: repeating-linear-gradient(
- 0deg,
- transparent,
- transparent 3px,
- rgba(0, 0, 0, 0.06) 3px,
- rgba(0, 0, 0, 0.06) 4px
- );
- pointer-events: none;
- z-index: 9999;
+ background-image: radial-gradient(at 0% 0%, hsla(253, 16%, 7%, 1) 0, transparent 50%),
+ radial-gradient(at 50% 0%, hsla(225, 39%, 30%, 1) 0, transparent 50%),
+ radial-gradient(at 100% 0%, hsla(339, 49%, 30%, 1) 0, transparent 50%);
}
#root,
@@ -80,37 +48,39 @@ body::after {
padding: 20px;
}
-/* Terminal surface (replaces glassmorphism) */
.glass {
- background: rgba(0, 10, 0, 0.92);
+ background: var(--glass);
+ backdrop-filter: blur(12px);
+ -webkit-backdrop-filter: blur(12px);
border: 1px solid var(--glass-border);
- box-shadow: var(--glow-sm), inset 0 0 40px rgba(0, 0, 0, 0.5);
+ box-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.37);
}
.hidden {
display: none !important;
}
-/* Scrollbar */
+/* Scrollbar styling */
::-webkit-scrollbar {
- width: 6px;
+ width: 8px;
}
::-webkit-scrollbar-track {
- background: rgba(0, 255, 65, 0.03);
+ background: rgba(255, 255, 255, 0.05);
}
::-webkit-scrollbar-thumb {
- background: rgba(0, 255, 65, 0.25);
- border-radius: 3px;
+ background: rgba(99, 102, 241, 0.4);
+ border-radius: 4px;
}
::-webkit-scrollbar-thumb:hover {
- background: rgba(0, 255, 65, 0.45);
+ background: rgba(99, 102, 241, 0.6);
}
-/* Mobile */
+/* Mobile responsive */
@media (max-width: 480px) {
+
#root,
#app {
padding: 0;
@@ -121,4 +91,4 @@ body::after {
height: 100vh;
height: 100dvh;
}
-}
+}
\ No newline at end of file
diff --git a/client/style.css b/client/style.css
index b6a2b54..bdfe749 100644
--- a/client/style.css
+++ b/client/style.css
@@ -1,14 +1,14 @@
:root {
- --primary: #00ff41;
- --primary-hover: #33ff6a;
- --bg: #080808;
- --card-bg: rgba(0, 10, 0, 0.92);
- --text: #d4ffd4;
- --text-muted: #4d8c5e;
- --danger: #ff2244;
- --success: #00ff41;
- --glass: rgba(0, 255, 65, 0.03);
- --glass-border: rgba(0, 255, 65, 0.18);
+ --primary: #6366f1;
+ --primary-hover: #4f46e5;
+ --bg: #0f172a;
+ --card-bg: rgba(30, 41, 59, 0.7);
+ --text: #f8fafc;
+ --text-muted: #94a3b8;
+ --danger: #ef4444;
+ --success: #10b981;
+ --glass: rgba(255, 255, 255, 0.05);
+ --glass-border: rgba(255, 255, 255, 0.1);
}
* {