Changes for page Public Web Site

Last modified by Agnease on 2026/07/07 14:40

From version 29.14
edited by Agnease
on 2026/07/03 15:45
Change comment: There is no comment for this version
To version 28.44
edited by Agnease
on 2026/07/03 14:23
Change comment: There is no comment for this version

Summary

Details

Page properties
Content
... ... @@ -149,9 +149,9 @@
149 149   </div>
150 150   </section>
151 151  
152 - <section class="industry-trust-section" aria-labelledby="industry-trust-title">
152 + <section class="contrast-band" aria-labelledby="industry-trust-title">
153 153   <div class="container">
154 - <div class="industry-trust-panel">
154 + <div class="contrast-panel">
155 155   <h2 id="industry-trust-title">Trusted XWiki expertise for business-critical platforms</h2>
156 156  
157 157   <p class="section-intro">
... ... @@ -159,7 +159,7 @@
159 159   government institutions, transportation, software development, compliance programs and regulated environments.
160 160   </p>
161 161  
162 - <div class="industry-tags" aria-label="Industries and environments supported">
162 + <div class="contrast-tags" aria-label="Industries and environments supported">
163 163   <span>Healthcare</span>
164 164   <span>Financial services</span>
165 165   <span>Scientific research</span>
... ... @@ -170,7 +170,7 @@
170 170   <span>Regulated environments</span>
171 171   </div>
172 172  
173 - <p class="industry-support">
173 + <p class="contrast-support">
174 174   Organizations rely on these platforms to manage documentation, workflows, compliance processes,
175 175   research knowledge and critical business information. From upgrades and authentication integrations
176 176   to workflow systems and long-term maintenance, Agnease helps keep XWiki secure, stable and ready for the future.
XWiki.StyleSheetExtension[0]
code
... ... @@ -247,36 +247,130 @@
247 247   margin-top: 22px;
248 248  }
249 249  
250 -/* ========== Trust Strip ========== */
250 +/* ========== Contrast Band ========== */
251 251  
252 -.trust-strip {
253 - padding: 18px 0;
254 - border-top: 1px solid @line;
252 +.contrast-band {
253 + position: relative;
254 + z-index: 0;
255 + overflow: visible; /* allow pseudo-element to escape */
256 + padding: 54px 0;
257 + border-top: 0;
258 + color: #fff;
255 255  
256 - ul {
257 - max-width: 960px;
258 - margin: 0 auto;
259 - padding: 0;
260 - list-style: none;
261 - display: flex;
262 - justify-content: center;
263 - gap: 22px;
264 - flex-wrap: wrap;
265 - color: @muted;
266 - font-size: 13px;
267 - }
260 + /* Remove gradient from here */
261 + background: none;
262 +}
268 268  
269 - li {
270 - display: flex;
271 - align-items: center;
272 - gap: 7px;
264 +/* Full‑bleed gradient background */
265 +.contrast-band::before {
266 + content: "";
267 + position: absolute;
268 + top: 0;
269 + left: 50%;
270 + width: 100vw; /* full viewport width */
271 + height: 100%;
272 + transform: translateX(-50%);
273 + z-index: -1;
274 +
275 + background:
276 + radial-gradient(circle at 18% 18%, fade(@brand, 22%) 0%, transparent 28%),
277 + radial-gradient(circle at 86% 12%, fade(@brand, 16%) 0%, transparent 30%),
278 + linear-gradient(135deg, @text 0%, @text-soft 100%);
279 +
280 + background: red !important;
281 +}
282 +
283 +/* Grid overlay stays exactly as you had it */
284 +.contrast-band::after {
285 + content: "";
286 + position: absolute;
287 + inset: 0;
288 + background:
289 + linear-gradient(90deg, fade(#fff, 4%) 1px, transparent 1px),
290 + linear-gradient(180deg, fade(#fff, 4%) 1px, transparent 1px);
291 + background-size: 52px 52px;
292 + opacity: .38;
293 + pointer-events: none;
294 + z-index: 0;
295 +}
296 +
297 +.contrast-band .container {
298 + position: relative;
299 + z-index: 1;
300 +}
301 +
302 +/* Everything below stays unchanged */
303 +.contrast-panel {
304 + max-width: 1040px;
305 + margin: 0 auto;
306 + text-align: center;
307 +}
308 +
309 +.contrast-band h2 {
310 + max-width: 860px;
311 + margin: 0 auto 12px;
312 + color: #fff;
313 +}
314 +
315 +.contrast-band .section-intro {
316 + max-width: 840px;
317 + margin: 0 auto 26px;
318 + color: #D9E3EE;
319 +}
320 +
321 +.contrast-tags {
322 + max-width: 940px;
323 + margin: 0 auto;
324 + display: flex;
325 + flex-wrap: wrap;
326 + justify-content: center;
327 + gap: 10px;
328 +}
329 +
330 +.contrast-tags span {
331 + display: inline-flex;
332 + align-items: center;
333 + padding: 8px 13px;
334 + border: 1px solid fade(#fff, 18%);
335 + border-radius: 999px;
336 + background: fade(#fff, 8%);
337 + color: #F8FAFC;
338 + font-size: 13px;
339 + font-weight: 700;
340 + line-height: 1.2;
341 +}
342 +
343 +.contrast-tags span::before {
344 + content: "";
345 + width: 7px;
346 + height: 7px;
347 + margin-right: 8px;
348 + border-radius: 50%;
349 + background: @brand;
350 + box-shadow: 0 0 0 4px fade(@brand, 18%);
351 +}
352 +
353 +.contrast-support {
354 + max-width: 860px;
355 + margin: 30px auto 0;
356 + color: #D9E3EE;
357 + text-align: center;
358 + font-size: 15px;
359 + line-height: 1.7;
360 +}
361 +
362 +@media (max-width: 640px) {
363 + .contrast-band {
364 + padding: 40px 0;
273 273   }
274 274  
275 - i {
276 - color: @brand;
367 + .contrast-tags span {
368 + font-size: 12px;
369 + padding: 8px 11px;
277 277   }
278 278  }
279 279  
373 +
280 280  /* ========== Reusable Grids ========== */
281 281  
282 282  .card-grid,
... ... @@ -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 {
... ... @@ -576,104 +576,23 @@
576 576  
577 577  .split-grid {
578 578   display: grid;
579 - grid-template-columns: .95fr 1.05fr;
599 + grid-template-columns: 1.1fr .9fr;
580 580   grid-gap: 36px;
581 581   max-width: 1040px;
582 582   margin: 0 auto;
583 - align-items: stretch;
603 + align-items: center;
584 584  }
585 585  
586 586  .split-copy {
587 - position: relative;
588 - overflow: hidden;
589 - min-height: 100%;
590 - padding: 42px 38px;
591 - border-radius: 26px;
592 - background:
593 - radial-gradient(circle at 86% 12%, fade(@brand, 22%) 0%, transparent 32%),
594 - linear-gradient(135deg, @text 0%, @text-soft 100%);
595 - color: #fff;
596 - box-shadow: @shadow;
597 -
598 - &::before {
599 - content: "";
600 - position: absolute;
601 - inset: 0;
602 - background:
603 - linear-gradient(90deg, fade(#fff, 4%) 1px, transparent 1px),
604 - linear-gradient(180deg, fade(#fff, 4%) 1px, transparent 1px);
605 - background-size: 48px 48px;
606 - opacity: .36;
607 - pointer-events: none;
608 - }
609 -
610 - h2,
611 - p {
612 - position: relative;
613 - z-index: 1;
614 - }
615 -
616 616   h2 {
617 617   text-align: left;
618 - margin: 0 0 18px;
619 - color: #fff;
620 - font-size: 30px;
621 - line-height: 1.18;
622 - letter-spacing: -.02em;
609 + margin-top: 0;
623 623   }
624 624  
625 625   p {
626 - margin: 0 0 18px;
627 - color: #DBE4EF;
628 - line-height: 1.65;
629 -
630 - &:last-child {
631 - margin-bottom: 0;
632 - }
613 + color: @muted;
614 + line-height: 1.6;
633 633   }
634 -
635 - h3,
636 - h4 {
637 - position: relative;
638 - z-index: 1;
639 - margin: 0 0 16px;
640 - color: #fff;
641 - font-size: 24px;
642 - line-height: 1.2;
643 - font-weight: 800;
644 - }
645 -
646 - h2 i,
647 - h3 i,
648 - h4 i {
649 - margin-right: 8px;
650 - color: @brand;
651 - }
652 -
653 - ul {
654 - position: relative;
655 - z-index: 1;
656 - margin: 18px 0 0;
657 - padding: 0;
658 - list-style: none;
659 - }
660 -
661 - li {
662 - position: relative;
663 - margin: 10px 0;
664 - padding-left: 28px;
665 - color: #DBE4EF;
666 - line-height: 1.5;
667 -
668 - &::before {
669 - content: "\f00c";
670 - font-family: FontAwesome;
671 - position: absolute;
672 - left: 0;
673 - top: 1px;
674 - color: @brand;
675 - }
676 - }
677 677  }
678 678  
679 679  .process-list {
... ... @@ -685,75 +685,38 @@
685 685   li {
686 686   counter-increment: process;
687 687   position: relative;
688 - min-height: 104px;
689 - padding: 24px 26px 24px 82px;
690 - margin-bottom: 18px;
627 + padding: 16px 16px 16px 58px;
628 + margin-bottom: 12px;
691 691   border: 1px solid @line;
692 692   border-radius: @radius;
693 - background: #fff;
694 694   box-shadow: @shadow-sm;
695 695   color: @muted;
696 696   line-height: 1.5;
697 697  
698 - &:last-child {
699 - margin-bottom: 0;
700 - }
701 -
702 702   &:before {
703 703   content: counter(process);
704 704   position: absolute;
705 - left: 26px;
706 - top: 26px;
707 - width: 38px;
708 - height: 38px;
638 + left: 16px;
639 + top: 16px;
640 + width: 28px;
641 + height: 28px;
709 709   border-radius: 50%;
710 - background: @brand;
711 - color: #fff;
643 + background: fade(@brand, 10%);
644 + color: @brand;
712 712   display: flex;
713 713   align-items: center;
714 714   justify-content: center;
715 715   font-weight: 800;
716 - box-shadow: 0 0 0 8px fade(@brand, 10%);
717 717   }
718 718  
719 719   strong {
720 720   display: block;
721 721   color: @text;
722 - margin-bottom: 5px;
723 - font-size: 16px;
724 - line-height: 1.3;
654 + margin-bottom: 3px;
725 725   }
726 726   }
727 727  }
728 728  
729 -/* ===== Contact page side panel ===== */
730 -
731 -.contact-side-panel {
732 - padding-top: 10px;
733 -}
734 -
735 -.contact-help-panel {
736 - margin-bottom: 18px;
737 - padding: 30px 28px;
738 -}
739 -
740 -.contact-help-panel h2 {
741 - font-size: 24px;
742 -}
743 -
744 -.contact-process-list li {
745 - min-height: auto;
746 -}
747 -
748 -/* CSS for hidden field to identify requests filled by bots. */
749 -.contact-hp-wrapper {
750 - position: absolute;
751 - left: -9999px;
752 - width: 1px;
753 - height: 1px;
754 - overflow: hidden;
755 -}
756 -
757 757  /* ========== Resources ========== */
758 758  
759 759  .resource-strip {
... ... @@ -855,9 +855,8 @@
855 855  
856 856  /* ========== CTA ========== */
857 857  
858 -.cta-section {
760 +#mainContentArea .cta-section {
859 859   padding: 44px 0 56px;
860 - border:none
861 861  
862 862   .contact-inline {
863 863   margin: 0;
... ... @@ -867,68 +867,112 @@
867 867   color: @brand;
868 868   }
869 869   }
771 +}
870 870  
871 - .cta-panel {
872 - position: relative;
873 - overflow: hidden;
874 - max-width: 1040px;
875 - margin: 0 auto;
876 - padding: 48px 40px;
877 - border: 0;
878 - border-radius: 26px;
879 - background:
880 - radial-gradient(circle at 88% 10%, fade(@brand, 24%) 0%, transparent 30%),
881 - linear-gradient(135deg, @text 0%, @text-soft 100%);
882 - color: #fff;
883 - box-shadow: @shadow;
884 - text-align: center;
773 +#mainContentArea .cta-panel {
774 + position: relative;
775 + overflow: hidden;
776 + max-width: 1040px;
777 + margin: 0 auto;
778 + padding: 48px 40px;
779 + border: 0;
780 + border-radius: 26px;
781 + background:
782 + radial-gradient(circle at 88% 10%, fade(@brand, 24%) 0%, transparent 30%),
783 + linear-gradient(135deg, @text 0%, @text-soft 100%);
784 + color: #fff;
785 + box-shadow: @shadow;
786 + text-align: center;
787 +}
885 885  
886 - &::before {
887 - content: "";
888 - position: absolute;
889 - inset: 0;
890 - background:
891 - linear-gradient(90deg, fade(#fff, 4%) 1px, transparent 1px),
892 - linear-gradient(180deg, fade(#fff, 4%) 1px, transparent 1px);
893 - background-size: 48px 48px;
894 - opacity: .4;
895 - pointer-events: none;
896 - }
789 +#mainContentArea .cta-panel::before {
790 + content: "";
791 + position: absolute;
792 + inset: 0;
793 + background:
794 + linear-gradient(90deg, fade(#fff, 4%) 1px, transparent 1px),
795 + linear-gradient(180deg, fade(#fff, 4%) 1px, transparent 1px);
796 + background-size: 48px 48px;
797 + opacity: .4;
798 + pointer-events: none;
799 +}
897 897  
898 - h2,
899 - p,
900 - .btn {
901 - position: relative;
902 - z-index: 1;
903 - }
801 +#mainContentArea .cta-panel h2,
802 +#mainContentArea .cta-panel p,
803 +#mainContentArea .cta-panel .btn {
804 + position: relative;
805 + z-index: 1;
806 +}
904 904  
905 - h2 {
906 - max-width: 760px;
907 - margin: 0 auto 16px;
908 - color: #fff;
909 - }
808 +#mainContentArea .cta-panel h2 {
809 + max-width: 760px;
810 + margin: 0 auto 16px;
811 + color: #fff;
812 +}
910 910  
814 +#mainContentArea .cta-panel p {
815 + max-width: 760px;
816 + margin: 0 auto 28px;
817 + color: #DBE4EF;
818 + font-size: 16px;
819 + line-height: 1.6;
820 +}
821 +
822 +#mainContentArea .cta-panel .btn-primary {
823 + border-color: #fff;
824 + background: #fff;
825 + color: @text;
826 + box-shadow: 0 18px 42px rgba(0, 0, 0, .18);
827 +}
828 +
829 +#mainContentArea .cta-panel .btn-primary:hover,
830 +#mainContentArea .cta-panel .btn-primary:focus {
831 + border-color: #fff;
832 + background: #fff;
833 + color: @brand-strong;
834 + text-decoration: none;
835 +}
836 +
837 +.resource-inline-cta {
838 + display: flex;
839 + align-items: center;
840 + justify-content: space-between;
841 + gap: 22px;
842 + margin: 30px 0;
843 + padding: 20px 22px;
844 + border: 1px solid fade(@brand, 22%);
845 + border-radius: @radius;
846 + background: @brand-bg;
847 + box-shadow: @shadow-sm;
848 +
849 + p {
850 + margin: 0;
851 + color: @muted;
852 + line-height: 1.55;
853 + }
854 +
855 + strong {
856 + color: @text;
857 + }
858 +
859 + .btn {
860 + flex-shrink: 0;
861 + }
862 +}
863 +
864 +@media (max-width: 767px) {
865 + .resource-inline-cta {
866 + display: block;
867 + text-align: center;
868 +
911 911   p {
912 - max-width: 760px;
913 - margin: 0 auto 28px;
914 - color: #DBE4EF;
915 - font-size: 16px;
916 - line-height: 1.6;
870 + margin-bottom: 14px;
917 917   }
918 918  
919 - .btn-primary {
920 - border-color: #fff;
921 - background: #fff;
922 - color: @text;
923 - box-shadow: 0 18px 42px rgba(0, 0, 0, .18);
924 -
925 - &:hover,
926 - &:focus {
927 - border-color: #fff;
928 - background: #fff;
929 - color: @brand-strong;
930 - text-decoration: none;
931 - }
873 + .btn {
874 + display: inline-block;
875 + margin-left: auto;
876 + margin-right: auto;
932 932   }
933 933   }
934 934  }
... ... @@ -947,12 +947,8 @@
947 947   grid-template-columns: 1fr;
948 948   }
949 949  
950 - .split-copy {
951 - padding: 34px 28px;
952 -
953 - h2 {
954 - text-align: center;
955 - }
895 + .split-copy h2 {
896 + text-align: center;
956 956   }
957 957  }
958 958  
... ... @@ -1020,35 +1020,17 @@
1020 1020   padding: 20px;
1021 1021   }
1022 1022  
1023 - .split-copy {
1024 - padding: 30px 22px;
1025 - border-radius: 20px;
1026 - }
1027 -
1028 - .process-list li {
1029 - padding: 22px 20px 22px 68px;
1030 -
1031 - &:before {
1032 - left: 20px;
1033 - top: 22px;
1034 - width: 32px;
1035 - height: 32px;
1036 - }
1037 - }
1038 -
1039 1039   .services .service {
1040 1040   gap: 14px;
1041 1041   }
1042 1042  
1043 - .cta-section {
1044 - .cta-panel {
1045 - padding: 30px 22px;
1046 - border-radius: 20px;
968 + #mainContentArea .cta-panel {
969 + padding: 30px 22px;
970 + border-radius: 20px;
971 + }
1047 1047  
1048 - .btn-primary {
1049 - width: 100%;
1050 - }
1051 - }
973 + #mainContentArea .cta-panel .btn-primary {
974 + width: 100%;
1052 1052   }
1053 1053  }
1054 1054  
... ... @@ -1749,39 +1749,6 @@
1749 1749   background-attachment: fixed;
1750 1750  }
1751 1751  
1752 -/* Let the body background show through the XWiki wrappers.
1753 -#mainContentArea,
1754 -.resource-page,
1755 -.resources-index-page {
1756 - background: transparent !important;
1757 - background-image: none !important;
1758 -}
1759 -*/
1760 -/* Remove local decorative backgrounds that compete with the global gradient.
1761 -.hero,
1762 -.hero.hero-centered,
1763 -.trust-strip,
1764 -.industry-trust-section,
1765 -.split-section,
1766 -.resource-strip,
1767 -.homepage-resource-strip,
1768 -.resource-header,
1769 -.product-section-muted,
1770 -.resources-index-page {
1771 - background: transparent !important;
1772 - background-image: none !important;
1773 -}
1774 - */
1775 -/* Keep large panels readable, but remove their inner gradients.
1776 -.industry-trust-section .industry-trust-panel,
1777 -.cta-panel,
1778 -.resource-inline-cta,
1779 -.resource-note,
1780 -.resource-cta {
1781 - background: #fff !important;
1782 - background-image: none !important;
1783 -} */
1784 -
1785 1785  /* ========== Main Page Hero / SaaS Layout ========== */
1786 1786  
1787 1787  #mainContentArea .hero.hero-saas {
... ... @@ -1958,3 +1958,86 @@
1958 1958   }
1959 1959  }
1960 1960  
1851 +/* ========== Accessibility / Contrast Improvements ========== */
1852 +
1853 +/* Keep the article area readable while preserving the page background around it. */
1854 +/*#mainContentArea .resource-layout {
1855 + padding: 28px;
1856 + border: 1px solid fade(@line, 85%);
1857 + border-radius: @radius;
1858 + background: rgba(255, 255, 255, .88);
1859 + box-shadow: @shadow-sm;
1860 +}*/
1861 +
1862 +/* Ensure all reusable cards have a real surface, not transparent over the gradient. */
1863 +#mainContentArea .widget,
1864 +#mainContentArea .pathway-card,
1865 +#mainContentArea .service-card,
1866 +#mainContentArea .resource-card,
1867 +#mainContentArea .services .service,
1868 +#mainContentArea .product-card,
1869 +#mainContentArea .product-feature,
1870 +#mainContentArea .product-summary-card,
1871 +#mainContentArea .product-info-card {
1872 + background: #fff;
1873 +}
1874 +
1875 +/* Make notes more readable and visually stronger. */
1876 +#mainContentArea .resource-note {
1877 + border: 1px solid fade(@brand, 18%);
1878 + border-left: 4px solid @brand;
1879 + background: #fff;
1880 + box-shadow: 0 10px 28px rgba(15, 23, 42, .045);
1881 +}
1882 +
1883 +/* Keep the sidebar clearly separated from the background. */
1884 +#mainContentArea .resource-sidebar {
1885 + background: #fff;
1886 +}
1887 +
1888 +/* Make CTA panels stand out more clearly. */
1889 +#mainContentArea .resource-cta,
1890 +#mainContentArea .resource-inline-cta {
1891 + background: #fff;
1892 +}
1893 +
1894 +/* Improve table readability on long resource pages. */
1895 +#mainContentArea .resource-content table {
1896 + background: #fff;
1897 +}
1898 +
1899 +#mainContentArea .resource-content table th {
1900 + color: @text;
1901 + background: #F8FAFC;
1902 +}
1903 +
1904 +#mainContentArea .resource-content table td {
1905 + color: @text-soft;
1906 +}
1907 +
1908 +/* Slightly improve paragraph/list contrast in long articles. */
1909 +#mainContentArea .resource-content p,
1910 +#mainContentArea .resource-content li {
1911 + color: @text-soft;
1912 +}
1913 +
1914 +#mainContentArea .resource-content .resource-note p,
1915 +#mainContentArea .resource-content .resource-checklist li,
1916 +#mainContentArea .resource-content .process-list li {
1917 + color: @muted;
1918 +}
1919 +
1920 +@media (max-width: 900px) {
1921 + #mainContentArea .resource-layout {
1922 + padding: 22px;
1923 + }
1924 +}
1925 +
1926 +@media (max-width: 640px) {
1927 + #mainContentArea .resource-layout {
1928 + padding: 18px;
1929 + border-radius: 14px;
1930 + }
1931 +}
1932 +
1933 +