Changes for page Public Web Site

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

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