Ecobot_Scoala_Verde/frontend/css/style.css
Stefan Caramizoiu d7a7d2cafd Initial commit
2026-04-01 11:14:26 +03:00

388 lines
7.2 KiB
CSS

* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
background: linear-gradient(135deg, #1a472a 0%, #2d5a27 50%, #1a472a 100%);
min-height: 100vh;
font-family: 'Segoe UI', Tahoma, sans-serif;
display: flex;
justify-content: center;
align-items: center;
color: #e0f0e0;
}
#app {
text-align: center;
padding: 20px;
max-width: 500px;
width: 100%;
position: relative;
}
h1 {
font-size: 2.5em;
color: #7ddf64;
text-shadow: 0 2px 10px rgba(125, 223, 100, 0.3);
margin-bottom: 5px;
}
.subtitle {
color: #a0c8a0;
margin-bottom: 30px;
font-size: 1.1em;
}
#character-canvas {
display: block;
margin: 0 auto 20px;
border-radius: 20px;
background: rgba(0, 0, 0, 0.2);
}
#status {
font-size: 1.1em;
color: #a0c8a0;
margin-bottom: 20px;
min-height: 1.5em;
transition: color 0.3s;
}
#status.active {
color: #7ddf64;
}
#conversation {
margin-bottom: 20px;
min-height: 60px;
}
.bubble {
padding: 12px 18px;
border-radius: 16px;
margin: 8px 0;
max-width: 90%;
text-align: left;
font-size: 0.95em;
line-height: 1.4;
transition: opacity 0.3s;
}
.bubble.hidden {
display: none;
}
.bubble.user {
background: rgba(125, 223, 100, 0.15);
border: 1px solid rgba(125, 223, 100, 0.3);
margin-left: auto;
margin-right: 0;
}
.bubble.bot {
background: rgba(255, 255, 255, 0.1);
border: 1px solid rgba(255, 255, 255, 0.2);
margin-left: 0;
margin-right: auto;
}
#record-btn {
background: linear-gradient(145deg, #4CAF50, #2d7a32);
border: none;
color: white;
padding: 18px 40px;
font-size: 1.1em;
border-radius: 50px;
cursor: pointer;
display: inline-flex;
align-items: center;
gap: 10px;
transition: all 0.2s;
box-shadow: 0 4px 15px rgba(76, 175, 80, 0.3);
user-select: none;
}
#record-btn:hover {
transform: scale(1.05);
box-shadow: 0 6px 20px rgba(76, 175, 80, 0.5);
}
#record-btn:active, #record-btn.recording {
background: linear-gradient(145deg, #f44336, #c62828);
box-shadow: 0 4px 15px rgba(244, 67, 54, 0.4);
transform: scale(0.98);
}
#record-btn.recording #btn-text {
content: "Inregistrez...";
}
#btn-icon, #wake-icon {
font-size: 1.4em;
}
#controls {
display: flex;
flex-direction: column;
gap: 12px;
align-items: center;
}
#wake-btn {
background: linear-gradient(145deg, #1565C0, #0D47A1);
border: none;
color: white;
padding: 14px 30px;
font-size: 1em;
border-radius: 50px;
cursor: pointer;
display: inline-flex;
align-items: center;
gap: 10px;
transition: all 0.2s;
box-shadow: 0 4px 15px rgba(21, 101, 192, 0.3);
user-select: none;
}
#wake-btn:hover {
transform: scale(1.05);
box-shadow: 0 6px 20px rgba(21, 101, 192, 0.5);
}
#wake-btn.listening {
background: linear-gradient(145deg, #E65100, #BF360C);
box-shadow: 0 4px 15px rgba(230, 81, 0, 0.4);
animation: pulse-wake 2s infinite;
}
@keyframes pulse-wake {
0%, 100% { box-shadow: 0 4px 15px rgba(230, 81, 0, 0.4); }
50% { box-shadow: 0 4px 25px rgba(230, 81, 0, 0.7); }
}
/* Settings button */
#settings-btn {
position: absolute;
top: 20px;
right: 20px;
background: rgba(255, 255, 255, 0.1);
border: 1px solid rgba(255, 255, 255, 0.2);
color: #a0c8a0;
font-size: 1.5em;
width: 45px;
height: 45px;
border-radius: 50%;
cursor: pointer;
transition: all 0.2s;
}
#settings-btn:hover {
background: rgba(255, 255, 255, 0.2);
color: #7ddf64;
transform: rotate(30deg);
}
/* Modal */
.modal {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.7);
display: flex;
justify-content: center;
align-items: center;
z-index: 1000;
backdrop-filter: blur(5px);
}
.modal.hidden {
display: none;
}
.modal-content {
background: linear-gradient(145deg, #1e3a1e, #2a4a2a);
border: 1px solid rgba(125, 223, 100, 0.2);
border-radius: 20px;
padding: 30px;
max-width: 450px;
width: 90%;
box-shadow: 0 10px 40px rgba(0, 0, 0, 0.5);
}
.modal-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 25px;
}
.modal-header h2 {
color: #7ddf64;
font-size: 1.4em;
}
.modal-close {
background: none;
border: none;
color: #a0c8a0;
font-size: 1.8em;
cursor: pointer;
padding: 0 5px;
line-height: 1;
}
.modal-close:hover {
color: #f44336;
}
.setting-group {
margin-bottom: 25px;
}
.setting-group label {
display: block;
color: #a0c8a0;
font-size: 0.9em;
margin-bottom: 8px;
text-transform: uppercase;
letter-spacing: 1px;
}
.setting-group select {
width: 100%;
padding: 10px 12px;
background: rgba(0, 0, 0, 0.3);
border: 1px solid rgba(125, 223, 100, 0.3);
border-radius: 10px;
color: #e0f0e0;
font-size: 0.95em;
cursor: pointer;
outline: none;
}
.setting-group select:focus {
border-color: #7ddf64;
}
.setting-group select option {
background: #1e3a1e;
color: #e0f0e0;
}
.sub-label {
margin-top: 12px;
font-size: 0.85em !important;
text-transform: none !important;
letter-spacing: 0 !important;
}
#gain-value {
color: #7ddf64;
font-weight: bold;
}
.slider {
width: 100%;
height: 6px;
-webkit-appearance: none;
appearance: none;
background: rgba(0, 0, 0, 0.3);
border-radius: 3px;
outline: none;
margin: 8px 0;
}
.slider::-webkit-slider-thumb {
-webkit-appearance: none;
appearance: none;
width: 20px;
height: 20px;
border-radius: 50%;
background: #7ddf64;
cursor: pointer;
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3);
}
.slider::-moz-range-thumb {
width: 20px;
height: 20px;
border-radius: 50%;
background: #7ddf64;
cursor: pointer;
border: none;
}
.test-row {
display: flex;
align-items: center;
gap: 12px;
margin-top: 10px;
}
.test-btn {
background: rgba(76, 175, 80, 0.2);
border: 1px solid rgba(76, 175, 80, 0.4);
color: #7ddf64;
padding: 8px 16px;
border-radius: 8px;
cursor: pointer;
font-size: 0.85em;
white-space: nowrap;
transition: all 0.2s;
}
.test-btn:hover {
background: rgba(76, 175, 80, 0.35);
}
.test-btn.active {
background: rgba(244, 67, 54, 0.2);
border-color: rgba(244, 67, 54, 0.4);
color: #f44336;
}
.level-bar {
flex: 1;
height: 12px;
background: rgba(0, 0, 0, 0.3);
border-radius: 6px;
overflow: hidden;
border: 1px solid rgba(255, 255, 255, 0.1);
}
.level-fill {
height: 100%;
width: 0%;
background: linear-gradient(90deg, #4CAF50, #7ddf64, #f44336);
border-radius: 6px;
transition: width 0.05s;
}
.test-status {
color: #a0c8a0;
font-size: 0.8em;
margin-top: 6px;
min-height: 1.2em;
}
.save-btn {
width: 100%;
padding: 12px;
background: linear-gradient(145deg, #4CAF50, #2d7a32);
border: none;
color: white;
font-size: 1em;
border-radius: 10px;
cursor: pointer;
transition: all 0.2s;
box-shadow: 0 4px 15px rgba(76, 175, 80, 0.3);
}
.save-btn:hover {
transform: scale(1.02);
box-shadow: 0 6px 20px rgba(76, 175, 80, 0.5);
}