Skip to content

Commit bf86cb7

Browse files
feat(web): redesign landing page with modern 2026 UI
1 parent d8ca2ed commit bf86cb7

2 files changed

Lines changed: 407 additions & 4 deletions

File tree

src/apps/web/app/globals.css

Lines changed: 252 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,9 +149,261 @@ textarea {
149149
padding: 1.1rem;
150150
}
151151

152+
.lq-landing .panel {
153+
overflow: hidden;
154+
}
155+
156+
.lq-hero-panel {
157+
position: relative;
158+
padding: 1.25rem;
159+
background:
160+
radial-gradient(circle at 84% 18%, rgba(32, 154, 117, 0.16), transparent 35%),
161+
radial-gradient(circle at 16% 92%, rgba(188, 138, 10, 0.14), transparent 28%),
162+
linear-gradient(136deg, rgba(255, 255, 255, 0.98), rgba(247, 252, 248, 0.92));
163+
}
164+
165+
.lq-hero-grid {
166+
display: grid;
167+
grid-template-columns: 1.1fr 0.9fr;
168+
gap: 1rem;
169+
align-items: start;
170+
}
171+
172+
.lq-badge {
173+
display: inline-flex;
174+
align-items: center;
175+
gap: 0.45rem;
176+
border-radius: 999px;
177+
border: 1px solid rgba(31, 143, 78, 0.32);
178+
background: rgba(31, 143, 78, 0.08);
179+
padding: 0.34rem 0.72rem;
180+
font-size: 0.78rem;
181+
font-weight: 700;
182+
letter-spacing: 0.03em;
183+
}
184+
185+
.lq-hero-title {
186+
margin: 0.9rem 0 0.72rem;
187+
max-width: 12.5ch;
188+
font-size: clamp(2.1rem, 5vw, 4rem);
189+
line-height: 0.98;
190+
letter-spacing: -0.02em;
191+
}
192+
193+
.lq-hero-subtitle {
194+
margin: 0;
195+
max-width: 60ch;
196+
color: var(--muted);
197+
line-height: 1.65;
198+
font-size: 1.02rem;
199+
}
200+
201+
.lq-hero-cta-row {
202+
display: flex;
203+
flex-wrap: wrap;
204+
gap: 0.65rem;
205+
margin-top: 1rem;
206+
}
207+
208+
.lq-terminal {
209+
border: 1px solid rgba(20, 33, 24, 0.14);
210+
border-radius: 1rem;
211+
background: linear-gradient(180deg, #111d16, #17261e);
212+
color: #e4f2e7;
213+
box-shadow: 0 30px 70px -38px rgba(20, 33, 24, 0.7);
214+
}
215+
216+
.lq-terminal-head {
217+
display: flex;
218+
align-items: center;
219+
gap: 0.75rem;
220+
border-bottom: 1px solid rgba(228, 242, 231, 0.12);
221+
padding: 0.62rem 0.8rem;
222+
font-size: 0.75rem;
223+
color: rgba(228, 242, 231, 0.75);
224+
}
225+
226+
.lq-dots {
227+
display: flex;
228+
gap: 0.35rem;
229+
}
230+
231+
.lq-dots span {
232+
width: 0.55rem;
233+
height: 0.55rem;
234+
border-radius: 50%;
235+
background: rgba(228, 242, 231, 0.45);
236+
}
237+
238+
.lq-terminal-body {
239+
padding: 0.72rem 0.85rem 0.85rem;
240+
}
241+
242+
.lq-terminal-body p {
243+
margin: 0;
244+
font-size: 0.8rem;
245+
font-family: "IBM Plex Mono", "Consolas", monospace;
246+
line-height: 1.62;
247+
}
248+
249+
.lq-terminal-highlight {
250+
color: #62e799;
251+
}
252+
253+
.lq-proof-grid {
254+
margin-top: 0.9rem;
255+
display: grid;
256+
grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
257+
gap: 0.62rem;
258+
}
259+
260+
.lq-proof-card {
261+
border: 1px solid var(--line);
262+
border-radius: 0.85rem;
263+
padding: 0.72rem;
264+
background: rgba(255, 255, 255, 0.72);
265+
}
266+
267+
.lq-proof-card[data-tone="green"] {
268+
border-color: rgba(31, 143, 78, 0.28);
269+
background: linear-gradient(160deg, rgba(255, 255, 255, 0.92), rgba(232, 246, 237, 0.75));
270+
}
271+
272+
.lq-proof-card[data-tone="amber"] {
273+
border-color: rgba(188, 138, 10, 0.28);
274+
background: linear-gradient(160deg, rgba(255, 255, 255, 0.92), rgba(251, 242, 222, 0.75));
275+
}
276+
277+
.lq-proof-value {
278+
font-size: 1.12rem;
279+
font-weight: 700;
280+
}
281+
282+
.lq-proof-label {
283+
margin-top: 0.12rem;
284+
color: var(--muted);
285+
font-size: 0.8rem;
286+
}
287+
288+
.lq-section-gap {
289+
margin-top: 1rem;
290+
}
291+
292+
.lq-section-head p {
293+
margin: 0;
294+
color: var(--muted);
295+
text-transform: uppercase;
296+
font-size: 0.76rem;
297+
letter-spacing: 0.08em;
298+
font-weight: 700;
299+
}
300+
301+
.lq-section-head h2 {
302+
margin: 0.32rem 0 0;
303+
font-size: clamp(1.25rem, 2vw, 1.7rem);
304+
}
305+
306+
.lq-feature-grid {
307+
margin-top: 0.72rem;
308+
display: grid;
309+
grid-template-columns: repeat(auto-fit, minmax(255px, 1fr));
310+
gap: 0.78rem;
311+
}
312+
313+
.lq-feature-card {
314+
padding: 0.95rem;
315+
transition: transform 170ms ease, box-shadow 170ms ease;
316+
}
317+
318+
.lq-feature-card:hover {
319+
transform: translateY(-2px);
320+
box-shadow: 0 22px 34px -28px rgba(20, 33, 24, 0.45);
321+
}
322+
323+
.lq-feature-icon {
324+
width: 2.15rem;
325+
height: 2.15rem;
326+
border-radius: 0.65rem;
327+
display: grid;
328+
place-items: center;
329+
margin-bottom: 0.68rem;
330+
border: 1px solid rgba(31, 143, 78, 0.24);
331+
background: rgba(31, 143, 78, 0.1);
332+
}
333+
334+
.lq-feature-card h3 {
335+
margin: 0;
336+
font-size: 1.03rem;
337+
}
338+
339+
.lq-feature-card p {
340+
margin: 0.42rem 0 0;
341+
color: var(--muted);
342+
font-size: 0.93rem;
343+
line-height: 1.58;
344+
}
345+
346+
.lq-flow-panel {
347+
padding: 1rem;
348+
}
349+
350+
.lq-flow-grid {
351+
display: grid;
352+
gap: 0.45rem;
353+
}
354+
355+
.lq-flow-step {
356+
display: grid;
357+
grid-template-columns: auto 1fr;
358+
gap: 0.7rem;
359+
align-items: center;
360+
padding: 0.62rem 0.7rem;
361+
border-radius: 0.78rem;
362+
border: 1px solid var(--line);
363+
background: #f8fbf6;
364+
}
365+
366+
.lq-flow-index {
367+
font-size: 0.76rem;
368+
font-weight: 700;
369+
letter-spacing: 0.08em;
370+
color: var(--muted);
371+
}
372+
373+
.lq-reveal-up {
374+
animation: lqRevealUp 450ms ease both;
375+
}
376+
377+
.lq-delay-1 {
378+
animation-delay: 70ms;
379+
}
380+
381+
.lq-delay-2 {
382+
animation-delay: 140ms;
383+
}
384+
385+
@keyframes lqRevealUp {
386+
from {
387+
opacity: 0;
388+
transform: translateY(12px);
389+
}
390+
to {
391+
opacity: 1;
392+
transform: translateY(0);
393+
}
394+
}
395+
152396
@media (max-width: 768px) {
153397
.page-shell {
154398
width: min(640px, 94vw);
155399
padding-top: 1rem;
156400
}
401+
402+
.lq-hero-grid {
403+
grid-template-columns: 1fr;
404+
}
405+
406+
.lq-hero-title {
407+
max-width: 13ch;
408+
}
157409
}

0 commit comments

Comments
 (0)