/* SGP Quiz v13 */
(function() {
if (window.__SGP_QUIZ_LOADED__) return;
window.__SGP_QUIZ_LOADED__ = true;
(function() {
var s = document.createElement('style');
s.id = 'sgp-quiz-styles';
s.textContent = `/* ===== SGP QUIZ — INTERACTIVE REDESIGN ===== */
.sgp-app{
--orange:#E8522A;
--dark-teal:#012c30;
--mid-teal:#2D7D8A;
--light-teal:#40bbc1;
--light-bg:#E0F0F2;
--cream:#F4F2EC;
--bg:#F5EFE6;
--white:#fff;
--border:#D4E8EB;
--text-2:#2D7D8A;
--text-3:#7A8B8E;
--font:'Bricolage Grotesque','Bricolage','Helvetica Neue',system-ui,-apple-system,sans-serif;
background:var(--bg);
font-family:var(--font);
color:var(--dark-teal);
min-height:100vh;
padding:0;
margin:0;
}
.sgp-app *{box-sizing:border-box}
.sgp-app .screen{display:none;animation:sgFade .5s ease}
.sgp-app .screen.active{display:block}
@keyframes sgFade{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
/* ===== INTRO ===== */
.sgp-app .intro{max-width:680px;margin:0 auto;padding:5rem 1.5rem 4rem;text-align:center}
.sgp-app .intro-eyebrow{display:inline-flex;align-items:center;gap:.5rem;background:var(--light-bg);color:var(--mid-teal);border-radius:999px;padding:.4rem 1rem;font-size:.75rem;font-weight:700;margin-bottom:1.5rem;letter-spacing:.06em;text-transform:uppercase}
.sgp-app .intro-eyebrow svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.sgp-app .intro h1{font-size:clamp(2.5rem,6vw,3.8rem);font-weight:800;color:var(--dark-teal);line-height:1.02;letter-spacing:-.03em;margin:0 0 1.25rem;font-family:var(--font)}
.sgp-app .intro h1 em{font-style:italic;color:var(--mid-teal);font-weight:700}
.sgp-app .intro p{font-size:1.125rem;color:var(--mid-teal);line-height:1.6;max-width:520px;margin:0 auto 2rem;font-weight:400}
.sgp-app .intro-chips{display:flex;align-items:center;justify-content:center;gap:.6rem;flex-wrap:wrap;margin-bottom:2.5rem}
.sgp-app .intro-chip{display:inline-flex;align-items:center;gap:.5rem;padding:.55rem 1rem;background:var(--white);border:1px solid var(--border);border-radius:999px;color:var(--mid-teal);font-size:.875rem;font-weight:600;white-space:nowrap;transition:transform .2s,box-shadow .2s}
.sgp-app .intro-chip:hover{transform:translateY(-2px);box-shadow:0 6px 16px rgba(1,44,48,.08)}
.sgp-app .intro-chip svg{width:16px;height:16px;flex-shrink:0;fill:none;stroke:var(--light-teal);stroke-width:2;stroke-linecap:round;stroke-linejoin:round;color:var(--light-teal)}
.sgp-app .btn-start{background:var(--orange);color:var(--white);border:none;border-radius:999px;padding:1rem 2.5rem;font-size:1.0625rem;font-weight:700;cursor:pointer;font-family:var(--font);transition:all .2s;display:inline-block;text-decoration:none;box-shadow:0 4px 16px rgba(232,82,42,.25)}
.sgp-app .btn-start:hover{transform:translateY(-2px);box-shadow:0 8px 24px rgba(232,82,42,.35)}
.sgp-app .btn-start:active{transform:translateY(0)}
.sgp-app .intro-sub{font-size:.8125rem;color:var(--text-3);margin-top:1rem;font-weight:400}
/* ===== QUIZ ===== */
.sgp-app .quiz-wrap{max-width:720px;margin:0 auto;padding:2.5rem 1.5rem 4rem}
.sgp-app .qz-progress-wrap{margin-bottom:2rem}
.sgp-app .qz-progress-meta{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}
.sgp-app .qz-progress-section{display:inline-flex;align-items:center;gap:.5rem;font-size:.75rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--mid-teal)}
.sgp-app .qz-progress-section svg{flex-shrink:0;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.sgp-app .qz-progress-count{font-size:.875rem;font-weight:700;color:var(--mid-teal);font-variant-numeric:tabular-nums}
.sgp-app .qz-progress-track{height:6px;background:var(--border);border-radius:3px;overflow:hidden;position:relative}
.sgp-app .qz-progress-fill{height:100%;background:linear-gradient(90deg,var(--orange),#FF7849);border-radius:3px;transition:width .6s cubic-bezier(.34,1.56,.64,1)}
.sgp-app .qz-card{opacity:0;transform:translateY(20px);transition:opacity .35s ease,transform .35s ease}
.sgp-app .qz-card.qz-enter{opacity:1;transform:none}
.sgp-app .qz-card.qz-exit{opacity:0;transform:translateY(-12px);transition:opacity .22s ease,transform .22s ease}
.sgp-app .qz-q-eyebrow{font-size:.75rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--mid-teal);margin-bottom:.625rem}
.sgp-app .qz-q-text{font-size:clamp(1.5rem,3vw,2rem);font-weight:700;color:var(--dark-teal);line-height:1.2;letter-spacing:-.02em;margin:0 0 1.75rem;font-family:var(--font)}
.sgp-app .qz-answers{display:flex;flex-direction:column;gap:.625rem;margin-bottom:1.5rem}
.sgp-app .qz-answer{display:flex;align-items:center;gap:.875rem;width:100%;padding:1.125rem 1.25rem;background:var(--white);border:2px solid var(--border);border-radius:.875rem;font-family:var(--font);font-size:1rem;font-weight:500;color:var(--dark-teal);text-align:left;cursor:pointer;transition:all .18s cubic-bezier(.4,0,.2,1);position:relative;overflow:hidden}
.sgp-app .qz-answer::before{content:'';position:absolute;inset:0;background:linear-gradient(90deg,rgba(232,82,42,0),rgba(232,82,42,.04));opacity:0;transition:opacity .2s}
.sgp-app .qz-answer:hover{border-color:var(--light-teal);transform:translateX(4px);box-shadow:0 4px 12px rgba(1,44,48,.06)}
.sgp-app .qz-answer:hover::before{opacity:1}
.sgp-app .qz-radio{width:22px;height:22px;border-radius:50%;border:2px solid var(--border);background:var(--white);flex-shrink:0;transition:all .2s;position:relative}
.sgp-app .qz-answer:hover .qz-radio{border-color:var(--light-teal)}
.sgp-app .qz-answer-text{flex:1;position:relative;z-index:1}
.sgp-app .qz-emoji{font-size:1.25rem;opacity:0;transform:scale(.5);transition:all .3s cubic-bezier(.34,1.56,.64,1);flex-shrink:0;width:0;overflow:hidden}
.sgp-app .qz-emoji.qz-emoji-show{opacity:1;transform:scale(1);width:1.5rem}
.sgp-app .qz-answer.qz-selected{border-color:var(--orange);background:#FEF5F0;box-shadow:0 0 0 4px rgba(232,82,42,.1)}
.sgp-app .qz-answer.qz-selected .qz-radio{border-color:var(--orange);background:var(--orange);box-shadow:inset 0 0 0 4px var(--white)}
.sgp-app .qz-answer.qz-pop{animation:qzPop .4s cubic-bezier(.34,1.56,.64,1)}
@keyframes qzPop{
0%{transform:translateX(4px) scale(1)}
40%{transform:translateX(4px) scale(1.02)}
100%{transform:translateX(4px) scale(1)}
}
.sgp-app .qz-nav{display:flex;justify-content:space-between;align-items:center;margin-top:.5rem}
.sgp-app .qz-back{background:transparent;border:1.5px solid var(--border);border-radius:999px;padding:.625rem 1.25rem;font-size:.875rem;font-weight:600;color:var(--mid-teal);cursor:pointer;font-family:var(--font);transition:all .15s}
.sgp-app .qz-back:hover{border-color:var(--mid-teal);background:var(--white)}
.sgp-app .qz-hint{font-size:.8125rem;color:var(--text-3);font-style:italic}
/* ===== RESULTS ===== */
.sgp-app .result-wrap{max-width:920px;margin:0 auto;padding:3rem 1.5rem 5rem;position:relative}
/* Hero */
.sgp-app .rs-hero{text-align:center;margin-bottom:3rem}
.sgp-app .rs-archetype-pill{display:inline-block;background:var(--light-bg);color:var(--mid-teal);border-radius:999px;padding:.5rem 1.25rem;font-size:.75rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;margin-bottom:1rem;animation:rsSlideIn .6s ease}
.sgp-app .rs-headline{font-size:clamp(2rem,4vw,2.75rem);font-weight:800;color:var(--dark-teal);letter-spacing:-.02em;margin:0 0 2rem;line-height:1.1;font-family:var(--font);animation:rsSlideIn .6s .1s ease both}
.sgp-app .rs-score-wrap{display:flex;align-items:center;gap:2.5rem;justify-content:center;flex-wrap:wrap;margin-bottom:1rem}
.sgp-app .rs-score-circle{position:relative;width:200px;height:200px;flex-shrink:0;animation:rsScoreIn .8s .2s cubic-bezier(.34,1.56,.64,1) both}
@keyframes rsScoreIn{from{opacity:0;transform:scale(.7)}to{opacity:1;transform:none}}
.sgp-app .rs-score-svg{width:100%;height:100%;transform:rotate(-90deg)}
.sgp-app .rs-score-bg{fill:none;stroke:var(--border);stroke-width:10}
.sgp-app .rs-score-fg{fill:none;stroke:url(#rsGradient);stroke-width:10;stroke-linecap:round;transition:stroke-dashoffset 1.4s cubic-bezier(.34,1.06,.64,1)}
.sgp-app .rs-score-num{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;font-family:var(--font)}
.sgp-app .rs-score-num span:first-child{font-size:4rem;font-weight:800;color:var(--dark-teal);line-height:1;letter-spacing:-.04em;font-variant-numeric:tabular-nums}
.sgp-app .rs-score-of{font-size:1rem;color:var(--text-3);font-weight:500;margin-top:.25rem}
.sgp-app .rs-score-side{max-width:340px;text-align:left;animation:rsSlideIn .6s .4s ease both}
.sgp-app .rs-percentile{font-size:1.125rem;color:var(--dark-teal);margin-bottom:.75rem;line-height:1.4}
.sgp-app .rs-percentile strong{color:var(--orange);font-weight:700}
.sgp-app .rs-archetype-desc{font-size:.9375rem;color:var(--mid-teal);line-height:1.6;margin:0}
@keyframes rsSlideIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
/* Inject SVG gradient via JS-friendly defs in the score circle */
.sgp-app .rs-score-svg::before{content:''}
/* Comparison */
.sgp-app .rs-compare{background:var(--white);border-radius:1rem;padding:1.75rem;margin-bottom:2rem;border:1px solid var(--border);animation:rsSlideIn .6s .6s ease both}
.sgp-app .rs-compare-title{font-size:.875rem;font-weight:700;color:var(--mid-teal);text-transform:uppercase;letter-spacing:.06em;margin-bottom:1.25rem}
.sgp-app .rs-compare-rows{display:flex;flex-direction:column;gap:.875rem;margin-bottom:1rem}
.sgp-app .rs-compare-row{display:flex;align-items:center;gap:1rem}
.sgp-app .rs-compare-label{width:80px;font-size:.9375rem;font-weight:600;color:var(--dark-teal);flex-shrink:0}
.sgp-app .rs-compare-bar{flex:1;height:32px;background:var(--cream);border-radius:999px;position:relative;overflow:hidden}
.sgp-app .rs-compare-fill{height:100%;border-radius:999px;width:0;transition:width 1.4s cubic-bezier(.34,1.06,.64,1);display:flex;align-items:center;justify-content:flex-end;padding-right:.875rem;min-width:50px}
.sgp-app .rs-compare-fill.rs-you{background:linear-gradient(90deg,#FF7849,var(--orange))}
.sgp-app .rs-compare-fill.rs-top{background:linear-gradient(90deg,var(--light-teal),var(--mid-teal))}
.sgp-app .rs-compare-val{color:var(--white);font-weight:700;font-size:.875rem;font-variant-numeric:tabular-nums}
.sgp-app .rs-compare-delta{font-size:.9375rem;color:var(--mid-teal);text-align:center;padding-top:.5rem;border-top:1px dashed var(--border)}
.sgp-app .rs-compare-delta strong{color:var(--orange);font-weight:700}
/* Radar */
.sgp-app .rs-radar-section{background:var(--white);border-radius:1rem;padding:1.75rem;margin-bottom:2rem;border:1px solid var(--border);position:relative;animation:rsSlideIn .6s .8s ease both}
.sgp-app .rs-radar-title{font-size:.875rem;font-weight:700;color:var(--mid-teal);text-transform:uppercase;letter-spacing:.06em;margin-bottom:1.25rem}
.sgp-app .rs-radar-wrap{display:grid;grid-template-columns:1fr 1fr;gap:2rem;align-items:center}
@media(max-width:680px){.sgp-app .rs-radar-wrap{grid-template-columns:1fr}}
.sgp-app .rs-radar-svg{display:flex;justify-content:center;align-items:center}
.sgp-app .rs-radar-svg-inner{width:100%;max-width:380px;height:auto;overflow:visible}
.sgp-app .rs-radar-grid{fill:none;stroke:var(--border);stroke-width:1;opacity:.5}
.sgp-app .rs-radar-axis{stroke:var(--border);stroke-width:1;opacity:.4}
.sgp-app .rs-radar-bench{fill:rgba(64,187,193,.12);stroke:var(--light-teal);stroke-width:1;stroke-dasharray:3 3;opacity:.7}
.sgp-app .rs-radar-user{fill:rgba(232,82,42,.18);stroke:var(--orange);stroke-width:2.5;animation:rsRadarDraw 1.4s .3s cubic-bezier(.4,0,.2,1) both;transform-origin:center;transform:scale(.4);opacity:0}
@keyframes rsRadarDraw{from{transform:scale(.4);opacity:0}60%{transform:scale(1.08);opacity:1}to{transform:scale(1);opacity:1}}
.sgp-app .rs-radar-dot{fill:var(--orange);stroke:var(--white);stroke-width:2.5;cursor:pointer;transition:all .2s;opacity:0;animation:rsDotIn .4s ease both;animation-delay:calc(.8s + var(--i,0) * .08s)}
@keyframes rsDotIn{from{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}
.sgp-app .rs-radar-dot:hover{r:9;fill:#FF7849;filter:drop-shadow(0 0 8px rgba(232,82,42,.5))}
.sgp-app .rs-radar-label{font-size:10px;font-weight:700;fill:var(--mid-teal);font-family:var(--font);text-transform:uppercase;letter-spacing:.03em}
.sgp-app .rs-radar-legend{display:flex;flex-direction:column;gap:.875rem}
.sgp-app .rs-legend-row{display:grid;grid-template-columns:140px 1fr 30px;gap:.75rem;align-items:center;cursor:pointer;transition:transform .2s;animation:rsSlideIn .5s var(--delay,0s) ease both;padding:.375rem;border-radius:.5rem;margin:-.375rem}
.sgp-app .rs-legend-row:hover{background:var(--cream);transform:translateX(4px)}
.sgp-app .rs-legend-label{font-size:.75rem;font-weight:700;color:var(--dark-teal);text-transform:uppercase;letter-spacing:.04em;line-height:1.2;word-break:normal}
.sgp-app .rs-legend-bar{height:8px;background:var(--cream);border-radius:4px;overflow:hidden}
.sgp-app .rs-legend-fill{height:100%;background:linear-gradient(90deg,var(--orange),#FF7849);border-radius:4px;width:0;transition:width 1.2s cubic-bezier(.34,1.06,.64,1)}
.sgp-app .rs-legend-val{font-size:.9375rem;font-weight:800;color:var(--dark-teal);text-align:right;font-variant-numeric:tabular-nums}
/* Tooltip */
.sgp-app .rs-tooltip{position:absolute;background:var(--dark-teal);color:var(--white);padding:.875rem 1rem;border-radius:.625rem;font-size:.8125rem;max-width:260px;pointer-events:none;opacity:0;transform:translate(-50%,calc(-100% - 8px)) scale(.9);transition:opacity .2s,transform .2s;z-index:10;box-shadow:0 12px 32px rgba(0,0,0,.25)}
.sgp-app .rs-tooltip.rs-tt-show{opacity:1;transform:translate(-50%,calc(-100% - 8px)) scale(1)}
.sgp-app .rs-tooltip::after{content:'';position:absolute;bottom:-6px;left:50%;transform:translateX(-50%);border:6px solid transparent;border-top-color:var(--dark-teal);border-bottom:0}
.sgp-app .rs-tt-label{font-weight:700;text-transform:uppercase;letter-spacing:.05em;font-size:.6875rem;color:var(--light-teal);margin-bottom:.25rem}
.sgp-app .rs-tt-val{font-weight:700;margin-bottom:.375rem;font-size:.875rem}
.sgp-app .rs-tt-desc{opacity:.85;line-height:1.5;font-size:.75rem;font-weight:400}
/* Insights */
.sgp-app .rs-insight-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-bottom:2rem;animation:rsSlideIn .6s 1s ease both}
@media(max-width:680px){.sgp-app .rs-insight-grid{grid-template-columns:1fr}}
.sgp-app .rs-insight-card{background:linear-gradient(135deg,var(--dark-teal),#02434A);color:var(--white);border-radius:1rem;padding:1.5rem;position:relative;overflow:hidden}
.sgp-app .rs-insight-card::before{content:'';position:absolute;top:-30px;right:-30px;width:140px;height:140px;background:radial-gradient(circle,rgba(232,82,42,.2),transparent 70%);border-radius:50%}
.sgp-app .rs-insight-icon{font-size:1.5rem;margin-bottom:.625rem;position:relative;z-index:1}
.sgp-app .rs-insight-label{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--light-teal);margin-bottom:.625rem;position:relative;z-index:1}
.sgp-app .rs-insight-card p{font-size:.9375rem;line-height:1.55;margin:0;position:relative;z-index:1;opacity:.95}
/* Plays */
.sgp-app .rs-report{margin-bottom:2.5rem;background:var(--white);border:1px solid var(--border);border-radius:1.25rem;padding:2.25rem 2rem;animation:rsSlideIn .5s 1.2s ease both}
.sgp-app .rs-report-head{text-align:center;max-width:640px;margin:0 auto 1.75rem}
.sgp-app .rs-report-title{font-size:clamp(1.375rem,2.6vw,1.75rem);font-weight:800;color:var(--dark-teal);margin:0 0 .625rem;letter-spacing:-.02em}
.sgp-app .rs-report-sub{font-size:1rem;color:var(--mid-teal);line-height:1.55;margin:0}
.sgp-app .rs-report-boxes{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;margin-bottom:1.75rem}
.sgp-app .rs-report-box{background:var(--light-bg);border:1px solid var(--border);border-radius:1rem;padding:1.25rem;text-align:center}
.sgp-app .rs-report-box-title{font-size:1rem;font-weight:700;color:var(--dark-teal);margin-bottom:.375rem;letter-spacing:-.01em}
.sgp-app .rs-report-box-desc{font-size:.875rem;color:var(--mid-teal);line-height:1.45}
.sgp-app .rs-report-form{display:flex;gap:.75rem;max-width:560px;margin:0 auto}
.sgp-app .rs-report-input{flex:1;border:1px solid var(--border);border-radius:999px;padding:1rem 1.5rem;font-size:1rem;font-family:var(--font);color:var(--dark-teal);outline:none;transition:all .2s}
.sgp-app .rs-report-input:focus{border-color:var(--orange);box-shadow:0 0 0 4px rgba(232,82,42,.1)}
.sgp-app .rs-report-btn{background:var(--orange);color:var(--white);border:none;border-radius:999px;padding:1rem 2rem;font-size:1.0625rem;font-weight:700;cursor:pointer;font-family:var(--font);transition:all .2s;white-space:nowrap;box-shadow:0 4px 16px rgba(232,82,42,.25)}
.sgp-app .rs-report-btn:hover{transform:translateY(-2px);box-shadow:0 8px 22px rgba(232,82,42,.35)}
.sgp-app .rs-report-btn:disabled{opacity:.6;cursor:default;transform:none}
.sgp-app .rs-report-error{display:none;text-align:center;color:var(--orange);font-size:.875rem;font-weight:600;margin-top:.875rem}
.sgp-app .rs-report-success{display:none;text-align:center;color:var(--dark-teal);font-size:1rem;font-weight:700;margin-top:.5rem}
/* CTA */
.sgp-app .rs-cta-card{background:linear-gradient(135deg,var(--orange),#FF7849);color:var(--white);border-radius:1.25rem;padding:2.5rem 2rem;text-align:center;position:relative;overflow:hidden;animation:rsSlideIn .6s 1.6s ease both}
.sgp-app .rs-cta-pulse{position:absolute;top:50%;left:50%;width:300px;height:300px;background:radial-gradient(circle,rgba(255,255,255,.15),transparent 60%);border-radius:50%;transform:translate(-50%,-50%);animation:rsPulse 3s ease-in-out infinite}
@keyframes rsPulse{0%,100%{transform:translate(-50%,-50%) scale(1);opacity:.5}50%{transform:translate(-50%,-50%) scale(1.2);opacity:.8}}
.sgp-app .rs-cta-title{font-size:clamp(1.5rem,3vw,2rem);font-weight:800;margin:0 0 .625rem;letter-spacing:-.02em;position:relative;z-index:1}
.sgp-app .rs-cta-sub{font-size:1rem;opacity:.95;margin:0 0 1.5rem;position:relative;z-index:1}
.sgp-app .rs-cta-btn{display:inline-block;background:var(--white);color:var(--orange);padding:1rem 2.25rem;border-radius:999px;font-weight:700;font-size:1.0625rem;text-decoration:none;transition:all .2s;position:relative;z-index:1;box-shadow:0 4px 16px rgba(0,0,0,.15)}
.sgp-app .rs-cta-btn:hover{transform:translateY(-3px);box-shadow:0 12px 28px rgba(0,0,0,.25)}
.sgp-app .rs-retake{display:block;margin:1.25rem auto 0;background:transparent;border:none;color:var(--white);font-family:var(--font);font-size:.875rem;cursor:pointer;text-decoration:underline;opacity:.85;position:relative;z-index:1;font-weight:500}
.sgp-app .rs-retake:hover{opacity:1}
/* Confetti */
.sgp-app .rs-confetti{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:50}
.sgp-app .rs-confetti-piece{position:absolute;top:-20px;width:10px;height:10px;border-radius:2px;animation:rsConfetti 1.6s cubic-bezier(.4,0,.6,1) forwards}
@keyframes rsConfetti{to{transform:translateY(100vh) rotate(720deg);opacity:0}}
.sgp-app .rs-compare-subtitle{font-size:.8125rem;color:var(--text-3);margin-bottom:1.25rem;margin-top:-.5rem;font-weight:400}
.sgp-app .qz-emoji{font-family:var(--font);color:var(--mid-teal)}
/* ===== MOBILE OPTIMIZATIONS ===== */
@media (max-width: 768px) {
.sgp-app .intro { padding: 3rem 1.25rem 2.5rem; }
.sgp-app .intro h1 { font-size: 2.25rem; line-height: 1.05; }
.sgp-app .intro p { font-size: 1rem; padding: 0 .5rem; }
.sgp-app .intro-chip { font-size: .8125rem; padding: .5rem .875rem; }
.sgp-app .btn-start { width: 100%; max-width: 320px; padding: 1rem 1.5rem; }
.sgp-app .quiz-wrap { padding: 1.5rem 1rem 3rem; }
.sgp-app .qz-q-text { font-size: 1.375rem; line-height: 1.25; margin-bottom: 1.25rem; }
.sgp-app .qz-answer { padding: 1rem; font-size: .9375rem; gap: .75rem; min-height: 56px; }
.sgp-app .qz-answer:hover { transform: none; }
.sgp-app .qz-radio { width: 20px; height: 20px; }
.sgp-app .qz-back { padding: .75rem 1.25rem; min-height: 44px; min-width: 88px; }
.sgp-app .qz-hint { display: none; }
.sgp-app .qz-progress-meta { gap: .5rem; }
.sgp-app .qz-progress-section { font-size: .6875rem; }
.sgp-app .result-wrap { padding: 2rem 1rem 4rem; }
.sgp-app .rs-headline { font-size: 1.875rem; margin-bottom: 1.5rem; }
.sgp-app .rs-score-wrap { flex-direction: column; gap: 1.5rem; }
.sgp-app .rs-score-circle { width: 180px; height: 180px; }
.sgp-app .rs-score-num span:first-child { font-size: 3.25rem; }
.sgp-app .rs-score-side { text-align: center; max-width: 100%; }
.sgp-app .rs-percentile { font-size: 1rem; }
.sgp-app .rs-compare { padding: 1.25rem; }
.sgp-app .rs-compare-label { width: 70px; font-size: .8125rem; }
.sgp-app .rs-compare-bar { height: 28px; }
.sgp-app .rs-compare-val { font-size: .8125rem; }
.sgp-app .rs-compare-subtitle { font-size: .75rem; }
.sgp-app .rs-radar-section { padding: 1.25rem; }
.sgp-app .rs-radar-wrap { gap: 1.5rem; }
.sgp-app .rs-radar-svg-inner { max-width: 100%; }
.sgp-app .rs-radar-label { font-size: 9px; }
.sgp-app .rs-legend-row { grid-template-columns: 110px 1fr 28px; gap: .5rem; padding: .5rem; min-height: 44px; }
.sgp-app .rs-legend-label { font-size: .6875rem; }
.sgp-app .rs-legend-val { font-size: .875rem; }
.sgp-app .rs-legend-row:hover { transform: none; }
.sgp-app .rs-tooltip { max-width: 240px; font-size: .75rem; padding: .75rem .875rem; }
.sgp-app .rs-insight-card { padding: 1.25rem; }
.sgp-app .rs-insight-card p { font-size: .875rem; }
.sgp-app .rs-report { padding: 1.5rem 1.25rem; }
.sgp-app .rs-report-boxes { grid-template-columns: 1fr; gap: .75rem; }
.sgp-app .rs-report-form { flex-direction: column; }
.sgp-app .rs-report-btn { width: 100%; }
.sgp-app .rs-cta-card { padding: 2rem 1.25rem; }
.sgp-app .rs-cta-title { font-size: 1.5rem; }
.sgp-app .rs-cta-sub { font-size: .9375rem; }
.sgp-app .rs-cta-btn { padding: .9rem 1.75rem; font-size: 1rem; width: 100%; max-width: 280px; }
.sgp-app .rs-cta-btn:hover { transform: none; }
}
/* Tablets / small landscape */
@media (max-width: 540px) {
.sgp-app .qz-progress-section span { display: none; }
.sgp-app .qz-progress-section svg { width: 16px; height: 16px; }
.sgp-app .rs-compare-label { width: 60px; font-size: .75rem; }
}
/* Touch device interaction tweaks */
@media (hover: none) {
.sgp-app .qz-answer:hover { background: var(--white); border-color: var(--border); transform: none; box-shadow: none; }
.sgp-app .qz-answer:hover::before { opacity: 0; }
.sgp-app .intro-chip:hover { transform: none; box-shadow: none; }
.sgp-app .btn-start:hover { transform: none; }
.sgp-app .rs-legend-row:hover { background: transparent; }
.sgp-app .rs-play:hover { border-color: var(--border); transform: none; box-shadow: none; }
/* Use tap rather than hover for radar tooltips - showTooltip is invoked by both mouseenter and click via JS update */
}
/* ===== SHARE CARD (1200x630 PNG export) ===== */
.sgp-app .rs-share-card{display:none;width:1200px;height:630px;padding:60px 70px;background:linear-gradient(135deg,#F5EFE6 0%,#FFF6E9 100%);font-family:var(--font);color:var(--dark-teal);box-sizing:border-box;position:relative;overflow:hidden;border-radius:24px}
.sgp-app .rsc-bg-deco{position:absolute;top:-100px;right:-100px;width:500px;height:500px;background:radial-gradient(circle,rgba(232,82,42,0.12) 0%,transparent 70%);border-radius:50%}
.sgp-app .rs-share-card::before{content:'';position:absolute;bottom:-150px;left:-150px;width:400px;height:400px;background:radial-gradient(circle,rgba(64,187,193,0.15) 0%,transparent 70%);border-radius:50%}
.sgp-app .rsc-header{display:flex;justify-content:space-between;align-items:center;position:relative;z-index:2;margin-bottom:30px}
.sgp-app .rsc-brand{font-size:14px;font-weight:700;color:var(--mid-teal);letter-spacing:0.12em;text-transform:uppercase}
.sgp-app .rsc-url{font-size:13px;color:var(--text-3);font-weight:500}
.sgp-app .rsc-main{display:grid;grid-template-columns:1fr 1fr;gap:60px;position:relative;z-index:2;align-items:center}
.sgp-app .rsc-score-block{}
.sgp-app .rsc-archetype{display:inline-block;background:var(--dark-teal);color:#fff;padding:8px 18px;border-radius:999px;font-size:13px;font-weight:700;letter-spacing:0.08em;text-transform:uppercase;margin-bottom:20px}
.sgp-app .rsc-score-row{display:flex;align-items:baseline;gap:8px;margin-bottom:8px}
.sgp-app .rsc-score-num{font-size:140px;font-weight:800;color:var(--orange);line-height:1;letter-spacing:-0.05em;font-variant-numeric:tabular-nums}
.sgp-app .rsc-score-of{font-size:42px;color:var(--text-3);font-weight:500;letter-spacing:-0.02em}
.sgp-app .rsc-score-label{font-size:16px;color:var(--mid-teal);font-weight:600;text-transform:uppercase;letter-spacing:0.08em;margin-bottom:16px}
.sgp-app .rsc-tagline{font-size:18px;color:var(--dark-teal);line-height:1.4;font-weight:500;max-width:480px}
.sgp-app .rsc-radar-block{background:rgba(255,255,255,0.6);border:1px solid rgba(64,187,193,0.2);border-radius:20px;padding:28px 30px;backdrop-filter:blur(10px)}
.sgp-app .rsc-radar-title{font-size:13px;font-weight:700;color:var(--mid-teal);text-transform:uppercase;letter-spacing:0.08em;margin-bottom:18px}
.sgp-app .rsc-dims{display:flex;flex-direction:column;gap:12px}
.sgp-app .rsc-dim{display:grid;grid-template-columns:140px 1fr 32px;align-items:center;gap:12px}
.sgp-app .rsc-dim-label{font-size:13px;font-weight:700;color:var(--dark-teal);text-transform:uppercase;letter-spacing:0.04em}
.sgp-app .rsc-dim-bar{height:10px;background:rgba(212,232,235,0.6);border-radius:5px;overflow:hidden}
.sgp-app .rsc-dim-fill{height:100%;background:linear-gradient(90deg,var(--orange),#FF7849);border-radius:5px}
.sgp-app .rsc-dim-val{font-size:18px;font-weight:800;color:var(--dark-teal);text-align:right;font-variant-numeric:tabular-nums}
.sgp-app .rs-share-card .rsc-footer{position:absolute;bottom:50px;left:70px;right:70px;display:flex;justify-content:flex-end;align-items:center;z-index:2}
.sgp-app .rs-share-card .rsc-logo{height:48px;display:flex;align-items:center;justify-content:flex-end}
.sgp-app .rs-share-card .rsc-logo svg{height:48px;width:auto;display:block}
.sgp-app .rs-share-card .rsc-logo img{height:48px;width:auto;display:block}
.sgp-app .rs-share-card .rsc-logo-fallback{font-size:28px;font-weight:800;color:var(--orange);letter-spacing:-0.02em}
/* CTA action row with download button */
.sgp-app .rs-cta-actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;position:relative;z-index:1}
.sgp-app .rs-share-btn{display:inline-block;background:rgba(255,255,255,0.15);color:#fff;padding:1rem 1.75rem;border:1.5px solid rgba(255,255,255,0.4);border-radius:999px;font-weight:600;font-size:1rem;cursor:pointer;font-family:var(--font);transition:all .2s;text-decoration:none}
.sgp-app .rs-share-btn:hover{background:rgba(255,255,255,0.25);border-color:rgba(255,255,255,0.7);transform:translateY(-2px)}
.sgp-app .rs-share-btn:disabled{opacity:0.7;cursor:wait;transform:none}
@media (max-width:768px) {
.sgp-app .rs-cta-actions{flex-direction:column;align-items:center}
.sgp-app .rs-share-btn{width:100%;max-width:280px;padding:.875rem 1.5rem;font-size:.9375rem}
.sgp-app .rs-share-btn:hover{transform:none}
}
`;
document.head.appendChild(s);
})();
(function() {
var svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
svg.setAttribute('width', '0');
svg.setAttribute('height', '0');
svg.style.position = 'absolute';
svg.innerHTML = '';
document.body.appendChild(svg);
})();
// === DATA ===
const SECTIONS=[
{label:'Your context',icon:'',sub:'2 questions'},
{label:'Current usage',icon:'',sub:'3 questions'},
{label:'Pipeline friction',icon:'',sub:'2 questions'},
{label:'Strategy',icon:'',sub:'3 questions'},
{label:'Readiness',icon:'',sub:'2 questions'},
];
const QUESTIONS=[
{section:0,text:"What best describes your role?",
answers:[
{text:"CRO, VP Sales, or Revenue Leader",score:{role:'sales_leader'},points:0},
{text:"CMO, VP Marketing, Demand Gen, or ABM",score:{role:'marketing_leader'},points:0},
{text:"SDR / BDR Manager or Sales Manager",score:{role:'sdrmgr'},points:0},
{text:"Customer Success, CX, or Retention",score:{role:'cs'},points:0},
{text:"HR, People Ops, or Employee Experience",score:{role:'hr'},points:0},
{text:"Founder, CEO, or PE / Operating Partner",score:{role:'exec'},points:0},
]},
{section:0,text:"What's your company's revenue stage?",
answers:[
{text:"Under $10M ARR",score:{stage:'seed'},points:0},
{text:"$10M – $50M ARR",score:{stage:'growth'},points:0},
{text:"$50M – $200M ARR",score:{stage:'scale'},points:0},
{text:"$200M+ ARR or PE-backed",score:{stage:'enterprise'},points:0},
]},
{section:1,text:"How are you currently using direct mail or gifting?",
answers:[
{text:"We're not using it at all",score:{usage:0},points:0,dim:{auto:0,attr:0,pers:0,life:0,exec:0}},
{text:"Ad hoc — holiday gifts, one-offs, no real strategy",score:{usage:1},points:5,dim:{auto:0,attr:0,pers:1,life:0,exec:0}},
{text:"SDR outbound support or ABM campaigns",score:{usage:2},points:15,dim:{auto:1,attr:1,pers:1,life:1,exec:1}},
{text:"Full funnel — SDR through expansion and renewal",score:{usage:3},points:30,dim:{auto:2,attr:2,pers:2,life:3,exec:2}},
]},
{section:1,text:"How automated is your gifting motion?",
answers:[
{text:"Manual — Amazon orders, spreadsheets, one by one",score:{auto:0},points:0,dim:{auto:0,attr:0,pers:0,life:0,exec:0}},
{text:"Some automation but still mostly manual coordination",score:{auto:1},points:5,dim:{auto:1,attr:0,pers:0,life:0,exec:0}},
{text:"CRM-triggered sends based on deal stage or lifecycle",score:{auto:2},points:15,dim:{auto:2,attr:2,pers:1,life:1,exec:1}},
{text:"Fully orchestrated with intent data and lifecycle triggers",score:{auto:3},points:25,dim:{auto:3,attr:2,pers:2,life:2,exec:2}},
]},
{section:1,text:"When do you typically deploy gifting?",
answers:[
{text:"We don't have a defined strategy for when to send",score:{timing:0},points:0,dim:{auto:0,attr:0,pers:0,life:0,exec:0}},
{text:"Top of funnel or post-demo only",score:{timing:1},points:8,dim:{auto:1,attr:0,pers:1,life:0,exec:0}},
{text:"Late stage to unblock deals or support renewals",score:{timing:2},points:15,dim:{auto:1,attr:1,pers:1,life:2,exec:1}},
{text:"Across the full lifecycle — acquisition through expansion",score:{timing:3},points:25,dim:{auto:2,attr:2,pers:2,life:3,exec:2}},
]},
{section:2,text:"Where do deals or relationships most often stall?",
answers:[
{text:"Getting the first conversation or meeting",score:{friction:'tofu'},points:0},
{text:"No-shows, demo ghosting, or post-demo silence",score:{friction:'mid'},points:0},
{text:"Late stage — procurement, buying committee, inertia",score:{friction:'late'},points:0},
{text:"Expansion and upsell after the initial deal closes",score:{friction:'expand'},points:0},
]},
{section:2,text:"What's your biggest challenge with outreach or engagement right now?",
answers:[
{text:"Low reply rates and breaking through the noise",score:{pain:'reply'},points:0},
{text:"Reaching senior decision-makers and executives",score:{pain:'exec'},points:0},
{text:"Lack of personalization at scale",score:{pain:'pers'},points:0},
{text:"Retention, churn risk, or driving product adoption",score:{pain:'retain'},points:0},
]},
{section:3,text:"How do you personalize what you send?",
answers:[
{text:"We don't — everyone gets the same thing",score:{pers:0},points:0,dim:{auto:0,attr:0,pers:0,life:0,exec:0}},
{text:"By persona or role",score:{pers:1},points:8,dim:{auto:0,attr:0,pers:1,life:0,exec:1}},
{text:"By account research or individual interests",score:{pers:2},points:18,dim:{auto:1,attr:1,pers:2,life:1,exec:1}},
{text:"By buying stage, intent signals, or behavioral triggers",score:{pers:3},points:28,dim:{auto:2,attr:2,pers:3,life:2,exec:2}},
]},
{section:3,text:"Do you measure revenue impact from gifting?",
answers:[
{text:"No — we don't track it at all",score:{attr:0},points:0,dim:{auto:0,attr:0,pers:0,life:0,exec:0}},
{text:"We track pipeline influenced loosely",score:{attr:1},points:8,dim:{auto:0,attr:1,pers:0,life:0,exec:0}},
{text:"Revenue influenced with CRM attribution",score:{attr:2},points:18,dim:{auto:1,attr:2,pers:1,life:1,exec:1}},
{text:"Multi-touch attribution fully integrated into reporting",score:{attr:3},points:28,dim:{auto:2,attr:3,pers:2,life:2,exec:2}},
]},
{section:3,text:"How aligned are sales and marketing — or revenue and people teams — on gifting strategy?",
answers:[
{text:"Not aligned — it's done independently, if at all",score:{align:0},points:0,dim:{auto:0,attr:0,pers:0,life:0,exec:0}},
{text:"Occasional shared campaigns but mostly siloed",score:{align:1},points:8,dim:{auto:0,attr:1,pers:0,life:1,exec:0}},
{text:"Shared budget and coordinated motions",score:{align:2},points:18,dim:{auto:1,attr:1,pers:1,life:2,exec:1}},
{text:"Fully integrated — gifting is part of the revenue or people OS",score:{align:3},points:28,dim:{auto:2,attr:2,pers:2,life:3,exec:2}},
]},
{section:4,text:"What's your estimated annual budget for direct mail or gifting?",
answers:[
{text:"$0 – $10K",score:{budget:'low'},points:0},
{text:"$10K – $50K",score:{budget:'mid'},points:5},
{text:"$50K – $150K",score:{budget:'high'},points:10},
{text:"$150K+",score:{budget:'enterprise'},points:15},
]},
{section:4,text:"Are you exploring a gifting platform in the next 6 months?",
answers:[
{text:"Just starting to research",score:{intent:'research'},points:5},
{text:"Actively evaluating options",score:{intent:'active'},points:15},
{text:"Looking to replace an existing tool",score:{intent:'replace'},points:20},
{text:"Not sure yet",score:{intent:'unsure'},points:0},
]},
];
const DIM_KEYS=['auto','attr','pers','life','exec'];
const DIM_LABELS=['Automation','Attribution','Personalization','Lifecycle coverage','Exec access'];
const LEVELS=[
{
min:0,max:29,
name:'The Spreadsheet Sender',
archetypeKey:'Spreadsheet Sender',
tagline:'You\'re earlier in your gifting journey than most — and that\'s actually an advantage. The teams who build this intentionally from the start win.',
description:'Right now, gifting is either off the radar or happening in isolated, manual moments without a strategy behind it. The good news: this is the highest-leverage stage. Getting the foundation right — even a simple, repeatable motion — compounds faster than you\'d expect.',
gaps:['No structured gifting motion','Little to no CRM integration or attribution','Personalization isn\'t happening at scale'],
plays:[
{title:'The First Play',desc:'Pick one moment in your buyer or employee journey and build a single repeatable gifting touch around it. One trigger, one gift type, one follow-up action. Start there.'},
{title:'The Door Opener',desc:'A coffee eGift before a cold outreach sequence is the simplest gifting play in the book — and one of the highest-ROI. Get your first 20 sends out and measure reply rate vs your current baseline.'},
{title:'The Quick Win',desc:'Identify your top 10 stalled deals or at-risk accounts. Send one personalized gift to each. Track how many respond within 72 hours.'},
],
cta:{headline:'See what a real gifting motion looks like.',sub:'Book a 20-minute demo and we\'ll show you exactly where to start.',btn1:'Book a demo',btn2:''},
bench:'You\'re in the bottom 30% for gifting maturity at your stage — but most teams who move start exactly here.',
},
{
min:30,max:74,
name:'The Campaign Marketer',
archetypeKey:'Campaign Marketer',
tagline:'You\'re using gifting, but it\'s mostly campaign-driven. The next level is making it part of the motion — not a moment inside one.',
description:'You\'ve got the instinct right — gifting is in your playbook and you\'re seeing some results. But it\'s still operating in pockets: a campaign here, an SDR play there, without the attribution or automation to scale what\'s working or fix what isn\'t.',
gaps:['Gifting isn\'t connected to your full funnel','Attribution is loose or manual','Automation gaps mean sends depend on individual effort'],
plays:[
{title:'The Attribution Play',desc:'Connect your gifting data to Salesforce or your CRM. Even basic tracking — which sends were followed by meetings or pipeline — will immediately show you what\'s worth scaling.'},
{title:'The Reply Rate Lift',desc:'Add a coffee eGift as a pre-call send to your 3 highest-volume SDR sequences and compare show rates over 30 days. This is one of the fastest ways to see measurable gifting ROI.'},
{title:'The Multi-Touch Test',desc:'Run one account with a sequenced gifting motion — a send at outreach, one at demo, one at stall — and compare conversion rate against accounts with no gifting touch at the same stage.'},
],
cta:{headline:'Ready to see it in action?',sub:'Book a demo and we\'ll walk through what this looks like for your team specifically.',btn1:'Book a demo',btn2:''},
bench:'You\'re in the middle 40% for gifting maturity — above average on usage, with real room to grow on attribution and automation.',
},
{
min:75,max:134,
name:'The Revenue Orchestrator',
archetypeKey:'Revenue Orchestrator',
tagline:'Gifting is genuinely part of how you run revenue. The gap now is making it more systematic and harder to replicate.',
description:'You\'re ahead of most. Gifting is integrated, attributed, and showing real impact. The question at your level isn\'t whether to invest more — it\'s how to get more precise: tighter triggers, better personalization, and a motion that scales without breaking.',
gaps:['Personalization could be more signal-driven','Some lifecycle stages are likely under-gifted','Automation may have gaps at the edges of the funnel'],
plays:[
{title:'The Intent Signal Play',desc:'Layer 6sense or Bombora intent data onto your gifting triggers. Send when an account shows buying signals, not just when a rep decides to. This is where gifting becomes genuinely predictive.'},
{title:'The Expansion Motion',desc:'Map every customer milestone — 90-day mark, first renewal, product adoption threshold — and build a gifting touch at each one. Expansion revenue is the highest-margin growth motion available to you.'},
{title:'The Executive Access Play',desc:'Identify your top 20 target accounts where you haven\'t broken through to a senior decision-maker. A personalized, high-quality send tied to a real trigger is often what changes that.'},
],
cta:{headline:'Let\'s talk about what\'s next for your program.',sub:'Book a demo and we\'ll get into the specifics — no generic pitch.',btn1:'Book a demo',btn2:''},
bench:'You\'re in the top 30% for gifting maturity at your stage. The gap between you and the top tier is mostly automation and attribution depth.',
},
{
min:135,max:999,
name:'The Pipeline Accelerator',
archetypeKey:'Pipeline Accelerator',
tagline:'You\'re operating at the top of the maturity curve. The opportunity now is optimization and defensibility — not uplift.',
description:'Full-funnel orchestration, intent-triggered sends, multi-touch attribution, alignment across teams. You\'ve built what most are still trying to figure out. The question at this level is: how do you make it more precise, more predictive, and harder for competitors to replicate?',
gaps:['Marginal gains in personalization and targeting','Attribution model could be more sophisticated','Opportunity to formalize a gifting OS others can\'t copy'],
plays:[
{title:'The Precision Layer',desc:'Move from persona-level personalization to account and individual-level. Use LinkedIn, intent data, and CRM signals to source gifts that feel like they came from someone who did the homework — because they did.'},
{title:'The Defensibility Play',desc:'Build a gifting program that is structurally embedded in your revenue motion — not a tool your team uses, but a system your company runs. Document the playbook, train the team, and make it part of onboarding.'},
{title:'The Benchmark Play',desc:'Run a 90-day gifting experiment against a control group. Measure deal velocity, win rate, and expansion ARR for accounts with a structured gifting motion vs. those without. The data becomes your internal case study.'},
],
cta:{headline:'This is an executive conversation.',sub:'Book a demo and we\'ll skip the basics — straight to what moves the needle at your level.',btn1:'Book a demo',btn2:''},
bench:'You\'re in the top 10% for gifting maturity. You\'re not just using gifting — you\'re running it as a revenue system.',
},
];
function getFrictionInsight(friction,pain){
const fmap={
tofu:'Getting the first conversation is where gifting has the highest leverage — it\'s a physical pattern interrupt in a digital world. A well-timed send before an outreach sequence changes the response dynamic entirely.',
mid:'Demo ghosting and post-demo silence are where gifting pays for itself fastest. A send tied to a specific moment — the morning of a scheduled call, or 24 hours after a demo — measurably moves show rates and follow-up response.',
late:'Late-stage stalls are often about inertia, not fit. A high-quality physical send to a buying committee member who hasn\'t been engaged is one of the most reliable ways to restart momentum without another email.',
expand:'Expansion is the highest-margin growth motion available — and it\'s where gifting is most underused. A structured gifting cadence tied to customer milestones directly influences NRR and upsell conversion.',
};
const pmap={
reply:'Low reply rates are a signal problem — your outreach isn\'t breaking through. Gifting is one of the only channels that physically lands in someone\'s space and demands a reaction.',
exec:'Getting to executives requires a different kind of credibility signal. A thoughtful, personalized physical send often gets more traction than a cold LinkedIn message or email chain.',
pers:'Personalization at scale is exactly what a gifting platform is built to solve — but only if you\'re using it with actual account intelligence, not just gift selection.',
retain:'Retention and adoption are relationship problems as much as product problems. Gifting at key moments in the customer lifecycle turns a transactional relationship into something that feels like a partnership.',
};
return(fmap[friction]||'')+(fmap[friction]&&pmap[pain]?' And: ':'')+( pmap[pain]||'Your gifting motion has room to directly address the friction you\'re experiencing right now.');
}
function getRoleInsight(role,level,friction,pain){
const map={
sales_leader:`As a revenue leader, your gifting maturity directly affects deal velocity and win rate. ${level.name==='The Spreadsheet Sender'?'Getting a structured gifting motion off the ground is likely worth more than another tool in the stack right now.':level.name==='The Campaign Marketer'?'The gap between you and the top tier is mostly automation and attribution — both of which have direct impact on the pipeline numbers you\'re accountable for.':'You\'re running gifting at a level most revenue orgs never reach. The opportunity now is making it harder for competitors to replicate.'}`,
marketing_leader:`As a marketing leader, gifting is one of the highest-leverage levers you have for pipeline quality and speed. ${level.name==='The Spreadsheet Sender'?'Building even a basic gifting motion into your demand gen or ABM programs could dramatically shift MQL-to-opportunity conversion.':level.name==='The Campaign Marketer'?'You\'re using gifting but likely underattributing its impact. Tighter integration with your marketing automation stack will change how leadership sees the ROI.':'You\'re running a sophisticated program. The next frontier is making gifting work harder at the bottom of the funnel and across expansion.'}`,
sdrmgr:`As an SDR or sales manager, gifting is a rep performance lever as much as a strategy. ${level.name==='The Spreadsheet Sender'?'A simple coffee eGift cadence added to your top sequences is one of the fastest, most measurable things you can test this quarter.':level.name==='The Campaign Marketer'?'You\'re using gifting in outbound but likely not measuring it tightly enough to know what\'s actually moving meetings vs. what\'s just noise.':'You\'re ahead of most SDR orgs. The focus now is consistency and scale — making sure the motion works regardless of who the rep is.'}`,
cs:`As a CS or CX leader, gifting is one of your most powerful tools for retention and expansion. ${level.name==='The Spreadsheet Sender'?'Even a basic milestone-based gifting cadence — 90-day mark, renewal, product adoption — can shift churn risk and NPS meaningfully.':level.name==='The Campaign Marketer'?'You\'re using gifting but likely not across the full customer lifecycle. The expansion and upsell motion is where gifting delivers the most incremental revenue at your stage.':'You\'re running gifting across the customer lifecycle in a way that most CS orgs don\'t. The precision layer is next.'}`,
hr:`As a people ops leader, gifting is your most tangible lever for culture, belonging, and retention. ${level.name==='The Spreadsheet Sender'?'Building a structured gifting program around onboarding, milestones, and recognition could have an outsized impact on how people experience the company from day one.':level.name==='The Campaign Marketer'?'You\'re doing some of this well — the opportunity is making it consistent and scalable, not dependent on individual effort or memory.':'You\'re running a people gifting program that most orgs only aspire to. The focus now is making it defensible and deeply embedded in your culture OS.'}`,
exec:`As a founder, CEO, or operating partner, gifting maturity is a revenue and culture signal. ${level.name==='The Spreadsheet Sender'?'There\'s likely significant pipeline or retention value being left on the table. A structured program with even basic attribution would tell you quickly what it\'s worth.':level.name==='The Campaign Marketer'?'You have the foundation — the gap is systematizing it so results aren\'t dependent on individual initiative.':'You\'re in the top tier. The question at this level is whether gifting is embedded in the company\'s operating model or still a best practice that walks out the door when key people do.'}`,
};
return map[role]||`Based on your responses, ${level.description}`;
}
// === UI ===
// ===== INTERACTIVE UI LAYER =====
const TOTAL = QUESTIONS.length;
let answers = new Array(TOTAL).fill(null);
let scores = {};
let dims = {auto:0,attr:0,pers:0,life:0,exec:0};
let dimCounts = {auto:0,attr:0,pers:0,life:0,exec:0};
let current = 0;
let autoAdvanceTimer = null;
function svgIcon(path, size) {
size = size || 16;
return '';
}
function showScreen(id) {
document.querySelectorAll('.screen').forEach(function(s){ s.classList.remove('active'); });
document.getElementById(id).classList.add('active');
window.scrollTo({top: 0, behavior: 'smooth'});
}
function startQuiz() {
showScreen('screen-quiz');
renderQuestion(0);
}
// Subtle emoji micro-reactions based on answer points
function getReactionEmoji(points, isScored) {
if (!isScored) return '';
// Neutral progress glyphs (single-codepoint Unicode that renders on all platforms)
if (points === 0) return '○';
if (points <= 5) return '◔';
if (points <= 15) return '◑';
if (points <= 25) return '◕';
return '●';
}
function renderQuestion(idx) {
current = idx;
const q = QUESTIONS[idx];
const sec = SECTIONS[q.section];
const pct = Math.round(((idx + 1) / TOTAL) * 100);
let wrap = document.getElementById('quiz-content');
if (!wrap) {
const screen = document.getElementById('screen-quiz');
if (screen) {
screen.innerHTML = '
';
wrap = document.getElementById('quiz-content');
}
}
// Build question HTML with all the polish
let html = '';
// Progress meta bar at top
html += '
';
html += '
';
html += '' + svgIcon(sec.icon, 14) + ' ' + sec.label + '';
html += '' + (idx + 1) + ' / ' + TOTAL + '';
html += '
';
html += '
';
html += '
';
// Question card with animation
html += '
';
html += '
Question ' + (idx + 1) + ' of ' + TOTAL + '
';
html += '
' + q.text + '
';
// Answers - each with hover state and click animation
html += '
';
q.answers.forEach(function(ans, i) {
const selected = answers[idx] === i;
html += '';
});
html += '
';
// Back button (no next — auto-advance handles forward)
html += '
';
if (idx > 0) {
html += '';
} else {
html += '';
}
html += 'Click an answer to continue';
html += '
';
html += '
'; // qz-card
wrap.innerHTML = html;
// Wire up handlers
wrap.querySelectorAll('.qz-answer').forEach(function(btn) {
btn.addEventListener('click', function() {
handleAnswer(idx, parseInt(btn.dataset.idx, 10), btn);
});
});
const backBtn = document.getElementById('qz-back-btn');
if (backBtn) backBtn.addEventListener('click', function() {
if (autoAdvanceTimer) { clearTimeout(autoAdvanceTimer); autoAdvanceTimer = null; }
renderQuestion(idx - 1);
});
// Trigger entrance animation
requestAnimationFrame(function() {
const card = wrap.querySelector('.qz-card');
if (card) card.classList.add('qz-enter');
});
}
function handleAnswer(qIdx, aIdx, btn) {
if (autoAdvanceTimer) { clearTimeout(autoAdvanceTimer); autoAdvanceTimer = null; }
answers[qIdx] = aIdx;
const wrap = document.getElementById('quiz-content');
if (!wrap) return;
// Visual: mark all unselected, then add selected with pop animation
wrap.querySelectorAll('.qz-answer').forEach(function(b) {
b.classList.remove('qz-selected', 'qz-pop');
});
btn.classList.add('qz-selected', 'qz-pop');
// Show emoji reaction
const emoji = btn.querySelector('.qz-emoji');
if (emoji) emoji.classList.add('qz-emoji-show');
// Auto-advance
autoAdvanceTimer = setTimeout(function() {
autoAdvanceTimer = null;
if (qIdx < TOTAL - 1) {
const card = wrap.querySelector('.qz-card');
if (card) card.classList.add('qz-exit');
setTimeout(function() {
renderQuestion(qIdx + 1);
}, 220);
} else {
computeAndShow();
}
}, 450);
}
function computeAndShow() {
// Score computation - tally points and dimensions
let totalPoints = 0;
scores = {};
dims = {auto:0,attr:0,pers:0,life:0,exec:0};
dimCounts = {auto:0,attr:0,pers:0,life:0,exec:0};
answers.forEach(function(aIdx, qIdx) {
if (aIdx === null) return;
const q = QUESTIONS[qIdx];
const ans = q.answers[aIdx];
totalPoints += ans.points || 0;
if (ans.score) {
Object.keys(ans.score).forEach(function(k) { scores[k] = ans.score[k]; });
}
if (ans.dim) {
Object.keys(ans.dim).forEach(function(k) {
dims[k] += ans.dim[k];
if (ans.dim[k] > 0 || (q.section >= 1 && q.section <= 4)) dimCounts[k]++;
});
}
});
// Normalize dims to 0-20 each (sum = 100 max)
const normalizedDims = {};
DIM_KEYS.forEach(function(k) {
const max = dimCounts[k] > 0 ? dimCounts[k] * 3 : 1;
normalizedDims[k] = Math.round((dims[k] / max) * 20);
});
// Total score = sum of dimension scores (internally consistent with radar)
let totalScore = 0;
DIM_KEYS.forEach(function(k) { totalScore += normalizedDims[k]; });
// Best-in-class reference: 5 dimensions x 20 = 100
const referenceMax = 100;
renderResult(totalScore, normalizedDims, referenceMax);
}
function renderResult(score, normalizedDims, maxPossible) {
showScreen('screen-result');
let wrap = document.getElementById('result-content');
if (!wrap) {
const screen = document.getElementById('screen-result');
if (screen) {
screen.innerHTML = '';
wrap = document.getElementById('result-content');
}
}
// Determine archetype — LEVELS thresholds were calibrated on the legacy 0-199 raw-points scale.
// Convert the new 0-100 score back to that scale for comparison: score * (199/100)
const legacyEquiv = score * 1.99;
let archetype = LEVELS[0];
for (let i = LEVELS.length - 1; i >= 0; i--) {
if (legacyEquiv >= LEVELS[i].min) { archetype = LEVELS[i]; break; }
}
// Reference: theoretical maximum based on the assessment's own scoring rubric
// (sum of best possible answer for every question)
const referenceMax = maxPossible;
const scorePct = Math.round((score / referenceMax) * 100);
let html = '';
// HERO SECTION
html += '
';
// LEAD CAPTURE — "Want to take this somewhere?"
html += '
';
html += '
';
html += '
Want to take this somewhere?
';
html += '
Enter your email and we’ll send you a custom Gifting Gap Report built from your answers — including the specific plays most relevant to your stage, your top gaps explained, and the context your team needs to act on it.
';
html += '
';
html += '
';
html += '
';
html += '
Your top 3 gaps
';
html += '
Named and explained for your program
';
html += '
';
html += '
';
html += '
How to close them
';
html += '
Specific Sendoso context for your stage
';
html += '
';
html += '
';
html += '
Ready to share
';
html += '
Formatted to take to your leadership team
';
html += '
';
html += '
';
html += '
';
html += '';
html += '';
html += '
';
html += '';
html += '
Done — check your inbox. Your Gifting Gap Report is on its way.
';
html += '
';
// CTA
html += '
';
html += '';
html += '
' + (archetype.cta && archetype.cta.headline ? archetype.cta.headline : "Ready to see it in action?") + '
';
html += '
' + (archetype.cta && archetype.cta.sub ? archetype.cta.sub : "Book a demo and we\'ll walk through what this looks like for your team specifically.") + '
';
// Hidden share card (rendered to PNG when user clicks Download)
html += buildShareCard(score, normalizedDims, archetype, referenceMax);
wrap.innerHTML = html;
// Animations: count up score, draw radar, fire confetti
requestAnimationFrame(function() {
animateScore(score, referenceMax);
drawRadar(normalizedDims);
fireConfetti();
// Trigger bar fills
setTimeout(function() {
wrap.querySelectorAll('.rs-compare-fill').forEach(function(b) {
b.style.width = b.style.getPropertyValue('--target-width');
});
}, 400);
// Wire up download button
const shareBtn = document.getElementById('rs-share-btn');
if (shareBtn) {
shareBtn.addEventListener('click', function() {
downloadShareCard(archetype);
});
}
// Wire up Gifting Gap Report email capture
wireReportCapture(archetype, score);
});
}
// ===== MARKETO LEAD CAPTURE =====
// Submits email + archetype + score to Marketo Form 2206 so the follow-up
// smart campaign sends the matching Gifting Gap Report PDF.
var SGP_MKTO_POD = '//app-ab37.marketo.com';
var SGP_MUNCHKIN = '757-WXD-176';
var SGP_FORM_ID = 2206;
function loadMktoForms(cb) {
if (window.MktoForms2) { cb(window.MktoForms2); return; }
var existing = document.getElementById('mktoforms2-lib');
if (existing) { existing.addEventListener('load', function(){ cb(window.MktoForms2); }); return; }
var s = document.createElement('script');
s.id = 'mktoforms2-lib';
s.src = SGP_MKTO_POD + '/js/forms2/js/forms2.min.js';
s.onload = function(){ cb(window.MktoForms2); };
s.onerror = function(){ cb(null); };
document.head.appendChild(s);
}
function wireReportCapture(archetype, score) {
var btn = document.getElementById('rs-report-submit');
var input = document.getElementById('rs-report-email');
var errEl = document.getElementById('rs-report-error');
var formWrap = document.getElementById('rs-report-form');
var successEl = document.getElementById('rs-report-success');
if (!btn || !input) return;
function showError(msg) {
if (errEl) { errEl.textContent = msg; errEl.style.display = 'block'; }
}
function clearError() {
if (errEl) { errEl.textContent = ''; errEl.style.display = 'none'; }
}
function validEmail(v) {
return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(v);
}
function submit() {
clearError();
var email = (input.value || '').trim();
if (!validEmail(email)) { showError('Please enter a valid work email.'); return; }
btn.disabled = true;
btn.textContent = 'Sending\u2026';
var archetypeKey = archetype.archetypeKey || (archetype.name || '').replace(/^The\s+/, '');
loadMktoForms(function(MktoForms2) {
if (!MktoForms2) {
btn.disabled = false; btn.textContent = 'Send me the report';
showError('Something went wrong. Please try again.');
return;
}
// Hidden off-screen container for the Marketo form element
var holder = document.getElementById('sgp-mkto-holder');
if (!holder) {
holder = document.createElement('div');
holder.id = 'sgp-mkto-holder';
holder.style.position = 'absolute';
holder.style.left = '-10000px';
holder.style.top = '0';
holder.innerHTML = '';
document.body.appendChild(holder);
}
MktoForms2.loadForm(SGP_MKTO_POD, SGP_MUNCHKIN, SGP_FORM_ID, function(form) {
form.addHiddenFields({
Email: email,
giftingMaturityArchetype: archetypeKey,
giftingMaturityScore: score
});
form.setValues({ Email: email });
form.onSuccess(function() {
if (formWrap) formWrap.style.display = 'none';
if (successEl) successEl.style.display = 'block';
return false; // prevent Marketo redirect
});
form.submit();
});
});
}
btn.addEventListener('click', submit);
input.addEventListener('keydown', function(e) {
if (e.key === 'Enter') { e.preventDefault(); submit(); }
});
}
function animateScore(target, max) {
const el = document.getElementById('rs-score-val');
const ring = document.getElementById('rs-score-ring');
const pctEl = document.getElementById('rs-pct');
if (!el || !ring) return;
const dur = 1400;
const start = performance.now();
// Set ring target
const circumference = 565;
const offset = circumference - (circumference * target / max);
setTimeout(function() {
ring.style.strokeDashoffset = offset;
}, 200);
// (percentile text is set elsewhere from archetype.bench)
if (pctEl) { /* archetype.bench used as percentile copy in renderResult */ }
function tick(now) {
const t = Math.min(1, (now - start) / dur);
const eased = 1 - Math.pow(1 - t, 3);
el.textContent = Math.round(eased * target);
if (t < 1) requestAnimationFrame(tick);
else el.textContent = target;
}
requestAnimationFrame(tick);
}
function drawRadar(normalizedDims) {
const wrap = document.getElementById('rs-radar-svg');
const legendWrap = document.getElementById('rs-radar-legend');
const tooltip = document.getElementById('rs-tooltip');
if (!wrap) return;
const size = 380, cx = size/2, cy = size/2, maxR = 110;
const N = DIM_KEYS.length;
// Calculate polygon points
const points = DIM_KEYS.map(function(k, i) {
const angle = (Math.PI * 2 * i / N) - Math.PI/2;
const v = Math.max(0, Math.min(20, normalizedDims[k]));
const r = (v / 20) * maxR;
return {
x: cx + Math.cos(angle) * r,
y: cy + Math.sin(angle) * r,
labelX: cx + Math.cos(angle) * (maxR + 28),
labelY: cy + Math.sin(angle) * (maxR + 28),
k: k, v: v, label: DIM_LABELS[DIM_KEYS.indexOf(k)], angle: angle
};
});
// Benchmark (top 10%) polygon — assume ~15/20 on each dim
const benchPoints = DIM_KEYS.map(function(k, i) {
const angle = (Math.PI * 2 * i / N) - Math.PI/2;
const r = (14 / 20) * maxR;
return cx + Math.cos(angle) * r + ',' + (cy + Math.sin(angle) * r);
}).join(' ');
let svg = '';
wrap.innerHTML = svg;
// Legend
let legendHtml = '';
DIM_KEYS.forEach(function(k, i) {
const v = normalizedDims[k];
legendHtml += '
';
legendHtml += '
' + DIM_LABELS[DIM_KEYS.indexOf(k)] + '
';
legendHtml += '
';
legendHtml += '
' + v + '
';
legendHtml += '
';
});
legendWrap.innerHTML = legendHtml;
// Interactive tooltips
const dimExplanations = {
auto: 'How much of your gifting motion is automated vs manual. Top performers run CRM-triggered sends based on deal stage or lifecycle signals.',
attr: 'How well you measure and attribute revenue impact from gifting. Top performers connect gifting data into Salesforce for multi-touch attribution.',
pers: 'How tailored your sends are. Top performers personalize based on account research, intent signals, or persona-specific kits.',
life: 'How widely you deploy gifting across the customer journey. Top performers gift at every stage — outbound, demo, close, expansion, retention.',
exec: 'How effectively you reach senior decision-makers and executives. Top performers use thoughtful physical sends to break through the noise.'
};
function showTooltip(dim, val, x, y) {
const explanation = dimExplanations[dim] || '';
tooltip.innerHTML = '