Changes for page Tidy-Lab Cloud Platform

Last modified by Humphrey AI on 2026/03/22 10:27

From version 36.1
edited by Humphrey AI
on 2026/03/19 16:26
Change comment: There is no comment for this version
To version 29.1
edited by Humphrey AI
on 2026/03/19 15:57
Change comment: There is no comment for this version

Summary

Details

XWiki.JavaScriptExtension[0]
code
... ... @@ -78,17 +78,4 @@
78 78   }
79 79   });
80 80   }
81 -
82 - // Scroll-reveal observer for below-the-fold content
83 - var revealObserver = new IntersectionObserver(function(entries) {
84 - entries.forEach(function(entry) {
85 - if (entry.isIntersecting) {
86 - entry.target.classList.add('tl-visible');
87 - }
88 - });
89 - }, { threshold: 0.08, rootMargin: '0px 0px -40px 0px' });
90 -
91 - document.querySelectorAll('.tl-reveal').forEach(function(el) {
92 - revealObserver.observe(el);
93 - });
94 94   })();
XWiki.StyleSheetExtension[0]
code
... ... @@ -1,357 +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 - NAV — always visible, fixed, blends with hero
25 - ========================================================================== */
26 -
27 - /* Nav is always fixed at top */
28 - .tl-hero-page #menuview {
29 - position: fixed !important;
30 - top: 0;
31 - left: 0;
32 - width: 100%;
33 - z-index: 1030;
34 - overflow: hidden;
35 - transition: background-color 0.3s ease, box-shadow 0.3s ease;
36 - }
37 -
38 - /* On the hero: transparent, blends with purple */
39 - .tl-hero-page:not(.tl-scrolled) #menuview {
40 - background-color: transparent !important;
41 - box-shadow: none !important;
42 - }
43 -
44 - /* After scrolling past hero: solid background with shadow */
45 - .tl-hero-page.tl-scrolled #menuview {
46 - background-color: var(--hero-purple) !important;
47 - box-shadow: 0 2px 12px rgba(0, 0, 0, 0.15) !important;
48 - }
49 -
50 - /* Hide non-nav chrome on the hero (breadcrumbs, footer, etc.) */
51 - .tl-hero-page:not(.tl-scrolled) #headerglobal,
52 - .tl-hero-page:not(.tl-scrolled) #hierarchy_breadcrumb,
53 - .tl-hero-page:not(.tl-scrolled) .document-header,
54 - .tl-hero-page:not(.tl-scrolled) #xdocFooter,
55 - .tl-hero-page:not(.tl-scrolled) #xwikidata,
56 - .tl-hero-page:not(.tl-scrolled) #footerglobal,
57 - .tl-hero-page:not(.tl-scrolled) .skip-nav {
58 - display: none !important;
59 - }
60 -
61 - /* Prevent any horizontal overflow */
62 - html, body.tl-hero-page,
63 - .tl-hero-page #xwikimaincontainer,
64 - .tl-hero-page #xwikimaincontainerinner {
65 - overflow-x: hidden !important;
66 - }
67 -
68 - /* Reset containers for full-bleed hero — only while hero is visible */
69 - .tl-hero-page:not(.tl-scrolled) #xwikimaincontainer,
70 - .tl-hero-page:not(.tl-scrolled) #xwikimaincontainerinner,
71 - .tl-hero-page:not(.tl-scrolled) #contentcontainer,
72 - .tl-hero-page:not(.tl-scrolled) #contentcolumn,
73 - .tl-hero-page:not(.tl-scrolled) .main,
74 - .tl-hero-page:not(.tl-scrolled) #mainContentArea,
75 - .tl-hero-page:not(.tl-scrolled) #xwikicontent {
76 - margin: 0 !important;
77 - padding: 0 !important;
78 - width: 100% !important;
79 - max-width: 100% !important;
80 - }
81 -
82 - .tl-hero-page:not(.tl-scrolled) #mainContentArea > hr {
83 - display: none !important;
84 - }
85 -
86 - .tl-hero-page:not(.tl-scrolled) #xwikicontent > .row {
87 - margin: 0 !important;
88 - }
89 -
90 - body.tl-hero-page:not(.tl-scrolled) {
91 - padding-top: 0 !important;
92 - margin-top: 0 !important;
93 - }
94 -
95 - /* ==========================================================================
96 - Hero Section — ALWAYS full viewport width, even after scroll
97 - ========================================================================== */
98 - .tl-hero {
99 - position: relative;
100 - min-height: 100vh;
101 - width: 100%;
102 - display: flex;
103 - flex-direction: column;
104 - overflow: hidden;
105 - }
106 -
107 - /* --- Top half: dark purple --- */
108 - .tl-hero-top {
109 - flex: 1;
110 - background-color: var(--hero-purple);
111 - display: flex;
112 - flex-direction: column;
113 - justify-content: flex-end;
114 - align-items: center;
115 - position: relative !important;
116 - padding-bottom: 30px;
117 - overflow: visible;
118 - }
119 -
120 - /* Subtle radial glow behind title */
121 - .tl-hero-top::before {
122 - content: '';
123 - position: absolute;
124 - bottom: -60px;
125 - left: 50%;
126 - transform: translateX(-50%);
127 - width: 700px;
128 - height: 350px;
129 - background: radial-gradient(ellipse, rgba(79,70,229,0.2) 0%, transparent 70%);
130 - pointer-events: none;
131 - }
132 -
133 - /* Faint dot pattern for texture */
134 - .tl-hero-top::after {
135 - content: '';
136 - position: absolute;
137 - inset: 0;
138 - background-image: radial-gradient(rgba(255,255,255,0.03) 1px, transparent 1px);
139 - background-size: 24px 24px;
140 - pointer-events: none;
141 - }
142 -
143 - /* --- Bottom half: white --- */
144 - .tl-hero-bottom {
145 - flex: 1;
146 - background-color: #FFFFFF;
147 - display: flex;
148 - flex-direction: column;
149 - justify-content: flex-start;
150 - align-items: center;
151 - padding-top: 20px;
152 - }
153 -
154 - /* --- Logo bar (top-left) --- */
155 - .tl-hero-logo-bar {
156 - position: absolute;
157 - top: 30px;
158 - left: 40px;
159 - z-index: 2;
160 - }
161 -
162 - .tl-hero-logo-img {
163 - max-width: 240px;
164 - height: auto;
165 - filter: brightness(1.8) saturate(1.2);
166 - }
167 -
168 - /* --- Centered title --- */
169 - .tl-hero-center {
170 - text-align: center;
171 - padding: 0 20px;
172 - position: relative;
173 - z-index: 1;
174 - }
175 -
176 - .tl-hero-title {
177 - color: #FFFFFF !important;
178 - font-family: "Calibri Light", "Calibri", "Segoe UI Light", "Segoe UI", sans-serif !important;
179 - font-weight: 300 !important;
180 - font-size: 56px !important;
181 - letter-spacing: 1px;
182 - margin: 0 !important;
183 - text-shadow: 0 2px 10px rgba(0, 0, 0, 0.3);
184 - }
185 -
186 - /* --- Tagline --- */
187 - .tl-hero-tagline {
188 - color: #7B78FF;
189 - font-family: "Calibri", "Segoe UI", sans-serif;
190 - font-size: 22px;
191 - font-weight: 300;
192 - letter-spacing: 8px;
193 - text-transform: lowercase;
194 - margin: 0;
195 - }
196 -
197 - /* --- Scroll indicator --- */
198 - .tl-hero-scroll {
199 - position: absolute;
200 - bottom: 30px;
201 - left: 50%;
202 - transform: translateX(-50%);
203 - color: rgba(123, 120, 255, 0.6);
204 - font-size: 24px;
205 - text-decoration: none;
206 - z-index: 2;
207 - }
208 -
209 - .tl-hero-scroll:hover {
210 - color: #7B78FF;
211 - text-decoration: none;
212 - }
213 -
214 - /* ==========================================================================
215 - Content area below hero — restore normal layout
216 - ========================================================================== */
217 - #tl-content {
218 - scroll-margin-top: 70px;
219 - }
220 -
221 - #tl-content ~ h2,
222 - #tl-content ~ h3,
223 - #tl-content ~ p,
224 - #tl-content ~ ul,
225 - #tl-content ~ ol,
226 - #tl-content ~ table,
227 - #tl-content ~ div {
228 - max-width: 1000px;
229 - margin-left: auto;
230 - margin-right: auto;
231 - padding-left: 20px;
232 - padding-right: 20px;
233 - }
234 -
235 - /* ==========================================================================
236 - Animations (from concept-b)
237 - ========================================================================== */
238 - @keyframes tl-fadeIn {
239 - from { opacity: 0; }
240 - to { opacity: 1; }
241 - }
242 -
243 - @keyframes tl-fadeUp {
244 - from { opacity: 0; transform: translateY(24px); }
245 - to { opacity: 1; transform: translateY(0); }
246 - }
247 -
248 - @keyframes tl-bounce {
249 - 0%, 20%, 50%, 80%, 100% { transform: translateX(-50%) translateY(0); }
250 - 40% { transform: translateX(-50%) translateY(-12px); }
251 - 60% { transform: translateX(-50%) translateY(-6px); }
252 - }
253 -
254 - /* Scroll-reveal for below-the-fold content */
255 - .tl-reveal {
256 - opacity: 0;
257 - transform: translateY(28px);
258 - transition: opacity 0.7s ease-out, transform 0.7s ease-out;
259 - }
260 -
261 - .tl-reveal.tl-visible {
262 - opacity: 1;
263 - transform: translateY(0);
264 - }
265 -
266 - /* Hero elements fade in on load */
267 - .tl-hero-title {
268 - opacity: 0;
269 - animation: tl-fadeIn 0.6s ease-out 0.1s forwards;
270 - }
271 -
272 - .tl-hero-tagline {
273 - opacity: 0;
274 - animation: tl-fadeIn 0.5s ease-out 0.3s forwards;
275 - }
276 -
277 - .tl-partner-btn-wrap {
278 - opacity: 0;
279 - animation: tl-fadeUp 0.5s ease-out 0.5s forwards;
280 - }
281 -
282 - .tl-hero-scroll {
283 - opacity: 0;
284 - animation: tl-fadeIn 0.4s ease-out 0.7s forwards, tl-bounce 2s ease 1.1s infinite;
285 - }
286 -
287 - /* ==========================================================================
288 - Responsive
289 - ========================================================================== */
290 - @media (max-width: 992px) {
291 - .tl-hero-title { font-size: 40px !important; }
292 - .tl-hero-tagline { font-size: 18px; letter-spacing: 6px; }
293 - .tl-hero-logo-img { max-width: 180px; }
294 - .tl-hero-logo-bar { top: 20px; left: 20px; }
295 - .tl-hero-top { padding-bottom: 24px; }
296 - .tl-hero-bottom { padding-top: 16px; }
297 - .tl-hero-top::before { width: 500px; height: 250px; }
298 - }
299 -
300 - @media (max-width: 576px) {
301 - .tl-hero-title { font-size: 28px !important; }
302 - .tl-hero-tagline { font-size: 14px; letter-spacing: 4px; }
303 - .tl-hero-logo-img { max-width: 140px; }
304 - .tl-hero-logo-bar { top: 15px; left: 15px; }
305 - .tl-hero-scroll { bottom: 15px; }
306 - .tl-hero-top { padding-bottom: 20px; }
307 - .tl-hero-bottom { padding-top: 12px; }
308 - .tl-hero-top::before { width: 300px; height: 150px; }
309 - }
310 -
311 - /* --- Print: skip hero --- */
312 - @media print {
313 - .tl-hero { display: none; }
314 - }
315 -
316 - /* ==========================================================================
317 - Partner Access Button
318 - ========================================================================== */
319 - .tl-partner-btn-wrap {
320 - margin-top: 15vh;
321 - text-align: center;
322 - }
323 -
324 - .tl-partner-btn {
325 - display: inline-block;
326 - padding: 12px 40px;
327 - background-color: var(--hero-purple);
328 - color: #FFFFFF !important;
329 - font-family: "Calibri", "Segoe UI", sans-serif;
330 - font-size: 15px;
331 - font-weight: 400;
332 - letter-spacing: 3px;
333 - text-transform: uppercase;
334 - text-decoration: none !important;
335 - border: 2px solid var(--hero-purple);
336 - border-radius: 0;
337 - transition: all 0.3s ease;
338 - cursor: pointer;
339 - }
340 -
341 - .tl-partner-btn:hover {
342 - background-color: transparent;
343 - color: var(--hero-purple) !important;
344 - border-color: var(--hero-purple);
345 - text-decoration: none !important;
346 - }
347 -
348 - @media (max-width: 576px) {
349 - .tl-partner-btn {
350 - padding: 10px 28px;
351 - font-size: 13px;
352 - letter-spacing: 2px;
353 - }
354 - .tl-partner-btn-wrap {
355 - margin-top: 50px;
356 - }
357 - }
XWiki.XWikiRights[1]
allow
... ... @@ -1,1 +1,0 @@
1 -Allow
groups
... ... @@ -1,1 +1,0 @@
1 -XWiki.XWikiAllGroup
levels
... ... @@ -1,1 +1,0 @@
1 -view