Compare commits

...
3 Commits
Author SHA1 Message Date
platform-mcpandClaude Opus 4.8 52b6392f74 feat(home): convert hero to two-column left/right layout
Deploy to Production / Build & Verify (push) Has been cancelled
Deploy to Production / Pre-Deploy Tests (push) Has been cancelled
Deploy to Production / Deploy to Railway (push) Has been cancelled
Deploy to Production / Deploy to Render (push) Has been cancelled
Deploy to Production / Deploy to VPS (PM2) (push) Has been cancelled
Deploy to Production / Deploy to Fly.io (push) Has been cancelled
Deploy to Production / Post-Deploy Verification (push) Has been cancelled
Deploy to Production / Notify on Failure (push) Has been cancelled
E2E Test Suite / Critical User Journeys (push) Has been cancelled
E2E Test Suite / API Integration Tests (push) Has been cancelled
E2E Test Suite / Form Interaction Tests (push) Has been cancelled
E2E Test Suite / Destructive & Chaos Tests (push) Has been cancelled
E2E Test Suite / Cross-Browser Regression (chromium) (push) Has been cancelled
E2E Test Suite / Cross-Browser Regression (firefox) (push) Has been cancelled
E2E Test Suite / Cross-Browser Regression (webkit) (push) Has been cancelled
E2E Test Suite / Mobile Device Tests (push) Has been cancelled
E2E Test Suite / Security Header Tests (push) Has been cancelled
E2E Test Suite / Test Report Summary (push) Has been cancelled
E2E Test Suite / Smoke Tests (P0) (push) Has been cancelled
Ping Search Engines / Notify Search Engines (push) Failing after 13m57s
Restructure the homepage hero from a single centered block into a
responsive two-column grid: left column holds the left-aligned
headline, subtext, CTAs, click-to-call and trust line; right column
holds the framed product dashboard preview.

- Replace `max-w-5xl mx-auto text-center` with
  `grid grid-cols-1 lg:grid-cols-2 gap-12 lg:gap-16 items-center`.
- Scale headline down from text-5xl/8xl to a responsive
  text-4xl md:text-5xl lg:text-6xl so it no longer overflows.
- Left-align CTAs/links on desktop (justify-start, lg:text-left)
  while keeping centered stacking on mobile (grid-cols-1).
- Swap section min-h-screen for lg:min-h-[85vh] and py-24 lg:py-32
  so the hero fits the viewport instead of dominating it.
- Preserve existing background gradient and decorative blur elements,
  consistent with the about/portfolio heroes.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 20:24:38 +05:30
platform-mcp 14aefa4a71 pre-agent: Add WRNexus nav item with corner close icon 2026-06-17 20:21:28 +05:30
platform-mcp d64a191c12 agent: Add WRNexus external link to navbar 2026-06-17 20:20:18 +05:30
10 changed files with 18 additions and 13 deletions

No files matched your search

