Changes for page Public Web Site

Last modified by Agnease on 2026/05/30 16:24

From version 8.8
edited by Agnease
on 2026/05/18 19:01
Change comment: There is no comment for this version
To version 6.52
edited by Agnease
on 2026/05/12 14:07
Change comment: There is no comment for this version

Summary

Details

Page properties
Content
... ... @@ -159,7 +159,7 @@
159 159   <p>
160 160   A business-focused explanation of why regular LTS upgrades reduce security, compatibility and maintenance risk.
161 161   </p>
162 - <a href="$xwiki.getURL('resources.why-upgrade-xwiki')">Read the resource</a>
162 + <a href="/resources/why-upgrade-xwiki">Read the resource</a>
163 163   </article>
164 164  
165 165   <article class="resource-card">
... ... @@ -167,7 +167,7 @@
167 167   <p>
168 168   How Agnease approaches safe XWiki upgrades for real production environments with customizations and integrations.
169 169   </p>
170 - <a href="$xwiki.getURL('services.xwiki-upgrades')">View the service</a>
170 + <a href="/services/xwiki-upgrades">View the service</a>
171 171   </article>
172 172   </div>
173 173   </div>
XWiki.StyleSheetExtension[0]
code
... ... @@ -726,426 +726,3 @@
726 726   padding: 24px 20px;
727 727   }
728 728  }
729 -/* ========== Resource / Article Pages ========== */
730 -
731 -.resource-page {
732 - padding-top: 34px;
733 -}
734 -
735 -.resource-header {
736 - padding: 40px 0 30px;
737 - border-top: none;
738 - background:
739 - radial-gradient(50rem 18rem at 50% -10%, @brand-soft 0%, transparent 60%),
740 - radial-gradient(50rem 18rem at 50% 0%, #E8F6F3 0%, transparent 60%);
741 -
742 - h1 {
743 - max-width: 820px;
744 - margin: 0 auto 14px;
745 - text-align: center;
746 - line-height: 1.18;
747 - }
748 -
749 - .resource-summary {
750 - max-width: 780px;
751 - margin: 0 auto;
752 - color: @muted;
753 - text-align: center;
754 - font-size: 18px;
755 - line-height: 1.55;
756 - }
757 -}
758 -
759 -.resource-layout {
760 - display: grid;
761 - grid-template-columns: minmax(0, 760px) 280px;
762 - gap: 42px;
763 - max-width: 1080px;
764 - margin: 0 auto;
765 - align-items: start;
766 -}
767 -
768 -.resource-content {
769 - color: @text;
770 - font-size: 16px;
771 - line-height: 1.68;
772 -
773 - h2 {
774 - text-align: left;
775 - margin: 34px 0 12px;
776 - line-height: 1.28;
777 - }
778 -
779 - h3 {
780 - margin: 24px 0 8px;
781 - line-height: 1.3;
782 - }
783 -
784 - p {
785 - margin: 0 0 16px;
786 - }
787 -
788 - ul,
789 - ol {
790 - margin: 0 0 18px;
791 - padding-left: 22px;
792 - }
793 -
794 - li {
795 - margin: 6px 0;
796 - }
797 -
798 - strong {
799 - color: @text;
800 - }
801 -}
802 -
803 -.resource-note {
804 - border-left: 4px solid @brand;
805 - background: @brand-bg;
806 - padding: 16px 18px;
807 - margin: 22px 0;
808 - border-radius: 0 @radius @radius 0;
809 -
810 - p:last-child {
811 - margin-bottom: 0;
812 - }
813 -}
814 -
815 -.resource-checklist {
816 - margin: 18px 0 24px;
817 - padding: 0;
818 - list-style: none;
819 -
820 - li {
821 - position: relative;
822 - padding: 10px 0 10px 34px;
823 - border-bottom: 1px solid @line;
824 -
825 - &:before {
826 - content: "\f00c";
827 - font-family: FontAwesome;
828 - position: absolute;
829 - left: 0;
830 - top: 11px;
831 - color: @brand;
832 - }
833 - }
834 -}
835 -
836 -.resource-sidebar {
837 - position: sticky;
838 - top: 96px;
839 - border: 1px solid @line;
840 - border-radius: @radius;
841 - padding: 18px;
842 - background: #fff;
843 - box-shadow: @shadow-sm;
844 -
845 - h4 {
846 - margin: 0 0 10px;
847 - }
848 -
849 - ul {
850 - margin: 0;
851 - padding-left: 18px;
852 - color: @muted;
853 - }
854 -
855 - li {
856 - margin: 8px 0;
857 - }
858 -
859 - a {
860 - color: @brand;
861 - font-weight: 600;
862 - }
863 -}
864 -
865 -.resource-cta {
866 - margin-top: 36px;
867 - padding: 22px;
868 - border: 1px solid fade(@brand, 20%);
869 - border-radius: @radius;
870 - background: @brand-bg;
871 -
872 - h3 {
873 - margin-top: 0;
874 - }
875 -
876 - p {
877 - color: @muted;
878 - }
879 -}
880 -
881 -@media (max-width: 900px) {
882 - .resource-layout {
883 - grid-template-columns: 1fr;
884 - }
885 -
886 - .resource-sidebar {
887 - position: static;
888 - }
889 -}
890 -/* ========== Products / Extensions Pages ========== */
891 -
892 -.product-index-section {
893 - padding: 52px 0 56px;
894 -
895 - h2 {
896 - margin-bottom: 10px;
897 - }
898 -}
899 -
900 -.product-card-grid {
901 - max-width: 840px;
902 - margin: 28px auto 0;
903 - display: grid;
904 - grid-template-columns: 1fr;
905 - grid-gap: 18px;
906 -}
907 -
908 -.product-card {
909 - background: #fff;
910 - border: 1px solid @line;
911 - border-radius: @radius;
912 - box-shadow: @shadow-sm;
913 - padding: 28px;
914 - display: grid;
915 - grid-template-columns: 68px 1fr;
916 - grid-gap: 22px;
917 - align-items: start;
918 - transition: transform .18s ease, box-shadow .18s ease;
919 -
920 - &:hover {
921 - transform: translateY(-2px);
922 - box-shadow: @shadow;
923 - }
924 -
925 - .product-card-icon {
926 - width: 58px;
927 - height: 58px;
928 - border-radius: 50%;
929 - background: fade(@brand, 10%);
930 - border: 1px solid fade(@brand, 20%);
931 - color: @brand;
932 - display: flex;
933 - align-items: center;
934 - justify-content: center;
935 - font-size: 22px;
936 - flex-shrink: 0;
937 - }
938 -
939 - h3 {
940 - margin: 0 0 10px;
941 - color: @text;
942 - font-size: 23px;
943 - line-height: 1.25;
944 - font-weight: 800;
945 - }
946 -
947 - p {
948 - color: @muted;
949 - line-height: 1.6;
950 - }
951 -
952 - .card-link {
953 - margin: 0;
954 -
955 - a {
956 - font-weight: 700;
957 - }
958 - }
959 -}
960 -
961 -.product-card-kicker {
962 - margin-bottom: 10px;
963 - padding: 5px 10px;
964 - font-size: 12px;
965 - text-transform: uppercase;
966 - letter-spacing: .04em;
967 -}
968 -
969 -.product-highlights {
970 - margin: 14px 0 20px;
971 - padding-left: 18px;
972 - color: @muted;
973 -
974 - li {
975 - margin: 6px 0;
976 - line-height: 1.45;
977 - }
978 -}
979 -
980 -/* ========== Individual Product Pages ========== */
981 -
982 -.product-layout {
983 - display: grid;
984 - grid-template-columns: 1.1fr .9fr;
985 - grid-gap: 36px;
986 - max-width: 1040px;
987 - margin: 0 auto;
988 - align-items: start;
989 -}
990 -
991 -.product-summary-card,
992 -.product-info-card,
993 -.product-gallery-panel {
994 - background: #fff;
995 - border: 1px solid @line;
996 - border-radius: @radius;
997 - box-shadow: @shadow-sm;
998 -}
999 -
1000 -.product-summary-card {
1001 - padding: 26px;
1002 -
1003 - h2 {
1004 - text-align: left;
1005 - margin-top: 0;
1006 - }
1007 -
1008 - p {
1009 - color: @muted;
1010 - line-height: 1.6;
1011 - }
1012 -
1013 - p:last-child {
1014 - margin-bottom: 0;
1015 - }
1016 -}
1017 -
1018 -.product-info-card {
1019 - padding: 22px;
1020 -
1021 - h3 {
1022 - margin-top: 0;
1023 - margin-bottom: 12px;
1024 - }
1025 -
1026 - ul {
1027 - margin: 0;
1028 - padding-left: 20px;
1029 - color: @muted;
1030 - }
1031 -
1032 - li {
1033 - margin: 8px 0;
1034 - line-height: 1.45;
1035 - }
1036 -}
1037 -
1038 -.product-feature-grid {
1039 - display: grid;
1040 - grid-template-columns: repeat(3, minmax(0, 1fr));
1041 - grid-gap: 18px;
1042 - max-width: 1040px;
1043 - margin: 26px auto 0;
1044 -}
1045 -
1046 -.product-feature {
1047 - background: #fff;
1048 - border: 1px solid @line;
1049 - border-radius: @radius;
1050 - box-shadow: @shadow-sm;
1051 - padding: 22px;
1052 - transition: transform .18s ease, box-shadow .18s ease;
1053 -
1054 - &:hover {
1055 - transform: translateY(-2px);
1056 - box-shadow: @shadow;
1057 - }
1058 -
1059 - .feature-icon {
1060 - width: 46px;
1061 - height: 46px;
1062 - border-radius: 50%;
1063 - background: fade(@brand, 10%);
1064 - color: @brand;
1065 - display: flex;
1066 - align-items: center;
1067 - justify-content: center;
1068 - margin-bottom: 14px;
1069 - font-size: 18px;
1070 - }
1071 -
1072 - h3 {
1073 - margin: 0 0 8px;
1074 - color: @text;
1075 - font-size: 18px;
1076 - line-height: 1.25;
1077 - }
1078 -
1079 - p {
1080 - margin: 0;
1081 - color: @muted;
1082 - line-height: 1.5;
1083 - }
1084 -}
1085 -
1086 -.product-gallery-panel {
1087 - max-width: 1040px;
1088 - margin: 20px auto 0;
1089 - padding: 26px;
1090 -
1091 - h2 {
1092 - margin-top: 0;
1093 - text-align: center;
1094 - }
1095 -
1096 - .gallery-note {
1097 - max-width: 700px;
1098 - margin: 0 auto 18px;
1099 - color: @muted;
1100 - text-align: center;
1101 - line-height: 1.55;
1102 - }
1103 -}
1104 -
1105 -.product-gallery-placeholder {
1106 - min-height: 260px;
1107 - padding: 28px;
1108 - border: 1px dashed fade(@brand, 40%);
1109 - border-radius: @radius;
1110 - background: fade(@brand, 5%);
1111 - color: @muted;
1112 - text-align: center;
1113 - display: flex;
1114 - align-items: center;
1115 - justify-content: center;
1116 -}
1117 -
1118 -.product-section-muted {
1119 - background:
1120 - radial-gradient(42rem 16rem at 50% 0%, @brand-bg 0%, transparent 65%);
1121 -}
1122 -
1123 -@media (max-width: 980px) {
1124 - .product-layout,
1125 - .product-feature-grid {
1126 - grid-template-columns: 1fr;
1127 - }
1128 -
1129 - .product-summary-card h2 {
1130 - text-align: center;
1131 - }
1132 -}
1133 -
1134 -@media (max-width: 640px) {
1135 - .product-card {
1136 - grid-template-columns: 1fr;
1137 - padding: 22px;
1138 - text-align: left;
1139 -
1140 - .product-card-icon {
1141 - margin-bottom: 2px;
1142 - }
1143 - }
1144 -
1145 - .product-summary-card,
1146 - .product-info-card,
1147 - .product-feature,
1148 - .product-gallery-panel {
1149 - padding: 20px;
1150 - }
1151 -}
XWiki.StyleSheetExtension[1]
code
... ... @@ -7,58 +7,54 @@
7 7  @line: #E4ECE9;
8 8  @brand-bg: #F4FCFA;
9 9  
10 -/* Top-level menu items */
11 -
12 -.agnease-services-menu,
13 -.agnease-products-menu {
14 - .dropdown-toggle {
15 - font-weight: inherit;
16 - font-size: inherit;
17 - }
18 -
19 - .caret {
20 - margin-left: 4px;
21 - }
22 -
23 - &.open > .dropdown-toggle,
24 - .dropdown-toggle:hover,
25 - .dropdown-toggle:focus {
26 - color: @brand-strong;
27 - background: transparent;
28 - background-color: transparent;
29 - box-shadow: none;
30 - }
10 +/* Top-level public menu links: Services + Contact */
11 +.navbar-nav > li > a,
12 +.navbar-nav > li.agnease-services-menu > a {
13 + color: @brand;
14 + font-size: inherit;
15 + font-weight: 400;
16 + background: transparent;
17 + background-color: transparent;
18 + box-shadow: none;
19 + text-decoration: none;
31 31  }
32 32  
33 -/* Keep Agnease public top-level menu visually clean when hovered/open/focused */
34 -
35 -.navbar-nav > li.agnease-services-menu > a,
36 -.navbar-nav > li.agnease-products-menu > a,
22 +.navbar-nav > li > a:hover,
23 +.navbar-nav > li > a:focus,
24 +.navbar-nav > li.open > a,
25 +.navbar-nav > li.open > a:hover,
26 +.navbar-nav > li.open > a:focus,
37 37  .navbar-nav > li.agnease-services-menu > a:hover,
38 -.navbar-nav > li.agnease-products-menu > a:hover,
39 39  .navbar-nav > li.agnease-services-menu > a:focus,
40 -.navbar-nav > li.agnease-products-menu > a:focus,
41 41  .navbar-nav > li.agnease-services-menu.open > a,
42 -.navbar-nav > li.agnease-products-menu.open > a,
43 43  .navbar-nav > li.agnease-services-menu.open > a:hover,
44 -.navbar-nav > li.agnease-products-menu.open > a:hover,
45 -.navbar-nav > li.agnease-services-menu.open > a:focus,
46 -.navbar-nav > li.agnease-products-menu.open > a:focus {
31 +.navbar-nav > li.agnease-services-menu.open > a:focus {
32 + color: @brand-strong;
47 47   background: transparent;
48 48   background-color: transparent;
49 - color: @brand-strong;
50 50   box-shadow: none;
36 + text-decoration: none;
51 51  }
52 52  
53 -/* Dropdown panels */
39 +.agnease-services-menu {
40 + .dropdown-toggle {
41 + font-weight: 400;
42 + font-size: inherit;
43 + }
54 54  
55 -.agnease-services-dropdown,
56 -.agnease-products-dropdown {
45 + .caret {
46 + margin-left: 4px;
47 + }
48 +}
49 +
50 +/* Dropdown panel */
51 +.agnease-services-dropdown {
57 57   min-width: 360px;
58 58   padding: 10px;
59 59   border: 1px solid @line;
60 60   border-radius: 12px;
61 61   box-shadow: 0 12px 36px rgba(0, 0, 0, .10);
57 + background: #fff;
62 62  
63 63   > li > a {
64 64   display: flex;
... ... @@ -66,8 +66,10 @@
66 66   gap: 12px;
67 67   padding: 10px 12px;
68 68   border-radius: 10px;
69 - color: @text;
70 70   white-space: normal;
66 + text-decoration: none;
67 + background: transparent;
68 + color: @brand;
71 71  
72 72   &:hover,
73 73   &:focus {
... ... @@ -77,15 +77,15 @@
77 77  
78 78   .menu-icon {
79 79   color: @brand-strong;
80 - background: fade(@brand, 14%);
81 - border-color: fade(@brand, 28%);
78 + background: fade(@brand, 12%);
79 + border-color: fade(@brand, 24%);
82 82   }
83 83  
84 - strong {
82 + .menu-text strong {
85 85   color: @brand-strong;
86 86   }
87 87  
88 - small {
86 + .menu-text small {
89 89   color: @muted;
90 90   }
91 91   }
... ... @@ -117,8 +117,8 @@
117 117  
118 118   strong {
119 119   color: @brand;
120 - font-size: 14px;
121 - font-weight: 600;
118 + font-size: inherit;
119 + font-weight: 400;
122 122   }
123 123  
124 124   small {
... ... @@ -130,27 +130,77 @@
130 130   }
131 131  }
132 132  
133 -/* Products dropdown can be slightly narrower for now */
134 -
135 -.agnease-products-dropdown {
136 - min-width: 340px;
137 -}
138 -
139 -/* Mobile */
140 -
131 +/* Mobile dropdown: compact vertical list */
141 141  @media (max-width: 767px) {
142 - .agnease-services-dropdown,
143 - .agnease-products-dropdown {
133 + .navbar-nav > li.agnease-services-menu {
134 + position: static;
135 + }
136 +
137 + .agnease-services-dropdown {
138 + left: 50% !important;
139 + right: auto !important;
140 + transform: translateX(-50%);
141 + width: calc(100vw - 40px);
142 + max-width: 380px;
144 144   min-width: 0;
145 - width: 100%;
146 - padding: 6px;
147 - border-radius: 0;
148 - border-left: 0;
149 - border-right: 0;
150 - box-shadow: none;
144 + max-height: calc(100vh - 190px);
145 + overflow-y: auto;
151 151  
147 + padding: 8px;
148 + margin-top: 6px;
149 + border-radius: 12px;
150 + border: 1px solid @line;
151 + box-shadow: 0 12px 32px rgba(0, 0, 0, .12);
152 + background: #fff;
153 +
152 152   > li > a {
153 - padding: 10px;
155 + display: flex;
156 + align-items: center;
157 + gap: 10px;
158 + min-height: 0;
159 + padding: 9px 10px;
160 + border-radius: 9px;
161 + text-align: left;
162 + white-space: normal;
154 154   }
164 +
165 + .divider {
166 + margin: 6px 0;
167 + }
168 +
169 + .menu-icon {
170 + width: 28px;
171 + height: 28px;
172 + font-size: 13px;
173 + flex: 0 0 28px;
174 + }
175 +
176 + .menu-text {
177 + display: block;
178 + line-height: 1.25;
179 + }
180 +
181 + .menu-text strong {
182 + display: block;
183 + font-size: 14px;
184 + font-weight: 400;
185 + color: @brand;
186 + }
187 +
188 + .menu-text small {
189 + display: none;
190 + }
191 +
192 + > li > a:hover .menu-text strong,
193 + > li > a:focus .menu-text strong {
194 + color: @brand-strong;
195 + }
196 +
197 + > li > a:hover .menu-icon,
198 + > li > a:focus .menu-icon {
199 + color: @brand-strong;
200 + background: fade(@brand, 12%);
201 + border-color: fade(@brand, 24%);
202 + }
155 155   }
156 156  }