Changes for page Sandbox Test Page 3
Last modified by Jareth Carpenter on 2026/08/20 22:29
From version 34.1
edited by Jareth Carpenter
on 2026/08/17 16:26
on 2026/08/17 16:26
Change comment:
There is no comment for this version
To version 28.1
edited by Jareth Carpenter
on 2026/08/17 14:07
on 2026/08/17 14:07
Change comment:
There is no comment for this version
Summary
-
Page properties (1 modified, 0 added, 0 removed)
Details
- Page properties
-
- Content
-
... ... @@ -1,301 +1,356 @@ 1 +Click on **"Edit"** and modify the contents of this page, then click on **"Save & View"** to see how they look like on your page! 2 + 3 += Here's some dummy text to show you what the page looks like = 4 + 5 +Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. 6 + 7 + 8 +I am going to use this for checking edits to the main page before saving 9 + 10 + 1 1 {{html clean="false"}} 2 - {{html clean="false"}}12 + 3 3 <!-- 4 -============================================================ 5 -FirstDigital - Learning Center Menu (XWiki fragment) 6 -============================================================ 14 + ============================================================ 15 + FirstDigital - Learning Center Menu (XWiki fragment) 16 + ============================================================ 7 7 8 -HOW TO USE 9 -1. Edit the wiki page in SOURCE / WIKI mode (never WYSIWYG). 10 -2. Select all existing page content and delete it. 11 -3. Paste: 18 + HOW TO USE 19 + 1. Edit the wiki page in SOURCE / WIKI mode (never WYSIWYG). 20 + 2. Select all existing page content and delete it. 21 + 3. Paste: 12 12 13 -4. Save & View. 23 + {{html clean="false"}} 24 + ...everything in this file... 25 + {{/html}} 14 14 15 -IMPORTANT 16 -- This file is a FRAGMENT. It deliberately contains no DOCTYPE 17 - declaration and no html / head / body elements. Everything is 18 - scoped inside .fdm-hub so it cannot leak into the wiki theme. 19 -- After saving, only ever re-edit this page in SOURCE mode. 20 - Opening it in the WYSIWYG editor and saving can duplicate the 21 - content, because XWiki may expand the macro output into the page 22 - body while also keeping the macro itself. 23 -- All six links are unchanged from your original page, including 24 - the ?oidc.skipped= parameters on the two footer links. 25 -- Product logos still load from your wiki. The five photographs 26 - are embedded (base64) from the Brand Guide 2025, p.13, so they 27 - need no hosting. To swap one for a hosted image instead, replace 28 - that img's src="data:image/jpeg;base64,..." with a URL. 29 -============================================================--> 27 + 4. Save & View. 28 + 29 + IMPORTANT 30 + - This file is a FRAGMENT. It deliberately contains no DOCTYPE 31 + declaration and no html / head / body elements. Everything is 32 + scoped inside .fdm-hub so it cannot leak into the wiki theme. 33 + - After saving, only ever re-edit this page in SOURCE mode. 34 + Opening it in the WYSIWYG editor and saving can duplicate the 35 + content, because XWiki may expand the macro output into the page 36 + body while also keeping the macro itself. 37 + - All six links are unchanged from your original page, including 38 + the ?oidc.skipped= parameters on the two footer links. 39 + - Product logos still load from your wiki. The five photographs 40 + are embedded (base64) from the Brand Guide 2025, p.13, so they 41 + need no hosting. To swap one for a hosted image instead, replace 42 + that img's src="data:image/jpeg;base64,..." with a URL. 43 + ============================================================ 44 +--> 30 30 <style> 31 31 @import url('https://fonts.googleapis.com/css2?family=Host+Grotesk:wght@300;400;600;800&display=swap'); 32 -/* Safety net: if the wiki ever renders this block twice, 33 - show only the first copy. */ 34 -.fdm-hub ~ .fdm-hub { display: none !important; } 35 -/* ---- FirstDigital brand tokens (Brand Guide 2025, p.11) ---- */ 36 -.fdm-hub { 37 - --fd-navy: #003366; /* headlines, backgrounds, icons */ 38 - --fd-blue: #307ab2; /* headlines, backgrounds, icons */ 39 - --fd-blue-bright: #38b2e3; /* stand-out headlines, icons */ 40 - --fd-red: #cf333d; /* accents - use selectively */ 41 - --fd-body: #2e404d; /* paragraph text */ 42 - --fd-secondary: #8f9499; /* secondary text */ 43 - --fd-bg-mid: #dedede; /* backgrounds */ 44 - --fd-bg-light: #f0f0f0; /* backgrounds */ 45 - --fd-white: #ffffff; 46 - --ms-azure: #0078d4; /* Microsoft's own brand blue */ 47 -} 48 -.fdm-hub, .fdm-hub * { box-sizing: border-box; } 49 -.fdm-hub { 50 - font-family: 'Host Grotesk', 'Segoe UI', -apple-system, 51 -BlinkMacSystemFont, Arial, sans-serif; 52 - font-weight: 300; 53 - color: var(--fd-body); 54 - background: var(--fd-white); 55 - max-width: 1000px; 56 - margin: 0 auto; 57 - padding: 0 20px 28px; 58 - -webkit-font-smoothing: antialiased; 59 -} 60 -/* ---- Masthead: full-colour logo on white (Logo Rules, p.10) ---- */ 61 -.fdm-masthead { 62 - display: flex; 63 - align-items: center; 64 - justify-content: space-between; 65 - gap: 20px; 66 - flex-wrap: wrap; 67 - padding: 22px 0 18px; 68 - border-bottom: 1px solid var(--fd-bg-mid); 69 -} 70 -.fdm-masthead img { height: 46px; width: auto; display: block; } 71 -.fdm-masthead-label { 72 - font-size: 12px; 73 - font-weight: 600; 74 - letter-spacing: 0.16em; 75 - text-transform: uppercase; 76 - color: var(--fd-secondary); 77 - white-space: nowrap; 78 -} 79 -/* ---- Hero ---- */ 80 -.fdm-hero { 81 - position: relative; 82 - margin-top: 22px; 83 - border-radius: 6px; 84 - overflow: hidden; 85 - min-height: 250px; 86 - display: flex; 87 - align-items: flex-end; 88 -} 89 -.fdm-hero-img { 90 - position: absolute; 91 - top: 0; right: 0; bottom: 0; left: 0; 92 - width: 100%; height: 100%; 93 - object-fit: cover; 94 - display: block; 95 -} 96 -/* explicit offsets, not the inset shorthand, for wider support */ 97 -.fdm-hero::after { 98 - content: ""; 99 - position: absolute; 100 - top: 0; right: 0; bottom: 0; left: 0; 101 - background: linear-gradient(100deg, 102 - rgba(0,51,102,0.94) 0%, 103 - rgba(0,51,102,0.86) 42%, 104 - rgba(0,51,102,0.30) 100%); 105 -} 106 -.fdm-hero-inner { 107 - position: relative; 108 - z-index: 1; 109 - padding: 32px 32px 30px; 110 - max-width: 600px; 111 -} 112 -/* red rule = brand accent motif (Brand Guide p.4) */ 113 -.fdm-rule { 114 - width: 62px; height: 4px; 115 - background: var(--fd-red); 116 - border: 0; 117 - margin: 0 0 16px; 118 -} 119 -.fdm-eyebrow { 120 - font-size: 12px; 121 - font-weight: 600; 122 - letter-spacing: 0.18em; 123 - text-transform: uppercase; 124 - color: var(--fd-blue-bright); 125 - margin-bottom: 9px; 126 -} 127 -.fdm-hero h1 { 128 - font-size: clamp(26px, 3.6vw, 36px); 129 - font-weight: 800; 130 - line-height: 1.14; 131 - letter-spacing: -0.01em; 132 - color: var(--fd-white); 133 - margin: 0 0 11px; 134 -} 135 -.fdm-hero p { 136 - font-size: 15px; 137 - font-weight: 300; 138 - line-height: 1.6; 139 - color: #dbe6ef; 140 - margin: 0; 141 - max-width: 470px; 142 -} 143 -/* ---- Card grid ---- */ 144 -.fdm-grid { 145 - display: grid; 146 - grid-template-columns: repeat(2, 1fr); 147 - gap: 22px; 148 - margin-top: 24px; 149 -} 150 -.fdm-card { 151 - display: flex; 152 - flex-direction: column; 153 - background: var(--fd-white); 154 - border: 1px solid var(--fd-bg-mid); 155 - border-radius: 6px; 156 - overflow: hidden; 157 - text-decoration: none !important; 158 - color: inherit; 159 - height: 100%; 160 - transition: transform .2s ease, box-shadow .2s ease, border-color.2s ease; 161 -} 162 -.fdm-card:hover { 163 - transform: translateY(-3px); 164 - border-color: var(--fd-blue-bright); 165 - box-shadow: 0 12px 26px rgba(0,51,102,0.14); 166 -} 167 -.fdm-card:focus-visible { 168 - outline: 3px solid var(--fd-blue-bright); 169 - outline-offset: 2px; 170 -} 171 -.fdm-media { 172 - position: relative; 173 - height: 132px; 174 - background: var(--fd-bg-light); 175 - flex: 0 0 auto; 176 - /* no overflow:hidden here - the logo badge overhangs the bottom 177 - edge on purpose. The photo is already clipped by object-fit, 178 - and .fdm-card's own overflow:hidden keeps the rounded corners. */ 179 -} 180 -.fdm-media img { 181 - width: 100%; height: 100%; 182 - object-fit: cover; 183 - display: block; 184 -} 185 -.fdm-media::after { 186 - content: ""; 187 - position: absolute; 188 - top: 0; right: 0; bottom: 0; left: 0; 189 - background: linear-gradient(180deg, 190 - rgba(0,51,102,0.06) 0%, rgba(0,40,79,0.52) 100%); 191 -} 192 -/* white badge keeps every logo brand-legal over a photo (p.10) */ 193 -.fdm-badge { 194 - position: absolute; 195 - left: 18px; 196 - bottom: 0; 197 - z-index: 1; 198 - transform: translateY(50%); 199 - width: 58px; height: 58px; 200 - border-radius: 8px; 201 - background: var(--fd-white); 202 - box-shadow: 0 5px 14px rgba(0,0,0,0.18); 203 - display: flex; 204 - align-items: center; 205 - justify-content: center; 206 - overflow: hidden; 207 -} 208 -.fdm-badge img { object-fit: contain; display: block; } 209 -.fdm-logo-webex { width: 74%; height: auto; } 210 -.fdm-logo-teams { width: 64%; height: auto; } 211 -.fdm-logo-firstdigital { width: 84%; height: auto; } 212 -/* icons: dark-blue stroke, bright-blue accent (Brand Guide p.14) */ 213 -.fdm-badge svg { 214 - width: 26px; height: 26px; 215 - fill: none; 216 - stroke: var(--fd-navy); 217 - stroke-width: 1.7; 218 - stroke-linecap: round; 219 - stroke-linejoin: round; 220 -} 221 -.fdm-badge svg .accent { stroke: var(--fd-blue-bright); } 222 -.fdm-body { 223 - padding: 38px 22px 22px; 224 - display: flex; 225 - flex-direction: column; 226 - flex: 1 1 auto; 227 -} 228 -.fdm-title { 229 - display: block; 230 - font-size: 16.5px; 231 - font-weight: 800; 232 - line-height: 1.28; 233 - color: var(--fd-navy); 234 -} 235 -.fdm-sub { 236 - display: block; 237 - font-size: 13.5px; 238 - font-weight: 300; 239 - line-height: 1.55; 240 - color: var(--fd-body); 241 - margin-top: 5px; 242 -} 243 -.fdm-cta { 244 - display: flex; 245 - align-items: center; 246 - gap: 7px; 247 - margin-top: auto; 248 - padding-top: 16px; 249 - font-size: 13px; 250 - font-weight: 600; 251 - color: var(--fd-red); 252 -} 253 -.fdm-cta svg { 254 - width: 15px; height: 15px; 255 - fill: none; 256 - stroke: var(--fd-red); 257 - stroke-width: 2; 258 - stroke-linecap: round; 259 - stroke-linejoin: round; 260 - transition: transform .2s ease; 261 -} 262 -.fdm-card:hover .fdm-cta svg { transform: translateX(4px); } 263 -/* ---- Footer ---- */ 264 -.fdm-footer { 265 - margin-top: 32px; 266 - padding-top: 18px; 267 - border-top: 1px solid var(--fd-bg-mid); 268 - display: flex; 269 - justify-content: center; 270 - align-items: center; 271 - flex-wrap: wrap; 272 - gap: 14px; 273 - font-size: 13px; 274 -} 275 -.fdm-footer a { 276 - font-weight: 600; 277 - text-decoration: none !important; 278 - color: var(--fd-blue); 279 -} 280 -.fdm-footer a:hover { text-decoration: underline !important; } 281 -.fdm-footer a:focus-visible { 282 - outline: 2px solid var(--fd-blue-bright); 283 - outline-offset: 3px; 284 -} 285 -.fdm-brand-first { color: var(--fd-blue); } 286 -.fdm-brand-second { color: var(--fd-navy); } 287 -.fdm-azure { color: var(--ms-azure); } 288 -.fdm-divider { color: var(--fd-bg-mid); font-weight: 300; } 289 -@media (max-width: 768px) { 290 - .fdm-grid { grid-template-columns: 1fr; } 291 - .fdm-hub { padding: 0 12px 22px; } 292 - .fdm-masthead img { height: 38px; } 293 - .fdm-hero { min-height: 220px; } 294 - .fdm-hero-inner { padding: 24px 22px 22px; } 295 -} 296 -@media (prefers-reduced-motion: reduce) { 297 - .fdm-card, .fdm-cta svg { transition: none; } 298 -} 47 + 48 + /* Safety net: if the wiki ever renders this block twice, 49 + show only the first copy. */ 50 + .fdm-hub ~ .fdm-hub { display: none !important; } 51 + 52 + /* ---- FirstDigital brand tokens (Brand Guide 2025, p.11) ---- */ 53 + .fdm-hub { 54 + --fd-navy: #003366; /* headlines, backgrounds, icons */ 55 + --fd-blue: #307ab2; /* headlines, backgrounds, icons */ 56 + --fd-blue-bright: #38b2e3; /* stand-out headlines, icons */ 57 + --fd-red: #cf333d; /* accents - use selectively */ 58 + --fd-body: #2e404d; /* paragraph text */ 59 + --fd-secondary: #8f9499; /* secondary text */ 60 + --fd-bg-mid: #dedede; /* backgrounds */ 61 + --fd-bg-light: #f0f0f0; /* backgrounds */ 62 + --fd-white: #ffffff; 63 + --ms-azure: #0078d4; /* Microsoft's own brand blue */ 64 + } 65 + 66 + .fdm-hub, .fdm-hub * { box-sizing: border-box; } 67 + 68 + .fdm-hub { 69 + font-family: 'Host Grotesk', 'Segoe UI', -apple-system, BlinkMacSystemFont, Arial, sans-serif; 70 + font-weight: 300; 71 + color: var(--fd-body); 72 + background: var(--fd-white); 73 + max-width: 1000px; 74 + margin: 0 auto; 75 + padding: 0 20px 28px; 76 + -webkit-font-smoothing: antialiased; 77 + } 78 + 79 + /* ---- Masthead: full-colour logo on white (Logo Rules, p.10) ---- */ 80 + .fdm-masthead { 81 + display: flex; 82 + align-items: center; 83 + justify-content: space-between; 84 + gap: 20px; 85 + flex-wrap: wrap; 86 + padding: 22px 0 18px; 87 + border-bottom: 1px solid var(--fd-bg-mid); 88 + } 89 + 90 + .fdm-masthead img { height: 46px; width: auto; display: block; } 91 + 92 + .fdm-masthead-label { 93 + font-size: 12px; 94 + font-weight: 600; 95 + letter-spacing: 0.16em; 96 + text-transform: uppercase; 97 + color: var(--fd-secondary); 98 + white-space: nowrap; 99 + } 100 + 101 + /* ---- Hero ---- */ 102 + .fdm-hero { 103 + position: relative; 104 + margin-top: 22px; 105 + border-radius: 6px; 106 + overflow: hidden; 107 + min-height: 250px; 108 + display: flex; 109 + align-items: flex-end; 110 + } 111 + 112 + .fdm-hero-img { 113 + position: absolute; 114 + top: 0; right: 0; bottom: 0; left: 0; 115 + width: 100%; height: 100%; 116 + object-fit: cover; 117 + display: block; 118 + } 119 + 120 + /* explicit offsets, not the inset shorthand, for wider support */ 121 + .fdm-hero::after { 122 + content: ""; 123 + position: absolute; 124 + top: 0; right: 0; bottom: 0; left: 0; 125 + background: linear-gradient(100deg, 126 + rgba(0,51,102,0.94) 0%, 127 + rgba(0,51,102,0.86) 42%, 128 + rgba(0,51,102,0.30) 100%); 129 + } 130 + 131 + .fdm-hero-inner { 132 + position: relative; 133 + z-index: 1; 134 + padding: 32px 32px 30px; 135 + max-width: 600px; 136 + } 137 + 138 + /* red rule = brand accent motif (Brand Guide p.4) */ 139 + .fdm-rule { 140 + width: 62px; height: 4px; 141 + background: var(--fd-red); 142 + border: 0; 143 + margin: 0 0 16px; 144 + } 145 + 146 + .fdm-eyebrow { 147 + font-size: 12px; 148 + font-weight: 600; 149 + letter-spacing: 0.18em; 150 + text-transform: uppercase; 151 + color: var(--fd-blue-bright); 152 + margin-bottom: 9px; 153 + } 154 + 155 + .fdm-hero h1 { 156 + font-size: clamp(26px, 3.6vw, 36px); 157 + font-weight: 800; 158 + line-height: 1.14; 159 + letter-spacing: -0.01em; 160 + color: var(--fd-white); 161 + margin: 0 0 11px; 162 + } 163 + 164 + .fdm-hero p { 165 + font-size: 15px; 166 + font-weight: 300; 167 + line-height: 1.6; 168 + color: #dbe6ef; 169 + margin: 0; 170 + max-width: 470px; 171 + } 172 + 173 + /* ---- Card grid ---- */ 174 + .fdm-grid { 175 + display: grid; 176 + grid-template-columns: repeat(2, 1fr); 177 + gap: 22px; 178 + margin-top: 24px; 179 + } 180 + 181 + .fdm-card { 182 + display: flex; 183 + flex-direction: column; 184 + background: var(--fd-white); 185 + border: 1px solid var(--fd-bg-mid); 186 + border-radius: 6px; 187 + overflow: hidden; 188 + text-decoration: none !important; 189 + color: inherit; 190 + height: 100%; 191 + transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease; 192 + } 193 + 194 + .fdm-card:hover { 195 + transform: translateY(-3px); 196 + border-color: var(--fd-blue-bright); 197 + box-shadow: 0 12px 26px rgba(0,51,102,0.14); 198 + } 199 + 200 + .fdm-card:focus-visible { 201 + outline: 3px solid var(--fd-blue-bright); 202 + outline-offset: 2px; 203 + } 204 + 205 + .fdm-media { 206 + position: relative; 207 + height: 132px; 208 + background: var(--fd-bg-light); 209 + flex: 0 0 auto; 210 + /* no overflow:hidden here - the logo badge overhangs the bottom 211 + edge on purpose. The photo is already clipped by object-fit, 212 + and .fdm-card's own overflow:hidden keeps the rounded corners. */ 213 + } 214 + 215 + .fdm-media img { 216 + width: 100%; height: 100%; 217 + object-fit: cover; 218 + display: block; 219 + } 220 + 221 + .fdm-media::after { 222 + content: ""; 223 + position: absolute; 224 + top: 0; right: 0; bottom: 0; left: 0; 225 + background: linear-gradient(180deg, 226 + rgba(0,51,102,0.06) 0%, rgba(0,40,79,0.52) 100%); 227 + } 228 + 229 + /* white badge keeps every logo brand-legal over a photo (p.10) */ 230 + .fdm-badge { 231 + position: absolute; 232 + left: 18px; 233 + bottom: 0; 234 + z-index: 1; 235 + transform: translateY(50%); 236 + width: 58px; height: 58px; 237 + border-radius: 8px; 238 + background: var(--fd-white); 239 + box-shadow: 0 5px 14px rgba(0,0,0,0.18); 240 + display: flex; 241 + align-items: center; 242 + justify-content: center; 243 + overflow: hidden; 244 + } 245 + 246 + .fdm-badge img { object-fit: contain; display: block; } 247 + 248 + .fdm-logo-webex { width: 74%; height: auto; } 249 + .fdm-logo-teams { width: 64%; height: auto; } 250 + .fdm-logo-firstdigital { width: 84%; height: auto; } 251 + 252 + /* icons: dark-blue stroke, bright-blue accent (Brand Guide p.14) */ 253 + .fdm-badge svg { 254 + width: 26px; height: 26px; 255 + fill: none; 256 + stroke: var(--fd-navy); 257 + stroke-width: 1.7; 258 + stroke-linecap: round; 259 + stroke-linejoin: round; 260 + } 261 + 262 + .fdm-badge svg .accent { stroke: var(--fd-blue-bright); } 263 + 264 + .fdm-body { 265 + padding: 38px 22px 22px; 266 + display: flex; 267 + flex-direction: column; 268 + flex: 1 1 auto; 269 + } 270 + 271 + .fdm-title { 272 + display: block; 273 + font-size: 16.5px; 274 + font-weight: 800; 275 + line-height: 1.28; 276 + color: var(--fd-navy); 277 + } 278 + 279 + .fdm-sub { 280 + display: block; 281 + font-size: 13.5px; 282 + font-weight: 300; 283 + line-height: 1.55; 284 + color: var(--fd-body); 285 + margin-top: 5px; 286 + } 287 + 288 + .fdm-cta { 289 + display: flex; 290 + align-items: center; 291 + gap: 7px; 292 + margin-top: auto; 293 + padding-top: 16px; 294 + font-size: 13px; 295 + font-weight: 600; 296 + color: var(--fd-red); 297 + } 298 + 299 + .fdm-cta svg { 300 + width: 15px; height: 15px; 301 + fill: none; 302 + stroke: var(--fd-red); 303 + stroke-width: 2; 304 + stroke-linecap: round; 305 + stroke-linejoin: round; 306 + transition: transform .2s ease; 307 + } 308 + 309 + .fdm-card:hover .fdm-cta svg { transform: translateX(4px); } 310 + 311 + /* ---- Footer ---- */ 312 + .fdm-footer { 313 + margin-top: 32px; 314 + padding-top: 18px; 315 + border-top: 1px solid var(--fd-bg-mid); 316 + display: flex; 317 + justify-content: center; 318 + align-items: center; 319 + flex-wrap: wrap; 320 + gap: 14px; 321 + font-size: 13px; 322 + } 323 + 324 + .fdm-footer a { 325 + font-weight: 600; 326 + text-decoration: none !important; 327 + color: var(--fd-blue); 328 + } 329 + 330 + .fdm-footer a:hover { text-decoration: underline !important; } 331 + 332 + .fdm-footer a:focus-visible { 333 + outline: 2px solid var(--fd-blue-bright); 334 + outline-offset: 3px; 335 + } 336 + 337 + .fdm-brand-first { color: var(--fd-blue); } 338 + .fdm-brand-second { color: var(--fd-navy); } 339 + .fdm-azure { color: var(--ms-azure); } 340 + .fdm-divider { color: var(--fd-bg-mid); font-weight: 300; } 341 + 342 + @media (max-width: 768px) { 343 + .fdm-grid { grid-template-columns: 1fr; } 344 + .fdm-hub { padding: 0 12px 22px; } 345 + .fdm-masthead img { height: 38px; } 346 + .fdm-hero { min-height: 220px; } 347 + .fdm-hero-inner { padding: 24px 22px 22px; } 348 + } 349 + 350 + @media (prefers-reduced-motion: reduce) { 351 + .fdm-card, .fdm-cta svg { transition: none; } 352 + } 353 + 299 299 </style> 300 300 301 301 <div class="fdm-hub"> ... ... @@ -374,4 +374,3 @@ 374 374 375 375 </div> 376 376 {{/html}} 377 -{{/html}}