File size: 37,673 Bytes
b5d621a
 
0334723
 
 
 
 
 
 
b5d621a
 
 
 
0334723
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b5d621a
0334723
 
 
b5d621a
0334723
 
 
 
 
 
 
 
 
 
 
 
 
 
b5d621a
 
0334723
 
 
 
 
 
 
b5d621a
 
 
 
0334723
 
b5d621a
0334723
 
b5d621a
 
0334723
 
 
 
b5d621a
 
 
 
0334723
 
 
 
 
 
b5d621a
0334723
8bfe920
0334723
b5d621a
8bfe920
 
 
 
 
 
 
b5d621a
8bfe920
 
0334723
8bfe920
 
 
0334723
 
8bfe920
 
 
0334723
8bfe920
 
0334723
 
 
8bfe920
 
 
 
 
 
 
 
 
 
b5d621a
0334723
 
 
b5d621a
0334723
 
 
 
 
 
 
 
 
b5d621a
0334723
b5d621a
 
 
0334723
 
b5d621a
0334723
 
b5d621a
0334723
4fb152a
 
0334723
b5d621a
0334723
b5d621a
4fb152a
0334723
4fb152a
0334723
 
b5d621a
0334723
 
b5d621a
0334723
 
 
b5d621a
905dc3f
b5d621a
8bfe920
 
 
 
 
4fb152a
8bfe920
4fb152a
905dc3f
 
0334723
905dc3f
0334723
 
905dc3f
0334723
 
 
 
 
 
 
 
8bfe920
 
 
 
 
 
 
 
 
 
 
 
 
 
0334723
8bfe920
0334723
8bfe920
0334723
b5d621a
0334723
 
 
 
 
8bfe920
 
0334723
8bfe920
 
0334723
b5d621a
0334723
 
 
8bfe920
 
0334723
 
 
905dc3f
0334723
 
905dc3f
0334723
 
905dc3f
8bfe920
 
 
0334723
905dc3f
0334723
 
 
 
 
 
 
 
905dc3f
0334723
 
 
 
 
 
 
 
 
 
905dc3f
0334723
 
 
 
 
 
 
 
 
 
905dc3f
0334723
 
 
 
 
 
 
 
 
 
905dc3f
0334723
 
 
 
 
 
 
905dc3f
8bfe920
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
0334723
 
 
905dc3f
 
0334723
 
 
 
905dc3f
0334723
 
 
 
b5d621a
0334723
 
 
b5d621a
 
 
0334723
b5d621a
0334723
 
b5d621a
0334723
b5d621a
 
0334723
b5d621a
0334723
 
 
 
b5d621a
 
0334723
 
 
 
 
 
b5d621a
0334723
 
 
 
 
b5d621a
0334723
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b5d621a
0334723
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b5d621a
0334723
 
 
 
 
 
 
 
b5d621a
0334723
 
 
 
 
b5d621a
0334723
 
 
 
 
 
b5d621a
0334723
4fb152a
0334723
 
 
b5d621a
0334723
 
 
 
 
 
 
 
b5d621a
 
0334723
b5d621a
0334723
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b5d621a
0334723
b5d621a
0334723
 
b5d621a
 
0334723
b5d621a
 
 
 
 
 
0334723
 
 
 
b5d621a
0334723
 
 
 
 
b5d621a
0334723
b5d621a
0334723
 
 
 
 
 
b5d621a
0334723
b5d621a
 
0334723
8bfe920
0334723
 
 
 
b5d621a
 
0334723
b5d621a
a99ecf6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
/* =====================================================================
   Codingo — Premium design system (theme.css)
   Single source of truth for the product's visual layer. Linked AFTER the
   legacy inline <style> in base.html so these rules win and cascade across
   every page.

   Direction: premium, light & bright SaaS surface (Linear / Stripe / Vercel
   energy) — layered color-mesh backgrounds, hairline borders, soft depth,
   one confident brand gradient used as an accent. LUNA is the hero.
   ===================================================================== */

