.entry-content { margin-top:0!important; } .footer-cta { display:none; }
*{box-sizing:border-box;margin:0;padding:0} .viz{font-family:'Open Sans',sans-serif;background:#030e1c;border-radius:6px;overflow:hidden;border:1px solid rgba(255,255,255,0.07);position:relative} .full-scanline{position:absolute;top:0;bottom:0;width:1px;background:rgba(255,137,0,0.5);pointer-events:none;z-index:10} .curves-bg{position:relative;overflow:hidden} .bg-layer{position:absolute;inset:0;background-size:cover;background-position:center;opacity:0;transition:opacity 0.8s} .bg-layer.active{opacity:0.14} .curves-header{position:relative;z-index:2;display:flex;justify-content:space-between;align-items:center;padding:16px 20px 10px;flex-wrap:wrap;gap:8px} .curve-labels{display:flex;gap:12px;flex-wrap:wrap} .curve-label{display:flex;align-items:center;gap:5px;font-size:10px;font-weight:700;letter-spacing:.04em;text-transform:uppercase} .dot{width:7px;height:7px;border-radius:50%;flex-shrink:0} .live-badge{font-size:10px;font-weight:700;color:rgba(255,137,0,0.8);letter-spacing:.08em;text-transform:uppercase;border:1px solid rgba(255,137,0,0.3);padding:2px 8px;border-radius:3px;display:flex;align-items:center;gap:5px;white-space:nowrap} .live-dot{width:6px;height:6px;border-radius:50%;background:#FF8900;animation:pulse 1.2s infinite} @keyframes pulse{0%,100%{opacity:1}50%{opacity:.3}} canvas{display:block;width:100%;position:relative;z-index:2} .time-label{position:relative;z-index:2;text-align:right;font-size:10px;color:rgba(255,255,255,0.2);font-variant-numeric:tabular-nums;padding:4px 20px 6px} .filmstrip{display:grid;grid-template-columns:repeat(6,1fr);border-top:1px solid rgba(255,255,255,0.06)} .frame{position:relative;aspect-ratio:16/9;overflow:hidden;border-right:1px solid rgba(255,255,255,0.06)} .frame:last-child{border-right:none} .frame img{width:100%;height:100%;object-fit:cover;opacity:0.35;transition:opacity 0.3s} .frame.active img{opacity:0.9} .frame.passed img{opacity:0.55} .frame-ts{position:absolute;bottom:4px;left:6px;font-size:8px;font-weight:700;font-variant-numeric:tabular-nums;color:rgba(255,255,255,0.3);font-family:'Open Sans',sans-serif;transition:color 0.3s} .frame.active .frame-ts{color:rgba(255,137,0,0.9)} .frame.passed .frame-ts{color:rgba(255,255,255,0.5)} .frame-bar{position:absolute;bottom:0;left:0;right:0;height:2px;background:#FF8900;transform:scaleX(0);transform-origin:left}
Valenz
Verlobung
Freude
Verwirrung
Überraschung
Verachtung
Live
0:00 / 0:30
0:00
0:00
0:06
0:06
0:12
0:12
0:18
0:18
0:24
0:24
0:30
0:30
const canvas=document.getElementById("cc7"); const ctx=canvas.getContext("2d"); const tlabel=document.getElementById("tlabel7"); const fullscan=document.getElementById("fullscan"); const NUM_FRAMES=6; const frames=Array.from({length:NUM_FRAMES},(_,i)=>document.getElementById("f"+i)); const fbars=Array.from({length:NUM_FRAMES},(_,i)=>document.getElementById("fb"+i)); const bgs=Array.from({length:NUM_FRAMES},(_,i)=>document.getElementById("bg"+i)); const DURATION=9000,POINTS=120; let lastActiveIdx=-1; function ss(t){return t*t*(3-2*t)} function lerp(a,b,t){return a+(b-a)*t} function buildValence(){const pts=[];for(let i=0;i<POINTS;i++){const t=i/(POINTS-1);let b;if(t<0.15)b=lerp(0.38,0.42,t/0.15);else if(t<0.35)b=lerp(0.42,0.48,(t-0.15)/0.2);else if(t<0.55)b=lerp(0.48,0.72,ss[1];else if(t<0.7)b=lerp(0.72,0.78,(t-0.55)/0.15);else if(t<0.85)b=lerp(0.78,0.82,(t-0.7)/0.15);else b=lerp(0.82,0.80,(t-0.85)/0.15);pts.push(Math.max(0.05,Math.min(0.95,b+Math.sin(i*0.5)*0.007)));}return pts;} function buildEngagement(){const pts=[];for(let i=0;i<POINTS;i++){const t=i/(POINTS-1);let b;if(t<0.1)b=lerp(0.45,0.48,t/0.1);else if(t<0.3)b=lerp(0.48,0.55,(t-0.1)/0.2);else if(t<0.5)b=lerp(0.55,0.75,ss[2];else if(t<0.65)b=lerp(0.75,0.82,(t-0.5)/0.15);else if(t<0.8)b=lerp(0.82,0.85,(t-0.65)/0.15);else b=lerp(0.85,0.83,(t-0.8)/0.2);pts.push(Math.max(0.05,Math.min(0.95,b+Math.sin(i*0.7+1)*0.006)));}return pts;} function buildJoy(){const pts=[];for(let i=0;i<POINTS;i++){const t=i/(POINTS-1);let b;if(t<0.2)b=lerp(0.15,0.18,t/0.2);else if(t<0.4)b=lerp(0.18,0.22,(t-0.2)/0.2);else if(t<0.6)b=lerp(0.22,0.58,ss[3];else if(t<0.75)b=lerp(0.58,0.70,(t-0.6)/0.15);else b=lerp(0.70,0.72,(t-0.75)/0.25);pts.push(Math.max(0.05,Math.min(0.95,b+Math.sin(i*0.6+2)*0.006)));}return pts;} function buildConfusion(){const pts=[];for(let i=0;i<POINTS;i++){const t=i/(POINTS-1);let b;if(t<0.12)b=lerp(0.65,0.62,t/0.12);else if(t<0.28)b=lerp(0.62,0.55,(t-0.12)/0.16);else if(t<0.5)b=lerp(0.55,0.28,ss[4];else if(t<0.68)b=lerp(0.28,0.20,(t-0.5)/0.18);else if(t<0.82)b=lerp(0.20,0.17,(t-0.68)/0.14);else b=lerp(0.17,0.16,(t-0.82)/0.18);pts.push(Math.max(0.05,Math.min(0.95,b+Math.sin(i*0.6+2)*0.005)));}return pts;} function buildSurprise(){const pts=[];for(let i=0;i<POINTS;i++){const t=i/(POINTS-1);let b;if(t<0.3)b=lerp(0.12,0.14,t/0.3);else if(t<0.45)b=lerp(0.14,0.42,ss[5];else if(t<0.6)b=lerp(0.42,0.28,(t-0.45)/0.15);else if(t<0.75)b=lerp(0.28,0.38,ss[6];else b=lerp(0.38,0.22,(t-0.75)/0.25);pts.push(Math.max(0.05,Math.min(0.95,b+Math.sin(i*0.9+3)*0.007)));}return pts;} function buildContempt(){const pts=[];for(let i=0;i<POINTS;i++){const t=i/(POINTS-1);let b;if(t<0.2)b=lerp(0.35,0.32,t/0.2);else if(t<0.4)b=lerp(0.32,0.25,(t-0.2)/0.2);else if(t<0.65)b=lerp(0.25,0.12,ss[7];else b=lerp(0.12,0.10,(t-0.65)/0.35);pts.push(Math.max(0.05,Math.min(0.95,b+Math.sin(i*0.4+1)*0.005)));}return pts;} const curves=[ {data:buildValence(),color:"#FF8900",lw:2.0}, {data:buildEngagement(),color:"#2B7DD6",lw:1.5}, {data:buildJoy(),color:"#FCC200",lw:1.5}, {data:buildConfusion(),color:"#7C6EDD",lw:1.5}, {data:buildSurprise(),color:"#60CCAF",lw:1.5}, {data:buildContempt(),color:"#E82586",lw:1.5}, ]; let startTime=null; function updateFrames(p){ const ai=Math.min(Math.floor(p*NUM_FRAMES),NUM_FRAMES-1); frames.forEach[8];lastActiveIdx=ai;} } function draw(p){ const w=canvas.offsetWidth,h=canvas.height; canvas.width=w;ctx.clearRect(0,0,w,h); const rp=Math.floor(p*POINTS); if(rp<2)return; curves.forEach[9]*w,y=h-data[i]*h;i===0?ctx.moveTo(x,y):ctx.lineTo(x,y);} ctx.stroke();ctx.globalAlpha=1; ctx.beginPath();ctx.strokeStyle=color;ctx.lineWidth=lw;ctx.lineJoin="round";ctx.lineCap="round"; for(let i=0;i<rp;i++){const x=(i/(POINTS-1))*w,y=h-data[i]*h;i===0?ctx.moveTo(x,y):ctx.lineTo(x,y);} ctx.stroke(); const ix=rp-1,x=(ix/(POINTS-1))*w,y=h-data[ix]*h; ctx.beginPath();ctx.arc(x,y,3,0,Math.PI*2);ctx.fillStyle=color;ctx.fill(); }); fullscan.style.left=[10]; } @keyframes bswCanIn{ 0%{opacity:0; transform:translate(-50%,-50%) scale(.82);} 12%{opacity:1; transform:translate(-50%,-50%) scale(1);} 91%{opacity:1; transform:translate(-50%,-50%) scale(1);} 95%{opacity:0;} 100%{opacity:0;} } .bsw-new-badge{ position:absolute; left:80%; top:20%; width:26px; height:12px; transform:translate(-50%,-50%) rotate(-6deg); background:var(–bsw-orange); color:var(–bsw-navy-deep); font-weight:700; font-size:6px; letter-spacing:.03em; display:flex; align-items:center; justify-content:center; border-radius:1.5px; box-shadow:0 2px 4px rgba(0,0,0,.35); opacity:0; animation:bswBadgeIn 16s infinite; } @keyframes bswBadgeIn{ 0%,5%{opacity:0; transform:translate(-50%,-50%) rotate(-6deg) scale(.6);} 13%{opacity:1; transform:translate(-50%,-50%) rotate(-6deg) scale(1);} 91%{opacity:1;} 95%{opacity:0;} 100%{opacity:0;} } /* tracking overlay */ .bsw-corner{ position:absolute; width:7px; height:7px; opacity:0; animation:bswCornerFade 16s infinite; } .bsw-corner.bsw-tl{ left:24%; top:6%; border-top:1px solid var(–bsw-orange-light); border-left:1px solid var(–bsw-orange-light); } .bsw-corner.bsw-tr{ right:14%; top:6%; border-top:1px solid var(–bsw-orange-light); border-right:1px solid var(–bsw-orange-light); } .bsw-corner.bsw-bl{ left:24%; bottom:10%; border-bottom:1px solid var(–bsw-orange-light); border-left:1px solid var(–bsw-orange-light); } .bsw-corner.bsw-br{ right:14%; bottom:10%; border-bottom:1px solid var(–bsw-orange-light); border-right:1px solid var(–bsw-orange-light); } @keyframes bswCornerFade{ 0%,29%{opacity:0;} 34%{opacity:.8;} 88%{opacity:.8;} 92%{opacity:0;} 100%{opacity:0;} } /* heatmap — green > yellow > orange > red intensity scale */ .bsw-heat-layer{ position:absolute; inset:0; } .bsw-wash{ position:absolute; left:50%; top:50%; width:112px; height:157px; transform:translate(-50%,-50%) scale(.6); border-radius:50%; background:radial-gradient(ellipse, rgba(255,214,59,.32) 0%, rgba(76,175,80,.28) 50%, transparent 78%); filter:blur(11px); opacity:0; animation:bswWashIn 16s infinite; } @keyframes bswWashIn{ 0%,35%{opacity:0; transform:translate(-50%,-50%) scale(.6);} 44%{opacity:.75; transform:translate(-50%,-50%) scale(1);} 88%{opacity:.75;} 93%{opacity:0;} 100%{opacity:0;} } .bsw-blob{ position:absolute; border-radius:50%; opacity:0; transform:translate(-50%,-50%) scale(.5); } .bsw-heat-cool{ background:radial-gradient(circle, rgba(255,214,59,.85) 0%, rgba(76,175,80,.6) 45%, rgba(76,175,80,.15) 72%, transparent 85%); filter:blur(6px); } .bsw-heat-mid{ background:radial-gradient(circle, rgba(252,137,2,.9) 0%, rgba(255,214,59,.65) 42%, rgba(76,175,80,.2) 70%, transparent 85%); filter:blur(5px); } .bsw-heat-hot{ background:radial-gradient(circle, rgba(255,45,32,.95) 0%, rgba(252,137,2,.85) 34%, rgba(255,214,59,.45) 62%, transparent 84%); filter:blur(3px); } .bsw-b1{ width:54px; height:54px; animation:bswBloom1 16s infinite; } .bsw-b2{ width:60px; height:60px; animation:bswBloom2 16s infinite; } .bsw-b3{ width:69px; height:69px; animation:bswBloom3 16s infinite; } .bsw-b4{ width:48px; height:48px; animation:bswBloom4 16s infinite; } .bsw-b5{ width:57px; height:57px; animation:bswBloom5 16s infinite; } @keyframes bswBloom1{ 0%,39%{opacity:0; transform:translate(-50%,-50%) scale(.5);} 46%{opacity:1; transform:translate(-50%,-50%) scale(1);} 88%{opacity:1;} 93%{opacity:0;} 100%{opacity:0;} } @keyframes bswBloom2{ 0%,42%{opacity:0; transform:translate(-50%,-50%) scale(.5);} 49%{opacity:1; transform:translate(-50%,-50%) scale(1);} 88%{opacity:1;} 93%{opacity:0;} 100%{opacity:0;} } @keyframes bswBloom3{ 0%,45%{opacity:0; transform:translate(-50%,-50%) scale(.5);} 52%{opacity:1; transform:translate(-50%,-50%) scale(1);} 88%{opacity:1;} 93%{opacity:0;} 100%{opacity:0;} } @keyframes bswBloom4{ 0%,48%{opacity:0; transform:translate(-50%,-50%) scale(.5);} 55%{opacity:.85; transform:translate(-50%,-50%) scale(1);} 88%{opacity:.85;} 93%{opacity:0;} 100%{opacity:0;} } @keyframes bswBloom5{ 0%,51%{opacity:0; transform:translate(-50%,-50%) scale(.5);} 58%{opacity:1; transform:translate(-50%,-50%) scale(1);} 88%{opacity:1;} 93%{opacity:0;} 100%{opacity:0;} } .bsw-badge{ position:absolute; left:80%; top:20%; transform:translate(-50%,-190%) scale(.8); background:rgba(4,28,56,.9); border:1px solid rgba(255,179,71,.5); color:var(–bsw-paper); font-family:'Space Grotesk',sans-serif; font-weight:700; font-size:6.5px; padding:2px 4px; border-radius:4px; white-space:nowrap; opacity:0; animation:bswCalloutIn 16s infinite; } @keyframes bswCalloutIn{ 0%,58%{opacity:0; transform:translate(-50%,-190%) scale(.8);} 64%{opacity:1; transform:translate(-50%,-220%) scale(1);} 88%{opacity:1;} 93%{opacity:0;} 100%{opacity:0;} } .bsw-loop-mask{ position:absolute; inset:0; background:var(–bsw-navy-deep); opacity:0; animation:bswLoopMask 16s infinite; } @keyframes bswLoopMask{ 0%,96%{opacity:0;} 99.5%{opacity:1;} 100%{opacity:1;} } .bsw-glare{ position:absolute; inset:0; background:linear-gradient(115deg, rgba(255,255,255,.05) 0%, transparent 30%, transparent 70%, rgba(255,255,255,.03) 100%); pointer-events:none; } .bsw-vignette{ position:absolute; inset:0; box-shadow:inset 0 0 33px rgba(0,0,0,.55); pointer-events:none; } /* controls — always visible */ .bsw-controls{ position:absolute; left:0; right:0; bottom:0; padding:11px 6px 5px; background:linear-gradient(to top, rgba(2,10,20,.9) 0%, rgba(2,10,20,.6) 55%, transparent 100%); display:flex; flex-direction:column; gap:3px; } .bsw-track{ position:relative; height:2px; border-radius:2px; background:rgba(255,255,255,.22); cursor:pointer; } .bsw-track-fill{ position:absolute; left:0; top:0; bottom:0; width:0%; background:var(–bsw-orange); border-radius:2px; } .bsw-track-thumb{ position:absolute; top:50%; width:7px; height:7px; border-radius:50%; background:var(–bsw-orange); box-shadow:0 0 0 2px rgba(252,137,2,.25); transform:translate(-50%,-50%); left:0%; } .bsw-control-row{ display:flex; align-items:center; gap:6px; } .bsw-btn{ background:none; border:none; padding:0; width:14px; height:14px; display:flex; align-items:center; justify-content:center; color:var(–bsw-paper); cursor:pointer; opacity:.92; } .bsw-btn:hover{ opacity:1; } .bsw-btn:active{ transform:scale(.9); } .bsw-btn svg{ width:9px; height:9px; } .bsw-time{ font-family:'Inter',sans-serif; font-variant-numeric:tabular-nums; font-size:7px; color:var(–bsw-paper-dim); min-width:45px; } .bsw-spacer{ flex:1; } .bsw-fs-flash{ position:absolute; inset:0; background:#fff; opacity:0; pointer-events:none; } .bsw-fs-flash.bsw-flash{ animation:bswFlash .3s ease; } @keyframes bswFlash{ 0%{opacity:.16;} 100%{opacity:0;} }
BRAIN SURGE
NEU
0:00 / 0:16
(function(){ function initOne(root){ var DURATION = 16; var scene = root.querySelector('.bsw-scene'); var track = root.querySelector('.bsw-track'); var trackFill = root.querySelector('.bsw-track-fill'); var trackThumb = root.querySelector('.bsw-track-thumb'); var timeLabel = root.querySelector('.bsw-time'); var playBtn = root.querySelector('.bsw-play-btn'); var playIcon = root.querySelector('.bsw-play-icon'); var pauseIcon = root.querySelector('.bsw-pause-icon'); var volBtn = root.querySelector('.bsw-vol-btn'); var volOnIcon = root.querySelector('.bsw-vol-on-icon'); var volOffIcon = root.querySelector('.bsw-vol-off-icon'); var fsBtn = root.querySelector('.bsw-fs-btn'); var fsFlash = root.querySelector('.bsw-fs-flash'); var animEls = root.querySelectorAll('[data-anim]'); var playing = true; var elapsed = 0; var lastTs = performance.now(); var scrubbing = false; function fmt(t){ var m = Math.floor(t/60); var s = Math.floor(t%60); return m + ':' + String(s).padStart(2,'0'); } function applyDelay(){ var delay = -elapsed + 's'; animEls.forEach(function(el){ el.style.animationDelay = delay; }); } function render(){ var pct = (elapsed/DURATION)*100; trackFill.style.width = pct + '%'; trackThumb.style.left = pct + '%'; timeLabel.textContent = fmt(elapsed) + ' / 0:16'; } function loop(ts){ if(playing && !scrubbing){ var dt = (ts-lastTs)/1000; elapsed = (elapsed + dt) % DURATION; render(); } lastTs = ts; requestAnimationFrame(loop); } requestAnimationFrame(loop); function setPlaying(state){ playing = state; playIcon.style.display = playing ? 'none' : 'block'; pauseIcon.style.display = playing ? 'block' : 'none'; scene.classList.toggle('bsw-paused', !playing); } playBtn.addEventListener('click', function(){ setPlaying(!playing); }); var muted = false; volBtn.addEventListener('click', function(){ muted = !muted; volOnIcon.style.display = muted ? 'none' : 'block'; volOffIcon.style.display = muted ? 'block' : 'none'; }); fsBtn.addEventListener('click', function(){ fsFlash.classList.remove('bsw-flash'); void fsFlash.offsetWidth; fsFlash.classList.add('bsw-flash'); }); function seekFromEvent(e){ var rect = track.getBoundingClientRect(); var x = (e.touches ? e.touches[0].clientX : e.clientX) – rect.left; var ratio = Math.min(1, Math.max(0, x/rect.width)); elapsed = ratio*DURATION; lastTs = performance.now(); applyDelay(); render(); } track.addEventListener('mousedown', function(e){ scrubbing = true; seekFromEvent(e); window.addEventListener('mousemove', seekFromEvent); window.addEventListener('mouseup', function up(){ scrubbing = false; window.removeEventListener('mousemove', seekFromEvent); window.removeEventListener('mouseup', up); }); }); track.addEventListener('touchstart', function(e){ scrubbing = true; seekFromEvent(e); }); track.addEventListener('touchmove', seekFromEvent); track.addEventListener('touchend', function(){ scrubbing = false; }); render(); } function initAll(){ var wraps = document.querySelectorAll('.bsw-wrap:not([data-bsw-ready])'); wraps.forEach(function(root){ root.setAttribute('data-bsw-ready', '1'); initOne(root); }); } if(document.readyState === 'loading'){ document.addEventListener('DOMContentLoaded', initAll); } else { initAll(); } })();

Sehen Sie, was auffällt

.imr-wrap{ width:300px; height:187.5px; font-family:’Inter‘,sans-serif; position:relative; } .imr-wrap, .imr-wrap *{ box-sizing:border-box; } .imr-wrap{ –imr-navy-deep:#041C38; –imr-navy-light:#123A63; –imr-orange:#FC8902; –imr-orange-light:#FFB347; –imr-paper:#F4F6F9; –imr-paper-dim:#B7C4D6; –imr-shadow:rgba(0,0,0,.55); } .imr-device{ width:300px; height:187.5px; } .imr-bezel{ width:100%; height:100%; background:linear-gradient(155deg, #0a2c52 0%, var(–imr-navy-deep) 42%, #020d1c 100%); border-radius:12px; padding:10px 7px 8px; box-shadow: 0 18px 36px -14px var(–imr-shadow), 0 .75px 0 rgba(255,255,255,.05) inset, 0 0 0 .75px rgba(255,255,255,.03); position:relative; } .imr-cam-dot{ position:absolute; left:50%; top:5px; transform:translateX(-50%); width:3px;height:3px;border-radius:50%; background:radial-gradient(circle at 35% 30%, #4a6d94, #0a1c33 70%); } .imr-power-led{ position:absolute; right:7px; top:5px; width:3px;height:3px;border-radius:50%; background:var(–imr-orange); box-shadow:0 0 4px .75px rgba(252,137,2,.9); animation:imrLedPulse 2.6s ease-in-out infinite; } @keyframes imrLedPulse{ 0%,100%{opacity:.5;} 50%{opacity:1;} } .imr-screen{ position:relative; width:100%; height:100%; border-radius:5px; overflow:hidden; background:#000; box-shadow: 0 0 0 .75px rgba(0,0,0,.6), inset 0 0 0 1.5px rgba(0,0,0,.5), inset 0 0 22px rgba(0,0,0,.6); } .imr-scene{ position:absolute; inset:0; display:flex; align-items:center; justify-content:center; background: radial-gradient(120% 90% at 18% 10%, var(–imr-navy-light) 0%, transparent 55%), radial-gradient(100% 80% at 85% 95%, #0d3560 0%, transparent 55%), linear-gradient(160deg, var(–imr-navy-deep) 0%, #06101f 100%); overflow:hidden; } .imr-art{ width:58%; height:auto; overflow:visible; } .imr-bell{ transform-box: fill-box; transform-origin: center; animation: imr-ring 2.4s ease-in-out infinite; } @keyframes imr-ring { 0%, 100% { transform: rotate(0deg); } 20% { transform: rotate(6deg); } 40% { transform: rotate(-5deg); } 60% { transform: rotate(3deg); } 80% { transform: rotate(-2deg); } } .imr-wave-near-l, .imr-wave-near-r { transform-box: fill-box; transform-origin: center; animation: imr-pulse-near 2.4s ease-in-out infinite; } .imr-wave-far-l, .imr-wave-far-r { transform-box: fill-box; transform-origin: center; animation: imr-pulse-far 2.4s ease-in-out infinite; animation-delay: .3s; } @keyframes imr-pulse-near { 0%, 100% { opacity: .4; transform: scale(0.92); } 50% { opacity: 1; transform: scale(1.05); } } @keyframes imr-pulse-far { 0%, 100% { opacity: .25; transform: scale(0.9); } 50% { opacity: .8; transform: scale(1.08); } } .imr-glare{ position:absolute; inset:0; background:linear-gradient(115deg, rgba(255,255,255,.05) 0%, transparent 30%, transparent 70%, rgba(255,255,255,.03) 100%); pointer-events:none; } .imr-vignette{ position:absolute; inset:0; box-shadow:inset 0 0 33px rgba(0,0,0,.55); pointer-events:none; }

Finde Momente, die dich berühren

.iww-wrap{ width:300px; height:187.5px; font-family:'Inter',sans-serif; position:relative; } .iww-wrap, .iww-wrap *{ box-sizing:border-box; } .iww-wrap{ –iww-navy-deep:#041C38; –iww-navy-light:#123A63; –iww-orange:#FC8902; –iww-orange-light:#FFB347; –iww-paper:#F4F6F9; –iww-paper-dim:#B7C4D6; –iww-red:#E4483D; –iww-shadow:rgba(0,0,0,.55); } .iww-device{ width:300px; height:187.5px; } .iww-bezel{ width:100%; height:100%; background:linear-gradient(155deg, #0a2c52 0%, var(–iww-navy-deep) 42%, #020d1c 100%); border-radius:12px; padding:10px 7px 8px; box-shadow: 0 18px 36px -14px var(–iww-shadow), 0 .75px 0 rgba(255,255,255,.05) inset, 0 0 0 .75px rgba(255,255,255,.03); position:relative; } .iww-cam-dot{ position:absolute; left:50%; top:5px; transform:translateX(-50%); width:3px;height:3px;border-radius:50%; background:radial-gradient(circle at 35% 30%, #4a6d94, #0a1c33 70%); } .iww-power-led{ position:absolute; right:7px; top:5px; width:3px;height:3px;border-radius:50%; background:var(–iww-orange); box-shadow:0 0 4px .75px rgba(252,137,2,.9); animation:iwwLedPulse 2.6s ease-in-out infinite; } @keyframes iwwLedPulse{ 0%,100%{opacity:.5;} 50%{opacity:1;} } .iww-screen{ position:relative; width:100%; height:100%; border-radius:5px; overflow:hidden; background:#000; box-shadow: 0 0 0 .75px rgba(0,0,0,.6), inset 0 0 0 1.5px rgba(0,0,0,.5), inset 0 0 22px rgba(0,0,0,.6); } .iww-scene{ position:absolute; inset:0; display:flex; align-items:center; justify-content:center; background: radial-gradient(120% 90% at 18% 10%, var(–iww-navy-light) 0%, transparent 55%), radial-gradient(100% 80% at 85% 95%, #0d3560 0%, transparent 55%), linear-gradient(160deg, var(–iww-navy-deep) 0%, #06101f 100%); overflow:hidden; } .iww-art{ width:74%; height:auto; overflow:visible; } /* card groups — slide in from left, hold, slide out right after verdict */ .iww-card-a{ animation: iww-card-a 10s cubic-bezier(.4,0,.2,1) infinite; } .iww-card-b{ animation: iww-card-b 10s cubic-bezier(.4,0,.2,1) infinite; } .iww-card-c{ animation: iww-card-c 10s cubic-bezier(.4,0,.2,1) infinite; } @keyframes iww-card-a{ 0%,2% { transform: translateX(-260px); opacity:0; } 8% { transform: translateX(0); opacity:1; } 24% { transform: translateX(0); opacity:1; } 28% { transform: translateX(260px); opacity:1; } 30% { transform: translateX(260px); opacity:0; } 100% { opacity:0; } } @keyframes iww-card-b{ 0%,30% { transform: translateX(-260px); opacity:0; } 35% { transform: translateX(0); opacity:1; } 51% { transform: translateX(0); opacity:1; } 55% { transform: translateX(260px); opacity:1; } 57% { transform: translateX(260px); opacity:0; } 100% { opacity:0; } } @keyframes iww-card-c{ 0%,58% { transform: translateX(-260px); opacity:0; } 63% { transform: translateX(0); opacity:1; } 90% { transform: translateX(0); opacity:1; } 94% { transform: translateX(260px); opacity:1; } 96% { transform: translateX(260px); opacity:0; } 100% { opacity:0; } } .iww-winner-frame{ transform-box: fill-box; transform-origin: center; animation: iww-glow 3.2s ease-in-out infinite; } @keyframes iww-glow{ 0%,100%{ stroke-width:8; opacity:1; } 50% { stroke-width:9; opacity:.9; } } /* reject X — draws while card is centered, then rides off with it */ .iww-x{ stroke: var(–iww-red); } .iww-x-a{ animation: iww-x-a 10s linear infinite; } .iww-x-b{ animation: iww-x-b 10s linear infinite; } @keyframes iww-x-a{ 0%,19% { stroke-dashoffset:100; opacity:0; } 20% { opacity:1; } 24% { stroke-dashoffset:0; opacity:1; } 100% { opacity:1; } } @keyframes iww-x-b{ 0%,46% { stroke-dashoffset:100; opacity:0; } 47% { opacity:1; } 51% { stroke-dashoffset:0; opacity:1; } 100% { opacity:1; } } /* winner heart stamp — appears while card centered, rides off with it */ .iww-heart-badge{ transform-box: fill-box; transform-origin: center; animation: iww-heart-pop 10s ease-out infinite; } @keyframes iww-heart-pop{ 0%,66% { opacity:0; transform:scale(.5) rotate(-8deg); } 71% { opacity:1; transform:scale(1) rotate(-8deg); } 100% { opacity:1; transform:scale(1) rotate(-8deg); } } .iww-winner-tag{ font-family:'Inter',sans-serif; font-weight:600; font-size:9px; letter-spacing:.14em; fill: var(–iww-orange-light); animation: iww-tag-in 10s ease-out infinite; } @keyframes iww-tag-in{ 0%,67% { opacity:0; transform:translateY(4px); } 72% { opacity:1; transform:translateY(0); } 100% { opacity:1; } } /* evaluating brackets — fixed on-screen, flash on before each verdict */ .iww-corner{ stroke: var(–iww-orange-light); stroke-width:1.4; animation: iww-corner-fade 10s linear infinite; } @keyframes iww-corner-fade{ 0%,5% { opacity:0; } 8% { opacity:.8; } 19% { opacity:.8; } 20% { opacity:0; } 32% { opacity:0; } 35% { opacity:.8; } 46% { opacity:.8; } 47% { opacity:0; } 100% { opacity:0; } } .iww-loop-mask{ fill: var(–iww-navy-deep); opacity:0; animation: iww-loop-mask 10s linear infinite; } @keyframes iww-loop-mask{ 0%,96% { opacity:0; } 99.5% { opacity:1; } 100% { opacity:1; } } .iww-glare{ position:absolute; inset:0; background:linear-gradient(115deg, rgba(255,255,255,.05) 0%, transparent 30%, transparent 70%, rgba(255,255,255,.03) 100%); pointer-events:none; } .iww-vignette{ position:absolute; inset:0; box-shadow:inset 0 0 33px rgba(0,0,0,.55); pointer-events:none; }
WINNER

Wissen, was funktioniert

.icw-wrap{ width:300px; height:187.5px; font-family:’Inter‘,sans-serif; position:relative; } .icw-wrap, .icw-wrap *{ box-sizing:border-box; } .icw-wrap{ –icw-navy-deep:#041C38; –icw-navy-light:#123A63; –icw-orange:#FC8902; –icw-orange-light:#FFB347; –icw-paper:#F4F6F9; –icw-paper-dim:#B7C4D6; –icw-shadow:rgba(0,0,0,.55); } .icw-device{ width:300px; height:187.5px; } .icw-bezel{ width:100%; height:100%; background:linear-gradient(155deg, #0a2c52 0%, var(–icw-navy-deep) 42%, #020d1c 100%); border-radius:12px; padding:10px 7px 8px; box-shadow: 0 18px 36px -14px var(–icw-shadow), 0 .75px 0 rgba(255,255,255,.05) inset, 0 0 0 .75px rgba(255,255,255,.03); position:relative; } .icw-cam-dot{ position:absolute; left:50%; top:5px; transform:translateX(-50%); width:3px;height:3px;border-radius:50%; background:radial-gradient(circle at 35% 30%, #4a6d94, #0a1c33 70%); } .icw-power-led{ position:absolute; right:7px; top:5px; width:3px;height:3px;border-radius:50%; background:var(–icw-orange); box-shadow:0 0 4px .75px rgba(252,137,2,.9); animation:icwLedPulse 2.6s ease-in-out infinite; } @keyframes icwLedPulse{ 0%,100%{opacity:.5;} 50%{opacity:1;} } .icw-screen{ position:relative; width:100%; height:100%; border-radius:5px; overflow:hidden; background:#000; box-shadow: 0 0 0 .75px rgba(0,0,0,.6), inset 0 0 0 1.5px rgba(0,0,0,.5), inset 0 0 22px rgba(0,0,0,.6); } .icw-scene{ position:absolute; inset:0; display:flex; align-items:center; justify-content:center; background: radial-gradient(120% 90% at 18% 10%, var(–icw-navy-light) 0%, transparent 55%), radial-gradient(100% 80% at 85% 95%, #0d3560 0%, transparent 55%), linear-gradient(160deg, var(–icw-navy-deep) 0%, #06101f 100%); overflow:hidden; } .icw-art{ width:84%; height:auto; overflow:visible; } .icw-art [stroke=“#041C38″]{ stroke:var(–icw-paper-dim); } .icw-art [fill=“#041C38″]{ fill:var(–icw-paper-dim); } .icw-flow { stroke-dasharray: 10 8; animation: icw-flow-move 1.4s linear infinite; } .icw-flow-2 { animation-delay: .15s; } .icw-flow-3 { animation-delay: .3s; } @keyframes icw-flow-move { 0% { stroke-dashoffset: 36; } 100% { stroke-dashoffset: 0; } } .icw-node { transform-box: fill-box; transform-origin: center; animation: icw-node-pulse 2s ease-in-out infinite; } @keyframes icw-node-pulse { 0%, 100% { transform: scale(1); opacity: 1; } 50% { transform: scale(1.15); opacity: .8; } } .icw-arrow { transform-box: fill-box; transform-origin: center; animation: icw-arrow-nudge 2s ease-in-out infinite; } @keyframes icw-arrow-nudge { 0%, 100% { transform: translateX(0); opacity: 1; } 50% { transform: translateX(3px); opacity: .8; } } .icw-winner-thumb rect { transform-box: fill-box; transform-origin: center; animation: icw-winner-glow 3.2s ease-in-out infinite; } @keyframes icw-winner-glow { 0%, 100% { stroke-width: 7; opacity: 1; transform: scale(1); } 50% { stroke-width: 8; opacity: .92; transform: scale(1.015); } } .icw-check { stroke-dasharray: 60; stroke-dashoffset: 60; animation: icw-check-draw 2.6s ease-in-out infinite; } @keyframes icw-check-draw { 0% { stroke-dashoffset: 60; opacity: 0; } 20% { opacity: 1; } 50% { stroke-dashoffset: 0; } 85% { stroke-dashoffset: 0; opacity: 1; } 100% { stroke-dashoffset: 60; opacity: 0; } } .icw-glare{ position:absolute; inset:0; background:linear-gradient(115deg, rgba(255,255,255,.05) 0%, transparent 30%, transparent 70%, rgba(255,255,255,.03) 100%); pointer-events:none; } .icw-vignette{ position:absolute; inset:0; box-shadow:inset 0 0 33px rgba(0,0,0,.55); pointer-events:none; }

Wählen Sie Ihren Gewinner aus.

Alles, was Sie zur Bewertung der kreativen Leistung benötigen.

.imo-wrap *, .imo-wrap *::before, .imo-wrap *::after { box-sizing: border-box; margin: 0; padding: 0; } .imo-wrap { width: 100%; max-width: 860px; margin-top: -50; margin-bottom: -10; padding: 1px 0 1px; background: transparent; } .imo-track-outer { overflow: hidden; } .imo-track { display: flex; transition: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1); } .imo-card { min-width: 100%; background: transparent; border-radius: 16px; padding: 48px 52px 44px; display: grid; grid-template-columns: 160px 1fr; gap: 44px; align-items: center; } .imo-logo-col { display: flex; align-items: center; justify-content: center; border-right: 1px solid rgba(255,255,255,0.1); padding-right: 76px; min-height: 90px; } .imo-logo-col img { max-width: 180px; max-height: 110px; object-fit: contain; display: block; } .imo-logo-placeholder { width: 110px; height: 58px; background: rgba(255,255,255,0.08); border-radius: 8px; display: none; align-items: center; justify-content: center; color: rgba(255,255,255,0.4); font-size: 11px; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; text-align: center; padding: 8px; } .imo-quote-col { display: flex; flex-direction: column; gap: 18px; } .imo-quote-mark { display: block; font-size: 44px; line-height: 1; color: #FF8900; font-weight: 800; letter-spacing: -2px; margin-bottom: -6px; } .imo-quote-text { font-size: 15px; line-height: 1.8; color: rgba(255,255,255,0.88); font-weight: 300; } .imo-author-name { display: block; font-size: 14px; font-weight: 700; color: #FF8900; margin-bottom: 3px; } .imo-author-role { display: block; font-size: 13px; font-weight: 400; color: rgba(255,255,255,0.45); } .imo-nav { display: flex; align-items: center; justify-content: center; gap: 20px; margin-top: 24px; } .imo-nav-btn { background: none; border: 1.5px solid rgba(255,255,255,0.25); border-radius: 50%; width: 38px; height: 38px; display: flex; align-items: center; justify-content: center; cursor: pointer; color: rgba(255,255,255,0.6); transition: border-color 0.2s, background 0.2s, color 0.2s; flex-shrink: 0; } .imo-nav-btn:hover { border-color: #FF8900; background: #FF8900; color: #fff; } .imo-nav-btn svg { width: 15px; height: 15px; } .imo-dots { display: flex; gap: 8px; align-items: center; } .imo-dot { width: 7px; height: 7px; border-radius: 50%; background: rgba(255,255,255,0.2); cursor: pointer; transition: background 0.25s, transform 0.25s; border: none; padding: 0; } .imo-dot.imo-active { background: #FF8900; transform: scale(1.35); } @media (max-width: 640px) { .imo-card { grid-template-columns: 1fr; padding: 32px 24px 28px; gap: 24px; } .imo-logo-col { border-right: none; border-bottom: 1px solid rgba(255,255,255,0.1); padding-right: 0; padding-bottom: 20px; } }
Kantar
Kantar
"

Die Funktionen von Affectiva zur Analyse von Gesichtsausdrücken sind ein wesentlicher Bestandteil der „Link“-Suite kreativer Lösungen von Kantar. Seit über acht Jahren nutzen wir diese Funktionen, um den ROI verschiedener Arten kreativer Inhalte zu bewerten und zu analysieren. Affectiva ist in seinem Bereich hinsichtlich Umfang, Genauigkeit, Kontextverständnis und Flexibilität bei der Erfüllung unserer geschäftlichen Anforderungen unübertroffen.

Duncan Southgate , Global Creative & Media Lead, Insights Division bei Kantar
MarketCast
MarketCast
"

Ich finde die Erreichbarkeit und das Engagement des Teams phänomenal. Die Bereitschaft aller, gemeinsam mit uns das zu entwickeln, was wir benötigen, und die Fragen zu beantworten, die wir klären müssen – meiner Erfahrung nach gehen nicht viele Anbieter so weit wie das Affectiva-Team, mit dem die Zusammenarbeit eine wahre Freude war.

Kate Monninger, VP of Campaign Analytics, MarketCast
CloudArmy
CloudArmy
"

Was bisher fehlte, war eine System-1-Metrik in Echtzeit, die sich in andere Informationsquellen integrieren lässt. Die Möglichkeit, über zuverlässige Zeitreihendaten zu verfügen, ist wirklich wertvoll. Für uns war es naheliegend, uns an Affectiva zu wenden, da die Technologie skalierbar ist und sich hervorragend in die Plattform integrieren lässt.

Thom Noble, Präsident und CSO, CloudArmy
Nature
Nature
"

Die Emotion-AI-Technologie von Affectiva ist eine fantastische Ergänzung für die Werbungsforschung von Nature. Wir können sie problemlos in unsere Umfragen einbinden und die Mimik sowie die emotionale Reaktion der Befragten beobachten, während diese sich eine Werbung ansehen. So können wir sehr spezifische Empfehlungen aussprechen und Optimierungsvorschläge für jede einzelne Szene geben.

Lizi Pritchard, stellvertretende Direktorin, Nature
Vidlet
Vidlet
"

Durch den Einsatz der Emotion-AI-Analyse von Affectiva bei einem kürzlich durchgeführten Test eines Werbetrailers konnten wir den genauen Moment identifizieren, in dem die Zuschauer beim Anschauen emotional den Bezug verloren. Die Kombination dieser Kennzahlen mit den Kommentaren der Zuschauer lieferte ein tieferes Verständnis dafür, was genau an dem Trailer die Zuschauer abschreckte, und ermöglichte es unserem Kunden, noch vor dem Start wirksame Änderungen vorzunehmen.

Paige Guge , Designforscherin bei Vidlet
(function() { var track = document.getElementById('imoTrack'); var dotsEl = document.getElementById('imoDots'); var cards = track.querySelectorAll('.imo-card'); var total = cards.length; var current = 0; cards.forEach(function(_, i) { var d = document.createElement('button'); d.className = 'imo-dot' + (i === 0 ? ' imo-active' : ''); d.addEventListener('click', function() { goTo(i); }); dotsEl.appendChild(d); }); function goTo(n) { current = ((n % total) + total) % total; track.style.transform = 'translateX(-' + (current * 100) + '%)'; dotsEl.querySelectorAll('.imo-dot').forEach(function(d, i) { d.classList.toggle('imo-active', i === current); }); } document.getElementById('imoPrev').addEventListener('click', function() { goTo(current – 1); }); document.getElementById('imoNext').addEventListener('click', function() { goTo(current + 1); }); var startX = 0; track.addEventListener('touchstart', function(e) { startX = e.touches[0].clientX; }, { passive: true }); track.addEventListener('touchend', function(e) { var dx = e.changedTouches[0].clientX – startX; if (Math.abs(dx) > 40) goTo(dx < 0 ? current + 1 : current – 1); }); })();

Vom Hochladen bis zur Auswertung in wenigen Tagen statt Wochen – skalieren Sie Ihre Videotests ohne Engpässe.

.imo-cta-banner{ –navy-950:#060f1f; –navy-900:#0a1f3d; –navy-800:#132c50; –accent-600:#ff6900; –accent-300:#ffb37a; –grey-300:#c9c2ba; width:100%; max-width:1280px; margin:0 auto; } .imo-cta-banner *{ box-sizing:border-box; } .imo-cta-banner .banner{ position:relative; display:block; width:100%; height:216px; border-radius:22px; overflow:hidden; background: radial-gradient(120% 160% at 8% 0%, #163a63 0%, transparent 55%), linear-gradient(115deg, var(–navy-950) 0%, var(–navy-900) 45%, var(–navy-800) 100%); cursor:pointer; isolation:isolate; text-decoration:none; transition:transform .45s cubic-bezier(.2,.7,.3,1), box-shadow .45s ease; box-shadow:0 0 0 1px rgba(255,105,0,0.08); } .imo-cta-banner .banner:hover{ transform:translateY(-2px); box-shadow:0 18px 40px -18px rgba(6,15,31,.7), 0 0 0 1px rgba(255,105,0,0.25); } .imo-cta-banner .grid{ position:absolute; inset:0; background-image:radial-gradient(rgba(255,179,122,0.10) 1px, transparent 1.4px); background-size:22px 22px; -webkit-mask-image:linear-gradient(100deg, transparent 0%, black 30%, black 70%, transparent 100%); mask-image:linear-gradient(100deg, transparent 0%, black 30%, black 70%, transparent 100%); opacity:.55; } .imo-cta-banner .face-wrap{ position:absolute; inset:0; } .imo-cta-banner .mesh-edge{ fill:none; stroke:var(–accent-600); stroke-opacity:.4; stroke-width:1.1; stroke-linecap:round; } .imo-cta-banner .feature-edge{ fill:none; stroke:var(–accent-300); stroke-opacity:.75; stroke-width:1.3; stroke-linecap:round; } .imo-cta-banner .ring{ fill:none; stroke:var(–accent-600); stroke-width:1.3; transform-origin:0px 0px; animation:imo-ringPulse 3.8s ease-out infinite; opacity:0; } .imo-cta-banner .ring2{ animation-delay:1.9s; } @keyframes imo-ringPulse{ 0%{ transform:scale(.6); opacity:.45; } 100%{ transform:scale(1.5); opacity:0; } } .imo-cta-banner .au{ fill:var(–accent-300); transform-origin:center; transform-box:fill-box; animation:imo-auPulse 2.6s ease-in-out infinite; } @keyframes imo-auPulse{ 0%,100%{ opacity:.45; transform:scale(.7); } 50%{ opacity:1; transform:scale(1.3); } } .imo-cta-banner .content{ position:relative; z-index:2; height:100%; display:flex; flex-direction:column; align-items:flex-start; justify-content:center; padding:0 68px; gap:14px; } .imo-cta-banner .eyebrow{ font-size:12px; font-weight:600; letter-spacing:.22em; text-transform:uppercase; color:var(–grey-300); display:flex; align-items:center; gap:10px; margin:0; } .imo-cta-banner .eyebrow .dot{ width:6px;height:6px;border-radius:50%; background:var(–accent-600); animation:imo-pulse 2.2s ease-out infinite; } @keyframes imo-pulse{ 0%{ box-shadow:0 0 0 0 rgba(255,105,0,.55);} 70%{ box-shadow:0 0 0 9px rgba(255,105,0,0);} 100%{ box-shadow:0 0 0 0 rgba(255,105,0,0);} } .imo-cta-banner .cta-row{ display:flex; align-items:center; gap:22px; } .imo-cta-banner .headline{ font-size:30px; font-weight:400; color:var(–accent-600); margin:0; line-height:1.2; transition:color .35s ease; } .imo-cta-banner .banner:hover .headline{ color:var(–accent-300); } .imo-cta-banner .arrow{ width:38px; height:38px; border-radius:50%; border:1.5px solid rgba(255,105,0,.4); display:flex; align-items:center; justify-content:center; flex:none; transition:transform .4s cubic-bezier(.2,.7,.3,1), border-color .35s ease, background .35s ease; } .imo-cta-banner .banner:hover .arrow{ transform:translateX(6px); border-color:var(–accent-600); background:rgba(255,105,0,.08); } .imo-cta-banner .arrow svg{ width:16px; height:16px; stroke:var(–accent-300); } .imo-cta-banner .sub{ font-size:13px; color:var(–grey-300); margin:0; } @media (max-width:640px){ .imo-cta-banner .banner{ height:auto; padding:28px 0; } .imo-cta-banner .content{ padding:0 28px; } .imo-cta-banner .headline{ font-size:22px; } .imo-cta-banner .face-wrap{ display:none; } }

Entwickelt für die Fragen, die Marketingfachleute tatsächlich stellen.

.card-bullets { list-style: none; display: flex; flex-direction: column; gap: 10px; margin: 20px 0; padding: 0; } .card-bullets li { display: flex; align-items: flex-start; gap: 8px; font-size: 13px; color: #041C38; font-weight: 400; font-family: 'Open Sans', sans-serif; } .bull-dot { width: 6px; height: 6px; border-radius: 50%; background: #FF8900; flex-shrink: 0; margin-top: 6px; }
  • Momentane Gesichtsausdrucks- und Eye-Tracking-Daten
  • Emotionskurven von Moment zu Moment über die gesamte Werbeanzeige hinweg
  • Im Vergleich zu über 100.000 getesteten Werbespots nach Markt und Kategorie
.card-bullets { list-style: none; display: flex; flex-direction: column; gap: 10px; margin: 20px 0; padding: 0; } .card-bullets li { display: flex; align-items: flex-start; gap: 8px; font-size: 13px; color: #041C38; font-weight: 400; font-family: 'Open Sans', sans-serif; } .bull-dot { width: 6px; height: 6px; border-radius: 50%; background: #FF8900; flex-shrink: 0; margin-top: 6px; }
  • Zuschauerengagement und Aufmerksamkeit über den gesamten Trailer hinweg dargestellt
  • Identifizieren Sie besonders wirkungsvolle Momente und emotionale Wendepunkte
  • Vergleich mehrerer Schnitte oder Versionen in einer einzigen Studie

Affectiva SDK

  1. t-0.35)/0.2
  2. t-0.3)/0.2
  3. t-0.4)/0.2
  4. t-0.28)/0.22
  5. t-0.3)/0.15
  6. t-0.6)/0.15
  7. t-0.4)/0.25
  8. f,i)=>{f.classList.toggle("active",i===ai);f.classList.toggle("passed",i<ai);}); fbars.forEach((fb,i)=>{ if(i<ai)fb.style.transform="scaleX(1)"; else if(i===ai){const lp=(p-i/NUM_FRAMES)/(1/NUM_FRAMES);fb.style.transform=`scaleX(${Math.min(lp,1)})`;} else fb.style.transform="scaleX(0)"; }); if(ai!==lastActiveIdx){bgs.forEach((bg,i)=>bg.classList.toggle("active",i===ai
  9. {data,color,lw})=>{ ctx.beginPath();ctx.strokeStyle=color;ctx.lineWidth=6;ctx.lineJoin="round";ctx.globalAlpha=0.08; for(let i=0;i<rp;i++){const x=(i/(POINTS-1
  10. rp-1)/(POINTS-1)*w)+"px"; } function animate(ts){ if(!startTime)startTime=ts; const p=Math.min((ts-startTime)/DURATION,1),e=ss(p); draw(e);updateFrames(e); const s=Math.floor(e*30); tlabel.textContent=`0:${String(s).padStart(2,"0")} / 0:30`; if(p<1)requestAnimationFrame(animate); else setTimeout(()=>{startTime=null;lastActiveIdx=-1;requestAnimationFrame(animate);},2000); } setTimeout(()=>{requestAnimationFrame(animate);},300);
    .bsw-wrap{ width:300px; height:187.5px; font-family:'Inter',sans-serif; position:relative; } .bsw-wrap, .bsw-wrap *{ box-sizing:border-box; } .bsw-wrap{ –bsw-navy-deep:#041C38; –bsw-navy-mid:#0A2A4D; –bsw-navy-light:#123A63; –bsw-orange:#FC8902; –bsw-orange-light:#FFB347; –bsw-paper:#F4F6F9; –bsw-paper-dim:#B7C4D6; –bsw-shadow:rgba(0,0,0,.55); } .bsw-device{ width:300px; height:187.5px; } .bsw-bezel{ width:100%; height:100%; background:linear-gradient(155deg, #0a2c52 0%, var(–bsw-navy-deep) 42%, #020d1c 100%); border-radius:12px; padding:10px 7px 8px; box-shadow: 0 18px 36px -14px var(–bsw-shadow), 0 .75px 0 rgba(255,255,255,.05) inset, 0 0 0 .75px rgba(255,255,255,.03); position:relative; } .bsw-cam-dot{ position:absolute; left:50%; top:5px; transform:translateX(-50%); width:3px;height:3px;border-radius:50%; background:radial-gradient(circle at 35% 30%, #4a6d94, #0a1c33 70%); } .bsw-power-led{ position:absolute; right:7px; top:5px; width:3px;height:3px;border-radius:50%; background:var(–bsw-orange); box-shadow:0 0 4px .75px rgba(252,137,2,.9); animation:bswLedPulse 2.6s ease-in-out infinite; } @keyframes bswLedPulse{ 0%,100%{opacity:.5;} 50%{opacity:1;} } .bsw-screen{ position:relative; width:100%; height:100%; border-radius:5px; overflow:hidden; background:#000; box-shadow: 0 0 0 .75px rgba(0,0,0,.6), inset 0 0 0 1.5px rgba(0,0,0,.5), inset 0 0 22px rgba(0,0,0,.6); } .bsw-scene{ position:absolute; inset:0; background: radial-gradient(120% 90% at 18% 10%, var(–bsw-navy-light) 0%, transparent 55%), radial-gradient(100% 80% at 85% 95%, #0d3560 0%, transparent 55%), linear-gradient(160deg, var(–bsw-navy-deep) 0%, #06101f 100%); overflow:hidden; } .bsw-scene.bsw-paused, .bsw-scene.bsw-paused *{ animation-play-state:paused !important; } /* ambient energy swoosh */ .bsw-swoosh{ position:absolute; left:50%; top:52%; width:150%; height:150%; transform:translate(-50%,-50%); background:conic-gradient(from 0deg, transparent 0deg, rgba(252,137,2,.32) 8deg, transparent 22deg, transparent 195deg, rgba(255,179,71,.22) 206deg, transparent 222deg, transparent 360deg); border-radius:50%; filter:blur(2px); mix-blend-mode:screen; opacity:0; animation:bswSwooshSpin 24s linear infinite, bswSwooshFade 16s infinite; } @keyframes bswSwooshSpin{ to{ transform:translate(-50%,-50%) rotate(360deg); } } @keyframes bswSwooshFade{ 0%,2%{opacity:0;} 6%{opacity:.55;} 34%{opacity:.55;} 39%{opacity:.15;} 88%{opacity:.15;} 92%{opacity:0;} 100%{opacity:0;} } /* fizz bubbles */ .bsw-bubble{ position:absolute; width:2.5px; height:2.5px; border-radius:50%; background:rgba(255,179,71,.85); opacity:0; animation-name:bswBubbleRise; animation-timing-function:ease-in; animation-iteration-count:infinite; } .bsw-bubble1{ left:45%; top:80%; animation-duration:3.4s; } .bsw-bubble2{ left:53%; top:82%; animation-duration:4.1s; animation-delay:-1.2s; } .bsw-bubble3{ left:49%; top:77%; animation-duration:3.7s; animation-delay:-2.3s; } @keyframes bswBubbleRise{ 0%{ transform:translateY(0); opacity:0; } 10%{ opacity:.9; } 88%{ opacity:0; } 100%{ transform:translateY(-34px); opacity:0; } } /* tagline */ .bsw-tagline{ position:absolute; left:8%; right:8%; top:15%; text-align:center; font-weight:700; font-size:11px; letter-spacing:.03em; color:var(–bsw-paper); opacity:0; animation:bswTaglineIn 16s infinite; } .bsw-tagline span{ color:var(–bsw-orange-light); } @keyframes bswTaglineIn{ 0%,4%{opacity:0; transform:translateY(6px);} 12%{opacity:1; transform:translateY(0);} 15%{opacity:1;} 19%{opacity:0; transform:translateY(-5px);} 100%{opacity:0;} } /* can */ .bsw-pedestal{ position:absolute; left:50%; top:83%; width:20%; height:7px; transform:translateX(-50%); background:radial-gradient(ellipse, rgba(0,0,0,.5) 0%, transparent 72%); opacity:0; animation:bswCanIn 16s infinite; } .bsw-can{ position:absolute; left:50%; top:52%; width:26%; transform:translate(-50%,-50%) scale(.82); opacity:0; animation:bswCanIn 16s infinite; } .bsw-can svg{ width:100%; display:block; filter:drop-shadow(0 8px 12px rgba(0,0,0,.5