diff --git a/templates/index.html b/templates/index.html
index cf81b53..e98664c 100644
--- a/templates/index.html
+++ b/templates/index.html
@@ -81,32 +81,6 @@
object-fit:cover;
}
- .sign-section{
-
- flex:1;
-
- background:#111827;
-
- border-radius:20px;
-
- border:3px solid #2563eb;
-
- display:flex;
-
- align-items:center;
-
- justify-content:center;
-
- overflow:hidden;
- }
-
- .sign-section img{
-
- width:100%;
- height:100%;
- object-fit:contain;
- }
-
.bottom-section{
margin-top:15px;
@@ -201,6 +175,227 @@
}
}
+ /* Two-Way Accessibility Features */
+ .sign-section {
+ flex: 1;
+ background: #111827;
+ border-radius: 20px;
+ border: 3px solid #2563eb;
+ display: flex;
+ flex-direction: column;
+ align-items: stretch;
+ justify-content: flex-start;
+ overflow: hidden;
+ }
+
+ .custom-tabs {
+ border-bottom: 2px solid #1e293b;
+ padding: 5px 10px 0;
+ background: #0f172a;
+ display: flex;
+ gap: 10px;
+ }
+ .custom-tabs .nav-link {
+ color: #9ca3af;
+ border: none;
+ font-weight: 600;
+ padding: 8px 16px;
+ background: transparent;
+ font-size: 0.95rem;
+ transition: all 0.2s ease-in-out;
+ cursor: pointer;
+ outline: none;
+ }
+ .custom-tabs .nav-link:hover {
+ color: #f3f4f6;
+ }
+ .custom-tabs .nav-link.active {
+ color: #38bdf8;
+ border-bottom: 3px solid #38bdf8;
+ border-radius: 0;
+ }
+
+ .tab-pane {
+ display: none;
+ width: 100%;
+ height: 100%;
+ }
+ .tab-pane.show.active {
+ display: flex;
+ flex-direction: column;
+ }
+
+ .translator-container {
+ display: flex;
+ flex-direction: column;
+ height: 100%;
+ min-height: 0;
+ background: #111827;
+ }
+
+ .btn-mic {
+ width: 42px;
+ height: 42px;
+ border-radius: 50%;
+ padding: 0;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ transition: all 0.2s ease;
+ color: #ef4444;
+ border: 2px solid #ef4444;
+ background: transparent;
+ cursor: pointer;
+ }
+ .btn-mic:hover {
+ background: rgba(239, 68, 68, 0.1);
+ }
+ .btn-mic.listening {
+ background-color: #ef4444;
+ color: white;
+ border-color: #ef4444;
+ box-shadow: 0 0 0 0 rgba(239, 68, 68, 0.7);
+ animation: pulse-mic 1.5s infinite;
+ }
+ @keyframes pulse-mic {
+ 0% {
+ transform: scale(0.95);
+ box-shadow: 0 0 0 0 rgba(239, 68, 68, 0.7);
+ }
+ 70% {
+ transform: scale(1);
+ box-shadow: 0 0 0 10px rgba(239, 68, 68, 0);
+ }
+ 100% {
+ transform: scale(0.95);
+ box-shadow: 0 0 0 0 rgba(239, 68, 68, 0);
+ }
+ }
+
+ .transcript-box {
+ font-family: 'Inter', system-ui, -apple-system, sans-serif;
+ background: #1e293b;
+ color: #f1f5f9;
+ min-height: 55px;
+ max-height: 55px;
+ overflow-y: auto;
+ border: 1px solid #334155;
+ border-radius: 10px;
+ padding: 8px 12px;
+ font-size: 0.9rem;
+ text-align: left;
+ }
+
+ .sign-translation-wrapper {
+ background: #1e293b;
+ border: 1px solid #334155;
+ border-radius: 12px;
+ padding: 12px;
+ display: flex;
+ flex-direction: column;
+ min-height: 0;
+ flex-grow: 1;
+ }
+
+ .sign-gallery {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 8px;
+ overflow-y: auto;
+ align-content: flex-start;
+ flex-grow: 1;
+ padding-top: 4px;
+ }
+
+ .sign-card {
+ width: 55px;
+ height: 75px;
+ background: #0f172a;
+ border: 1px solid #475569;
+ border-radius: 8px;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: space-between;
+ padding: 4px;
+ box-shadow: 0 2px 4px rgba(0,0,0,0.2);
+ animation: popIn 0.25s cubic-bezier(0.175, 0.885, 0.32, 1.275) forwards;
+ }
+ .sign-card img {
+ width: 100%;
+ height: 70%;
+ object-fit: contain;
+ }
+ .sign-card .sign-label {
+ font-size: 0.7rem;
+ font-weight: bold;
+ color: #38bdf8;
+ margin-top: 2px;
+ }
+
+ .sign-space-card {
+ width: 30px;
+ height: 75px;
+ background: rgba(71, 85, 105, 0.15);
+ border: 1px dashed #475569;
+ border-radius: 8px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ color: #64748b;
+ font-weight: bold;
+ font-size: 0.85rem;
+ }
+
+ @keyframes popIn {
+ from {
+ opacity: 0;
+ transform: scale(0.8);
+ }
+ to {
+ opacity: 1;
+ transform: scale(1);
+ }
+ }
+
+ .tts-settings-toggle {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ width: 44px;
+ height: 44px;
+ border-radius: 12px;
+ margin: 5px;
+ border: 2px solid #0dcaf0;
+ background: transparent;
+ color: #0dcaf0;
+ cursor: pointer;
+ transition: all 0.2s ease;
+ }
+ .tts-settings-toggle:hover, .tts-settings-toggle.active {
+ background: #0dcaf0;
+ color: #000;
+ }
+
+ .tts-settings-panel {
+ background: #1e293b;
+ border: 1px solid #334155;
+ border-radius: 12px;
+ padding: 15px;
+ margin-top: 15px;
+ text-align: left;
+ box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
+ }
+ .tts-settings-panel .form-label {
+ color: #94a3b8;
+ font-size: 0.8rem;
+ font-weight: 600;
+ margin-bottom: 6px;
+ }
+ .tts-settings-panel .form-range {
+ accent-color: #0dcaf0;
+ }
+
@@ -227,12 +422,46 @@
-
-
 }})
-
+
+
+
+
+
+
+
+
+
+
 }})
+
+
+
+
+
+
+
Speech Engine: Ready
+
+
+
+ Click the microphone icon to begin speaking. Spoken words will translate into sign shapes below.
+
+
+
ASL Translation Gallery:
+
+
+
+
+
+
+
@@ -240,58 +469,94 @@
-
- Current Letter :
-
+ Current Letter:
+
Waiting...
-
-
- Word :
-
+ Word:
+
...
-
-
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Keyboard Shortcuts
+ A Add Letter
+ U Undo
+ R Reset
+ S Speak
+
-
+