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