Changes for page Tidy-Lab Cloud Platform
Last modified by Humphrey AI on 2026/03/22 10:27
From version 34.1
edited by Humphrey AI
on 2026/03/19 16:19
on 2026/03/19 16:19
Change comment:
There is no comment for this version
To version 29.1
edited by Humphrey AI
on 2026/03/19 15:57
on 2026/03/19 15:57
Change comment:
There is no comment for this version
Summary
-
Objects (1 modified, 0 added, 0 removed)
Details
- XWiki.StyleSheetExtension[0]
-
- code
-
... ... @@ -1,368 +1,2 @@ 1 - /* ========================================================================== 2 - Tidy-Lab Homepage — Full-Page Hero 3 - Targets exact XWiki 18.1 Flamingo DOM element IDs. 4 - ========================================================================== */ 1 +${NEW_CSS} 5 5 6 - /* --- Design Tokens (from concept-b) --- */ 7 - :root { 8 - --hero-purple: #2D2B55; 9 - --indigo: #4F46E5; 10 - --indigo-light: #EEF2FF; 11 - --indigo-dark: #1e1b4b; 12 - --purple: #7C3AED; 13 - --green: #10B981; 14 - --green-light: #ECFDF5; 15 - --text-dark: #111827; 16 - --text-body: #4B5563; 17 - --text-muted: #9CA3AF; 18 - --border: #E5E7EB; 19 - --bg-light: #f8f9fc; 20 - --bg-section: #f0f1f8; 21 - } 22 - 23 - /* ========================================================================== 24 - Phase 1: HERO VISIBLE — hide chrome, full-bleed layout 25 - ========================================================================== */ 26 - 27 - /* Chrome elements: hidden initially with display:none (no space taken) */ 28 - .tl-hero-page:not(.tl-scrolled) #menuview, 29 - .tl-hero-page:not(.tl-scrolled) #headerglobal, 30 - .tl-hero-page:not(.tl-scrolled) #hierarchy_breadcrumb, 31 - .tl-hero-page:not(.tl-scrolled) .document-header, 32 - .tl-hero-page:not(.tl-scrolled) #xdocFooter, 33 - .tl-hero-page:not(.tl-scrolled) #xwikidata, 34 - .tl-hero-page:not(.tl-scrolled) #footerglobal, 35 - .tl-hero-page:not(.tl-scrolled) .skip-nav { 36 - display: none !important; 37 - } 38 - 39 - /* When fading in (JS adds tl-fading), switch to opacity-based visibility */ 40 - .tl-hero-page.tl-fading #menuview, 41 - .tl-hero-page.tl-fading #headerglobal, 42 - .tl-hero-page.tl-fading #hierarchy_breadcrumb, 43 - .tl-hero-page.tl-fading .document-header, 44 - .tl-hero-page.tl-fading #xdocFooter, 45 - .tl-hero-page.tl-fading #xwikidata, 46 - .tl-hero-page.tl-fading #footerglobal, 47 - .tl-hero-page.tl-fading .skip-nav { 48 - display: block !important; 49 - } 50 - 51 - .tl-hero-page.tl-fading .document-header { 52 - display: flex !important; 53 - } 54 - 55 - /* Sticky navbar once visible */ 56 - .tl-hero-page.tl-fading #menuview, 57 - .tl-hero-page.tl-scrolled #menuview { 58 - position: fixed !important; 59 - top: 0; 60 - left: 0; 61 - width: 100%; 62 - z-index: 1030; 63 - overflow: hidden; 64 - } 65 - 66 - /* Prevent any horizontal overflow */ 67 - html, body.tl-hero-page, 68 - .tl-hero-page #xwikimaincontainer, 69 - .tl-hero-page #xwikimaincontainerinner { 70 - overflow-x: hidden !important; 71 - } 72 - 73 - /* Reset containers for full-bleed hero — only while hero is visible */ 74 - .tl-hero-page:not(.tl-scrolled) #xwikimaincontainer, 75 - .tl-hero-page:not(.tl-scrolled) #xwikimaincontainerinner, 76 - .tl-hero-page:not(.tl-scrolled) #contentcontainer, 77 - .tl-hero-page:not(.tl-scrolled) #contentcolumn, 78 - .tl-hero-page:not(.tl-scrolled) .main, 79 - .tl-hero-page:not(.tl-scrolled) #mainContentArea, 80 - .tl-hero-page:not(.tl-scrolled) #xwikicontent { 81 - margin: 0 !important; 82 - padding: 0 !important; 83 - width: 100% !important; 84 - max-width: 100% !important; 85 - } 86 - 87 - .tl-hero-page:not(.tl-scrolled) #mainContentArea > hr { 88 - display: none !important; 89 - } 90 - 91 - .tl-hero-page:not(.tl-scrolled) #xwikicontent > .row { 92 - margin: 0 !important; 93 - } 94 - 95 - body.tl-hero-page:not(.tl-scrolled) { 96 - padding-top: 0 !important; 97 - margin-top: 0 !important; 98 - } 99 - 100 - /* ========================================================================== 101 - Hero Section — ALWAYS full viewport width, even after scroll 102 - ========================================================================== */ 103 - .tl-hero { 104 - position: relative; 105 - min-height: 100vh; 106 - width: 100%; 107 - display: flex; 108 - flex-direction: column; 109 - overflow: hidden; 110 - } 111 - 112 - /* --- Top half: dark purple --- */ 113 - .tl-hero-top { 114 - flex: 1; 115 - background-color: var(--hero-purple); 116 - display: flex; 117 - flex-direction: column; 118 - justify-content: flex-end; 119 - align-items: center; 120 - position: relative !important; 121 - padding-bottom: 30px; 122 - overflow: visible; 123 - } 124 - 125 - /* Subtle radial glow behind title */ 126 - .tl-hero-top::before { 127 - content: ''; 128 - position: absolute; 129 - bottom: -60px; 130 - left: 50%; 131 - transform: translateX(-50%); 132 - width: 700px; 133 - height: 350px; 134 - background: radial-gradient(ellipse, rgba(79,70,229,0.2) 0%, transparent 70%); 135 - pointer-events: none; 136 - } 137 - 138 - /* Faint dot pattern for texture */ 139 - .tl-hero-top::after { 140 - content: ''; 141 - position: absolute; 142 - inset: 0; 143 - background-image: radial-gradient(rgba(255,255,255,0.03) 1px, transparent 1px); 144 - background-size: 24px 24px; 145 - pointer-events: none; 146 - } 147 - 148 - /* --- Bottom half: white --- */ 149 - .tl-hero-bottom { 150 - flex: 1; 151 - background-color: #FFFFFF; 152 - display: flex; 153 - flex-direction: column; 154 - justify-content: flex-start; 155 - align-items: center; 156 - padding-top: 20px; 157 - } 158 - 159 - /* --- Logo bar (top-left) --- */ 160 - .tl-hero-logo-bar { 161 - position: absolute; 162 - top: 30px; 163 - left: 40px; 164 - z-index: 2; 165 - } 166 - 167 - .tl-hero-logo-img { 168 - max-width: 240px; 169 - height: auto; 170 - filter: brightness(1.8) saturate(1.2); 171 - } 172 - 173 - /* --- Centered title --- */ 174 - .tl-hero-center { 175 - text-align: center; 176 - padding: 0 20px; 177 - position: relative; 178 - z-index: 1; 179 - } 180 - 181 - .tl-hero-title { 182 - color: #FFFFFF !important; 183 - font-family: "Calibri Light", "Calibri", "Segoe UI Light", "Segoe UI", sans-serif !important; 184 - font-weight: 300 !important; 185 - font-size: 56px !important; 186 - letter-spacing: 1px; 187 - margin: 0 !important; 188 - text-shadow: 0 2px 10px rgba(0, 0, 0, 0.3); 189 - } 190 - 191 - /* --- Tagline --- */ 192 - .tl-hero-tagline { 193 - color: #7B78FF; 194 - font-family: "Calibri", "Segoe UI", sans-serif; 195 - font-size: 22px; 196 - font-weight: 300; 197 - letter-spacing: 8px; 198 - text-transform: lowercase; 199 - margin: 0; 200 - } 201 - 202 - /* --- Scroll indicator --- */ 203 - .tl-hero-scroll { 204 - position: absolute; 205 - bottom: 30px; 206 - left: 50%; 207 - transform: translateX(-50%); 208 - color: rgba(123, 120, 255, 0.6); 209 - font-size: 24px; 210 - text-decoration: none; 211 - animation: tl-bounce 2s ease infinite; 212 - z-index: 2; 213 - } 214 - 215 - .tl-hero-scroll:hover { 216 - color: #7B78FF; 217 - text-decoration: none; 218 - } 219 - 220 - @keyframes tl-bounce { 221 - 0%, 20%, 50%, 80%, 100% { transform: translateX(-50%) translateY(0); } 222 - 40% { transform: translateX(-50%) translateY(-12px); } 223 - 60% { transform: translateX(-50%) translateY(-6px); } 224 - } 225 - 226 - /* ========================================================================== 227 - Content area below hero — restore normal layout 228 - ========================================================================== */ 229 - #tl-content { 230 - scroll-margin-top: 70px; 231 - } 232 - 233 - #tl-content ~ h2, 234 - #tl-content ~ h3, 235 - #tl-content ~ p, 236 - #tl-content ~ ul, 237 - #tl-content ~ ol, 238 - #tl-content ~ table, 239 - #tl-content ~ div { 240 - max-width: 1000px; 241 - margin-left: auto; 242 - margin-right: auto; 243 - padding-left: 20px; 244 - padding-right: 20px; 245 - } 246 - 247 - /* ========================================================================== 248 - Scroll-Reveal Animations (from concept-b) 249 - ========================================================================== */ 250 - @keyframes tl-fadeIn { 251 - from { opacity: 0; } 252 - to { opacity: 1; } 253 - } 254 - 255 - @keyframes tl-fadeUp { 256 - from { opacity: 0; transform: translateY(24px); } 257 - to { opacity: 1; transform: translateY(0); } 258 - } 259 - 260 - .tl-reveal { 261 - opacity: 0; 262 - transform: translateY(28px); 263 - transition: opacity 0.7s ease-out, transform 0.7s ease-out; 264 - } 265 - 266 - .tl-reveal.tl-visible { 267 - opacity: 1; 268 - transform: translateY(0); 269 - } 270 - 271 - /* Hero elements fade in on load */ 272 - .tl-hero-title { 273 - opacity: 0; 274 - animation: tl-fadeIn 0.6s ease-out 0.1s forwards; 275 - } 276 - 277 - .tl-hero-tagline { 278 - opacity: 0; 279 - animation: tl-fadeIn 0.5s ease-out 0.3s forwards; 280 - } 281 - 282 - .tl-partner-btn-wrap { 283 - opacity: 0; 284 - animation: tl-fadeUp 0.5s ease-out 0.5s forwards; 285 - } 286 - 287 - .tl-hero-scroll { 288 - opacity: 0; 289 - animation: tl-fadeIn 0.4s ease-out 0.7s forwards, tl-bounce 2s ease 1.1s infinite; 290 - } 291 - 292 - /* ========================================================================== 293 - Responsive 294 - ========================================================================== */ 295 - @media (max-width: 992px) { 296 - .tl-hero-title { font-size: 40px !important; } 297 - .tl-hero-tagline { font-size: 18px; letter-spacing: 6px; } 298 - .tl-hero-logo-img { max-width: 180px; } 299 - .tl-hero-logo-bar { top: 20px; left: 20px; } 300 - .tl-hero-top { padding-bottom: 24px; } 301 - .tl-hero-bottom { padding-top: 16px; } 302 - .tl-hero-top::before { width: 500px; height: 250px; } 303 - } 304 - 305 - @media (max-width: 576px) { 306 - .tl-hero-title { font-size: 28px !important; } 307 - .tl-hero-tagline { font-size: 14px; letter-spacing: 4px; } 308 - .tl-hero-logo-img { max-width: 140px; } 309 - .tl-hero-logo-bar { top: 15px; left: 15px; } 310 - .tl-hero-scroll { bottom: 15px; } 311 - .tl-hero-top { padding-bottom: 20px; } 312 - .tl-hero-bottom { padding-top: 12px; } 313 - .tl-hero-top::before { width: 300px; height: 150px; } 314 - } 315 - 316 - /* --- Print: skip hero --- */ 317 - @media print { 318 - .tl-hero { display: none; } 319 - .tl-hero-page #tmHeader, 320 - .tl-hero-page .navbar, 321 - .tl-hero-page #hierarchy { 322 - opacity: 1; 323 - pointer-events: auto; 324 - } 325 - } 326 - 327 - /* ========================================================================== 328 - Partner Access Button 329 - ========================================================================== */ 330 - .tl-partner-btn-wrap { 331 - margin-top: 15vh; 332 - text-align: center; 333 - } 334 - 335 - .tl-partner-btn { 336 - display: inline-block; 337 - padding: 12px 40px; 338 - background-color: var(--hero-purple); 339 - color: #FFFFFF !important; 340 - font-family: "Calibri", "Segoe UI", sans-serif; 341 - font-size: 15px; 342 - font-weight: 400; 343 - letter-spacing: 3px; 344 - text-transform: uppercase; 345 - text-decoration: none !important; 346 - border: 2px solid var(--hero-purple); 347 - border-radius: 0; 348 - transition: all 0.3s ease; 349 - cursor: pointer; 350 - } 351 - 352 - .tl-partner-btn:hover { 353 - background-color: transparent; 354 - color: var(--hero-purple) !important; 355 - border-color: var(--hero-purple); 356 - text-decoration: none !important; 357 - } 358 - 359 - @media (max-width: 576px) { 360 - .tl-partner-btn { 361 - padding: 10px 28px; 362 - font-size: 13px; 363 - letter-spacing: 2px; 364 - } 365 - .tl-partner-btn-wrap { 366 - margin-top: 50px; 367 - } 368 - }