openvibers/openvibe.network Commits

Shared navbar: solid inline icons generated from the Font Awesome solid font, no FA dependency

OP OpenVibers committed 21 Sept 2026 · 24aea5cbdc · 2 files, +151 −72

The stroke sprite is replaced by 74 filled paths extracted from the FA Free
6 solid webfont every site already ships (CC BY 4.0, credited in the
generated block), so the navbar renders the same crisp solid glyphs on
every page whether or not it loads Font Awesome CSS. The FA probe/upgrade
from the previous commit is gone. Regenerate with
packages/openvibe-shared/scripts/build-nav-icons.py.

Changes

ddiff --git a/packages/openvibe-shared/navbar.js b/packages/openvibe-shared/navbar.js
iindex 793f3895..f98c255f 100644
---- a/packages/openvibe-shared/navbar.js
++++ b/packages/openvibe-shared/navbar.js
@@@ -83,7 +83,7 @@
.ovnav-launcher a { all: unset; cursor: pointer; box-sizing: border-box; }
.openvibe-navbar .ovnav-sep { width: 1px; height: 18px; background: var(--border, rgba(255,255,255,.12)); margin: 0 6px; flex: none; align-self: center; }
@media (max-width: 1180px) { .openvibe-navbar .ovnav-net, .openvibe-navbar .ovnav-sep { display: none; } }
-- .openvibe-navbar .ovnav-ic, .openvibe-navbar-dropdown .ovnav-ic { flex: none; font-size: 1.05em; vertical-align: -.15em; }
++ .openvibe-navbar .ovnav-ic, .openvibe-navbar-dropdown .ovnav-ic { flex: none; height: 1em; font-size: 1em; vertical-align: -.125em; overflow: visible; }
.openvibe-navbar-links { min-width: 0; overflow-x: auto; scrollbar-width: none; }
.openvibe-navbar-links::-webkit-scrollbar { display: none; }
.openvibe-navbar-links a.ovnav-link { display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; flex: none; }
@@@ -302,83 +302,98 @@
// The navbar draws its own icons. It used to borrow the page's Font Awesome, so on pages that do not load
// that font every menu row had an empty slot. Known names get an inline SVG; an unknown name still falls
// back to the page's icon font, so sites that pass their own Font Awesome icons keep working.
++ // BEGIN generated by scripts/build-nav-icons.py
++ // Font Awesome Free 6 solid glyphs (CC BY 4.0, fontawesome.com/license/free) as filled paths,
++ // viewBox 0 0 <w> 512. Regenerate: python3 packages/openvibe-shared/scripts/build-nav-icons.py
const NAV_ICONS = {
-- 'fa-user': '<circle cx="12" cy="9" r="3.2"/><path d="M5.5 19a6.5 6.5 0 0 1 13 0"/>',
-- 'fa-user-secret': '<path d="M4 11h16M7.5 11l1.2-5h6.6l1.2 5"/><circle cx="9" cy="15" r="2"/><circle cx="15" cy="15" r="2"/><path d="M11 15h2"/>',
-- 'fa-clock-rotate-left': '<path d="M4.5 12a7.5 7.5 0 1 0 2.4-5.5L4.5 8.8M4.5 4.8v4h4M12 8v4.2l2.8 1.8"/>',
-- 'fa-bell': '<path d="M6.5 16.5h11l-1.2-2V11a4.3 4.3 0 0 0-8.6 0v3.5zM10.5 19a1.6 1.6 0 0 0 3 0"/>',
-- 'fa-palette': '<path d="M12 4.5a7.5 7.5 0 1 0 0 15c1 0 1.6-.8 1.2-1.7-.5-1.1.3-2.3 1.5-2.3h1.6a3.2 3.2 0 0 0 3.2-3.2C19.5 8 16.2 4.5 12 4.5z"/><circle cx="8.5" cy="11" r=".7"/><circle cx="11.5" cy="8" r=".7"/><circle cx="15" cy="9" r=".7"/>',
-- 'fa-link': '<path d="M10 14a4 4 0 0 0 5.7 0l3-3a4 4 0 0 0-5.7-5.700l-1 1M14 10a4 4 0 0 0-5.7 0l-3 3a4 4 0 0 0 5.7 5.700l1-1"/>',
-- 'fa-shield-halved': '<path d="M12 3.5l7 2.500v5.500c0 4.3-3 7.3-7 9-4-1.7-7-4.7-7-9V6zM12 3.500v17"/>',
-- 'fa-screwdriver-wrench': '<path d="M14.5 5.5a4 4 0 0 0-5.2 5.2L4.5 15.5a1.8 1.8 0 0 0 2.5 2.5l4.8-4.8a4 4 0 0 0 5.2-5.2l-2.6 2.6-2.1-.5-.5-2.1z"/>',
-- 'fa-right-from-bracket': '<path d="M10 5H6.500A1.5 1.5 0 0 0 5 6.500v11A1.5 1.5 0 0 0 6.5 19H10M14 8l4 4-4 4M18 12H9.5"/>',
-- 'fa-tower-broadcast': '<circle cx="12" cy="12" r="2"/><path d="M7.8 7.8a6 6 0 0 0 0 8.4M16.2 7.8a6 6 0 0 1 0 8.4M5 5a10 10 0 0 0 0 14M19 5a10 10 0 0 1 0 14"/>',
-- 'fa-text-height': '<path d="M4 7V5.5h9V7M8.5 5.5v13M6.5 18.5h4M18 6v12M15.5 8.5 18 6l2.5 2.5M15.5 15.5 18 18l2.5-2.5"/>',
-- 'fa-wand-magic-sparkles': '<path d="M5 19 15 9M13.5 7.5l3 3M17.5 4l.6 1.4 1.4.6-1.4.6-.6 1.4-.6-1.4L15.5 6l1.4-.6zM7 5l.5 1.2 1.2.5-1.2.5L7 8.400l-.5-1.200L5.3 6.700l1.2-.5zM18.5 13l.5 1.2 1.2.5-1.2.5-.5 1.2-.5-1.2-1.2-.5 1.2-.5z"/>',
-- 'fa-coins': '<ellipse cx="12" cy="7.5" rx="6.5" ry="3"/><path d="M5.5 7.5v4.500c0 1.7 2.9 3 6.5 3s6.5-1.3 6.5-3V7.500M5.5 12v4.500c0 1.7 2.9 3 6.5 3s6.5-1.3 6.5-3V12"/>',
-- 'fa-video': '<rect x="3.5" y="6.5" width="12" height="11" rx="2"/><path d="M15.5 10.5 20.5 8v8l-5-2.500z"/>',
-- 'fa-scissors': '<circle cx="6.5" cy="7.5" r="2.5"/><circle cx="6.5" cy="16.5" r="2.5"/><path d="M8.7 9 20 17M8.7 15 20 7"/>',
-- 'fa-comments': '<path d="M4 6.500h10a1.5 1.5 0 0 1 1.5 1.500v5a1.5 1.5 0 0 1-1.5 1.500H9l-3 2.500v-2.500H4A1.5 1.5 0 0 1 2.5 13V8A1.5 1.5 0 0 1 4 6.500zM18 10.500h2A1.5 1.5 0 0 1 21.5 12v4.500A1.5 1.5 0 0 1 20 18h-1v2.500L16 18h-4"/>',
-- 'fa-hand-fist': '<path d="M7 11V8a1.5 1.5 0 0 1 3 0v2M10 9.500V7a1.5 1.5 0 0 1 3 0v3M13 9.500V8a1.5 1.5 0 0 1 3 0v3M16 10.500a1.5 1.5 0 0 1 3 0V14a5.5 5.5 0 0 1-5.5 5.500h-2A5.5 5.5 0 0 1 6 14v-1.500a1.5 1.5 0 0 1 3 0"/>',
-- 'fa-gamepad': '<path d="M7 9h10a4 4 0 0 1 3.9 4.900l-.6 2.600a2 2 0 0 1-3.5.8L15.5 16h-7l-1.3 1.300a2 2 0 0 1-3.5-.8l-.6-2.600A4 4 0 0 1 7 9zM8 11.500v3M6.5 13h3"/><circle cx="15.5" cy="12" r=".6"/><circle cx="17.5" cy="14" r=".6"/>',
-- 'fa-list-check': '<path d="M4 7l1.5 1.500L8 6M4 12.5 5.5 14 8 11.500M11 7.500h9M11 13h9M4.5 18.500h.01M11 18.500h9"/>',
-- 'fa-id-card': '<rect x="3.5" y="5.5" width="17" height="13" rx="2"/><circle cx="9" cy="11" r="2"/><path d="M6 15.500a3 3 0 0 1 6 0M14.5 10h3.500M14.5 13.500h3.5"/>',
-- 'fa-shirt': '<path d="M8.5 4.5 4 7l1.5 3.500L7.5 10v9.500h9V10l2 .5L20 7l-4.5-2.500a3.5 3.5 0 0 1-7 0z"/>',
-- 'fa-camera': '<path d="M4 8.500h3l1.5-2.500h7L17 8.500h3A1.5 1.5 0 0 1 21.5 10v8A1.5 1.5 0 0 1 20 19.500H4A1.5 1.5 0 0 1 2.5 18v-8A1.5 1.5 0 0 1 4 8.500z"/><circle cx="12" cy="13.5" r="3.2"/>',
-- 'fa-book': '<path d="M6 4.500h12v15H6.500A1.5 1.5 0 0 1 5 18V5.500a1 1 0 0 1 1-1zM5 17.500A1.5 1.5 0 0 1 6.5 16H18M9 8.500h6"/>',
-- 'fa-wallet': '<path d="M4.5 7.500A1.5 1.5 0 0 1 6 6h11.500v3M4.5 7.500V17A1.5 1.5 0 0 0 6 18.500h12.500A1.5 1.5 0 0 0 20 17V10.500A1.5 1.5 0 0 0 18.5 9H6a1.5 1.5 0 0 1-1.5-1.500z"/><circle cx="16.5" cy="13.7" r=".8"/>',
-- 'fa-people-arrows': '<circle cx="6" cy="8" r="2"/><circle cx="18" cy="8" r="2"/><path d="M3 17a3 3 0 0 1 6 0M15 17a3 3 0 0 1 6 0M9.5 12h5M12.5 10l2 2-2 2M11.5 10l-2 2 2 2"/>',
-- 'fa-network-wired': '<rect x="9" y="3.5" width="6" height="4.5" rx="1"/><rect x="3" y="16" width="6" height="4.5" rx="1"/><rect x="15" y="16" width="6" height="4.5" rx="1"/><path d="M12 8v4M6 16v-2.500h12V16"/>',
-- 'fa-people-group': '<circle cx="9" cy="9" r="2.6"/><circle cx="16.5" cy="10" r="2"/><path d="M3.8 18.500a5.2 5.2 0 0 1 10.4 0M14.6 14.200a4 4 0 0 1 5.6 3.8"/>',
-- 'fa-plus': '<path d="M12 5.500v13M5.5 12h13"/>',
-- 'fa-paste': '<rect x="6" y="6" width="12" height="14" rx="1.8"/><path d="M9.5 6V5a1 1 0 0 1 1-1h3a1 1 0 0 1 1 1v1M9 11h6M9 14h6"/>',
-- 'fa-house': '<path d="M4.5 11.5 12 5l7.5 6.500M6.5 10v8.500h11V10"/>',
-- 'fa-gauge-high': '<path d="M4.5 17a8 8 0 1 1 15 0M12 13l3.5-4"/><circle cx="12" cy="13.5" r="1.3"/>',
++ 'fa-bell': [448, 'M224 11Q210 11 201 20Q192 29 192 43V62Q136 74 101 117Q65 160 64 219V238Q63 310 16 365L8 374Q-5 389 3 408Q12 426 32 427H416Q436 426 445 408Q453 389 440 374L433 365Q385 311 384 238V219Q383 160 347 117Q312 74 256 62V43Q256 29 247 20Q238 11 224 11ZM269 504Q288 485 288 459H224H160Q160 485 179 504Q198 523 224 523Q250 523 269 504Z'],
++ 'fa-book': [448, 'M96 11Q55 12 28 39Q1 66 0 107V427Q1 468 28 495Q55 522 96 523H384H416Q430 523 439 514Q448 505 448 491Q448 477 439 468Q430 459 416 459V395Q430 395 439 386Q448 377 448 363V43Q448 29 439 20Q430 11 416 11H384ZM96 395H352H96H352V459H96Q82 459 73 450Q64 441 64 427Q64 413 73 404Q82 395 96 395ZM128 155Q129 140 144 139H336Q351 140 352 155Q351 170 336 171H144Q129 170 128 155ZM144 203H336H144H336Q351 204 352 219Q351 234 336 235H144Q129 234 128 219Q129 204 144 203Z'],
++ 'fa-camera': [512, 'M149 76 139 107 149 76 139 107H64Q37 108 19 126Q1 144 0 171V427Q1 454 19 472Q37 490 64 491H448Q475 490 493 472Q511 454 512 427V171Q511 144 493 126Q475 108 448 107H373L363 76Q351 45 317 43H195Q161 45 149 76ZM256 203Q282 203 304 216Q326 229 339 251Q352 274 352 299Q352 324 339 347Q326 369 304 382Q282 395 256 395Q230 395 208 382Q186 369 173 347Q160 324 160 299Q160 274 173 251Q186 229 208 216Q230 203 256 203Z'],
++ 'fa-clock-rotate-left': [512, 'M75 86 41 52 75 86 41 52Q29 41 15 47Q1 52 0 69V179Q2 201 24 203H134Q151 202 156 188Q162 174 151 162L120 131Q174 77 256 75Q338 77 392 131Q446 185 448 267Q446 349 392 403Q338 457 256 459Q194 458 146 425Q135 417 122 419Q110 422 102 433Q94 444 96 456Q99 469 110 477Q173 522 256 523Q328 522 385 488Q443 454 477 396Q511 339 512 267Q511 195 477 138Q443 80 385 46Q328 12 256 11Q203 11 156 31Q110 51 75 86ZM256 139Q234 141 232 163V267Q232 277 239 284L311 356Q328 370 345 356Q359 339 345 322L280 257V163Q278 141 256 139Z'],
++ 'fa-coins': [512, 'M512 91Q511 118 474 139Q428 164 351 170Q346 167 340 165Q279 140 192 139Q180 139 168 140L166 139Q129 118 128 91Q130 57 184 34Q238 12 320 11Q402 12 456 34Q510 57 512 91ZM161 172Q176 171 192 171Q239 171 278 180Q318 188 345 202Q383 223 384 251Q384 257 382 263Q374 283 347 298Q347 298 347 298Q347 298 347 298Q347 298 347 298Q347 298 347 298Q346 299 346 299Q346 299 346 299Q319 314 279 322Q240 331 192 331Q100 330 44 302Q41 300 38 299Q1 278 0 251Q1 224 36 204Q71 184 128 176Q144 173 161 172ZM416 251Q414 218 392 198Q435 191 468 177Q493 167 512 152V187Q511 217 468 238Q446 249 416 256Q416 256 416 256Q416 254 416 251ZM384 347Q383 374 346 395Q344 396 342 397Q341 397 340 398Q284 426 192 427Q144 427 105 418Q65 410 38 395Q1 374 0 347V312Q19 327 44 337Q105 362 192 363Q279 362 340 337Q352 332 363 326Q372 321 380 315Q381 314 383 313Q383 312 384 312V315V321V347ZM416 347V315V347V315V289Q445 283 468 273Q493 263 512 248V283Q512 299 497 314Q471 339 416 352Q416 350 416 347ZM192 459Q279 458 340 433Q365 423 384 408V443Q382 477 328 500Q274 522 192 523Q110 522 56 500Q2 477 0 443V408Q19 423 44 433Q105 458 192 459Z'],
++ 'fa-comments': [640, 'M208 363Q296 361 355 311Q414 262 416 187Q414 112 355 63Q296 13 208 11Q120 13 61 63Q2 112 0 187Q1 246 40 290Q34 305 25 315Q18 324 12 329Q9 332 8 333Q7 334 7 334H6Q-2 341 1 352Q5 362 16 363Q50 362 78 351Q92 345 103 339Q150 362 208 363ZM448 187Q445 273 384 329Q322 385 232 394Q251 451 305 486Q359 522 432 523Q490 522 537 499Q548 505 562 511Q590 522 624 523Q635 522 639 512Q642 501 633 494Q633 494 633 493Q632 493 632 493Q631 492 628 489Q622 484 615 475Q606 464 600 450Q639 406 640 347Q638 276 584 227Q530 178 447 171Q448 179 448 187Z'],
++ 'fa-gamepad': [640, 'M192 75Q110 77 56 131Q2 185 0 267Q2 349 56 403Q110 457 192 459H448Q530 457 584 403Q638 349 640 267Q638 185 584 131Q530 77 448 75H192ZM496 179Q519 180 531 199Q541 219 531 239Q519 258 496 259Q473 258 461 239Q451 219 461 199Q473 180 496 179ZM392 315Q393 292 412 280Q432 270 452 280Q471 292 472 315Q471 338 452 350Q432 360 412 350Q393 338 392 315ZM168 211Q170 189 192 187Q214 189 216 211V243H248Q270 245 272 267Q270 289 248 291H216V323Q214 345 192 347Q170 345 168 323V291H136Q114 289 112 267Q114 245 136 243H168V211Z'],
++ 'fa-gauge-high': [512, 'M0 267Q1 197 34 139Q68 81 128 45Q189 11 256 11Q323 11 384 45Q444 81 478 139Q511 197 512 267Q511 337 478 395Q444 453 384 489Q323 523 256 523Q189 523 128 489Q68 453 34 395Q1 337 0 267ZM288 107Q288 93 279 84Q270 75 256 75Q242 75 233 84Q224 93 224 107Q224 121 233 130Q242 139 256 139Q270 139 279 130Q288 121 288 107ZM256 427Q283 426 301 408Q319 390 320 363Q319 336 302 318L366 173Q373 152 354 141Q333 134 322 153L258 299Q257 299 257 299Q256 299 256 299Q229 300 211 318Q193 336 192 363Q193 390 211 408Q229 426 256 427ZM176 155Q176 141 167 132Q158 123 144 123Q130 123 121 132Q112 141 112 155Q112 169 121 178Q130 187 144 187Q158 187 167 178Q176 169 176 155ZM96 299Q110 299 119 290Q128 281 128 267Q128 253 119 244Q110 235 96 235Q82 235 73 244Q64 253 64 267Q64 281 73 290Q82 299 96 299ZM448 267Q448 253 439 244Q430 235 416 235Q402 235 393 244Q384 253 384 267Q384 281 393 290Q402 299 416 299Q430 299 439 290Q448 281 448 267Z'],
++ 'fa-hand-fist': [448, 'M192 11Q206 11 215 20Q224 29 224 43V155H160V43Q160 29 169 20Q178 11 192 11ZM64 75Q64 61 73 52Q82 43 96 43Q110 43 119 52Q128 61 128 75V155H64V75ZM256 75Q256 61 265 52Q274 43 288 43Q302 43 311 52Q320 61 320 75V171Q320 185 311 194Q302 203 288 203Q274 203 265 194Q256 185 256 171V75ZM352 139Q352 125 361 116Q370 107 384 107Q398 107 407 116Q416 125 416 139V203Q416 217 407 226Q398 235 384 235Q370 235 361 226Q352 217 352 203V139ZM256 227V226V227V226Q270 235 288 235Q308 235 324 224Q330 243 347 255Q363 267 384 267Q402 267 416 258V267Q416 307 399 340Q382 373 352 395V491Q352 505 343 514Q334 523 320 523H160Q146 523 137 514Q128 505 128 491V413Q102 401 81 380L70 369Q33 331 32 278V251Q33 224 51 206Q69 188 96 187H184Q201 187 212 199Q224 210 224 227Q224 244 212 255Q201 267 184 267H128Q113 268 112 283Q113 298 128 299H184Q215 298 235 278Q255 258 256 227Z'],
++ 'fa-house': [576, 'M576 267Q575 280 566 289Q557 298 544 299H512L513 459Q512 463 512 467V483Q512 500 500 511Q489 523 472 523H456Q454 523 453 523Q451 523 449 523H416H392Q375 523 364 511Q352 500 352 483V459V395Q352 381 343 372Q334 363 320 363H256Q242 363 233 372Q224 381 224 395V459V483Q224 500 212 511Q201 523 184 523H160H128Q127 523 126 523Q125 523 124 523Q122 523 120 523H104Q87 523 76 511Q64 500 64 483V371Q64 370 64 368V299H32Q18 298 9 289Q0 280 0 267Q0 253 10 243L266 19Q277 10 288 11Q300 11 309 18L565 243Q577 253 576 267Z'],
++ 'fa-id-card': [576, 'M0 107H576H0H576Q575 80 557 62Q539 44 512 43H64Q37 44 19 62Q1 80 0 107ZM0 139V427V139V427Q1 454 19 472Q37 490 64 491H512Q539 490 557 472Q575 454 576 427V139H0ZM64 416Q65 394 80 379Q95 364 117 363H235Q257 364 272 379Q287 394 288 416Q287 426 277 427H75Q65 426 64 416ZM176 203Q212 204 231 235Q249 267 231 299Q212 330 176 331Q140 330 121 299Q103 267 121 235Q140 204 176 203ZM352 219Q353 204 368 203H496Q511 204 512 219Q511 234 496 235H368Q353 234 352 219ZM352 283Q353 268 368 267H496Q511 268 512 283Q511 298 496 299H368Q353 298 352 283ZM352 347Q353 332 368 331H496Q511 332 512 347Q511 362 496 363H368Q353 362 352 347Z'],
++ 'fa-link': [640, 'M580 279Q622 234 622 176Q622 119 580 74Q541 37 489 32Q438 28 394 59L392 60Q381 68 379 81Q377 93 385 105Q393 115 405 117Q418 120 429 112L431 111Q456 94 484 96Q513 98 535 119Q558 144 558 176Q558 209 535 233L422 346Q397 369 365 369Q333 369 308 346Q287 324 285 295Q283 267 300 242L301 240Q308 229 306 217Q304 204 293 196Q282 188 270 190Q257 192 249 203L248 205Q217 249 221 301Q225 352 263 391Q308 433 365 433Q423 433 468 391L580 279ZM60 255Q18 300 18 358Q18 415 60 460Q99 497 151 502Q202 506 247 475L248 474Q259 466 261 453Q263 441 256 429Q247 419 235 417Q222 414 211 422L209 423Q184 440 156 438Q127 436 105 415Q82 390 82 358Q82 325 106 301L218 188Q243 165 275 165Q307 165 332 188Q353 210 355 239Q357 267 340 292L339 294Q332 305 334 318Q336 330 347 338Q358 346 370 344Q383 342 391 331L392 329Q423 285 419 233Q415 182 377 143Q332 101 275 101Q217 101 173 143L60 255Z'],
++ 'fa-list-check': [512, 'M152 49Q167 65 154 83L82 163Q75 171 65 171Q54 171 47 164L7 124Q-7 107 7 90Q24 76 41 90L63 112L118 51Q134 36 152 49ZM152 209Q167 225 154 243L82 323Q75 331 65 331Q54 331 47 324L7 284Q-7 267 7 250Q24 236 41 250L63 272L118 211Q134 196 152 209ZM224 107Q224 93 233 84Q242 75 256 75H480Q494 75 503 84Q512 93 512 107Q512 121 503 130Q494 139 480 139H256Q242 139 233 130Q224 121 224 107ZM224 267Q224 253 233 244Q242 235 256 235H480Q494 235 503 244Q512 253 512 267Q512 281 503 290Q494 299 480 299H256Q242 299 233 290Q224 281 224 267ZM160 427Q160 413 169 404Q178 395 192 395H480Q494 395 503 404Q512 413 512 427Q512 441 503 450Q494 459 480 459H192Q178 459 169 450Q160 441 160 427ZM48 379Q75 380 90 403Q102 427 90 451Q75 474 48 475Q21 474 6 451Q-6 427 6 403Q21 380 48 379Z'],
++ 'fa-network-wired': [640, 'M256 75H384H256H384V139H256V75ZM240 11Q220 12 206 25Q193 39 192 59V155Q193 175 206 189Q220 202 240 203H288V235H32Q18 235 9 244Q0 253 0 267Q0 281 9 290Q18 299 32 299H128V331H80Q60 332 46 345Q33 359 32 379V475Q33 495 46 509Q60 522 80 523H240Q260 522 274 509Q287 495 288 475V379Q287 359 274 345Q260 332 240 331H192V299H448V331H400Q380 332 366 345Q353 359 352 379V475Q353 495 366 509Q380 522 400 523H560Q580 522 594 509Q607 495 608 475V379Q607 359 594 345Q580 332 560 331H512V299H608Q622 299 631 290Q640 281 640 267Q640 253 631 244Q622 235 608 235H352V203H400Q420 202 434 189Q447 175 448 155V59Q447 39 434 25Q420 12 400 11H240ZM96 459V395V459V395H224V459H96ZM416 395H544H416H544V459H416V395Z'],
++ 'fa-palette': [512, 'M512 267Q512 268 512 268Q512 269 512 270Q511 297 490 314Q470 331 442 331H344Q324 332 310 345Q297 359 296 379Q296 384 297 389Q300 403 307 417Q307 418 308 419Q318 439 320 461Q320 485 305 503Q291 521 267 523Q261 523 256 523Q184 522 127 488Q69 454 35 396Q1 339 0 267Q1 195 35 138Q69 80 127 46Q184 12 256 11Q328 12 385 46Q443 80 477 138Q511 195 512 267ZM128 299Q128 285 119 276Q110 267 96 267Q82 267 73 276Q64 285 64 299Q64 313 73 322Q82 331 96 331Q110 331 119 322Q128 313 128 299ZM128 203Q142 203 151 194Q160 185 160 171Q160 157 151 148Q142 139 128 139Q114 139 105 148Q96 157 96 171Q96 185 105 194Q114 203 128 203ZM288 107Q288 93 279 84Q270 75 256 75Q242 75 233 84Q224 93 224 107Q224 121 233 130Q242 139 256 139Q270 139 279 130Q288 121 288 107ZM384 203Q398 203 407 194Q416 185 416 171Q416 157 407 148Q398 139 384 139Q370 139 361 148Q352 157 352 171Q352 185 361 194Q370 203 384 203Z'],
++ 'fa-paste': [512, 'M160 11Q123 13 105 43H48Q28 44 14 57Q1 71 0 91V411Q1 431 14 445Q28 458 48 459H192V187Q193 153 215 130Q238 108 272 107H320V91Q319 71 306 57Q292 44 272 43H215Q197 13 160 11ZM272 139Q252 140 238 153Q225 167 224 187V459V475Q225 495 238 509Q252 522 272 523H464Q484 522 498 509Q511 495 512 475V255Q512 235 498 221L430 153Q416 139 396 139H320ZM160 51Q182 53 184 75Q182 97 160 99Q138 97 136 75Q138 53 160 51Z'],
++ 'fa-people-arrows': [640, 'M64 75Q65 39 96 20Q128 2 160 20Q191 39 192 75Q191 111 160 130Q128 148 96 130Q65 111 64 75ZM26 244Q29 213 51 192Q74 172 106 171H150Q193 173 216 205Q212 208 208 211L144 275Q128 293 128 315Q128 337 144 355L192 402V475Q191 495 178 509Q164 522 144 523H112Q92 522 78 509Q65 495 64 475V359Q44 352 32 334Q20 316 22 294L26 244ZM448 75Q449 39 480 20Q512 2 544 20Q575 39 576 75Q575 111 544 130Q512 148 480 130Q449 111 448 75ZM432 211Q428 208 424 205Q448 173 490 171H534Q566 172 589 192Q611 213 614 244L618 294Q620 316 608 334Q596 352 576 359V475Q575 495 562 509Q548 522 528 523H496Q476 522 462 509Q449 495 448 475V402L496 355Q512 337 512 315Q512 293 496 275L432 211ZM272 251V283V251V283H368V251Q369 235 383 229Q397 223 409 234L473 298Q487 315 473 332L409 396Q397 406 383 401Q369 395 368 379V347H272V379Q271 395 257 401Q243 407 231 396L167 332Q153 315 167 298L231 234Q243 224 257 229Q271 236 272 251Z'],
++ 'fa-people-group': [640, 'M72 99Q73 67 100 51Q128 35 156 51Q183 67 184 99Q183 131 156 147Q128 163 100 147Q73 131 72 99ZM64 257Q49 274 48 299Q49 324 64 341V257ZM208 207Q162 249 160 315Q161 367 192 406V427Q192 441 183 450Q174 459 160 459H96Q82 459 73 450Q64 441 64 427V400Q35 386 18 360Q0 333 0 299Q1 251 33 220Q64 188 112 187H144Q181 188 208 207ZM448 427V406V427V406Q479 367 480 315Q478 249 432 207Q459 188 496 187H528Q576 188 607 220Q639 251 640 299Q640 333 622 360Q605 386 576 400V427Q576 441 567 450Q558 459 544 459H480Q466 459 457 450Q448 441 448 427ZM456 99Q457 67 484 51Q512 35 540 51Q567 67 568 99Q567 131 540 147Q512 163 484 147Q457 131 456 99ZM576 257V341V257V341Q592 324 592 299Q592 274 576 257ZM320 43Q356 44 375 75Q393 107 375 139Q356 170 320 171Q284 170 265 139Q247 107 265 75Q284 44 320 43ZM240 315Q241 340 256 357V273Q241 290 240 315ZM384 273V357V273V357Q400 340 400 315Q400 290 384 273ZM448 315Q448 349 430 376Q413 402 384 416V459Q384 473 375 482Q366 491 352 491H288Q274 491 265 482Q256 473 256 459V416Q227 402 210 376Q192 349 192 315Q193 267 225 236Q256 204 304 203H336Q384 204 415 236Q447 267 448 315Z'],
++ 'fa-plus': [448, 'M256 91Q256 77 247 68Q238 59 224 59Q210 59 201 68Q192 77 192 91V235H48Q34 235 25 244Q16 253 16 267Q16 281 25 290Q34 299 48 299H192V443Q192 457 201 466Q210 475 224 475Q238 475 247 466Q256 457 256 443V299H400Q414 299 423 290Q432 281 432 267Q432 253 423 244Q414 235 400 235H256V91Z'],
++ 'fa-right-from-bracket': [512, 'M378 117 501 240 378 117 501 240Q512 251 512 267Q512 283 501 294L378 417Q368 427 354 427Q340 427 330 417Q320 407 320 393V331H192Q178 331 169 322Q160 313 160 299V235Q160 221 169 212Q178 203 192 203H320V141Q320 127 330 117Q340 107 354 107Q368 107 378 117ZM160 107H96H160H96Q82 107 73 116Q64 125 64 139V395Q64 409 73 418Q82 427 96 427H160Q174 427 183 436Q192 445 192 459Q192 473 183 482Q174 491 160 491H96Q55 490 28 463Q1 436 0 395V139Q1 98 28 71Q55 44 96 43H160Q174 43 183 52Q192 61 192 75Q192 89 183 98Q174 107 160 107Z'],
++ 'fa-scissors': [512, 'M256 203 217 164 256 203 217 164Q224 145 224 123Q223 75 191 44Q160 12 112 11Q64 12 33 44Q1 75 0 123Q1 171 33 202Q64 234 112 235Q134 235 153 228L192 267L153 307Q134 299 112 299Q64 300 33 332Q1 363 0 411Q1 459 33 490Q64 522 112 523Q160 522 191 490Q223 459 224 411Q224 389 217 371L499 88Q510 75 499 62Q477 41 448 41Q419 41 397 62L256 203ZM279 354 397 472 279 354 397 472Q419 493 448 493Q477 493 499 472Q510 459 499 446L343 290L279 354ZM64 123Q65 96 88 81Q112 69 136 81Q159 96 160 123Q159 150 136 165Q112 177 88 165Q65 150 64 123ZM112 363Q139 364 154 387Q166 411 154 435Q139 458 112 459Q85 458 70 435Q58 411 70 387Q85 364 112 363Z'],
++ 'fa-screwdriver-wrench': [512, 'M79 16Q62 5 47 18L7 58Q-6 73 5 90L85 194Q92 203 104 203H158L267 312Q256 334 260 359Q263 383 281 402L393 514Q403 523 416 523Q429 523 439 514L503 450Q512 440 512 427Q512 414 503 404L391 292Q372 274 348 271Q323 267 301 278L192 169V115Q192 103 183 96L79 16ZM20 407Q0 427 0 455Q1 484 20 503Q39 522 68 523Q96 523 116 503L234 385Q222 353 230 320L168 258L20 407ZM512 155Q512 139 509 125Q506 116 499 114Q491 113 485 119L421 182Q416 187 409 187H352Q337 186 336 171V114Q336 107 341 102L405 38Q411 32 409 24Q407 17 399 14Q384 11 368 11Q307 13 266 53Q226 94 224 155V156L309 241Q337 234 364 241Q392 249 413 270L429 286Q466 268 489 233Q511 199 512 155ZM56 443Q58 421 80 419Q102 421 104 443Q102 465 80 467Q58 465 56 443Z'],
++ 'fa-shield-halved': [512, 'M256 11Q263 11 269 14L458 94Q475 101 485 116Q496 131 496 151Q497 202 479 271Q461 340 414 405Q368 471 282 514Q256 526 230 514Q144 471 98 405Q51 340 33 271Q15 202 16 151Q16 131 27 116Q37 101 54 94L243 14Q249 11 256 11ZM256 78V456V78V456Q324 421 363 367Q401 313 417 256Q432 198 432 152L256 78Z'],
++ 'fa-shirt': [640, 'M212 11Q224 12 229 24Q238 54 263 72Q287 90 320 91Q353 90 377 72Q402 54 412 24Q416 12 428 11H441Q475 11 502 33L629 138Q639 147 640 161Q641 174 632 184L576 248Q567 258 555 259Q542 260 532 252L480 209V459Q479 486 461 504Q443 522 416 523H224Q197 522 179 504Q161 486 160 459V209L109 252Q98 260 86 259Q73 258 64 248L8 184Q-1 174 0 161Q1 147 12 138L138 33Q165 11 199 11H212Z'],
++ 'fa-text-height': [576, 'M64 139V107V139V107H128V427H96Q82 427 73 436Q64 445 64 459Q64 473 73 482Q82 491 96 491H224Q238 491 247 482Q256 473 256 459Q256 445 247 436Q238 427 224 427H192V107H256V139Q256 153 265 162Q274 171 288 171Q302 171 311 162Q320 153 320 139V91Q319 71 306 57Q292 44 272 43H160H48Q28 44 14 57Q1 71 0 91V139Q0 153 9 162Q18 171 32 171Q46 171 55 162Q64 153 64 139ZM503 52Q493 43 480 43Q467 43 457 52L393 116Q379 132 386 151Q395 170 416 171H448V363H416Q395 364 386 383Q379 402 393 418L457 482Q467 491 480 491Q493 491 503 482L567 418Q581 402 574 383Q565 364 544 363H512V171H544Q565 170 574 151Q581 132 567 116L503 52Z'],
++ 'fa-tower-broadcast': [576, 'M80 55Q64 94 64 139Q64 184 80 223Q85 236 80 247Q75 259 63 265Q50 270 38 265Q26 259 21 247Q0 197 0 139Q0 81 21 31Q26 19 38 14Q50 9 63 13Q75 19 80 30Q85 42 80 55ZM555 31Q576 81 576 139Q576 197 555 247Q550 259 538 264Q526 269 513 265Q501 259 496 248Q491 236 496 223Q512 184 512 139Q512 94 496 55Q491 42 496 31Q501 19 513 13Q526 8 538 13Q550 19 555 31ZM352 139Q350 176 320 194V491Q320 505 311 514Q302 523 288 523Q274 523 265 514Q256 505 256 491V194Q226 176 224 139Q225 112 243 94Q261 76 288 75Q315 76 333 94Q351 112 352 139ZM171 88Q160 111 160 139Q160 167 171 190Q176 203 171 215Q166 227 154 232Q141 237 130 233Q118 228 112 216Q96 180 96 139Q96 98 112 62Q118 50 130 45Q142 41 154 46Q166 51 171 63Q176 75 171 88ZM464 62Q480 98 480 139Q480 180 464 216Q458 228 446 233Q434 237 422 232Q410 227 405 215Q400 203 405 190Q416 167 416 139Q416 111 405 88Q400 75 405 63Q410 51 422 46Q435 41 446 45Q458 50 464 62Z'],
++ 'fa-user': [448, 'M224 267Q259 267 288 250Q317 233 335 203Q352 173 352 139Q352 105 335 75Q317 45 288 28Q259 11 224 11Q189 11 160 28Q131 45 113 75Q96 105 96 139Q96 173 113 203Q131 233 160 250Q189 267 224 267ZM178 315Q103 317 52 367Q2 418 0 493Q0 506 9 514Q17 523 30 523H418Q431 523 439 514Q448 506 448 493Q446 418 396 367Q345 317 270 315H178Z'],
++ 'fa-user-secret': [448, 'M224 27Q215 26 209 21Q208 21 208 21Q201 13 176 11Q153 12 137 39Q120 65 110 100Q74 107 53 117Q32 127 32 139Q35 161 97 175Q96 181 96 187Q96 213 105 235H45Q33 236 32 248Q32 251 33 253L72 350Q39 375 20 412Q0 449 0 493Q0 506 9 514Q17 523 30 523H418Q431 523 439 514Q448 506 448 493Q448 449 428 412Q409 375 376 350L415 253Q416 251 416 248Q415 236 403 235H343Q352 213 352 187Q352 181 351 175Q413 161 416 139Q416 127 395 117Q374 107 338 100Q328 65 311 39Q295 12 272 11Q247 13 240 21Q240 21 240 21Q239 21 239 21Q233 26 224 27ZM280 235H268H280H268Q241 234 231 209Q229 204 224 204Q219 204 217 209Q207 234 181 235H168Q151 235 140 223Q128 212 128 195V181Q171 187 224 187Q277 187 320 181V195Q320 212 308 223Q297 235 280 235ZM192 331 208 363 192 331 208 363 176 491 128 299 192 331ZM320 299 272 491 320 299 272 491 240 363 256 331 320 299Z'],
++ 'fa-video': [576, 'M0 139Q1 112 19 94Q37 76 64 75H320Q347 76 365 94Q383 112 384 139V395Q383 422 365 440Q347 458 320 459H64Q37 458 19 440Q1 422 0 395V139ZM559 111Q575 120 576 139V395Q575 414 559 423Q542 432 526 422L430 358L416 348V331V203V186L430 176L526 112Q542 103 559 111Z'],
++ 'fa-wallet': [512, 'M64 43Q37 44 19 62Q1 80 0 107V427Q1 454 19 472Q37 490 64 491H448Q475 490 493 472Q511 454 512 427V203Q511 176 493 158Q475 140 448 139H80Q65 138 64 123Q65 108 80 107H448Q462 107 471 98Q480 89 480 75Q480 61 471 52Q462 43 448 43H64ZM416 283Q430 283 439 292Q448 301 448 315Q448 329 439 338Q430 347 416 347Q402 347 393 338Q384 329 384 315Q384 301 393 292Q402 283 416 283Z'],
++ 'fa-wand-magic-sparkles': [576, 'M235 54 197 68 235 54 197 68Q192 70 192 75Q192 80 197 82L235 96L249 134Q251 139 256 139Q261 139 263 134L277 96L315 82Q320 80 320 75Q320 70 315 68L277 54L263 16Q261 11 256 11Q251 11 249 16L235 54ZM46 406Q32 421 32 440Q32 459 46 474L81 509Q95 523 115 523Q134 523 149 509L530 128Q544 113 544 94Q544 74 530 60L495 25Q481 11 461 11Q442 11 427 25L46 406ZM485 94 380 199 485 94 380 199 356 175 461 70 485 94ZM8 128Q0 131 0 139Q0 147 8 150L64 171L85 228Q88 235 96 235Q104 235 107 228L128 171L185 150Q192 147 192 139Q192 131 185 128L128 107L107 51Q104 43 96 43Q88 43 85 51L64 107L8 128ZM360 384Q352 387 352 395Q352 403 360 406L416 427L437 484Q440 491 448 491Q456 491 459 484L480 427L537 406Q544 403 544 395Q544 387 537 384L480 363L459 307Q456 299 448 299Q440 299 437 307L416 363L360 384Z'],
++ 'fa-arrow-up-right-from-square': [512, 'M320 11Q306 11 297 20Q288 29 288 43Q288 57 297 66Q306 75 320 75H403L201 276Q192 286 192 299Q192 312 201 322Q211 331 224 331Q237 331 247 322L448 120V203Q448 217 457 226Q466 235 480 235Q494 235 503 226Q512 217 512 203V43Q512 29 503 20Q494 11 480 11H320ZM80 43Q46 44 23 66Q1 89 0 123V443Q1 477 23 500Q46 522 80 523H400Q434 522 457 500Q479 477 480 443V331Q480 317 471 308Q462 299 448 299Q434 299 425 308Q416 317 416 331V443Q415 458 400 459H80Q65 458 64 443V123Q65 108 80 107H192Q206 107 215 98Q224 89 224 75Q224 61 215 52Q206 43 192 43H80Z'],
++ 'fa-chevron-down': [512, 'M233 418Q243 427 256 427Q269 427 279 418L471 226Q480 216 480 203Q480 190 471 180Q461 171 448 171Q435 171 425 180L256 350L87 180Q77 171 64 171Q51 171 41 180Q32 190 32 203Q32 216 41 226L233 418Z'],
++ 'fa-chevron-right': [320, 'M311 244Q320 254 320 267Q320 280 311 290L119 482Q109 491 96 491Q83 491 73 482Q64 472 64 459Q64 446 73 436L243 267L73 98Q64 88 64 75Q64 62 73 52Q83 43 96 43Q109 43 119 52L311 244Z'],
++ 'fa-bars': [448, 'M0 107Q0 93 9 84Q18 75 32 75H416Q430 75 439 84Q448 93 448 107Q448 121 439 130Q430 139 416 139H32Q18 139 9 130Q0 121 0 107ZM0 267Q0 253 9 244Q18 235 32 235H416Q430 235 439 244Q448 253 448 267Q448 281 439 290Q430 299 416 299H32Q18 299 9 290Q0 281 0 267ZM448 427Q448 441 439 450Q430 459 416 459H32Q18 459 9 450Q0 441 0 427Q0 413 9 404Q18 395 32 395H416Q430 395 439 404Q448 413 448 427Z'],
++ 'fa-xmark': [384, 'M343 162Q352 152 352 139Q352 126 343 116Q333 107 320 107Q307 107 297 116L192 222L87 116Q77 107 64 107Q51 107 41 116Q32 126 32 139Q32 152 41 162L147 267L41 372Q32 382 32 395Q32 408 41 418Q51 427 64 427Q77 427 87 418L192 312L297 418Q307 427 320 427Q333 427 343 418Q352 408 352 395Q352 382 343 372L237 267L343 162Z'],
++ 'fa-magnifying-glass': [512, 'M416 219Q415 289 376 342L503 468Q512 478 512 491Q512 504 503 514Q493 523 480 523Q467 523 457 514L331 387Q278 426 208 427Q120 425 61 366Q2 307 0 219Q2 131 61 72Q120 13 208 11Q296 13 355 72Q414 131 416 219ZM208 363Q247 363 280 344Q313 325 333 291Q352 257 352 219Q352 181 333 147Q313 113 280 94Q247 75 208 75Q169 75 136 94Q103 113 83 147Q64 181 64 219Q64 257 83 291Q103 325 136 344Q169 363 208 363Z'],
++ 'fa-gear': [512, 'M496 178Q500 192 490 202L446 242Q448 254 448 267Q448 280 446 292L490 332Q500 342 496 356Q489 374 480 391L475 399Q465 415 453 430Q443 441 429 437L373 419Q353 435 329 444L317 502Q313 516 298 519Q278 523 256 523Q234 523 213 519Q199 516 195 502L183 444Q159 435 139 419L83 437Q69 441 59 430Q46 415 37 399L32 391Q23 374 16 357Q12 342 22 332L66 293Q64 280 64 267Q64 254 66 242L22 202Q12 192 16 178Q23 160 32 143L37 135Q46 119 59 104Q69 93 83 97L139 115Q159 99 183 89L195 32Q199 18 214 15Q234 11 256 11Q278 11 299 15Q313 18 317 32L329 89Q353 99 373 115L429 97Q443 93 453 104Q466 119 476 135L480 143Q489 160 496 178ZM256 347Q301 346 325 307Q347 267 325 227Q301 188 256 187Q211 188 187 227Q165 267 187 307Q211 346 256 347Z'],
++ 'fa-circle-half-stroke': [512, 'M448 267Q446 185 392 131Q338 77 256 75V459Q338 457 392 403Q446 349 448 267ZM0 267Q1 197 34 139Q68 81 128 45Q189 11 256 11Q323 11 384 45Q444 81 478 139Q511 197 512 267Q511 337 478 395Q444 453 384 489Q323 523 256 523Q189 523 128 489Q68 453 34 395Q1 337 0 267Z'],
++ 'fa-moon': [384, 'M224 43Q161 44 111 74Q60 103 30 154Q1 204 0 267Q1 330 31 380Q60 431 111 460Q161 490 224 491Q317 489 379 428Q387 419 382 409Q377 399 365 400Q351 403 335 403Q261 401 211 351Q162 302 160 227Q160 177 184 137Q209 97 249 74Q259 68 257 56Q254 46 242 44Q233 43 223 43Z'],
++ 'fa-sun': [512, 'M362 12Q369 16 371 24L391 132L499 152Q507 154 511 161Q514 169 509 177L447 267L509 357Q514 365 511 373Q507 380 499 382L391 402L371 510Q369 518 362 522Q354 525 346 520L256 458L166 520Q158 525 151 522Q143 518 141 510L121 402L13 382Q5 380 1 373Q-2 365 3 357L65 267L3 177Q-2 169 1 162Q5 154 13 152L121 132L141 24Q143 16 151 12Q158 9 166 14L256 76L346 14Q354 9 362 12ZM160 267Q160 241 173 219Q186 197 208 184Q231 171 256 171Q281 171 304 184Q326 197 339 219Q352 241 352 267Q352 293 339 315Q326 337 304 350Q281 363 256 363Q231 363 208 350Q186 337 173 315Q160 293 160 267ZM384 267Q384 232 367 203Q350 174 320 156Q290 139 256 139Q222 139 192 156Q162 174 145 203Q128 232 128 267Q128 302 145 331Q162 360 192 378Q222 395 256 395Q290 395 320 378Q350 360 367 331Q384 302 384 267Z'],
++ 'fa-file-pdf': [512, 'M0 75Q1 48 19 30Q37 12 64 11H224V139Q224 153 233 162Q242 171 256 171H384V315H176Q149 316 131 334Q113 352 112 379V523H64Q37 522 19 504Q1 486 0 459V75ZM384 139H256H384H256V11L384 139ZM176 363H208H176H208Q232 364 248 379Q263 395 264 419Q263 443 248 459Q232 474 208 475H192V507Q191 522 176 523Q161 522 160 507V459V379Q161 364 176 363ZM208 443Q230 441 232 419Q230 397 208 395H192V443H208ZM304 363H336H304H336Q356 364 370 377Q383 391 384 411V475Q383 495 370 509Q356 522 336 523H304Q289 522 288 507V379Q289 364 304 363ZM336 491Q351 490 352 475V411Q351 396 336 395H320V491H336ZM416 379Q417 364 432 363H480Q495 364 496 379Q495 394 480 395H448V427H480Q495 428 496 443Q495 458 480 459H448V507Q447 522 432 523Q417 522 416 507V443V379Z'],
++ 'fa-arrow-down': [384, 'M169 482Q179 491 192 491Q205 491 215 482L375 322Q384 312 384 299Q384 286 375 276Q365 267 352 267Q339 267 329 276L224 382V75Q224 61 215 52Q206 43 192 43Q178 43 169 52Q160 61 160 75V382L55 276Q45 267 32 267Q19 267 9 276Q0 286 0 299Q0 312 9 322L169 482Z'],
++ 'fa-arrow-right': [448, 'M439 290Q448 280 448 267Q448 254 439 244L279 84Q269 75 256 75Q243 75 233 84Q224 94 224 107Q224 120 233 130L339 235H32Q18 235 9 244Q0 253 0 267Q0 281 9 290Q18 299 32 299H339L233 404Q224 414 224 427Q224 440 233 450Q243 459 256 459Q269 459 279 450L439 290Z'],
++ 'fa-clock': [512, 'M256 11Q326 12 384 45Q442 79 478 139Q512 200 512 267Q512 334 478 395Q442 455 384 489Q326 522 256 523Q186 522 128 489Q70 455 34 395Q0 334 0 267Q0 200 34 139Q70 79 128 45Q186 12 256 11ZM232 131V267V131V267Q232 280 243 287L339 351Q358 362 372 344Q383 325 365 311L280 254V131Q278 109 256 107Q234 109 232 131Z'],
++ 'fa-envelope': [512, 'M48 75Q28 76 14 89Q1 103 0 123Q1 147 19 161L237 325Q256 337 275 325L493 161Q511 147 512 123Q511 103 498 89Q484 76 464 75H48ZM0 187V395V187V395Q1 422 19 440Q37 458 64 459H448Q475 458 493 440Q511 422 512 395V187L294 350Q277 363 256 363Q235 363 218 350L0 187Z'],
++ 'fa-star': [576, 'M317 29Q308 12 288 11Q269 12 259 29L195 161L51 183Q32 186 26 204Q20 223 34 237L138 340L113 486Q111 505 126 517Q142 528 160 519L288 451L417 519Q434 528 450 517Q466 505 463 486L439 340L543 237Q556 223 551 204Q544 186 525 183L381 161L317 29Z'],
++ 'fa-heart': [512, 'M48 311 228 480 48 311 228 480Q240 491 256 491Q272 491 284 480L464 311Q511 267 512 202V196Q511 142 478 104Q445 65 393 55Q358 50 325 60Q293 70 268 95L256 107L244 95Q219 70 187 60Q154 50 119 55Q67 65 34 104Q1 142 0 196V202Q1 267 48 311Z'],
++ 'fa-play': [384, 'M73 50Q49 36 25 49Q1 63 0 91V443Q1 471 25 485Q49 498 73 484L361 308Q383 294 384 267Q383 241 361 226L73 50Z'],
++ 'fa-circle-info': [512, 'M256 523Q326 522 384 489Q442 455 478 395Q512 334 512 267Q512 200 478 139Q442 79 384 45Q326 12 256 11Q186 12 128 45Q70 79 34 139Q0 200 0 267Q0 334 34 395Q70 455 128 489Q186 522 256 523ZM216 347H240H216H240V283H216Q194 281 192 259Q194 237 216 235H264Q286 237 288 259V347H296Q318 349 320 371Q318 393 296 395H216Q194 393 192 371Q194 349 216 347ZM256 139Q270 139 279 148Q288 157 288 171Q288 185 279 194Q270 203 256 203Q242 203 233 194Q224 185 224 171Q224 157 233 148Q242 139 256 139Z'],
++ 'fa-triangle-exclamation': [512, 'M256 43Q279 44 291 63L507 431Q517 451 507 471Q495 490 472 491H40Q17 490 5 471Q-5 451 5 431L222 63Q234 44 256 43ZM256 171Q234 173 232 195V307Q234 329 256 331Q278 329 280 307V195Q278 173 256 171ZM288 395Q288 381 279 372Q270 363 256 363Q242 363 233 372Q224 381 224 395Q224 409 233 418Q242 427 256 427Q270 427 279 418Q288 409 288 395Z'],
++ 'fa-check': [448, 'M439 116Q448 126 448 139Q448 152 439 162L183 418Q173 427 160 427Q147 427 137 418L9 290Q0 280 0 267Q0 254 9 244Q19 235 32 235Q45 235 55 244L160 350L393 116Q403 107 416 107Q429 107 439 116Z'],
++ 'fa-globe': [512, 'M352 267Q352 300 349 331H163Q160 300 160 267Q160 234 163 203H349Q352 234 352 267ZM381 203H504H381H504Q512 234 512 267Q512 300 504 331H381Q384 300 384 267Q384 234 381 203ZM493 171H377H493H377Q361 73 321 19Q381 36 426 75Q470 115 493 171ZM344 171H168H344H168Q177 116 195 76Q211 41 228 25Q245 10 256 11Q267 10 284 25Q301 41 317 76Q335 116 344 171ZM135 171H19H135H19Q42 115 86 75Q131 36 191 19Q151 73 135 171ZM8 203H131H8H131Q128 234 128 267Q128 300 131 331H8Q0 300 0 267Q0 234 8 203ZM195 458Q177 418 168 363H344Q335 418 317 458Q301 493 284 509Q267 524 256 523Q245 524 228 509Q211 493 195 458ZM135 363Q151 461 191 515Q131 498 86 459Q42 419 19 363H135ZM493 363Q470 419 426 459Q381 498 322 515Q361 461 377 363H493Z'],
++ 'fa-code': [640, 'M393 12Q380 9 368 15Q357 21 353 34L225 482Q222 495 228 507Q234 518 247 522Q260 525 272 519Q283 513 287 500L415 52Q418 39 412 27Q406 16 393 12ZM473 132Q464 142 464 155Q464 168 473 178L563 267L473 356Q464 366 464 379Q464 392 473 402Q483 411 496 411Q509 411 519 402L631 290Q640 280 640 267Q640 254 631 244L519 132Q509 123 496 123Q483 123 473 132ZM167 132Q157 123 144 123Q131 123 121 132L9 244Q0 254 0 267Q0 280 9 290L121 402Q131 411 144 411Q157 411 167 402Q176 392 176 379Q176 366 167 356L77 267L167 178Q176 168 176 155Q176 142 167 132Z'],
++ 'fa-robot': [640, 'M320 11Q334 11 343 20Q352 29 352 43V107H472Q503 108 523 128Q543 148 544 179V451Q543 482 523 502Q503 522 472 523H168Q137 522 117 502Q97 482 96 451V179Q97 148 117 128Q137 108 168 107H288V43Q288 29 297 20Q306 11 320 11ZM208 395Q193 396 192 411Q193 426 208 427H240Q255 426 256 411Q255 396 240 395H208ZM304 395Q289 396 288 411Q289 426 304 427H336Q351 426 352 411Q351 396 336 395H304ZM400 395Q385 396 384 411Q385 426 400 427H432Q447 426 448 411Q447 396 432 395H400ZM264 267Q263 244 244 232Q224 222 204 232Q185 244 184 267Q185 290 204 302Q224 312 244 302Q263 290 264 267ZM416 307Q439 306 451 287Q461 267 451 247Q439 228 416 227Q393 228 381 247Q371 267 381 287Q393 306 416 307ZM48 235H64H48H64V427H48Q28 426 14 413Q1 399 0 379V283Q1 263 14 249Q28 236 48 235ZM592 235Q612 236 626 249Q639 263 640 283V379Q639 399 626 413Q612 426 592 427H576V235H592Z'],
++ 'fa-photo-film': [640, 'M256 11H576H256H576Q603 12 621 30Q639 48 640 75V299Q639 326 621 344Q603 362 576 363H256Q229 362 211 344Q193 326 192 299V75Q193 48 211 30Q229 12 256 11ZM476 118Q469 107 456 107Q443 107 436 118L380 202L363 180Q355 171 344 171Q333 171 325 180L261 260Q252 272 258 285Q265 298 280 299H360H552Q566 299 573 286Q579 274 572 262L476 118ZM336 107Q336 93 327 84Q318 75 304 75Q290 75 281 84Q272 93 272 107Q272 121 281 130Q290 139 304 139Q318 139 327 130Q336 121 336 107ZM64 139H160H64H160V395V427Q160 441 169 450Q178 459 192 459H320Q334 459 343 450Q352 441 352 427V395H512V459Q511 486 493 504Q475 522 448 523H64Q37 522 19 504Q1 486 0 459V203Q1 176 19 158Q37 140 64 139ZM72 203Q57 204 56 219V235Q57 250 72 251H88Q103 250 104 235V219Q103 204 88 203H72ZM72 307Q57 308 56 323V339Q57 354 72 355H88Q103 354 104 339V323Q103 308 88 307H72ZM72 411Q57 412 56 427V443Q57 458 72 459H88Q103 458 104 443V427Q103 412 88 411H72ZM408 427V443V427V443Q409 458 424 459H440Q455 458 456 443V427Q455 412 440 411H424Q409 412 408 427Z'],
++ 'fa-tower-cell': [576, 'M63 13Q50 9 38 14Q26 19 21 31Q0 81 0 139Q0 197 21 247Q26 259 38 264Q50 269 63 265Q75 259 80 248Q85 236 80 223Q64 184 64 139Q64 94 80 55Q85 42 80 31Q75 19 63 13ZM513 13Q501 19 496 31Q491 42 496 55Q512 94 512 139Q512 184 496 223Q491 236 496 247Q501 259 513 265Q526 270 538 265Q550 259 555 247Q576 197 576 139Q576 81 555 31Q550 19 538 14Q526 9 513 13ZM340 176Q352 160 352 139Q351 112 333 94Q315 76 288 75Q261 76 243 94Q225 112 224 139Q224 160 236 176L99 478Q94 490 98 502Q103 514 115 520Q127 526 139 521Q151 517 157 504L178 459H398L419 504Q425 516 437 521Q449 525 461 520Q474 514 478 502Q483 490 477 478L340 176ZM369 395H207H369H207L221 363H355L369 395ZM288 216 326 299 288 216 326 299H250L288 216ZM163 85Q170 64 151 53Q130 46 119 65Q104 100 104 139Q104 178 119 213Q130 232 151 225Q170 214 163 193Q152 168 152 139Q152 110 163 85ZM457 65Q446 46 425 53Q406 64 413 85Q424 110 424 139Q424 168 413 193Q406 214 425 225Q446 232 457 213Q472 178 472 139Q472 100 457 65Z'],
++ 'fa-diagram-project': [576, 'M0 91Q1 71 14 57Q28 44 48 43H144Q164 44 178 57Q191 71 192 91V107H384V91Q385 71 398 57Q412 44 432 43H528Q548 44 562 57Q575 71 576 91V187Q575 207 562 221Q548 234 528 235H432Q412 234 398 221Q385 207 384 187V171H192V187Q192 190 192 192L272 299H368Q388 300 402 313Q415 327 416 347V443Q415 463 402 477Q388 490 368 491H272Q252 490 238 477Q225 463 224 443V347Q224 344 224 342L144 235H48Q28 234 14 221Q1 207 0 187V91Z'],
++ 'fa-toolbox': [512, 'M176 99V139V99V139H336V99Q335 92 328 91H184Q177 92 176 99ZM128 139V99V139V99Q129 75 144 59Q160 44 184 43H328Q352 44 368 59Q383 75 384 99V139H412Q432 139 446 153L498 205Q512 219 512 239V315H384V299Q384 285 375 276Q366 267 352 267Q338 267 329 276Q320 285 320 299V315H192V299Q192 285 183 276Q174 267 160 267Q146 267 137 276Q128 285 128 299V315H0V239Q0 219 14 205L66 153Q80 139 100 139H128ZM0 427V347V427V347H128V363Q128 377 137 386Q146 395 160 395Q174 395 183 386Q192 377 192 363V347H320V363Q320 377 329 386Q338 395 352 395Q366 395 375 386Q384 377 384 363V347H512V427Q511 454 493 472Q475 490 448 491H64Q37 490 19 472Q1 454 0 427Z'],
++ 'fa-comment-dots': [512, 'M256 459Q328 458 385 431Q443 403 477 356Q511 309 512 251Q511 193 477 146Q443 99 385 71Q328 44 256 43Q184 44 127 71Q69 99 35 146Q1 193 0 251Q1 320 48 372Q43 409 26 435Q18 449 11 456Q8 460 6 462Q6 463 5 463Q5 463 5 464Q-2 471 1 481Q6 491 16 491Q60 489 98 472Q133 456 152 441Q200 459 256 459ZM128 219Q142 219 151 228Q160 237 160 251Q160 265 151 274Q142 283 128 283Q114 283 105 274Q96 265 96 251Q96 237 105 228Q114 219 128 219ZM256 219Q270 219 279 228Q288 237 288 251Q288 265 279 274Q270 283 256 283Q242 283 233 274Q224 265 224 251Q224 237 233 228Q242 219 256 219ZM352 251Q352 237 361 228Q370 219 384 219Q398 219 407 228Q416 237 416 251Q416 265 407 274Q398 283 384 283Q370 283 361 274Q352 265 352 251Z'],
++ 'fa-money-bill-wave': [576, 'M0 124V433V124V433Q1 463 27 475Q92 497 158 489Q223 481 288 463Q348 446 408 437Q468 429 527 444Q545 448 560 438Q575 429 576 410V101Q575 71 549 59Q484 37 419 45Q353 53 288 71Q228 88 168 96Q108 105 49 90Q30 86 16 95Q1 105 0 124ZM288 363Q254 362 231 335Q209 308 208 267Q209 226 231 199Q254 172 288 171Q322 172 345 199Q367 226 368 267Q367 308 345 335Q322 362 288 363ZM64 363Q91 364 109 382Q127 400 128 427H64V363ZM128 155Q127 182 109 200Q91 218 64 219V155H128ZM512 315V379V315V379H448Q449 352 467 334Q485 316 512 315ZM448 107H512H448H512V171Q485 170 467 152Q449 134 448 107Z'],
++ 'fa-crown': [576, 'M309 117Q327 105 328 83Q328 66 316 55Q305 43 288 43Q271 43 260 55Q248 66 248 83Q249 106 267 117L210 232Q202 245 188 249Q174 252 161 242L72 171Q80 161 80 147Q80 130 68 119Q57 107 40 107Q23 107 12 119Q0 130 0 147Q0 164 12 175Q23 187 40 187Q40 187 40 187Q41 187 41 187L86 438Q91 462 108 476Q126 491 149 491H427Q450 491 468 476Q485 462 490 438L535 187Q535 187 536 187Q536 187 536 187Q553 187 564 175Q576 164 576 147Q576 130 564 119Q553 107 536 107Q519 107 508 119Q496 130 496 147Q496 161 504 171L415 242Q402 252 388 249Q374 245 366 232L309 117Z'],
++ 'fa-server': [512, 'M64 43Q37 44 19 62Q1 80 0 107V171Q1 198 19 216Q37 234 64 235H448Q475 234 493 216Q511 198 512 171V107Q511 80 493 62Q475 44 448 43H64ZM344 115Q366 117 368 139Q366 161 344 163Q322 161 320 139Q322 117 344 115ZM392 139Q394 117 416 115Q438 117 440 139Q438 161 416 163Q394 161 392 139ZM64 299Q37 300 19 318Q1 336 0 363V427Q1 454 19 472Q37 490 64 491H448Q475 490 493 472Q511 454 512 427V363Q511 336 493 318Q475 300 448 299H64ZM344 371Q366 373 368 395Q366 417 344 419Q322 417 320 395Q322 373 344 371ZM400 395Q402 373 424 371Q446 373 448 395Q446 417 424 419Q402 417 400 395Z'],
++ 'fa-newspaper': [512, 'M96 107Q97 80 115 62Q133 44 160 43H448Q475 44 493 62Q511 80 512 107V427Q511 454 493 472Q475 490 448 491H80Q46 490 23 468Q1 445 0 411V139Q0 125 9 116Q18 107 32 107Q46 107 55 116Q64 125 64 139V411Q65 426 80 427Q95 426 96 411V107ZM160 131V211V131V211Q162 233 184 235H296Q318 233 320 211V131Q318 109 296 107H184Q162 109 160 131ZM368 123Q369 138 384 139H432Q447 138 448 123Q447 108 432 107H384Q369 108 368 123ZM368 219Q369 234 384 235H432Q447 234 448 219Q447 204 432 203H384Q369 204 368 219ZM160 315Q161 330 176 331H432Q447 330 448 315Q447 300 432 299H176Q161 300 160 315ZM160 411Q161 426 176 427H432Q447 426 448 411Q447 396 432 395H176Q161 396 160 411Z'],
++ 'fa-tag': [448, 'M0 91V241V91V241Q0 267 19 286L195 462Q214 481 240 481Q265 481 285 462L419 328Q437 309 437 283Q437 258 419 238L243 62Q224 43 197 43H48Q28 44 14 57Q1 71 0 91ZM112 123Q126 123 135 132Q144 141 144 155Q144 169 135 178Q126 187 112 187Q98 187 89 178Q80 169 80 155Q80 141 89 132Q98 123 112 123Z'],
++ 'fa-ticket': [576, 'M64 75Q37 76 19 94Q1 112 0 139V203Q2 217 16 222Q46 233 48 267Q46 301 16 312Q2 317 0 331V395Q1 422 19 440Q37 458 64 459H512Q539 458 557 440Q575 422 576 395V331Q574 317 560 312Q530 301 528 267Q530 233 560 222Q574 217 576 203V139Q575 112 557 94Q539 76 512 75H64ZM128 187V347V187V347Q129 362 144 363H432Q447 362 448 347V187Q447 172 432 171H144Q129 172 128 187ZM96 171Q96 157 105 148Q114 139 128 139H448Q462 139 471 148Q480 157 480 171V363Q480 377 471 386Q462 395 448 395H128Q114 395 105 386Q96 377 96 363V171Z'],
++ 'fa-chart-line': [512, 'M64 75Q64 61 55 52Q46 43 32 43Q18 43 9 52Q0 61 0 75V411Q1 445 23 468Q46 490 80 491H480Q494 491 503 482Q512 473 512 459Q512 445 503 436Q494 427 480 427H80Q65 426 64 411V75ZM471 162Q480 152 480 139Q480 126 471 116Q461 107 448 107Q435 107 425 116L320 222L263 164Q253 155 240 155Q227 155 217 164L105 276Q96 286 96 299Q96 312 105 322Q115 331 128 331Q141 331 151 322L240 232L297 290Q307 299 320 299Q333 299 343 290L471 162Z'],
++ 'fa-pen-nib': [512, 'M368 29 313 85 368 29 313 85 438 210 494 155Q510 137 510 115Q510 93 494 75L448 29Q430 13 408 13Q386 13 368 29ZM288 106 279 108 288 106 279 108 135 152Q104 162 92 193L4 457Q-2 475 11 489L165 336Q160 326 160 315Q161 295 174 281Q188 268 208 267Q228 268 242 281Q255 295 256 315Q255 335 242 349Q228 362 208 363Q197 363 187 358L34 512Q48 525 66 519L330 431Q361 419 371 388L415 244L417 235L288 106Z'],
++ 'fa-key': [512, 'M336 363Q411 361 460 311Q510 262 512 187Q510 112 460 63Q411 13 336 11Q261 13 212 63Q162 112 160 187Q160 215 168 241L7 402Q0 409 0 419V499Q2 521 24 523H104Q126 521 128 499V459H168Q190 457 192 435V395H232Q242 395 249 388L282 355Q308 363 336 363ZM376 107Q399 108 411 127Q421 147 411 167Q399 186 376 187Q353 186 341 167Q331 147 341 127Q353 108 376 107Z'],
++ 'fa-plug': [384, 'M96 11Q82 11 73 20Q64 29 64 43V139H128V43Q128 29 119 20Q110 11 96 11ZM288 11Q274 11 265 20Q256 29 256 43V139H320V43Q320 29 311 20Q302 11 288 11ZM32 171Q18 171 9 180Q0 189 0 203Q0 217 9 226Q18 235 32 235V267Q33 326 69 369Q104 412 160 424V491Q160 505 169 514Q178 523 192 523Q206 523 215 514Q224 505 224 491V424Q280 412 315 369Q351 326 352 267V235Q366 235 375 226Q384 217 384 203Q384 189 375 180Q366 171 352 171H32Z'],
++ 'fa-bolt': [448, 'M349 56Q358 33 339 17Q318 4 299 19L43 243Q27 258 34 278Q43 298 64 299H176L99 478Q90 501 109 517Q130 530 149 515L405 291Q421 276 414 256Q406 236 384 235H273L349 56Z'],
++ 'fa-satellite-dish': [512, 'M192 43Q192 29 201 20Q210 11 224 11Q304 12 369 50Q434 89 473 154Q511 219 512 299Q512 313 503 322Q494 331 480 331Q466 331 457 322Q448 313 448 299Q447 236 417 186Q388 135 337 106Q287 76 224 75Q210 75 201 66Q192 57 192 43ZM61 232 165 336 61 232 165 336 193 307Q192 303 192 299Q192 285 201 276Q210 267 224 267Q238 267 247 276Q256 285 256 299Q256 313 247 322Q238 331 224 331Q220 331 216 330L187 358L291 462Q302 474 300 488Q298 502 284 509Q249 523 208 523Q120 521 61 462Q2 403 0 315Q0 274 14 239Q21 225 35 223Q49 221 61 232ZM224 107Q306 109 360 163Q414 217 416 299Q416 313 407 322Q398 331 384 331Q370 331 361 322Q352 313 352 299Q351 245 315 208Q278 172 224 171Q210 171 201 162Q192 153 192 139Q192 125 201 116Q210 107 224 107Z'],
++ 'fa-brain': [512, 'M184 11Q208 12 224 27Q239 43 240 67V467Q239 491 224 507Q208 522 184 523Q162 523 146 509Q131 495 128 473Q120 475 112 475Q85 474 67 456Q49 438 48 411Q48 400 52 390Q29 381 14 361Q0 341 0 315Q0 291 13 272Q25 253 46 243Q32 226 32 203Q32 180 46 163Q60 146 82 140Q80 132 80 123Q80 100 94 83Q107 67 128 61Q131 39 146 25Q162 11 184 11ZM328 11Q350 11 366 25Q381 39 384 61Q405 67 418 83Q432 100 432 123Q432 132 430 140Q452 146 466 163Q480 180 480 203Q480 226 466 243Q487 253 499 272Q512 291 512 315Q512 341 498 361Q483 381 460 390Q464 400 464 411Q463 438 445 456Q427 474 400 475Q392 475 384 473Q381 495 366 509Q350 523 328 523Q304 522 288 507Q273 491 272 467V67Q273 43 288 27Q304 12 328 11Z'],
++ 'fa-microchip': [512, 'M176 35Q174 13 152 11Q130 13 128 35V75Q101 76 83 94Q65 112 64 139H24Q2 141 0 163Q2 185 24 187H64V243H24Q2 245 0 267Q2 289 24 291H64V347H24Q2 349 0 371Q2 393 24 395H64Q65 422 83 440Q101 458 128 459V499Q130 521 152 523Q174 521 176 499V459H232V499Q234 521 256 523Q278 521 280 499V459H336V499Q338 521 360 523Q382 521 384 499V459Q411 458 429 440Q447 422 448 395H488Q510 393 512 371Q510 349 488 347H448V291H488Q510 289 512 267Q510 245 488 243H448V187H488Q510 185 512 163Q510 141 488 139H448Q447 112 429 94Q411 76 384 75V35Q382 13 360 11Q338 13 336 35V75H280V35Q278 13 256 11Q234 13 232 35V75H176V35ZM160 139H352H160H352Q366 139 375 148Q384 157 384 171V363Q384 377 375 386Q366 395 352 395H160Q146 395 137 386Q128 377 128 363V171Q128 157 137 148Q146 139 160 139ZM352 171H160H352H160V363H352V171Z'],
};
-- // Icons: Font Awesome solid when the host page has Font Awesome (crisp, matches the rest of
-- // the page); the inline stroke sprite only as a fallback for pages without it. The sprite
-- // was drawn for self-containment, not looks — at 14px the thin strokes read as jagged
-- // "line icons" next to everything else being solid. `icons: 'fa' | 'svg'` in init() forces one.
-- let _faOk = null;
-- function faAvailable() {
-- if (_config.icons === 'fa') return true;
-- if (_config.icons === 'svg') return false;
-- if (_faOk !== null) return _faOk;
-- if (!document.body) return false; // too early to probe; don't cache
-- try {
-- const probe = document.createElement('i');
-- probe.className = 'fa-solid fa-house';
-- probe.style.cssText = 'position:absolute;left:-9999px;top:-9999px;visibility:hidden';
-- document.body.appendChild(probe);
-- const ff = getComputedStyle(probe).fontFamily || '';
-- probe.remove();
-- _faOk = /font awesome/i.test(ff);
-- } catch { _faOk = false; }
-- return _faOk;
-- }
++ // END generated
++ // Icons are solid filled paths generated from the Font Awesome Free solid font (see the
++ // generated block above), so every OpenVibe page gets the same crisp glyphs with no
++ // dependency on Font Awesome CSS. Names not in the set fall back to an <i class="fa-solid">
++ // for pages that do load Font Awesome.
function navIcon(cls) {
if (!cls) return '';
-- if (faAvailable()) return `<i class="fa-solid ${escapeAttr(cls)}"></i>`;
-- const key = String(cls || '').split(/\s+/).find(c => NAV_ICONS[c]);
++ const key = String(cls).split(/\s+/).find(c => NAV_ICONS[c]);
if (!key) return `<i class="fa-solid ${escapeAttr(cls)}"></i>`;
-- return `<svg class="ovnav-ic" data-fa="${escapeAttr(cls)}" viewBox="0 0 24 24" width="1em" height="1em" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" shape-rendering="geometricPrecision" aria-hidden="true" focusable="false">${NAV_ICONS[key]}</svg>`;
-- }
-- // If Font Awesome finishes loading after the navbar rendered (deferred stylesheet), swap the
-- // sprite icons for the real glyphs in place.
-- function upgradeIconsWhenFontsReady() {
-- try {
-- if (_faOk === true || _config.icons) return;
-- const run = () => {
-- _faOk = null;
-- if (!faAvailable()) return;
-- document.querySelectorAll('.openvibe-navbar svg.ovnav-ic[data-fa], .openvibe-navbar-dropdown svg.ovnav-ic[data-fa]').forEach(svg => {
-- const i = document.createElement('i'); i.className = 'fa-solid ' + svg.getAttribute('data-fa'); svg.replaceWith(i);
-- });
-- };
-- if (document.fonts && document.fonts.ready) document.fonts.ready.then(() => setTimeout(run, 0));
-- window.addEventListener('load', () => setTimeout(run, 50), { once: true });
-- } catch { /* */ }
++ const [w, d] = NAV_ICONS[key];
++ return `<svg class="ovnav-ic" viewBox="0 0 ${w} 512" style="width:${(w / 512).toFixed(3)}em" aria-hidden="true" focusable="false"><path fill="currentColor" d="${d}"/></svg>`;
}
++ function upgradeIconsWhenFontsReady() { /* icons no longer depend on webfonts */ }
// ─── Brand from hostname ───────────────────────────────────
// Every property is <sub?>.openvibe.<tld> (plus openre.stream). The navbar spells the
ddiff --git a/packages/openvibe-shared/scripts/build-nav-icons.py b/packages/openvibe-shared/scripts/build-nav-icons.py
nnew file mode 100644
iindex 00000000..39ef7cac
---- /dev/null
++++ b/packages/openvibe-shared/scripts/build-nav-icons.py
@@@ -0,0 +1,64 @@
++#!/usr/bin/env python3
++"""Regenerate the solid inline icon set embedded in navbar.js.
++
++Reads Font Awesome Free 6 (solid) glyph outlines — the same webfont every OpenVibe site already
++ships — and writes them into navbar.js as filled SVG paths, so the navbar renders crisp solid
++icons everywhere without the host page needing Font Awesome CSS. Font Awesome Free icons are
++CC BY 4.0 (https://fontawesome.com/license/free); attribution stays in the generated block.
++
++ python3 scripts/build-nav-icons.py [--font path/to/fa-solid-900.woff2] [--css path/to/all.min.css]
++"""
++import argparse, json, re, sys, pathlib
++from fontTools.ttLib import TTFont
++from fontTools.pens.svgPathPen import SVGPathPen
++from fontTools.pens.transformPen import TransformPen
++
++HERE = pathlib.Path(__file__).resolve().parent
++NAVBAR = HERE.parent / 'navbar.js'
++DEFAULT_FONT = pathlib.Path('/home/workstation/orca/workspaces/OpenVibe.Live/seadragon/public/css/vendor/webfonts/fa-solid-900.woff2')
++DEFAULT_CSS = pathlib.Path('/home/workstation/orca/workspaces/OpenVibe.Live/seadragon/public/css/vendor/fontawesome-6.5.1.min.css')
++START, END = ' // BEGIN generated by scripts/build-nav-icons.py', ' // END generated'
++
++ICONS = """fa-bell fa-book fa-camera fa-clock-rotate-left fa-coins fa-comments fa-gamepad fa-gauge-high fa-hand-fist
++fa-house fa-id-card fa-link fa-list-check fa-network-wired fa-palette fa-paste fa-people-arrows fa-people-group fa-plus
++fa-right-from-bracket fa-scissors fa-screwdriver-wrench fa-shield-halved fa-shirt fa-text-height fa-tower-broadcast
++fa-user fa-user-secret fa-video fa-wallet fa-wand-magic-sparkles
++fa-arrow-up-right-from-square fa-chevron-down fa-chevron-right fa-bars fa-xmark fa-magnifying-glass fa-gear
++fa-circle-half-stroke fa-moon fa-sun fa-file-pdf fa-arrow-down fa-arrow-right fa-clock fa-envelope fa-star
++fa-heart fa-play fa-circle-info fa-triangle-exclamation fa-check fa-globe fa-code fa-robot fa-photo-film
++fa-tower-cell fa-diagram-project fa-toolbox fa-comment-dots fa-money-bill-wave fa-crown fa-server fa-newspaper
++fa-tag fa-ticket fa-chart-line fa-pen-nib fa-key fa-plug fa-bolt fa-satellite-dish fa-brain fa-microchip""".split()
++
++def main():
++ ap = argparse.ArgumentParser()
++ ap.add_argument('--font', default=str(DEFAULT_FONT)); ap.add_argument('--css', default=str(DEFAULT_CSS))
++ a = ap.parse_args()
++ css = pathlib.Path(a.css).read_text(encoding='utf-8', errors='replace')
++ cps = {}
++ # Rules look like `.fa-clock-rotate-left:before,.fa-history:before{content:"\f1da"}` (1-6 hex digits).
++ for m in re.finditer(r'([^{}]+)\{content:"\\([0-9a-fA-F]{1,6})"\}', css):
++ for name in re.findall(r'\.(fa-[a-z0-9-]+):before', m.group(1)):
++ cps.setdefault(name, int(m.group(2), 16))
++ font = TTFont(a.font)
++ cmap = font.getBestCmap(); glyphs = font.getGlyphSet(); hmtx = font['hmtx']
++ upm = font['head'].unitsPerEm; asc = font['hhea'].ascent
++ out, missing = {}, []
++ for name in ICONS:
++ cp = cps.get(name)
++ gname = cmap.get(cp) if cp else None
++ if not gname: missing.append(name); continue
++ pen = SVGPathPen(glyphs, ntos=lambda v: ('%.1f' % v).rstrip('0').rstrip('.'))
++ glyphs[gname].draw(TransformPen(pen, (1, 0, 0, -1, 0, asc)))
++ adv = hmtx[gname][0]
++ out[name] = [round(adv * 512 / upm), pen.getCommands()]
++ js = [START, " // Font Awesome Free 6 solid glyphs (CC BY 4.0, fontawesome.com/license/free) as filled paths,",
++ " // viewBox 0 0 <w> 512. Regenerate: python3 packages/openvibe-shared/scripts/build-nav-icons.py",
++ " const NAV_ICONS = {"]
++ for k, (w, d) in out.items(): js.append(f" '{k}': [{w}, '{d}'],")
++ js += [" };", END]
++ src = NAVBAR.read_text(encoding='utf-8')
++ i, j = src.index(START), src.index(END) + len(END)
++ NAVBAR.write_text(src[:i] + '\n'.join(js) + src[j:], encoding='utf-8')
++ print(f'wrote {len(out)} icons; missing: {missing or "none"}')
++
++if __name__ == '__main__': main()