<section id="vividi-lead-magnet-master" style="background-color: #08080a; color: #f3f4f6; font-family: 'Fahkwang', sans-serif;">
<style>
@import url('https://fonts.googleapis.com/css2?family=Fahkwang:wght@300;400;500;600;700;800&display=swap');
#vividi-lead-magnet-master {
padding-block: 80px;
padding-inline: var(--et-spacing-horizontal, 24px);
background-color: #08080a;
background-image: radial-gradient(circle at 10% 20%, rgba(37, 99, 235, 0.05) 0%, transparent 50%),
radial-gradient(circle at 90% 80%, rgba(241, 223, 138, 0.04) 0%, transparent 60%);
position: relative;
overflow: hidden;
}
@media (min-width: 1024px) {
#vividi-lead-magnet-master {
padding-block: 100px;
padding-inline: var(--et-spacing-horizontal-lg, 48px);
}
}
#vividi-lead-magnet-master .container {
margin-inline: auto;
max-width: 1200px;
position: relative;
z-index: 10;
}
/* Stepper Progress bar */
#vividi-lead-magnet-master .stepper-container {
display: flex;
justify-content: center;
align-items: center;
gap: 12px;
margin-bottom: 56px;
flex-wrap: wrap;
}
#vividi-lead-magnet-master .step-node {
display: flex;
align-items: center;
gap: 8px;
}
#vividi-lead-magnet-master .step-circle {
width: 36px;
height: 36px;
border-radius: 50%;
border: 2px solid #2a2a2e;
display: flex;
align-items: center;
justify-content: center;
font-size: 14px;
font-weight: 700;
color: #94a3b8;
background-color: #0d0d14;
transition: all 0.3s ease;
}
#vividi-lead-magnet-master .step-node.active .step-circle {
border-color: #f1df8a;
color: #000000;
background-color: #f1df8a;
box-shadow: 0 0 16px rgba(241, 223, 138, 0.4);
}
#vividi-lead-magnet-master .step-node.completed .step-circle {
border-color: #2563eb;
color: #ffffff;
background-color: #2563eb;
}
#vividi-lead-magnet-master .step-label {
font-size: 13px;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.05em;
color: #64748b;
transition: color 0.3s ease;
}
#vividi-lead-magnet-master .step-node.active .step-label {
color: #ffffff;
}
#vividi-lead-magnet-master .step-node.completed .step-label {
color: #2563eb;
}
#vividi-lead-magnet-master .step-line {
width: 40px;
height: 1px;
background-color: #2a2a2e;
}
#vividi-lead-magnet-master .step-node.completed + .step-line {
background-color: #2563eb;
}
/* Typography */
#vividi-lead-magnet-master .badge-top {
display: inline-block;
background: rgba(37, 99, 235, 0.1);
border: 1px solid rgba(37, 99, 235, 0.25);
color: #38bdf8;
font-size: 12px;
font-weight: 700;
letter-spacing: 0.1em;
text-transform: uppercase;
padding: 6px 14px;
border-radius: 100px;
margin-bottom: 24px;
text-align: center;
}
#vividi-lead-magnet-master .main-heading {
font-size: 32px;
font-weight: 800;
line-height: 1.15;
letter-spacing: -0.02em;
color: #ffffff;
margin-bottom: 20px;
text-align: center;
text-wrap: balance;
}
@media (min-width: 640px) {
#vividi-lead-magnet-master .main-heading {
font-size: 46px;
}
}
#vividi-lead-magnet-master .main-sub {
font-size: 18px;
color: #94a3b8;
max-width: 720px;
margin-inline: auto;
text-align: center;
margin-bottom: 50px;
line-height: 1.6;
}
/* Layout Grids */
#vividi-lead-magnet-master .panel {
display: none;
animation: fadeIn 0.4s ease-out forwards;
}
#vividi-lead-magnet-master .panel.active {
display: block;
}
@keyframes fadeIn {
from { opacity: 0; transform: translateY(10px); }
to { opacity: 1; transform: translateY(0); }
}
#vividi-lead-magnet-master .layout-cols {
display: grid;
grid-template-columns: 1fr;
gap: 40px;
align-items: start;
}
@media (min-width: 1024px) {
#vividi-lead-magnet-master .layout-cols {
grid-template-columns: 46% 54%;
gap: 48px;
}
}
/* Card styling */
#vividi-lead-magnet-master .card {
background: rgba(14, 15, 23, 0.7);
backdrop-filter: blur(16px);
-webkit-backdrop-filter: blur(16px);
border: 1px solid rgba(255, 255, 255, 0.06);
border-radius: 20px;
padding: 24px;
box-shadow: 0 20px 45px rgba(0, 0, 0, 0.5);
}
@media (min-width: 640px) {
#vividi-lead-magnet-master .card {
padding: 32px;
}
}
#vividi-lead-magnet-master .card-title {
font-size: 18px;
font-weight: 700;
color: #ffffff;
margin-bottom: 12px;
display: flex;
align-items: center;
gap: 10px;
}
#vividi-lead-magnet-master .card-desc {
font-size: 14px;
line-height: 1.6;
color: #94a3b8;
margin-bottom: 24px;
}
/* Interactive Elements step 1 */
#vividi-lead-magnet-master .emotions-grid {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 10px;
margin-bottom: 24px;
}
@media (min-width: 480px) {
#vividi-lead-magnet-master .emotions-grid {
grid-template-columns: repeat(3, 1fr);
}
}
#vividi-lead-magnet-master .emotion-pill {
background: rgba(255, 255, 255, 0.02);
border: 1px solid rgba(255, 255, 255, 0.08);
border-radius: 12px;
padding: 12px 10px;
font-size: 13.5px;
font-weight: 600;
color: rgba(243, 244, 246, 0.8);
cursor: pointer;
font-family: inherit;
transition: all 0.25s cubic-bezier(0.16, 1, 0.3, 1);
text-align: center;
}
#vividi-lead-magnet-master .emotion-pill:hover {
background: rgba(255, 255, 255, 0.06);
color: #ffffff;
border-color: rgba(255, 255, 255, 0.18);
}
#vividi-lead-magnet-master .emotion-pill.active {
border-color: var(--emotion-color, #f1df8a);
color: var(--emotion-color, #f1df8a);
background: var(--emotion-bg-glow, rgba(241, 223, 138, 0.08));
box-shadow: 0 0 12px var(--emotion-bg-glow, rgba(241, 223, 138, 0.15));
}
#vividi-lead-magnet-master .field-group {
margin-bottom: 24px;
}
#vividi-lead-magnet-master .label-row {
display: flex;
justify-content: space-between;
align-items: center;
font-size: 13.5px;
font-weight: 600;
margin-bottom: 10px;
color: #e2e8f0;
}
#vividi-lead-magnet-master .label-val {
color: var(--active-color, #f1df8a);
font-weight: 700;
}
#vividi-lead-magnet-master .range-input {
-webkit-appearance: none;
width: 100%;
height: 6px;
border-radius: 100px;
background: rgba(255, 255, 255, 0.08);
outline: none;
display: block;
cursor: pointer;
}
#vividi-lead-magnet-master .range-input::-webkit-slider-thumb {
-webkit-appearance: none;
width: 20px;
height: 20px;
border-radius: 50%;
background: var(--active-color, #f1df8a);
box-shadow: 0 0 10px var(--active-color, #f1df8a);
cursor: pointer;
transition: background 0.2s, box-shadow 0.2s;
}
/* Flying Spark system */
#vividi-lead-magnet-master .spark-emitter-wrap {
display: flex;
align-items: center;
gap: 16px;
margin-top: 24px;
margin-bottom: 16px;
}
#vividi-lead-magnet-master .btn-fire {
background-color: var(--active-color, #f1df8a);
color: #000000;
font-family: inherit;
font-weight: 800;
font-size: 13px;
text-transform: uppercase;
letter-spacing: 0.06em;
padding: 14px 28px;
border: 1px solid var(--active-color, #f1df8a);
border-radius: 8px;
cursor: pointer;
transition: all 0.3s;
display: inline-flex;
align-items: center;
gap: 8px;
}
#vividi-lead-magnet-master .btn-fire:hover:not(:disabled) {
transform: translateY(-1px);
box-shadow: 0 8px 20px var(--active-color-glow, rgba(241, 223, 138, 0.35));
}
#vividi-lead-magnet-master .btn-fire:disabled {
background: rgba(255, 255, 255, 0.05);
border-color: rgba(255, 255, 255, 0.08);
color: rgba(255, 255, 255, 0.2);
cursor: not-allowed;
}
#vividi-lead-magnet-master .limit-alert {
font-size: 12.5px;
color: #f1df8a;
line-height: 1.5;
background: rgba(241, 223, 138, 0.06);
border-left: 3px solid #f1df8a;
padding: 10px 14px;
border-radius: 0 6px 6px 0;
display: none;
}
#vividi-lead-magnet-master .added-echoes-list {
margin-top: 24px;
border-top: 1px solid rgba(255, 255, 255, 0.06);
padding-top: 16px;
}
#vividi-lead-magnet-master .echo-row-item {
display: flex;
justify-content: space-between;
align-items: center;
background: rgba(255, 255, 255, 0.02);
border: 1px solid rgba(255, 255, 255, 0.05);
padding: 10px 14px;
border-radius: 8px;
margin-bottom: 8px;
font-size: 13.5px;
}
#vividi-lead-magnet-master .echo-dot {
display: inline-block;
width: 8px;
height: 8px;
border-radius: 50%;
margin-right: 8px;
box-shadow: 0 0 6px currentColor;
}
#vividi-lead-magnet-master .echo-item-remove {
background: transparent;
border: none;
color: rgba(255, 255, 255, 0.4);
cursor: pointer;
font-size: 16px;
padding: 0 6px;
}
#vividi-lead-magnet-master .echo-item-remove:hover {
color: #ef4444;
}
/* Sculpture visualizer */
#vividi-lead-magnet-master .visualizer-caption {
font-size: 12px;
text-transform: uppercase;
letter-spacing: 0.12em;
color: #f1df8a;
font-weight: 700;
margin-bottom: 12px;
display: inline-flex;
align-items: center;
gap: 8px;
}
#vividi-lead-magnet-master .visualizer-dot {
width: 6px;
height: 6px;
background-color: #f1df8a;
border-radius: 50%;
box-shadow: 0 0 8px #f1df8a;
animation: capPulse 1.5s infinite alternate;
}
@keyframes capPulse {
0% { opacity: 0.4; }
100% { opacity: 1; }
}
#vividi-lead-magnet-master .canvas-frame {
position: relative;
background-color: #030305;
border: 1px solid rgba(255, 255, 255, 0.08);
border-radius: 20px;
overflow: hidden;
aspect-ratio: 16 / 10;
box-shadow: 0 25px 50px rgba(0, 0, 0, 0.6);
width: 100%;
}
#vividi-lead-magnet-master .canvas-frame canvas {
display: block;
width: 100%;
height: 100%;
}
#vividi-lead-magnet-master .canvas-title-badge {
position: absolute;
top: 16px;
left: 16px;
font-size: 11px;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.08em;
background: rgba(0,0,0,0.65);
padding: 4px 10px;
border-radius: 4px;
backdrop-filter: blur(4px);
color: rgba(255,255,255,0.6);
border: 1px solid rgba(255,255,255,0.06);
}
#vividi-lead-magnet-master .canvas-counter-badge {
position: absolute;
top: 16px;
right: 16px;
font-size: 11px;
font-weight: 700;
background: rgba(0,0,0,0.65);
padding: 4px 10px;
border-radius: 4px;
backdrop-filter: blur(4px);
color: #f1df8a;
border: 1px solid rgba(241,223,138,0.2);
}
#vividi-lead-magnet-master .flying-spark {
position: fixed;
pointer-events: none;
z-index: 100000;
border-radius: 50%;
background: #ffffff;
box-shadow: 0 0 15px var(--spark-color, #f1df8a), 0 0 25px var(--spark-color, #f1df8a);
width: 14px;
height: 14px;
opacity: 0;
}
/* ROI Step 2 inputs */
#vividi-lead-magnet-master .form-grid {
display: grid;
grid-template-columns: 1fr;
gap: 16px;
}
@media (min-width: 640px) {
#vividi-lead-magnet-master .form-grid {
grid-template-columns: 1fr 1fr;
gap: 20px;
}
}
#vividi-lead-magnet-master .input-box {
display: flex;
flex-direction: column;
gap: 6px;
}
#vividi-lead-magnet-master .input-label {
font-size: 13px;
font-weight: 600;
color: #cbd5e1;
}
#vividi-lead-magnet-master .input-label .subhint {
font-weight: 400;
color: #64748b;
}
#vividi-lead-magnet-master .text-field {
background: #0d0d14;
border: 1px solid rgba(255,255,255,0.08);
border-radius: 8px;
padding: 12px 14px;
font-size: 15px;
font-family: inherit;
color: #ffffff;
outline: none;
transition: all 0.2s;
}
#vividi-lead-magnet-master .text-field:focus {
border-color: #2563eb;
box-shadow: 0 0 8px rgba(37,99,235,0.2);
}
#vividi-lead-magnet-master .text-field.error-state {
border-color: #f87171 !important;
background: rgba(248,113,113,0.03);
}
#vividi-lead-magnet-master .field-error-msg {
font-size: 12px;
color: #f87171;
display: none;
}
#vividi-lead-magnet-master .input-box.has-error .field-error-msg {
display: block;
}
/* ROI stats output */
#vividi-lead-magnet-master .output-stats-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 12px;
margin-bottom: 24px;
}
#vividi-lead-magnet-master .stat-card {
background: rgba(255, 255, 255, 0.02);
border: 1px solid rgba(255, 255, 255, 0.05);
border-radius: 12px;
padding: 16px 14px;
text-align: center;
}
#vividi-lead-magnet-master .stat-card .stat-val {
font-size: 18px;
font-weight: 700;
color: #ffffff;
margin-bottom: 6px;
line-height: 1.2;
}
@media (min-width: 480px) {
#vividi-lead-magnet-master .stat-card .stat-val {
font-size: 21px;
}
}
#vividi-lead-magnet-master .stat-card .stat-lbl {
font-size: 11px;
color: #64748b;
line-height: 1.4;
}
#vividi-lead-magnet-master .stat-card.brand-highlight {
border-color: rgba(37, 99, 235, 0.35);
background: rgba(37, 99, 235, 0.04);
}
#vividi-lead-magnet-master .stat-card.brand-highlight .stat-val {
color: #38bdf8;
font-size: 20px;
}
@media (min-width: 480px) {
#vividi-lead-magnet-master .stat-card.brand-highlight .stat-val {
font-size: 24px;
}
}
/* Locked PDF card */
#vividi-lead-magnet-master .pdf-preview-box {
border-radius: 12px;
border: 1px solid rgba(255, 255, 255, 0.06);
background: #09090e;
overflow: hidden;
margin-bottom: 16px;
position: relative;
}
#vividi-lead-magnet-master .pdf-header {
background: #2563eb;
padding: 14px 20px;
display: flex;
justify-content: space-between;
align-items: center;
}
#vividi-lead-magnet-master .pdf-doc-title {
font-size: 12px;
font-weight: 700;
letter-spacing: 0.1em;
text-transform: uppercase;
color: #ffffff;
}
#vividi-lead-magnet-master .pdf-doc-badge {
font-size: 10px;
background: rgba(255,255,255,0.15);
padding: 2px 6px;
border-radius: 3px;
color: #ffffff;
font-weight: 600;
}
#vividi-lead-magnet-master .pdf-body {
padding: 20px;
display: flex;
flex-direction: column;
gap: 12px;
transition: filter 0.3s ease;
}
#vividi-lead-magnet-master .pdf-body.locked {
filter: blur(4.5px);
pointer-events: none;
user-select: none;
}
#vividi-lead-magnet-master .pdf-row {
display: flex;
justify-content: space-between;
border-bottom: 1px solid rgba(255,255,255,0.04);
padding-bottom: 10px;
font-size: 13px;
}
#vividi-lead-magnet-master .pdf-row:last-child {
border-bottom: none;
padding-bottom: 0;
}
#vividi-lead-magnet-master .pdf-key {
color: #64748b;
}
#vividi-lead-magnet-master .pdf-val {
font-weight: 700;
color: #ffffff;
}
#vividi-lead-magnet-master .pdf-lock-overlay {
position: absolute;
inset: 44px 0 0 0;
background: rgba(9, 9, 14, 0.7);
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 12px;
padding: 20px;
text-align: center;
z-index: 10;
}
#vividi-lead-magnet-master .pdf-lock-icon {
font-size: 28px;
}
#vividi-lead-magnet-master .pdf-lock-text {
font-size: 13px;
font-weight: 600;
color: #e2e8f0;
max-width: 280px;
line-height: 1.4;
}
#vividi-lead-magnet-master .pdf-lock-text strong {
color: #f1df8a;
}
/* Form step 3 */
#vividi-lead-magnet-master .form-grid-3 {
display: grid;
grid-template-columns: 1fr;
gap: 14px;
}
@media (min-width: 640px) {
#vividi-lead-magnet-master .form-grid-3 {
grid-template-columns: 1fr 1fr;
gap: 16px;
}
#vividi-lead-magnet-master .full-span-col {
grid-column: 1 / -1;
}
}
#vividi-lead-magnet-master .select-field {
background: #0d0d14;
border: 1px solid rgba(255,255,255,0.08);
border-radius: 8px;
padding: 12px 14px;
font-size: 15px;
font-family: inherit;
color: #ffffff;
outline: none;
cursor: pointer;
}
#vividi-lead-magnet-master .select-field option {
background-color: #0d0d14;
color: #ffffff;
}
#vividi-lead-magnet-master .checkbox-row {
display: flex;
align-items: flex-start;
gap: 12px;
margin-top: 6px;
}
#vividi-lead-magnet-master .checkbox-field {
margin-top: 3px;
accent-color: #2563eb;
width: 16px;
height: 16px;
cursor: pointer;
flex-shrink: 0;
}
#vividi-lead-magnet-master .checkbox-label {
font-size: 12.5px;
line-height: 1.5;
color: #94a3b8;
cursor: pointer;
}
#vividi-lead-magnet-master .checkbox-label a {
color: #38bdf8;
text-decoration: none;
}
#vividi-lead-magnet-master .checkbox-label a:hover {
text-decoration: underline;
}
/* Buttons block bottom */
#vividi-lead-magnet-master .actions-footer {
display: flex;
justify-content: space-between;
align-items: center;
margin-top: 32px;
border-top: 1px solid rgba(255,255,255,0.06);
padding-top: 24px;
gap: 16px;
}
#vividi-lead-magnet-master .btn-nav-next {
background-color: #2563eb;
color: #ffffff;
font-family: inherit;
font-weight: 700;
font-size: 14px;
padding: 13px 30px;
border: 1px solid #2563eb;
border-radius: 8px;
cursor: pointer;
transition: all 0.25s;
display: inline-flex;
align-items: center;
gap: 8px;
}
#vividi-lead-magnet-master .btn-nav-next:hover:not(:disabled) {
background-color: #1d4ed8;
border-color: #1d4ed8;
box-shadow: 0 4px 16px rgba(37,99,235,0.3);
}
#vividi-lead-magnet-master .btn-nav-next:disabled {
opacity: 0.4;
cursor: not-allowed;
}
#vividi-lead-magnet-master .btn-nav-back {
background: transparent;
color: rgba(255,255,255,0.6);
font-family: inherit;
font-weight: 700;
font-size: 14px;
padding: 13px 22px;
border: 1px solid rgba(255,255,255,0.12);
border-radius: 8px;
cursor: pointer;
transition: all 0.2s;
}
#vividi-lead-magnet-master .btn-nav-back:hover {
color: #ffffff;
border-color: rgba(255,255,255,0.3);
}
#vividi-lead-magnet-master .disclaimer-subnote {
font-size: 11.5px;
line-height: 1.5;
color: #64748b;
font-style: italic;
margin-top: 14px;
}
/* Success frame style */
#vividi-lead-magnet-master .success-hero-box {
text-align: center;
padding-block: 20px;
}
#vividi-lead-magnet-master .success-icon-giant {
font-size: 52px;
margin-bottom: 24px;
display: inline-block;
line-height: 1;
}
#vividi-lead-magnet-master .success-title {
font-size: 28px;
font-weight: 800;
color: #ffffff;
margin-bottom: 16px;
}
@media (min-width: 640px) {
#vividi-lead-magnet-master .success-title {
font-size: 34px;
}
}
#vividi-lead-magnet-master .success-p {
font-size: 16px;
line-height: 1.6;
color: #94a3b8;
max-width: 640px;
margin-inline: auto;
margin-bottom: 40px;
}
#vividi-lead-magnet-master .pdf-unlocked-card {
background: rgba(37,99,235,0.06);
border: 1px dashed rgba(37,99,235,0.35);
border-radius: 16px;
padding: 24px;
max-width: 480px;
margin-inline: auto;
margin-bottom: 48px;
text-align: center;
}
#vividi-lead-magnet-master .pdf-unlocked-badge {
display: inline-flex;
align-items: center;
gap: 6px;
background: #10b981;
color: #ffffff;
font-size: 11px;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.05em;
padding: 4px 10px;
border-radius: 4px;
margin-bottom: 16px;
}
#vividi-lead-magnet-master .unlocked-co-title {
font-size: 18px;
font-weight: 700;
color: #ffffff;
margin-bottom: 16px;
}
#vividi-lead-magnet-master .btn-pdf-print {
display: inline-flex;
align-items: center;
gap: 10px;
background: #ffffff;
color: #000000;
font-weight: 800;
font-size: 13.5px;
text-transform: uppercase;
letter-spacing: 0.05em;
padding: 12px 24px;
border-radius: 8px;
border: none;
cursor: pointer;
transition: all 0.25s;
}
#vividi-lead-magnet-master .btn-pdf-print:hover {
transform: translateY(-1px);
box-shadow: 0 6px 20px rgba(255,255,255,0.25);
}
#vividi-lead-magnet-master .cta-conversion-box {
background: linear-gradient(135deg, rgba(241,223,138,0.12) 0%, rgba(37,99,235,0.08) 100%);
border: 1px solid rgba(241,223,138,0.25);
border-radius: 20px;
padding: 32px;
max-width: 720px;
margin-inline: auto;
text-align: center;
box-shadow: 0 15px 40px rgba(0,0,0,0.4);
}
#vividi-lead-magnet-master .cta-box-title {
font-size: 22px;
font-weight: 800;
color: #ffffff;
margin-bottom: 12px;
}
#vividi-lead-magnet-master .cta-box-p {
font-size: 14.5px;
color: #cbd5e1;
line-height: 1.6;
margin-bottom: 24px;
max-width: 560px;
margin-inline: auto;
}
#vividi-lead-magnet-master .btn-conversion-cta {
display: inline-flex;
align-items: center;
gap: 10px;
background-color: #2563eb;
color: #ffffff;
font-weight: 800;
font-size: 14.5px;
text-transform: uppercase;
letter-spacing: 0.06em;
padding: 16px 36px;
border-radius: 8px;
border: 1px solid rgba(255,255,255,0.1);
text-decoration: none;
transition: all 0.25s;
box-shadow: 0 6px 24px rgba(37, 99, 235, 0.4);
}
#vividi-lead-magnet-master .btn-conversion-cta:hover {
background-color: #1d4ed8;
box-shadow: 0 8px 32px rgba(37, 99, 235, 0.6);
transform: translateY(-1px);
}
#vividi-lead-magnet-master .cta-box-subnote {
font-size: 12px;
color: #64748b;
margin-top: 14px;
}
/* Print styling block - very precise */
@media print {
body * {
visibility: hidden !important;
}
#vividi-lead-magnet-master,
#vividi-lead-magnet-master * {
visibility: hidden !important;
}
#print-executive-report,
#print-executive-report * {
visibility: visible !important;
}
#print-executive-report {
position: absolute;
left: 0;
top: 0;
width: 100%;
display: block !important;
background: #ffffff !important;
color: #000000 !important;
font-family: system-ui, -apple-system, sans-serif !important;
padding: 30px !important;
}
#print-executive-report .print-title-band {
border-bottom: 3px solid #2563eb !important;
padding-bottom: 16px !important;
margin-bottom: 24px !important;
}
#print-executive-report .print-grid {
display: grid !important;
grid-template-columns: 1fr 1fr !important;
gap: 20px !important;
margin-bottom: 24px !important;
}
#print-executive-report .print-section {
border: 1px solid #e2e8f0 !important;
border-radius: 8px !important;
padding: 16px !important;
background: #f8fafc !important;
}
#print-executive-report h1 {
font-size: 24px !important;
color: #000000 !important;
font-weight: 700 !important;
margin: 0 0 6px 0 !important;
}
#print-executive-report h2 {
font-size: 15px !important;
color: #2563eb !important;
font-weight: 700 !important;
margin: 0 0 12px 0 !important;
text-transform: uppercase !important;
}
#print-executive-report .print-row {
display: flex !important;
justify-content: space-between !important;
border-bottom: 1px solid #e2e8f0 !important;
padding-bottom: 8px !important;
margin-bottom: 8px !important;
font-size: 13px !important;
}
#print-executive-report .print-row:last-child {
border-bottom: none !important;
margin-bottom: 0 !important;
}
#print-executive-report .print-strong {
font-weight: 700 !important;
color: #000000 !important;
}
#print-executive-report .print-highlight-box {
background: #eff6ff !important;
border: 1.5px solid #bfdbfe !important;
border-radius: 8px !important;
padding: 16px !important;
margin-bottom: 24px !important;
text-align: center !important;
}
#print-executive-report .print-disclaimer {
font-size: 11px !important;
color: #64748b !important;
line-height: 1.4 !important;
font-style: italic !important;
}
}
</style>
<div class="container" id="magnet-widget">
<!-- HERO SECTION -->
<header class="success-hero-box" role="banner">
<span class="badge-top">Doświadczenie interaktywne</span><br>
<h1 class="main-heading">Kalkulator ROI</h1>
<p class="main-sub">Poznaj mechanizm Vividi.ForLife. Spe zrawdź na realnych liczbach swojej organizacji, jaki zwrot przynosi budowanie więzi i odblokuj raport biznesowy.</p>
</header>
<!-- STEPPER Tracker -->
<nav class="stepper-container" aria-label="Kroki formularza">
<div class="step-node active" id="node-1">
<span class="step-circle">1</span>
<span class="step-label">Przedsmak Echo</span>
</div>
<div class="step-line" id="line-a"></div>
<div class="step-node" id="node-2">
<span class="step-circle">2</span>
<span class="step-label">Twój ROI</span>
</div>
<div class="step-line" id="line-b"></div>
<div class="step-node" id="node-3">
<span class="step-circle">3</span>
<span class="step-label">Wynik i Kontakt</span>
</div>
</nav>
<!-- ==============================================
AKT 1: PRZEDSMAK MECHANIZMU
============================================== -->
<div class="panel active" id="panel-act1">
<div class="layout-cols">
<!-- Left: controls -->
<div class="card">
<div class="card-title">
<span>🎭</span>
<span>Uwolnij emocjonalny ślad</span>
</div>
<p class="card-desc">Vividi.ForLife opiera się na mechanizmie „Echo" — pracownicy współtworzą rzeźbę Vivid Aurum, dzieląc się emocjami. Wybierz nastrój Twojego zespołu i zobacz, jak rodzi się dzieło.</p>
<div class="field-group">
<span class="label-row">Krok 1: Aktualny nastrój zespołu</span>
<div class="emotions-grid" id="emotion-grid-selection" role="radiogroup" aria-label="Wybór emocji">
<button class="emotion-pill active" data-emotion="Spokój" data-color="#38bdf8" data-bg-glow="rgba(56, 189, 248, 0.12)" data-bg-glow-heavy="rgba(56, 189, 248, 0.35)" data-desc="spokojny, harmonijny strumień cząsteczek" type="button" aria-checked="true">🌊 Spokój</button>
<button class="emotion-pill" data-emotion="Energia" data-color="#f59e0b" data-bg-glow="rgba(245, 158, 11, 0.12)" data-bg-glow-heavy="rgba(245, 158, 11, 0.35)" data-desc="gorący, pełen dynamiki impuls" type="button" aria-checked="false">⚡ Energia</button>
<button class="emotion-pill" data-emotion="Ciekawość" data-color="#10b981" data-bg-glow="rgba(16, 185, 129, 0.12)" data-bg-glow-heavy="rgba(16, 185, 129, 0.35)" data-desc="żywy, badawczy zielony płomień" type="button" aria-checked="false">🔮 Ciekawość</button>
<button class="emotion-pill" data-emotion="Skupienie" data-color="#8b5cf6" data-bg-glow="rgba(139, 92, 246, 0.12)" data-bg-glow-heavy="rgba(139, 92, 246, 0.35)" data-desc="głęboki, purpurowy punkt skupienia" type="button" aria-checked="false">🎯 Skupienie</button>
<button class="emotion-pill" data-emotion="Radość" data-color="#f1df8a" data-bg-glow="rgba(241, 223, 138, 0.12)" data-bg-glow-heavy="rgba(241, 223, 138, 0.35)" data-desc="jasny, złoty rozbłysk czystej radości" type="button" aria-checked="false">✨ Radość</button>
<button class="emotion-pill" data-emotion="Napięcie" data-color="#e11d48" data-bg-glow="rgba(225, 29, 72, 0.12)" data-bg-glow-heavy="rgba(225, 29, 72, 0.35)" data-desc="wyrazisty, czerwony ślad napięcia" type="button" aria-checked="false">🔥 Napięcie</button>
</div>
</div>
<div class="field-group">
<div class="label-row">
<span>Krok 2: Intensywność odczuwania</span>
<span class="label-val" id="intensity-val-step1">7/10</span>
</div>
<input type="range" min="1" max="10" value="7" class="range-input" id="intensity-slider-step1" aria-label="Suwak intensywności">
</div>
<div class="spark-emitter-wrap">
<button class="btn-fire" id="btn-shoot-echo" type="button">
<span>Dodaj Echo</span>
<span>→</span>
</button>
<div class="limit-alert" id="limit-msg-box">
<strong>Przedsmak kompletny.</strong> Dodałeś 2 Echa — to bezpieczny limit demo. Pełna rzeźba współtworzona przez zespół to przedmiot płatnego wdrożenia.
</div>
</div>
<div class="added-echoes-list">
<div class="label-row" style="font-size:12px; color: #64748b; margin-bottom: 12px; text-transform:uppercase;">
<span>Aktywowane Echa zespołu (maks. 2)</span>
</div>
<div id="added-echoes-container">
<div class="echo-row-item" id="empty-echo-fallback" style="opacity: 0.5; border-style: dashed; justify-content: center; background:transparent;">
Brak aktywowanych Ech. Kliknij „Dodaj Echo" powyżej.
</div>
</div>
</div>
</div>
<!-- Right: live visualizer canvas -->
<div style="display:flex; flex-direction:column;">
<div class="visualizer-caption">
<span class="visualizer-dot"></span>
Wizualizacja Generatywna Vivid Aurum
</div>
<div class="canvas-frame" id="visualizer-canvas-frame">
<div class="canvas-title-badge">Model Rzeźby</div>
<div class="canvas-counter-badge" id="canvas-counter-text">Echa: 0/2</div>
<canvas id="canvas-hourglass-swarm"></canvas>
</div>
<p class="disclaimer-subnote" style="text-align: center; margin-top: 16px;">
Wizyta w demo daje ułamek kształtu. Cały zespół, pracując przez tygodnie, generuje monumentalną rzeźbę, stanowiącą unikalny asset fizyczny i cyfrowy dla marki.
</p>
</div>
</div>
<!-- Navigation buttons -->
<div class="actions-footer">
<div></div>
<button class="btn-nav-next" id="goto-step2" type="button" disabled>
<span>Przejdź do kalkulatora ROI</span>
<span>→</span>
</button>
</div>
</div>
<!-- ==============================================
AKT 2: BUSINESS CASE (ROI)
============================================== -->
<div class="panel" id="panel-act2">
<div class="layout-cols">
<!-- Left: inputs -->
<div class="card">
<div class="card-title">
<span>📊</span>
<span>Wprowadź dane swojej firmy</span>
</div>
<p class="card-desc">Nasze obliczenia opierają się na konserwatywnych, ogólnoświatowych badaniach rotacji (SHRM) i produktywności (Gallup). Nic nie koloryzujemy.</p>
<form id="roi-form-fields" novalidate onsubmit="return false;">
<div class="form-grid">
<div class="input-box" id="ib-employees">
<label class="input-label" for="roi-input-employees">Liczba pracowników <span class="subhint">(w programie)</span></label>
<input class="text-field" type="number" id="roi-input-employees" value="80" min="10" max="5000" placeholder="np. 80">
<span class="field-error-msg">Wpisz liczbę pracowników między 10 a 5000.</span>
</div>
<div class="input-box" id="ib-salary">
<label class="input-label" for="roi-input-salary">Śr. miesięczne wynagrodzenie <span class="subhint">(brutto)</span></label>
<input class="text-field" type="number" id="roi-input-salary" value="8500" min="3000" max="50000" placeholder="np. 8500">
<span class="field-error-msg">Wpisz kwotę od 3000 do 50000 PLN.</span>
</div>
<div class="input-box" id="ib-turnover">
<label class="input-label" for="roi-input-turnover">Roczna rotacja pracowników <span class="subhint">(%)</span></label>
<input class="text-field" type="number" id="roi-input-turnover" value="18" min="1" max="80" placeholder="np. 18">
<span class="field-error-msg">Wpisz stopę od 1% do 80%.</span>
</div>
<div class="input-box" id="ib-loneliness">
<label class="input-label" for="roi-input-loneliness">Szacowany odsetek samotności <span class="subhint">(%)</span></label>
<input class="text-field" type="number" id="roi-input-loneliness" value="35" min="1" max="80" placeholder="np. 35">
<span class="field-error-msg">Wpisz stopę od 1% do 80%.</span>
</div>
</div>
<div class="field-group" style="margin-top: 24px;">
<div class="label-row">
<span>Atrybucja Vividi dla sukcesu</span>
<span class="label-val" id="attribution-val-text">25%</span>
</div>
<input type="range" min="5" max="60" value="25" class="range-input" id="attribution-slider-input" aria-label="Suwak atrybucji">
<div class="label-row" style="margin-top:8px; font-size:11px; color:#64748b; font-weight:normal;">
<span>Konserwatywnie (5%)</span>
<span>Zalecane (25%)</span>
<span>Śmiało (60%)</span>
</div>
<p class="disclaimer-subnote" style="margin-top: 10px;">
* Atrybucja określa, jak duży wpływ na poprawę nastroju przypisujemy programowi Vividi, a ile innym działaniom wewnątrz firmy. Zachowujemy zdrowy rozsądek.
</p>
</div>
</form>
</div>
<!-- Right: locked business case result -->
<div>
<div class="visualizer-caption">
<span class="visualizer-dot"></span>
Twój Spersonalizowany Raport Finansowy
</div>
<div class="output-stats-grid">
<div class="stat-card">
<div class="stat-val" id="out-turnover-cost">—</div>
<div class="stat-lbl">Roczny koszt rotacji (bez Vividi)</div>
</div>
<div class="stat-card">
<div class="stat-val" id="out-productivity-loss">—</div>
<div class="stat-lbl">Koszt spadku produktywności</div>
</div>
<div class="stat-card brand-highlight">
<div class="stat-val" id="out-savings-final">—</div>
<div class="stat-lbl">Roczna konserwatywna oszczędność</div>
</div>
<div class="stat-card">
<div class="stat-val" id="out-eb-value">—</div>
<div class="stat-lbl">Wartość rzeźby & materiałów EB</div>
</div>
</div>
<!-- Document Box locked preview -->
<div class="pdf-preview-box">
<div class="pdf-header">
<span class="pdf-doc-title">BUSINESS CASE EXECUTIVE SUMMARY</span>
<span class="pdf-doc-badge">PDF REPORT</span>
</div>
<div class="pdf-body locked" id="pdf-body-preview">
<div class="pdf-row">
<span class="pdf-key">Podmiot analizy:</span>
<span class="pdf-val">[Nazwa Firmy]</span>
</div>
<div class="pdf-row">
<span class="pdf-key">Skala organizacji:</span>
<span class="pdf-val">80 pracowników</span>
</div>
<div class="pdf-row">
<span class="pdf-key">Atrybuowane oszczędności netto:</span>
<span class="pdf-val">48,200 PLN</span>
</div>
</div>
<div class="pdf-lock-overlay" id="pdf-lock-element">
<span class="pdf-lock-icon">🔒</span>
<span class="pdf-lock-text">Wprowadź dane kontaktowe w kolejnym kroku, aby odblokować <strong>pełny raport PDF pod nazwę Twojej firmy</strong>.</span>
</div>
</div>
<p class="disclaimer-subnote">
Dane finansowe mają charakter szacunkowy i opierają się na modelach statystycznych. Nie stanowią obietnicy ani oferty handlowej w rozumieniu Kodeksu Cywilnego.
</p>
</div>
</div>
<!-- Navigation buttons -->
<div class="actions-footer">
<button class="btn-nav-back" id="back-to-act1" type="button">← Wstecz</button>
<button class="btn-nav-next" id="goto-step3" type="button">
<span>Odblokuj raport i przejdź dalej</span>
<span>→</span>
</button>
</div>
</div>
<!-- ==============================================
AKT 3: GATE & CTA (QUALIFYING FORM)
============================================== -->
<div class="panel" id="panel-act3">
<div class="layout-cols">
<!-- Left: Form -->
<div class="card">
<div class="card-title">
<span>📋</span>
<span>Zdefiniuj dane odbiorcy raportu</span>
</div>
<p class="card-desc">Szanujemy Twój czas. Wyślemy spersonalizowany Business Case w formacie PDF. Skontaktujemy się wyłącznie w celu omówienia dedykowanego pilotażu.</p>
<form id="lead-capturing-form" novalidate onsubmit="return false;">
<div class="form-grid-3">
<div class="input-box" id="ff-first-name">
<label class="input-label" for="form-input-fname">Imię *</label>
<input class="text-field" type="text" id="form-input-fname" placeholder="Anna" required autocomplete="given-name">
<span class="field-error-msg">Podaj swoje imię.</span>
</div>
<div class="input-box" id="ff-last-name">
<label class="input-label" for="form-input-lname">Nazwisko *</label>
<input class="text-field" type="text" id="form-input-lname" placeholder="Kowalska" required autocomplete="family-name">
<span class="field-error-msg">Podaj swoje nazwisko.</span>
</div>
<div class="input-box full-span-col" id="ff-co-name">
<label class="input-label" for="form-input-coname">Nazwa firmy *</label>
<input class="text-field" type="text" id="form-input-coname" placeholder="np. Acme Corp Sp. z o.o." required autocomplete="organization">
<span class="field-error-msg">Podaj pełną nazwę firmy.</span>
</div>
<div class="input-box" id="ff-user-role">
<label class="input-label" for="form-input-role">Twoja rola decyzyjna *</label>
<select class="select-field" id="form-input-role" required>
<option value="" disabled selected>Wybierz stanowisko</option>
<option value="hr_manager">Dyrektor / Manager HR</option>
<option value="executive">Zarząd / CEO / COO</option>
<option value="employer_branding">EB / Marketing Specialist</option>
<option value="other">Inna funkcja zarządcza</option>
</select>
<span class="field-error-msg">Wybierz swoją rolę z listy.</span>
</div>
<div class="input-box" id="ff-user-email">
<label class="input-label" for="form-input-email">E-mail służbowy *</label>
<input class="text-field" type="email" id="form-input-email" placeholder="anna@firma.pl" required autocomplete="email">
<span class="field-error-msg">Wpisz poprawny adres e-mail.</span>
</div>
<div class="input-box full-span-col" id="ff-user-phone">
<label class="input-label" for="form-input-phone">Numer telefonu <span class="subhint">(opcjonalnie)</span></label>
<input class="text-field" type="tel" id="form-input-phone" placeholder="+48 600 000 000" autocomplete="tel">
</div>
</div>
<div style="margin-top: 24px; display:flex; flex-direction:column; gap:12px;">
<div class="checkbox-row" id="ff-consent">
<input class="checkbox-field" type="checkbox" id="form-checkbox-consent" required>
<label class="checkbox-label" for="form-checkbox-consent">
Wyrażam zgodę na kontakt przedstawiciela Vividi.ForLife w celu omówienia kalkulacji oraz propozycji płatnego pilotażu. Dane przetwarzamy zgodnie z <a href="#kontakt">Polityką Prywatności</a>.
</label>
</div>
<span class="field-error-msg" id="consent-error-el" style="margin-left:28px; margin-top:-8px;">Ta zgoda jest wymagana, abyśmy mogli wysłać raport.</span>
<div class="checkbox-row">
<input class="checkbox-field" type="checkbox" id="form-checkbox-casestudy">
<label class="checkbox-label" for="form-checkbox-casestudy">
Zgadzam się na wykorzystanie danych z kalkulatora (zanonimizowanych, bez podawania nazwy firmy) do budowania agregatów badawczych i case studies Vividi. <em>Opcjonalne, ale bardzo doceniamy wkład w badania nastroju w branży.</em>
</label>
</div>
</div>
<button type="submit" class="btn-fire" id="btn-submit-lead" style="width: 100%; justify-content: center; margin-top: 24px; padding-block: 16px;">
Generuj raport i wyślij zgłoszenie
</button>
</form>
</div>
<!-- Right: Executive card teaser -->
<div>
<div class="card" style="margin-bottom: 24px; background: rgba(37,99,235,0.03); border-color: rgba(37,99,235,0.15);">
<div class="card-title" style="color: #38bdf8;">
<span>🎁</span>
<span>Co dokładnie odblokujesz?</span>
</div>
<ul style="padding-left: 20px; color: #cbd5e1; font-size:14px; line-height:1.7; display:flex; flex-direction:column; gap:8px;">
<li><strong>Personalizowany PDF Business Case</strong> gotowy do przedstawienia Zarządowi / CFO.</li>
<li><strong>Analityczną prognozę</strong> redukcji kosztów rotacji dla Twojej skali.</li>
<li>Dostęp do wstępnego kosztorysu <strong>płatnego pilotażu dla Twojego zespołu</strong>.</li>
<li>Kompletny materiał opisowy dotyczący wdrożenia fizycznej rzeźby w biurze.</li>
</ul>
</div>
<div class="card">
<div class="card-title">
<span>🛡️</span>
<span>Gwarancja higieny biznesowej</span>
</div>
<p class="card-desc" style="margin-bottom:0; font-size:13px; line-height:1.5;">
Vividi chroni Twój "moat". Nie bombardujemy spamem. Otrzymasz dokładnie jeden spersonalizowany e-mail z raportem oraz jedną próbę kontaktu telefonicznego w celu weryfikacji. Bez darmowych, pustych obietnic. Stawiamy na konkretne, płatne rezultaty pilotażowe.
</p>
</div>
</div>
</div>
<!-- Navigation buttons -->
<div class="actions-footer">
<button class="btn-nav-back" id="back-to-act2" type="button">← Wstecz do ROI</button>
<div></div>
</div>
</div>
<!-- ==============================================
SUCCESS PANEL / SUMMARY
============================================== -->
<div class="panel" id="panel-success">
<div class="success-hero-box">
<span class="success-icon-giant">🎉</span>
<h2 class="success-title" id="success-header-name">Raport wygenerowany pomyślnie!</h2>
<p class="success-p">Dokument Business Case dla firmy <strong id="success-company-name-label" style="color: #ffffff;">[Nazwa Firmy]</strong> został wygenerowany i wysłany na Twój adres e-mail. Możesz go również wydrukować lub zapisać bezpośrednio w przeglądarce za pomocą przycisku poniżej.</p>
</div>
<div class="pdf-unlocked-card">
<div class="pdf-unlocked-badge">✓ PDF Wygenerowany</div>
<div class="unlocked-co-title" id="unlocked-co-title-print">Business Case: [Nazwa Firmy]</div>
<p style="font-size: 13.5px; color:#94a3b8; margin-bottom: 24px; line-height:1.5;">Dedykowany szacunek oszczędności rocznych z atrybucją Vividi:<br><strong id="unlocked-roi-amount" style="font-size:24px; color:#f1df8a;">—</strong></p>
<button class="btn-pdf-print" id="btn-trigger-print" type="button">
<span>🖨️</span>
<span>Drukuj / Zapisz jako PDF</span>
</button>
<p class="disclaimer-subnote" style="margin-top:12px;">Wskazówka: Po kliknięciu wybierz „Zapisz jako PDF” w oknie docelowym drukarki.</p>
</div>
<!-- SINGLE CONVERSION CTA -->
<div class="cta-conversion-box">
<h3 class="cta-box-title">Czas na krok kluczowy: Uruchom płatny pilotaż</h3>
<p class="cta-box-p">Darmowy przedsmak dobiegł końca. Pełne, immersyjne doświadczenie Vividi.ForLife to głęboka integracja nastroju, tworzenie fizycznego dzieła Vivid Aurum przez cały zespół i potężny zwrot w zaangażowaniu. Zarezerwuj termin próbnego pilotażu dla swojego zespołu już dziś.</p>
<a class="btn-conversion-cta" id="main-conversion-mailto-cta" href="mailto:hello@vividi.life?subject=Zamowienie%20pilotazu%20Vividi">
<span>Rozpocznij płatny pilotaż</span>
<span>→</span>
</a>
<p class="cta-box-subnote">Płatny pilotaż od 1 sesji próbnej dla zespołu decyzyjnego · Bez ryzyka darmowego dryfu</p>
</div>
</div>
</div>
<!-- ==============================================
EXECUTIVE PRINT FORMAT (HIDDEN BY DEFAULT)
============================================== -->
<div id="print-executive-report" style="display:none;">
<div class="print-title-band">
<div style="display: flex; justify-content: space-between; align-items: flex-start;">
<div>
<h1>Vividi.ForLife — Business Case Analysis</h1>
<p style="font-size: 12px; color: #64748b; margin: 2px 0 0 0;">Spersonalizowany Raport Zwrotu z Inwestycji (ROI)</p>
</div>
<div style="text-align: right;">
<p style="font-size: 13px; font-weight: 700; color: #2563eb; margin:0;">ORGANIZATION COPY</p>
<p style="font-size: 11px; color: #64748b; margin: 2px 0 0 0;" id="print-current-date">Data generowania: 1 sierpnia 2026</p>
</div>
</div>
</div>
<div class="print-grid">
<div class="print-section">
<h2>Metryka wejściowa organizacji</h2>
<div class="print-row">
<span class="print-key">Podmiot badany:</span>
<span class="print-strong" id="print-co-name">[Nazwa Firmy]</span>
</div>
<div class="print-row">
<span class="print-key">Liczba pracowników:</span>
<span class="print-strong" id="print-headcount">80 os.</span>
</div>
<div class="print-row">
<span class="print-key">Średnie wynagrodzenie (miesięczne brutto):</span>
<span class="print-strong" id="print-salary">8 500 PLN</span>
</div>
<div class="print-row">
<span class="print-key">Roczna rotacja personelu:</span>
<span class="print-strong" id="print-turnover">18%</span>
</div>
<div class="print-row">
<span class="print-key">Wskaźnik wykluczenia / samotności:</span>
<span class="print-strong" id="print-loneliness">35%</span>
</div>
</div>
<div class="print-section">
<h2>Analiza kosztów bazowych (przed wdrożeniem)</h2>
<div class="print-row">
<span class="print-key">Roczny koszt rotacji pracowników:</span>
<span class="print-strong" id="print-raw-turnover-cost">—</span>
</div>
<div class="print-row">
<span class="print-key">Roczny koszt spadku produktywności:</span>
<span class="print-strong" id="print-raw-productivity-loss">—</span>
</div>
<div class="print-row" style="border-top: 1.5px solid #2563eb; padding-top:10px; margin-top:6px;">
<span class="print-key" style="font-weight:700;">Całkowita strata z tytułu odłączenia:</span>
<span class="print-strong" id="print-total-gap-loss" style="color: #ef4444;">—</span>
</div>
</div>
</div>
<div class="print-highlight-box">
<h2 style="margin-bottom: 8px !important;">Główny wynik finansowy (Atrybucja Vividi: <span id="print-attribution-pct">25%</span>)</h2>
<p style="font-size: 13px; color: #475569; margin: 0 0 12px 0;">Konserwatywny, mierzalny roczny zysk z wdrożenia programu zaangażowania i budowy więzi:</p>
<div style="font-size: 32px; font-weight: 800; color: #2563eb; line-height: 1;" id="print-total-savings">—</div>
<p style="font-size: 12px; color: #64748b; margin: 8px 0 0 0;">Oszczędność kosztów rotacji, odzyskanie produktywności oraz wartość premium materiałów EB.</p>
</div>
<div class="print-section" style="margin-bottom: 24px;">
<h2>Wartości niematerialne i technologia employer brandingu</h2>
<div class="print-row">
<span class="print-key">Rzeźba Vivid Aurum (unikalny asset fizyczny dla biura):</span>
<span class="print-strong" id="print-eb-val-text">—</span>
</div>
<div class="print-row">
<span class="print-key">Content Employer Branding (gotowy materiał wideo & foto):</span>
<span class="print-strong">W CENIE PILOTAŻU</span>
</div>
<div class="print-row">
<span class="print-key">Model wdrożenia:</span>
<span class="print-strong">Praca asynchroniczna + Event fizyczny (Immersja)</span>
</div>
</div>
<p class="print-disclaimer">
Metodyka: Koszt rotacji wyliczony na poziomie 75% rocznego wynagrodzenia pracownika (SHRM). Spadek produktywności wykluczonego pracownika szacowany na 21% (Gallup). Atrybucja Vividi dla sukcesu redukcji ustalona na poziomie suwaka atrybucji. Raport stanowi chronioną własność intelektualną Vividi.ForLife.
</p>
</div>
<!-- JS Logic -->
<script>
(function() {
// 1. STATE
var state = {
currentAct: 1,
selectedEmotion: "Spokój",
selectedColor: "#38bdf8",
selectedGlow: "rgba(56, 189, 248, 0.12)",
selectedGlowHeavy: "rgba(56, 189, 248, 0.35)",
selectedDesc: "spokojny, harmonijny strumień cząsteczek",
intensity: 7,
echoes: [],
// ROI inputs
employees: 80,
salary: 8500,
turnover: 18,
loneliness: 35,
attribution: 25,
// Output calculations
calculated: {
rawTurnover: 0,
rawProductivity: 0,
totalGap: 0,
netSavings: 0,
ebValue: 0,
totalValue: 0
},
// Lead data
lead: {
firstName: "",
lastName: "",
company: "",
role: "",
email: "",
phone: "",
marketingConsent: false,
caseStudyConsent: false
}
};
// 2. DOM TARGETS
var section = document.getElementById('vividi-lead-magnet-master');
if (!section) return;
var intensitySliderStep1 = section.querySelector('#intensity-slider-step1');
var intensityValStep1 = section.querySelector('#intensity-val-step1');
var emotionPills = section.querySelectorAll('.emotion-pill');
var btnShootEcho = section.querySelector('#btn-shoot-echo');
var addedEchoesContainer = section.querySelector('#added-echoes-container');
var limitMsgBox = section.querySelector('#limit-msg-box');
var canvasCounterText = section.querySelector('#canvas-counter-text');
var gotoStep2Btn = section.querySelector('#goto-step2');
// ROI step inputs
var roiEmpInput = section.querySelector('#roi-input-employees');
var roiSalInput = section.querySelector('#roi-input-salary');
var roiTurnInput = section.querySelector('#roi-input-turnover');
var roiLoneInput = section.querySelector('#roi-input-loneliness');
var attrSliderInput = section.querySelector('#attribution-slider-input');
var attrValText = section.querySelector('#attribution-val-text');
// ROI step outputs
var outTurnoverCost = section.querySelector('#out-turnover-cost');
var outProductivityLoss = section.querySelector('#out-productivity-loss');
var outSavingsFinal = section.querySelector('#out-savings-final');
var outEbValue = section.querySelector('#out-eb-value');
var pdfBodyPreview = section.querySelector('#pdf-body-preview');
var pdfLockElement = section.querySelector('#pdf-lock-element');
// Nav triggers
var gotoStep3Btn = section.querySelector('#goto-step3');
var backToAct1Btn = section.querySelector('#back-to-act1');
var backToAct2Btn = section.querySelector('#back-to-act2');
// Form step 3
var leadForm = section.querySelector('#lead-capturing-form');
var btnSubmitLead = section.querySelector('#btn-submit-lead');
// Success Panel elements
var successHeaderName = section.querySelector('#success-header-name');
var successCompanyNameLabel = section.querySelector('#success-company-name-label');
var unlockedRoiAmount = section.querySelector('#unlocked-roi-amount');
var unlockedCoTitlePrint = section.querySelector('#unlocked-co-title-print');
var btnTriggerPrint = section.querySelector('#btn-trigger-print');
var mainConversionMailtoCta = section.querySelector('#main-conversion-mailto-cta');
// Print Copy elements
var printCoName = document.getElementById('print-co-name');
var printHeadcount = document.getElementById('print-headcount');
var printSalary = document.getElementById('print-salary');
var printTurnover = document.getElementById('print-turnover');
var printLoneliness = document.getElementById('print-loneliness');
var printRawTurnoverCost = document.getElementById('print-raw-turnover-cost');
var printRawProductivityLoss = document.getElementById('print-raw-productivity-loss');
var printTotalGapLoss = document.getElementById('print-total-gap-loss');
var printAttributionPct = document.getElementById('print-attribution-pct');
var printTotalSavings = document.getElementById('print-total-savings');
var printEbValText = document.getElementById('print-eb-val-text');
var printCurrentDate = document.getElementById('print-current-date');
// 3. FORMATTER
function formatPLN(value) {
return new Intl.NumberFormat('pl-PL', { style: 'currency', currency: 'PLN', maximumFractionDigits: 0 }).format(value);
}
// 4. ANIMATION HOURGLASS 3D SWARM ENGINE
var canvas = section.querySelector('#canvas-hourglass-swarm');
var ctx = canvas ? canvas.getContext('2d') : null;
var particles = [];
var particleLimitBase = 160;
var swarmAnimFrame = null;
function SwarmParticle(isUser, config) {
this.isUser = isUser || false;
this.color = config ? config.color : 'rgba(100, 116, 139, 0.4)';
this.intensity = config ? config.intensity : 5;
this.angle = Math.random() * Math.PI * 2;
this.h = Math.random();
if (this.isUser) {
this.h = 0.04 + Math.random() * 0.12;
}
this.history = [];
this.maxHistory = this.isUser ? (8 + this.intensity * 2) : 6;
}
SwarmParticle.prototype.update = function(t) {
var speed = this.isUser ? 0.0018 : 0.0009;
this.h += speed;
if (this.h > 1.0) {
this.h = 0;
this.history = [];
}
var d = this.h - 0.5;
var maxR = 120;
var minR = 10;
this.radius = minR + 4 * (d * d) * (maxR - minR);
var rotSpeed = 0.001 + (1.0 - Math.abs(d) * 1.5) * 0.0022;
if (this.isUser) {
rotSpeed += (this.intensity / 10) * 0.0024;
}
this.angle += rotSpeed;
this.swayX = Math.sin(t * 0.45 + this.h * Math.PI) * 12;
this.swayY = Math.cos(t * 0.35 + this.h * Math.PI) * 5;
var heightY = 170;
this.y3d = (1.0 - this.h) * heightY - (heightY / 2);
};
SwarmParticle.prototype.draw = function(w, h) {
if (!ctx) return;
var cx = Math.cos(this.angle) * this.radius + this.swayX;
var cz = Math.sin(this.angle) * this.radius;
var fLen = 220;
var scale = fLen / (fLen + (cz + 120));
var screenX = w / 2 + cx * scale;
var screenY = h / 2 + (this.y3d + this.swayY) * scale;
var size = this.isUser ? 4.5 : (0.5 + Math.random() * 0.7);
var pSize = size * scale;
this.history.push({ x: screenX, y: screenY, scale: scale });
if (this.history.length > this.maxHistory) {
this.history.shift();
}
if (this.history.length > 1) {
ctx.beginPath();
ctx.moveTo(this.history[0].x, this.history[0].y);
for (var i = 1; i < this.history.length; i++) {
ctx.lineTo(this.history[i].x, this.history[i].y);
}
ctx.lineWidth = pSize * 1.4;
ctx.strokeStyle = this.color;
ctx.globalAlpha = this.isUser ? 0.4 : 0.09;
ctx.stroke();
}
ctx.fillStyle = this.isUser ? "#ffffff" : this.color;
ctx.globalAlpha = this.isUser ? 1.0 : 0.4;
ctx.beginPath();
ctx.arc(screenX, screenY, pSize, 0, Math.PI * 2);
ctx.fill();
if (this.isUser) {
ctx.shadowColor = this.color;
ctx.shadowBlur = 12;
ctx.fillStyle = this.color;
ctx.globalAlpha = 0.45;
ctx.beginPath();
ctx.arc(screenX, screenY, pSize * 2.2, 0, Math.PI * 2);
ctx.fill();
ctx.shadowBlur = 0;
}
ctx.globalAlpha = 1.0;
};
function initParticles() {
particles = [];
for (var i = 0; i < particleLimitBase; i++) {
var color = "rgba(255, 255, 255, 0.35)";
if (Math.random() > 0.7) {
color = "rgba(100, 116, 139, 0.3)";
} else if (Math.random() > 0.4) {
color = "rgba(241, 223, 138, 0.25)";
}
particles.push(new SwarmParticle(false, { color: color }));
}
}
function resizeCanvas() {
if (!canvas) return;
var dpr = window.devicePixelRatio || 1;
var rect = canvas.getBoundingClientRect();
canvas.width = rect.width * dpr;
canvas.height = rect.height * dpr;
ctx.scale(dpr, dpr);
}
function swarmLoop() {
if (!canvas) return;
var w = canvas.width / (window.devicePixelRatio || 1);
var h = canvas.height / (window.devicePixelRatio || 1);
ctx.clearRect(0, 0, w, h);
var time = Date.now() * 0.001;
for (var i = 0; i < particles.length; i++) {
particles[i].update(time);
}
// Depth sort
particles.sort(function(a, b) {
var aZ = Math.sin(a.angle) * a.radius;
var bZ = Math.sin(b.angle) * b.radius;
return aZ - bZ;
});
for (var i = 0; i < particles.length; i++) {
particles[i].draw(w, h);
}
swarmAnimFrame = requestAnimationFrame(swarmLoop);
}
// 5. INTERACTION AKT 1 LOGIC
function updateVisualSettings() {
section.style.setProperty('--active-color', state.selectedColor);
section.style.setProperty('--active-color-glow', state.selectedGlowHeavy);
section.style.setProperty('--emotion-color', state.selectedColor);
section.style.setProperty('--emotion-bg-glow', state.selectedGlow);
intensityValStep1.textContent = state.intensity + "/10";
emotionPills.forEach(function(pill) {
var isCurrent = pill.getAttribute('data-emotion') === state.selectedEmotion;
pill.classList.toggle('active', isCurrent);
pill.setAttribute('aria-checked', isCurrent ? 'true' : 'false');
});
canvasCounterText.textContent = "Echa: " + state.echoes.length + "/2";
if (state.echoes.length >= 2) {
btnShootEcho.disabled = true;
btnShootEcho.innerHTML = "Przedsmak pełny";
limitMsgBox.style.display = 'block';
} else {
btnShootEcho.disabled = false;
btnShootEcho.innerHTML = "Dodaj Echo →";
limitMsgBox.style.display = 'none';
}
gotoStep2Btn.disabled = state.echoes.length === 0;
}
emotionPills.forEach(function(pill) {
pill.addEventListener('click', function() {
if (state.echoes.length >= 2) return;
state.selectedEmotion = pill.getAttribute('data-emotion');
state.selectedColor = pill.getAttribute('data-color');
state.selectedGlow = pill.getAttribute('data-bg-glow');
state.selectedGlowHeavy = pill.getAttribute('data-bg-glow-heavy');
state.selectedDesc = pill.getAttribute('data-desc');
updateVisualSettings();
});
});
intensitySliderStep1.addEventListener('input', function() {
if (state.echoes.length >= 2) return;
state.intensity = parseInt(this.value, 10);
updateVisualSettings();
});
function animateSparkToCanvas() {
var startRect = btnShootEcho.getBoundingClientRect();
var canvasRect = canvas.getBoundingClientRect();
var startX = startRect.left + startRect.width / 2;
var startY = startRect.top + startRect.height / 2;
var endX = canvasRect.left + canvasRect.width / 2;
var endY = canvasRect.top + canvasRect.height * 0.7;
var spark = document.createElement('div');
spark.className = "flying-spark";
spark.style.setProperty('--spark-color', state.selectedColor);
spark.style.left = startX + "px";
spark.style.top = startY + "px";
spark.style.opacity = "1";
document.body.appendChild(spark);
var startTime = null;
var duration = 850;
function step(timestamp) {
if (!startTime) startTime = timestamp;
var elapsed = timestamp - startTime;
var progress = Math.min(elapsed / duration, 1);
// Arc curve
var curveY = -120 * Math.sin(progress * Math.PI);
var curX = startX + (endX - startX) * progress;
var curY = startY + (endY - startY) * progress + curveY;
var size = 14 - (10 * progress);
spark.style.width = size + "px";
spark.style.height = size + "px";
spark.style.left = (curX - size / 2) + "px";
spark.style.top = (curY - size / 2) + "px";
if (progress < 1) {
requestAnimationFrame(step);
} else {
spark.remove();
// Add actual 3D particle to swarm
var userP = new SwarmParticle(true, { color: state.selectedColor, intensity: state.intensity });
userP.radius += -15 + Math.random() * 30;
particles.push(userP);
// Save in list
state.echoes.push({
emotion: state.selectedEmotion,
color: state.selectedColor,
intensity: state.intensity
});
renderEchoListHTML();
updateVisualSettings();
}
}
requestAnimationFrame(step);
}
btnShootEcho.addEventListener('click', function() {
if (state.echoes.length >= 2) return;
animateSparkToCanvas();
});
function renderEchoListHTML() {
var fallback = section.querySelector('#empty-echo-fallback');
if (fallback) fallback.remove();
var tempHtml = "";
state.echoes.forEach(function(echo, idx) {
tempHtml += '<div class="echo-row-item">' +
'<div>' +
'<span class="echo-dot" style="background-color: ' + echo.color + '; color: ' + echo.color + '"></span>' +
'<strong>' + echo.emotion + '</strong>' +
'</div>' +
'<div style="display:flex; align-items:center; gap:10px;">' +
'<span style="color:#64748b; font-size:12.5px;">Intensywność: ' + echo.intensity + '/10</span>' +
'<button class="echo-item-remove" data-index="' + idx + '" aria-label="Usuń Echo">×</button>' +
'</div>' +
'</div>';
});
addedEchoesContainer.innerHTML = tempHtml || '<div class="echo-row-item" id="empty-echo-fallback" style="opacity: 0.5; border-style: dashed; justify-content: center; background:transparent;">Brak aktywowanych Ech. Kliknij „Dodaj Echo" powyżej.</div>';
// Add delete listeners
addedEchoesContainer.querySelectorAll('.echo-item-remove').forEach(function(btn) {
btn.addEventListener('click', function() {
var index = parseInt(btn.getAttribute('data-index'), 10);
state.echoes.splice(index, 1);
// Re-filter particles to remove user particles
particles = particles.filter(function(p) {
return !p.isUser;
});
// Re-add remaining user particles
state.echoes.forEach(function(echo) {
var userP = new SwarmParticle(true, { color: echo.color, intensity: echo.intensity });
particles.push(userP);
});
renderEchoListHTML();
updateVisualSettings();
});
});
}
// 6. AKT 2: ROI CALCULATION ENGINE
function calculateROIVals() {
var employees = parseInt(roiEmpInput.value, 10) || 80;
var salary = parseInt(roiSalInput.value, 10) || 8500;
var turnover = parseInt(roiTurnInput.value, 10) || 18;
var loneliness = parseInt(roiLoneInput.value, 10) || 35;
var attr = state.attribution / 100;
// Base values
var annualSalary = salary * 1.2 * 12; // with employer burden
var rawTurnover = employees * (turnover / 100) * annualSalary * 0.75; // 75% SHRM replacement cost
var rawProductivity = employees * (loneliness / 100) * (salary * 12) * 0.21; // 21% Gallup disengagement loss
var totalGap = rawTurnover + rawProductivity;
// Vividi potential gains
var baseSavings = (rawTurnover * 0.30) + (rawProductivity * 0.15); // conservative: 30% reduction of turnover, 15% reduction of loneliness gap
var netSavings = baseSavings * attr;
var ebValue = 20000 * attr * 4; // premium content asset offset scaled by scale of organization & attribution
state.calculated = {
rawTurnover: rawTurnover,
rawProductivity: rawProductivity,
totalGap: totalGap,
netSavings: netSavings,
ebValue: ebValue,
totalValue: netSavings + ebValue
};
// Render Outputs
outTurnoverCost.textContent = formatPLN(rawTurnover);
outProductivityLoss.textContent = formatPLN(rawProductivity);
outSavingsFinal.textContent = formatPLN(netSavings);
outEbValue.textContent = formatPLN(ebValue);
// Update print copy DOM
if (printRawTurnoverCost) printRawTurnoverCost.textContent = formatPLN(rawTurnover);
if (printRawProductivityLoss) printRawProductivityLoss.textContent = formatPLN(rawProductivity);
if (printTotalGapLoss) printTotalGapLoss.textContent = formatPLN(totalGap);
if (printTotalSavings) printTotalSavings.textContent = formatPLN(netSavings + ebValue);
if (printEbValText) printEbValText.textContent = formatPLN(ebValue);
if (printAttributionPct) printAttributionPct.textContent = state.attribution + "%";
}
function validateROIStep() {
var valid = true;
var rules = [
{ input: roiEmpInput, boxId: '#ib-employees', min: 10, max: 5000 },
{ input: roiSalInput, boxId: '#ib-salary', min: 3000, max: 50000 },
{ input: roiTurnInput, boxId: '#ib-turnover', min: 1, max: 80 },
{ input: roiLoneInput, boxId: '#ib-loneliness', min: 1, max: 80 }
];
rules.forEach(function(rule) {
var val = parseInt(rule.input.value, 10);
var box = section.querySelector(rule.boxId);
if (isNaN(val) || val < rule.min || val > rule.max) {
box.classList.add('has-error');
rule.input.classList.add('error-state');
valid = false;
} else {
box.classList.remove('has-error');
rule.input.classList.remove('error-state');
}
});
return valid;
}
[roiEmpInput, roiSalInput, roiTurnInput, roiLoneInput].forEach(function(inp) {
inp.addEventListener('input', function() {
if (validateROIStep()) {
calculateROIVals();
}
});
});
attrSliderInput.addEventListener('input', function() {
state.attribution = parseInt(this.value, 10);
attrValText.textContent = state.attribution + "%";
calculateROIVals();
});
// 7. STEP TRANSITIONS
function switchStep(toStep) {
section.querySelector('#panel-act1').classList.remove('active');
section.querySelector('#panel-act2').classList.remove('active');
section.querySelector('#panel-act3').classList.remove('active');
section.querySelector('#panel-success').classList.remove('active');
section.querySelector('#node-1').classList.remove('active', 'completed');
section.querySelector('#node-2').classList.remove('active', 'completed');
section.querySelector('#node-3').classList.remove('active', 'completed');
if (toStep === 1) {
section.querySelector('#panel-act1').classList.add('active');
section.querySelector('#node-1').classList.add('active');
} else if (toStep === 2) {
section.querySelector('#panel-act2').classList.add('active');
section.querySelector('#node-1').classList.add('completed');
section.querySelector('#node-2').classList.add('active');
calculateROIVals();
} else if (toStep === 3) {
section.querySelector('#panel-act3').classList.add('active');
section.querySelector('#node-1').classList.add('completed');
section.querySelector('#node-2').classList.add('completed');
section.querySelector('#node-3').classList.add('active');
} else if (toStep === 4) {
section.querySelector('#panel-success').classList.add('active');
section.querySelector('#node-1').classList.add('completed');
section.querySelector('#node-2').classList.add('completed');
section.querySelector('#node-3').classList.add('completed');
}
window.scrollTo({ top: section.offsetTop - 40, behavior: 'smooth' });
state.currentAct = toStep;
}
gotoStep2Btn.addEventListener('click', function() {
switchStep(2);
});
backToAct1Btn.addEventListener('click', function() {
switchStep(1);
});
gotoStep3Btn.addEventListener('click', function() {
if (!validateROIStep()) return;
// Populate locked preview text dynamically with company name if already input
var coNameVal = section.querySelector('#form-input-coname').value.trim();
if (coNameVal) {
pdfBodyPreview.classList.remove('locked');
pdfLockElement.style.display = 'none';
pdfBodyPreview.innerHTML = '<div class="pdf-row"><span class="pdf-key">Podmiot analizy:</span><span class="pdf-val">' + coNameVal + '</span></div>' +
'<div class="pdf-row"><span class="pdf-key">Skala organizacji:</span><span class="pdf-val">' + roiEmpInput.value + ' os.</span></div>' +
'<div class="pdf-row"><span class="pdf-key">Szacunkowe korzyści roczne:</span><span class="pdf-val" style="color:#f1df8a;">' + formatPLN(state.calculated.totalValue) + '</span></div>';
}
switchStep(3);
});
backToAct2Btn.addEventListener('click', function() {
switchStep(2);
});
// Live update PDF locked card when they type company name
var formCoInput = section.querySelector('#form-input-coname');
formCoInput.addEventListener('input', function() {
var val = this.value.trim();
if (val) {
pdfBodyPreview.classList.remove('locked');
pdfLockElement.style.display = 'none';
pdfBodyPreview.innerHTML = '<div class="pdf-row"><span class="pdf-key">Podmiot analizy:</span><span class="pdf-val">' + val + '</span></div>' +
'<div class="pdf-row"><span class="pdf-key">Skala organizacji:</span><span class="pdf-val">' + roiEmpInput.value + ' os.</span></div>' +
'<div class="pdf-row"><span class="pdf-key">Szacunkowe korzyści roczne:</span><span class="pdf-val" style="color:#f1df8a;">' + formatPLN(state.calculated.totalValue) + '</span></div>';
} else {
pdfBodyPreview.classList.add('locked');
pdfLockElement.style.display = 'flex';
}
});
// 8. LEAD SUBMISSION & CTA CONVERSION
function validateLeadForm() {
var valid = true;
var fName = section.querySelector('#form-input-fname');
var lName = section.querySelector('#form-input-lname');
var coName = section.querySelector('#form-input-coname');
var role = section.querySelector('#form-input-role');
var email = section.querySelector('#form-input-email');
var consent = section.querySelector('#form-checkbox-consent');
var rules = [
{ input: fName, boxId: '#ff-first-name', test: function(v) { return v.length >= 2; } },
{ input: lName, boxId: '#ff-last-name', test: function(v) { return v.length >= 2; } },
{ input: coName, boxId: '#ff-co-name', test: function(v) { return v.length >= 3; } },
{ input: role, boxId: '#ff-user-role', test: function(v) { return v !== ""; } },
{ input: email, boxId: '#ff-user-email', test: function(v) { return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(v); } }
];
rules.forEach(function(rule) {
var ok = rule.test(rule.input.value.trim());
var box = section.querySelector(rule.boxId);
if (!ok) {
box.classList.add('has-error');
rule.input.classList.add('error-state');
valid = false;
} else {
box.classList.remove('has-error');
rule.input.classList.remove('error-state');
}
});
// Consent check
var consentErr = section.querySelector('#consent-error-el');
if (!consent.checked) {
consentErr.style.display = 'block';
valid = false;
} else {
consentErr.style.display = 'none';
}
return valid;
}
leadForm.addEventListener('submit', function(e) {
e.preventDefault();
if (!validateLeadForm()) return;
state.lead = {
firstName: section.querySelector('#form-input-fname').value.trim(),
lastName: section.querySelector('#form-input-lname').value.trim(),
company: section.querySelector('#form-input-coname').value.trim(),
role: section.querySelector('#form-input-role').value,
email: section.querySelector('#form-input-email').value.trim(),
phone: section.querySelector('#form-input-phone').value.trim(),
marketingConsent: section.querySelector('#form-checkbox-consent').checked,
caseStudyConsent: section.querySelector('#form-checkbox-casestudy').checked
};
// Transition to success
successCompanyNameLabel.textContent = state.lead.company;
unlockedCoTitlePrint.textContent = "Business Case: " + state.lead.company;
unlockedRoiAmount.textContent = formatPLN(state.calculated.totalValue);
// Prep the conversion mailto subject and body perfectly prefilled!
var emailSubject = encodeURIComponent("Zgłoszenie na pilotaż Vividi.ForLife — " + state.lead.company);
var emailBody = encodeURIComponent(
"Dzień dobry Jagodo i zespole Vividi,\n\n" +
"Po zapoznaniu się z kalkulatorem ROI i mechanizmem Echo, chcemy zarezerwować termin na omówienie płatnego pilotażu dla naszego zespołu.\n\n" +
"Dane z naszego kalkulatora:\n" +
"- Firma: " + state.lead.company + "\n" +
"- Liczba pracowników: " + roiEmpInput.value + " os.\n" +
"- Konserwatywny roczny zwrot (ROI): " + formatPLN(state.calculated.netSavings) + "\n" +
"- Wartość rzeźby i EB: " + formatPLN(state.calculated.ebValue) + "\n" +
"- Całkowity szacowany potencjał: " + formatPLN(state.calculated.totalValue) + "\n" +
"- Atrybucja wybrana: " + state.attribution + "%\n\n" +
"Osoba kontaktowa:\n" +
"- Imię i Nazwisko: " + state.lead.firstName + " " + state.lead.lastName + "\n" +
"- Stanowisko: " + state.lead.role + "\n" +
"- E-mail: " + state.lead.email + "\n" +
"- Telefon: " + (state.lead.phone || "brak") + "\n\n" +
"Zgoda na case study: " + (state.lead.caseStudyConsent ? "TAK" : "NIE") + "\n\n" +
"Proszę o zaproponowanie terminu krótkiej rozmowy zdalnej (30 min).\n\n" +
"Pozdrawiam,\n" +
state.lead.firstName + " " + state.lead.lastName
);
mainConversionMailtoCta.setAttribute('href', 'mailto:hello@vividi.life?subject=' + emailSubject + '&body=' + emailBody);
// Prepare print copy elements
if (printCoName) printCoName.textContent = state.lead.company;
if (printHeadcount) printHeadcount.textContent = roiEmpInput.value + " os.";
if (printSalary) printSalary.textContent = formatPLN(parseInt(roiSalInput.value, 10));
if (printTurnover) printTurnover.textContent = roiTurnInput.value + "%";
if (printLoneliness) printLoneliness.textContent = roiLoneInput.value + "%";
if (printCurrentDate) printCurrentDate.textContent = "Data generowania: " + new Date().toLocaleDateString('pl-PL', { day: 'numeric', month: 'long', year: 'numeric' });
// Log Lead to console for metric analytics mapping
console.log('[Vividi LeadMagnet] Lead captured:', JSON.stringify({
firstName: state.lead.firstName,
lastName: state.lead.lastName,
company: state.lead.company,
role: state.lead.role,
email: state.lead.email,
phone: state.lead.phone,
caseStudyConsent: state.lead.caseStudyConsent,
headcount: roiEmpInput.value,
monthlySalary: roiSalInput.value,
turnoverRate: roiTurnInput.value,
lonelinessRate: roiLoneInput.value,
attributionRate: state.attribution,
netSavingsROI: state.calculated.netSavings,
ebValue: state.calculated.ebValue,
totalValue: state.calculated.totalValue,
utm_source: (new URLSearchParams(window.location.search)).get('utm_source') || 'direct',
lead_id: 'VLD-' + Date.now(),
status: 'lead'
}, null, 2));
switchStep(4);
});
// 9. NATIVE WINDOW PRINT TRIGGER FOR PERFECT Executive PDF SAVE
btnTriggerPrint.addEventListener('click', function() {
window.print();
});
// 10. INITIALIZATION
resizeCanvas();
window.addEventListener('resize', resizeCanvas);
initParticles();
swarmLoop();
updateVisualSettings();
})();
</script>
</section>