diff --git a/protected/bifrost.js b/protected/bifrost.js index b52c3aa..3fc983a 100644 --- a/protected/bifrost.js +++ b/protected/bifrost.js @@ -199,7 +199,7 @@ // through them. const sceneOrder = [ 'hero', - 'bifrost', 'bifrost-meaning', + 'bifrost', 'bifrost-meaning', 'board-reveal', 'platform-question', 'platform-layers', 'wiki-deepdive', 'platform-cards', @@ -216,6 +216,7 @@ 'hero': 'hero', 'bifrost': 'bifrost', 'bifrost-meaning': 'bifrost', + 'board-reveal': 'bifrost', 'platform-question': 'platform-layers', 'platform-layers': 'platform-layers', 'wiki-deepdive': 'wiki-deepdive', @@ -666,6 +667,39 @@ } }); + // ─── Advisory board reveal ─────────────────────────────────── + // The #board-reveal section (8-member grid) sits right after the + // final treasure-map stop. Header bits rise/fade in, then the + // portraits stagger up. Mirrors the .map-stop reveal pattern; + // reduced-motion users never reach this block (early return above) + // and get the static CSS fallback instead. + const boardSection = document.getElementById('board-reveal'); + if (boardSection) { + const headBits = boardSection.querySelectorAll('.board-head > *'); + const members = boardSection.querySelectorAll('.board-member'); + const boardTl = gsap.timeline({ + scrollTrigger: { + trigger: boardSection, + start: 'top 72%', + toggleActions: 'play none none reverse', + } + }); + if (headBits.length) { + boardTl.to(headBits, { + opacity: 1, y: 0, + duration: 0.7, stagger: 0.1, + ease: 'power3.out', + }); + } + if (members.length) { + boardTl.to(members, { + opacity: 1, y: 0, + duration: 0.7, stagger: 0.06, + ease: 'power3.out', + }, '-=0.3'); + } + } + /* SCENE 6 — Join CTA + Innovationsfonden footer: REMOVED 2026-05-19 in the customer-presentation conversion. The CTA, confirmation panel, click handler, and three-mark footer all went away with @@ -679,7 +713,7 @@ document.fonts.ready.then(() => ScrollTrigger.refresh()); } // Refresh once illustrations have laid out - const illustrations = document.querySelectorAll('#bifrost-meaning img'); + const illustrations = document.querySelectorAll('#bifrost-meaning img, #board-reveal img'); let pending = illustrations.length; if (pending === 0) ScrollTrigger.refresh(); illustrations.forEach((img) => { diff --git a/protected/fenja/board/anna-jessen.jpg b/protected/fenja/board/anna-jessen.jpg new file mode 100644 index 0000000..b6afda3 Binary files /dev/null and b/protected/fenja/board/anna-jessen.jpg differ diff --git a/protected/fenja/board/hakon-daltveit.jpg b/protected/fenja/board/hakon-daltveit.jpg new file mode 100644 index 0000000..a0c3c91 Binary files /dev/null and b/protected/fenja/board/hakon-daltveit.jpg differ diff --git a/protected/fenja/board/mads-nyborg.jpg b/protected/fenja/board/mads-nyborg.jpg new file mode 100644 index 0000000..49084ad Binary files /dev/null and b/protected/fenja/board/mads-nyborg.jpg differ diff --git a/protected/fenja/board/mathies-laursen.jpg b/protected/fenja/board/mathies-laursen.jpg new file mode 100644 index 0000000..b033c17 Binary files /dev/null and b/protected/fenja/board/mathies-laursen.jpg differ diff --git a/protected/fenja/board/soren-friis.jpg b/protected/fenja/board/soren-friis.jpg new file mode 100644 index 0000000..b0e4490 Binary files /dev/null and b/protected/fenja/board/soren-friis.jpg differ diff --git a/protected/fenja/board/torben-schutt.jpg b/protected/fenja/board/torben-schutt.jpg new file mode 100644 index 0000000..3c9598a Binary files /dev/null and b/protected/fenja/board/torben-schutt.jpg differ diff --git a/protected/fenja/board/ulla-nygaard-eliassen.jpg b/protected/fenja/board/ulla-nygaard-eliassen.jpg new file mode 100644 index 0000000..4e6fcdf Binary files /dev/null and b/protected/fenja/board/ulla-nygaard-eliassen.jpg differ diff --git a/protected/fenja/board/william-irving.jpg b/protected/fenja/board/william-irving.jpg new file mode 100644 index 0000000..bc137c9 Binary files /dev/null and b/protected/fenja/board/william-irving.jpg differ