Changes for page Public Web Site

Last modified by Agnease on 2026/07/01 17:17

From version 25.15
edited by Agnease
on 2026/06/30 11:08
Change comment: There is no comment for this version
To version 18.7
edited by Agnease
on 2026/05/28 10:45
Change comment: There is no comment for this version

Summary

Details

Page properties
Default language
... ... @@ -1,0 +1,1 @@
1 +en
Hidden
... ... @@ -1,1 +1,1 @@
1 -true
1 +false
Content
... ... @@ -1,9 +1,11 @@
1 +{{include reference="PublicWebSite.MacrosAndVariables" /}}
2 +
1 1  {{velocity}}
2 2  #macro (displayPublicContent)
3 3   #set ($discard = $xwiki.ssx.use('PublicWebSite.WebHome'))
4 4   {{html clean="false"}}
5 5  
6 - <section class="hero hero-centered" aria-labelledby="hero-title">
8 + <section class="hero hero-centered main-page-hero" aria-labelledby="hero-title">
7 7   <div class="container hero-inner">
8 8   <h1 id="hero-title">Professional XWiki consulting and engineering</h1>
9 9  
... ... @@ -20,7 +20,7 @@
20 20   </ul>
21 21  
22 22   <div class="hero-actions">
23 - <a class="btn btn-primary" href="https://calendly.com/alex-agnease/30min?back=1&month=2026-06">Book a free discussion</a>
25 + <a class="btn btn-primary" href="$freeXWikiReviewCallURL">$freeXWikiReviewCallLabel</a>
24 24   ##<a class="btn btn-primary" href="$xwiki.getURL('contact.WebHome')">Request a consultation</a>
25 25   <a class="btn btn-secondary" href="$xwiki.getURL('services.WebHome')">View XWiki services</a>
26 26   </div>
... ... @@ -111,36 +111,6 @@
111 111   </div>
112 112   </section>
113 113  
114 - <section class="industry-trust-section" aria-labelledby="industry-trust-title">
115 - <div class="container">
116 - <div class="industry-trust-panel">
117 - <h2 id="industry-trust-title">Trusted XWiki expertise for business-critical platforms</h2>
118 -
119 - <p class="section-intro">
120 - Experience supporting XWiki platforms used in healthcare, financial services, scientific research,
121 - government institutions, transportation, software development, compliance programs and regulated environments.
122 - </p>
123 -
124 - <div class="industry-tags" aria-label="Industries and environments supported">
125 - <span>Healthcare</span>
126 - <span>Financial services</span>
127 - <span>Scientific research</span>
128 - <span>Government institutions</span>
129 - <span>Transportation</span>
130 - <span>Software development</span>
131 - <span>Compliance programs</span>
132 - <span>Regulated environments</span>
133 - </div>
134 -
135 - <p class="industry-support">
136 - Organizations rely on these platforms to manage documentation, workflows, compliance processes,
137 - research knowledge and critical business information. From upgrades and authentication integrations
138 - to workflow systems and long-term maintenance, Agnease helps keep XWiki secure, stable and ready for the future.
139 - </p>
140 - </div>
141 - </div>
142 - </section>
143 -
144 144   <section class="split-section" aria-labelledby="why-title">
145 145   <div class="container">
146 146   <div class="split-grid">
... ... @@ -148,11 +148,10 @@
148 148   <h2 id="why-title">Why work with an XWiki specialist</h2>
149 149   <p>
150 150   XWiki projects often involve more than pages. Production platforms may include custom code,
151 - extensions, authentication, permissions, workflows, integrations, compliance documentation
152 - and business-critical knowledge.
123 + extensions, authentication, permissions, workflows, integrations and business-critical content.
153 153   </p>
154 154   <p>
155 - Agnease brings 11+ years of hands-on XWiki experience to help reduce risk, support long-term reliability
126 + Agnease brings 11+ years of hands-on XWiki experience to help reduce risk, deliver practical improvements
156 156   and leave the platform easier to maintain after the work is complete.
157 157   </p>
158 158   </div>
main-page-hero.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Admin
Size
... ... @@ -1,0 +1,1 @@
1 +1.0 MB
Content
XWiki.StyleSheetExtension[0]
code
... ... @@ -1,19 +1,17 @@
1 1  /* ========== Agnease Public Website ========== */
2 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;
3 3  
4 -
5 -@brand-bg: #F7F9FC;
6 -@text: #07182D;
7 -@text-soft: #10243D;
8 -@muted: #64748B;
9 -
10 -@line: #E6EBF2;
11 -@radius: 18px;
12 -
13 -@shadow-sm: 0 18px 45px rgba(15, 23, 42, .06);
14 -@shadow: 0 30px 80px rgba(15, 23, 42, .12);
15 -@maxw: 1240px;
16 -/* */
17 17  @section-padding: 30px 0;
18 18  @section-padding-mobile: 28px 0;
19 19  
... ... @@ -169,8 +169,7 @@
169 169  
170 170  .hero {
171 171   overflow: hidden;
172 - background-repeat: no-repeat;
173 - background-attachment: scroll;
170 + position: relative;
174 174  
175 175   &.hero-centered {
176 176   text-align: center;
... ... @@ -183,6 +183,54 @@
183 183   min-height: 330px;
184 184   }
185 185  
183 + &.main-page-hero {
184 + background:
185 + linear-gradient(
186 + rgba(244, 252, 250, 0.50),
187 + rgba(255, 255, 255, 0.60)
188 + ),
189 + url('/bin/download/PublicWebSite/WebHome/main-page-hero.png') center center / cover no-repeat;
190 +
191 + &::before,
192 + &::after {
193 + content: "";
194 + position: absolute;
195 + pointer-events: none;
196 + z-index: 1;
197 + }
198 +
199 + /* Fade left and right image edges into the page background */
200 + &::before {
201 + inset: 0;
202 + background:
203 + linear-gradient(
204 + 90deg,
205 + #fff 0%,
206 + rgba(255, 255, 255, 0) 13%,
207 + rgba(255, 255, 255, 0) 87%,
208 + #fff 100%
209 + );
210 + }
211 +
212 + /* Fade bottom edge into white before the next section */
213 + &::after {
214 + left: 0;
215 + right: 0;
216 + bottom: 0;
217 + height: 90px;
218 + background: linear-gradient(
219 + 180deg,
220 + rgba(255, 255, 255, 0) 0%,
221 + #fff 100%
222 + );
223 + }
224 +
225 + .hero-inner {
226 + position: relative;
227 + z-index: 2;
228 + }
229 + }
230 +
186 186   .hero-inner {
187 187   max-width: 860px;
188 188   margin: 0 auto;
... ... @@ -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 {
... ... @@ -866,6 +866,15 @@
866 866   min-height: 280px;
867 867   }
868 868  
840 + .hero.main-page-hero {
841 + background:
842 + linear-gradient(
843 + rgba(244, 252, 250, 0.92),
844 + rgba(255, 255, 255, 0.97)
845 + ),
846 + url('/bin/download/PublicWebSite/WebHome/main-page-hero.png') center center / cover no-repeat;
847 + }
848 +
869 869   .hero {
870 870   .lead {
871 871   font-size: 17px;
... ... @@ -998,45 +998,6 @@
998 998   }
999 999  }
1000 1000  
1001 -.resource-note.related-resources {
1002 - p {
1003 - margin-bottom: 10px;
1004 - }
1005 -
1006 - ul {
1007 - margin: 0;
1008 - padding-left: 20px;
1009 - }
1010 -
1011 - li {
1012 - margin: 6px 0;
1013 - color: @muted;
1014 - }
1015 -}
1016 -
1017 -.resource-faq-item {
1018 - display: flow-root;
1019 - border-bottom: 1px solid @line;
1020 - padding: 12px 0;
1021 -
1022 - summary {
1023 - cursor: pointer;
1024 - font-weight: 700;
1025 - color: @text;
1026 - line-height: 1.4;
1027 - }
1028 -
1029 - summary:hover,
1030 - summary:focus {
1031 - color: @brand-strong;
1032 - }
1033 -
1034 - p {
1035 - margin: 10px 0 4px;
1036 - color: @muted;
1037 - }
1038 -}
1039 -
1040 1040  .resource-checklist {
1041 1041   margin: 18px 0 24px;
1042 1042   padding: 0;
... ... @@ -1158,40 +1158,30 @@
1158 1158  }
1159 1159  
1160 1160  .product-card-grid {
1161 - max-width: 980px;
1162 - margin: 26px auto 0;
1102 + max-width: 840px;
1103 + margin: 22px auto 0;
1163 1163   display: grid;
1164 1164   grid-template-columns: 1fr;
1165 - grid-gap: 22px;
1106 + grid-gap: 18px;
1166 1166  }
1167 1167  
1168 1168  .product-card {
1169 - position: relative;
1170 1170   background: #fff;
1171 1171   border: 1px solid @line;
1172 1172   border-radius: @radius;
1173 1173   box-shadow: @shadow-sm;
1174 - padding: 32px;
1114 + padding: 28px;
1175 1175   display: grid;
1176 - grid-template-columns: 70px 1fr;
1177 - grid-gap: 24px;
1116 + grid-template-columns: 68px 1fr;
1117 + grid-gap: 22px;
1178 1178   align-items: start;
1179 - overflow: hidden;
1180 1180  
1181 - &:before {
1182 - content: "";
1183 - position: absolute;
1184 - inset: 0 auto 0 0;
1185 - width: 5px;
1186 - background: linear-gradient(180deg, @brand 0%, @brand-strong 100%);
1187 - }
1188 -
1189 1189   .product-card-icon {
1190 1190   width: 58px;
1191 1191   height: 58px;
1192 1192   border-radius: 50%;
1193 1193   background: fade(@brand, 10%);
1194 - border: 1px solid fade(@brand, 22%);
1125 + border: 1px solid fade(@brand, 20%);
1195 1195   color: @brand;
1196 1196   display: flex;
1197 1197   align-items: center;
... ... @@ -1200,15 +1200,11 @@
1200 1200   flex-shrink: 0;
1201 1201   }
1202 1202  
1203 - .product-card-body {
1204 - min-width: 0;
1205 - }
1206 -
1207 1207   h3 {
1208 1208   margin: 0 0 10px;
1209 1209   color: @text;
1210 - font-size: 25px;
1211 - line-height: 1.22;
1137 + font-size: 23px;
1138 + line-height: 1.25;
1212 1212   font-weight: 800;
1213 1213   }
1214 1214  
... ... @@ -1217,36 +1217,25 @@
1217 1217   line-height: 1.6;
1218 1218   }
1219 1219  
1220 - .product-card-description {
1221 - max-width: 760px;
1222 - margin: 0 0 14px;
1223 - font-size: 16px;
1147 + .card-link {
1148 + margin: 0;
1149 +
1150 + a {
1151 + font-weight: 700;
1152 + }
1224 1224   }
1225 1225  }
1226 1226  
1227 1227  .product-card-kicker {
1228 - display: inline-flex;
1229 - align-items: center;
1230 - gap: 7px;
1231 - width: fit-content;
1232 1232   margin-bottom: 10px;
1233 1233   padding: 5px 10px;
1234 - border: 1px solid fade(@brand, 24%);
1235 - border-radius: 999px;
1236 - background: fade(@brand, 8%);
1237 - color: @brand-strong;
1238 1238   font-size: 12px;
1239 - font-weight: 800;
1240 1240   text-transform: uppercase;
1241 1241   letter-spacing: .04em;
1242 -
1243 - i {
1244 - color: @brand;
1245 - }
1246 1246  }
1247 1247  
1248 1248  .product-highlights {
1249 - margin: 14px 0 22px;
1165 + margin: 14px 0 20px;
1250 1250   padding-left: 18px;
1251 1251   color: @muted;
1252 1252  
... ... @@ -1256,58 +1256,12 @@
1256 1256   }
1257 1257  }
1258 1258  
1259 -.product-card-actions {
1260 - display: flex;
1261 - align-items: center;
1262 - gap: 16px;
1263 - flex-wrap: wrap;
1264 -
1265 - .btn {
1266 - font-weight: 700;
1267 - }
1268 -}
1269 -
1270 -.product-card-contact {
1271 - color: @brand;
1272 - font-weight: 700;
1273 - text-decoration: underline;
1274 -
1275 - &:hover,
1276 - &:focus {
1277 - color: @brand-strong;
1278 - }
1279 -}
1280 -
1281 -@media (max-width: 640px) {
1282 - .product-card {
1283 - grid-template-columns: 1fr;
1284 - padding: 26px 22px;
1285 - text-align: left;
1286 -
1287 - &:before {
1288 - width: 4px;
1289 - }
1290 -
1291 - .product-card-icon {
1292 - margin-bottom: 2px;
1293 - }
1294 -
1295 - h3 {
1296 - font-size: 22px;
1297 - }
1298 - }
1299 -
1300 - .product-card-actions {
1301 - gap: 12px;
1302 - }
1303 -}
1304 -
1305 1305  /* ========== Individual Product Pages ========== */
1306 1306  
1307 1307  .product-layout {
1308 1308   display: grid;
1309 - grid-template-columns: minmax(0, 1.12fr) minmax(280px, .88fr);
1310 - grid-gap: 32px;
1179 + grid-template-columns: 1.1fr .9fr;
1180 + grid-gap: 36px;
1311 1311   max-width: 1040px;
1312 1312   margin: 0 auto;
1313 1313   align-items: start;
... ... @@ -1315,7 +1315,6 @@
1315 1315  
1316 1316  .product-summary-card,
1317 1317  .product-info-card,
1318 -.product-feature,
1319 1319  .product-gallery-panel {
1320 1320   background: #fff;
1321 1321   border: 1px solid @line;
... ... @@ -1324,18 +1324,16 @@
1324 1324  }
1325 1325  
1326 1326  .product-summary-card {
1327 - padding: 28px;
1196 + padding: 26px;
1328 1328  
1329 1329   h2 {
1330 1330   text-align: left;
1331 1331   margin-top: 0;
1332 - margin-bottom: 14px;
1333 - line-height: 1.25;
1334 1334   }
1335 1335  
1336 1336   p {
1337 1337   color: @muted;
1338 - line-height: 1.62;
1205 + line-height: 1.6;
1339 1339   }
1340 1340  
1341 1341   p:last-child {
... ... @@ -1344,19 +1344,13 @@
1344 1344  }
1345 1345  
1346 1346  .product-info-card {
1347 - padding: 24px;
1214 + padding: 22px;
1348 1348  
1349 1349   h3 {
1350 1350   margin-top: 0;
1351 1351   margin-bottom: 12px;
1352 - line-height: 1.3;
1353 1353   }
1354 1354  
1355 - p {
1356 - color: @muted;
1357 - line-height: 1.55;
1358 - }
1359 -
1360 1360   ul {
1361 1361   margin: 0;
1362 1362   padding-left: 20px;
... ... @@ -1365,30 +1365,25 @@
1365 1365  
1366 1366   li {
1367 1367   margin: 8px 0;
1368 - line-height: 1.3;
1229 + line-height: 1.45;
1369 1369   }
1370 1370  }
1371 1371  
1372 -.product-card-note {
1373 - margin: 0 0 14px;
1374 - color: @muted;
1375 - line-height: 1.55;
1376 -}
1377 -
1378 1378  .product-feature-grid {
1379 1379   display: grid;
1380 1380   grid-template-columns: repeat(3, minmax(0, 1fr));
1381 - grid-gap: 20px;
1236 + grid-gap: 18px;
1382 1382   max-width: 1040px;
1383 - margin: 24px auto 0;
1238 + margin: 22px auto 0;
1384 1384  }
1385 1385  
1386 1386  .product-feature {
1387 - padding: 24px;
1388 - min-width: 0;
1389 - min-height: 100%;
1242 + background: #fff;
1243 + border: 1px solid @line;
1244 + border-radius: @radius;
1245 + box-shadow: @shadow-sm;
1246 + padding: 22px;
1390 1390  
1391 - .card-heading,
1392 1392   .feature-heading {
1393 1393   display: flex;
1394 1394   align-items: center;
... ... @@ -1419,56 +1419,10 @@
1419 1419   p {
1420 1420   margin: 0;
1421 1421   color: @muted;
1422 - line-height: 1.52;
1278 + line-height: 1.5;
1423 1423   }
1424 1424  }
1425 1425  
1426 -.product-gallery-caption {
1427 - max-width: 820px;
1428 - margin: 12px auto 0;
1429 - color: @muted;
1430 - font-size: 14px;
1431 - line-height: 1.5;
1432 - text-align: center;
1433 -}
1434 -
1435 -/* Keep the default XWiki gallery style.
1436 - Only add spacing before it and center it. */
1437 -.gallery.xGallery {
1438 - margin: 25px auto;
1439 - width: 920px;
1440 - height: 518px;
1441 -}
1442 -
1443 -.product-section-muted {
1444 - background:
1445 - radial-gradient(42rem 16rem at 50% 0%, @brand-bg 0%, transparent 65%);
1446 -}
1447 -
1448 -/* Compact process list when used inside a product card. */
1449 -.product-summary-card .process-list {
1450 - margin-top: 16px;
1451 -
1452 - li {
1453 - padding: 13px 14px 13px 50px;
1454 - margin-bottom: 10px;
1455 - box-shadow: none;
1456 - }
1457 -
1458 - li:before {
1459 - left: 14px;
1460 - top: 14px;
1461 - width: 24px;
1462 - height: 24px;
1463 - font-size: 12px;
1464 - }
1465 -
1466 - strong {
1467 - margin-bottom: 2px;
1468 - }
1469 -}
1470 -
1471 -/* Kept for older product pages that still use a screenshot placeholder/panel. */
1472 1472  .product-gallery-panel {
1473 1473   max-width: 1040px;
1474 1474   margin: 20px auto 0;
... ... @@ -1501,6 +1501,11 @@
1501 1501   justify-content: center;
1502 1502  }
1503 1503  
1314 +.product-section-muted {
1315 + background:
1316 + radial-gradient(42rem 16rem at 50% 0%, @brand-bg 0%, transparent 65%);
1317 +}
1318 +
1504 1504  @media (max-width: 980px) {
1505 1505   .product-layout,
1506 1506   .product-feature-grid {
... ... @@ -1529,32 +1529,6 @@
1529 1529   .product-gallery-panel {
1530 1530   padding: 20px;
1531 1531   }
1532 -
1533 - .product-feature {
1534 - .card-heading,
1535 - .feature-heading {
1536 - gap: 12px;
1537 - }
1538 -
1539 - .feature-icon {
1540 - width: 42px;
1541 - height: 42px;
1542 - font-size: 16px;
1543 - }
1544 - }
1545 -
1546 - .gallery.xGallery {
1547 - margin-top: 22px !important;
1548 - }
1549 -
1550 - .product-gallery-caption {
1551 - margin-top: 10px;
1552 - padding: 0 14px;
1553 - }
1554 -
1555 - .product-summary-card .process-list li {
1556 - padding-left: 46px;
1557 - }
1558 1558  }
1559 1559  
1560 1560  /* ========== Resources Index ========== */