+1 -1
View File
@@ -1,7 +1,7 @@
# Graph Report - 2e709500-79ab-403f-9ca0-3f027ac9f36e (2026-06-17)
## Corpus Check
- 58 files · ~328,409 words
- 58 files · ~328,509 words
- Verdict: corpus is large enough that graph structure adds value.
## Summary
@@ -0,0 +1 @@
{"nodes": [{"id": "home_agent_ai_agent_backend_workspace_2e709500_79ab_403f_9ca0_3f027ac9f36e_src_middleware_ts", "label": "middleware.ts", "file_type": "code", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/middleware.ts", "source_location": "L1"}, {"id": "src_middleware_validatecsrforigin", "label": "validateCsrfOrigin()", "file_type": "code", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/middleware.ts", "source_location": "L19"}], "edges": [{"source": "home_agent_ai_agent_backend_workspace_2e709500_79ab_403f_9ca0_3f027ac9f36e_src_middleware_ts", "target": "astro_middleware", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/middleware.ts", "source_location": "L1", "weight": 1.0}, {"source": "home_agent_ai_agent_backend_workspace_2e709500_79ab_403f_9ca0_3f027ac9f36e_src_middleware_ts", "target": "home_agent_ai_agent_backend_workspace_2e709500_79ab_403f_9ca0_3f027ac9f36e_src_utils_logger_ts", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/middleware.ts", "source_location": "L2", "weight": 1.0}, {"source": "home_agent_ai_agent_backend_workspace_2e709500_79ab_403f_9ca0_3f027ac9f36e_src_middleware_ts", "target": "utils_logger_logger", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/middleware.ts", "source_location": "L2", "weight": 1.0}, {"source": "home_agent_ai_agent_backend_workspace_2e709500_79ab_403f_9ca0_3f027ac9f36e_src_middleware_ts", "target": "home_agent_ai_agent_backend_workspace_2e709500_79ab_403f_9ca0_3f027ac9f36e_src_utils_sentry_ts", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/middleware.ts", "source_location": "L3", "weight": 1.0}, {"source": "home_agent_ai_agent_backend_workspace_2e709500_79ab_403f_9ca0_3f027ac9f36e_src_middleware_ts", "target": "utils_sentry_captureexception", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/middleware.ts", "source_location": "L3", "weight": 1.0}, {"source": "home_agent_ai_agent_backend_workspace_2e709500_79ab_403f_9ca0_3f027ac9f36e_src_middleware_ts", "target": "src_middleware_validatecsrforigin", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/middleware.ts", "source_location": "L19", "weight": 1.0}], "raw_calls": [{"caller_nid": "src_middleware_validatecsrforigin", "callee": "includes", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/middleware.ts", "source_location": "L24"}, {"caller_nid": "src_middleware_validatecsrforigin", "callee": "startsWith", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/middleware.ts", "source_location": "L25"}, {"caller_nid": "src_middleware_validatecsrforigin", "callee": "get", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/middleware.ts", "source_location": "L36"}, {"caller_nid": "src_middleware_validatecsrforigin", "callee": "get", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/middleware.ts", "source_location": "L37"}, {"caller_nid": "src_middleware_validatecsrforigin", "callee": "startsWith", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/middleware.ts", "source_location": "L52"}, {"caller_nid": "src_middleware_validatecsrforigin", "callee": "startsWith", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/middleware.ts", "source_location": "L52"}]}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.2 KiB

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

