Changes for page Public Web Site
Last modified by Agnease on 2026/05/30 16:24
Summary
-
Page properties (1 modified, 0 added, 0 removed)
-
Objects (1 modified, 1 added, 0 removed)
Details
- Page properties
-
- Content
-
... ... @@ -2,175 +2,191 @@ 2 2 #macro (displayPublicContent) 3 3 #set ($discard = $xwiki.ssx.use('PublicWebSite.WebHome')) 4 4 {{html clean="false"}} 5 - ## HERO5 + 6 6 <section class="hero hero-centered" aria-labelledby="hero-title"> 7 7 <div class="container hero-inner"> 8 - <h1 id="hero-title">Keep Your XWiki Platform Secure, Stable and Up-to-Date</h1> 9 - <p class="lead">Helping organizations safely upgrade and maintain their XWiki environments.</p> 8 + <div class="hero-kicker"> 9 + <i class="fa fa-shield" aria-hidden="true"></i> 10 + Your trusted partner for professional XWiki services 11 + </div> 12 + 13 + <h1 id="hero-title">Reliable XWiki engineering for organizations that depend on their knowledge platform</h1> 14 + 15 + <p class="lead"> 16 + Agnease helps companies keep XWiki secure, stable, up-to-date and adapted to real business processes. 17 + </p> 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 + 10 10 <ul class="benefits"> 11 - <li>S moothupgrades</li>12 - <li> Reliable supportplans</li>13 - <li>Custom i ntegrations</li>14 - <li> Secure, optimizedplatforms</li>25 + <li>Safe LTS upgrades</li> 26 + <li>Support and recovery</li> 27 + <li>Custom XWiki applications</li> 28 + <li>Integrations and migrations</li> 15 15 </ul> 16 - <div id="hero-cta"> 17 - <a class="btn btn-primary" href="$xwiki.getURL('contact.WebHome')">Contact Agnease</a> 18 - #*<a class="btn btn-primary" href="#contact" aria-label="Request a consultation" data-toggle="modal" data-target="#requestConsultation"> 19 - Request a consultation 20 - </a> 21 - #requestConsultationModal()*# 22 - ##data-toggle="modal" data-target="#requestConsultationModal" 30 + 31 + <div class="hero-actions"> 32 + <a class="btn btn-primary" href="$xwiki.getURL('contact.WebHome')">Request a consultation</a> 33 + <a class="btn btn-secondary" href="$xwiki.getURL('services.WebHome')">View XWiki services</a> 23 23 </div> 24 24 </div> 25 25 </section> 26 - ## WHY CHOOSE 27 - #set ($whySectionData = [{ 28 - 'title': 'Stability & security', 29 - 'icon': 'shield', 30 - 'content': 'Proven upgrade steps, rollback safety, and proactive hardening keep your wiki reliable.' 31 - },{ 32 - 'title': 'Predictable delivery', 33 - 'icon': 'check-square-o', 34 - 'content': 'Clear scope, defined steps, and documented results to avoid surprises.' 35 - },{ 36 - 'title': 'Clean integrations', 37 - 'icon': 'link', 38 - 'content': 'Maintainable SSO, API, and system connections tailored to your environment.' 39 - },{ 40 - 'title': 'Long-term support', 41 - 'icon': 'life-ring', 42 - 'content': 'Guaranteed response times, regular checks, and fast assistance when needed.' 43 - }]) 44 - <section aria-labelledby="why-title"> 37 + 38 + <section class="trust-strip" aria-label="Agnease experience"> 45 45 <div class="container"> 46 - <h2 id="why-title">Why choose Agnease</h2> 47 - <p class="lead">10+ years of XWiki expertise with structured delivery and lasting collaboration</p> 48 - <div class="widgets"> 49 - #foreach ($entry in $whySectionData) 50 - <article class="widget"> 51 - <div class="icon" aria-hidden="true"> 52 - <i class="fa fa-$entry.icon"></i> 53 - <h4>$entry.title</h4> 54 - </div> 55 - <p>$entry.content</p> 56 - </article> 57 - #end 58 - </div> 40 + <ul> 41 + <li><i class="fa fa-check-circle" aria-hidden="true"></i> 11+ years of XWiki experience</li> 42 + <li><i class="fa fa-check-circle" aria-hidden="true"></i> Upgrades, support and custom development</li> 43 + <li><i class="fa fa-check-circle" aria-hidden="true"></i> Security-aware maintenance</li> 44 + <li><i class="fa fa-check-circle" aria-hidden="true"></i> Practical long-term collaboration</li> 45 + </ul> 59 59 </div> 60 60 </section> 61 - ## SERVICES 62 - #set ($servicesSectionData = [{ 63 - 'title': 'Upgrades', 64 - 'icon': 'refresh', 65 - 'content': 'Stay current with the latest XWiki LTS and keep your instance reliable.', 66 - 'items': [ 67 - 'Audit setup, extensions, and configurations', 68 - 'Test upgrades with backups and validation', 69 - 'Safe production rollout with minimal downtime' 70 - ] 71 - },{ 72 - 'title': 'Maintenance, Support & Recovery', 73 - 'icon': 'stethoscope', 74 - 'content': 'Ensure long-term stability and quick response when issues appear.', 75 - 'items': [ 76 - 'Monitoring and performance checks', 77 - 'Security patching, log analysis, triage', 78 - 'Issue recovery, data repair, hardening' 79 - ] 80 - },{ 81 - 'title': 'Development & Integrations', 82 - 'icon': 'cogs', 83 - 'content': 'Extend and connect XWiki to fit your workflow and systems.', 84 - 'items': [ 85 - 'Custom apps, macros, automation', 86 - 'SSO, REST APIs, LDAP, CRM links', 87 - 'Maintainable extensions for long-term use' 88 - ] 89 - },{ 90 - 'title': 'Hosting & Deployment', 91 - 'icon': 'cloud', 92 - 'content': 'Cloud-ready environments designed for reliability and performance.', 93 - 'items': [ 94 - 'Containerized deployment and TLS', 95 - 'Backups, restore strategy, observability', 96 - 'Optimization and load tuning' 97 - ] 98 - },{ 99 - 'title': 'Migrations to XWiki', 100 - 'icon': 'exchange', 101 - 'content': 'Move from Confluence, SharePoint, or MediaWiki to XWiki with full data integrity and structure.', 102 - 'items': [ 103 - 'Preserve hierarchy, attachments, and permissions', 104 - 'Convert macros, categories, and metadata for XWiki', 105 - 'Redirect old URLs and maintain SEO consistency' 106 - ] 107 - }]) 108 - <section class="services" aria-labelledby="services-title"> 48 + 49 + <section aria-labelledby="platform-title"> 109 109 <div class="container"> 110 - <h2 id="services-title">Services</h2> 111 - <p class="lead"> 112 - All the XWiki services you need, delivered with precision and care 51 + <h2 id="platform-title">When XWiki becomes business-critical, it needs professional care</h2> 52 + <p class="section-intro"> 53 + Many organizations start with XWiki as a documentation platform. Over time, it becomes a knowledge base, 54 + intranet, SOP portal, workflow system, audit trail or integration hub. At that point, upgrades, security, 55 + performance, permissions and maintainability are no longer optional technical details. 113 113 </p> 114 114 115 - #set ($servicesSize = $servicesSectionData.size()) 116 - <div class="services-grid"> 117 - #foreach ($entry in $servicesSectionData) 118 - #set ($classes = "service") 119 - ## If this is the last item AND the total number is odd, center it 120 - #if ($foreach.count == $servicesSize && ($servicesSize % 2) == 1) 121 - #set ($classes = "service service-center") 122 - #end 58 + <div class="pathways"> 59 + <article class="pathway-card"> 60 + <div class="pathway-icon"> 61 + <i class="fa fa-refresh" aria-hidden="true"></i> 62 + </div> 63 + <h3>Keep XWiki current</h3> 64 + <p> 65 + Plan and execute safe upgrades to supported XWiki versions, with compatibility checks and rollback planning. 66 + </p> 67 + <ul> 68 + <li>LTS upgrade planning</li> 69 + <li>Extension and custom code review</li> 70 + <li>Production rollout validation</li> 71 + </ul> 72 + <p class="card-link"> 73 + <a href="$xwiki.getURL('services.xwiki-upgrades')">View upgrade services</a> 74 + </p> 75 + </article> 123 123 124 - <article class="$classes"> 125 - <div class="service-icon"> 126 - <i class="fa fa-$entry.icon" aria-hidden="true"></i> 127 - </div> 128 - <div class="service-body"> 129 - <h4>$entry.title</h4> 130 - <p>$entry.content</p> 131 - <ul> 132 - #foreach ($item in $entry.items) 133 - <li>$item</li> 134 - #end 135 - </ul> 136 - </div> 137 - </article> 138 - #end 77 + <article class="pathway-card"> 78 + <div class="pathway-icon"> 79 + <i class="fa fa-life-ring" aria-hidden="true"></i> 80 + </div> 81 + <h3>Keep XWiki reliable</h3> 82 + <p> 83 + Get long-term technical care for instances that need to stay stable, secure and recoverable. 84 + </p> 85 + <ul> 86 + <li>Troubleshooting and recovery</li> 87 + <li>Performance and log analysis</li> 88 + <li>Security-aware maintenance</li> 89 + </ul> 90 + <p class="card-link"> 91 + <a href="$xwiki.getURL('services.xwiki-maintenance-support')">View support services</a> 92 + </p> 93 + </article> 94 + 95 + <article class="pathway-card"> 96 + <div class="pathway-icon"> 97 + <i class="fa fa-cogs" aria-hidden="true"></i> 98 + </div> 99 + <h3>Adapt XWiki to your business</h3> 100 + <p> 101 + Build workflows, custom applications, dashboards, integrations and automation around your processes. 102 + </p> 103 + <ul> 104 + <li>Custom XWiki applications</li> 105 + <li>Workflows and approvals</li> 106 + <li>SSO, LDAP, APIs and integrations</li> 107 + </ul> 108 + <p class="card-link"> 109 + <a href="$xwiki.getURL('services.xwiki-development-integrations')">View development services</a> 110 + </p> 111 + </article> 139 139 </div> 140 140 </div> 141 141 </section> 142 - ## CTA INLINE143 - <section id="contact" class="cta-section">115 + 116 + <section class="split-section" aria-labelledby="why-title"> 144 144 <div class="container"> 145 - <p class="text-center contact-inline"> 146 - Need help with your XWiki? <a href="$xwiki.getURL('contact.WebHome')">Contact Agnease</a>. 118 + <div class="split-grid"> 119 + <div class="split-copy"> 120 + <h2 id="why-title">Why choose Agnease</h2> 121 + <p> 122 + Agnease brings more than 11 years of hands-on XWiki expertise to organizations that need reliable 123 + knowledge platforms, secure upgrades, custom applications, integrations, migrations and long-term support. 124 + </p> 125 + <p> 126 + The approach is practical and engineering-focused: understand the current system, reduce risk, 127 + document the work and leave your XWiki easier to maintain. 128 + </p> 129 + </div> 130 + 131 + <ol class="process-list"> 132 + <li> 133 + <strong>Review the current situation</strong> 134 + Version, extensions, infrastructure, authentication, custom code and business-critical features. 135 + </li> 136 + <li> 137 + <strong>Define a safe path forward</strong> 138 + Clear scope, expected effort, risks, rollback options and recommended next steps. 139 + </li> 140 + <li> 141 + <strong>Deliver and document the work</strong> 142 + Practical implementation, validation and documentation for future maintenance. 143 + </li> 144 + </ol> 145 + </div> 146 + </div> 147 + </section> 148 + 149 + <section class="resource-strip homepage-resource-strip" aria-labelledby="resources-title"> 150 + <div class="container"> 151 + <h2 id="resources-title">Useful XWiki resources</h2> 152 + <p class="section-intro"> 153 + Practical guidance for organizations running XWiki in production. 147 147 </p> 155 + 156 + <div class="resource-grid"> 157 + <article class="resource-card"> 158 + <h4>Why upgrade your XWiki instance?</h4> 159 + <p> 160 + A business-focused explanation of why regular LTS upgrades reduce security, compatibility and maintenance risk. 161 + </p> 162 + <a href="$xwiki.getURL('resources.why-upgrade-xwiki')">Read the resource</a> 163 + </article> 164 + 165 + <article class="resource-card"> 166 + <h4>XWiki upgrade services</h4> 167 + <p> 168 + How Agnease approaches safe XWiki upgrades for real production environments with customizations and integrations. 169 + </p> 170 + <a href="$xwiki.getURL('services.xwiki-upgrades')">View the service</a> 171 + </article> 172 + </div> 148 148 </div> 149 149 </section> 150 - {{/html}} 151 -#end 152 152 153 -#macro(requestConsultationModal) 154 - <div class="modal fade" id="requestConsultation" tabindex="-1" role="dialog"> 155 - <div class="modal-dialog"> 156 - <div class="modal-content"> 157 - <div class="modal-header"> 158 - <button type="button" class="close" data-dismiss="modal">×</button> 159 - <h4 class="modal-title">Request a consultation</h4> 176 + <section class="cta-section" aria-labelledby="contact-title"> 177 + <div class="container"> 178 + <div class="cta-panel"> 179 + <h2 id="contact-title">Need help with XWiki?</h2> 180 + <p> 181 + Send your current XWiki version, the problem you are facing, or the type of project you want to build. 182 + A short description is enough to start the conversation. 183 + </p> 184 + <a class="btn btn-primary" href="$xwiki.getURL('contact.WebHome')">Contact Agnease</a> 160 160 </div> 161 - <div class="modal-body"> 162 - <div> 163 - ##Need help with your XWiki? <a href="mailto:alex@agnease.com">Contact Agnease</a> 164 - #displayFormFromSheetCode() 165 - </div> 166 - </div> 167 - <div class="modal-footer"> 168 - ##<input id="continueCategorySelection" type="button" class="btn btn-default" data-dismiss="modal" 169 - ## value="$escapetool.xml($services.localization.render('yesno_1'))"> 170 - </div> 171 171 </div> 172 - </div> 173 - </div> 187 + </section> 188 + 189 + {{/html}} 174 174 #end 175 175 176 176 #macro (stripHTMLMacro $displayOutput)
- XWiki.StyleSheetExtension[0]
-
- code
-
... ... @@ -1,14 +1,19 @@ 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 +/* ========== Base ========== */ 16 + 12 12 #mainContentArea { 13 13 padding: 0; 14 14 } ... ... @@ -15,27 +15,148 @@ 15 15 16 16 .container { 17 17 max-width: @maxw; 23 + margin-left: auto; 24 + margin-right: auto; 25 + padding-left: 18px; 26 + padding-right: 18px; 18 18 } 19 19 29 +html { 30 + scroll-behavior: smooth; 31 +} 32 + 33 +section { 34 + padding: 42px 0; 35 + border-top: 1px solid @line; 36 + 37 + &:first-of-type { 38 + border-top: none; 39 + } 40 +} 41 + 42 +section[id] { 43 + scroll-margin-top: 92px; 44 +} 45 + 46 +h1, 47 +h2, 48 +h3, 49 +h4 { 50 + color: @text; 51 +} 52 + 53 +h2 { 54 + text-align: center; 55 + margin-top: 0; 56 +} 57 + 20 20 .lead { 21 21 color: @muted; 22 22 text-align: center; 23 23 margin-bottom: 0; 24 24 } 25 -h2 { 63 + 64 +.section-intro { 65 + max-width: 760px; 66 + margin: 0 auto 22px; 26 26 text-align: center; 68 + color: @muted; 69 + font-size: 16px; 70 + line-height: 1.55; 27 27 } 28 28 29 -section { 30 - padding: 32px 0; 31 - border-top: 1px solid @line; 73 +a { 74 + color: @brand; 32 32 33 - &:first-of-type { 34 - border-top: none; 76 + &:hover, 77 + &:focus { 78 + color: @brand-strong; 35 35 } 36 36 } 37 37 38 -/* ===== HERO ===== */ 82 +/* ========== Header / Navigation ========== */ 83 + 84 +.site-header { 85 + position: sticky; 86 + top: 0; 87 + z-index: 1000; 88 + background: fade(#fff, 96%); 89 + border-bottom: 1px solid fade(@line, 85%); 90 + backdrop-filter: blur(8px); 91 +} 92 + 93 +.header-inner { 94 + min-height: 72px; 95 + display: flex; 96 + align-items: center; 97 + justify-content: space-between; 98 + gap: 24px; 99 +} 100 + 101 +.site-nav { 102 + display: flex; 103 + align-items: center; 104 + gap: 22px; 105 + font-size: 15px; 106 + 107 + a { 108 + color: @text; 109 + text-decoration: none; 110 + font-weight: 600; 111 + 112 + &:hover, 113 + &:focus { 114 + color: @brand; 115 + text-decoration: none; 116 + } 117 + } 118 + 119 + .nav-cta { 120 + color: #fff; 121 + background: @brand; 122 + border: 1px solid @brand; 123 + border-radius: 6px; 124 + padding: 8px 14px; 125 + 126 + &:hover, 127 + &:focus { 128 + color: #fff; 129 + background: @brand-strong; 130 + border-color: @brand-strong; 131 + } 132 + } 133 +} 134 + 135 +/* ========== Buttons ========== */ 136 + 137 +.btn-primary { 138 + background: @brand; 139 + border-color: @brand; 140 + color: #fff; 141 + 142 + &:hover, 143 + &:focus { 144 + background: @brand-strong; 145 + border-color: @brand-strong; 146 + color: #fff; 147 + } 148 +} 149 + 150 +.btn-secondary { 151 + color: @brand; 152 + background: #fff; 153 + border: 1px solid fade(@brand, 35%); 154 + 155 + &:hover, 156 + &:focus { 157 + color: @brand-strong; 158 + border-color: @brand; 159 + background: @brand-bg; 160 + } 161 +} 162 + 163 +/* ========== Hero ========== */ 164 + 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%, #E7FFF80%, transparent 60%),173 + 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: 30 0px;178 + min-height: 330px; 53 53 } 54 54 55 55 .hero-inner { 56 - max-width: 8 50px;182 + 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; 189 + h1 { 190 + max-width: 790px; 191 + margin-left: auto; 192 + margin-right: auto; 193 + line-height: 1.18; 69 69 } 70 70 196 + .lead { 197 + max-width: 760px; 198 + font-size: 19px; 199 + line-height: 1.55; 200 + } 201 + 71 71 .benefits { 72 72 display: flex; 73 73 flex-wrap: wrap; ... ... @@ -74,61 +74,162 @@ 74 74 justify-content: center; 75 75 list-style: none; 76 76 padding: 0; 77 - margin: 0.8rem0 0;208 + 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;214 + margin: 0 6px; 84 84 } 216 + } 217 +} 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 - } 219 +.hero-kicker { 220 + display: inline-flex; 221 + align-items: center; 222 + gap: 8px; 223 + color: @brand; 224 + background: fade(@brand, 8%); 225 + border: 1px solid fade(@brand, 18%); 226 + border-radius: 999px; 227 + padding: 6px 12px; 228 + margin-bottom: 14px; 229 + font-size: 13px; 230 + font-weight: 700; 231 +} 232 + 233 +.hero-support { 234 + max-width: 760px; 235 + margin: 14px auto 0; 236 + color: @muted; 237 + line-height: 1.55; 238 +} 239 + 240 +.hero-actions, 241 +#hero-cta { 242 + display: flex; 243 + gap: 12px; 244 + flex-wrap: wrap; 245 + justify-content: center; 246 + margin-top: 22px; 247 +} 248 + 249 +/* ========== Trust Strip ========== */ 250 + 251 +.trust-strip { 252 + padding: 18px 0; 253 + border-top: 1px solid @line; 254 + border-bottom: 1px solid @line; 255 + background: #fff; 256 + 257 + ul { 258 + max-width: 960px; 259 + margin: 0 auto; 260 + padding: 0; 261 + list-style: none; 262 + display: flex; 263 + justify-content: center; 264 + gap: 22px; 265 + flex-wrap: wrap; 266 + color: @muted; 267 + font-size: 13px; 96 96 } 269 + 270 + li { 271 + display: flex; 272 + align-items: center; 273 + gap: 7px; 274 + } 275 + 276 + i { 277 + color: @brand; 278 + } 97 97 } 98 98 99 -/* ===== WHY CHOOSE (cards) ===== */ 281 +/* ========== Reusable Grids ========== */ 282 + 283 +.card-grid, 284 +.pathways, 285 +.services-grid, 286 +.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; 289 + grid-gap: 18px; 290 + margin-left: auto; 291 + margin-right: auto; 105 105 } 106 106 107 -.widget { 108 - padding: 18px; 294 +.card-grid, 295 +.pathways, 296 +.services-grid { 297 + grid-template-columns: repeat(3, minmax(0, 1fr)); 298 + max-width: 1040px; 299 + margin-top: 26px; 300 +} 301 + 302 +.resource-grid { 303 + grid-template-columns: repeat(2, minmax(0, 1fr)); 304 + max-width: 1040px; 305 + margin-top: 22px; 306 +} 307 + 308 +.widgets { 309 + grid-template-columns: repeat(4, minmax(0, 1fr)); 310 + max-width: 1040px; 311 + margin-top: 20px; 312 +} 313 + 314 +.card-grid > *, 315 +.pathways > *, 316 +.services-grid > *, 317 +.resource-grid > *, 318 +.widgets > * { 319 + min-width: 0; 320 +} 321 + 322 +/* ========== Shared Card Style ========== */ 323 + 324 +.widget, 325 +.pathway-card, 326 +.service-card, 327 +.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; 114 - display: flex; 115 - flex-direction: column; 116 - height: 100%; 332 + transition: box-shadow .18s ease; 117 117 118 118 &:hover { 119 - transform: translateY(-2px); 120 - box-shadow: @shadow; 335 + box-shadow: @shadow-sm; 121 121 } 337 +} 122 122 339 +/* ========== Small Widgets ========== */ 340 + 341 +.widget { 342 + padding: 18px; 343 + display: flex; 344 + flex-direction: column; 345 + height: 100%; 346 + 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; } 351 + padding-bottom: 8px; 352 + margin-bottom: 10px; 353 + border-bottom: 1px solid fade(@line, 70%); 354 + 355 + i { 356 + color: @brand; 357 + } 358 + 359 + h4 { 360 + margin: 0; 361 + line-height: 1.25; 362 + color: @text; 363 + } 132 132 } 133 133 134 134 p { ... ... @@ -138,31 +138,95 @@ 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; 373 +/* ========== 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; 375 +.pathway-card { 376 + padding: 24px; 377 + display: flex; 378 + flex-direction: column; 379 + min-height: 100%; 380 + 381 + .pathway-icon { 382 + width: 52px; 383 + height: 52px; 384 + border-radius: 50%; 385 + display: flex; 386 + align-items: center; 153 153 justify-content: center; 388 + color: @brand; 389 + background: fade(@brand, 10%); 390 + margin-bottom: 18px; 391 + font-size: 19px; 154 154 } 155 155 394 + h3 { 395 + margin: 0 0 10px; 396 + color: @text; 397 + font-size: 22px; 398 + line-height: 1.25; 399 + } 400 + 401 + p { 402 + color: @muted; 403 + line-height: 1.55; 404 + margin: 0 0 16px; 405 + } 406 + 407 + ul { 408 + margin: 0 0 22px; 409 + padding-left: 18px; 410 + color: @muted; 411 + font-size: 14px; 412 + line-height: 1.55; 413 + } 414 + 415 + li { 416 + margin: 6px 0; 417 + } 418 + 419 + .card-link { 420 + margin-top: auto; 421 + padding-top: 4px; 422 + 423 + a { 424 + color: @brand; 425 + font-weight: 700; 426 + text-decoration: underline; 427 + 428 + &:hover, 429 + &:focus { 430 + color: @brand-strong; 431 + } 432 + } 433 + } 434 +} 435 + 436 +/* ========== Services ========== */ 437 + 438 +.services { 439 + .services-grid { 440 + max-width: 1040px; 441 + } 442 + 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; 447 + padding: 22px; 448 + background: #fff; 449 + border: 1px solid @line; 450 + border-radius: @radius; 451 + box-shadow: @shadow-sm; 452 + transition: transform .18s ease, box-shadow .18s ease; 162 162 454 + &:hover { 455 + transform: translateY(-2px); 456 + box-shadow: @shadow; 457 + } 458 + 163 163 .service-icon { 164 - width: 4 2px;165 - height: 4 2px;460 + width: 46px; 461 + height: 46px; 166 166 border-radius: 50%; 167 167 display: flex; 168 168 align-items: center; ... ... @@ -171,96 +171,917 @@ 171 171 color: @brand; 172 172 background: fade(@brand, 10%); 173 173 flex-shrink: 0; 174 - margin-top: 3px;470 + margin-top: 2px; 175 175 } 176 176 177 177 .service-body { 178 178 h4 { 179 - margin: 0 0 4px; 180 - font-size: 1.125rem; 475 + margin: 0 0 6px; 476 + font-size: 18px; 477 + line-height: 1.25; 181 181 font-weight: 800; 479 + color: @text; 182 182 } 481 + 183 183 p { 184 - margin: 0 0 6px;185 - color: @te xt;483 + margin: 0 0 8px; 484 + color: @muted; 186 186 line-height: 1.5; 187 187 } 487 + 188 188 ul { 189 - margin: .45rem0 0;190 - padding-left: 1 .1rem;489 + margin: 9px 0 0; 490 + padding-left: 18px; 191 191 color: @muted; 192 192 font-size: 13px; 493 + line-height: 1.5; 193 193 } 495 + 194 194 li { 195 - margin: .25rem 0; 196 - line-height: 1.45; 497 + margin: 4px 0; 197 197 } 198 198 } 199 199 } 501 +} 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); 503 +/* ========== Split / Process Section ========== */ 205 205 206 - /* push to center */ 207 - margin-left: auto; 208 - margin-right: auto; 505 +.split-section { 506 + background: 507 + radial-gradient(42rem 16rem at 50% 0%, @brand-bg 0%, transparent 65%); 508 +} 509 + 510 +.split-grid { 511 + display: grid; 512 + grid-template-columns: 1.1fr .9fr; 513 + grid-gap: 36px; 514 + max-width: 1040px; 515 + margin: 0 auto; 516 + align-items: center; 517 +} 518 + 519 +.split-copy { 520 + h2 { 521 + text-align: left; 522 + 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%; 525 + p { 526 + color: @muted; 527 + line-height: 1.6; 528 + } 529 +} 530 + 531 +.process-list { 532 + counter-reset: process; 533 + margin: 0; 534 + padding: 0; 535 + list-style: none; 536 + 537 + li { 538 + counter-increment: process; 539 + position: relative; 540 + padding: 16px 16px 16px 58px; 541 + margin-bottom: 12px; 542 + background: #fff; 543 + border: 1px solid @line; 544 + border-radius: @radius; 545 + box-shadow: @shadow-sm; 546 + color: @muted; 547 + line-height: 1.5; 548 + 549 + &:before { 550 + content: counter(process); 551 + position: absolute; 552 + left: 16px; 553 + top: 16px; 554 + width: 28px; 555 + height: 28px; 556 + border-radius: 50%; 557 + background: fade(@brand, 10%); 558 + color: @brand; 559 + display: flex; 560 + align-items: center; 561 + justify-content: center; 562 + 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; 565 + strong { 566 + display: block; 567 + color: @text; 568 + margin-bottom: 3px; 223 223 } 224 224 } 225 225 } 226 226 227 -/* ===== CTA ===== */ 573 +/* ========== Resources ========== */ 574 + 575 +.resource-strip { 576 + background: @brand-bg; 577 +} 578 + 579 +.resource-card { 580 + padding: 20px; 581 + 582 + h4 { 583 + margin: 0 0 8px; 584 + color: @text; 585 + font-size: 18px; 586 + line-height: 1.25; 587 + } 588 + 589 + p { 590 + color: @muted; 591 + margin: 0 0 12px; 592 + line-height: 1.5; 593 + } 594 + 595 + a { 596 + color: @brand; 597 + font-weight: 700; 598 + } 599 +} 600 + 601 +.resource-content { 602 + order: 1; 603 +} 604 + 605 +.resource-sidebar { 606 + order: 2; 607 +} 608 + 609 +@media (max-width: 767px) { 610 + .resource-layout { 611 + display: flex; 612 + flex-direction: column; 613 + } 614 + 615 + .resource-sidebar { 616 + order: 0; 617 + position: static; 618 + width: 100%; 619 + } 620 + 621 + .resource-content { 622 + order: 1; 623 + } 624 +} 625 + 626 +/* ========== Homepage Resource Strip ========== */ 627 + 628 +.homepage-resource-strip { 629 + background: 630 + radial-gradient(42rem 16rem at 50% 0%, @brand-bg 0%, transparent 70%); 631 + 632 + .resource-grid { 633 + max-width: 1040px; 634 + margin: 26px auto 0; 635 + display: grid; 636 + grid-template-columns: repeat(2, minmax(0, 1fr)); 637 + grid-gap: 22px; 638 + align-items: stretch; 639 + } 640 + 641 + .resource-card { 642 + display: flex; 643 + flex-direction: column; 644 + min-width: 0; 645 + min-height: 100%; 646 + padding: 26px; 647 + } 648 + 649 + .resource-card h4 { 650 + margin: 0 0 10px; 651 + color: @text; 652 + font-size: 21px; 653 + line-height: 1.25; 654 + font-weight: 700; 655 + } 656 + 657 + .resource-card p { 658 + margin: 0 0 18px; 659 + color: @muted; 660 + font-size: 15px; 661 + line-height: 1.6; 662 + } 663 + 664 + .resource-card a { 665 + margin-top: auto; 666 + color: @brand; 667 + font-weight: 700; 668 + text-decoration: underline; 669 + 670 + &:hover, 671 + &:focus { 672 + color: @brand-strong; 673 + } 674 + } 675 +} 676 + 677 +@media (max-width: 980px) { 678 + .homepage-resource-strip { 679 + .resource-grid { 680 + grid-template-columns: 1fr; 681 + } 682 + } 683 +} 684 + 685 +@media (max-width: 640px) { 686 + .homepage-resource-strip { 687 + .resource-card { 688 + padding: 22px; 689 + } 690 + 691 + .resource-card h4 { 692 + font-size: 19px; 693 + } 694 + } 695 +} 696 + 697 +/* ========== CTA ========== */ 698 + 228 228 .cta-section { 229 - padding: 2 4px 016px;700 + padding: 32px 0 24px; 230 230 231 231 .contact-inline { 232 232 margin: 0; 233 233 color: @muted; 234 - a { color: @brand; } 705 + 706 + a { 707 + color: @brand; 708 + } 235 235 } 236 236 } 237 237 238 -/* ===== MENU Style ===== */ 239 -.navbar-default .navbar-nav { 240 - float: right !important; 241 - background-color: #fff; 242 - border-color: #fff; 243 - .menu-horizontal { 244 - background-color: #fff; 245 - border-color: #fff; 712 +.cta-panel { 713 + max-width: 860px; 714 + margin: 0 auto; 715 + padding: 32px; 716 + border-radius: @radius; 717 + border: 1px solid fade(@brand, 20%); 718 + background: 719 + radial-gradient(34rem 12rem at 50% 0%, @brand-soft 0%, #fff 70%); 720 + box-shadow: @shadow-sm; 721 + text-align: center; 722 + 723 + h2 { 724 + margin-top: 0; 246 246 } 247 247 248 - margin-left:20px; 727 + p { 728 + color: @muted; 729 + line-height: 1.55; 730 + } 731 +} 732 + 733 +/* ========== Responsive ========== */ 734 + 735 +@media (max-width: 980px) { 736 + .widgets, 737 + .pathways, 738 + .services-grid, 739 + .resource-grid { 740 + grid-template-columns: repeat(2, minmax(0, 1fr)); 741 + } 742 + 743 + .split-grid { 744 + grid-template-columns: 1fr; 745 + } 746 + 747 + .split-copy h2 { 748 + text-align: center; 749 + } 750 +} 751 + 752 +@media (max-width: 760px) { 753 + section[id] { 754 + scroll-margin-top: 132px; 755 + } 756 + 757 + .header-inner { 758 + min-height: auto; 759 + padding-top: 14px; 760 + padding-bottom: 14px; 761 + flex-direction: column; 762 + align-items: center; 763 + gap: 12px; 764 + } 765 + 766 + .site-nav { 767 + width: 100%; 768 + justify-content: center; 769 + flex-wrap: wrap; 770 + gap: 10px 16px; 771 + font-size: 14px; 772 + 773 + .nav-cta { 774 + padding: 7px 12px; 775 + } 776 + } 777 + 778 + .hero.hero-centered { 779 + min-height: 280px; 780 + } 781 + 782 + .hero { 783 + .lead { 784 + font-size: 17px; 785 + } 786 + 787 + .benefits { 788 + gap: 4px 10px; 789 + 790 + li + li::before { 791 + content: none; 792 + } 793 + } 794 + } 795 +} 796 + 797 +@media (max-width: 640px) { 798 + section { 799 + padding: 34px 0; 800 + } 801 + 802 + .widgets, 803 + .pathways, 804 + .services-grid, 805 + .resource-grid { 806 + grid-template-columns: 1fr; 807 + } 808 + 809 + .pathway-card, 810 + .services .service, 811 + .resource-card, 812 + .widget { 813 + padding: 20px; 814 + } 815 + 816 + .services .service { 817 + gap: 14px; 818 + } 819 + 820 + .cta-panel { 821 + padding: 24px 20px; 822 + } 823 +} 824 +/* ========== Resource / Article Pages ========== */ 825 + 826 +.resource-page { 827 + padding-top: 34px; 828 +} 829 + 830 +.resource-header { 831 + padding: 40px 0 30px; 832 + border-top: none; 833 + background: 834 + radial-gradient(50rem 18rem at 50% -10%, @brand-soft 0%, transparent 60%), 835 + radial-gradient(50rem 18rem at 50% 0%, #E8F6F3 0%, transparent 60%); 836 + 837 + h1 { 838 + margin: 0 auto 14px; 839 + text-align: center; 840 + line-height: 1.18; 841 + } 842 + 843 + .resource-summary { 844 + max-width: 780px; 845 + margin: 0 auto; 846 + color: @muted; 847 + text-align: center; 848 + font-size: 18px; 849 + line-height: 1.55; 850 + } 851 +} 852 + 853 +.resource-layout { 854 + display: grid; 855 + grid-template-columns: minmax(0, 760px) 280px; 856 + gap: 42px; 857 + max-width: 1080px; 858 + margin: 0 auto; 859 + align-items: start; 860 +} 861 + 862 +.resource-content { 863 + color: @text; 864 + font-size: 16px; 865 + line-height: 1.68; 866 + 867 + h2 { 868 + text-align: left; 869 + margin: 34px 0 12px; 870 + line-height: 1.28; 871 + } 872 + 873 + h3 { 874 + margin: 24px 0 8px; 875 + line-height: 1.3; 876 + } 877 + 878 + p { 879 + margin: 0 0 16px; 880 + } 881 + 882 + ul, 883 + ol { 884 + margin: 0 0 18px; 885 + padding-left: 22px; 886 + } 887 + 249 249 li { 250 - align-items: end; 251 - font-size: 20px; 252 - &:hover { 253 - background-color: #fff; 254 - color: #00463c; 889 + margin: 6px 0; 890 + } 891 + 892 + strong { 893 + color: @text; 894 + } 895 +} 896 + 897 +.resource-note { 898 + border-left: 4px solid @brand; 899 + background: @brand-bg; 900 + padding: 16px 18px; 901 + margin: 22px 0; 902 + border-radius: 0 @radius @radius 0; 903 + 904 + p:last-child { 905 + margin-bottom: 0; 906 + } 907 +} 908 + 909 +.resource-checklist { 910 + margin: 18px 0 24px; 911 + padding: 0; 912 + list-style: none; 913 + 914 + li { 915 + position: relative; 916 + padding: 10px 0 10px 34px; 917 + border-bottom: 1px solid @line; 918 + 919 + &:before { 920 + content: "\f00c"; 921 + font-family: FontAwesome; 922 + position: absolute; 923 + left: 0; 924 + top: 11px; 925 + color: @brand; 255 255 } 927 + } 928 +} 929 + 930 +.resource-sidebar { 931 + position: sticky; 932 + top: 96px; 933 + border: 1px solid @line; 934 + border-radius: @radius; 935 + padding: 18px; 936 + background: #fff; 937 + box-shadow: @shadow-sm; 938 + 939 + h4 { 940 + margin: 0 0 10px; 941 + } 942 + 943 + ul { 944 + margin: 0; 945 + padding-left: 18px; 946 + color: @muted; 947 + } 948 + 949 + li { 950 + margin: 8px 0; 951 + } 952 + 953 + a { 954 + color: @brand; 955 + font-weight: 600; 956 + } 957 +} 958 + 959 +.resource-cta { 960 + margin-top: 36px; 961 + padding: 22px; 962 + border: 1px solid fade(@brand, 20%); 963 + border-radius: @radius; 964 + background: @brand-bg; 965 + 966 + h3 { 967 + margin-top: 0; 968 + } 969 + 970 + p { 971 + color: @muted; 972 + } 973 +} 974 + 975 +@media (max-width: 900px) { 976 + .resource-layout { 977 + grid-template-columns: 1fr; 978 + } 979 + 980 + .resource-sidebar { 981 + position: static; 982 + } 983 +} 984 +/* ========== Products / Extensions Pages ========== */ 985 + 986 +.product-index-section { 987 + padding: 52px 0 56px; 988 + 989 + h2 { 990 + margin-bottom: 10px; 991 + } 992 +} 993 + 994 +.product-card-grid { 995 + max-width: 840px; 996 + margin: 28px auto 0; 997 + display: grid; 998 + grid-template-columns: 1fr; 999 + grid-gap: 18px; 1000 +} 1001 + 1002 +.product-card { 1003 + background: #fff; 1004 + border: 1px solid @line; 1005 + border-radius: @radius; 1006 + box-shadow: @shadow-sm; 1007 + padding: 28px; 1008 + display: grid; 1009 + grid-template-columns: 68px 1fr; 1010 + grid-gap: 22px; 1011 + align-items: start; 1012 + transition: transform .18s ease, box-shadow .18s ease; 1013 + 1014 + &:hover { 1015 + transform: translateY(-2px); 1016 + box-shadow: @shadow; 1017 + } 1018 + 1019 + .product-card-icon { 1020 + width: 58px; 1021 + height: 58px; 1022 + border-radius: 50%; 1023 + background: fade(@brand, 10%); 1024 + border: 1px solid fade(@brand, 20%); 1025 + color: @brand; 1026 + display: flex; 1027 + align-items: center; 1028 + justify-content: center; 1029 + font-size: 22px; 1030 + flex-shrink: 0; 1031 + } 1032 + 1033 + h3 { 1034 + margin: 0 0 10px; 1035 + color: @text; 1036 + font-size: 23px; 1037 + line-height: 1.25; 1038 + font-weight: 800; 1039 + } 1040 + 1041 + p { 1042 + color: @muted; 1043 + line-height: 1.6; 1044 + } 1045 + 1046 + .card-link { 1047 + margin: 0; 1048 + 256 256 a { 257 - padding-bottom: 0; 258 - padding-top: 14px; 259 - &:hover { 260 - background-color: #fff; 261 - color: #00463c; 262 - } 1050 + font-weight: 700; 263 263 } 264 264 } 265 265 } 266 266 1055 +.product-card-kicker { 1056 + margin-bottom: 10px; 1057 + padding: 5px 10px; 1058 + font-size: 12px; 1059 + text-transform: uppercase; 1060 + letter-spacing: .04em; 1061 +} 1062 + 1063 +.product-highlights { 1064 + margin: 14px 0 20px; 1065 + padding-left: 18px; 1066 + color: @muted; 1067 + 1068 + li { 1069 + margin: 6px 0; 1070 + line-height: 1.45; 1071 + } 1072 +} 1073 + 1074 +/* ========== Individual Product Pages ========== */ 1075 + 1076 +.product-layout { 1077 + display: grid; 1078 + grid-template-columns: 1.1fr .9fr; 1079 + grid-gap: 36px; 1080 + max-width: 1040px; 1081 + margin: 0 auto; 1082 + align-items: start; 1083 +} 1084 + 1085 +.product-summary-card, 1086 +.product-info-card, 1087 +.product-gallery-panel { 1088 + background: #fff; 1089 + border: 1px solid @line; 1090 + border-radius: @radius; 1091 + box-shadow: @shadow-sm; 1092 +} 1093 + 1094 +.product-summary-card { 1095 + padding: 26px; 1096 + 1097 + h2 { 1098 + text-align: left; 1099 + margin-top: 0; 1100 + } 1101 + 1102 + p { 1103 + color: @muted; 1104 + line-height: 1.6; 1105 + } 1106 + 1107 + p:last-child { 1108 + margin-bottom: 0; 1109 + } 1110 +} 1111 + 1112 +.product-info-card { 1113 + padding: 22px; 1114 + 1115 + h3 { 1116 + margin-top: 0; 1117 + margin-bottom: 12px; 1118 + } 1119 + 1120 + ul { 1121 + margin: 0; 1122 + padding-left: 20px; 1123 + color: @muted; 1124 + } 1125 + 1126 + li { 1127 + margin: 8px 0; 1128 + line-height: 1.45; 1129 + } 1130 +} 1131 + 1132 +.product-feature-grid { 1133 + display: grid; 1134 + grid-template-columns: repeat(3, minmax(0, 1fr)); 1135 + grid-gap: 18px; 1136 + max-width: 1040px; 1137 + margin: 26px auto 0; 1138 +} 1139 + 1140 +.product-feature { 1141 + background: #fff; 1142 + border: 1px solid @line; 1143 + border-radius: @radius; 1144 + box-shadow: @shadow-sm; 1145 + padding: 22px; 1146 + transition: transform .18s ease, box-shadow .18s ease; 1147 + 1148 + &:hover { 1149 + transform: translateY(-2px); 1150 + box-shadow: @shadow; 1151 + } 1152 + 1153 + .feature-icon { 1154 + width: 46px; 1155 + height: 46px; 1156 + border-radius: 50%; 1157 + background: fade(@brand, 10%); 1158 + color: @brand; 1159 + display: flex; 1160 + align-items: center; 1161 + justify-content: center; 1162 + margin-bottom: 14px; 1163 + font-size: 18px; 1164 + } 1165 + 1166 + h3 { 1167 + margin: 0 0 8px; 1168 + color: @text; 1169 + font-size: 18px; 1170 + line-height: 1.25; 1171 + } 1172 + 1173 + p { 1174 + margin: 0; 1175 + color: @muted; 1176 + line-height: 1.5; 1177 + } 1178 +} 1179 + 1180 +.product-gallery-panel { 1181 + max-width: 1040px; 1182 + margin: 20px auto 0; 1183 + padding: 26px; 1184 + 1185 + h2 { 1186 + margin-top: 0; 1187 + text-align: center; 1188 + } 1189 + 1190 + .gallery-note { 1191 + max-width: 700px; 1192 + margin: 0 auto 18px; 1193 + color: @muted; 1194 + text-align: center; 1195 + line-height: 1.55; 1196 + } 1197 +} 1198 + 1199 +.product-gallery-placeholder { 1200 + min-height: 260px; 1201 + padding: 28px; 1202 + border: 1px dashed fade(@brand, 40%); 1203 + border-radius: @radius; 1204 + background: fade(@brand, 5%); 1205 + color: @muted; 1206 + text-align: center; 1207 + display: flex; 1208 + align-items: center; 1209 + justify-content: center; 1210 +} 1211 + 1212 +.product-section-muted { 1213 + background: 1214 + radial-gradient(42rem 16rem at 50% 0%, @brand-bg 0%, transparent 65%); 1215 +} 1216 + 1217 +@media (max-width: 980px) { 1218 + .product-layout, 1219 + .product-feature-grid { 1220 + grid-template-columns: 1fr; 1221 + } 1222 + 1223 + .product-summary-card h2 { 1224 + text-align: center; 1225 + } 1226 +} 1227 + 1228 +@media (max-width: 640px) { 1229 + .product-card { 1230 + grid-template-columns: 1fr; 1231 + padding: 22px; 1232 + text-align: left; 1233 + 1234 + .product-card-icon { 1235 + margin-bottom: 2px; 1236 + } 1237 + } 1238 + 1239 + .product-summary-card, 1240 + .product-info-card, 1241 + .product-feature, 1242 + .product-gallery-panel { 1243 + padding: 20px; 1244 + } 1245 +} 1246 +/* ========== Resources Index ========== */ 1247 + 1248 +.resources-index-page { 1249 + padding: 56px 0 72px; 1250 + background: @brand-bg; 1251 +} 1252 + 1253 +.resources-intro { 1254 + max-width: 820px; 1255 + margin: 0 auto 32px; 1256 + text-align: center; 1257 +} 1258 + 1259 +.resources-intro p { 1260 + color: @muted; 1261 + font-size: 17px; 1262 + line-height: 1.7; 1263 + margin: 0; 1264 +} 1265 + 1266 +.resources-grid { 1267 + display: grid; 1268 + grid-template-columns: repeat(2, minmax(0, 1fr)); 1269 + gap: 24px; 1270 + margin-bottom: 36px; 1271 +} 1272 + 1273 +.resource-card { 1274 + display: flex; 1275 + gap: 18px; 1276 + background: #fff; 1277 + border: 1px solid @line; 1278 + border-radius: @radius; 1279 + box-shadow: @shadow-sm; 1280 + padding: 24px; 1281 +} 1282 + 1283 +.resource-card-icon { 1284 + flex: 0 0 46px; 1285 + width: 46px; 1286 + height: 46px; 1287 + border-radius: 14px; 1288 + background: @brand-soft; 1289 + color: @brand-strong; 1290 + display: flex; 1291 + align-items: center; 1292 + justify-content: center; 1293 + font-size: 20px; 1294 +} 1295 + 1296 +.resource-card-label { 1297 + color: @brand-strong; 1298 + font-size: 13px; 1299 + font-weight: 700; 1300 + text-transform: uppercase; 1301 + letter-spacing: .04em; 1302 + margin-bottom: 8px; 1303 +} 1304 + 1305 +.resource-card h2 { 1306 + font-size: 22px; 1307 + line-height: 1.25; 1308 + margin: 0 0 12px; 1309 +} 1310 + 1311 +.resource-card h2 a { 1312 + color: @text; 1313 + text-decoration: none; 1314 +} 1315 + 1316 +.resource-card h2 a:hover { 1317 + color: @brand-strong; 1318 + text-decoration: none; 1319 +} 1320 + 1321 +.resource-card p { 1322 + color: @muted; 1323 + font-size: 15px; 1324 + line-height: 1.65; 1325 + margin: 0 0 16px; 1326 +} 1327 + 1328 +.resource-card-link { 1329 + color: @brand-strong; 1330 + font-weight: 700; 1331 + text-decoration: none; 1332 +} 1333 + 1334 +.resource-card-link:hover { 1335 + color: @brand; 1336 + text-decoration: none; 1337 +} 1338 + 1339 +.resources-next { 1340 + max-width: 820px; 1341 + margin: 0 auto 32px; 1342 + text-align: center; 1343 +} 1344 + 1345 +.resources-next h2 { 1346 + font-size: 26px; 1347 + margin: 0 0 10px; 1348 +} 1349 + 1350 +.resources-next p { 1351 + color: @muted; 1352 + font-size: 16px; 1353 + line-height: 1.7; 1354 + margin: 0; 1355 +} 1356 + 1357 +@media (max-width: 767px) { 1358 + .resources-index-page { 1359 + padding: 36px 0 52px; 1360 + } 1361 + 1362 + .resources-intro { 1363 + text-align: left; 1364 + margin-bottom: 24px; 1365 + } 1366 + 1367 + .resources-grid { 1368 + grid-template-columns: 1fr; 1369 + gap: 18px; 1370 + } 1371 + 1372 + .resource-card { 1373 + padding: 20px; 1374 + } 1375 + 1376 + .resource-card h2 { 1377 + font-size: 20px; 1378 + } 1379 + 1380 + .resources-next { 1381 + text-align: left; 1382 + } 1383 +}
- 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