Changes for page Public Web Site

Last modified by Agnease on 2026/07/03 16:14

From version 25.15
edited by Agnease
on 2026/06/30 11:08
Change comment: There is no comment for this version
To version 28.24
edited by Agnease
on 2026/07/03 13:15
Change comment: There is no comment for this version

Summary

Details

Page properties
Content
... ... @@ -2,7 +2,45 @@
2 2  #macro (displayPublicContent)
3 3   #set ($discard = $xwiki.ssx.use('PublicWebSite.WebHome'))
4 4   {{html clean="false"}}
5 + <section class="hero hero-saas" id="top">
6 + <div class="container">
7 + <div class="hero-layout">
8 + <div class="hero-copy">
9 + <h1>Professional XWiki consulting <span>and engineering</span></h1>
5 5  
11 + <p class="lead">
12 + Agnease helps organizations upgrade, maintain, secure and extend production XWiki platforms with practical engineering support, custom development, integrations and long-term care.
13 + </p>
14 +
15 + <ul class="benefits">
16 + <li>XWiki LTS upgrades</li>
17 + <li>Maintenance and support</li>
18 + <li>Custom XWiki development</li>
19 + <li>Migrations and integrations</li>
20 + </ul>
21 +
22 + <div class="hero-actions" id="hero-cta">
23 + <a class="btn btn-primary" href="https://calendly.com/alex-agnease/30min?back=1&month=2026-06">
24 + Book a free discussion
25 + </a>
26 + <a class="btn btn-secondary" href="$xwiki.getURL('services.WebHome')">View XWiki services</a>
27 + </div>
28 + </div>
29 +
30 + <div class="hero-image-wrapper">
31 + <img
32 + class="hero-image"
33 + src="$xwiki.getDocument('PublicWebSite.WebHome').getAttachmentURL('agnease-xwiki-hero.png')"
34 + alt="Illustration of a professional XWiki platform dashboard with upgrade, security and maintenance elements"
35 + width="1200"
36 + height="900"
37 + loading="eager"
38 + />
39 + </div>
40 + </div>
41 + </div>
42 + </section>
43 +#*
6 6   <section class="hero hero-centered" aria-labelledby="hero-title">
7 7   <div class="container hero-inner">
8 8   <h1 id="hero-title">Professional XWiki consulting and engineering</h1>
... ... @@ -26,7 +26,7 @@
26 26   </div>
27 27   </div>
28 28   </section>
29 -
67 +*#
30 30   <section class="trust-strip" aria-label="Agnease experience">
31 31   <div class="container">
32 32   <ul>
... ... @@ -111,9 +111,9 @@
111 111   </div>
112 112   </section>
113 113  
114 - <section class="industry-trust-section" aria-labelledby="industry-trust-title">
152 + <section class="contrast-band" aria-labelledby="industry-trust-title">
115 115   <div class="container">
116 - <div class="industry-trust-panel">
154 + <div class="contrast-panel">
117 117   <h2 id="industry-trust-title">Trusted XWiki expertise for business-critical platforms</h2>
118 118  
119 119   <p class="section-intro">
... ... @@ -121,7 +121,7 @@
121 121   government institutions, transportation, software development, compliance programs and regulated environments.
122 122   </p>
123 123  
124 - <div class="industry-tags" aria-label="Industries and environments supported">
162 + <div class="contrast-tags" aria-label="Industries and environments supported">
125 125   <span>Healthcare</span>
126 126   <span>Financial services</span>
127 127   <span>Scientific research</span>
... ... @@ -132,7 +132,7 @@
132 132   <span>Regulated environments</span>
133 133   </div>
134 134  
135 - <p class="industry-support">
173 + <p class="contrast-support">
136 136   Organizations rely on these platforms to manage documentation, workflows, compliance processes,
137 137   research knowledge and critical business information. From upgrades and authentication integrations
138 138   to workflow systems and long-term maintenance, Agnease helps keep XWiki secure, stable and ready for the future.
agnease-xwiki-hero.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Admin
Size
... ... @@ -1,0 +1,1 @@
1 +981.8 KB
Content
XWiki.StyleSheetExtension[0]
code
... ... @@ -1,19 +1,30 @@
1 1  /* ========== Agnease Public Website ========== */
2 -
3 -
4 -
2 +/*
3 +@brand: #00937D;
4 +@brand-strong: #007B6A;
5 +@brand-soft: #E7FFF8;
6 +@brand-bg: #F4FCFA;
7 +@text: #2D3A34;
8 +@muted: #5B6B64;
9 +@line: #E4ECE9;
10 +@radius: 16px;
11 +@shadow-sm: 0 6px 20px rgba(0, 0, 0, .06);
12 +@shadow: 0 12px 36px rgba(0, 0, 0, .08);
13 +@maxw: 1140px;
14 +*/
15 +@brand: #00937D;
16 +@brand-strong: #007B6A;
17 +@brand-soft: #E7FFF8;
5 5  @brand-bg: #F7F9FC;
6 6  @text: #07182D;
7 7  @text-soft: #10243D;
8 8  @muted: #64748B;
9 -
10 10  @line: #E6EBF2;
11 11  @radius: 18px;
12 -
13 13  @shadow-sm: 0 18px 45px rgba(15, 23, 42, .06);
14 14  @shadow: 0 30px 80px rgba(15, 23, 42, .12);
15 -@maxw: 1240px;
16 -/* */
26 +@maxw: 1140px;
27 +
17 17  @section-padding: 30px 0;
18 18  @section-padding-mobile: 28px 0;
19 19  
... ... @@ -139,7 +139,7 @@
139 139  
140 140  /* ========== Buttons ========== */
141 141  
142 -.btn-primary {
153 +/*.btn-primary {
143 143   background: @brand;
144 144   border-color: @brand;
145 145   color: #fff;
... ... @@ -151,18 +151,12 @@
151 151   color: #fff;
152 152   }
153 153  }
154 -
165 +*/
155 155  .btn-secondary {
156 - color: @brand;
167 + color: @text;
157 157   background: #fff;
158 - border: 1px solid fade(@brand, 35%);
169 + border: 1px solid fade(@text, 35%);
159 159  
160 - &:hover,
161 - &:focus {
162 - color: @brand-strong;
163 - border-color: @brand;
164 - background: @brand-bg;
165 - }
166 166  }
167 167  
168 168  /* ========== Hero ========== */
... ... @@ -174,9 +174,6 @@
174 174  
175 175   &.hero-centered {
176 176   text-align: center;
177 - background:
178 - radial-gradient(50rem 18rem at 50% -10%, @brand-soft 0%, transparent 60%),
179 - radial-gradient(50rem 18rem at 50% 0%, #E8F6F3 0%, transparent 60%);
180 180   display: flex;
181 181   align-items: center;
182 182   justify-content: center;
... ... @@ -245,34 +245,122 @@
245 245   margin-top: 22px;
246 246  }
247 247  
248 -/* ========== Trust Strip ========== */
250 +/* ========== Contrast Band ========== */
249 249  
250 -.trust-strip {
251 - padding: 18px 0;
252 - border-top: 1px solid @line;
253 - background: #fff;
252 +.contrast-band {
253 + position: relative;
254 + overflow: visible;
255 + isolation: isolate;
256 + padding: 54px 0;
257 + border-top: 0;
258 + color: #fff;
259 + background: transparent;
260 +}
254 254  
255 - ul {
256 - max-width: 960px;
257 - margin: 0 auto;
258 - padding: 0;
259 - list-style: none;
260 - display: flex;
261 - justify-content: center;
262 - gap: 22px;
263 - flex-wrap: wrap;
264 - color: @muted;
265 - font-size: 13px;
266 - }
262 +.contrast-band::before {
263 + content: "";
264 + position: absolute;
265 + top: 0;
266 + bottom: 0;
267 + left: 50%;
268 + width: 100vw;
269 + transform: translateX(-50%);
270 + z-index: -2;
271 + background:
272 + radial-gradient(circle at 18% 18%, fade(@brand, 22%) 0%, transparent 28%),
273 + radial-gradient(circle at 86% 12%, fade(@brand, 16%) 0%, transparent 30%),
274 + linear-gradient(135deg, @text 0%, @text-soft 100%);
275 +}
267 267  
268 - li {
269 - display: flex;
270 - align-items: center;
271 - gap: 7px;
277 +.contrast-band::after {
278 + content: "";
279 + position: absolute;
280 + top: 0;
281 + bottom: 0;
282 + left: 50%;
283 + width: 100vw;
284 + transform: translateX(-50%);
285 + z-index: -1;
286 + background:
287 + linear-gradient(90deg, fade(#fff, 4%) 1px, transparent 1px),
288 + linear-gradient(180deg, fade(#fff, 4%) 1px, transparent 1px);
289 + background-size: 52px 52px;
290 + opacity: .38;
291 + pointer-events: none;
292 +}
293 +
294 +.contrast-band .container {
295 + position: relative;
296 + z-index: 1;
297 +}
298 +
299 +.contrast-panel {
300 + max-width: 1040px;
301 + margin: 0 auto;
302 + text-align: center;
303 +}
304 +
305 +.contrast-band h2 {
306 + max-width: 860px;
307 + margin: 0 auto 12px;
308 + color: #fff;
309 +}
310 +
311 +.contrast-band .section-intro {
312 + max-width: 840px;
313 + margin: 0 auto 26px;
314 + color: #D9E3EE;
315 +}
316 +
317 +.contrast-tags {
318 + max-width: 940px;
319 + margin: 0 auto;
320 + display: flex;
321 + flex-wrap: wrap;
322 + justify-content: center;
323 + gap: 10px;
324 +}
325 +
326 +.contrast-tags span {
327 + display: inline-flex;
328 + align-items: center;
329 + padding: 8px 13px;
330 + border: 1px solid fade(#fff, 18%);
331 + border-radius: 999px;
332 + background: fade(#fff, 8%);
333 + color: #F8FAFC;
334 + font-size: 13px;
335 + font-weight: 700;
336 + line-height: 1.2;
337 +}
338 +
339 +.contrast-tags span::before {
340 + content: "";
341 + width: 7px;
342 + height: 7px;
343 + margin-right: 8px;
344 + border-radius: 50%;
345 + background: @brand;
346 + box-shadow: 0 0 0 4px fade(@brand, 18%);
347 +}
348 +
349 +.contrast-support {
350 + max-width: 860px;
351 + margin: 30px auto 0;
352 + color: #D9E3EE;
353 + text-align: center;
354 + font-size: 15px;
355 + line-height: 1.7;
356 +}
357 +
358 +@media (max-width: 640px) {
359 + .contrast-band {
360 + padding: 40px 0;
272 272   }
273 273  
274 - i {
275 - color: @brand;
363 + .contrast-tags span {
364 + font-size: 12px;
365 + padding: 8px 11px;
276 276   }
277 277  }
278 278  
... ... @@ -323,7 +323,6 @@
323 323  .pathway-card,
324 324  .service-card,
325 325  .resource-card {
326 - background: #fff;
327 327   border: 1px solid @line;
328 328   border-radius: @radius;
329 329   box-shadow: @shadow-sm;
... ... @@ -433,80 +433,6 @@
433 433   }
434 434  }
435 435  
436 -.industry-trust-section {
437 - background:
438 - radial-gradient(42rem 16rem at 50% 0%, @brand-bg 0%, transparent 70%);
439 -
440 - .industry-trust-panel {
441 - max-width: 1040px;
442 - margin: 0 auto;
443 - padding: 30px 28px;
444 - border: 1px solid fade(@brand, 16%);
445 - border-radius: @radius;
446 - background:
447 - radial-gradient(34rem 12rem at 50% 0%, fade(@brand-soft, 75%) 0%, #fff 72%);
448 - box-shadow: @shadow-sm;
449 - text-align: center;
450 - }
451 -
452 - h2 {
453 - margin-bottom: 12px;
454 - }
455 -
456 - .section-intro {
457 - margin-bottom: 20px;
458 - max-width: 820px;
459 - }
460 -
461 - .industry-tags {
462 - max-width: 880px;
463 - margin: 0 auto;
464 - display: flex;
465 - flex-wrap: wrap;
466 - justify-content: center;
467 - gap: 10px;
468 - }
469 -
470 - .industry-tags span {
471 - display: inline-flex;
472 - align-items: center;
473 - padding: 7px 12px;
474 - border: 1px solid fade(@brand, 20%);
475 - border-radius: 999px;
476 - background: #fff;
477 - color: @text;
478 - font-size: 13px;
479 - font-weight: 600;
480 - line-height: 1.2;
481 - box-shadow: 0 3px 10px rgba(0, 0, 0, .04);
482 - }
483 -
484 - .industry-support {
485 - max-width: 820px;
486 - margin: 22px auto 0;
487 - color: @muted;
488 - font-size: 16px;
489 - line-height: 1.6;
490 - }
491 -}
492 -
493 -@media (max-width: 640px) {
494 - .industry-trust-section {
495 - .industry-trust-panel {
496 - padding: 24px 18px;
497 - }
498 -
499 - .industry-tags {
500 - gap: 8px;
501 - }
502 -
503 - .industry-tags span {
504 - font-size: 12px;
505 - padding: 6px 10px;
506 - }
507 - }
508 -}
509 -
510 510  /* ========== Services ========== */
511 511  
512 512  .services {
... ... @@ -519,7 +519,6 @@
519 519   align-items: flex-start;
520 520   gap: 16px;
521 521   padding: 22px;
522 - background: #fff;
523 523   border: 1px solid @line;
524 524   border-radius: @radius;
525 525   box-shadow: @shadow-sm;
... ... @@ -607,7 +607,6 @@
607 607   position: relative;
608 608   padding: 16px 16px 16px 58px;
609 609   margin-bottom: 12px;
610 - background: #fff;
611 611   border: 1px solid @line;
612 612   border-radius: @radius;
613 613   box-shadow: @shadow-sm;
... ... @@ -739,8 +739,8 @@
739 739  
740 740  /* ========== CTA ========== */
741 741  
742 -.cta-section {
743 - padding: @section-padding;
755 +#mainContentArea .cta-section {
756 + padding: 44px 0 56px;
744 744  
745 745   .contact-inline {
746 746   margin: 0;
... ... @@ -752,27 +752,70 @@
752 752   }
753 753  }
754 754  
755 -.cta-panel {
756 - max-width: 860px;
768 +#mainContentArea .cta-panel {
769 + position: relative;
770 + overflow: hidden;
771 + max-width: 1040px;
757 757   margin: 0 auto;
758 - padding: 32px;
759 - border-radius: @radius;
760 - border: 1px solid fade(@brand, 20%);
773 + padding: 48px 40px;
774 + border: 0;
775 + border-radius: 26px;
761 761   background:
762 - radial-gradient(34rem 12rem at 50% 0%, @brand-soft 0%, #fff 70%);
763 - box-shadow: @shadow-sm;
777 + radial-gradient(circle at 88% 10%, fade(@brand, 24%) 0%, transparent 30%),
778 + linear-gradient(135deg, @text 0%, @text-soft 100%);
779 + color: #fff;
780 + box-shadow: @shadow;
764 764   text-align: center;
782 +}
765 765  
766 - h2 {
767 - margin-top: 0;
768 - }
784 +#mainContentArea .cta-panel::before {
785 + content: "";
786 + position: absolute;
787 + inset: 0;
788 + background:
789 + linear-gradient(90deg, fade(#fff, 4%) 1px, transparent 1px),
790 + linear-gradient(180deg, fade(#fff, 4%) 1px, transparent 1px);
791 + background-size: 48px 48px;
792 + opacity: .4;
793 + pointer-events: none;
794 +}
769 769  
770 - p {
771 - color: @muted;
772 - line-height: 1.55;
773 - }
796 +#mainContentArea .cta-panel h2,
797 +#mainContentArea .cta-panel p,
798 +#mainContentArea .cta-panel .btn {
799 + position: relative;
800 + z-index: 1;
774 774  }
775 775  
803 +#mainContentArea .cta-panel h2 {
804 + max-width: 760px;
805 + margin: 0 auto 16px;
806 + color: #fff;
807 +}
808 +
809 +#mainContentArea .cta-panel p {
810 + max-width: 760px;
811 + margin: 0 auto 28px;
812 + color: #DBE4EF;
813 + font-size: 16px;
814 + line-height: 1.6;
815 +}
816 +
817 +#mainContentArea .cta-panel .btn-primary {
818 + border-color: #fff;
819 + background: #fff;
820 + color: @text;
821 + box-shadow: 0 18px 42px rgba(0, 0, 0, .18);
822 +}
823 +
824 +#mainContentArea .cta-panel .btn-primary:hover,
825 +#mainContentArea .cta-panel .btn-primary:focus {
826 + border-color: #fff;
827 + background: #fff;
828 + color: @brand-strong;
829 + text-decoration: none;
830 +}
831 +
776 776  .resource-inline-cta {
777 777   display: flex;
778 778   align-items: center;
... ... @@ -904,9 +904,14 @@
904 904   gap: 14px;
905 905   }
906 906  
907 - .cta-panel {
908 - padding: 24px 20px;
963 + #mainContentArea .cta-panel {
964 + padding: 30px 22px;
965 + border-radius: 20px;
909 909   }
967 +
968 + #mainContentArea .cta-panel .btn-primary {
969 + width: 100%;
970 + }
910 910  }
911 911  
912 912  /* ========== Resource / Article Pages ========== */
... ... @@ -918,9 +918,6 @@
918 918  .resource-header {
919 919   padding: @section-padding;
920 920   border-top: none;
921 - background:
922 - radial-gradient(50rem 18rem at 50% -10%, @brand-soft 0%, transparent 60%),
923 - radial-gradient(50rem 18rem at 50% 0%, #E8F6F3 0%, transparent 60%);
924 924  
925 925   h1 {
926 926   margin: 0 auto 14px;
... ... @@ -1068,7 +1068,6 @@
1068 1068   border: 1px solid @line;
1069 1069   border-radius: @radius;
1070 1070   padding: 18px;
1071 - background: #fff;
1072 1072   box-shadow: @shadow-sm;
1073 1073  
1074 1074   h4 {
... ... @@ -1167,7 +1167,6 @@
1167 1167  
1168 1168  .product-card {
1169 1169   position: relative;
1170 - background: #fff;
1171 1171   border: 1px solid @line;
1172 1172   border-radius: @radius;
1173 1173   box-shadow: @shadow-sm;
... ... @@ -1317,7 +1317,6 @@
1317 1317  .product-info-card,
1318 1318  .product-feature,
1319 1319  .product-gallery-panel {
1320 - background: #fff;
1321 1321   border: 1px solid @line;
1322 1322   border-radius: @radius;
1323 1323   box-shadow: @shadow-sm;
... ... @@ -1560,7 +1560,6 @@
1560 1560  /* ========== Resources Index ========== */
1561 1561  
1562 1562  .resources-index-page {
1563 - background: #fff;
1564 1564  
1565 1565   .services-grid {
1566 1566   grid-template-columns: repeat(2, minmax(0, 1fr));
... ... @@ -1596,3 +1596,321 @@
1596 1596   color: @muted;
1597 1597   }
1598 1598  }
1653 +
1654 +/* ========== Global Theme Background ========== */
1655 +
1656 +html,
1657 +body {
1658 + min-height: 100%;
1659 +}
1660 +
1661 +body {
1662 + color: @text;
1663 + background:
1664 + radial-gradient(circle at 12% 8%, rgba(0, 147, 125, 0.08) 0, transparent 26%),
1665 + radial-gradient(circle at 90% 28%, rgba(7, 24, 45, 0.05) 0, transparent 30%),
1666 + linear-gradient(180deg, #fff 0, @brand-bg 42%, #fff 100%) !important;
1667 + background-attachment: fixed;
1668 +}
1669 +
1670 +/* Let the body background show through the XWiki wrappers.
1671 +#mainContentArea,
1672 +.resource-page,
1673 +.resources-index-page {
1674 + background: transparent !important;
1675 + background-image: none !important;
1676 +}
1677 +*/
1678 +/* Remove local decorative backgrounds that compete with the global gradient.
1679 +.hero,
1680 +.hero.hero-centered,
1681 +.trust-strip,
1682 +.industry-trust-section,
1683 +.split-section,
1684 +.resource-strip,
1685 +.homepage-resource-strip,
1686 +.resource-header,
1687 +.product-section-muted,
1688 +.resources-index-page {
1689 + background: transparent !important;
1690 + background-image: none !important;
1691 +}
1692 + */
1693 +/* Keep large panels readable, but remove their inner gradients.
1694 +.industry-trust-section .industry-trust-panel,
1695 +.cta-panel,
1696 +.resource-inline-cta,
1697 +.resource-note,
1698 +.resource-cta {
1699 + background: #fff !important;
1700 + background-image: none !important;
1701 +} */
1702 +
1703 +/* ========== Main Page Hero / SaaS Layout ========== */
1704 +
1705 +#mainContentArea .hero.hero-saas {
1706 + min-height: auto;
1707 + padding: 60px 0 34px;
1708 + display: flex;
1709 + align-items: center;
1710 + overflow: hidden;
1711 + background: transparent;
1712 +}
1713 +
1714 +#mainContentArea .hero-layout {
1715 + max-width: 1120px;
1716 + margin: 0 auto;
1717 + display: grid;
1718 + grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr);
1719 + gap: 56px;
1720 + align-items: center;
1721 +}
1722 +
1723 +#mainContentArea .hero-copy {
1724 + min-width: 0;
1725 + text-align: left;
1726 +}
1727 +
1728 +#mainContentArea .hero.hero-saas h1 {
1729 + max-width: 640px;
1730 + margin: 0 0 26px;
1731 + font-size: 60px;
1732 + font-weight: 800;
1733 + line-height: 1;
1734 + letter-spacing: -3px;
1735 +}
1736 +
1737 +#mainContentArea .hero.hero-saas h1 span {
1738 + color: @brand;
1739 +}
1740 +
1741 +#mainContentArea .hero.hero-saas .lead {
1742 + max-width: 590px;
1743 + margin: 0 0 28px;
1744 + color: #334155;
1745 + text-align: left;
1746 + font-size: 18px;
1747 + line-height: 1.6;
1748 +}
1749 +
1750 +#mainContentArea .hero.hero-saas .benefits {
1751 + max-width: 620px;
1752 + margin: 0 0 30px;
1753 + padding: 0;
1754 + display: grid;
1755 + grid-template-columns: repeat(2, minmax(0, 1fr));
1756 + gap: 10px 24px;
1757 + list-style: none;
1758 + color: #475569;
1759 + font-size: 15px;
1760 + text-align: left;
1761 +}
1762 +
1763 +#mainContentArea .hero.hero-saas .benefits li {
1764 + display: grid;
1765 + grid-template-columns: 18px minmax(0, 1fr);
1766 + column-gap: 8px;
1767 + align-items: start;
1768 + margin: 0;
1769 + line-height: 1.45;
1770 +}
1771 +
1772 +#mainContentArea .hero.hero-saas .benefits li::before {
1773 + content: "✓";
1774 + display: block;
1775 + width: 18px;
1776 + color: @brand;
1777 + font-weight: 900;
1778 + line-height: 1.45;
1779 + text-align: left;
1780 + margin: 0;
1781 +}
1782 +
1783 +#mainContentArea .hero.hero-saas .hero-actions,
1784 +#mainContentArea .hero.hero-saas #hero-cta {
1785 + display: flex;
1786 + flex-wrap: wrap;
1787 + justify-content: flex-start;
1788 + gap: 12px;
1789 + margin-top: 0;
1790 +}
1791 +
1792 +#mainContentArea .hero-image-wrapper {
1793 + min-width: 0;
1794 + display: flex;
1795 + justify-content: center;
1796 + align-items: center;
1797 +}
1798 +
1799 +#mainContentArea .hero-image {
1800 + display: block;
1801 + width: 100%;
1802 + max-width: 620px;
1803 + height: auto;
1804 + border: 0;
1805 +}
1806 +
1807 +/* ========== Main Page Hero Responsive ========== */
1808 +
1809 +@media (max-width: 1100px) {
1810 + #mainContentArea .hero-layout {
1811 + max-width: 760px;
1812 + grid-template-columns: 1fr;
1813 + gap: 34px;
1814 + }
1815 +
1816 + #mainContentArea .hero-copy {
1817 + order: 1;
1818 + text-align: center;
1819 + }
1820 +
1821 + #mainContentArea .hero-image-wrapper {
1822 + order: 2;
1823 + }
1824 +
1825 + #mainContentArea .hero.hero-saas h1 {
1826 + margin-left: auto;
1827 + margin-right: auto;
1828 + text-align: center;
1829 + }
1830 +
1831 + #mainContentArea .hero.hero-saas .lead {
1832 + margin-left: auto;
1833 + margin-right: auto;
1834 + text-align: center;
1835 + }
1836 +
1837 + #mainContentArea .hero.hero-saas .benefits {
1838 + margin-left: auto;
1839 + margin-right: auto;
1840 + }
1841 +
1842 + #mainContentArea .hero.hero-saas .hero-actions,
1843 + #mainContentArea .hero.hero-saas #hero-cta {
1844 + justify-content: center;
1845 + }
1846 +
1847 + #mainContentArea .hero-image {
1848 + max-width: 620px;
1849 + }
1850 +}
1851 +
1852 +@media (max-width: 640px) {
1853 + #mainContentArea .hero.hero-saas {
1854 + padding: 42px 0 28px;
1855 + }
1856 +
1857 + #mainContentArea .hero-layout {
1858 + gap: 28px;
1859 + }
1860 +
1861 + #mainContentArea .hero.hero-saas h1 {
1862 + font-size: 42px;
1863 + letter-spacing: -1.5px;
1864 + }
1865 +
1866 + #mainContentArea .hero.hero-saas .lead {
1867 + font-size: 17px;
1868 + }
1869 +
1870 + #mainContentArea .hero.hero-saas .benefits {
1871 + grid-template-columns: 1fr;
1872 + }
1873 +
1874 + #mainContentArea .hero-image {
1875 + max-width: 100%;
1876 + }
1877 +}
1878 +
1879 +/* ========== Accessibility / Contrast Improvements ========== */
1880 +
1881 +/* Make the global background softer and less distracting. */
1882 +body {
1883 + background:
1884 + radial-gradient(circle at 12% 8%, rgba(0, 147, 125, 0.035) 0, transparent 26%),
1885 + radial-gradient(circle at 90% 28%, rgba(7, 24, 45, 0.025) 0, transparent 30%),
1886 + linear-gradient(180deg, #fff 0, @brand-bg 42%, #fff 100%) !important;
1887 + background-attachment: scroll;
1888 +}
1889 +
1890 +/* Keep the article area readable while preserving the page background around it. */
1891 +#mainContentArea .resource-layout {
1892 + padding: 28px;
1893 + border: 1px solid fade(@line, 85%);
1894 + border-radius: @radius;
1895 + background: rgba(255, 255, 255, .88);
1896 + box-shadow: @shadow-sm;
1897 +}
1898 +
1899 +/* Ensure all reusable cards have a real surface, not transparent over the gradient. */
1900 +#mainContentArea .widget,
1901 +#mainContentArea .pathway-card,
1902 +#mainContentArea .service-card,
1903 +#mainContentArea .resource-card,
1904 +#mainContentArea .services .service,
1905 +#mainContentArea .product-card,
1906 +#mainContentArea .product-feature,
1907 +#mainContentArea .product-summary-card,
1908 +#mainContentArea .product-info-card {
1909 + background: #fff;
1910 +}
1911 +
1912 +/* Make notes more readable and visually stronger. */
1913 +#mainContentArea .resource-note {
1914 + border: 1px solid fade(@brand, 18%);
1915 + border-left: 4px solid @brand;
1916 + background: #fff;
1917 + box-shadow: 0 10px 28px rgba(15, 23, 42, .045);
1918 +}
1919 +
1920 +/* Keep the sidebar clearly separated from the background. */
1921 +#mainContentArea .resource-sidebar {
1922 + background: #fff;
1923 +}
1924 +
1925 +/* Make CTA panels stand out more clearly. */
1926 +#mainContentArea .resource-cta,
1927 +#mainContentArea .resource-inline-cta {
1928 + background: #fff;
1929 +}
1930 +
1931 +/* Improve table readability on long resource pages. */
1932 +#mainContentArea .resource-content table {
1933 + background: #fff;
1934 +}
1935 +
1936 +#mainContentArea .resource-content table th {
1937 + color: @text;
1938 + background: #F8FAFC;
1939 +}
1940 +
1941 +#mainContentArea .resource-content table td {
1942 + color: @text-soft;
1943 +}
1944 +
1945 +/* Slightly improve paragraph/list contrast in long articles. */
1946 +#mainContentArea .resource-content p,
1947 +#mainContentArea .resource-content li {
1948 + color: @text-soft;
1949 +}
1950 +
1951 +#mainContentArea .resource-content .resource-note p,
1952 +#mainContentArea .resource-content .resource-checklist li,
1953 +#mainContentArea .resource-content .process-list li {
1954 + color: @muted;
1955 +}
1956 +
1957 +@media (max-width: 900px) {
1958 + #mainContentArea .resource-layout {
1959 + padding: 22px;
1960 + }
1961 +}
1962 +
1963 +@media (max-width: 640px) {
1964 + #mainContentArea .resource-layout {
1965 + padding: 18px;
1966 + border-radius: 14px;
1967 + }
1968 +}
1969 +
1970 +