Améliore le visuel de l'avatar Eve — lissage géométrique et couvertures de jointures

- Fusion de vertices plus agressive (corps 0.08, bras 0.07, tête 0.08)
- Matériau laque blanche unifié : emissiveIntensity 0.16, clearcoat 1.0
- Matériau tête dédié : emissiveIntensity 0.28 pour effacer les ombres aux seams
- Collar élargi (tube 0.14), cylindre de cou ajouté, épaulières agrandies (scale Z 0.56)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
MichaelandClaude Sonnet 4.6 committed 2026-05-20 15:18:11 +02:00
commit d77ace03cd
169 files changed
+83033

No files matched your search

+651
View File
@@ -0,0 +1,651 @@
@import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@300;400;500;600;700&family=Outfit:wght@400;500;600;700;800&family=Share+Tech+Mono&display=swap');
:root {
/* Colors: Eve Space Age DARK Theme — Deep Space Night */
--bg-primary: #080d1a; /* Deep space void */
--bg-secondary: #0e1528; /* Dark space panel */
--bg-glass: rgba(14, 21, 40, 0.92);
--bg-glass-active: rgba(20, 30, 58, 0.98);
--border-neon: rgba(0, 216, 255, 0.2);
--border-neon-active: rgba(0, 216, 255, 0.9);
--glow-cyan: 0 0 15px rgba(0, 216, 255, 0.2);
--glow-cyan-active: 0 0 30px rgba(0, 216, 255, 0.6);
--text-primary: #e2f0ff; /* Soft starlight white */
--text-secondary: #8ba4c8; /* Muted nebula blue */
--text-tertiary: #4a6080; /* Deep space dust */
--text-neon: #00e5ff; /* High-vibrancy Eve Cyan — pops on dark */
--accent-cyan: #00d4f5; /* Bright Eve Cyan */
--accent-blue: #2979ff; /* Electric cobalt */
--accent-light: rgba(0, 212, 245, 0.12); /* Subtle glow tint */
--font-title: 'Outfit', sans-serif;
--font-body: 'Space Grotesk', sans-serif;
--font-mono: 'Share Tech Mono', monospace;
--radius-sm: 12px;
--radius-md: 24px;
--radius-lg: 36px; /* Molded curved plastic shell look */
--transition-smooth: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
}
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
body {
font-family: var(--font-body);
background-color: transparent; /* Allows Electron transparency */
color: var(--text-primary);
height: 100vh;
width: 100vw;
overflow: hidden;
display: flex;
justify-content: center;
align-items: center;
user-select: none;
}
/* Custom 70s Analog Scrollbar */
::-webkit-scrollbar {
width: 8px;
}
::-webkit-scrollbar-track {
background: var(--bg-primary);
border-radius: var(--radius-sm);
}
::-webkit-scrollbar-thumb {
background: var(--accent-light);
border: 2px solid var(--bg-primary);
border-radius: var(--radius-sm);
}
::-webkit-scrollbar-thumb:hover {
background: var(--accent-cyan);
}
/* --- SPACE AGE 1970s LAYOUT SYSTEM --- */
.app-container {
display: flex;
flex-direction: column;
height: 100vh;
width: 100vw;
overflow: hidden;
background-color: var(--bg-primary);
/* Vintage technical screen grid with Eve Cyan */
background-image:
linear-gradient(rgba(0, 212, 245, 0.04) 1px, transparent 1px),
linear-gradient(90deg, rgba(0, 212, 245, 0.04) 1px, transparent 1px),
radial-gradient(rgba(0, 212, 245, 0.08) 1px, transparent 1px);
background-size: 40px 40px, 40px 40px, 20px 20px;
background-position: 0 0, 0 0, 10px 10px;
border: 8px solid var(--bg-secondary);
outline: 1px solid rgba(0, 212, 245, 0.15);
box-shadow: inset 0 0 80px rgba(0, 212, 245, 0.04), 0 0 60px rgba(0, 0, 0, 0.6);
transition: var(--transition-smooth);
}
.app-container.transparent-bg {
background-color: transparent;
border-color: rgba(226, 236, 245, 0.95);
}
.app-header {
height: 64px;
min-height: 64px;
border-bottom: 3px solid var(--text-primary);
background-color: var(--bg-secondary);
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 28px;
z-index: 50;
box-shadow: 0 4px 20px rgba(15, 23, 42, 0.03);
}
.app-main {
flex: 1;
display: flex;
flex-direction: row;
overflow: hidden;
position: relative;
background-color: transparent;
}
/* Chat section: Styled like an integrated retro TV monitor */
.chat-section {
width: 58%;
display: flex;
flex-direction: column;
background-color: var(--bg-glass);
border-right: 3px solid var(--text-primary);
z-index: 10;
height: 100%;
}
.messages-container {
flex: 1;
overflow-y: auto;
padding: 28px;
display: flex;
flex-direction: column;
gap: 20px;
position: relative;
}
/* Transparent scanlines overlay to evoke vintage CRT displays without losing readability */
.messages-container::before {
content: " ";
display: block;
position: absolute;
top: 0; left: 0; bottom: 0; right: 0;
background: linear-gradient(rgba(18, 16, 16, 0) 50%, rgba(0, 216, 255, 0.012) 50%), linear-gradient(90deg, rgba(0, 216, 255, 0.003), rgba(0, 255, 200, 0.001), rgba(0, 150, 255, 0.003));
background-size: 100% 4px, 3px 100%;
pointer-events: none;
z-index: 2;
}
.input-container {
padding: 20px 24px;
border-top: 3px solid var(--text-primary);
background-color: var(--bg-secondary);
display: flex;
align-items: center;
gap: 16px;
}
.settings-section {
width: 58%;
display: flex;
flex-direction: column;
background-color: var(--bg-primary);
border-right: 3px solid var(--text-primary);
z-index: 20;
overflow-y: auto;
padding: 32px;
gap: 28px;
height: 100%;
}
/* 3D Model Section: Deep space cockpit */
.eve-section {
width: 42%;
height: 100%;
display: flex;
flex-direction: column;
justify-content: space-between;
align-items: center;
padding: 32px 0;
position: relative;
transition: var(--transition-smooth);
background: radial-gradient(ellipse at 50% 40%, rgba(0, 212, 245, 0.07) 0%, transparent 70%), var(--bg-primary);
}
.eve-section.floating-widget {
width: 100%;
height: 100%;
padding: 20px;
background-color: var(--bg-glass-active);
border: 4px solid var(--text-primary);
border-radius: var(--radius-lg);
box-shadow: var(--glow-cyan-active), 0 10px 25px rgba(255, 85, 0, 0.1);
}
/* Message bubbles: Capsule-shaped pilot styling */
.message-row {
display: flex;
width: 100%;
animation: fadeIn 0.4s ease-out;
}
.message-row.user {
justify-content: flex-end;
}
.message-row.assistant {
justify-content: flex-start;
}
.message-bubble {
max-width: 82%;
padding: 16px 24px;
font-size: 14.5px;
line-height: 1.6;
font-weight: 500;
box-shadow: 0 4px 15px rgba(45, 30, 24, 0.05);
}
.message-bubble.user {
background: linear-gradient(135deg, #005f7a, #1a3a8a);
color: #e8f4ff;
border: 1px solid rgba(0, 212, 245, 0.35);
border-radius: 28px 28px 4px 28px;
box-shadow: 0 0 18px rgba(0, 212, 245, 0.12);
}
.message-bubble.assistant {
background: var(--bg-secondary);
color: var(--text-primary);
border: 1px solid rgba(0, 212, 245, 0.2);
border-radius: 28px 28px 28px 4px;
box-shadow: 0 0 20px rgba(0, 212, 245, 0.06);
}
.message-meta {
display: flex;
align-items: center;
gap: 8px;
font-size: 11px;
font-weight: 800;
text-transform: uppercase;
letter-spacing: 1.5px;
color: var(--accent-cyan);
margin-bottom: 8px;
}
.message-time {
display: block;
font-size: 9px;
text-align: right;
margin-top: 8px;
color: var(--text-tertiary);
font-weight: bold;
}
.message-bubble.user .message-time {
color: rgba(255, 255, 255, 0.7);
}
/* Interactive elements: Capsule / Pill controls */
.glow-input {
background: var(--bg-secondary);
border: 1px solid rgba(0, 212, 245, 0.25);
color: var(--text-primary);
padding: 14px 24px;
border-radius: 30px;
font-family: var(--font-body);
font-weight: 500;
outline: none;
transition: var(--transition-smooth);
width: 100%;
}
.glow-input:focus {
border-color: var(--accent-cyan);
box-shadow: 0 0 20px rgba(0, 212, 245, 0.3);
}
select.glow-input {
cursor: pointer;
appearance: none;
background-image: url("data:image/svg+xml;utf8,<svg fill='%23ff5500' height='24' viewBox='0 0 24 24' width='24' xmlns='http://www.w3.org/2000/svg'><path d='M7 10l5 5 5-5z'/><path d='M0 0h24v24H0z' fill='none'/></svg>");
background-repeat: no-repeat;
background-position: right 16px center;
padding-right: 40px;
}
/* Space Age Pill Buttons */
.neon-btn {
font-family: var(--font-title);
font-weight: 800;
font-size: 13px;
letter-spacing: 1.5px;
text-transform: uppercase;
background: linear-gradient(135deg, var(--accent-cyan), var(--accent-blue));
color: white;
border: 2px solid var(--text-primary);
padding: 12px 28px;
border-radius: 30px; /* Perfect pill shape */
cursor: pointer;
box-shadow: 0 4px 10px rgba(255, 85, 0, 0.2);
transition: var(--transition-smooth);
display: inline-flex;
align-items: center;
justify-content: center;
gap: 8px;
white-space: nowrap;
}
.neon-btn:hover {
transform: translateY(-2px);
box-shadow: 0 6px 15px rgba(255, 85, 0, 0.35);
}
.neon-btn:active {
transform: translateY(0);
}
.neon-btn:disabled {
opacity: 0.5;
transform: none;
cursor: not-allowed;
box-shadow: none;
}
.neon-btn-secondary {
background: var(--bg-secondary);
border: 1px solid rgba(0, 212, 245, 0.3);
color: var(--text-primary);
box-shadow: none;
}
.neon-btn-secondary:hover {
border-color: var(--accent-cyan);
box-shadow: 0 0 12px rgba(0, 212, 245, 0.2);
}
/* Molded dashboard panel styling */
.glass-panel {
background: var(--bg-secondary);
border: 1px solid rgba(0, 212, 245, 0.15);
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
border-radius: var(--radius-md);
transition: var(--transition-smooth);
}
.settings-card {
padding: 24px;
border-radius: var(--radius-md);
background-color: var(--bg-secondary);
border: 1px solid rgba(0, 212, 245, 0.15);
display: flex;
flex-direction: column;
gap: 16px;
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2);
}
.label-title {
display: block;
font-size: 11px;
font-weight: 800;
color: var(--text-secondary);
text-transform: uppercase;
margin-bottom: 8px;
letter-spacing: 1px;
}
/* Layout helpers */
.flex-row {
display: flex;
align-items: center;
gap: 12px;
}
.flex-between {
display: flex;
align-items: center;
justify-content: space-between;
}
.grid-2 {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 16px;
}
.grid-3 {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
gap: 12px;
}
/* Animations */
@keyframes fadeIn {
from { opacity: 0; transform: translateY(8px); }
to { opacity: 1; transform: translateY(0); }
}
@keyframes pulse-led {
0% { opacity: 0.7; filter: drop-shadow(0 0 2px rgba(255, 85, 0, 0.4)); }
50% { opacity: 1; filter: drop-shadow(0 0 8px rgba(255, 85, 0, 0.9)); }
100% { opacity: 0.7; filter: drop-shadow(0 0 2px rgba(255, 85, 0, 0.4)); }
}
.pulsing-led {
animation: pulse-led 2s infinite;
}
@keyframes spin {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
}
.animate-spin {
animation: spin 1.5s linear infinite;
}
/* --- RESPONSIVE ADAPTATIONS & ANTI-OVERFLOW SYSTEMS --- */
/* 1. Prevent text bubble overflows on code blocks or long words */
.message-bubble {
word-break: break-word;
overflow-wrap: anywhere;
}
/* ── Markdown content inside chat bubbles ────────────────────────────────── */
.markdown-content { line-height: 1.65; }
.markdown-content p { margin: 0 0 8px; }
.markdown-content p:last-child { margin-bottom: 0; }
.markdown-content h1, .markdown-content h2, .markdown-content h3,
.markdown-content h4, .markdown-content h5, .markdown-content h6 {
font-family: var(--font-title);
font-weight: 800;
color: var(--text-neon);
margin: 12px 0 6px;
letter-spacing: 0.5px;
}
.markdown-content h1 { font-size: 1.1em; }
.markdown-content h2 { font-size: 1.0em; }
.markdown-content h3 { font-size: 0.95em; }
.markdown-content strong { font-weight: 700; color: var(--text-primary); }
.markdown-content em { font-style: italic; color: var(--text-secondary); }
.markdown-content code {
font-family: var(--font-mono);
font-size: 0.85em;
background: rgba(0,212,245,0.08);
border: 1px solid rgba(0,212,245,0.2);
border-radius: 4px;
padding: 1px 5px;
color: var(--text-neon);
}
.markdown-content pre {
background: rgba(0,0,0,0.35);
border: 1px solid rgba(0,212,245,0.2);
border-radius: 8px;
padding: 12px 16px;
overflow-x: auto;
margin: 8px 0;
}
.markdown-content pre code {
background: none;
border: none;
padding: 0;
color: #a8d8f0;
font-size: 0.82em;
line-height: 1.5;
}
.markdown-content ul, .markdown-content ol {
margin: 6px 0 8px;
padding-left: 20px;
}
.markdown-content li { margin: 3px 0; }
.markdown-content blockquote {
border-left: 3px solid rgba(0,212,245,0.4);
margin: 8px 0;
padding: 4px 12px;
color: var(--text-secondary);
font-style: italic;
}
.markdown-content hr {
border: none;
border-top: 1px solid rgba(0,212,245,0.2);
margin: 10px 0;
}
.markdown-content a {
color: var(--accent-cyan);
text-decoration: underline;
text-underline-offset: 2px;
}
.markdown-content table {
border-collapse: collapse;
width: 100%;
margin: 8px 0;
font-size: 0.88em;
}
.markdown-content th, .markdown-content td {
border: 1px solid rgba(0,212,245,0.2);
padding: 6px 10px;
text-align: left;
}
.markdown-content th {
background: rgba(0,212,245,0.08);
color: var(--text-neon);
font-weight: 700;
}
/* User bubble — override some colors to stay readable on the blue gradient */
.message-bubble.user .markdown-content code { background: rgba(0,0,0,0.25); border-color: rgba(255,255,255,0.2); color: #c8ecff; }
.message-bubble.user .markdown-content blockquote { border-color: rgba(255,255,255,0.3); color: rgba(232,244,255,0.75); }
.message-bubble.user .markdown-content a { color: #c8ecff; }
.message-bubble.user .markdown-content strong { color: #e8f4ff; }
.message-bubble.user .markdown-content em { color: rgba(232,244,255,0.8); }
/* 2. Responsive design for tablets / medium screens */
@media (max-width: 950px) {
.app-header {
padding: 0 16px;
}
.sys-ready-badge {
display: none !important; /* Hide secondary system badge */
}
}
@media (max-width: 850px) {
.app-container {
border-width: 6px; /* Narrower border on smaller windows */
}
.app-header {
height: auto;
min-height: auto;
padding: 10px 16px;
flex-wrap: wrap;
gap: 10px;
}
.app-header h1 {
font-size: 15px !important;
}
.agent-status-badge {
padding: 4px 10px !important;
font-size: 9px !important;
}
.app-main {
flex-direction: column-reverse; /* Flip layout: Avatar on top, Chat/Settings on bottom */
overflow: hidden; /* Prevent global page double-scrollbars */
}
.chat-section, .settings-section {
width: 100% !important;
height: auto !important;
flex: 1; /* Allow content to grow naturally to fill viewport */
min-height: 0; /* Enable flex-child internal scrolling */
border-right: none;
border-top: 3px solid var(--text-primary);
}
.eve-section {
width: 100% !important;
height: 40% !important;
min-height: 240px;
max-height: 320px; /* Keep avatar centered and reasonably sized */
flex-shrink: 0;
padding: 12px 0;
}
.eve-section.floating-widget {
height: 100vh !important;
}
}
/* Intermediate breakpoint: hide secondary header items before full collapse */
@media (max-width: 750px) {
.header-subtitle {
display: none !important; /* Hide // ANALOG SPACE OS to save space */
}
.agent-status-badge {
display: none !important; /* Hide agent receiver status to prevent buttons overlap */
}
}
/* 3. Small Windows & Mobile view */
@media (max-width: 650px) {
.app-header {
justify-content: center;
}
.app-header .flex-row:first-child {
width: 100%;
justify-content: center;
border-bottom: 2px dashed rgba(15, 23, 42, 0.15);
padding-bottom: 6px;
}
.app-header .flex-row:last-child {
width: 100%;
justify-content: space-around;
gap: 8px;
}
.grid-3 {
grid-template-columns: 1fr;
gap: 8px;
}
.grid-2 {
grid-template-columns: 1fr;
gap: 8px;
}
.input-container {
padding: 12px;
gap: 8px;
}
.input-container input {
padding: 10px 16px;
font-size: 13px;
}
.neon-btn {
padding: 10px 16px;
}
.btn-text {
display: none !important; /* Hide "Envoyer" word, keep only icon */
}
.neon-btn svg {
margin: 0 !important;
}
.diag-item-secondary {
display: none !important; /* Hide frequency/transceiver metrics on narrow windows */
}
}
@media (max-width: 480px) {
.neon-title {
display: none !important; /* Hide title completely to maximize space */
}
}