SamiKoen commited on
Commit
e912d6e
·
1 Parent(s): b3e4332

Trek-branded modern UI: red accent, Rajdhani type, futuristic frame

Browse files
Files changed (1) hide show
  1. static/index.html +169 -40
static/index.html CHANGED
@@ -4,107 +4,236 @@
4
  <meta charset="UTF-8" />
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
  <title>BF Realtime — Trek Sesli Asistan</title>
 
 
 
7
  <style>
 
 
 
 
 
 
 
 
 
 
8
  * { box-sizing: border-box; }
9
  html, body { margin: 0; height: 100%; }
10
  body {
11
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
12
- background: radial-gradient(ellipse at top, #1e1b4b, #0f0c29 60%, #0a0820);
 
 
 
13
  color: #fff;
14
  min-height: 100vh;
15
  display: flex;
16
  flex-direction: column;
17
  align-items: center;
18
- padding: 20px 16px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19
  }
20
- h1 { margin: 4px 0; font-size: 1.4rem; opacity: 0.95; font-weight: 600; }
21
- .subtitle { opacity: 0.55; margin-bottom: 16px; font-size: 0.85rem; }
22
 
23
  .stage {
24
  position: relative;
25
- width: min(560px, 95vw);
26
  aspect-ratio: 3 / 2;
27
- margin-bottom: 20px;
 
28
  }
29
  #avatarImg {
30
  width: 100%;
31
  height: 100%;
32
  object-fit: contain;
33
- border-radius: 24px;
34
- background: linear-gradient(160deg, #2a2750, #1a1740);
35
- box-shadow: 0 20px 60px rgba(0,0,0,0.5);
36
  display: block;
37
  transition: transform 0.18s ease-out, filter 0.25s;
 
 
 
38
  }
39
  .ring {
40
  position: absolute;
41
- inset: -10px;
42
- border-radius: 28px;
43
- border: 2px solid rgba(99,102,241,0.4);
44
  pointer-events: none;
45
  transition: border-color 0.3s, box-shadow 0.3s, transform 0.12s ease-out;
46
  }
47
  .ring.active {
48
- border-color: rgba(52,211,153,0.7);
49
- box-shadow: 0 0 30px rgba(52,211,153,0.35);
50
  }
 
 
 
 
 
 
 
 
 
 
 
 
51
 
52
  .panel {
53
  width: 100%;
54
- max-width: 420px;
55
- background: rgba(255,255,255,0.06);
56
- backdrop-filter: blur(10px);
57
- border: 1px solid rgba(255,255,255,0.1);
58
- border-radius: 16px;
59
- padding: 18px 20px;
60
  text-align: center;
 
 
 
 
 
 
 
 
 
61
  }
62
  .status {
63
- padding: 6px 14px;
64
- border-radius: 8px;
65
- background: rgba(0,0,0,0.3);
 
 
66
  font-size: 0.85rem;
67
- margin-bottom: 14px;
 
 
68
  display: inline-block;
69
  }
70
- .status.connected { color: #34d399; }
71
- .status.connecting { color: #fbbf24; }
72
- .status.disconnected { color: #f87171; }
73
- .controls { display: flex; gap: 10px; justify-content: center; flex-wrap: wrap; }
74
  button {
75
- padding: 11px 22px;
76
  border: none;
77
- border-radius: 10px;
78
- background: #4f46e5;
79
  color: #fff;
 
80
  font-size: 0.95rem;
 
 
 
81
  cursor: pointer;
82
  transition: all 0.2s;
83
- font-weight: 500;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
84
  }
85
- button:hover:not(:disabled) { background: #6366f1; transform: translateY(-1px); }
86
- button:disabled { background: #374151; cursor: not-allowed; opacity: 0.5; }
87
- button.danger { background: #dc2626; }
88
- button.danger:hover:not(:disabled) { background: #ef4444; }
89
  </style>
90
  </head>
91
  <body>
92
- <h1>Trek Sesli Asistan</h1>
93
- <div class="subtitle">Bisiklet, stok ve fiyat sorularinizi sorun</div>
 
 
 
 
94
 
95
  <div class="stage">
96
  <img id="avatarImg" src="/static/assistant.png" alt="Trek Asistan" />
97
  <div id="ring" class="ring"></div>
 
 
 
 
98
  </div>
99
 
100
  <div class="panel">
101
- <div id="status" class="status disconnected">● Baglanti yok</div>
102
  <div class="controls">
103
  <button id="btnConnect">Konusmaya Basla</button>
104
  <button id="btnDisconnect" class="danger" disabled>Bitir</button>
105
  </div>
106
  </div>
107
 
 
 
108
  <script>
109
  const SAMPLE_RATE = 24000;
110
 
 
4
  <meta charset="UTF-8" />
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
  <title>BF Realtime — Trek Sesli Asistan</title>
7
+ <link rel="preconnect" href="https://fonts.googleapis.com" />
8
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
9
+ <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Rajdhani:wght@500;600;700&display=swap" rel="stylesheet" />
10
  <style>
11
+ :root {
12
+ --trek-red: #E2231A;
13
+ --trek-red-glow: rgba(226, 35, 26, 0.55);
14
+ --bg-0: #050608;
15
+ --bg-1: #0b0d12;
16
+ --bg-2: #11141b;
17
+ --line: rgba(255,255,255,0.08);
18
+ --line-strong: rgba(255,255,255,0.18);
19
+ --tech-cyan: #6fb6ff;
20
+ }
21
  * { box-sizing: border-box; }
22
  html, body { margin: 0; height: 100%; }
23
  body {
24
+ font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
25
+ background:
26
+ radial-gradient(1200px 600px at 50% -10%, rgba(226,35,26,0.10), transparent 60%),
27
+ radial-gradient(800px 500px at 90% 110%, rgba(111,182,255,0.08), transparent 60%),
28
+ linear-gradient(180deg, var(--bg-1) 0%, var(--bg-0) 100%);
29
  color: #fff;
30
  min-height: 100vh;
31
  display: flex;
32
  flex-direction: column;
33
  align-items: center;
34
+ padding: 28px 16px 40px;
35
+ letter-spacing: 0.01em;
36
+ }
37
+ body::before {
38
+ content: '';
39
+ position: fixed;
40
+ inset: 0;
41
+ background-image:
42
+ linear-gradient(rgba(255,255,255,0.025) 1px, transparent 1px),
43
+ linear-gradient(90deg, rgba(255,255,255,0.025) 1px, transparent 1px);
44
+ background-size: 48px 48px;
45
+ pointer-events: none;
46
+ mask-image: radial-gradient(ellipse at center, #000 30%, transparent 75%);
47
+ z-index: 0;
48
+ }
49
+
50
+ .brand {
51
+ display: flex;
52
+ align-items: center;
53
+ gap: 12px;
54
+ margin-bottom: 6px;
55
+ z-index: 1;
56
+ }
57
+ .brand .mark {
58
+ font-family: 'Rajdhani', sans-serif;
59
+ font-weight: 700;
60
+ font-size: 1.6rem;
61
+ letter-spacing: 0.18em;
62
+ color: #fff;
63
+ background: var(--trek-red);
64
+ padding: 4px 14px 3px;
65
+ border-radius: 3px;
66
+ box-shadow: 0 6px 24px rgba(226,35,26,0.35);
67
+ }
68
+ .brand .label {
69
+ font-family: 'Rajdhani', sans-serif;
70
+ font-weight: 600;
71
+ font-size: 0.95rem;
72
+ letter-spacing: 0.32em;
73
+ text-transform: uppercase;
74
+ color: rgba(255,255,255,0.7);
75
+ }
76
+ h1 {
77
+ margin: 8px 0 4px;
78
+ font-family: 'Rajdhani', sans-serif;
79
+ font-size: 2rem;
80
+ font-weight: 700;
81
+ letter-spacing: 0.04em;
82
+ text-transform: uppercase;
83
+ z-index: 1;
84
+ }
85
+ h1 .accent { color: var(--trek-red); }
86
+ .subtitle {
87
+ opacity: 0.55;
88
+ margin-bottom: 22px;
89
+ font-size: 0.8rem;
90
+ letter-spacing: 0.18em;
91
+ text-transform: uppercase;
92
+ z-index: 1;
93
  }
 
 
94
 
95
  .stage {
96
  position: relative;
97
+ width: min(620px, 96vw);
98
  aspect-ratio: 3 / 2;
99
+ margin-bottom: 24px;
100
+ z-index: 1;
101
  }
102
  #avatarImg {
103
  width: 100%;
104
  height: 100%;
105
  object-fit: contain;
106
+ border-radius: 4px;
107
+ background: linear-gradient(160deg, #0d1118, #05070a);
 
108
  display: block;
109
  transition: transform 0.18s ease-out, filter 0.25s;
110
+ box-shadow:
111
+ 0 20px 70px rgba(0,0,0,0.6),
112
+ inset 0 0 0 1px var(--line);
113
  }
114
  .ring {
115
  position: absolute;
116
+ inset: -8px;
117
+ border-radius: 8px;
118
+ border: 1px solid var(--line-strong);
119
  pointer-events: none;
120
  transition: border-color 0.3s, box-shadow 0.3s, transform 0.12s ease-out;
121
  }
122
  .ring.active {
123
+ border-color: var(--trek-red);
124
+ box-shadow: 0 0 40px var(--trek-red-glow);
125
  }
126
+ /* Kose aksanlari — futuristic frame */
127
+ .corner {
128
+ position: absolute;
129
+ width: 22px;
130
+ height: 22px;
131
+ border: 2px solid var(--trek-red);
132
+ pointer-events: none;
133
+ }
134
+ .corner.tl { top: -10px; left: -10px; border-right: none; border-bottom: none; }
135
+ .corner.tr { top: -10px; right: -10px; border-left: none; border-bottom: none; }
136
+ .corner.bl { bottom: -10px; left: -10px; border-right: none; border-top: none; }
137
+ .corner.br { bottom: -10px; right: -10px; border-left: none; border-top: none; }
138
 
139
  .panel {
140
  width: 100%;
141
+ max-width: 620px;
142
+ background: linear-gradient(180deg, rgba(255,255,255,0.04), rgba(255,255,255,0.015));
143
+ backdrop-filter: blur(14px);
144
+ border: 1px solid var(--line);
145
+ border-radius: 4px;
146
+ padding: 22px 24px;
147
  text-align: center;
148
+ position: relative;
149
+ z-index: 1;
150
+ }
151
+ .panel::before {
152
+ content: '';
153
+ position: absolute;
154
+ top: 0; left: 18px; right: 18px;
155
+ height: 1px;
156
+ background: linear-gradient(90deg, transparent, var(--trek-red), transparent);
157
  }
158
  .status {
159
+ padding: 7px 16px;
160
+ border-radius: 2px;
161
+ background: rgba(0,0,0,0.4);
162
+ border: 1px solid var(--line);
163
+ font-family: 'Rajdhani', sans-serif;
164
  font-size: 0.85rem;
165
+ letter-spacing: 0.18em;
166
+ text-transform: uppercase;
167
+ margin-bottom: 18px;
168
  display: inline-block;
169
  }
170
+ .status.connected { color: #34d399; border-color: rgba(52,211,153,0.4); }
171
+ .status.connecting { color: #fbbf24; border-color: rgba(251,191,36,0.4); }
172
+ .status.disconnected { color: #f87171; border-color: rgba(248,113,113,0.4); }
173
+ .controls { display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; }
174
  button {
175
+ padding: 13px 28px;
176
  border: none;
177
+ border-radius: 2px;
178
+ background: var(--trek-red);
179
  color: #fff;
180
+ font-family: 'Rajdhani', sans-serif;
181
  font-size: 0.95rem;
182
+ font-weight: 700;
183
+ letter-spacing: 0.18em;
184
+ text-transform: uppercase;
185
  cursor: pointer;
186
  transition: all 0.2s;
187
+ position: relative;
188
+ overflow: hidden;
189
+ box-shadow: 0 6px 20px rgba(226,35,26,0.3);
190
+ }
191
+ button:hover:not(:disabled) {
192
+ background: #ff2e23;
193
+ transform: translateY(-2px);
194
+ box-shadow: 0 10px 30px rgba(226,35,26,0.5);
195
+ }
196
+ button:disabled { background: #1f2329; cursor: not-allowed; opacity: 0.5; box-shadow: none; }
197
+ button.danger { background: transparent; color: #fff; border: 1px solid var(--line-strong); box-shadow: none; }
198
+ button.danger:hover:not(:disabled) { background: rgba(255,255,255,0.06); border-color: #fff; transform: translateY(-2px); }
199
+
200
+ .footer {
201
+ margin-top: 22px;
202
+ font-size: 0.7rem;
203
+ letter-spacing: 0.25em;
204
+ text-transform: uppercase;
205
+ color: rgba(255,255,255,0.3);
206
+ z-index: 1;
207
  }
 
 
 
 
208
  </style>
209
  </head>
210
  <body>
211
+ <div class="brand">
212
+ <span class="mark">TREK</span>
213
+ <span class="label">AI Assistant</span>
214
+ </div>
215
+ <h1>Sesli <span class="accent">Asistan</span></h1>
216
+ <div class="subtitle">Bisiklet · Stok · Fiyat · Anlik Yanit</div>
217
 
218
  <div class="stage">
219
  <img id="avatarImg" src="/static/assistant.png" alt="Trek Asistan" />
220
  <div id="ring" class="ring"></div>
221
+ <span class="corner tl"></span>
222
+ <span class="corner tr"></span>
223
+ <span class="corner bl"></span>
224
+ <span class="corner br"></span>
225
  </div>
226
 
227
  <div class="panel">
228
+ <div id="status" class="status disconnected">● Baglanti Yok</div>
229
  <div class="controls">
230
  <button id="btnConnect">Konusmaya Basla</button>
231
  <button id="btnDisconnect" class="danger" disabled>Bitir</button>
232
  </div>
233
  </div>
234
 
235
+ <div class="footer">Powered by Trek · Realtime AI</div>
236
+
237
  <script>
238
  const SAMPLE_RATE = 24000;
239