+1 -1
View File
@@ -1 +1 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!-- Generator: Gravit.io --><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="isolation:isolate" viewBox="9.69 10.69 1174.657 1169.222" width="1174.657pt" height="1169.222pt"><g><path d=" M 802.821 170.332 C 802.821 170.332 1267.11 329.733 1033.382 836.126 C 1033.382 836.126 1068.608 894.546 1062.286 928.783 C 1062.286 928.783 1228.11 732.085 1116.291 450.953 C 1116.291 450.953 1033.443 215.785 802.821 170.332 Z " fill="rgb(71,75,81)"/><path d=" M 647.701 1145.387 C 647.701 1145.387 574.007 1100.145 560.316 1070.941 C 560.316 1070.941 131.203 1008.875 149.074 564.461 C 149.074 564.461 66.351 1096.347 647.701 1145.387 Z " fill="rgb(71,75,81)"/><path d=" M 255.995 474.5 C 265.237 453.996 279.919 438.66 300.413 429.264 C 347.247 407.793 400.771 425.264 425.703 470.006 C 444.285 503.346 449.123 539.854 449.002 577.085 C 448.882 614.62 447.523 652.139 440.998 689.294 C 439.711 696.631 436.128 706.924 444.652 710.489 C 453.253 714.075 458.041 704.152 462.271 698.136 C 479.615 673.448 496.269 648.281 513.373 623.424 C 522.215 610.577 531.457 598.007 540.534 585.323 C 541.52 583.943 542.517 582.557 543.635 581.286 C 552.236 571.515 560.81 560.483 575.798 563.412 C 591.587 566.504 596.276 580.28 599.832 593.486 C 603.99 608.914 604.094 624.81 603.398 640.771 C 602.166 669.073 601.514 697.408 600.834 725.732 C 600.697 731.476 600.834 737.856 607.342 740.546 C 613.571 743.117 618.65 739.372 623.148 735.709 C 634.4 726.536 641.221 713.842 649.564 702.342 C 690.137 646.433 731.252 590.872 793.064 555.57 C 833.817 532.295 877.162 522.214 923.903 535.121 C 967.768 547.234 993.155 579.253 992.716 622.158 C 992.448 648.531 977.892 668.193 960.52 685.881 C 944.315 702.38 927.069 717.82 915.549 738.269 C 886.913 789.075 912.656 842.153 954.987 859.494 C 971.318 866.189 987.304 862.755 1002.068 853.967 C 1008.752 849.989 1014.898 845.12 1021.467 840.523 C 1021.817 844.202 1019.023 846.848 1017.139 849.691 C 987.605 894.09 933.786 902.638 890.387 869.896 C 850.702 839.952 839.581 789.249 861.516 741.932 C 872.719 717.771 890.836 699.038 908.69 680.175 C 920.205 668.008 930.932 655.21 938.881 640.809 C 953.009 615.224 943.762 585.623 917.702 570.694 C 892.6 556.315 865.487 553.478 837.515 560.619 C 804.897 568.95 778.015 587.514 753.264 609.202 C 714.187 643.444 682.368 683.893 652.977 726.368 C 637.523 748.703 622.178 771.158 602.894 790.559 C 597.838 795.646 592.469 800.395 586.01 803.656 C 576.341 808.536 568.709 805.819 564.573 795.738 C 558.766 781.592 558.668 766.571 559.084 751.692 C 560.108 714.841 561.697 678.013 562.869 641.167 C 563.132 632.76 562.53 624.332 562.469 615.914 C 562.431 610.588 561.445 604.686 556.777 602.578 C 551.277 600.089 547.157 605.828 544.413 609.441 C 533.566 623.723 523.491 638.57 513.17 653.237 C 487.411 689.843 462.786 727.243 435.361 762.67 C 431.203 768.044 426.009 772.593 419.983 775.951 C 409.169 781.978 400.754 779.185 396.163 767.675 C 391.414 755.768 390.806 743.182 392.159 730.634 C 395.928 695.631 403.104 661.074 405.531 625.875 C 408.084 588.899 407.876 552.163 398.656 515.937 C 395.04 501.721 389.989 488.097 381.755 475.821 C 362.022 446.404 328.533 436.193 295.499 449.426 C 280.773 455.322 268.354 464.751 255.995 474.5 Z " fill="rgb(41,175,182)"/><path d=" M 255.995 474.5 C 265.237 453.996 279.919 438.66 300.413 429.264 C 347.247 407.793 400.771 425.264 425.703 470.006 C 444.285 503.346 449.123 539.854 449.002 577.085 C 448.882 614.62 447.523 652.139 440.998 689.294 C 439.711 696.631 436.128 706.924 444.652 710.489 C 453.253 714.075 458.041 704.152 462.271 698.136 C 479.615 673.448 496.269 648.281 513.373 623.424 C 522.215 610.577 531.457 598.007 540.534 585.323 C 541.52 583.943 542.517 582.557 543.635 581.286 C 552.236 571.515 560.81 560.483 575.798 563.412 C 591.587 566.504 596.276 580.28 599.832 593.486 C 603.99 608.914 604.094 624.81 603.398 640.771 C 602.166 669.073 601.514 697.408 600.834 725.732 C 600.697 731.476 600.834 737.856 607.342 740.546 C 613.571 743.117 618.65 739.372 623.148 735.709 C 634.4 726.536 641.221 713.842 649.564 702.342 C 690.137 646.433 731.252 590.872 793.064 555.57 C 833.817 532.295 877.162 522.214 923.903 535.121 C 967.768 547.234 993.155 579.253 992.716 622.158 C 992.448 648.531 977.892 668.193 960.52 685.881 C 944.315 702.38 927.069 717.82 915.549 738.269 C 886.913 789.075 912.656 842.153 954.987 859.494 C 971.318 866.189 987.304 862.755 1002.068 853.967 C 1008.752 849.989 1014.898 845.12 1021.467 840.523 C 1021.817 844.202 1019.023 846.848 1017.139 849.691 C 987.605 894.09 933.786 902.638 890.387 869.896 C 850.702 839.952 839.581 789.249 861.516 741.932 C 872.719 717.771 890.836 699.038 908.69 680.175 C 920.205 668.008 930.932 655.21 938.881 640.809 C 953.009 615.224 943.762 585.623 917.702 570.694 C 892.6 556.315 865.487 553.478 837.515 560.619 C 804.897 568.95 778.015 587.514 753.264 609.202 C 714.187 643.444 682.368 683.893 652.977 726.368 C 637.523 Line truncated
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!-- Generator: Gravit.io --><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="isolation:isolate" viewBox="-15 -37 1298 1298" width="1298pt" height="1298pt"><g><path d=" M 802.821 170.332 C 802.821 170.332 1267.11 329.733 1033.382 836.126 C 1033.382 836.126 1068.608 894.546 1062.286 928.783 C 1062.286 928.783 1228.11 732.085 1116.291 450.953 C 1116.291 450.953 1033.443 215.785 802.821 170.332 Z " fill="rgb(71,75,81)"/><path d=" M 647.701 1145.387 C 647.701 1145.387 574.007 1100.145 560.316 1070.941 C 560.316 1070.941 131.203 1008.875 149.074 564.461 C 149.074 564.461 66.351 1096.347 647.701 1145.387 Z " fill="rgb(71,75,81)"/><path d=" M 255.995 474.5 C 265.237 453.996 279.919 438.66 300.413 429.264 C 347.247 407.793 400.771 425.264 425.703 470.006 C 444.285 503.346 449.123 539.854 449.002 577.085 C 448.882 614.62 447.523 652.139 440.998 689.294 C 439.711 696.631 436.128 706.924 444.652 710.489 C 453.253 714.075 458.041 704.152 462.271 698.136 C 479.615 673.448 496.269 648.281 513.373 623.424 C 522.215 610.577 531.457 598.007 540.534 585.323 C 541.52 583.943 542.517 582.557 543.635 581.286 C 552.236 571.515 560.81 560.483 575.798 563.412 C 591.587 566.504 596.276 580.28 599.832 593.486 C 603.99 608.914 604.094 624.81 603.398 640.771 C 602.166 669.073 601.514 697.408 600.834 725.732 C 600.697 731.476 600.834 737.856 607.342 740.546 C 613.571 743.117 618.65 739.372 623.148 735.709 C 634.4 726.536 641.221 713.842 649.564 702.342 C 690.137 646.433 731.252 590.872 793.064 555.57 C 833.817 532.295 877.162 522.214 923.903 535.121 C 967.768 547.234 993.155 579.253 992.716 622.158 C 992.448 648.531 977.892 668.193 960.52 685.881 C 944.315 702.38 927.069 717.82 915.549 738.269 C 886.913 789.075 912.656 842.153 954.987 859.494 C 971.318 866.189 987.304 862.755 1002.068 853.967 C 1008.752 849.989 1014.898 845.12 1021.467 840.523 C 1021.817 844.202 1019.023 846.848 1017.139 849.691 C 987.605 894.09 933.786 902.638 890.387 869.896 C 850.702 839.952 839.581 789.249 861.516 741.932 C 872.719 717.771 890.836 699.038 908.69 680.175 C 920.205 668.008 930.932 655.21 938.881 640.809 C 953.009 615.224 943.762 585.623 917.702 570.694 C 892.6 556.315 865.487 553.478 837.515 560.619 C 804.897 568.95 778.015 587.514 753.264 609.202 C 714.187 643.444 682.368 683.893 652.977 726.368 C 637.523 748.703 622.178 771.158 602.894 790.559 C 597.838 795.646 592.469 800.395 586.01 803.656 C 576.341 808.536 568.709 805.819 564.573 795.738 C 558.766 781.592 558.668 766.571 559.084 751.692 C 560.108 714.841 561.697 678.013 562.869 641.167 C 563.132 632.76 562.53 624.332 562.469 615.914 C 562.431 610.588 561.445 604.686 556.777 602.578 C 551.277 600.089 547.157 605.828 544.413 609.441 C 533.566 623.723 523.491 638.57 513.17 653.237 C 487.411 689.843 462.786 727.243 435.361 762.67 C 431.203 768.044 426.009 772.593 419.983 775.951 C 409.169 781.978 400.754 779.185 396.163 767.675 C 391.414 755.768 390.806 743.182 392.159 730.634 C 395.928 695.631 403.104 661.074 405.531 625.875 C 408.084 588.899 407.876 552.163 398.656 515.937 C 395.04 501.721 389.989 488.097 381.755 475.821 C 362.022 446.404 328.533 436.193 295.499 449.426 C 280.773 455.322 268.354 464.751 255.995 474.5 Z " fill="rgb(41,175,182)"/><path d=" M 255.995 474.5 C 265.237 453.996 279.919 438.66 300.413 429.264 C 347.247 407.793 400.771 425.264 425.703 470.006 C 444.285 503.346 449.123 539.854 449.002 577.085 C 448.882 614.62 447.523 652.139 440.998 689.294 C 439.711 696.631 436.128 706.924 444.652 710.489 C 453.253 714.075 458.041 704.152 462.271 698.136 C 479.615 673.448 496.269 648.281 513.373 623.424 C 522.215 610.577 531.457 598.007 540.534 585.323 C 541.52 583.943 542.517 582.557 543.635 581.286 C 552.236 571.515 560.81 560.483 575.798 563.412 C 591.587 566.504 596.276 580.28 599.832 593.486 C 603.99 608.914 604.094 624.81 603.398 640.771 C 602.166 669.073 601.514 697.408 600.834 725.732 C 600.697 731.476 600.834 737.856 607.342 740.546 C 613.571 743.117 618.65 739.372 623.148 735.709 C 634.4 726.536 641.221 713.842 649.564 702.342 C 690.137 646.433 731.252 590.872 793.064 555.57 C 833.817 532.295 877.162 522.214 923.903 535.121 C 967.768 547.234 993.155 579.253 992.716 622.158 C 992.448 648.531 977.892 668.193 960.52 685.881 C 944.315 702.38 927.069 717.82 915.549 738.269 C 886.913 789.075 912.656 842.153 954.987 859.494 C 971.318 866.189 987.304 862.755 1002.068 853.967 C 1008.752 849.989 1014.898 845.12 1021.467 840.523 C 1021.817 844.202 1019.023 846.848 1017.139 849.691 C 987.605 894.09 933.786 902.638 890.387 869.896 C 850.702 839.952 839.581 789.249 861.516 741.932 C 872.719 717.771 890.836 699.038 908.69 680.175 C 920.205 668.008 930.932 655.21 938.881 640.809 C 953.009 615.224 943.762 585.623 917.702 570.694 C 892.6 556.315 865.487 553.478 837.515 560.619 C 804.897 568.95 778.015 587.514 753.264 609.202 C 714.187 643.444 682.368 683.893 652.977 726.368 C 637.523 748.703 622.178 771Line truncated

