Changes for page Tidy-Lab Cloud Platform

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

From version 17.1
edited by Christian Wawrzinek
on 2026/03/18 15:49
Change comment: There is no comment for this version
To version 21.1
edited by Christian Wawrzinek
on 2026/03/18 16:16
Change comment: There is no comment for this version

Summary

Details

Page properties
Content
... ... @@ -1,29 +1,34 @@
1 - {{velocity}}
2 - $xwiki.ssx.use($doc.fullName)
1 + {{velocity}} $xwiki.ssx.use($doc.fullName)
3 3   $xwiki.jsx.use($doc.fullName, {"minify": false})
4 - #set($logoUrl = $doc.getAttachmentURL('tidylab-logo.svg'))
5 5   {{/velocity}}
4 +(% class="tl-hero" %)
5 +(((
6 +(% class="tl-hero-top" %)
7 +(((
8 +(% class="tl-hero-center" %)
9 +(((
10 +(% class="tl-hero-title" %)
11 += Tidy-Lab Cloud Platform =
12 +)))
13 +)))
6 6  
7 - {{html clean="false" wiki="false"}}
8 - <div class="tl-hero">
9 - <div class="tl-hero-top">
10 - <div class="tl-hero-logo-bar">
11 - <img src="$escapetool.xml($logoUrl)" alt="Tidy-Lab" class="tl-hero-logo-img" />
12 - </div>
13 - <div class="tl-hero-center">
14 - <h1 class="tl-hero-title">Tidy-Lab Cloud Platform</h1>
15 - </div>
16 - </div>
17 - <div class="tl-hero-bottom">
18 - <p class="tl-hero-tagline">data &middot; done &middot; better</p>
19 - </div>
20 - <a href="#tl-content" class="tl-hero-scroll">&#x25BC;</a>
21 - </div>
22 - <div id="tl-content"></div>
23 - {{/html}}
15 +(% class="tl-hero-bottom" %)
16 +(((
17 +(% class="tl-hero-tagline" %)
18 +data · done · better
19 +)))
24 24  
25 - == Welcome ==
21 +[[▼>>path:#tl-content||class="tl-hero-scroll"]]
22 +)))
26 26  
24 +(% id="tl-content" %)
25 +(((
26 +
27 +)))
28 +
29 +
30 +== Welcome ==
31 +
27 27   Welcome to the **Tidy-Lab Cloud Platform** community wiki.
28 28  
29 29   Tidy-Lab is a secure research platform that connects inventory, experiments and workflows in one place — making your results traceable, reproducible and audit-ready.
XWiki.StyleSheetExtension[0]
code
... ... @@ -1,1 +1,237 @@
1 -/* ========================================================================== Tidy-Lab Homepage — Full-Page Hero Targets exact XWiki 18.1 Flamingo DOM element IDs. ========================================================================== *//* Chrome elements: hidden initially */.tl-hero-page:not(.tl-scrolled) #menuview,.tl-hero-page:not(.tl-scrolled) #headerglobal,.tl-hero-page:not(.tl-scrolled) #hierarchy_breadcrumb,.tl-hero-page:not(.tl-scrolled) .document-header,.tl-hero-page:not(.tl-scrolled) #xdocFooter,.tl-hero-page:not(.tl-scrolled) #xwikidata,.tl-hero-page:not(.tl-scrolled) #footerglobal,.tl-hero-page:not(.tl-scrolled) .skip-nav { display: none !important;}/* When fading in, switch to opacity */.tl-hero-page.tl-fading #menuview,.tl-hero-page.tl-fading #headerglobal,.tl-hero-page.tl-fading #hierarchy_breadcrumb,.tl-hero-page.tl-fading .document-header,.tl-hero-page.tl-fading #xdocFooter,.tl-hero-page.tl-fading #xwikidata,.tl-hero-page.tl-fading #footerglobal,.tl-hero-page.tl-fading .skip-nav { display: block !important;}.tl-hero-page.tl-fading .document-header { display: flex !important;}/* Sticky navbar once visible */.tl-hero-page.tl-fading #menuview,.tl-hero-page.tl-scrolled #menuview { position: fixed !important; top: 0; left: 0; width: 100%; z-index: 1030; overflow: hidden;}/* Prevent horizontal overflow */html, body.tl-hero-page,.tl-hero-page #xwikimaincontainer,.tl-hero-page #xwikimaincontainerinner { overflow-x: hidden !important;}/* Reset containers for full-bleed hero */.tl-hero-page:not(.tl-scrolled) #xwikimaincontainer,.tl-hero-page:not(.tl-scrolled) #xwikimaincontainerinner,.tl-hero-page:not(.tl-scrolled) #contentcontainer,.tl-hero-page:not(.tl-scrolled) #contentcolumn,.tl-hero-page:not(.tl-scrolled) .main,.tl-hero-page:not(.tl-scrolled) #mainContentArea,.tl-hero-page:not(.tl-scrolled) #xwikicontent { margin: 0 !important; padding: 0 !important; width: 100% !important; max-width: 100% !important;}.tl-hero-page:not(.tl-scrolled) #mainContentArea > hr { display: none !important;}.tl-hero-page:not(.tl-scrolled) #xwikicontent > .row { margin: 0 !important;}body.tl-hero-page:not(.tl-scrolled) { padding-top: 0 !important; margin-top: 0 !important;}/* Hero Section */.tl-hero { position: relative; min-height: 100vh; width: 100%; display: flex; flex-direction: column; overflow: hidden;}.tl-hero-top { flex: 1; background-color: #2D2B55; display: flex; flex-direction: column; justify-content: flex-end; align-items: center; position: relative !important; padding-bottom: 30px; overflow: visible;}.tl-hero-bottom { flex: 1; background-color: #FFFFFF; display: flex; flex-direction: column; justify-content: flex-start; align-items: center; padding-top: 20px;}.tl-hero-logo-bar { position: absolute; top: 30px; left: 40px; z-index: 2;}.tl-hero-logo-img { max-width: 240px; height: auto; filter: brightness(1.8) saturate(1.2);}.tl-hero-center { text-align: center; padding: 0 20px;}.tl-hero-title { color: #FFFFFF !important; font-family: "Calibri Light", "Calibri", "Segoe UI Light", "Segoe UI", sans-serif !important; font-weight: 300 !important; font-size: 56px !important; letter-spacing: 1px; margin: 0 !important; text-shadow: 0 2px 10px rgba(0, 0, 0, 0.3);}.tl-hero-tagline { color: #7B78FF; font-family: "Calibri", "Segoe UI", sans-serif; font-size: 22px; font-weight: 300; letter-spacing: 8px; text-transform: lowercase; margin: 0;}.tl-hero-scroll { position: absolute; bottom: 30px; left: 50%; transform: translateX(-50%); color: rgba(123, 120, 255, 0.6); font-size: 24px; text-decoration: none; animation: tl-bounce 2s ease infinite; z-index: 2;}.tl-hero-scroll:hover { color: #7B78FF; text-decoration: none;}@keyframes tl-bounce { 0%, 20%, 50%, 80%, 100% { transform: translateX(-50%) translateY(0); } 40% { transform: translateX(-50%) translateY(-12px); } 60% { transform: translateX(-50%) translateY(-6px); }}/* Content below hero */#tl-content { scroll-margin-top: 70px;}#tl-content ~ h2,#tl-content ~ h3,#tl-content ~ p,#tl-content ~ ul,#tl-content ~ ol,#tl-content ~ table,#tl-content ~ div { max-width: 1000px; margin-left: auto; margin-right: auto; padding-left: 20px; padding-right: 20px;}/* Responsive */@media (max-width: 992px) { .tl-hero-title { font-size: 40px !important; } .tl-hero-tagline { font-size: 18px; letter-spacing: 6px; } .tl-hero-logo-img { max-width: 180px; } .tl-hero-logo-bar { top: 20px; left: 20px; } .tl-hero-top { padding-bottom: 24px; } .tl-hero-bottom { padding-top: 16px; }}@media (max-width: 576px) { .tl-hero-title { font-size: 28px !important; } .tl-hero-tagline { font-size: 14px; letter-spacing: 4px; } .tl-hero-logo-img { max-width: 140px; } .tl-hero-logo-bar { top: 15px; left: 15px; } .tl-hero-scroll { bottom: 15px; } .tl-hero-top { padding-bottom: 20px; } .tl-hero-bottom { padding-top: 12px; }}/* Print: skip hero */@media print { .tl-hero { display: none; }}
1 + /* ==========================================================================
2 + Tidy-Lab Homepage — Full-Page Hero
3 + Targets exact XWiki 18.1 Flamingo DOM element IDs.
4 + ========================================================================== */
5 +
6 + /* ==========================================================================
7 + Phase 1: HERO VISIBLE — hide chrome, full-bleed layout
8 + ========================================================================== */
9 +
10 + /* Chrome elements: hidden initially with display:none (no space taken) */
11 + .tl-hero-page:not(.tl-scrolled) #menuview,
12 + .tl-hero-page:not(.tl-scrolled) #headerglobal,
13 + .tl-hero-page:not(.tl-scrolled) #hierarchy_breadcrumb,
14 + .tl-hero-page:not(.tl-scrolled) .document-header,
15 + .tl-hero-page:not(.tl-scrolled) #xdocFooter,
16 + .tl-hero-page:not(.tl-scrolled) #xwikidata,
17 + .tl-hero-page:not(.tl-scrolled) #footerglobal,
18 + .tl-hero-page:not(.tl-scrolled) .skip-nav {
19 + display: none !important;
20 + }
21 +
22 + /* When fading in (JS adds tl-fading), switch to opacity-based visibility */
23 + .tl-hero-page.tl-fading #menuview,
24 + .tl-hero-page.tl-fading #headerglobal,
25 + .tl-hero-page.tl-fading #hierarchy_breadcrumb,
26 + .tl-hero-page.tl-fading .document-header,
27 + .tl-hero-page.tl-fading #xdocFooter,
28 + .tl-hero-page.tl-fading #xwikidata,
29 + .tl-hero-page.tl-fading #footerglobal,
30 + .tl-hero-page.tl-fading .skip-nav {
31 + display: block !important;
32 + }
33 +
34 + .tl-hero-page.tl-fading .document-header {
35 + display: flex !important;
36 + }
37 +
38 + /* Sticky navbar once visible */
39 + .tl-hero-page.tl-fading #menuview,
40 + .tl-hero-page.tl-scrolled #menuview {
41 + position: fixed !important;
42 + top: 0;
43 + left: 0;
44 + width: 100%;
45 + z-index: 1030;
46 + overflow: hidden;
47 + }
48 +
49 + /* Prevent any horizontal overflow */
50 + html, body.tl-hero-page,
51 + .tl-hero-page #xwikimaincontainer,
52 + .tl-hero-page #xwikimaincontainerinner {
53 + overflow-x: hidden !important;
54 + }
55 +
56 + /* Reset containers for full-bleed hero — only while hero is visible */
57 + .tl-hero-page:not(.tl-scrolled) #xwikimaincontainer,
58 + .tl-hero-page:not(.tl-scrolled) #xwikimaincontainerinner,
59 + .tl-hero-page:not(.tl-scrolled) #contentcontainer,
60 + .tl-hero-page:not(.tl-scrolled) #contentcolumn,
61 + .tl-hero-page:not(.tl-scrolled) .main,
62 + .tl-hero-page:not(.tl-scrolled) #mainContentArea,
63 + .tl-hero-page:not(.tl-scrolled) #xwikicontent {
64 + margin: 0 !important;
65 + padding: 0 !important;
66 + width: 100% !important;
67 + max-width: 100% !important;
68 + }
69 +
70 + .tl-hero-page:not(.tl-scrolled) #mainContentArea > hr {
71 + display: none !important;
72 + }
73 +
74 + .tl-hero-page:not(.tl-scrolled) #xwikicontent > .row {
75 + margin: 0 !important;
76 + }
77 +
78 + body.tl-hero-page:not(.tl-scrolled) {
79 + padding-top: 0 !important;
80 + margin-top: 0 !important;
81 + }
82 +
83 + /* ==========================================================================
84 + Hero Section — ALWAYS full viewport width, even after scroll
85 + ========================================================================== */
86 + .tl-hero {
87 + position: relative;
88 + min-height: 100vh;
89 + width: 100%;
90 + display: flex;
91 + flex-direction: column;
92 + overflow: hidden;
93 + }
94 +
95 + /* --- Top half: dark purple --- */
96 + .tl-hero-top {
97 + flex: 1;
98 + background-color: #2D2B55;
99 + display: flex;
100 + flex-direction: column;
101 + justify-content: flex-end;
102 + align-items: center;
103 + position: relative !important;
104 + padding-bottom: 30px;
105 + overflow: visible;
106 + }
107 +
108 + /* --- Bottom half: white --- */
109 + .tl-hero-bottom {
110 + flex: 1;
111 + background-color: #FFFFFF;
112 + display: flex;
113 + flex-direction: column;
114 + justify-content: flex-start;
115 + align-items: center;
116 + padding-top: 20px;
117 + }
118 +
119 + /* --- Logo bar (top-left) --- */
120 + .tl-hero-logo-bar {
121 + position: absolute;
122 + top: 30px;
123 + left: 40px;
124 + z-index: 2;
125 + }
126 +
127 + .tl-hero-logo-img {
128 + max-width: 240px;
129 + height: auto;
130 + filter: brightness(1.8) saturate(1.2);
131 + }
132 +
133 + /* --- Centered title --- */
134 + .tl-hero-center {
135 + text-align: center;
136 + padding: 0 20px;
137 + }
138 +
139 + .tl-hero-title {
140 + color: #FFFFFF !important;
141 + font-family: "Calibri Light", "Calibri", "Segoe UI Light", "Segoe UI", sans-serif !important;
142 + font-weight: 300 !important;
143 + font-size: 56px !important;
144 + letter-spacing: 1px;
145 + margin: 0 !important;
146 + text-shadow: 0 2px 10px rgba(0, 0, 0, 0.3);
147 + }
148 +
149 + /* --- Tagline --- */
150 + .tl-hero-tagline {
151 + color: #7B78FF;
152 + font-family: "Calibri", "Segoe UI", sans-serif;
153 + font-size: 22px;
154 + font-weight: 300;
155 + letter-spacing: 8px;
156 + text-transform: lowercase;
157 + margin: 0;
158 + }
159 +
160 + /* --- Scroll indicator --- */
161 + .tl-hero-scroll {
162 + position: absolute;
163 + bottom: 30px;
164 + left: 50%;
165 + transform: translateX(-50%);
166 + color: rgba(123, 120, 255, 0.6);
167 + font-size: 24px;
168 + text-decoration: none;
169 + animation: tl-bounce 2s ease infinite;
170 + z-index: 2;
171 + }
172 +
173 + .tl-hero-scroll:hover {
174 + color: #7B78FF;
175 + text-decoration: none;
176 + }
177 +
178 + @keyframes tl-bounce {
179 + 0%, 20%, 50%, 80%, 100% { transform: translateX(-50%) translateY(0); }
180 + 40% { transform: translateX(-50%) translateY(-12px); }
181 + 60% { transform: translateX(-50%) translateY(-6px); }
182 + }
183 +
184 + /* ==========================================================================
185 + Content area below hero — restore normal layout
186 + ========================================================================== */
187 + #tl-content {
188 + scroll-margin-top: 70px;
189 + }
190 +
191 + #tl-content ~ h2,
192 + #tl-content ~ h3,
193 + #tl-content ~ p,
194 + #tl-content ~ ul,
195 + #tl-content ~ ol,
196 + #tl-content ~ table,
197 + #tl-content ~ div {
198 + max-width: 1000px;
199 + margin-left: auto;
200 + margin-right: auto;
201 + padding-left: 20px;
202 + padding-right: 20px;
203 + }
204 +
205 + /* ==========================================================================
206 + Responsive
207 + ========================================================================== */
208 + @media (max-width: 992px) {
209 + .tl-hero-title { font-size: 40px !important; }
210 + .tl-hero-tagline { font-size: 18px; letter-spacing: 6px; }
211 + .tl-hero-logo-img { max-width: 180px; }
212 + .tl-hero-logo-bar { top: 20px; left: 20px; }
213 + .tl-hero-top { padding-bottom: 24px; }
214 + .tl-hero-bottom { padding-top: 16px; }
215 + }
216 +
217 + @media (max-width: 576px) {
218 + .tl-hero-title { font-size: 28px !important; }
219 + .tl-hero-tagline { font-size: 14px; letter-spacing: 4px; }
220 + .tl-hero-logo-img { max-width: 140px; }
221 + .tl-hero-logo-bar { top: 15px; left: 15px; }
222 + .tl-hero-scroll { bottom: 15px; }
223 + .tl-hero-top { padding-bottom: 20px; }
224 + .tl-hero-bottom { padding-top: 12px; }
225 + }
226 +
227 + /* --- Print: skip hero --- */
228 + @media print {
229 + .tl-hero { display: none; }
230 + .tl-hero-page #tmHeader,
231 + .tl-hero-page .navbar,
232 + .tl-hero-page #hierarchy {
233 + opacity: 1;
234 + pointer-events: auto;
235 + }
236 + }
237 +