:root {
    /* Brand */
    --brand-1: #6366f1;       /* indigo */
    --brand-2: #8b5cf6;       /* violet */
    --brand-3: #a855f7;       /* magenta-violet (deep gradient stop) */
    --spark:   #22d3ee;       /* cyan accent — used sparingly */
    --grad:        linear-gradient(135deg, #6366f1 0%, #8b5cf6 55%, #a855f7 100%);
    --grad-bright: linear-gradient(135deg, #6366f1 0%, #818cf8 50%, #22d3ee 100%);
    --grad-soft:   linear-gradient(135deg, rgba(99,102,241,.12), rgba(139,92,246,.12));

    /* Neutrals — cool light product surface */
    --bg:        #f4f5fb;
    --bg-2:      #eef0fb;
    --surface:   #ffffff;
    --surface-2: #fbfbfe;
    --ink:       #0c1124;
    --ink-soft:  #2a3052;
    --muted:     #5e6781;
    --muted-2:   #8b92ab;
    --line:      #e7e9f4;
    --line-2:    #eef0f8;

    /* Radius scale */
    --r-xs: 10px;
    --r-sm: 14px;
    --r:    18px;
    --r-lg: 24px;
    --r-xl: 30px;
    --r-pill: 999px;

    /* Shadow scale — soft, layered, low-contrast */
    --shadow-xs: 0 1px 2px rgba(12,17,36,.05);
    --shadow-sm: 0 2px 10px rgba(12,17,36,.06);
    --shadow:    0 14px 34px rgba(12,17,36,.09);
    --shadow-lg: 0 28px 64px rgba(12,17,36,.14);
    --shadow-brand: 0 14px 30px rgba(99,102,241,.30);
    --ring: 0 0 0 4px rgba(99,102,241,.18);

    /* Status */
    --success: #16a34a;
    --warning: #d97706;
    --danger:  #dc2626;

    /* Legacy variable names remapped so existing inline rules adopt the new palette */
    --primary:   #6366f1;
    --secondary: #8b5cf6;
    --accent:    #6366f1;
    --light:     #f4f5fb;
    --dark:      #0c1124;
}

@media (prefers-reduced-motion: reduce) {
    * { animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
}

/* ---- Typography ---------------------------------------------------- */
* { font-family: 'Inter', 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; }
h1, h2, h3, h4, .logo, .section-title h2, .hero h1, .hero h2, .cta h2,
.card-header h2, .pipe-step h4 {
    font-family: 'Space Grotesk', 'Inter', sans-serif;
    letter-spacing: -0.025em;
    line-height: 1.12;
}
body {
    background:
        radial-gradient(900px 520px at 88% -8%, rgba(99,102,241,.06), transparent 60%),
        radial-gradient(820px 520px at 4% 8%, rgba(34,211,238,.045), transparent 55%),
        var(--bg);
    color: var(--ink);
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility;
}
a { color: var(--brand-1); }
::selection { background: rgba(99,102,241,.18); }

/* Scroll-reveal utility (progressive enhancement, see base.html observer) */
[data-reveal] { opacity: 0; transform: translateY(22px); transition: opacity .7s cubic-bezier(.16,.84,.44,1), transform .7s cubic-bezier(.16,.84,.44,1); will-change: opacity, transform; }
[data-reveal].is-in { opacity: 1; transform: none; }

/* =====================================================================
   Navbar — distinct deep-indigo branded bar
   ===================================================================== */
header {
    background: linear-gradient(100deg, #1e1b4b 0%, #312e81 48%, #4338ca 100%) !important;
    -webkit-backdrop-filter: none; backdrop-filter: none;
    border-bottom: 1px solid rgba(255,255,255,.06) !important;
    box-shadow: 0 10px 30px rgba(30,27,75,.28) !important;
    padding: .85rem 1rem !important;
    color: #fff !important;
    position: sticky; top: 0; z-index: 100;
}
.nav-container { gap: 1rem; align-items: center; }
.logo { font-size: 1.6rem !important; font-weight: 700; color: #fff !important; gap: 0 !important; align-items: center; letter-spacing: -.01em; }
.logo::before {
    content: ""; width: 28px; height: 28px; border-radius: 8px; margin-right: .6rem;
    background: linear-gradient(135deg, #818cf8, #22d3ee);
    box-shadow: 0 6px 16px rgba(34,211,238,.45); flex: 0 0 auto; display: inline-block;
    position: relative;
}
.logo .logo-part1 { color: #ffffff !important; }
.logo-part2 { color: #67e8f9 !important; font-style: normal; animation: none; text-shadow: none; }
.logo-part3 { color: #c4b5fd !important; }
.welcome-message {
    background: rgba(255,255,255,.12) !important; color: #ffffff !important;
    border-radius: var(--r-pill); border: 1px solid rgba(255,255,255,.2);
    font-weight: 600; font-size: .92rem;
}
.welcome-message:before { content: ''; margin-right: .15rem; }
/* Nav buttons sit on the dark bar — light treatment */
header .btn-outline {
    background: rgba(255,255,255,.08) !important;
    border: 1.5px solid rgba(255,255,255,.28) !important;
    color: #fff !important; -webkit-backdrop-filter: none; backdrop-filter: none;
}
header .btn-outline:hover { background: #fff !important; border-color: #fff !important; color: var(--brand-1) !important; transform: translateY(-2px) !important; }
header .btn-logout { border: 1.5px solid rgba(255,255,255,.35) !important; color: #fff !important; }
header .btn-logout:hover { background: #fff !important; color: var(--brand-1) !important; border-color: #fff !important; }
header .btn-primary { box-shadow: 0 8px 20px rgba(34,211,238,.35) !important; }

/* =====================================================================
   Buttons
   ===================================================================== */
.btn {
    border-radius: var(--r-pill) !important;
    font-weight: 600 !important;
    letter-spacing: .005em;
    padding: .62rem 1.45rem !important;
    font-size: .96rem;
    transition: transform .25s cubic-bezier(.16,.84,.44,1), box-shadow .25s, background-color .25s, border-color .25s, color .25s !important;
    border: 1.5px solid transparent;
    display: inline-flex; align-items: center; justify-content: center; gap: .5rem;
    line-height: 1.1;
}
.btn::before { display: none !important; }
.btn-primary {
    background: var(--grad) !important;
    color: #fff !important;
    box-shadow: var(--shadow-brand) !important;
    border-color: transparent !important;
}
.btn-primary:hover { transform: translateY(-2px) !important; box-shadow: 0 18px 38px rgba(99,102,241,.42) !important; }
.btn-primary:active { transform: translateY(0) !important; }
.btn-outline {
    background: rgba(255,255,255,.7) !important;
    border: 1.5px solid var(--line) !important;
    color: var(--ink) !important;
    -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px);
}
.btn-outline:hover { background: #fff !important; border-color: rgba(99,102,241,.45) !important; color: var(--brand-1) !important; transform: translateY(-2px) !important; box-shadow: var(--shadow-sm) !important; }
.btn-logout {
    background: transparent !important;
    border: 1.5px solid rgba(99,102,241,.4) !important;
    color: var(--brand-1) !important;
    border-radius: var(--r-pill) !important;
    padding: .55rem 1.3rem !important; font-weight: 600 !important;
}
.btn-logout:hover { background: var(--grad) !important; color: #fff !important; border-color: transparent !important; transform: translateY(-2px) !important; box-shadow: var(--shadow-brand) !important; }
.btn:focus-visible { outline: none; box-shadow: var(--ring) !important; }

/* =====================================================================
   Hero — light color-mesh stage with LUNA as centerpiece
   ===================================================================== */
.hero {
    position: relative;
    background:
        radial-gradient(560px 320px at 14% 6%, rgba(99,102,241,.22), transparent 60%),
        radial-gradient(520px 300px at 86% 0%, rgba(34,211,238,.18), transparent 60%),
        radial-gradient(680px 420px at 50% 116%, rgba(168,85,247,.22), transparent 60%),
        radial-gradient(900px 500px at 50% 50%, rgba(255,255,255,.5), transparent 70%),
        linear-gradient(180deg, #fbfbff 0%, #eef1fe 55%, #e7ebfd 100%) !important;
    color: var(--ink) !important;
    padding: 2.4rem 1rem 3rem !important;
    border-bottom: 1px solid var(--line);
    overflow: hidden;
}
/* faint dot grid texture, masked so it fades out toward the edges */
.hero::before {
    display: block !important; content: '' !important;
    position: absolute !important; inset: 0 !important;
    width: 100% !important; height: 100% !important;
    background: radial-gradient(rgba(99,102,241,.16) 1px, transparent 1.6px) !important;
    background-size: 26px 26px !important;
    -webkit-mask-image: radial-gradient(ellipse 78% 70% at 50% 4%, #000 30%, transparent 78%);
    mask-image: radial-gradient(ellipse 78% 70% at 50% 4%, #000 30%, transparent 78%);
    animation: none !important; z-index: 0 !important; pointer-events: none !important; opacity: .9;
}
.hero .container { position: relative; z-index: 2; }
.hero-content { position: relative; z-index: 2; gap: 0; }
/* Two-column hero — copy left, portrait right (professional SaaS layout) */
.hero-split {
    display: grid !important;
    grid-template-columns: 1.05fr .95fr;
    align-items: center; gap: clamp(1.5rem, 4vw, 3.5rem);
    text-align: left !important; max-width: 1120px; margin: 0 auto; width: 100%;
}
.hero-copy { display: flex; flex-direction: column; align-items: flex-start; }
.hero-split .hero-stage { justify-self: center; }
@media (max-width: 880px) {
    .hero-split { grid-template-columns: 1fr; text-align: center !important; justify-items: center; }
    .hero-copy { align-items: center; }
    .hero-split .hero-stage { order: -1; }
}
.hero h1 {
    font-size: clamp(2.1rem, 4.4vw, 3.2rem) !important;
    font-weight: 700; color: var(--ink) !important;
    margin: 0 0 1rem !important; max-width: 15ch; text-wrap: balance;
    text-shadow: none !important; transform: none !important;
}
.hero h1 .grad-text {
    background: var(--grad); -webkit-background-clip: text; background-clip: text;
    -webkit-text-fill-color: transparent; color: transparent;
}
.hero p {
    color: var(--muted) !important; font-size: clamp(1rem, 1.4vw, 1.15rem) !important;
    max-width: 48ch; margin: 0 0 1.8rem !important; line-height: 1.6; transform: none !important;
}
.hero-split .hero-copy p { margin-left: 0 !important; margin-right: 0 !important; }
@media (max-width: 880px) { .hero p { margin-left: auto !important; margin-right: auto !important; } }
.hero-buttons { gap: 1rem !important; transform: none !important; }

/* Eyebrow chip */
.eyebrow {
    display: inline-flex; align-items: center; gap: .5rem;
    padding: .35rem .95rem .35rem .65rem; margin-bottom: 1.1rem;
    border-radius: var(--r-pill); font-size: .8rem; font-weight: 600; letter-spacing: .01em;
    color: var(--brand-1); background: rgba(255,255,255,.75);
    border: 1px solid rgba(99,102,241,.22);
    box-shadow: var(--shadow-xs); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
}
.eyebrow .dot { width: 8px; height: 8px; border-radius: 50%; background: var(--grad); box-shadow: 0 0 0 4px rgba(99,102,241,.16); animation: blink 2.2s ease-in-out infinite; }
@keyframes blink { 0%,100% { opacity: 1; } 50% { opacity: .35; } }

/* ---- LUNA portrait stage — bigger, crisper, refined halo --------- */
.luna-avatar-container {
    position: relative;
    width: clamp(220px, 26vw, 300px) !important;
    height: clamp(220px, 26vw, 300px) !important;
    margin: 0 auto !important;
    perspective: 1000px;
}
/* rotating conic gradient ring behind the portrait */
.luna-avatar-container::before {
    content: ""; position: absolute; inset: -16px; border-radius: 50%;
    background: conic-gradient(from 0deg, #6366f1, #22d3ee, #a855f7, #8b5cf6, #6366f1);
    filter: blur(2px); opacity: .9; z-index: 0;
    -webkit-mask: radial-gradient(circle, transparent 60%, #000 61%);
    mask: radial-gradient(circle, transparent 60%, #000 61%);
    animation: spin 14s linear infinite;
}
.luna-avatar-container::after {
    content: ""; position: absolute; inset: 8px; border-radius: 50%;
    box-shadow: inset 0 0 0 8px rgba(255,255,255,.9); z-index: 1; pointer-events: none;
}
@keyframes spin { to { transform: rotate(360deg); } }
.luna-glow {
    position: absolute; inset: -6%; border-radius: 50%; z-index: 0 !important;
    background: radial-gradient(circle, rgba(139,92,246,.45) 0%, rgba(34,211,238,.20) 45%, transparent 72%) !important;
    opacity: .9 !important; filter: blur(26px) !important;
    animation: pulse 4.5s ease-in-out infinite alternate;
}
@keyframes pulse { 0% { transform: scale(.92); opacity: .55; } 100% { transform: scale(1.08); opacity: .9; } }
.luna-avatar {
    width: 100% !important; height: 100% !important; border-radius: 50% !important;
    border: 5px solid #ffffff !important;
    box-shadow: 0 26px 60px rgba(12,17,36,.22), 0 0 0 1px rgba(99,102,241,.10) !important;
    overflow: hidden; position: relative; z-index: 2 !important;
    background: #eef1fe !important; animation: float 6s ease-in-out infinite;
}
@keyframes float { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-12px); } }
.luna-avatar img { width: 100%; height: 100%; object-fit: cover; object-position: center top; }

/* Floating accent chips around the portrait (added in index.html hero) */
.hero-stage { position: relative; display: inline-block; }
.float-chip {
    position: absolute; z-index: 5; display: inline-flex; align-items: center; gap: .5rem;
    padding: .55rem .9rem; border-radius: var(--r-pill);
    background: rgba(255,255,255,.92); border: 1px solid var(--line);
    box-shadow: var(--shadow); font-size: .85rem; font-weight: 600; color: var(--ink-soft);
    -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
    animation: floatChip 5s ease-in-out infinite;
    white-space: nowrap;
}
.float-chip .ico {
    width: 26px; height: 26px; border-radius: 8px; display: grid; place-items: center;
    background: var(--grad-soft); font-size: .95rem;
}
.float-chip.tl { top: -7%; left: -11%; animation-delay: .4s; }
.float-chip.br { bottom: 6%; right: -12%; animation-delay: 1.4s; }
@keyframes floatChip { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-9px); } }

/* =====================================================================
   Landing page — full-viewport scroll-snap sections
   (each section fills one screen: Hero → Features → How it works)
   Scoped to body.landing so other pages scroll normally.
   ===================================================================== */
html:has(body.landing) { scroll-behavior: smooth; }
body.landing {
    scroll-snap-type: y proximity;
    scroll-padding-top: 66px;
    scroll-behavior: smooth;
}
body.landing .hero,
body.landing #features,
body.landing #how {
    min-height: calc(100svh - 66px);
    scroll-snap-align: start;
    display: flex;
    flex-direction: column;
    justify-content: center;
}
body.landing .hero { min-height: calc(100svh - 66px); padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; }
body.landing #features,
body.landing #how { padding-top: 2rem !important; padding-bottom: 2rem !important; }
body.landing #features .section-title,
body.landing #how .section-title { margin-bottom: 2rem !important; }
/* Disable snapping where a screen can't comfortably hold a full section */
@media (max-height: 620px), (max-width: 600px) {
    body.landing { scroll-snap-type: none; }
    body.landing .hero,
    body.landing #features,
    body.landing #how { min-height: 0; }
}
@media (prefers-reduced-motion: reduce) {
    body.landing { scroll-snap-type: none; }
    html:has(body.landing) { scroll-behavior: auto; }
}

/* =====================================================================
   Sections / titles
   ===================================================================== */
.content-section, .features {
    background:
        radial-gradient(760px 340px at 90% 0%, rgba(99,102,241,.06), transparent 60%),
        radial-gradient(680px 320px at 4% 100%, rgba(34,211,238,.05), transparent 60%),
        transparent !important;
    padding: 4.5rem 1rem !important;
}
.section-title { margin-bottom: 3rem !important; }
.section-title h2 { color: var(--ink) !important; font-size: clamp(1.85rem, 3.2vw, 2.55rem) !important; }
.section-title h2::after { background: var(--grad) !important; height: 4px !important; width: 64px !important; border-radius: 4px; bottom: -14px !important; }
.section-title p { color: var(--muted) !important; font-size: 1.08rem !important; margin-top: 1.5rem; line-height: 1.6; }

/* =====================================================================
   Cards — premium light
   ===================================================================== */
.feature-card, .card, .job-card {
    background: var(--surface) !important;
    border: 1px solid var(--line) !important;
    border-radius: var(--r-lg) !important;
    box-shadow: var(--shadow-sm) !important;
    overflow: hidden;
    transition: transform .4s cubic-bezier(.16,.84,.44,1), box-shadow .4s, border-color .4s !important;
}
.feature-card:hover, .job-card:hover {
    transform: translateY(-8px) !important;
    box-shadow: var(--shadow-lg) !important;
    border-color: rgba(99,102,241,.30) !important;
}
.card:hover { transform: translateY(-4px) !important; box-shadow: var(--shadow) !important; border-color: rgba(99,102,241,.22) !important; }

/* Feature card */
.feature-card { display: flex; flex-direction: column; }
.feature-icon {
    background: var(--grad-soft) !important;
    font-size: 1.6rem !important; color: var(--brand-1) !important;
    padding: 1.6rem !important; justify-content: flex-start !important;
}
.feature-icon span {
    width: 60px; height: 60px; border-radius: 16px; display: grid; place-items: center;
    background: #fff; box-shadow: var(--shadow-sm); border: 1px solid var(--line);
}
.feature-card:hover .feature-icon { color: var(--brand-1) !important; transform: none !important; }
.feature-content { padding: 0 1.6rem 1.7rem !important; }
.feature-content h3 { color: var(--ink) !important; font-family: 'Space Grotesk', sans-serif; font-size: 1.25rem !important; }
.feature-content h3::after { background: var(--grad) !important; height: 3px !important; }
.feature-content p { color: var(--muted) !important; line-height: 1.6; }

/* Generic card + headers */
.card { box-shadow: var(--shadow-sm) !important; }
.card-header { background: var(--grad) !important; color: #fff; padding: 1.6rem 1.8rem !important; position: relative; }
.card-header h2, .card-header h3 { color: #fff !important; }
.card-header p { color: rgba(255,255,255,.88) !important; margin-top: .35rem; }
.card-body { padding: 1.8rem !important; }

/* Job cards */
.job-card { display: flex; flex-direction: column; }
.job-header { background: var(--grad) !important; color: #fff; padding: 1.35rem 1.5rem !important; }
.job-header h3 { font-family: 'Space Grotesk', sans-serif; font-size: 1.3rem !important; color: #fff; }
.job-info { color: rgba(255,255,255,.9); margin-top: .6rem !important; gap: .5rem; }
.job-info span {
    background: rgba(255,255,255,.18); border: 1px solid rgba(255,255,255,.22);
    padding: .22rem .7rem; border-radius: var(--r-pill); font-size: .8rem; font-weight: 600;
}
.job-body { padding: 1.4rem 1.5rem !important; }
.job-body .job-description p { color: var(--muted) !important; line-height: 1.55; }
.job-body > div:last-child { color: var(--muted-2); font-size: .85rem; font-weight: 500; }
.job-footer { padding: 0 1.5rem 1.4rem !important; }

/* =====================================================================
   Forms — unified, premium (applies across login/signup/apply/post_job)
   ===================================================================== */
.form-group { margin-bottom: 1.25rem; }
label, .form-label, .form-group label {
    display: block !important; margin-bottom: .5rem !important;
    font-weight: 600 !important; font-size: .9rem !important; color: var(--ink-soft) !important;
    letter-spacing: .005em;
}
.form-control,
input[type="text"], input[type="email"], input[type="password"],
input[type="number"], input[type="file"], textarea, select {
    width: 100% !important; box-sizing: border-box;
    padding: .8rem 1rem !important; font-size: 1rem !important;
    color: var(--ink) !important;
    background: var(--surface-2) !important;
    border: 1.5px solid var(--line) !important;
    border-radius: var(--r-sm) !important;
    transition: border-color .25s, box-shadow .25s, background-color .25s !important;
    font-family: 'Inter', sans-serif !important;
}
textarea.form-control, textarea { resize: vertical; min-height: 96px; line-height: 1.55; }
.form-control::placeholder, input::placeholder, textarea::placeholder { color: var(--muted-2) !important; }
.form-control:focus,
input:focus, textarea:focus, select:focus {
    outline: none !important;
    border-color: var(--brand-1) !important;
    background: #fff !important;
    box-shadow: var(--ring) !important;
}
/* File input — custom button look */
input[type="file"] { padding: .55rem 1rem !important; cursor: pointer; }
input[type="file"]::file-selector-button {
    margin-right: 1rem; padding: .5rem 1rem; border: none; cursor: pointer;
    border-radius: var(--r-pill); font-weight: 600; font-size: .88rem;
    background: var(--grad-soft); color: var(--brand-1);
    transition: background-color .2s;
}
input[type="file"]::file-selector-button:hover { background: rgba(99,102,241,.18); }
select { -webkit-appearance: none; appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%235e6781' stroke-width='2.5'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
    background-repeat: no-repeat; background-position: right 1rem center; padding-right: 2.6rem !important; }

/* Password strength bar */
.password-strength { height: 6px !important; background: var(--line) !important; border-radius: var(--r-pill) !important; margin-top: .6rem !important; overflow: hidden; }
.password-strength-bar { border-radius: var(--r-pill) !important; }

/* Auth pages: card sits on a quiet mesh, override legacy radii from inline <style> */
.auth-form .form-control { border-radius: var(--r-sm) !important; padding: .8rem 1rem !important; border: 1.5px solid var(--line) !important; }
.auth-form .form-control:focus { border-color: var(--brand-1) !important; box-shadow: var(--ring) !important; }
.auth-form .btn-primary, .application-actions .btn-primary, form .btn-primary {
    background: var(--grad) !important; border-radius: var(--r-pill) !important;
    box-shadow: var(--shadow-brand) !important; padding: .8rem 1.6rem !important;
}
.auth-form .btn-primary:hover { transform: translateY(-2px) !important; box-shadow: 0 18px 38px rgba(99,102,241,.42) !important; }
.btn-secondary {
    background: rgba(99,102,241,.08) !important; color: var(--brand-1) !important;
    border: 1.5px solid rgba(99,102,241,.22) !important; border-radius: var(--r-pill) !important;
    padding: .8rem 1.4rem !important; font-weight: 600;
}
.btn-secondary:hover { background: rgba(99,102,241,.14) !important; transform: translateY(-2px); }

/* =====================================================================
   Dashboard table
   ===================================================================== */
.dashboard-table { border-collapse: separate !important; border-spacing: 0; width: 100%; }
.dashboard-table thead tr { background: transparent !important; }
.dashboard-table th {
    background: var(--bg-2) !important; color: var(--ink-soft) !important;
    font-weight: 700 !important; font-size: .78rem !important; text-transform: uppercase; letter-spacing: .06em;
    padding: .95rem 1rem !important; border-bottom: 1px solid var(--line) !important; text-align: left;
}
.dashboard-table th:first-child { border-top-left-radius: var(--r-sm); }
.dashboard-table th:last-child { border-top-right-radius: var(--r-sm); }
.dashboard-table td { padding: .95rem 1rem !important; border-bottom: 1px solid var(--line-2) !important; color: var(--ink-soft); font-size: .95rem; }
.dashboard-table tbody tr { background: #fff !important; transition: background-color .2s; }
.dashboard-table tbody tr:nth-child(even) { background: var(--surface-2) !important; }
.dashboard-table tbody tr:hover { background: rgba(99,102,241,.05) !important; }
.dashboard-table td:nth-child(4) { font-weight: 700 !important; color: var(--brand-2) !important; }
.download-report-btn {
    display: inline-flex !important; align-items: center; gap: .4rem;
    padding: .5rem 1rem !important; border-radius: var(--r-pill) !important;
    border: 1.5px solid rgba(99,102,241,.3) !important; color: var(--brand-1) !important;
    background: rgba(99,102,241,.06) !important; text-decoration: none; font-size: .85rem; font-weight: 600;
    transition: all .2s ease;
}
.download-report-btn:hover { background: var(--grad) !important; color: #fff !important; border-color: transparent !important; box-shadow: var(--shadow-brand); transform: translateY(-1px); }

/* =====================================================================
   My Applications — cards + tips
   ===================================================================== */
.application-card {
    background: var(--surface) !important; border: 1px solid var(--line) !important;
    border-radius: var(--r-lg) !important; box-shadow: var(--shadow-sm) !important;
    padding: 0 !important; overflow: hidden;
    transition: transform .4s cubic-bezier(.16,.84,.44,1), box-shadow .4s, border-color .4s;
}
.application-card:hover { transform: translateY(-6px); box-shadow: var(--shadow-lg) !important; border-color: rgba(99,102,241,.3) !important; }
.application-header { background: var(--grad) !important; padding: 1.25rem 1.4rem !important; }
.application-header h3 { color: #fff !important; font-family: 'Space Grotesk', sans-serif; margin-bottom: .5rem !important; }
.application-info span { color: rgba(255,255,255,.92) !important; font-size: .85rem; }
.application-body { padding: 1.3rem 1.4rem !important; color: var(--muted); }
.application-body p { color: var(--muted) !important; line-height: 1.55; margin-bottom: .5rem; }
.application-footer { padding: 0 1.4rem 1.3rem !important; }
.application-footer .btn-outline { border: 1.5px solid rgba(99,102,241,.4) !important; color: var(--brand-1) !important; background: #fff !important; }
.application-footer .btn-outline:hover { background: var(--grad) !important; color: #fff !important; border-color: transparent !important; }
.tips-section {
    background: linear-gradient(135deg, rgba(99,102,241,.07), rgba(34,211,238,.05)) !important;
    border: 1px solid rgba(99,102,241,.18) !important; border-left: 4px solid var(--brand-1) !important;
    border-radius: var(--r-lg) !important; padding: 1.8rem 2rem !important; box-shadow: var(--shadow-xs);
}
.tips-section h3 { color: var(--ink) !important; font-family: 'Space Grotesk', sans-serif; }
.tips-section li { color: var(--ink-soft); margin-bottom: .35rem; }
.tips-section li::marker { color: var(--brand-1); }

/* =====================================================================
   CTA band — the single, confident gradient moment
   ===================================================================== */
.cta {
    background: var(--grad) !important; position: relative; overflow: hidden;
    padding: 4.5rem 1rem !important;
}
.cta::before {
    content: ''; position: absolute; inset: 0;
    background: radial-gradient(600px 300px at 15% 10%, rgba(255,255,255,.18), transparent 60%),
                radial-gradient(500px 280px at 90% 100%, rgba(34,211,238,.25), transparent 60%) !important;
    animation: none !important; top: 0; left: 0; width: 100%; height: 100%; transform: none;
}
.cta h2, .cta p { color: #fff !important; text-shadow: none !important; }
.cta h2 { font-size: clamp(1.9rem, 3.2vw, 2.6rem) !important; }
.cta p { color: rgba(255,255,255,.9) !important; }
.cta .btn-primary { background: #fff !important; color: var(--brand-1) !important; box-shadow: 0 14px 30px rgba(12,17,36,.22) !important; }
.cta .btn-primary:hover { transform: translateY(-2px) !important; box-shadow: 0 20px 40px rgba(12,17,36,.28) !important; }

/* =====================================================================
   Footer — tidy, light, branded
   ===================================================================== */
footer { background: var(--surface) !important; color: var(--muted) !important; border-top: 1px solid var(--line); padding: 3.5rem 1rem 2.5rem !important; }
.footer-col p { color: var(--muted) !important; line-height: 1.6; }
.footer-col h3 { color: var(--ink) !important; font-family: 'Space Grotesk', sans-serif; }
.footer-col h3::after { background: var(--grad) !important; }
.footer-col a { color: var(--muted) !important; text-decoration: none; transition: color .2s; }
.footer-col a:hover { color: var(--brand-1) !important; }
.social-links a { background: var(--bg) !important; color: var(--ink-soft) !important; border: 1px solid var(--line); font-weight: 600; transition: all .25s; }
.social-links a:hover { background: var(--grad) !important; color: #fff !important; border-color: transparent; transform: translateY(-3px); box-shadow: var(--shadow-brand); }
.copyright { color: var(--muted-2) !important; border-top: 1px solid var(--line) !important; }

/* =====================================================================
   Flash alerts
   ===================================================================== */
.flash-messages .alert { border-radius: var(--r-sm) !important; box-shadow: var(--shadow-xs) !important; border-left-width: 4px !important; font-weight: 500; }
.alert-success { background: rgba(22,163,74,.10) !important; color: #15803d !important; border-left-color: var(--success) !important; }
.alert-warning { background: rgba(217,119,6,.10) !important; color: #b45309 !important; border-left-color: var(--warning) !important; }
.alert-danger  { background: rgba(220,38,38,.10) !important; color: #b91c1c !important; border-left-color: var(--danger) !important; }
.alert-info    { background: rgba(99,102,241,.10) !important; color: var(--brand-1) !important; border-left-color: var(--brand-1) !important; }

/* =====================================================================
   Floating chatbot button + window
   ===================================================================== */
#chatbot-nav { background: var(--grad) !important; box-shadow: 0 12px 30px rgba(99,102,241,.5) !important; }
#chatbot-nav:hover { transform: scale(1.08) translateY(-2px) !important; }
#chatbot-box { border-radius: var(--r-lg) !important; border: 1px solid var(--line); box-shadow: var(--shadow-lg) !important; overflow: hidden; }
#chatbot-box #chat-input { border-top: 1px solid var(--line) !important; }
#chat-messages .user-bubble { background: var(--grad) !important; color: #fff !important; }

/* =====================================================================
   "How it works" animated pipeline
   ===================================================================== */
.pipeline {
    background:
        radial-gradient(700px 340px at 50% -10%, rgba(99,102,241,.07), transparent 60%),
        linear-gradient(180deg, var(--surface), var(--bg)) !important;
    padding: 4.5rem 1rem !important;
    border-top: 1px solid var(--line); border-bottom: 1px solid var(--line);
}
.pipe-track { display: grid; grid-template-columns: repeat(5, 1fr); gap: 1rem; max-width: 1120px; margin: 0 auto; position: relative; }
.pipe-track::before {
    content: ''; position: absolute; top: 50px; left: 9%; right: 9%; height: 3px;
    background: linear-gradient(90deg, rgba(99,102,241,.18), rgba(139,92,246,.6), rgba(34,211,238,.18));
    border-radius: 3px; z-index: 0;
}
.pipe-step { position: relative; z-index: 1; text-align: center; padding: 0 .5rem; opacity: 0; transform: translateY(18px); animation: pipeReveal .7s ease forwards; }
.pipe-step:nth-child(1) { animation-delay: .15s; }
.pipe-step:nth-child(2) { animation-delay: .40s; }
.pipe-step:nth-child(3) { animation-delay: .65s; }
.pipe-step:nth-child(4) { animation-delay: .90s; }
.pipe-step:nth-child(5) { animation-delay: 1.15s; }
.pipe-node {
    width: 100px; height: 100px; margin: 0 auto 1.2rem; border-radius: 26px;
    display: grid; place-items: center; font-size: 2.2rem; color: #fff; background: var(--grad);
    box-shadow: 0 16px 32px rgba(99,102,241,.35); position: relative;
    border: 4px solid #fff;
}
.pipe-node::after { content: ''; position: absolute; inset: -8px; border-radius: 30px; border: 2px solid rgba(139,92,246,.45); animation: pipeHalo 2.6s ease-in-out infinite; }
.pipe-step:nth-child(even) .pipe-node::after { animation-delay: 1.3s; }
.pipe-step h4 { color: var(--ink); margin-bottom: .45rem; font-size: 1.08rem; }
.pipe-step p { color: var(--muted); font-size: .92rem; line-height: 1.5; }
.pipe-num { display: inline-block; font-size: .72rem; font-weight: 700; color: var(--brand-1); background: var(--grad-soft); border: 1px solid rgba(99,102,241,.18); border-radius: var(--r-pill); padding: .18rem .75rem; margin-bottom: .8rem; }
@keyframes pipeReveal { to { opacity: 1; transform: translateY(0); } }
@keyframes pipeHalo { 0%,100% { transform: scale(1); opacity: .5; } 50% { transform: scale(1.08); opacity: 0; } }

/* =====================================================================
   Responsive
   ===================================================================== */
@media (max-width: 900px) {
    .float-chip { display: none; }
}
@media (max-width: 860px) {
    .pipe-track { grid-template-columns: 1fr 1fr; gap: 2rem 1rem; }
    .pipe-track::before { display: none; }
}
@media (max-width: 768px) {
    .hero { padding: 3rem 1rem 3.4rem !important; }
    .section-title { margin-bottom: 2rem !important; }
    .content-section, .features, .pipeline, .cta { padding: 3rem 1rem !important; }
    .nav-container { flex-wrap: wrap; }
}
@media (max-width: 480px) {
    .pipe-track { grid-template-columns: 1fr; }
    .logo { font-size: 1.45rem !important; }
}

/* =====================================================================
   Feature cards — refined per-card accent treatment
   Each of the three cards gets its own color (indigo / cyan / violet):
   a gradient top bar, a richer icon tile, and a matching hover + underline.
   Content/markup unchanged — purely visual polish.
   ===================================================================== */
.features-grid { gap: 1.9rem; }
.features-grid .feature-card {
    position: relative;
    background: var(--surface) !important;
}
/* gradient accent bar along the top edge (clipped by the card radius) */
.features-grid .feature-card::before {
    content: ""; position: absolute; top: 0; left: 0; right: 0; height: 4px; z-index: 3;
    background: var(--grad);
}
.features-grid .feature-card:nth-child(1)::before { background: linear-gradient(90deg, #6366f1, #818cf8); }
.features-grid .feature-card:nth-child(2)::before { background: linear-gradient(90deg, #06b6d4, #22d3ee); }
.features-grid .feature-card:nth-child(3)::before { background: linear-gradient(90deg, #a855f7, #c084fc); }

/* icon area: drop the flat band, let the tile carry the color */
.features-grid .feature-icon { background: transparent !important; padding: 1.85rem 1.6rem .5rem !important; }
.features-grid .feature-icon span {
    width: 66px; height: 66px; border-radius: 18px; font-size: 2rem;
    display: grid; place-items: center; line-height: 1;
    border: 1px solid var(--line);
    transition: transform .35s cubic-bezier(.16,.84,.44,1), box-shadow .35s, border-color .35s;
}
.features-grid .feature-card:nth-child(1) .feature-icon span {
    background: linear-gradient(135deg, rgba(99,102,241,.18), rgba(129,140,248,.06));
    border-color: rgba(99,102,241,.32); box-shadow: 0 8px 18px rgba(99,102,241,.20);
}
.features-grid .feature-card:nth-child(2) .feature-icon span {
    background: linear-gradient(135deg, rgba(34,211,238,.22), rgba(6,182,212,.07));
    border-color: rgba(34,211,238,.38); box-shadow: 0 8px 18px rgba(34,211,238,.20);
}
.features-grid .feature-card:nth-child(3) .feature-icon span {
    background: linear-gradient(135deg, rgba(168,85,247,.18), rgba(192,132,252,.06));
    border-color: rgba(168,85,247,.32); box-shadow: 0 8px 18px rgba(168,85,247,.20);
}
.features-grid .feature-card:hover .feature-icon span { transform: translateY(-3px) scale(1.05); }

/* heading underline + hover border pick up each card's accent */
.features-grid .feature-card:nth-child(1) .feature-content h3::after { background: linear-gradient(90deg, #6366f1, #818cf8) !important; }
.features-grid .feature-card:nth-child(2) .feature-content h3::after { background: linear-gradient(90deg, #06b6d4, #22d3ee) !important; }
.features-grid .feature-card:nth-child(3) .feature-content h3::after { background: linear-gradient(90deg, #a855f7, #c084fc) !important; }
.features-grid .feature-card:nth-child(1):hover { border-color: rgba(99,102,241,.45) !important; }
.features-grid .feature-card:nth-child(2):hover { border-color: rgba(34,211,238,.50) !important; }
.features-grid .feature-card:nth-child(3):hover { border-color: rgba(168,85,247,.45) !important; }