Before

Width:  |  Height:  |  Size: 6.6 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.9 KiB

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 29 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 29 KiB

+1 -1
View File
@@ -12,12 +12,12 @@ const { class: className } = Astro.props;
const navLinks = [
{ name: 'Home', href: '/' },
{ name: 'WRNexus', href: 'https://wrnexus.com/', external: true },
{ name: 'About', href: '/about' },
{ name: 'Services', href: '/services' },
{ name: 'Portfolio', href: '/portfolio' },
{ name: 'Blog', href: '/blog' },
{ name: 'Contact', href: '/contact' },
{ name: 'WRNexus', href: 'https://wrnexus.com/', external: true },
];
const currentPath = Astro.url.pathname;
+14 -10
View File
@@ -179,7 +179,7 @@ const techStack = [
/>
<!-- Hero Section - Enhanced -->
<section class="relative min-h-screen flex items-center overflow-hidden bg-gradient-to-br from-secondary-900 via-secondary-800 to-primary-900">
<section class="relative lg:min-h-[85vh] flex items-center overflow-hidden bg-gradient-to-br from-secondary-900 via-secondary-800 to-primary-900">
<!-- Background decorative elements -->
<div class="absolute inset-0 overflow-hidden pointer-events-none" aria-hidden="true">
<div class="absolute -top-40 -right-40 w-[600px] h-[600px] bg-primary/20 rounded-full blur-3xl animate-pulse-slow"></div>
@@ -191,8 +191,10 @@ const techStack = [
<div class="absolute inset-0 bg-gradient-to-b from-transparent via-transparent to-secondary-900/50"></div>
</div>
<div class="container-wrapper relative z-10 py-24">
<div class="max-w-5xl mx-auto text-center">
<div class="container-wrapper relative z-10 py-24 lg:py-32">
<div class="grid grid-cols-1 lg:grid-cols-2 gap-12 lg:gap-16 items-center">
<!-- Left column — copy + CTAs -->
<div class="text-center lg:text-left">
<!-- Trust badge -->
<div class="inline-flex items-center gap-2 px-4 py-2 rounded-full bg-white/10 backdrop-blur-sm border border-white/20 mb-8 opacity-0 animate-slide-up">
<svg class="w-5 h-5 text-accent-400" fill="currentColor" viewBox="0 0 20 20" aria-hidden="true">
@@ -202,17 +204,17 @@ const techStack = [
</div>
<!-- Main heading — benefit-led: outcome + audience -->
<h1 class="text-5xl sm:text-6xl lg:text-7xl xl:text-8xl font-bold text-white leading-[1.1] tracking-tight">
<h1 class="text-4xl md:text-5xl lg:text-6xl font-bold text-white leading-[1.1] tracking-tight">
<span class="block opacity-0 animate-slide-up" style="animation-delay: 0.2s;">Custom Software That</span>
<span class="block opacity-0 animate-slide-up" style="animation-delay: 0.4s;">Powers <span class="text-transparent bg-clip-text bg-gradient-to-r from-primary-400 via-primary-300 to-accent-400">Enterprises &amp; Governments</span></span>
</h1>
<p class="mt-8 text-xl sm:text-2xl text-secondary-200 max-w-3xl mx-auto opacity-0 animate-slide-up leading-relaxed" style="animation-delay: 0.6s;">
<p class="mt-6 text-lg sm:text-xl text-secondary-200 max-w-xl mx-auto lg:mx-0 opacity-0 animate-slide-up leading-relaxed" style="animation-delay: 0.6s;">
We design, build, and run production-grade web, mobile, and ERP systems for startups, enterprises, and government bodies.
</p>
<!-- Dual CTA Buttons — action verb + clear secondary -->
<div class="mt-12 flex flex-wrap justify-center gap-4 opacity-0 animate-slide-up" style="animation-delay: 0.8s;">
<div class="mt-10 flex flex-wrap justify-center lg:justify-start gap-4 opacity-0 animate-slide-up" style="animation-delay: 0.8s;">
<a
href="/contact?source=hero"
data-cta="hero-primary"
@@ -238,7 +240,7 @@ const techStack = [
<!-- Tertiary click-to-call — one-tap dial for visitors who'd rather
talk now. Min 48px tap target per WCAG 2.5.5 / Apple HIG. -->
<p class="mt-6 text-base sm:text-lg text-secondary-200 opacity-0 animate-slide-up flex flex-wrap items-center justify-center gap-x-2 gap-y-1" style="animation-delay: 0.85s;">
<p class="mt-6 text-base sm:text-lg text-secondary-200 opacity-0 animate-slide-up flex flex-wrap items-center justify-center lg:justify-start gap-x-2 gap-y-1" style="animation-delay: 0.85s;">
<span>Prefer to talk now?</span>
<a
href="tel:+919561417403"
@@ -254,7 +256,7 @@ const techStack = [
</p>
<!-- Micro-trust line under CTAs -->
<p class="mt-6 text-sm sm:text-base text-secondary-300 opacity-0 animate-slide-up flex flex-wrap items-center justify-center gap-x-3 gap-y-2" style="animation-delay: 0.9s;" aria-label="Trust signals">
<p class="mt-6 text-sm sm:text-base text-secondary-300 opacity-0 animate-slide-up flex flex-wrap items-center justify-center lg:justify-start gap-x-3 gap-y-2" style="animation-delay: 0.9s;" aria-label="Trust signals">
<span class="inline-flex items-center gap-2">
<svg class="w-4 h-4 text-accent-400" fill="currentColor" viewBox="0 0 20 20" aria-hidden="true">
<path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clip-rule="evenodd"/>
@@ -266,14 +268,16 @@ const techStack = [
<span class="hidden sm:inline text-secondary-500" aria-hidden="true">·</span>
<span>No commitment</span>
</p>
</div>
<!-- /Left column -->
<!-- Product preview — framed dashboard mock so the hero leads with a
<!-- Right column — framed dashboard mock so the hero leads with a
concrete product visual, not text alone. The image is a polished
placeholder UI (public/images/product-dashboard.svg); swap in a
real product screenshot or screen-recording poster frame
(≥1200×720, .webp/.png) at the same path — no template change
needed. Explicit width/height keep CLS at zero while it loads. -->
<figure class="mt-16 sm:mt-20 max-w-4xl mx-auto opacity-0 animate-slide-up" style="animation-delay: 1s;">
<figure class="mt-4 lg:mt-0 w-full max-w-xl mx-auto lg:mx-0 lg:ml-auto opacity-0 animate-slide-up" style="animation-delay: 1s;">
<div class="relative rounded-2xl border border-white/15 bg-white/5 backdrop-blur-sm shadow-2xl shadow-primary/20 overflow-hidden">
<!-- Glow behind the frame -->
<div class="absolute -inset-px rounded-2xl bg-gradient-to-tr from-primary-500/10 via-transparent to-accent-400/10 pointer-events-none" aria-hidden="true"></div>