Changes for page Public Web Site

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

From version 6.27
edited by Agnease
on 2026/05/12 11:59
Change comment: There is no comment for this version
To version 11.9
edited by Agnease
on 2026/05/22 08:47
Change comment: There is no comment for this version

Summary

Details

Page properties
Content
... ... @@ -7,20 +7,16 @@
7 7   <div class="container hero-inner">
8 8   <div class="hero-kicker">
9 9   <i class="fa fa-shield" aria-hidden="true"></i>
10 - XWiki consulting, upgrades and long-term support
10 + Your trusted partner for professional XWiki services
11 11   </div>
12 12  
13 - <h1 id="hero-title">Reliable XWiki engineering for organizations that depend on their knowledge platform</h1>
13 + <h1 id="hero-title">rofessional XWiki engineering and support</h1>
14 14  
15 15   <p class="lead">
16 - Agnease helps companies keep XWiki secure, stable, up-to-date and adapted to real business processes.
16 + Agnease helps organizations upgrade, maintain, secure and extend XWiki so production platforms stay stable,
17 + up-to-date and adapted to real business processes.
17 17   </p>
18 18  
19 - <p class="hero-support">
20 - From LTS upgrades and maintenance to custom applications, integrations, workflows and migrations,
21 - Agnease provides focused XWiki expertise with practical delivery and long-term care.
22 - </p>
23 -
24 24   <ul class="benefits">
25 25   <li>Safe LTS upgrades</li>
26 26   <li>Support and recovery</li>
... ... @@ -70,7 +70,7 @@
70 70   <li>Production rollout validation</li>
71 71   </ul>
72 72   <p class="card-link">
73 - <a href="/services/xwiki-upgrades">View upgrade services</a>
69 + <a href="$xwiki.getURL('services.xwiki-upgrades')">View upgrade services</a>
74 74   </p>
75 75   </article>
76 76  
... ... @@ -88,7 +88,7 @@
88 88   <li>Security-aware maintenance</li>
89 89   </ul>
90 90   <p class="card-link">
91 - <a href="/services/xwiki-maintenance-support">View support services</a>
87 + <a href="$xwiki.getURL('services.xwiki-maintenance-support')">View support services</a>
92 92   </p>
93 93   </article>
94 94  
... ... @@ -106,7 +106,7 @@
106 106   <li>SSO, LDAP, APIs and integrations</li>
107 107   </ul>
108 108   <p class="card-link">
109 - <a href="/services/xwiki-development-integrations">View development services</a>
105 + <a href="$xwiki.getURL('services.xwiki-development-integrations')">View development services</a>
110 110   </p>
111 111   </article>
112 112   </div>
... ... @@ -146,7 +146,7 @@
146 146   </div>
147 147   </section>
148 148  
149 - <section class="resource-strip" aria-labelledby="resources-title">
145 + <section class="resource-strip homepage-resource-strip" aria-labelledby="resources-title">
150 150   <div class="container">
151 151   <h2 id="resources-title">Useful XWiki resources</h2>
152 152   <p class="section-intro">
... ... @@ -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="/resources/why-upgrade-xwiki">Read the resource</a>
158 + <a href="$xwiki.getURL('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="/services/xwiki-upgrades">View the service</a>
166 + <a href="$xwiki.getURL('services.xwiki-upgrades')">View the service</a>
171 171   </article>
172 172   </div>
173 173   </div>
... ... @@ -231,5 +231,4 @@
231 231   </dl>
232 232   </div>
233 233  #end
234 -#displayPublicContent
235 235  {{/velocity}}
XWiki.StyleSheetExtension[0]
code
... ... @@ -1,14 +1,22 @@
1 -/* ========== Agnease Landing (no Bootstrap grid) ========== */
1 +/* ========== Agnease Public Website ========== */
2 +
2 2  @brand: #00937D;
3 3  @brand-strong: #007B6A;
5 +@brand-soft: #E7FFF8;
6 +@brand-bg: #F4FCFA;
4 4  @text: #2D3A34;
5 5  @muted: #5B6B64;
6 6  @line: #E4ECE9;
7 7  @radius: 16px;
8 -@shadow-sm: 0 6px 20px rgba(0,0,0,.06);
9 -@shadow: 0 12px 36px rgba(0,0,0,.08);
11 +@shadow-sm: 0 6px 20px rgba(0, 0, 0, .06);
12 +@shadow: 0 12px 36px rgba(0, 0, 0, .08);
10 10  @maxw: 1140px;
11 11  
15 +@section-padding: 30px 0;
16 +@section-padding-mobile: 28px 0;
17 +
18 +/* ========== Base ========== */
19 +
12 12  #mainContentArea {
13 13   padding: 0;
14 14  }
... ... @@ -15,27 +15,148 @@
15 15  
16 16  .container {
17 17   max-width: @maxw;
26 + margin-left: auto;
27 + margin-right: auto;
28 + padding-left: 18px;
29 + padding-right: 18px;
18 18  }
19 19  
32 +html {
33 + scroll-behavior: smooth;
34 +}
35 +
36 +section {
37 + padding: @section-padding;
38 + border-top: 1px solid @line;
39 +
40 + &:first-of-type {
41 + border-top: none;
42 + }
43 +}
44 +
45 +section[id] {
46 + scroll-margin-top: 92px;
47 +}
48 +
49 +h1,
50 +h2,
51 +h3,
52 +h4 {
53 + color: @text;
54 +}
55 +
56 +h2 {
57 + text-align: center;
58 + margin-top: 0;
59 +}
60 +
20 20  .lead {
21 21   color: @muted;
22 22   text-align: center;
23 23   margin-bottom: 0;
24 24  }
25 -h2 {
66 +
67 +.section-intro {
68 + max-width: 760px;
69 + margin: 0 auto 22px;
26 26   text-align: center;
71 + color: @muted;
72 + font-size: 16px;
73 + line-height: 1.55;
27 27  }
28 28  
29 -section {
30 - padding: 32px 0;
31 - border-top: 1px solid @line;
76 +a {
77 + color: @brand;
32 32  
33 - &:first-of-type {
34 - border-top: none;
79 + &:hover,
80 + &:focus {
81 + color: @brand-strong;
35 35   }
36 36  }
37 37  
38 -/* ===== HERO ===== */
85 +/* ========== Header / Navigation ========== */
86 +
87 +.site-header {
88 + position: sticky;
89 + top: 0;
90 + z-index: 1000;
91 + background: fade(#fff, 96%);
92 + border-bottom: 1px solid fade(@line, 85%);
93 + backdrop-filter: blur(8px);
94 +}
95 +
96 +.header-inner {
97 + min-height: 72px;
98 + display: flex;
99 + align-items: center;
100 + justify-content: space-between;
101 + gap: 24px;
102 +}
103 +
104 +.site-nav {
105 + display: flex;
106 + align-items: center;
107 + gap: 22px;
108 + font-size: 15px;
109 +
110 + a {
111 + color: @text;
112 + text-decoration: none;
113 + font-weight: 600;
114 +
115 + &:hover,
116 + &:focus {
117 + color: @brand;
118 + text-decoration: none;
119 + }
120 + }
121 +
122 + .nav-cta {
123 + color: #fff;
124 + background: @brand;
125 + border: 1px solid @brand;
126 + border-radius: 6px;
127 + padding: 8px 14px;
128 +
129 + &:hover,
130 + &:focus {
131 + color: #fff;
132 + background: @brand-strong;
133 + border-color: @brand-strong;
134 + }
135 + }
136 +}
137 +
138 +/* ========== Buttons ========== */
139 +
140 +.btn-primary {
141 + background: @brand;
142 + border-color: @brand;
143 + color: #fff;
144 +
145 + &:hover,
146 + &:focus {
147 + background: @brand-strong;
148 + border-color: @brand-strong;
149 + color: #fff;
150 + }
151 +}
152 +
153 +.btn-secondary {
154 + color: @brand;
155 + background: #fff;
156 + border: 1px solid fade(@brand, 35%);
157 +
158 + &:hover,
159 + &:focus {
160 + color: @brand-strong;
161 + border-color: @brand;
162 + background: @brand-bg;
163 + }
164 +}
165 +
166 +/* ========== Hero ========== */
167 +
39 39  .hero {
40 40   overflow: hidden;
41 41   background-repeat: no-repeat;
... ... @@ -44,16 +44,16 @@
44 44   &.hero-centered {
45 45   text-align: center;
46 46   background:
47 - radial-gradient(50rem 18rem at 50% -10%, #E7FFF8 0%, transparent 60%),
176 + radial-gradient(50rem 18rem at 50% -10%, @brand-soft 0%, transparent 60%),
48 48   radial-gradient(50rem 18rem at 50% 0%, #E8F6F3 0%, transparent 60%);
49 49   display: flex;
50 50   align-items: center;
51 51   justify-content: center;
52 - min-height: 300px;
181 + min-height: 330px;
53 53   }
54 54  
55 55   .hero-inner {
56 - max-width: 850px;
185 + max-width: 860px;
57 57   margin: 0 auto;
58 58   display: flex;
59 59   flex-direction: column;
... ... @@ -60,14 +60,19 @@
60 60   align-items: center;
61 61   }
62 62  
63 - #hero-cta {
64 - display: flex;
65 - gap: 0.8rem;
66 - flex-wrap: wrap;
67 - justify-content: center;
68 - margin-top: 1.3rem;
192 + h1 {
193 + max-width: 790px;
194 + margin-left: auto;
195 + margin-right: auto;
196 + line-height: 1.18;
69 69   }
70 70  
199 + .lead {
200 + max-width: 760px;
201 + font-size: 19px;
202 + line-height: 1.55;
203 + }
204 +
71 71   .benefits {
72 72   display: flex;
73 73   flex-wrap: wrap;
... ... @@ -74,61 +74,156 @@
74 74   justify-content: center;
75 75   list-style: none;
76 76   padding: 0;
77 - margin: 0.8rem 0 0;
211 + margin: 14px 0 0;
78 78   color: @muted;
79 79   font-size: 14px;
80 80  
81 81   li + li::before {
82 82   content: "•";
83 - margin: 0 5px;
217 + margin: 0 6px;
84 84   }
219 + }
220 +}
85 85  
86 - @media (max-width: 640px) {
87 - li + li::before {
88 - content: none;
89 - }
90 - li:nth-child(1)::after,
91 - li:nth-child(3)::after {
92 - content: "•";
93 - margin: 0 5px;
94 - }
95 - }
222 +.hero-kicker {
223 + display: inline-flex;
224 + align-items: center;
225 + gap: 8px;
226 + color: @brand;
227 + background: fade(@brand, 8%);
228 + border: 1px solid fade(@brand, 18%);
229 + border-radius: 999px;
230 + padding: 6px 12px;
231 + margin-bottom: 14px;
232 + font-size: 13px;
233 + font-weight: 700;
234 +}
235 +
236 +.hero-support {
237 + max-width: 760px;
238 + margin: 14px auto 0;
239 + color: @muted;
240 + line-height: 1.55;
241 +}
242 +
243 +.hero-actions,
244 +#hero-cta {
245 + display: flex;
246 + gap: 12px;
247 + flex-wrap: wrap;
248 + justify-content: center;
249 + margin-top: 22px;
250 +}
251 +
252 +/* ========== Trust Strip ========== */
253 +
254 +.trust-strip {
255 + padding: 18px 0;
256 + border-top: 1px solid @line;
257 + background: #fff;
258 +
259 + ul {
260 + max-width: 960px;
261 + margin: 0 auto;
262 + padding: 0;
263 + list-style: none;
264 + display: flex;
265 + justify-content: center;
266 + gap: 22px;
267 + flex-wrap: wrap;
268 + color: @muted;
269 + font-size: 13px;
96 96   }
271 +
272 + li {
273 + display: flex;
274 + align-items: center;
275 + gap: 7px;
276 + }
277 +
278 + i {
279 + color: @brand;
280 + }
97 97  }
98 98  
99 -/* ===== WHY CHOOSE (cards) ===== */
283 +/* ========== Reusable Grids ========== */
284 +
285 +.card-grid,
286 +.pathways,
287 +.services-grid,
288 +.resource-grid,
100 100  .widgets {
101 - margin-top: 12px;
102 102   display: grid;
103 - grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
104 - grid-gap: 16px;
291 + grid-gap: 18px;
292 + margin-left: auto;
293 + margin-right: auto;
105 105  }
106 106  
107 -.widget {
108 - padding: 18px;
296 +.card-grid,
297 +.pathways,
298 +.services-grid {
299 + grid-template-columns: repeat(3, minmax(0, 1fr));
300 + max-width: 1040px;
301 + margin-top: 22px;
302 +}
303 +
304 +.resource-grid {
305 + grid-template-columns: repeat(2, minmax(0, 1fr));
306 + max-width: 1040px;
307 + margin-top: 22px;
308 +}
309 +
310 +.widgets {
311 + grid-template-columns: repeat(4, minmax(0, 1fr));
312 + max-width: 1040px;
313 + margin-top: 20px;
314 +}
315 +
316 +.card-grid > *,
317 +.pathways > *,
318 +.services-grid > *,
319 +.resource-grid > *,
320 +.widgets > * {
321 + min-width: 0;
322 +}
323 +
324 +/* ========== Shared Card Style ========== */
325 +
326 +.widget,
327 +.pathway-card,
328 +.service-card,
329 +.resource-card {
109 109   background: #fff;
110 110   border: 1px solid @line;
111 111   border-radius: @radius;
112 112   box-shadow: @shadow-sm;
113 - transition: transform .18s ease, box-shadow .18s ease;
334 +}
335 +
336 +/* ========== Small Widgets ========== */
337 +
338 +.widget {
339 + padding: 18px;
114 114   display: flex;
115 115   flex-direction: column;
116 116   height: 100%;
117 117  
118 - &:hover {
119 - transform: translateY(-2px);
120 - box-shadow: @shadow;
121 - }
122 -
123 123   .icon {
124 124   display: flex;
125 125   align-items: center;
126 126   gap: 10px;
127 - padding-bottom: 6px;
128 - margin-bottom: 8px;
129 - border-bottom: 1px solid fade(@line, 60%);
130 - i { color: @brand; }
131 - h4 { margin: 0; line-height: 1.2; color: @text; }
348 + padding-bottom: 8px;
349 + margin-bottom: 10px;
350 + border-bottom: 1px solid fade(@line, 70%);
351 +
352 + i {
353 + color: @brand;
354 + }
355 +
356 + h4 {
357 + margin: 0;
358 + line-height: 1.25;
359 + color: @text;
360 + }
132 132   }
133 133  
134 134   p {
... ... @@ -138,31 +138,89 @@
138 138   }
139 139  }
140 140  
141 -/* ===== SERVICES ===== */
142 -.services {
143 - .services-grid {
144 - margin-top: 20px;
145 - display: flex;
146 - flex-wrap: wrap;
147 - gap: 24px;
370 +/* ========== Homepage Pathway Cards ========== */
148 148  
149 - /* center the whole block under the heading */
150 - max-width: 960px;
151 - margin-left: auto;
152 - margin-right: auto;
372 +.pathway-card {
373 + padding: 24px;
374 + display: flex;
375 + flex-direction: column;
376 + min-height: 100%;
377 +
378 + .pathway-icon {
379 + width: 52px;
380 + height: 52px;
381 + border-radius: 50%;
382 + display: flex;
383 + align-items: center;
153 153   justify-content: center;
385 + color: @brand;
386 + background: fade(@brand, 10%);
387 + margin-bottom: 18px;
388 + font-size: 19px;
154 154   }
155 155  
391 + h3 {
392 + margin: 0 0 10px;
393 + color: @text;
394 + font-size: 22px;
395 + line-height: 1.25;
396 + }
397 +
398 + p {
399 + color: @muted;
400 + line-height: 1.55;
401 + margin: 0 0 16px;
402 + }
403 +
404 + ul {
405 + margin: 0 0 22px;
406 + padding-left: 18px;
407 + color: @muted;
408 + font-size: 14px;
409 + line-height: 1.55;
410 + }
411 +
412 + li {
413 + margin: 6px 0;
414 + }
415 +
416 + .card-link {
417 + margin-top: auto;
418 + padding-top: 4px;
419 +
420 + a {
421 + color: @brand;
422 + font-weight: 700;
423 + text-decoration: underline;
424 +
425 + &:hover,
426 + &:focus {
427 + color: @brand-strong;
428 + }
429 + }
430 + }
431 +}
432 +
433 +/* ========== Services ========== */
434 +
435 +.services {
436 + .services-grid {
437 + max-width: 1040px;
438 + }
439 +
156 156   .service {
157 - flex: 0 1 calc(50% - 12px);
158 158   display: flex;
159 159   align-items: flex-start;
160 160   gap: 16px;
161 - margin-bottom: 8px;
444 + padding: 22px;
445 + background: #fff;
446 + border: 1px solid @line;
447 + border-radius: @radius;
448 + box-shadow: @shadow-sm;
162 162  
163 163   .service-icon {
164 - width: 42px;
165 - height: 42px;
451 + width: 46px;
452 + height: 46px;
166 166   border-radius: 50%;
167 167   display: flex;
168 168   align-items: center;
... ... @@ -171,67 +171,908 @@
171 171   color: @brand;
172 172   background: fade(@brand, 10%);
173 173   flex-shrink: 0;
174 - margin-top: 3px;
461 + margin-top: 2px;
175 175   }
176 176  
177 177   .service-body {
178 178   h4 {
179 - margin: 0 0 4px;
180 - font-size: 1.125rem;
466 + margin: 0 0 6px;
467 + font-size: 18px;
468 + line-height: 1.25;
181 181   font-weight: 800;
470 + color: @text;
182 182   }
472 +
183 183   p {
184 - margin: 0 0 6px;
185 - color: @text;
474 + margin: 0 0 8px;
475 + color: @muted;
186 186   line-height: 1.5;
187 187   }
478 +
188 188   ul {
189 - margin: .45rem 0 0;
190 - padding-left: 1.1rem;
480 + margin: 9px 0 0;
481 + padding-left: 18px;
191 191   color: @muted;
192 192   font-size: 13px;
484 + line-height: 1.5;
193 193   }
486 +
194 194   li {
195 - margin: .25rem 0;
196 - line-height: 1.45;
488 + margin: 4px 0;
197 197   }
198 198   }
199 199   }
492 +}
200 200  
201 - /* ==== Center last item on its own row while keeping 50% width ==== */
202 - .service-center {
203 - /* same width as siblings */
204 - flex: 0 1 calc(55% - 12px);
494 +/* ========== Split / Process Section ========== */
205 205  
206 - /* push to center */
207 - margin-left: auto;
208 - margin-right: auto;
496 +.split-section {
497 + background:
498 + radial-gradient(42rem 16rem at 50% 0%, @brand-bg 0%, transparent 65%);
499 +}
500 +
501 +.split-grid {
502 + display: grid;
503 + grid-template-columns: 1.1fr .9fr;
504 + grid-gap: 36px;
505 + max-width: 1040px;
506 + margin: 0 auto;
507 + align-items: center;
508 +}
509 +
510 +.split-copy {
511 + h2 {
512 + text-align: left;
513 + margin-top: 0;
209 209   }
210 210  
211 - /* Mobile: 1 per row */
212 - @media (max-width: 767px) {
213 - .services-grid {
214 - gap: 16px;
215 - max-width: 100%;
516 + p {
517 + color: @muted;
518 + line-height: 1.6;
519 + }
520 +}
521 +
522 +.process-list {
523 + counter-reset: process;
524 + margin: 0;
525 + padding: 0;
526 + list-style: none;
527 +
528 + li {
529 + counter-increment: process;
530 + position: relative;
531 + padding: 16px 16px 16px 58px;
532 + margin-bottom: 12px;
533 + background: #fff;
534 + border: 1px solid @line;
535 + border-radius: @radius;
536 + box-shadow: @shadow-sm;
537 + color: @muted;
538 + line-height: 1.5;
539 +
540 + &:before {
541 + content: counter(process);
542 + position: absolute;
543 + left: 16px;
544 + top: 16px;
545 + width: 28px;
546 + height: 28px;
547 + border-radius: 50%;
548 + background: fade(@brand, 10%);
549 + color: @brand;
550 + display: flex;
551 + align-items: center;
552 + justify-content: center;
553 + font-weight: 800;
216 216   }
217 217  
218 - .service,
219 - .service-center {
220 - flex: 0 1 100%;
221 - margin-left: 0;
222 - margin-right: 0;
556 + strong {
557 + display: block;
558 + color: @text;
559 + margin-bottom: 3px;
223 223   }
224 224   }
225 225  }
226 226  
227 -/* ===== CTA ===== */
564 +/* ========== Resources ========== */
565 +
566 +.resource-strip {
567 + background: @brand-bg;
568 +}
569 +
570 +.resource-card {
571 + padding: 20px;
572 +
573 + h4 {
574 + margin: 0 0 8px;
575 + color: @text;
576 + font-size: 18px;
577 + line-height: 1.25;
578 + }
579 +
580 + p {
581 + color: @muted;
582 + margin: 0 0 12px;
583 + line-height: 1.5;
584 + }
585 +
586 + a {
587 + color: @brand;
588 + font-weight: 700;
589 + }
590 +}
591 +
592 +.resource-content {
593 + order: 1;
594 +}
595 +
596 +.resource-sidebar {
597 + order: 2;
598 +}
599 +
600 +@media (max-width: 767px) {
601 + .resource-layout {
602 + display: flex;
603 + flex-direction: column;
604 + }
605 +
606 + .resource-sidebar {
607 + order: 0;
608 + position: static;
609 + width: 100%;
610 + }
611 +
612 + .resource-content {
613 + order: 1;
614 + }
615 +}
616 +
617 +/* ========== Homepage Resource Strip ========== */
618 +
619 +.homepage-resource-strip {
620 + background:
621 + radial-gradient(42rem 16rem at 50% 0%, @brand-bg 0%, transparent 70%);
622 +
623 + .resource-grid {
624 + max-width: 1040px;
625 + margin: 22px auto 0;
626 + display: grid;
627 + grid-template-columns: repeat(2, minmax(0, 1fr));
628 + grid-gap: 22px;
629 + align-items: stretch;
630 + }
631 +
632 + .resource-card {
633 + display: flex;
634 + flex-direction: column;
635 + min-width: 0;
636 + min-height: 100%;
637 + padding: 26px;
638 + }
639 +
640 + .resource-card h4 {
641 + margin: 0 0 10px;
642 + color: @text;
643 + font-size: 21px;
644 + line-height: 1.25;
645 + font-weight: 700;
646 + }
647 +
648 + .resource-card p {
649 + margin: 0 0 18px;
650 + color: @muted;
651 + font-size: 15px;
652 + line-height: 1.6;
653 + }
654 +
655 + .resource-card a {
656 + margin-top: auto;
657 + color: @brand;
658 + font-weight: 700;
659 + text-decoration: underline;
660 +
661 + &:hover,
662 + &:focus {
663 + color: @brand-strong;
664 + }
665 + }
666 +}
667 +
668 +@media (max-width: 980px) {
669 + .homepage-resource-strip {
670 + .resource-grid {
671 + grid-template-columns: 1fr;
672 + }
673 + }
674 +}
675 +
676 +@media (max-width: 640px) {
677 + .homepage-resource-strip {
678 + .resource-card {
679 + padding: 22px;
680 + }
681 +
682 + .resource-card h4 {
683 + font-size: 19px;
684 + }
685 + }
686 +}
687 +
688 +/* ========== CTA ========== */
689 +
228 228  .cta-section {
229 - padding: 24px 0 16px;
691 + padding: @section-padding;
230 230  
231 231   .contact-inline {
232 232   margin: 0;
233 233   color: @muted;
234 - a { color: @brand; }
696 +
697 + a {
698 + color: @brand;
699 + }
235 235   }
236 236  }
237 237  
703 +.cta-panel {
704 + max-width: 860px;
705 + margin: 0 auto;
706 + padding: 32px;
707 + border-radius: @radius;
708 + border: 1px solid fade(@brand, 20%);
709 + background:
710 + radial-gradient(34rem 12rem at 50% 0%, @brand-soft 0%, #fff 70%);
711 + box-shadow: @shadow-sm;
712 + text-align: center;
713 +
714 + h2 {
715 + margin-top: 0;
716 + }
717 +
718 + p {
719 + color: @muted;
720 + line-height: 1.55;
721 + }
722 +}
723 +
724 +/* ========== Responsive ========== */
725 +
726 +@media (max-width: 980px) {
727 + .widgets,
728 + .pathways,
729 + .services-grid,
730 + .resource-grid {
731 + grid-template-columns: repeat(2, minmax(0, 1fr));
732 + }
733 +
734 + .split-grid {
735 + grid-template-columns: 1fr;
736 + }
737 +
738 + .split-copy h2 {
739 + text-align: center;
740 + }
741 +}
742 +
743 +@media (max-width: 760px) {
744 + section[id] {
745 + scroll-margin-top: 132px;
746 + }
747 +
748 + .header-inner {
749 + min-height: auto;
750 + padding-top: 14px;
751 + padding-bottom: 14px;
752 + flex-direction: column;
753 + align-items: center;
754 + gap: 12px;
755 + }
756 +
757 + .site-nav {
758 + width: 100%;
759 + justify-content: center;
760 + flex-wrap: wrap;
761 + gap: 10px 16px;
762 + font-size: 14px;
763 +
764 + .nav-cta {
765 + padding: 7px 12px;
766 + }
767 + }
768 +
769 + .hero.hero-centered {
770 + min-height: 280px;
771 + }
772 +
773 + .hero {
774 + .lead {
775 + font-size: 17px;
776 + }
777 +
778 + .benefits {
779 + gap: 4px 10px;
780 +
781 + li + li::before {
782 + content: none;
783 + }
784 + }
785 + }
786 +}
787 +
788 +@media (max-width: 640px) {
789 + section {
790 + padding: @section-padding-mobile;
791 + }
792 +
793 + .widgets,
794 + .pathways,
795 + .services-grid,
796 + .resource-grid {
797 + grid-template-columns: 1fr;
798 + }
799 +
800 + .pathway-card,
801 + .services .service,
802 + .resource-card,
803 + .widget {
804 + padding: 20px;
805 + }
806 +
807 + .services .service {
808 + gap: 14px;
809 + }
810 +
811 + .cta-panel {
812 + padding: 24px 20px;
813 + }
814 +}
815 +
816 +/* ========== Resource / Article Pages ========== */
817 +
818 +.resource-page {
819 + padding-top: 0;
820 +}
821 +
822 +.resource-header {
823 + padding: @section-padding;
824 + border-top: none;
825 + background:
826 + radial-gradient(50rem 18rem at 50% -10%, @brand-soft 0%, transparent 60%),
827 + radial-gradient(50rem 18rem at 50% 0%, #E8F6F3 0%, transparent 60%);
828 +
829 + h1 {
830 + margin: 0 auto 14px;
831 + text-align: center;
832 + line-height: 1.18;
833 + }
834 +
835 + .resource-summary {
836 + max-width: 780px;
837 + margin: 0 auto;
838 + color: @muted;
839 + text-align: center;
840 + font-size: 18px;
841 + line-height: 1.55;
842 + }
843 +}
844 +
845 +.resource-layout {
846 + display: grid;
847 + grid-template-columns: minmax(0, 760px) 280px;
848 + gap: 42px;
849 + max-width: 1080px;
850 + margin: 0 auto;
851 + align-items: start;
852 +}
853 +
854 +.resource-content {
855 + color: @text;
856 + font-size: 16px;
857 + line-height: 1.68;
858 +
859 + h2 {
860 + text-align: left;
861 + margin: 34px 0 12px;
862 + line-height: 1.28;
863 + }
864 +
865 + h3 {
866 + margin: 24px 0 8px;
867 + line-height: 1.3;
868 + }
869 +
870 + p {
871 + margin: 0 0 16px;
872 + }
873 +
874 + ul,
875 + ol {
876 + margin: 0 0 18px;
877 + padding-left: 22px;
878 + }
879 +
880 + li {
881 + margin: 6px 0;
882 + }
883 +
884 + strong {
885 + color: @text;
886 + }
887 +}
888 +
889 +.resource-note {
890 + border-left: 4px solid @brand;
891 + background: @brand-bg;
892 + padding: 16px 18px;
893 + margin: 22px 0;
894 + border-radius: 0 @radius @radius 0;
895 +
896 + p:last-child {
897 + margin-bottom: 0;
898 + }
899 +}
900 +
901 +.resource-checklist {
902 + margin: 18px 0 24px;
903 + padding: 0;
904 + list-style: none;
905 +
906 + li {
907 + position: relative;
908 + padding: 10px 0 10px 34px;
909 + border-bottom: 1px solid @line;
910 +
911 + &:before {
912 + content: "\f00c";
913 + font-family: FontAwesome;
914 + position: absolute;
915 + left: 0;
916 + top: 11px;
917 + color: @brand;
918 + }
919 + }
920 +}
921 +
922 +.resource-sidebar {
923 + position: sticky;
924 + top: 96px;
925 + border: 1px solid @line;
926 + border-radius: @radius;
927 + padding: 18px;
928 + background: #fff;
929 + box-shadow: @shadow-sm;
930 +
931 + h4 {
932 + margin: 0 0 10px;
933 + }
934 +
935 + ul {
936 + margin: 0;
937 + padding-left: 18px;
938 + color: @muted;
939 + }
940 +
941 + li {
942 + margin: 8px 0;
943 + }
944 +
945 + a {
946 + color: @brand;
947 + font-weight: 600;
948 + }
949 +}
950 +
951 +.resource-cta {
952 + margin-top: 36px;
953 + padding: 22px;
954 + border: 1px solid fade(@brand, 20%);
955 + border-radius: @radius;
956 + background: @brand-bg;
957 +
958 + h3 {
959 + margin-top: 0;
960 + }
961 +
962 + p {
963 + color: @muted;
964 + }
965 +}
966 +
967 +@media (max-width: 900px) {
968 + .resource-layout {
969 + grid-template-columns: 1fr;
970 + }
971 +
972 + .resource-sidebar {
973 + position: static;
974 + }
975 +}
976 +
977 +/* ========== Products / Extensions Pages ========== */
978 +
979 +.product-index-section {
980 + padding: @section-padding;
981 +
982 + h2 {
983 + margin-bottom: 10px;
984 + }
985 +}
986 +
987 +.product-card-grid {
988 + max-width: 840px;
989 + margin: 22px auto 0;
990 + display: grid;
991 + grid-template-columns: 1fr;
992 + grid-gap: 18px;
993 +}
994 +
995 +.product-card {
996 + background: #fff;
997 + border: 1px solid @line;
998 + border-radius: @radius;
999 + box-shadow: @shadow-sm;
1000 + padding: 28px;
1001 + display: grid;
1002 + grid-template-columns: 68px 1fr;
1003 + grid-gap: 22px;
1004 + align-items: start;
1005 +
1006 + .product-card-icon {
1007 + width: 58px;
1008 + height: 58px;
1009 + border-radius: 50%;
1010 + background: fade(@brand, 10%);
1011 + border: 1px solid fade(@brand, 20%);
1012 + color: @brand;
1013 + display: flex;
1014 + align-items: center;
1015 + justify-content: center;
1016 + font-size: 22px;
1017 + flex-shrink: 0;
1018 + }
1019 +
1020 + h3 {
1021 + margin: 0 0 10px;
1022 + color: @text;
1023 + font-size: 23px;
1024 + line-height: 1.25;
1025 + font-weight: 800;
1026 + }
1027 +
1028 + p {
1029 + color: @muted;
1030 + line-height: 1.6;
1031 + }
1032 +
1033 + .card-link {
1034 + margin: 0;
1035 +
1036 + a {
1037 + font-weight: 700;
1038 + }
1039 + }
1040 +}
1041 +
1042 +.product-card-kicker {
1043 + margin-bottom: 10px;
1044 + padding: 5px 10px;
1045 + font-size: 12px;
1046 + text-transform: uppercase;
1047 + letter-spacing: .04em;
1048 +}
1049 +
1050 +.product-highlights {
1051 + margin: 14px 0 20px;
1052 + padding-left: 18px;
1053 + color: @muted;
1054 +
1055 + li {
1056 + margin: 6px 0;
1057 + line-height: 1.45;
1058 + }
1059 +}
1060 +
1061 +/* ========== Individual Product Pages ========== */
1062 +
1063 +.product-layout {
1064 + display: grid;
1065 + grid-template-columns: 1.1fr .9fr;
1066 + grid-gap: 36px;
1067 + max-width: 1040px;
1068 + margin: 0 auto;
1069 + align-items: start;
1070 +}
1071 +
1072 +.product-summary-card,
1073 +.product-info-card,
1074 +.product-gallery-panel {
1075 + background: #fff;
1076 + border: 1px solid @line;
1077 + border-radius: @radius;
1078 + box-shadow: @shadow-sm;
1079 +}
1080 +
1081 +.product-summary-card {
1082 + padding: 26px;
1083 +
1084 + h2 {
1085 + text-align: left;
1086 + margin-top: 0;
1087 + }
1088 +
1089 + p {
1090 + color: @muted;
1091 + line-height: 1.6;
1092 + }
1093 +
1094 + p:last-child {
1095 + margin-bottom: 0;
1096 + }
1097 +}
1098 +
1099 +.product-info-card {
1100 + padding: 22px;
1101 +
1102 + h3 {
1103 + margin-top: 0;
1104 + margin-bottom: 12px;
1105 + }
1106 +
1107 + ul {
1108 + margin: 0;
1109 + padding-left: 20px;
1110 + color: @muted;
1111 + }
1112 +
1113 + li {
1114 + margin: 8px 0;
1115 + line-height: 1.45;
1116 + }
1117 +}
1118 +
1119 +.product-feature-grid {
1120 + display: grid;
1121 + grid-template-columns: repeat(3, minmax(0, 1fr));
1122 + grid-gap: 18px;
1123 + max-width: 1040px;
1124 + margin: 22px auto 0;
1125 +}
1126 +
1127 +.product-feature {
1128 + background: #fff;
1129 + border: 1px solid @line;
1130 + border-radius: @radius;
1131 + box-shadow: @shadow-sm;
1132 + padding: 22px;
1133 +
1134 + .feature-icon {
1135 + width: 46px;
1136 + height: 46px;
1137 + border-radius: 50%;
1138 + background: fade(@brand, 10%);
1139 + color: @brand;
1140 + display: flex;
1141 + align-items: center;
1142 + justify-content: center;
1143 + margin-bottom: 14px;
1144 + font-size: 18px;
1145 + }
1146 +
1147 + h3 {
1148 + margin: 0 0 8px;
1149 + color: @text;
1150 + font-size: 18px;
1151 + line-height: 1.25;
1152 + }
1153 +
1154 + p {
1155 + margin: 0;
1156 + color: @muted;
1157 + line-height: 1.5;
1158 + }
1159 +}
1160 +
1161 +.product-gallery-panel {
1162 + max-width: 1040px;
1163 + margin: 20px auto 0;
1164 + padding: 26px;
1165 +
1166 + h2 {
1167 + margin-top: 0;
1168 + text-align: center;
1169 + }
1170 +
1171 + .gallery-note {
1172 + max-width: 700px;
1173 + margin: 0 auto 18px;
1174 + color: @muted;
1175 + text-align: center;
1176 + line-height: 1.55;
1177 + }
1178 +}
1179 +
1180 +.product-gallery-placeholder {
1181 + min-height: 260px;
1182 + padding: 28px;
1183 + border: 1px dashed fade(@brand, 40%);
1184 + border-radius: @radius;
1185 + background: fade(@brand, 5%);
1186 + color: @muted;
1187 + text-align: center;
1188 + display: flex;
1189 + align-items: center;
1190 + justify-content: center;
1191 +}
1192 +
1193 +.product-section-muted {
1194 + background:
1195 + radial-gradient(42rem 16rem at 50% 0%, @brand-bg 0%, transparent 65%);
1196 +}
1197 +
1198 +@media (max-width: 980px) {
1199 + .product-layout,
1200 + .product-feature-grid {
1201 + grid-template-columns: 1fr;
1202 + }
1203 +
1204 + .product-summary-card h2 {
1205 + text-align: center;
1206 + }
1207 +}
1208 +
1209 +@media (max-width: 640px) {
1210 + .product-card {
1211 + grid-template-columns: 1fr;
1212 + padding: 22px;
1213 + text-align: left;
1214 +
1215 + .product-card-icon {
1216 + margin-bottom: 2px;
1217 + }
1218 + }
1219 +
1220 + .product-summary-card,
1221 + .product-info-card,
1222 + .product-feature,
1223 + .product-gallery-panel {
1224 + padding: 20px;
1225 + }
1226 +}
1227 +
1228 +/* ========== Resources Index ========== */
1229 +
1230 +.resources-index-page {
1231 + padding: @section-padding;
1232 + background: @brand-bg;
1233 +
1234 + .resources-intro {
1235 + max-width: 820px;
1236 + margin: 0 auto 32px;
1237 + text-align: center;
1238 +
1239 + p {
1240 + color: @muted;
1241 + font-size: 17px;
1242 + line-height: 1.7;
1243 + margin: 0;
1244 + }
1245 + }
1246 +
1247 + .resources-grid {
1248 + display: grid;
1249 + grid-template-columns: repeat(2, minmax(0, 1fr));
1250 + gap: 24px;
1251 + margin-bottom: 36px;
1252 + }
1253 +
1254 + .resource-card {
1255 + display: flex;
1256 + gap: 18px;
1257 + background: #fff;
1258 + border: 1px solid @line;
1259 + border-radius: @radius;
1260 + box-shadow: @shadow-sm;
1261 + padding: 24px;
1262 + }
1263 +
1264 + .resource-card-icon {
1265 + flex: 0 0 46px;
1266 + width: 46px;
1267 + height: 46px;
1268 + border-radius: 14px;
1269 + background: @brand-soft;
1270 + color: @brand-strong;
1271 + display: flex;
1272 + align-items: center;
1273 + justify-content: center;
1274 + font-size: 20px;
1275 + }
1276 +
1277 + .resource-card-label {
1278 + color: @brand-strong;
1279 + font-size: 13px;
1280 + font-weight: 700;
1281 + text-transform: uppercase;
1282 + letter-spacing: .04em;
1283 + margin-bottom: 8px;
1284 + }
1285 +
1286 + .resource-card h2 {
1287 + font-size: 22px;
1288 + line-height: 1.25;
1289 + margin: 0 0 12px;
1290 + }
1291 +
1292 + .resource-card h2 a {
1293 + color: @text;
1294 + text-decoration: none;
1295 +
1296 + &:hover {
1297 + color: @brand-strong;
1298 + text-decoration: none;
1299 + }
1300 + }
1301 +
1302 + .resource-card p {
1303 + color: @muted;
1304 + font-size: 15px;
1305 + line-height: 1.65;
1306 + margin: 0 0 16px;
1307 + }
1308 +
1309 + .resource-card-link {
1310 + color: @brand-strong;
1311 + font-weight: 700;
1312 + text-decoration: none;
1313 +
1314 + &:hover {
1315 + color: @brand;
1316 + text-decoration: none;
1317 + }
1318 + }
1319 +
1320 + .resources-next {
1321 + max-width: 820px;
1322 + margin: 0 auto 32px;
1323 + text-align: center;
1324 +
1325 + h2 {
1326 + font-size: 26px;
1327 + margin: 0 0 10px;
1328 + }
1329 +
1330 + p {
1331 + color: @muted;
1332 + font-size: 16px;
1333 + line-height: 1.7;
1334 + margin: 0;
1335 + }
1336 + }
1337 +}
1338 +
1339 +@media (max-width: 767px) {
1340 + .resources-index-page {
1341 + padding: @section-padding-mobile;
1342 +
1343 + .resources-intro {
1344 + text-align: left;
1345 + margin-bottom: 24px;
1346 + }
1347 +
1348 + .resources-grid {
1349 + grid-template-columns: 1fr;
1350 + gap: 18px;
1351 + }
1352 +
1353 + .resource-card {
1354 + padding: 20px;
1355 + }
1356 +
1357 + .resource-card h2 {
1358 + font-size: 20px;
1359 + }
1360 +
1361 + .resources-next {
1362 + text-align: left;
1363 + }
1364 + }
1365 +}
XWiki.StyleSheetExtension[1]
cache
... ... @@ -1,0 +1,1 @@
1 +long
code
... ... @@ -1,0 +1,148 @@
1 +/* ========== Agnease Public Top Menu ========== */
2 +
3 +/* Desktop alignment */
4 +#menuview .navbar-nav {
5 + float: right !important;
6 +}
7 +
8 +/* Top-level menu items */
9 +
10 +.agnease-menu-item,
11 +.agnease-menu-link {
12 + > a,
13 + > .dropdown-toggle {
14 + color: @brand;
15 + font-size: 17px;
16 + font-weight: 600;
17 + padding-left: 16px;
18 + padding-right: 16px;
19 + text-decoration: none;
20 + }
21 +
22 + > a:hover,
23 + > a:focus,
24 + > a:active,
25 + &.open > a,
26 + &.active > a {
27 + color: @brand-strong;
28 + text-decoration: none;
29 + outline: none;
30 + }
31 +
32 + .caret {
33 + margin-left: 5px;
34 + border-top-color: @brand;
35 + border-bottom-color: @brand;
36 + }
37 +
38 + > a:hover .caret,
39 + > a:focus .caret,
40 + > a:active .caret,
41 + &.open > a .caret,
42 + &.active > a .caret {
43 + border-top-color: @brand-strong;
44 + border-bottom-color: @brand-strong;
45 + }
46 +}
47 +
48 +/* Dropdown panel */
49 +
50 +.agnease-dropdown {
51 + min-width: 310px;
52 + padding: 10px 8px;
53 + border: 1px solid fade(@brand, 18%);
54 + border-radius: 12px;
55 + background: #fff;
56 + box-shadow: 0 12px 32px fade(@brand-strong, 12%);
57 +
58 + > li > a {
59 + display: flex;
60 + align-items: center;
61 + gap: 12px;
62 + padding: 11px 14px;
63 + color: @brand;
64 + white-space: nowrap;
65 + font-size: 16px;
66 + font-weight: 600;
67 + line-height: 1.3;
68 + text-decoration: none;
69 +
70 + i {
71 + width: 20px;
72 + flex: 0 0 20px;
73 + color: @brand;
74 + text-align: center;
75 + font-size: 15px;
76 + }
77 +
78 + &:hover,
79 + &:focus,
80 + &:active {
81 + color: @brand-strong;
82 + text-decoration: none;
83 + outline: none;
84 +
85 + i {
86 + color: @brand-strong;
87 + }
88 + }
89 + }
90 +
91 + > .active > a {
92 + color: @brand-strong;
93 +
94 + i {
95 + color: @brand-strong;
96 + }
97 + }
98 +
99 + .divider {
100 + margin: 8px 0;
101 + background-color: fade(@brand, 16%);
102 + }
103 +}
104 +
105 +/* Mobile */
106 +
107 +@media (max-width: 767px) {
108 + .site-nav {
109 + margin-left: 0;
110 + justify-content: center;
111 + flex-wrap: wrap;
112 + }
113 +
114 + .agnease-menu-item,
115 + .agnease-menu-link {
116 + > a,
117 + > .dropdown-toggle {
118 + font-size: 16px;
119 + padding-top: 9px;
120 + padding-bottom: 9px;
121 + }
122 + }
123 +
124 + .agnease-dropdown {
125 + min-width: 0;
126 + width: 100%;
127 + padding: 4px 8px 8px 18px;
128 + border: 0;
129 + border-radius: 0;
130 + box-shadow: none;
131 + background: transparent;
132 +
133 + > li > a {
134 + padding: 8px 10px;
135 + white-space: normal;
136 + font-size: 15px;
137 +
138 + i {
139 + width: 18px;
140 + flex-basis: 18px;
141 + }
142 + }
143 +
144 + .divider {
145 + margin: 5px 0;
146 + }
147 + }
148 +}
contentType
... ... @@ -1,0 +1,1 @@
1 +LESS
name
... ... @@ -1,0 +1,1 @@
1 +Menu
use
... ... @@ -1,0 +1,1 @@
1 +onDemand