Changes for page Public Web Site
Last modified by Agnease on 2026/07/03 16:14
Summary
-
Page properties (3 modified, 0 added, 0 removed)
-
Attachments (0 modified, 1 added, 0 removed)
-
Objects (1 modified, 0 added, 0 removed)
Details
- Page properties
-
- Default language
-
... ... @@ -1,1 +1,0 @@ 1 -en - Hidden
-
... ... @@ -1,1 +1,1 @@ 1 - false1 +true - 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. ... ... @@ -148,10 +148,11 @@ 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 and business-critical content. 189 + extensions, authentication, permissions, workflows, integrations, compliance documentation 190 + and business-critical knowledge. 152 152 </p> 153 153 <p> 154 - Agnease brings 11+ years of hands-on XWiki experience to help reduce risk, deliverpracticalimprovements193 + Agnease brings 11+ years of hands-on XWiki experience to help reduce risk, support long-term reliability 155 155 and leave the platform easier to maintain after the work is complete. 156 156 </p> 157 157 </div>
- 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,5 +1,5 @@ 1 1 /* ========== Agnease Public Website ========== */ 2 - 2 +/* 3 3 @brand: #00937D; 4 4 @brand-strong: #007B6A; 5 5 @brand-soft: #E7FFF8; ... ... @@ -11,6 +11,19 @@ 11 11 @shadow-sm: 0 6px 20px rgba(0, 0, 0, .06); 12 12 @shadow: 0 12px 36px rgba(0, 0, 0, .08); 13 13 @maxw: 1140px; 14 +*/ 15 +@brand: #00937D; 16 +@brand-strong: #007B6A; 17 +@brand-soft: #E7FFF8; 18 +@brand-bg: #F7F9FC; 19 +@text: #07182D; 20 +@text-soft: #10243D; 21 +@muted: #64748B; 22 +@line: #E6EBF2; 23 +@radius: 18px; 24 +@shadow-sm: 0 18px 45px rgba(15, 23, 42, .06); 25 +@shadow: 0 30px 80px rgba(15, 23, 42, .12); 26 +@maxw: 1140px; 14 14 15 15 @section-padding: 30px 0; 16 16 @section-padding-mobile: 28px 0; ... ... @@ -137,7 +137,7 @@ 137 137 138 138 /* ========== Buttons ========== */ 139 139 140 -.btn-primary { 153 +/*.btn-primary { 141 141 background: @brand; 142 142 border-color: @brand; 143 143 color: #fff; ... ... @@ -149,18 +149,12 @@ 149 149 color: #fff; 150 150 } 151 151 } 152 - 165 +*/ 153 153 .btn-secondary { 154 - color: @ brand;167 + color: @text; 155 155 background: #fff; 156 - border: 1px solid fade(@ brand, 35%);169 + border: 1px solid fade(@text, 35%); 157 157 158 - &:hover, 159 - &:focus { 160 - color: @brand-strong; 161 - border-color: @brand; 162 - background: @brand-bg; 163 - } 164 164 } 165 165 166 166 /* ========== Hero ========== */ ... ... @@ -172,9 +172,6 @@ 172 172 173 173 &.hero-centered { 174 174 text-align: center; 175 - background: 176 - radial-gradient(50rem 18rem at 50% -10%, @brand-soft 0%, transparent 60%), 177 - radial-gradient(50rem 18rem at 50% 0%, #E8F6F3 0%, transparent 60%); 178 178 display: flex; 179 179 align-items: center; 180 180 justify-content: center; ... ... @@ -248,7 +248,6 @@ 248 248 .trust-strip { 249 249 padding: 18px 0; 250 250 border-top: 1px solid @line; 251 - background: #fff; 252 252 253 253 ul { 254 254 max-width: 960px; ... ... @@ -321,7 +321,6 @@ 321 321 .pathway-card, 322 322 .service-card, 323 323 .resource-card { 324 - background: #fff; 325 325 border: 1px solid @line; 326 326 border-radius: @radius; 327 327 box-shadow: @shadow-sm; ... ... @@ -453,6 +453,7 @@ 453 453 454 454 .section-intro { 455 455 margin-bottom: 20px; 458 + max-width: 820px; 456 456 } 457 457 458 458 .industry-tags { ... ... @@ -516,7 +516,6 @@ 516 516 align-items: flex-start; 517 517 gap: 16px; 518 518 padding: 22px; 519 - background: #fff; 520 520 border: 1px solid @line; 521 521 border-radius: @radius; 522 522 box-shadow: @shadow-sm; ... ... @@ -604,7 +604,6 @@ 604 604 position: relative; 605 605 padding: 16px 16px 16px 58px; 606 606 margin-bottom: 12px; 607 - background: #fff; 608 608 border: 1px solid @line; 609 609 border-radius: @radius; 610 610 box-shadow: @shadow-sm; ... ... @@ -736,8 +736,8 @@ 736 736 737 737 /* ========== CTA ========== */ 738 738 739 -.cta-section { 740 - padding: @section-padding;740 +#mainContentArea .cta-section { 741 + padding: 44px 0 56px; 741 741 742 742 .contact-inline { 743 743 margin: 0; ... ... @@ -749,27 +749,70 @@ 749 749 } 750 750 } 751 751 752 -.cta-panel { 753 - max-width: 860px; 753 +#mainContentArea .cta-panel { 754 + position: relative; 755 + overflow: hidden; 756 + max-width: 1040px; 754 754 margin: 0 auto; 755 - padding: 32px;756 - border -radius:@radius;757 - border : 1px solid fade(@brand,20%);758 + padding: 48px 40px; 759 + border: 0; 760 + border-radius: 26px; 758 758 background: 759 - radial-gradient(34rem 12rem at 50% 0%, @brand-soft 0%, #fff 70%); 760 - box-shadow: @shadow-sm; 762 + radial-gradient(circle at 88% 10%, fade(@brand, 24%) 0%, transparent 30%), 763 + linear-gradient(135deg, @text 0%, @text-soft 100%); 764 + color: #fff; 765 + box-shadow: @shadow; 761 761 text-align: center; 767 +} 762 762 763 - h2 { 764 - margin-top: 0; 765 - } 769 +#mainContentArea .cta-panel::before { 770 + content: ""; 771 + position: absolute; 772 + inset: 0; 773 + background: 774 + linear-gradient(90deg, fade(#fff, 4%) 1px, transparent 1px), 775 + linear-gradient(180deg, fade(#fff, 4%) 1px, transparent 1px); 776 + background-size: 48px 48px; 777 + opacity: .4; 778 + pointer-events: none; 779 +} 766 766 767 - p { 768 - color: @muted; 769 - line-height: 1.55; 770 - } 781 +#mainContentArea .cta-panel h2, 782 +#mainContentArea .cta-panel p, 783 +#mainContentArea .cta-panel .btn { 784 + position: relative; 785 + z-index: 1; 771 771 } 772 772 788 +#mainContentArea .cta-panel h2 { 789 + max-width: 760px; 790 + margin: 0 auto 16px; 791 + color: #fff; 792 +} 793 + 794 +#mainContentArea .cta-panel p { 795 + max-width: 760px; 796 + margin: 0 auto 28px; 797 + color: #DBE4EF; 798 + font-size: 16px; 799 + line-height: 1.6; 800 +} 801 + 802 +#mainContentArea .cta-panel .btn-primary { 803 + border-color: #fff; 804 + background: #fff; 805 + color: @text; 806 + box-shadow: 0 18px 42px rgba(0, 0, 0, .18); 807 +} 808 + 809 +#mainContentArea .cta-panel .btn-primary:hover, 810 +#mainContentArea .cta-panel .btn-primary:focus { 811 + border-color: #fff; 812 + background: #fff; 813 + color: @brand-strong; 814 + text-decoration: none; 815 +} 816 + 773 773 .resource-inline-cta { 774 774 display: flex; 775 775 align-items: center; ... ... @@ -901,9 +901,14 @@ 901 901 gap: 14px; 902 902 } 903 903 904 - .cta-panel { 905 - padding: 24px 20px; 948 + #mainContentArea .cta-panel { 949 + padding: 30px 22px; 950 + border-radius: 20px; 906 906 } 952 + 953 + #mainContentArea .cta-panel .btn-primary { 954 + width: 100%; 955 + } 907 907 } 908 908 909 909 /* ========== Resource / Article Pages ========== */ ... ... @@ -915,9 +915,6 @@ 915 915 .resource-header { 916 916 padding: @section-padding; 917 917 border-top: none; 918 - background: 919 - radial-gradient(50rem 18rem at 50% -10%, @brand-soft 0%, transparent 60%), 920 - radial-gradient(50rem 18rem at 50% 0%, #E8F6F3 0%, transparent 60%); 921 921 922 922 h1 { 923 923 margin: 0 auto 14px; ... ... @@ -995,6 +995,45 @@ 995 995 } 996 996 } 997 997 1044 +.resource-note.related-resources { 1045 + p { 1046 + margin-bottom: 10px; 1047 + } 1048 + 1049 + ul { 1050 + margin: 0; 1051 + padding-left: 20px; 1052 + } 1053 + 1054 + li { 1055 + margin: 6px 0; 1056 + color: @muted; 1057 + } 1058 +} 1059 + 1060 +.resource-faq-item { 1061 + display: flow-root; 1062 + border-bottom: 1px solid @line; 1063 + padding: 12px 0; 1064 + 1065 + summary { 1066 + cursor: pointer; 1067 + font-weight: 700; 1068 + color: @text; 1069 + line-height: 1.4; 1070 + } 1071 + 1072 + summary:hover, 1073 + summary:focus { 1074 + color: @brand-strong; 1075 + } 1076 + 1077 + p { 1078 + margin: 10px 0 4px; 1079 + color: @muted; 1080 + } 1081 +} 1082 + 998 998 .resource-checklist { 999 999 margin: 18px 0 24px; 1000 1000 padding: 0; ... ... @@ -1026,7 +1026,6 @@ 1026 1026 border: 1px solid @line; 1027 1027 border-radius: @radius; 1028 1028 padding: 18px; 1029 - background: #fff; 1030 1030 box-shadow: @shadow-sm; 1031 1031 1032 1032 h4 { ... ... @@ -1116,30 +1116,39 @@ 1116 1116 } 1117 1117 1118 1118 .product-card-grid { 1119 - max-width: 8 40px;1120 - margin: 2 2px auto 0;1203 + max-width: 980px; 1204 + margin: 26px auto 0; 1121 1121 display: grid; 1122 1122 grid-template-columns: 1fr; 1123 - grid-gap: 18px;1207 + grid-gap: 22px; 1124 1124 } 1125 1125 1126 1126 .product-card { 1127 - background:#fff;1211 + position: relative; 1128 1128 border: 1px solid @line; 1129 1129 border-radius: @radius; 1130 1130 box-shadow: @shadow-sm; 1131 - padding: 2 8px;1215 + padding: 32px; 1132 1132 display: grid; 1133 - grid-template-columns: 68px 1fr;1134 - grid-gap: 2 2px;1217 + grid-template-columns: 70px 1fr; 1218 + grid-gap: 24px; 1135 1135 align-items: start; 1220 + overflow: hidden; 1136 1136 1222 + &:before { 1223 + content: ""; 1224 + position: absolute; 1225 + inset: 0 auto 0 0; 1226 + width: 5px; 1227 + background: linear-gradient(180deg, @brand 0%, @brand-strong 100%); 1228 + } 1229 + 1137 1137 .product-card-icon { 1138 1138 width: 58px; 1139 1139 height: 58px; 1140 1140 border-radius: 50%; 1141 1141 background: fade(@brand, 10%); 1142 - border: 1px solid fade(@brand, 2 0%);1235 + border: 1px solid fade(@brand, 22%); 1143 1143 color: @brand; 1144 1144 display: flex; 1145 1145 align-items: center; ... ... @@ -1148,11 +1148,15 @@ 1148 1148 flex-shrink: 0; 1149 1149 } 1150 1150 1244 + .product-card-body { 1245 + min-width: 0; 1246 + } 1247 + 1151 1151 h3 { 1152 1152 margin: 0 0 10px; 1153 1153 color: @text; 1154 - font-size: 2 3px;1155 - line-height: 1.2 5;1251 + font-size: 25px; 1252 + line-height: 1.22; 1156 1156 font-weight: 800; 1157 1157 } 1158 1158 ... ... @@ -1161,25 +1161,36 @@ 1161 1161 line-height: 1.6; 1162 1162 } 1163 1163 1164 - .card-link { 1165 - margin: 0; 1166 - 1167 - a { 1168 - font-weight: 700; 1169 - } 1261 + .product-card-description { 1262 + max-width: 760px; 1263 + margin: 0 0 14px; 1264 + font-size: 16px; 1170 1170 } 1171 1171 } 1172 1172 1173 1173 .product-card-kicker { 1269 + display: inline-flex; 1270 + align-items: center; 1271 + gap: 7px; 1272 + width: fit-content; 1174 1174 margin-bottom: 10px; 1175 1175 padding: 5px 10px; 1275 + border: 1px solid fade(@brand, 24%); 1276 + border-radius: 999px; 1277 + background: fade(@brand, 8%); 1278 + color: @brand-strong; 1176 1176 font-size: 12px; 1280 + font-weight: 800; 1177 1177 text-transform: uppercase; 1178 1178 letter-spacing: .04em; 1283 + 1284 + i { 1285 + color: @brand; 1286 + } 1179 1179 } 1180 1180 1181 1181 .product-highlights { 1182 - margin: 14px 0 2 0px;1290 + margin: 14px 0 22px; 1183 1183 padding-left: 18px; 1184 1184 color: @muted; 1185 1185 ... ... @@ -1189,12 +1189,58 @@ 1189 1189 } 1190 1190 } 1191 1191 1300 +.product-card-actions { 1301 + display: flex; 1302 + align-items: center; 1303 + gap: 16px; 1304 + flex-wrap: wrap; 1305 + 1306 + .btn { 1307 + font-weight: 700; 1308 + } 1309 +} 1310 + 1311 +.product-card-contact { 1312 + color: @brand; 1313 + font-weight: 700; 1314 + text-decoration: underline; 1315 + 1316 + &:hover, 1317 + &:focus { 1318 + color: @brand-strong; 1319 + } 1320 +} 1321 + 1322 +@media (max-width: 640px) { 1323 + .product-card { 1324 + grid-template-columns: 1fr; 1325 + padding: 26px 22px; 1326 + text-align: left; 1327 + 1328 + &:before { 1329 + width: 4px; 1330 + } 1331 + 1332 + .product-card-icon { 1333 + margin-bottom: 2px; 1334 + } 1335 + 1336 + h3 { 1337 + font-size: 22px; 1338 + } 1339 + } 1340 + 1341 + .product-card-actions { 1342 + gap: 12px; 1343 + } 1344 +} 1345 + 1192 1192 /* ========== Individual Product Pages ========== */ 1193 1193 1194 1194 .product-layout { 1195 1195 display: grid; 1196 - grid-template-columns: 1.1fr . 9fr;1197 - grid-gap: 3 6px;1350 + grid-template-columns: minmax(0, 1.12fr) minmax(280px, .88fr); 1351 + grid-gap: 32px; 1198 1198 max-width: 1040px; 1199 1199 margin: 0 auto; 1200 1200 align-items: start; ... ... @@ -1202,8 +1202,8 @@ 1202 1202 1203 1203 .product-summary-card, 1204 1204 .product-info-card, 1359 +.product-feature, 1205 1205 .product-gallery-panel { 1206 - background: #fff; 1207 1207 border: 1px solid @line; 1208 1208 border-radius: @radius; 1209 1209 box-shadow: @shadow-sm; ... ... @@ -1210,16 +1210,18 @@ 1210 1210 } 1211 1211 1212 1212 .product-summary-card { 1213 - padding: 2 6px;1367 + padding: 28px; 1214 1214 1215 1215 h2 { 1216 1216 text-align: left; 1217 1217 margin-top: 0; 1372 + margin-bottom: 14px; 1373 + line-height: 1.25; 1218 1218 } 1219 1219 1220 1220 p { 1221 1221 color: @muted; 1222 - line-height: 1.6; 1378 + line-height: 1.62; 1223 1223 } 1224 1224 1225 1225 p:last-child { ... ... @@ -1228,13 +1228,19 @@ 1228 1228 } 1229 1229 1230 1230 .product-info-card { 1231 - padding: 2 2px;1387 + padding: 24px; 1232 1232 1233 1233 h3 { 1234 1234 margin-top: 0; 1235 1235 margin-bottom: 12px; 1392 + line-height: 1.3; 1236 1236 } 1237 1237 1395 + p { 1396 + color: @muted; 1397 + line-height: 1.55; 1398 + } 1399 + 1238 1238 ul { 1239 1239 margin: 0; 1240 1240 padding-left: 20px; ... ... @@ -1243,25 +1243,30 @@ 1243 1243 1244 1244 li { 1245 1245 margin: 8px 0; 1246 - line-height: 1. 45;1408 + line-height: 1.3; 1247 1247 } 1248 1248 } 1249 1249 1412 +.product-card-note { 1413 + margin: 0 0 14px; 1414 + color: @muted; 1415 + line-height: 1.55; 1416 +} 1417 + 1250 1250 .product-feature-grid { 1251 1251 display: grid; 1252 1252 grid-template-columns: repeat(3, minmax(0, 1fr)); 1253 - grid-gap: 18px;1421 + grid-gap: 20px; 1254 1254 max-width: 1040px; 1255 - margin: 2 2px auto 0;1423 + margin: 24px auto 0; 1256 1256 } 1257 1257 1258 1258 .product-feature { 1259 - background: #fff; 1260 - border: 1px solid @line; 1261 - border-radius: @radius; 1262 - box-shadow: @shadow-sm; 1263 - padding: 22px; 1427 + padding: 24px; 1428 + min-width: 0; 1429 + min-height: 100%; 1264 1264 1431 + .card-heading, 1265 1265 .feature-heading { 1266 1266 display: flex; 1267 1267 align-items: center; ... ... @@ -1292,10 +1292,56 @@ 1292 1292 p { 1293 1293 margin: 0; 1294 1294 color: @muted; 1295 - line-height: 1.5; 1462 + line-height: 1.52; 1296 1296 } 1297 1297 } 1298 1298 1466 +.product-gallery-caption { 1467 + max-width: 820px; 1468 + margin: 12px auto 0; 1469 + color: @muted; 1470 + font-size: 14px; 1471 + line-height: 1.5; 1472 + text-align: center; 1473 +} 1474 + 1475 +/* Keep the default XWiki gallery style. 1476 + Only add spacing before it and center it. */ 1477 +.gallery.xGallery { 1478 + margin: 25px auto; 1479 + width: 920px; 1480 + height: 518px; 1481 +} 1482 + 1483 +.product-section-muted { 1484 + background: 1485 + radial-gradient(42rem 16rem at 50% 0%, @brand-bg 0%, transparent 65%); 1486 +} 1487 + 1488 +/* Compact process list when used inside a product card. */ 1489 +.product-summary-card .process-list { 1490 + margin-top: 16px; 1491 + 1492 + li { 1493 + padding: 13px 14px 13px 50px; 1494 + margin-bottom: 10px; 1495 + box-shadow: none; 1496 + } 1497 + 1498 + li:before { 1499 + left: 14px; 1500 + top: 14px; 1501 + width: 24px; 1502 + height: 24px; 1503 + font-size: 12px; 1504 + } 1505 + 1506 + strong { 1507 + margin-bottom: 2px; 1508 + } 1509 +} 1510 + 1511 +/* Kept for older product pages that still use a screenshot placeholder/panel. */ 1299 1299 .product-gallery-panel { 1300 1300 max-width: 1040px; 1301 1301 margin: 20px auto 0; ... ... @@ -1328,11 +1328,6 @@ 1328 1328 justify-content: center; 1329 1329 } 1330 1330 1331 -.product-section-muted { 1332 - background: 1333 - radial-gradient(42rem 16rem at 50% 0%, @brand-bg 0%, transparent 65%); 1334 -} 1335 - 1336 1336 @media (max-width: 980px) { 1337 1337 .product-layout, 1338 1338 .product-feature-grid { ... ... @@ -1361,12 +1361,37 @@ 1361 1361 .product-gallery-panel { 1362 1362 padding: 20px; 1363 1363 } 1572 + 1573 + .product-feature { 1574 + .card-heading, 1575 + .feature-heading { 1576 + gap: 12px; 1577 + } 1578 + 1579 + .feature-icon { 1580 + width: 42px; 1581 + height: 42px; 1582 + font-size: 16px; 1583 + } 1584 + } 1585 + 1586 + .gallery.xGallery { 1587 + margin-top: 22px !important; 1588 + } 1589 + 1590 + .product-gallery-caption { 1591 + margin-top: 10px; 1592 + padding: 0 14px; 1593 + } 1594 + 1595 + .product-summary-card .process-list li { 1596 + padding-left: 46px; 1597 + } 1364 1364 } 1365 1365 1366 1366 /* ========== Resources Index ========== */ 1367 1367 1368 1368 .resources-index-page { 1369 - background: #fff; 1370 1370 1371 1371 .services-grid { 1372 1372 grid-template-columns: repeat(2, minmax(0, 1fr)); ... ... @@ -1402,3 +1402,321 @@ 1402 1402 color: @muted; 1403 1403 } 1404 1404 } 1638 + 1639 +/* ========== Global Theme Background ========== */ 1640 + 1641 +html, 1642 +body { 1643 + min-height: 100%; 1644 +} 1645 + 1646 +body { 1647 + color: @text; 1648 + background: 1649 + radial-gradient(circle at 12% 8%, rgba(0, 147, 125, 0.08) 0, transparent 26%), 1650 + radial-gradient(circle at 90% 28%, rgba(7, 24, 45, 0.05) 0, transparent 30%), 1651 + linear-gradient(180deg, #fff 0, @brand-bg 42%, #fff 100%) !important; 1652 + background-attachment: fixed; 1653 +} 1654 + 1655 +/* Let the body background show through the XWiki wrappers. 1656 +#mainContentArea, 1657 +.resource-page, 1658 +.resources-index-page { 1659 + background: transparent !important; 1660 + background-image: none !important; 1661 +} 1662 +*/ 1663 +/* Remove local decorative backgrounds that compete with the global gradient. 1664 +.hero, 1665 +.hero.hero-centered, 1666 +.trust-strip, 1667 +.industry-trust-section, 1668 +.split-section, 1669 +.resource-strip, 1670 +.homepage-resource-strip, 1671 +.resource-header, 1672 +.product-section-muted, 1673 +.resources-index-page { 1674 + background: transparent !important; 1675 + background-image: none !important; 1676 +} 1677 + */ 1678 +/* Keep large panels readable, but remove their inner gradients. 1679 +.industry-trust-section .industry-trust-panel, 1680 +.cta-panel, 1681 +.resource-inline-cta, 1682 +.resource-note, 1683 +.resource-cta { 1684 + background: #fff !important; 1685 + background-image: none !important; 1686 +} */ 1687 + 1688 +/* ========== Main Page Hero / SaaS Layout ========== */ 1689 + 1690 +#mainContentArea .hero.hero-saas { 1691 + min-height: auto; 1692 + padding: 60px 0 34px; 1693 + display: flex; 1694 + align-items: center; 1695 + overflow: hidden; 1696 + background: transparent; 1697 +} 1698 + 1699 +#mainContentArea .hero-layout { 1700 + max-width: 1120px; 1701 + margin: 0 auto; 1702 + display: grid; 1703 + grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); 1704 + gap: 56px; 1705 + align-items: center; 1706 +} 1707 + 1708 +#mainContentArea .hero-copy { 1709 + min-width: 0; 1710 + text-align: left; 1711 +} 1712 + 1713 +#mainContentArea .hero.hero-saas h1 { 1714 + max-width: 640px; 1715 + margin: 0 0 26px; 1716 + font-size: 60px; 1717 + font-weight: 800; 1718 + line-height: 1; 1719 + letter-spacing: -3px; 1720 +} 1721 + 1722 +#mainContentArea .hero.hero-saas h1 span { 1723 + color: @brand; 1724 +} 1725 + 1726 +#mainContentArea .hero.hero-saas .lead { 1727 + max-width: 590px; 1728 + margin: 0 0 28px; 1729 + color: #334155; 1730 + text-align: left; 1731 + font-size: 18px; 1732 + line-height: 1.6; 1733 +} 1734 + 1735 +#mainContentArea .hero.hero-saas .benefits { 1736 + max-width: 620px; 1737 + margin: 0 0 30px; 1738 + padding: 0; 1739 + display: grid; 1740 + grid-template-columns: repeat(2, minmax(0, 1fr)); 1741 + gap: 10px 24px; 1742 + list-style: none; 1743 + color: #475569; 1744 + font-size: 15px; 1745 + text-align: left; 1746 +} 1747 + 1748 +#mainContentArea .hero.hero-saas .benefits li { 1749 + display: grid; 1750 + grid-template-columns: 18px minmax(0, 1fr); 1751 + column-gap: 8px; 1752 + align-items: start; 1753 + margin: 0; 1754 + line-height: 1.45; 1755 +} 1756 + 1757 +#mainContentArea .hero.hero-saas .benefits li::before { 1758 + content: "✓"; 1759 + display: block; 1760 + width: 18px; 1761 + color: @brand; 1762 + font-weight: 900; 1763 + line-height: 1.45; 1764 + text-align: left; 1765 + margin: 0; 1766 +} 1767 + 1768 +#mainContentArea .hero.hero-saas .hero-actions, 1769 +#mainContentArea .hero.hero-saas #hero-cta { 1770 + display: flex; 1771 + flex-wrap: wrap; 1772 + justify-content: flex-start; 1773 + gap: 12px; 1774 + margin-top: 0; 1775 +} 1776 + 1777 +#mainContentArea .hero-image-wrapper { 1778 + min-width: 0; 1779 + display: flex; 1780 + justify-content: center; 1781 + align-items: center; 1782 +} 1783 + 1784 +#mainContentArea .hero-image { 1785 + display: block; 1786 + width: 100%; 1787 + max-width: 620px; 1788 + height: auto; 1789 + border: 0; 1790 +} 1791 + 1792 +/* ========== Main Page Hero Responsive ========== */ 1793 + 1794 +@media (max-width: 1100px) { 1795 + #mainContentArea .hero-layout { 1796 + max-width: 760px; 1797 + grid-template-columns: 1fr; 1798 + gap: 34px; 1799 + } 1800 + 1801 + #mainContentArea .hero-copy { 1802 + order: 1; 1803 + text-align: center; 1804 + } 1805 + 1806 + #mainContentArea .hero-image-wrapper { 1807 + order: 2; 1808 + } 1809 + 1810 + #mainContentArea .hero.hero-saas h1 { 1811 + margin-left: auto; 1812 + margin-right: auto; 1813 + text-align: center; 1814 + } 1815 + 1816 + #mainContentArea .hero.hero-saas .lead { 1817 + margin-left: auto; 1818 + margin-right: auto; 1819 + text-align: center; 1820 + } 1821 + 1822 + #mainContentArea .hero.hero-saas .benefits { 1823 + margin-left: auto; 1824 + margin-right: auto; 1825 + } 1826 + 1827 + #mainContentArea .hero.hero-saas .hero-actions, 1828 + #mainContentArea .hero.hero-saas #hero-cta { 1829 + justify-content: center; 1830 + } 1831 + 1832 + #mainContentArea .hero-image { 1833 + max-width: 620px; 1834 + } 1835 +} 1836 + 1837 +@media (max-width: 640px) { 1838 + #mainContentArea .hero.hero-saas { 1839 + padding: 42px 0 28px; 1840 + } 1841 + 1842 + #mainContentArea .hero-layout { 1843 + gap: 28px; 1844 + } 1845 + 1846 + #mainContentArea .hero.hero-saas h1 { 1847 + font-size: 42px; 1848 + letter-spacing: -1.5px; 1849 + } 1850 + 1851 + #mainContentArea .hero.hero-saas .lead { 1852 + font-size: 17px; 1853 + } 1854 + 1855 + #mainContentArea .hero.hero-saas .benefits { 1856 + grid-template-columns: 1fr; 1857 + } 1858 + 1859 + #mainContentArea .hero-image { 1860 + max-width: 100%; 1861 + } 1862 +} 1863 + 1864 +/* ========== Accessibility / Contrast Improvements ========== */ 1865 + 1866 +/* Make the global background softer and less distracting. */ 1867 +body { 1868 + background: 1869 + radial-gradient(circle at 12% 8%, rgba(0, 147, 125, 0.035) 0, transparent 26%), 1870 + radial-gradient(circle at 90% 28%, rgba(7, 24, 45, 0.025) 0, transparent 30%), 1871 + linear-gradient(180deg, #fff 0, @brand-bg 42%, #fff 100%) !important; 1872 + background-attachment: scroll; 1873 +} 1874 + 1875 +/* Keep the article area readable while preserving the page background around it. */ 1876 +#mainContentArea .resource-layout { 1877 + padding: 28px; 1878 + border: 1px solid fade(@line, 85%); 1879 + border-radius: @radius; 1880 + background: rgba(255, 255, 255, .88); 1881 + box-shadow: @shadow-sm; 1882 +} 1883 + 1884 +/* Ensure all reusable cards have a real surface, not transparent over the gradient. */ 1885 +#mainContentArea .widget, 1886 +#mainContentArea .pathway-card, 1887 +#mainContentArea .service-card, 1888 +#mainContentArea .resource-card, 1889 +#mainContentArea .services .service, 1890 +#mainContentArea .product-card, 1891 +#mainContentArea .product-feature, 1892 +#mainContentArea .product-summary-card, 1893 +#mainContentArea .product-info-card { 1894 + background: #fff; 1895 +} 1896 + 1897 +/* Make notes more readable and visually stronger. */ 1898 +#mainContentArea .resource-note { 1899 + border: 1px solid fade(@brand, 18%); 1900 + border-left: 4px solid @brand; 1901 + background: #fff; 1902 + box-shadow: 0 10px 28px rgba(15, 23, 42, .045); 1903 +} 1904 + 1905 +/* Keep the sidebar clearly separated from the background. */ 1906 +#mainContentArea .resource-sidebar { 1907 + background: #fff; 1908 +} 1909 + 1910 +/* Make CTA panels stand out more clearly. */ 1911 +#mainContentArea .resource-cta, 1912 +#mainContentArea .resource-inline-cta { 1913 + background: #fff; 1914 +} 1915 + 1916 +/* Improve table readability on long resource pages. */ 1917 +#mainContentArea .resource-content table { 1918 + background: #fff; 1919 +} 1920 + 1921 +#mainContentArea .resource-content table th { 1922 + color: @text; 1923 + background: #F8FAFC; 1924 +} 1925 + 1926 +#mainContentArea .resource-content table td { 1927 + color: @text-soft; 1928 +} 1929 + 1930 +/* Slightly improve paragraph/list contrast in long articles. */ 1931 +#mainContentArea .resource-content p, 1932 +#mainContentArea .resource-content li { 1933 + color: @text-soft; 1934 +} 1935 + 1936 +#mainContentArea .resource-content .resource-note p, 1937 +#mainContentArea .resource-content .resource-checklist li, 1938 +#mainContentArea .resource-content .process-list li { 1939 + color: @muted; 1940 +} 1941 + 1942 +@media (max-width: 900px) { 1943 + #mainContentArea .resource-layout { 1944 + padding: 22px; 1945 + } 1946 +} 1947 + 1948 +@media (max-width: 640px) { 1949 + #mainContentArea .resource-layout { 1950 + padding: 18px; 1951 + border-radius: 14px; 1952 + } 1953 +} 1954 + 1955 +