{"v":"r18","html":"<style>:host{all:initial;display:block}[hidden]:not([hidden=until-found i]){display:none!important}img{max-width:100%}@media (min-width:900px){[id]{scroll-margin-top:var(--hd)}}</style><div class=\"ykb\"><style>\n/* Round 4 shared layer: brand primitives (yoke-brand tokens.json), reset, utilities. Light only. */\n:host{\n  --ink:#111317; --canvas:#F7F4EC; --paper:#FFFFFF; --panel:#EFEEE8; --stone:#D8D5CD; --muted:#686A63;\n  --coral:#F04B37; --lime:#CDF05B; --blue:#315BFF; --sky:#A7D8FF;\n  --font:\"Instrument Sans\",\"Instrument Sans Variable\",Inter,Arial,sans-serif;\n  --ease:cubic-bezier(.2,0,0,1); --joint:cubic-bezier(.65,0,.35,1);\n  color-scheme:light;\n}\n*,*::before,*::after{box-sizing:border-box}\n:host{-webkit-text-size-adjust:100%}\n.ykb{margin:0;font-family:var(--font);font-size:16px;line-height:24px;font-weight:450;color:var(--ink);-webkit-font-smoothing:antialiased;overflow-x:clip}\nh1,h2,h3,p,ul,ol,figure,blockquote,dl,dd{margin:0}\nul,ol{padding:0;list-style:none}\na{color:inherit}\nbutton{font:inherit;color:inherit}\nsvg{display:block}\n[hidden]{display:none!important}\n:focus-visible{outline:2px solid var(--blue);outline-offset:3px;border-radius:6px}\n.sr{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}\n.i{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round;flex:none}\n.logo{display:block;height:24px;width:auto}\n.tnum{font-variant-numeric:tabular-nums}\n@media (prefers-reduced-motion: reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;transition-delay:0ms!important;scroll-behavior:auto!important}}\n\n/* Round 15. Phone first (390), desktop from 900. Round 4 look: paper, blueprint grid, ink hairlines,\n   Blue for data, Lime for what you get, Coral for Yoke. */\n:host{--grid:#EDEBE5;--line:#DEDBD3;--soft:#45473F;--g:16px;--hd:56px}\n@media (min-width:900px){:host{--g:clamp(32px,4.5vw,64px);--hd:64px}}\n:host{scroll-behavior:smooth}\n@media (min-width:900px){:host{scroll-padding-top:var(--hd)}}\n@media (prefers-reduced-motion: reduce){:host{scroll-behavior:auto}}\n.ykb{background:var(--paper)}\n.bp{background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);background-size:32px 32px;background-position:-1px -1px}\n.wrap{max-width:1320px;margin-inline:auto;padding-inline:var(--g)}\n.ex{display:inline-flex;align-items:center;height:20px;padding-inline:7px;border:1px dashed #BDB9AE;border-radius:4px;font-size:10px;font-weight:650;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);white-space:nowrap;background:var(--paper);flex:none}\n.eyb{font-size:12px;line-height:16px;font-weight:650;letter-spacing:.09em;text-transform:uppercase;color:var(--soft)}\n.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding-inline:24px;border-radius:999px;border:0;background:var(--ink);color:var(--paper);font-size:16px;font-weight:600;text-decoration:none;white-space:nowrap;cursor:pointer}\n.btn:hover{background:#2A2D33}\n.btn .i{width:18px;height:18px}\n.mono{display:inline-grid;place-items:center;flex:none;width:36px;height:36px;border-radius:50%;background:var(--panel);border:1px solid var(--stone);font-size:12.5px;font-weight:700;letter-spacing:-.01em;color:var(--ink)}\n.mono.co{border-radius:9px;background:var(--ink);border-color:var(--ink);color:var(--paper)}\n.mono.sm{width:28px;height:28px;font-size:10.5px}\n.mono.sm.co{border-radius:7px}\n\n/* header and sticky bar */\n.hd{position:relative;z-index:40;background:var(--paper);border-bottom:1px solid var(--line)}\n.hd .wrap{height:var(--hd);display:flex;align-items:center;justify-content:space-between;gap:16px}\n.hd .home{display:inline-flex;align-items:center;min-height:44px}\n.hd .logo{height:22px}\n.hd .btn{min-height:44px;padding-inline:18px;font-size:14.5px}\n@media (min-width:900px){.hd{position:sticky;top:0;background:color-mix(in srgb,var(--paper) 92%,transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.hd .logo{height:24px}}\n.sbar{position:fixed;left:0;right:0;bottom:0;z-index:50;padding:10px var(--g) calc(10px + env(safe-area-inset-bottom,0px));background:color-mix(in srgb,var(--paper) 94%,transparent);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-top:1px solid var(--line);transform:translateY(110%);transition:transform 260ms var(--ease)}\n.sbar.on{transform:none}\n.sbar .btn{width:100%}\n@media (min-width:900px){.sbar{display:none}}\n\n/* type */\nh1{font-size:clamp(36px,9.6vw,44px);line-height:1.02;letter-spacing:-.04em;font-weight:700;text-wrap:balance}\n.h2{font-size:clamp(29px,7.6vw,34px);line-height:1.06;letter-spacing:-.035em;font-weight:700;text-wrap:balance}\n.lead{font-size:17px;line-height:1.5;color:var(--soft)}\n.sub{font-size:17.5px;line-height:1.5;color:var(--soft)}\n@media (min-width:900px){\n  h1{font-size:clamp(48px,4.4vw,64px);line-height:.98}\n  .h2{font-size:clamp(38px,3.6vw,52px);line-height:1.02}\n  .lead{font-size:clamp(17px,1.3vw,19px)}\n  .sub{font-size:clamp(18px,1.4vw,20px)}\n}\n\n/* sections */\n.sec{padding-block:48px;border-bottom:1px solid var(--line)}\n.sec-top{display:grid;gap:14px;margin-bottom:24px}\n@media (min-width:900px){\n  .sec{padding-block:clamp(64px,7vw,96px)}\n  .sec-top{grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:20px clamp(32px,5vw,80px);align-items:end;margin-bottom:clamp(28px,3vw,44px)}\n  .two{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(32px,5vw,80px);align-items:center}\n  .two .sec-top{grid-template-columns:minmax(0,1fr);margin-bottom:0}\n}\n.under{margin-top:20px;font-size:16px;line-height:1.5;font-weight:550;color:var(--ink)}\n\n/* the product-style card every mockup sits in */\n.mk{background:var(--paper);border:1px solid var(--ink);border-radius:16px;overflow:hidden}\n.mh{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:46px;padding:10px 16px;border-bottom:1px solid var(--line)}\n.mh b{font-size:15px;line-height:20px;font-weight:650}\n.mb{padding:14px 16px}\n\n/* staged reveal: the first item is always visible; the rest land once, in order */\n.sq{transition:opacity 420ms var(--ease),transform 420ms var(--ease)}\n.sq.pend{opacity:0;transform:translateY(8px)}\n.sq.pend.x{transform:translateX(-8px)}\n\n/* ---------- Hero ---------- */\n.hero{padding-block:28px 40px;border-bottom:1px solid var(--line)}\n.hero-g{display:grid;gap:32px}\n.hero-t{display:grid;justify-items:start;gap:16px}\n.hero-t .btn{margin-top:4px}\n.proof{display:grid;gap:8px;font-size:14px;line-height:20px}\n.proof .pl{font-size:12px;line-height:16px;font-weight:650;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}\n.proof ul{display:flex;flex-wrap:wrap;gap:8px}\n.proof li{display:grid;padding:8px 12px;border:1px solid var(--line);border-radius:10px;background:var(--paper)}\n.proof li b{font-size:15px;font-weight:700;letter-spacing:-.01em}\n.proof li span{font-size:12.5px;color:var(--muted)}\n@media (min-width:900px){\n  .hero{padding-block:clamp(36px,5vh,64px) clamp(44px,6vh,72px)}\n  .hero-g{grid-template-columns:minmax(0,1.12fr) minmax(0,.88fr);gap:clamp(40px,5vw,88px);align-items:center}\n  .hero-t{gap:20px}\n}\n.hc{max-width:460px;width:100%;justify-self:center}\n.hc .ln{display:grid;grid-template-columns:36px minmax(0,1fr);gap:12px;align-items:center;padding:11px 16px;border-top:1px solid var(--line);font-size:15.5px;line-height:21px}\n.hc .ln:first-child{border-top:0}\n.hc .ln b{font-weight:700;font-variant-numeric:tabular-nums}\n.hc .ic{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;background:var(--panel);color:var(--ink)}\n.hc .ic .i{width:18px;height:18px}\n.hc .ln.data .ic{background:color-mix(in srgb,var(--sky) 50%,var(--paper));color:var(--blue)}\n.hc .ln.win{background:var(--lime);font-weight:600}\n.hc .ln.win .ic{background:var(--ink);color:var(--lime)}\n.hc .ln.bill{border-top:1.5px dashed #BDB9AE;background:#FBFAF6}\n.hc .ln.bill .ic{background:var(--paper);border:1px solid var(--line);color:var(--ink)}\n.hc .ln.skip .ic{color:var(--muted)}\n.hc .ln.end{border-top:1px solid var(--ink)}\n.hc .ln.end b{font-size:17px}\n\n/* ---------- 2A: the cost chart and the receipt ---------- */\n.chart{margin-top:4px}\n.ct{font-size:14px;line-height:20px;font-weight:650;color:var(--ink)}\n.cbox{position:relative;margin-top:-6px;display:none}\n.fn{margin-top:14px;font-size:12.5px;line-height:18px;color:var(--muted);max-width:90ch}\n#cv{display:block;overflow:visible;font-family:var(--font)}\n#cv .tk{font-size:12.5px;font-weight:600;fill:#686A63}\n#cv .xl{font-size:13px;font-weight:600;fill:#2E302B}\n#cv .tot{font-size:16px;font-weight:700;fill:#111317;font-variant-numeric:tabular-nums}\n#cv .ly{font-size:12.5px;font-weight:650}\n#cv .ly2{font-size:10.5px;font-weight:550}\n#cv .note text{font-size:11.5px;font-weight:550;fill:#FFFFFF}\n#cv .nm{font-size:18px;font-weight:700;fill:#111317}\n#cv .nm2,#cv .yk2{font-size:13px;font-weight:550;fill:#45473F}\n#cv .yk{font-size:16px;font-weight:700;fill:#111317}\n#cv .note,#cv .tot,#cv .lab,#cv .nmg{transition:opacity 300ms}\n#cv .lay,#cv .lab,#cv .hit{cursor:pointer}\n#cv .lay{transition:filter 150ms}\n#cv .lay.on{filter:brightness(.93)}\n#cv .lab:focus{outline:none}\n#cv .lab:focus-visible text{text-decoration:underline}\n.tip{position:absolute;z-index:6;width:min(330px,100%);padding:12px 14px;border-radius:12px;background:var(--paper);border:1px solid var(--ink);box-shadow:0 14px 34px -14px rgba(17,19,23,.35);font-size:13px;line-height:18px;color:var(--soft)}\n.tip p + p{margin-top:6px}\n.tip .w{color:var(--ink);font-weight:600}\n.tip b{font-weight:650;color:var(--ink)}\n.tip .src,.dt .src{font-size:12px;color:var(--muted)}\n.tip a,.dt a{color:var(--ink);text-underline-offset:2px}\n.dt .src a{display:inline-block;padding-block:15px;margin-block:-15px}\n.rc{margin-top:12px;max-width:520px}\n.rc .rl{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 12px;align-items:baseline;padding:10px 16px;border-top:1px dashed #CFCBC1;font-size:15.5px;line-height:21px}\n.rc .rl:first-child{border-top:0}\n.rc .rl .amt{font-weight:650;font-variant-numeric:tabular-nums;white-space:nowrap}\n.rc .rl small{grid-column:1/-1;text-wrap:pretty;font-size:12.5px;line-height:17px;color:var(--muted)}\n.rc .rl.tot{border-top:1.5px solid var(--ink);font-size:16.5px}\n.rc .rl.tot span{font-weight:750}\n.rc .yk{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px;align-items:start;padding:12px 16px;border-top:1px solid var(--line);background:color-mix(in srgb,var(--coral) 8%,var(--paper));font-size:15px;line-height:21px;font-weight:550}\n.rc .yk i{width:18px;height:5px;margin-top:8px;border-radius:3px;background:var(--coral)}\n.dts{border-top:1px solid var(--line)}\n.dts summary{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:48px;padding-inline:16px;font-size:14.5px;font-weight:650;cursor:pointer;list-style:none}\n.dts summary::-webkit-details-marker{display:none}\n.dts summary .i{width:18px;height:18px;transition:transform 200ms}\n.dts[open] summary .i{transform:rotate(180deg)}\n.dts .dl{display:grid;gap:12px;padding:0 16px 16px;font-size:13.5px;line-height:19px;color:var(--soft)}\n.dt b{display:block;color:var(--ink);font-weight:650}\n.dt p + p{margin-top:4px}\n@media (min-width:1130px){.cbox{display:block}.rc{display:none}}\n\n/* ---------- 2B: a builder's week ---------- */\n.wk{max-width:520px;width:100%}\n.wk .day{display:grid;grid-template-columns:44px minmax(0,1fr) auto;gap:12px;align-items:center;padding:11px 16px;border-top:1px solid var(--line);font-size:15px;line-height:21px}\n.wk .day:first-child{border-top:0}\n.wk .d{display:grid;place-items:center;height:28px;border-radius:6px;background:var(--panel);font-size:12px;font-weight:700;letter-spacing:.03em}\n.wk .h{display:inline-flex;align-items:center;gap:5px;font-size:13px;font-weight:650;white-space:nowrap;font-variant-numeric:tabular-nums}\n.wk .h .i{width:14px;height:14px;color:var(--muted)}\n.wk .tot{display:flex;align-items:center;gap:10px;padding:13px 16px;background:var(--ink);color:var(--paper);font-size:15.5px;line-height:21px;font-weight:650}\n.wk .tot .i{width:18px;height:18px}\n\n/* ---------- 3: one account, five stages ---------- */\n.flow{display:grid;gap:0}\n.stg{display:grid;gap:8px}\n.stg > .k{display:flex;align-items:center;gap:8px;font-size:11.5px;line-height:16px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}\n.stg > .k .ex{margin-left:auto;font-style:normal}\n.stg > .k span{display:inline-grid;place-items:center;width:20px;height:20px;border-radius:50%;background:var(--ink);color:var(--paper);font-size:10.5px;letter-spacing:0}\n.box{border:1px solid var(--ink);border-radius:14px;background:var(--paper);padding:12px 14px;font-size:14.5px;line-height:20px}\n.acc{display:flex;align-items:center;gap:10px}\n.acc .mono:nth-child(2){margin-left:-16px;box-shadow:0 0 0 2px var(--paper)}\n.acc b{display:block;font-size:15px}\n.acc small{display:block;font-size:13px;color:var(--soft)}\n.fit{display:grid;grid-template-columns:24px minmax(0,1fr);gap:8px;align-items:start}\n.fit .ok,.chk .ok{width:24px;height:24px;border-radius:50%;background:var(--lime);border:1px solid var(--ink);display:grid;place-items:center}\n.fit .ok .i,.chk .ok .i{width:13px;height:13px;stroke-width:2.6}\n.facts{display:grid;gap:8px}\n.fact{display:grid;gap:3px}\n.fact span{font-weight:600}\n.srcl{display:inline-flex;align-items:center;gap:5px;justify-self:start;height:22px;padding-inline:6px 8px;border-radius:5px;background:color-mix(in srgb,var(--sky) 45%,var(--paper));border:1px solid color-mix(in srgb,var(--blue) 30%,transparent);font-size:11.5px;font-weight:600;white-space:nowrap;color:var(--ink)}\n.srcl .i{width:12px;height:12px;color:var(--blue)}\n.msg .from{display:flex;align-items:center;gap:8px;margin-bottom:8px;font-size:13px;color:var(--muted)}\n.msg .from b{color:var(--ink);font-size:14px}\n.msg p{font-size:15px;line-height:23px}\n.chip{display:inline-flex;align-items:center;height:18px;padding-inline:6px;margin-left:3px;border-radius:4px;background:color-mix(in srgb,var(--sky) 55%,var(--paper));border:1px solid color-mix(in srgb,var(--blue) 25%,transparent);font-size:10px;line-height:1;font-weight:700;letter-spacing:.03em;text-transform:uppercase;vertical-align:2px;white-space:nowrap}\n.rep{display:grid;gap:10px}\n.bub{display:grid;grid-template-columns:auto minmax(0,1fr);gap:8px;align-items:start}\n.bub p{background:var(--ink);color:var(--paper);border-radius:12px 12px 12px 4px;padding:9px 12px;font-size:14.5px;line-height:20px}\n.sorted{display:inline-flex;align-items:center;gap:6px;justify-self:start;min-height:28px;padding:4px 10px;border-radius:6px;background:var(--lime);border:1px solid var(--ink);font-size:13px;line-height:18px;font-weight:650}\n.sorted .i{width:14px;height:14px;stroke-width:2.4}\n.wire{width:1.5px;height:24px;margin-left:10px;background:var(--blue);position:relative}\n.wire::after{content:\"\";position:absolute;left:-3.5px;bottom:-1px;border:4px solid transparent;border-top:5px solid var(--blue);border-bottom:0}\n@media (min-width:900px){\n  .flow{grid-template-columns:minmax(0,.82fr) 28px minmax(0,.9fr) 28px minmax(0,1.05fr) 28px minmax(0,1.6fr) 28px minmax(0,1fr);align-items:start}\n  .wire{width:100%;height:1.5px;margin:0;margin-top:52px}\n  .wire::after{left:auto;right:-1px;bottom:auto;top:-3.25px;border:4px solid transparent;border-left:5px solid var(--blue);border-right:0}\n  .acc{flex-wrap:wrap}\n}\n\n/* ---------- 4: the contact that keeps itself fresh ---------- */\n.ctc{max-width:500px;width:100%}\n.ctc .who{display:flex;align-items:center;gap:12px;padding:14px 16px;border-bottom:1px solid var(--line)}\n.ctc .who b{display:block;font-size:16.5px;line-height:22px}\n.ctc .who .ex{margin-left:auto}\n.evs{position:relative;display:grid;gap:0;padding:6px 16px}\n.ev{position:relative;display:grid;grid-template-columns:44px 32px minmax(0,1fr);gap:10px;align-items:start;padding:10px 0;font-size:15px;line-height:21px}\n.ev .m{font-size:12px;line-height:28px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}\n.ev .ic{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:color-mix(in srgb,var(--sky) 45%,var(--paper));border:1px solid color-mix(in srgb,var(--blue) 30%,transparent);color:var(--blue);position:relative;z-index:1}\n.ev .ic .i{width:14px;height:14px}\n.ev + .ev::before{content:\"\";position:absolute;left:67.25px;top:-12px;height:22px;width:1.5px;background:var(--line)}\n.ev .t{padding-top:3px}\n.flag{display:inline-block;white-space:nowrap;padding:1px 6px;border-radius:5px;background:var(--lime);font-weight:650;box-decoration-break:clone;-webkit-box-decoration-break:clone}\n.ev.hot .ic{background:var(--lime);border-color:var(--ink);color:var(--ink)}\n.ctc .tag{padding:11px 16px;border-top:1px solid var(--line);background:#FBFAF6}\n.ctc .tag span{display:inline-flex;align-items:center;gap:7px;min-height:30px;padding:4px 11px;border-radius:7px;background:var(--lime);border:1px solid var(--ink);font-size:14px;font-weight:650}\n.ctc .tag .i{width:15px;height:15px;stroke-width:2.4}\n.ev .t::first-letter,.wk .day > span:nth-child(2)::first-letter,.row small::first-letter{text-transform:uppercase}\n\n/* ---------- 5: how it works ---------- */\n.steps{display:grid;gap:28px}\n.step{display:grid;gap:10px;align-content:start}\n.step h3{display:flex;align-items:baseline;gap:10px;font-size:20px;line-height:26px;letter-spacing:-.015em;font-weight:700}\n.step h3 span{display:inline-grid;place-items:center;flex:none;width:26px;height:26px;border-radius:50%;background:var(--ink);color:var(--paper);font-size:13px;letter-spacing:0;transform:translateY(-2px)}\n.step > p{font-size:15.5px;line-height:23px;color:var(--soft)}\n.step .mk{margin-top:4px}\n.chk{display:grid;grid-template-columns:24px minmax(0,1fr);gap:9px;align-items:start;font-size:15px;line-height:22px;font-weight:600}\n.chk span:last-child::first-letter,.cl li span:last-child::first-letter{text-transform:uppercase}\n.url{flex:1;min-width:0;display:flex;align-items:center;gap:8px;height:36px;padding-inline:10px;border:1px solid var(--line);border-radius:8px;background:#FBFAF6;font-size:14px;font-weight:600}\n.url .i{width:16px;height:16px;color:var(--muted)}\n.learn{display:grid;gap:7px;align-content:start}\n.learn .k{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}\n.learn p{font-size:14px;line-height:20px}\n.learn p b{font-weight:650}\n.rows{display:grid}\n.row{display:grid;grid-template-columns:28px minmax(0,1fr) auto;gap:10px;align-items:center;padding:9px 0;border-top:1px solid var(--line);font-size:14px;line-height:19px}\n.row:first-child{border-top:0;padding-top:0}\n.row b{display:block;font-weight:650}\n.row small{display:block;font-size:12.5px;line-height:17px;color:var(--soft)}\n.fitb{display:inline-flex;align-items:center;height:22px;padding-inline:7px;border-radius:5px;font-size:11.5px;font-weight:650;white-space:nowrap;background:color-mix(in srgb,var(--sky) 45%,var(--paper));color:var(--ink);border:1px solid color-mix(in srgb,var(--blue) 30%,transparent)}\n.fitb.good{background:var(--paper);border-color:var(--line);color:var(--soft)}\n.fbtn{display:flex;align-items:center;justify-content:center;height:36px;margin-top:10px;border-radius:999px;background:var(--ink);color:var(--paper);font-size:13.5px;font-weight:600}\n.tl{display:grid}\n.tl li{display:grid;grid-template-columns:24px minmax(0,1fr);gap:10px;align-items:center;font-size:14px;line-height:19px;min-height:30px}\n.tl .d{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;background:var(--panel);border:1px solid var(--stone)}\n.tl .d .i{width:13px;height:13px}\n.tl li.w{min-height:22px;color:var(--muted);font-size:12.5px;font-weight:600}\n.tl li.w .d{background:none;border:0;height:22px;width:24px;position:relative}\n.tl li.w .d::before{content:\"\";position:absolute;left:11.25px;top:0;bottom:0;border-left:1.5px dashed #BDB9AE}\n.tl li.rs .d{background:var(--lime);border-color:var(--ink)}\n.tl li.bk{margin-top:6px}\n.tl li.bk span:last-child{background:var(--lime);border:1px solid var(--ink);border-radius:6px;padding:4px 8px;font-weight:650;justify-self:start}\n.tl li.bk .d{background:var(--ink);border-color:var(--ink);color:var(--lime)}\n.caps{margin-top:32px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}\n.caps li{display:flex;align-items:center;gap:9px;min-height:44px;padding:8px 12px;border:1px solid var(--line);border-radius:10px;background:var(--paper);font-size:14px;line-height:18px;font-weight:600}\n.caps .i{width:18px;height:18px;color:var(--blue)}\n@media (min-width:900px){\n  .steps{grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:auto auto auto auto;column-gap:clamp(20px,2.4vw,36px);row-gap:0}\n  .step{grid-row:span 4;grid-template-rows:subgrid;row-gap:10px}\n  .step .mk{display:flex;flex-direction:column}\n  .step .mk .mb{flex:1}\n  .caps{grid-template-columns:repeat(6,minmax(0,1fr));margin-top:40px}\n}\n\n/* ---------- 6: how you pay, compared ---------- */\n.cmp{width:100%;border-collapse:separate;border-spacing:0;font-size:15px;line-height:21px;display:none}\n.cmp th,.cmp td{padding:14px 16px;text-align:left;vertical-align:top;border-top:1px solid var(--line)}\n.cmp thead th{border-top:0;font-size:12px;line-height:16px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--muted);padding-block:10px}\n.cmp tbody th{font-weight:650;width:23%}\n.cmp tr.yk th,.cmp tr.yk td{background:color-mix(in srgb,var(--coral) 7%,var(--paper));border-top:1.5px solid var(--ink);border-bottom:1.5px solid var(--ink);font-weight:600}\n.cmp tr.yk th{border-left:1.5px solid var(--ink);border-radius:12px 0 0 12px;position:relative}\n.cmp tr.yk td:last-child{border-right:1.5px solid var(--ink);border-radius:0 12px 12px 0}\n.cmp tr.yk + tr th,.cmp tr.yk + tr td{border-top:0}\n.ykn{display:inline-flex;align-items:center;gap:8px}\n.ykn .sym{width:26px;height:auto}\n.cards{display:grid;gap:12px}\n.cc{border:1px solid var(--line);border-radius:14px;background:var(--paper);padding:14px 16px}\n.cc h3{display:flex;align-items:center;gap:8px;font-size:17px;line-height:22px;font-weight:700;margin-bottom:8px}\n.cc dl{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.3fr);gap:6px 12px;font-size:14px;line-height:19px}\n.cc dt{color:var(--muted);font-weight:550}\n.cc dd{font-weight:550}\n.cc.yk{border:1.5px solid var(--ink);background:color-mix(in srgb,var(--coral) 7%,var(--paper))}\n.cc.yk dd{font-weight:650}\n@media (min-width:900px){.cmp{display:table}.cards{display:none}}\n\n/* ---------- 7: offer and form ---------- */\n.offer{display:grid;gap:24px}\n.offer-l{display:grid;gap:20px}\n.cl{display:grid;gap:10px}\n.cl li{display:grid;grid-template-columns:24px minmax(0,1fr);gap:10px;align-items:start;font-size:16px;line-height:23px;font-weight:550}\n.cl .ok{width:24px;height:24px;border-radius:50%;background:var(--lime);border:1px solid var(--ink);display:grid;place-items:center}\n.cl .ok .i{width:13px;height:13px;stroke-width:2.6}\n.pv .mb{display:grid;gap:12px}\n.pv .acc b{font-size:15px}\n.pv .kv{font-size:15px;line-height:22px}\n.pv .kv b{font-weight:650}\n.pv .fl{font-weight:600}\n.pv .cr{display:flex;align-items:center;gap:8px;padding:10px 16px;border-top:1px dashed #CFCBC1;background:#FBFAF6;font-size:14px;font-weight:600}\n.pv .cr .i{width:16px;height:16px;color:var(--muted)}\n.gf{border:1px solid var(--ink);border-radius:18px;background:var(--paper);padding:20px 16px;display:grid;gap:16px}\n.fld{display:grid;gap:6px;font-size:14.5px;line-height:20px;font-weight:650}\n.fld em{font-style:normal;font-size:12.5px;font-weight:550;color:var(--muted);margin-left:6px}\n.fld input,.fld select{font:inherit;font-weight:450;font-size:16px;line-height:22px;min-height:48px;padding:11px 13px;border-radius:10px;border:1px solid #BDB9AE;background:var(--paper);color:var(--ink);width:100%;min-width:0}\n.fld select{appearance:none;-webkit-appearance:none;padding-right:40px;background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23111317' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E\");background-repeat:no-repeat;background-position:right 12px center;background-size:18px}\n.fld input:focus,.fld select:focus{outline:2px solid var(--blue);outline-offset:1px;border-color:var(--ink)}\n.fld [aria-invalid=\"true\"]{border-color:var(--coral);box-shadow:inset 0 0 0 1px var(--coral)}\n.fld .err{font-size:13px;line-height:18px;font-weight:600;color:#C2341F}\n.gf .btn{width:100%;margin-top:4px}\n.conf{display:grid;grid-template-columns:auto minmax(0,1fr);gap:14px;align-items:start;border:1px solid var(--ink);border-radius:18px;background:var(--lime);padding:22px 18px}\n.conf:focus{outline:none}\n.conf .ok{width:40px;height:40px;border-radius:50%;background:var(--ink);color:var(--lime);display:grid;place-items:center}\n.conf .ok .i{width:20px;height:20px;stroke-width:2.6}\n.conf p{font-size:17px;line-height:1.5;font-weight:550}\n@media (min-width:900px){\n  .offer{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(32px,4vw,64px);align-items:start}\n  .offer-l{display:grid;gap:22px}\n  .gf{padding:28px}\n}\n.foot{padding-block:24px 32px;font-size:13px;line-height:19px;color:var(--muted)}\n.foot .wrap{display:flex;flex-wrap:wrap;align-items:center;gap:10px 24px}\n.foot .logo{height:20px}\n@media (max-width:899px){.foot{padding-bottom:96px}}\n\n/* ================= Round 16 layer, on top of round 15's base.css =================\n   Smaller headings, varied section shapes, one dark section, product-grade mockups, faces, bolder meaningful color. */\n:host{--ink2:#1B1E24;--ink3:#2A2D33;--inkb:#3C4048;--dim:#8E9088;\n  --c-news:#A7D8FF;--c-ravi:#315BFF;--c-you:#D8D5CD;--c-offer:#CDF05B;--c-goal:#F7F4EC}\n\n/* type: H2 at most two lines; phones use the font's narrower cut so long headings stay at two */\nh1{font-size:clamp(34px,9.4vw,40px);line-height:1.02;font-stretch:86%}\n.h2{font-size:28px;line-height:1.08;letter-spacing:-.03em;font-stretch:82%}\n@media (min-width:900px){\n  h1{font-size:clamp(44px,3.7vw,54px);line-height:1;font-stretch:100%}\n  .h2{font-size:clamp(34px,3vw,44px);line-height:1.06;letter-spacing:-.032em;font-stretch:100%}\n}\n.lead{max-width:60ch}\n.intro{display:grid;gap:12px;margin-bottom:24px;max-width:820px}\n@media (min-width:900px){.intro{margin-bottom:36px}}\n\n/* section surfaces: the rhythm alternates so no two neighbours look alike */\n.s-paper{background:var(--paper)}\n.s-canvas{background:var(--canvas)}\n.sec{border-bottom:0}\n.sec + .sec{box-shadow:inset 0 1px 0 var(--line)}\n.sec.dark,.sec.dark + .sec{box-shadow:none}\n\n/* faces and small marks */\n.fc{display:inline-block;flex:none;width:36px;height:36px;border-radius:50%;background:var(--panel) center/cover no-repeat;box-shadow:0 0 0 2px var(--paper)}\n.fc.sm{width:26px;height:26px}\n.fc.lg{width:44px;height:44px}\n.fc.you{display:inline-grid;place-items:center;background:var(--ink3);color:var(--c-you)}\n.fc.you .i{width:15px;height:15px}\n.fnote{margin-top:10px;font-size:12.5px;line-height:18px;color:var(--muted)}\n.pill{display:inline-flex;align-items:center;gap:6px;min-height:26px;padding:3px 10px;border-radius:999px;font-size:13px;line-height:18px;font-weight:650;white-space:nowrap;background:var(--panel);color:var(--ink)}\n.pill .i{width:14px;height:14px;stroke-width:2.2}\n.pill.lime{background:var(--lime);box-shadow:inset 0 0 0 1px var(--ink)}\n.pill.sky{background:color-mix(in srgb,var(--sky) 55%,var(--paper));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--blue) 35%,transparent)}\ns.was{color:var(--muted);text-decoration-thickness:1.5px;text-decoration-color:var(--muted);font-weight:550}\n\n/* the app frame every mockup sits in */\n.app{background:var(--paper);border:1px solid var(--ink);border-radius:14px;overflow:hidden;box-shadow:0 22px 44px -30px rgba(17,19,23,.35)}\n.app-bar{display:flex;align-items:center;gap:10px;min-height:42px;padding:7px 12px;background:#FBFAF6;border-bottom:1px solid var(--line)}\n.app-bar .dots{display:flex;gap:5px;flex:none}\n.app-bar .dots i{width:8px;height:8px;border-radius:50%;background:var(--stone)}\n.app-bar .sym{width:22px;height:auto;flex:none}\n.app-bar b{font-size:14px;line-height:19px;font-weight:650;min-width:0}\n.app-bar .ex{margin-left:auto}\n.app-bar .co{font-size:13px;color:var(--muted)}\n\n/* ---------- 1. Hero ---------- */\n.hc .ln{padding-block:10px}\n.hc .ln.two{grid-template-columns:36px minmax(0,1fr);background:#FBFAF6}\n.hc .ln.two .ic{background:var(--lime);border:1px solid var(--ink)}\n.hc .ln.two > span:last-child{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px}\n.hc .ln.two s.was{font-size:14.5px;line-height:20px;white-space:normal}\n.hc .ln.ok .ic{background:var(--lime);border:1px solid var(--ink)}\n.hc .ln.ok b{font-weight:650}\n.hc-c{display:block;max-width:none}\n.hc-c .ln{font-size:15px}\n.hc-d{display:none}\n.hero-t{gap:14px}\n.hero-t .btn{margin-top:2px}\n.badges{display:flex;flex-wrap:wrap;gap:6px}\n.badges li{display:inline-flex;align-items:center;gap:6px;min-height:30px;padding:4px 10px;border:1px solid var(--stone);border-radius:8px;background:var(--paper);font-size:13px;line-height:18px;font-weight:650}\n.badges .i{width:15px;height:15px;color:var(--ink)}\n.proof{gap:10px}\n.proof .pl{margin-top:4px}\n.cust{display:grid;gap:8px}\n.cq{display:grid;grid-template-columns:36px minmax(0,1fr);gap:4px 10px;align-items:center;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:var(--paper)}\n.cq .who b{display:block;font-size:14px;line-height:19px}\n.cq .who span{display:block;font-size:12.5px;line-height:17px;color:var(--muted)}\n.cq .res{grid-column:1/-1;font-size:17px;line-height:22px;font-weight:700;letter-spacing:-.01em;margin-top:4px}\n.cq blockquote{grid-column:1/-1;font-size:14.5px;line-height:21px;color:var(--soft)}\n@media (min-width:900px){\n  .hero-g{grid-template-columns:minmax(0,1.3fr) minmax(0,.8fr)}\n  .hero-t{gap:18px}\n  .hero-t .eyb{order:1}.hero-t h1{order:2}.hero-t .sub{order:3}.hero-t .btn{order:4}.hero-t .proof{order:5}\n  .hc-c{display:none}.hc-d{display:block}\n  .cust{grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);align-items:start}\n}\n\n/* ---------- 2A. The waste bar ---------- */\n.waste .wbx{padding:18px 16px 16px}\n.span-l{position:relative;display:flex;justify-content:center;margin-bottom:10px;font-size:13.5px;line-height:18px;font-weight:650}\n.span-l::before{content:\"\";position:absolute;left:0;right:0;top:50%;height:8px;margin-top:-1px;border:1.5px solid var(--ink);border-bottom:0;border-radius:3px 3px 0 0}\n.span-l span{position:relative;padding-inline:10px;background:var(--paper)}\n.wbar{display:flex;height:96px;border-radius:8px;overflow:hidden;border:1.5px solid var(--ink)}\n.wbar .lm{flex:0 0 3.83%;min-width:11px;background:var(--lime);border-right:1.5px solid var(--ink)}\n.wbar .dk{flex:1;display:flex;flex-direction:column;justify-content:center;gap:2px;padding-inline:16px;background:var(--ink);color:var(--paper)}\n.wbar .dk b{font-size:21px;line-height:26px;font-weight:700;letter-spacing:-.015em}\n.wbar .dk span{font-size:14px;line-height:19px;color:var(--stone)}\n.lime-l{position:relative;display:flex;align-items:center;gap:8px;margin-top:12px;padding-left:2px;font-size:14px;line-height:19px;font-weight:650}\n.lime-l::before{content:\"\";position:absolute;left:5px;top:-13px;height:12px;border-left:1.5px solid var(--ink)}\n.lime-l i{width:12px;height:12px;border-radius:3px;background:var(--lime);border:1px solid var(--ink);flex:none}\n.yk-row{display:grid;grid-template-columns:22px minmax(0,1fr);gap:10px;align-items:start;padding:13px 16px;border-top:1px solid var(--line);background:color-mix(in srgb,var(--coral) 9%,var(--paper));font-size:15px;line-height:22px;font-weight:550}\n.yk-row .sym{width:22px;height:auto;margin-top:4px}\n.more{margin-top:20px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}\n.more > summary{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:52px;font-size:15.5px;font-weight:650;cursor:pointer;list-style:none}\n.more > summary::-webkit-details-marker{display:none}\n.more > summary .i{width:20px;height:20px;transition:transform 200ms}\n.more[open] > summary .i{transform:rotate(180deg)}\n.more .chart{padding-bottom:20px}\n@media (min-width:900px){\n  .waste .wbx{padding:24px 24px 20px}\n  .wbar{height:112px}\n  .wbar .dk{padding-inline:24px}\n  .wbar .dk b{font-size:26px;line-height:32px}\n  .wbar .dk span{font-size:15px}\n  .yk-row{padding:14px 24px;font-size:16px}\n}\n\n/* ---------- 2B. A builder's week ---------- */\n.wk .day{grid-template-columns:44px minmax(0,1fr) auto}\n.wk .day .t{display:grid;grid-template-columns:18px minmax(0,1fr);gap:8px;align-items:start}\n.wk .day .t .i{width:16px;height:16px;margin-top:2px;color:var(--muted)}\n.wk .h{padding:3px 8px;border-radius:999px;background:var(--panel)}\n@media (min-width:900px){\n  .rev{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}\n  .rev > .intro{order:2;margin-bottom:0}\n  .rev > figure{order:1;justify-self:start}\n}\n\n/* ---------- 3. The engine room, on ink ---------- */\n.sec.dark{background:var(--ink);color:var(--canvas)}\n.dark .h2{color:var(--canvas)}\n.dark .lead{color:var(--stone)}\n.dark .under{color:var(--canvas)}\n.dark .fnote{color:var(--stone)}\n.dark .ex{background:transparent;border-color:#5A5E66;color:var(--stone)}\n.er{position:relative;display:grid;gap:0;margin-top:8px}\n.er-wires{display:none}\n.er .k{font-size:11px;line-height:15px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--stone)}\n.dpan{background:var(--ink2);border:1px solid var(--inkb);border-radius:14px}\n.acct{padding:14px}\n.acct .ah{display:flex;align-items:center;gap:10px}\n.acct .ah .fc{margin-left:-14px;box-shadow:0 0 0 2px var(--ink2)}\n.acct .ah b{display:block;font-size:15px;line-height:20px}\n.acct .ah small{display:block;font-size:13px;line-height:18px;color:var(--stone)}\n.acct .ah .ex{margin-left:auto;align-self:start}\n.acct .mono.co{background:var(--canvas);color:var(--ink);border-color:var(--canvas)}\n.fitl{display:grid;grid-template-columns:22px minmax(0,1fr);gap:8px;align-items:start;margin-top:12px;padding-top:12px;border-top:1px solid var(--inkb);font-size:14px;line-height:20px}\n.fitl .ok{width:22px;height:22px;border-radius:50%;background:var(--lime);color:var(--ink);display:grid;place-items:center}\n.fitl .ok .i{width:12px;height:12px;stroke-width:2.8}\n.facts2{display:grid;gap:14px}\n.fg{display:grid;gap:7px}\n.fcs{display:flex;flex-wrap:wrap;gap:6px}\n.fct{display:inline-flex;align-items:center;gap:7px;min-height:30px;padding:4px 10px;border-radius:7px;border:1px dashed var(--inkb);font-size:13px;line-height:18px;font-weight:600;color:var(--dim);transition:all 380ms var(--ease)}\n.fct .i{width:14px;height:14px;flex:none}\n.fct.used{border-style:solid}\n.fct.used.on{border-color:var(--c);color:var(--canvas);background:color-mix(in srgb,var(--c) 16%,var(--ink2))}\n.fct.used.on .i{color:var(--c)}\n.core{padding:14px;display:grid;gap:12px}\n.wbs{display:grid;gap:9px}\n.wbs .wb{display:grid;grid-template-columns:44px minmax(0,1fr);gap:8px;align-items:center;font-size:12px;font-weight:650;color:var(--stone)}\n.wbs .wb span.t{display:block;height:8px;border-radius:4px;background:var(--ink3);overflow:hidden}\n.wbs .wb i{display:block;height:100%;width:0;border-radius:4px;background:var(--c);transition:width 700ms var(--joint)}\n.er.weighed .wbs .wb i{width:calc(var(--w) * 100%)}\n.dial2{display:grid;justify-items:center;gap:2px}\n.dial2 svg{width:112px;height:62px}\n.dial2 .arc{fill:none;stroke:var(--ink3);stroke-width:8;stroke-linecap:round}\n.dial2 .nd{stroke:var(--canvas);stroke-width:2.4;stroke-linecap:round;transform-origin:56px 56px;transition:transform 700ms var(--joint);transform:rotate(0deg)}\n.er.weighed .dial2 .nd{transform:rotate(-38deg)}\n.dial2 small{font-size:12.5px;line-height:17px;font-weight:600;color:var(--canvas)}\n.outc{display:grid;gap:12px}\n.tpl{padding:12px 14px;border:1px dashed #5A5E66;border-radius:12px;background:transparent}\n.tpl p:last-child{margin-top:4px;font-size:14.5px;line-height:21px;color:#B4B6AE}\n.msgc{padding:14px}\n.msgc .mh2{display:flex;align-items:center;justify-content:space-between;gap:10px}\n.msgc .mh2 .k{color:var(--canvas)}\n.msgc .mh2 .k .sym{display:inline-block;width:20px;height:auto;vertical-align:-3px;margin-right:6px}\n.key{display:flex;flex-wrap:wrap;gap:2px 6px;margin-top:8px;font-size:12px;line-height:18px;font-weight:600;color:var(--stone)}\n.key .kk{color:var(--canvas);text-decoration:underline 2.5px var(--c);text-underline-offset:4px}\n.key .kk.goal{text-decoration-style:dashed}\n.mtext{margin-top:10px;font-size:16px;line-height:28px;color:var(--canvas)}\n.ph{transition:color 300ms,background-color 300ms;text-decoration:underline 3px var(--c);text-underline-offset:6px;text-decoration-skip-ink:none}\n.ph.goal{text-decoration-style:dashed;text-decoration-thickness:2.5px}\n.er.write .ph:not(.on){color:transparent;background:var(--ink3);border-radius:4px;text-decoration-color:transparent;box-decoration-break:clone;-webkit-box-decoration-break:clone}\n.sig{display:flex;align-items:center;gap:8px;margin-top:12px;font-size:13px;line-height:18px;font-weight:600;color:var(--stone)}\n.sig time,.reply2 time{margin-left:auto;font-size:12px;font-weight:550;color:var(--stone);font-variant-numeric:tabular-nums}\n.reply2{display:grid;grid-template-columns:36px minmax(0,1fr);gap:6px 10px;align-items:start;transition:opacity 400ms var(--ease),transform 400ms var(--ease)}\n.reply2 .bub2{background:var(--canvas);color:var(--ink);border-radius:14px 14px 14px 4px;padding:10px 12px;font-size:14.5px;line-height:20px}\n.reply2 .rmeta{grid-column:2;display:flex;align-items:center;gap:8px;flex-wrap:wrap}\n.reply2 .sorted{margin:0;transition:opacity 300ms,transform 300ms}\n.er.write .reply2:not(.on){opacity:0;transform:translateY(6px)}\n.er.write .reply2:not(.sort) .sorted{opacity:0;transform:scale(.96)}\n.dark .sorted{background:var(--lime);border-color:var(--lime);color:var(--ink)}\n/* phone: a vertical story; the dim facts and the weighing panel step aside */\n.er > * + *{margin-top:26px;position:relative}\n.er > * + *::before{content:\"\";position:absolute;left:18px;top:-21px;height:16px;border-left:1.5px solid #5A5E66}\n.er-c{display:none}\n.fct:not(.used){display:none}\n.fg:has(.fct.used) .fcs{gap:6px}\n@media (min-width:900px){\n  .er{grid-template-columns:minmax(0,200px) minmax(0,268px) minmax(0,176px) minmax(0,1fr);column-gap:46px;align-items:center}\n  .er > * + *{margin-top:0}\n  .er > * + *::before{display:none}\n  .er-wires{display:block;position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible}\n  .er-c{display:block}\n  .fct:not(.used){display:inline-flex}\n  .er-wires path{fill:none;stroke-linecap:round;transition:stroke 400ms,opacity 400ms}\n  .er-wires .w-in{stroke:#4A4E57;stroke-width:1.2;stroke-dasharray:3 4}\n  .er-wires .w-src{stroke:#3C4048;stroke-width:1.4}\n  .er-wires .w-src.on{stroke:var(--c);stroke-width:1.8}\n  .er-wires .w-out{stroke:#4A4E57;stroke-width:2}\n  .er-wires .w-out.on{stroke:var(--canvas)}\n}\n\n/* ---------- 4. The moment comes first ---------- */\n.ctc2{max-width:520px;width:100%;justify-self:end}\n.ctc2 .now{display:grid;grid-template-columns:44px minmax(0,1fr);gap:12px;align-items:start;padding:16px}\n.ctc2 .now .sg{width:44px;height:44px;border-radius:12px;display:grid;place-items:center;background:var(--blue);color:var(--paper)}\n.ctc2 .now .sg .i{width:22px;height:22px;stroke-width:2}\n.ctc2 .now p{font-size:19px;line-height:26px;font-weight:650;letter-spacing:-.01em}\n.ctc2 .now .pill{margin-right:4px;vertical-align:1px;font-size:13px}\n.ctc2 .bgx{padding:12px 16px 14px;border-top:1px solid var(--line)}\n.ctc2 .bgx ul{display:grid;gap:8px;margin-top:8px}\n.ctc2 .bgx li{display:grid;grid-template-columns:26px minmax(0,1fr);gap:10px;align-items:start;font-size:14px;line-height:20px;color:var(--soft)}\n.ctc2 .bgx li .ic{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;background:color-mix(in srgb,var(--sky) 45%,var(--paper));color:var(--blue)}\n.ctc2 .bgx li .ic .i{width:13px;height:13px}\n.ctc2 .bgx li b{color:var(--ink);font-weight:650}\n.ctc2 .kf{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;padding:12px 16px;border-top:1px solid var(--line);background:#FBFAF6;font-size:14px;line-height:20px;font-weight:650}\n.k2{font-size:11px;line-height:15px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}\n\n/* ---------- 5. Product-grade step mockups and the capability strip ---------- */\n.step .app{margin-top:4px}\n.urlb{flex:1;min-width:0;display:flex;align-items:center;gap:7px;height:28px;padding-inline:9px;border:1px solid var(--line);border-radius:7px;background:var(--paper);font-size:13px;font-weight:600}\n.urlb .i{width:14px;height:14px;color:var(--muted)}\n.lrn{display:grid;gap:8px;padding:12px 14px}\n.lrn .pill{justify-self:start}\n.lrn .lr{display:grid;grid-template-columns:26px minmax(0,1fr);gap:9px;align-items:start;font-size:13.5px;line-height:19px}\n.lrn .lr .ic{width:26px;height:26px;border-radius:7px;display:grid;place-items:center;background:var(--panel)}\n.lrn .lr .ic .i{width:14px;height:14px}\n.lrn .lr b{font-weight:650}\n.rows2{display:grid;padding:6px 14px 12px}\n.row2{display:grid;grid-template-columns:44px minmax(0,1fr) auto;gap:10px;align-items:center;padding:9px 0;border-bottom:1px solid var(--line);font-size:13.5px;line-height:18px}\n.row2 .av2{position:relative;width:44px;height:30px}\n.row2 .av2 .mono{position:absolute;left:0;top:1px}\n.row2 .av2 .fc{position:absolute;left:16px;top:0;width:28px;height:28px}\n.row2 b{display:block;font-weight:650}\n.row2 small{display:flex;align-items:center;gap:5px;font-size:12px;line-height:16px;color:var(--soft)}\n.row2 small .i{width:12px;height:12px;color:var(--blue);flex:none}\n.row2 small::first-letter{text-transform:uppercase}\n.fbtn2{display:flex;align-items:center;justify-content:center;gap:6px;height:36px;margin-top:12px;border-radius:999px;background:var(--ink);color:var(--paper);font-size:13.5px;font-weight:600}\n.fbtn2 .i{width:15px;height:15px}\n.tl2{display:grid;padding:12px 14px}\n.tl2 li{display:grid;grid-template-columns:26px minmax(0,1fr);gap:10px;align-items:center;font-size:13.5px;line-height:18px;min-height:30px}\n.tl2 .d{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;background:color-mix(in srgb,var(--sky) 45%,var(--paper));color:var(--blue)}\n.tl2 .d .i{width:13px;height:13px}\n.tl2 li.w{min-height:22px;color:var(--muted);font-size:12px;font-weight:600}\n.tl2 li.w .d{background:none;height:22px;position:relative}\n.tl2 li.w .d::before{content:\"\";position:absolute;left:12.25px;top:0;bottom:0;border-left:1.5px dashed #BDB9AE}\n.tl2 li.w span:last-child{display:inline-flex}\n.tl2 li.rs .d{background:var(--lime);color:var(--ink);border:1px solid var(--ink)}\n.tl2 li.bk{margin-top:8px}\n.tl2 li.bk .d{background:var(--ink);color:var(--lime)}\n.tl2 li.bk span:last-child{justify-self:start}\n.caps li{min-width:0}\n.tgl{display:inline-flex;align-items:center;gap:8px;min-height:44px;margin-top:6px;padding:0 4px;border:0;background:none;font-size:15px;font-weight:650;color:var(--ink);cursor:pointer;text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:1.5px}\n.tgl .i{width:18px;height:18px;transition:transform 200ms}\n.tgl[aria-expanded=\"true\"] .i{transform:rotate(180deg)}\n@media (max-width:899px){\n  .caps{margin-top:24px}\n  .caps:not(.all){grid-template-columns:repeat(6,minmax(0,1fr));gap:4px}\n  .caps:not(.all) li:not([data-core]){display:none}\n  .caps:not(.all) li{flex-direction:column;justify-content:start;gap:5px;min-height:64px;padding:8px 2px;border:0;background:none;font-size:10.5px;line-height:13px;text-align:center}\n  .caps:not(.all) li .i{width:22px;height:22px}\n}\n@media (min-width:900px){.caps-t{display:none}}\n\n/* ---------- 6. Comparison on phones ---------- */\n.mx{display:grid;border:1px solid var(--ink);border-radius:14px;overflow:hidden;background:var(--paper)}\n.mx-h,.mx-r > div{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr)}\n.mx-h > *{padding:12px 12px 10px;font-size:14.5px;line-height:19px;font-weight:700}\n.mx-h .y,.mx-r .y{background:color-mix(in srgb,var(--coral) 8%,var(--paper))}\n.mx-h .y{display:flex;align-items:center;gap:7px}\n.mx-h .y .sym{width:24px;height:auto}\n.mx-r{border-top:1px solid var(--line)}\n.mx-r .k2{padding:8px 12px 0}\n.mx-r > div > span{padding:4px 12px 11px;font-size:14px;line-height:19px}\n.mx-r .y{font-weight:650}\n.mx-r .k2 + div > span.y{padding-top:4px}\n.mx-r{display:grid}\n.mx-r .k2{grid-column:1/-1}\n.mx-r .k2{background:linear-gradient(90deg,color-mix(in srgb,var(--coral) 8%,var(--paper)) 50%,var(--paper) 50%)}\n.mx.nk .mx-h .y,.mx.nk .mx-r .y,.mx.nk .mx-r .k2{background:var(--paper)}\n.mx + .mx{margin-top:12px}\n.cmp-p{display:grid;gap:4px}\n.cmp-p .cards{margin-top:6px}\n@media (min-width:900px){.cmp-p{display:none}}\n\n/* ---------- 7. Offer ---------- */\n.offer2{display:grid;gap:22px}\n.offer2 .ol{display:grid;gap:18px;align-content:start}\n.pv2 .bd{display:grid;gap:12px;padding:14px 16px}\n.pv2 .acc .fc{margin-left:-14px}\n.pv2 .why{display:grid;grid-template-columns:26px minmax(0,1fr);gap:9px;align-items:start;font-size:14.5px;line-height:21px}\n.pv2 .why .ic{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;background:var(--blue);color:var(--paper)}\n.pv2 .why .ic .i{width:13px;height:13px;stroke-width:2.2}\n.pv2 .fl2{padding:10px 12px;border-radius:12px 12px 12px 4px;background:var(--panel);font-size:15px;line-height:22px}\n.pv2 .fl2 b{font-weight:650}\n.pv2 .cr{display:flex;align-items:center;gap:8px;padding:10px 16px;border-top:1px dashed #CFCBC1;background:#FBFAF6;font-size:13.5px;font-weight:600}\n.pv2 .cr .i{width:16px;height:16px;color:var(--muted)}\n.pv2 .cr small{font-size:12.5px;font-weight:550;color:var(--muted)}\n.safe{margin-top:-4px;font-size:13px;line-height:18px;color:var(--muted);text-align:center}\n@media (min-width:900px){\n  .offer2{grid-template-columns:minmax(0,1.12fr) minmax(0,.88fr);gap:clamp(32px,4.5vw,72px);align-items:start}\n  .offer2 .fbox{position:sticky;top:calc(var(--hd) + 24px)}\n}\n.fc-f101{background-image:url(https://cdn.prod.website-files.com/6580ba9f4259d2de5a4189c2/6ae4ef29a7dc56603d0d7e71_yk-t2-01.jpg)}.fc-f202{background-image:url(https://cdn.prod.website-files.com/6580ba9f4259d2de5a4189c2/6ae4ef9f9ea943a973cff316_yk-t2-02.jpg)}.fc-f302{background-image:url(https://cdn.prod.website-files.com/6580ba9f4259d2de5a4189c2/6ae4ef9f577c02c6b5782b18_yk-t2-03.jpg)}\n/* fixes after first render */\n.wk .day .t > span::first-letter{text-transform:uppercase}\n#cv .yk2.b{font-weight:700;fill:#111317}\n.acc2 b{display:block;font-size:15.5px;line-height:21px}\n.acc2 small{display:block;font-size:13px;line-height:18px;color:var(--soft)}\n@media (max-width:899px){\n  .outc{gap:0}\n  .outc > * + *{margin-top:26px;position:relative}\n  .outc > * + *::before{content:\"\";position:absolute;left:18px;top:-21px;height:16px;border-left:1.5px solid #5A5E66}\n}\n/* round 16, pass 2 */\n@media (min-width:900px){.hd{background:var(--paper);backdrop-filter:none;-webkit-backdrop-filter:none}}\nh1{letter-spacing:-.025em}\n.h2{letter-spacing:-.018em}\n@media (min-width:900px){h1{letter-spacing:-.04em}.h2{letter-spacing:-.032em}}\n.atop{display:flex;justify-content:flex-end;margin:-4px -4px 6px 0}\n.acct .ah .fc{margin-left:-12px}\n.row2 .av2,.acc3 .av2{position:relative;width:54px;height:30px;flex:none}\n.row2 .av2 .fc,.acc3 .av2 .fc{left:26px;width:28px;height:28px}\n.acc3{display:flex;align-items:center;gap:10px}\n.acc3 .av2 .mono{position:absolute;left:0;top:1px}\n.acc3 .av2 .fc{position:absolute;top:0}\n.row2{grid-template-columns:54px minmax(0,1fr) auto}\n@media (min-width:900px){\n  .rev{grid-template-columns:minmax(0,520px) minmax(0,1fr)}\n  .er{grid-template-columns:minmax(0,214px) minmax(0,262px) minmax(0,170px) minmax(0,1fr);column-gap:44px}\n}\n@media (max-width:899px){\n  .steps{gap:24px}\n  .step{gap:8px}\n  .lrn{gap:6px;padding:10px 12px}\n  .rows2{padding:4px 12px 10px}\n  .row2{padding:7px 0}\n  .tl2{padding:10px 12px}\n  .tl2 li{min-height:27px}\n  .tl2 li.w{min-height:18px}\n  .tl2 li.w .d{height:18px}\n  .caps:not(.all) li{min-height:56px;padding:6px 0}\n  .under{margin-top:14px}\n}\n.dark .sym path:last-child{stroke:#F7F4EC}\n\n/* ================= Round 17 layer: copy pass, live showstopper, concrete heroes, real proof, color meanings ================= */\n:host{--c-offer:#9C9E96;--err:#B42318}\nb,strong{font-weight:650}\n.lead b,.sub b{color:var(--ink);font-weight:650}\n.dark .lead b{color:var(--canvas)}\n@media (max-width:899px){.lead{font-size:16px}.sub{font-size:16.5px}}\n.fld .err{color:var(--err)}\n.fld [aria-invalid=\"true\"]{border-color:var(--err);box-shadow:inset 0 0 0 1px var(--err)}\n\n/* color meanings: Lime = outcomes only, Blue = signals/data only, Coral = Yoke */\n.chk .ok,.cl .ok{background:var(--paper);border:1.5px solid var(--ink)}\n.fitl .ok{background:var(--canvas)}\n.tl2 .d{background:var(--panel);color:var(--ink)}\n.caps .i{color:var(--ink)}\n.msgc{border-top:2px solid var(--coral)}\n.msgc .mh2 .k{color:#F26A59}\n\n/* ---------- hero proof: the real badges and customers ---------- */\n.badges{flex-wrap:nowrap;align-items:center;gap:6px}\n.badges li{border:0;padding:0;min-height:0;background:none;border-radius:0}\n.badges img{display:block;height:30px;width:auto}\n.cq{grid-template-columns:40px minmax(0,1fr) auto;border-radius:14px}\n.cq .ph-c{width:40px;height:40px;border-radius:50%;object-fit:cover;display:block}\n.cq .clogo{height:15px;width:auto;align-self:start;margin-top:3px}\n@media (min-width:900px){.badges{gap:10px}.badges img{height:38px}}\n\n/* ---------- Page A's hero card: real-looking accounts, then the bill ---------- */\n.hcA .arow{display:grid;grid-template-columns:36px minmax(0,1fr) auto;gap:10px;align-items:center;padding:10px 14px;border-top:1px solid var(--line)}\n.hcA .arow:first-child{border-top:0}\n.hcA .arow .fc{width:36px;height:36px;box-shadow:none}\n.hcA .who b{display:block;font-size:14.5px;line-height:19px}\n.hcA .who small{display:block;font-size:12.5px;line-height:17px;color:var(--soft)}\n.hcA .pill{font-size:12px;min-height:24px;padding:2px 9px}\n.sumline{padding:10px 14px;border-top:1px solid var(--line);font-size:13px;line-height:18px;font-weight:600;color:var(--soft);font-variant-numeric:tabular-nums}\n.bill2{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,.75fr);gap:12px;padding:11px 14px;border-top:1px dashed #CFCBC1;background:#FBFAF6}\n.bill2 .lv{display:grid;gap:3px;align-content:start}\n.bill2 .lb{font-size:11.5px;line-height:15px;font-weight:650;color:var(--muted)}\n.bill2 .lv b{font-size:15px;line-height:20px;font-weight:650}\n.bill2 .yk .pill{justify-self:start;font-size:13.5px}\n.bill2.in{display:inline-grid;grid-template-columns:auto auto;gap:18px;padding:0;border:0;background:none;vertical-align:top}\n.hc-c .ln.win{padding-block:9px}\n.hcA + .fnote,.hc-d .fnote{margin-top:8px}\n@media (min-width:900px){.hc-d{width:100%;max-width:470px;justify-self:end}.hc-d .hcA{max-width:none}}\n\n/* ---------- Section 4: three signal pills, two labeled values ---------- */\n.sigs{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}\n.sigs .pill{font-size:13px}\n.sigs .pill .i{color:var(--blue)}\n.ctc2 .kf{gap:8px 14px}\n\n/* ---------- Section 5: the mockups lead ---------- */\n@media (min-width:900px){\n  .step h3{font-size:18px;line-height:24px}\n  .step > p{font-size:15px;line-height:22px}\n  .step .app{min-height:330px;display:flex;flex-direction:column}\n  .step .app > :last-child{flex:1}\n  .step .app-bar{min-height:50px;padding:9px 14px}\n  .step .app-bar b{font-size:15px}\n  .lrn{gap:12px;padding:18px}\n  .lrn .lr{font-size:15px;line-height:21px;grid-template-columns:32px minmax(0,1fr)}\n  .lrn .lr .ic{width:32px;height:32px}\n  .rows2{padding:8px 16px 16px}\n  .row2{padding:12px 0;font-size:15px;line-height:20px}\n  .row2 small{font-size:13px;line-height:18px}\n  .fbtn2{height:42px;font-size:14.5px}\n  .tl2{padding:16px}\n  .tl2 li{font-size:15px;line-height:20px;min-height:34px}\n  .tl2 li.w{min-height:24px;font-size:13px}\n}\n\n/* ---------- Section 7: customer logos above the form ---------- */\n.fcol{display:grid;gap:16px;align-content:start}\n.logos .k2{margin-bottom:10px}\n.logos ul{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px 12px;align-items:center;justify-items:center}\n.logos img{display:block;height:20px;width:auto;max-width:100%;object-fit:contain;filter:grayscale(1) contrast(1.1);mix-blend-mode:multiply;opacity:.72}\n.logos li:nth-child(1) img,.logos li:nth-child(4) img{height:30px}\n@media (min-width:900px){\n  .logos ul{display:flex;justify-content:space-between;gap:16px}\n  .offer2 .fbox{position:static}\n  .fcol{position:sticky;top:calc(var(--hd) + 24px)}\n}\n\n/* ---------- Section 3: the live engine room ---------- */\n.ph{text-decoration:none!important;color:inherit!important;background:none!important}\n.ph .rest{visibility:hidden}\n.ph .end{display:inline-block;width:0;height:1em;vertical-align:-2px}\n.ph.cur .ty::after{content:\"\";display:inline-block;width:2px;height:1.05em;margin-left:1px;vertical-align:-3px;background:var(--canvas);animation:blink .8s steps(1) infinite}\n@keyframes blink{50%{opacity:0}}\n.key{display:none}\n.msgc{position:relative}\n.chip2{display:inline-flex;align-items:center;height:22px;padding-inline:8px;border-radius:999px;font-size:11.5px;font-weight:700;letter-spacing:.02em;white-space:nowrap;opacity:0;transform:scale(.6);transition:opacity 220ms var(--ease),transform 260ms cubic-bezier(.3,1.6,.5,1)}\n.chip2.in{opacity:1;transform:scale(1)}\n.chip2.in.out{opacity:0;transform:scale(.96);transition:opacity 450ms var(--ease),transform 450ms var(--ease)}\n.chip2[data-s=\"news\"]{background:var(--c-news);color:var(--ink)}\n.chip2[data-s=\"ravi\"]{background:var(--c-ravi);color:var(--paper)}\n.chip2[data-s=\"you\"]{background:var(--c-you);color:var(--ink)}\n.chip2[data-s=\"offer\"]{background:var(--c-offer);color:var(--ink)}\n.chip2[data-s=\"goal\"]{background:var(--c-goal);color:var(--ink)}\n.chipg{display:flex;flex-wrap:wrap;gap:6px;min-height:22px;margin-top:8px}\n.tplw{display:grid;gap:8px;justify-items:start}\n.noreply{display:inline-flex;align-items:center;min-height:24px;padding:2px 10px;border-radius:999px;background:var(--ink3);color:var(--stone);font-size:12px;font-weight:650;transition:opacity 300ms var(--ease),transform 300ms var(--ease)}\n.er.live:not(.nr) .noreply{opacity:0;transform:translateY(-4px)}\n.er.nr .tpl{opacity:.82}\n.fc.you{position:relative;overflow:visible}\n.fc.you .ym{position:absolute;right:-6px;bottom:-4px;display:grid;place-items:center;width:15px;height:15px;border-radius:50%;background:var(--ink2)}\n.fc.you .ym .sym{width:11px;height:auto}\n.rbw{display:grid}\n.reply2 .dots{display:none;align-items:center;gap:4px;justify-self:start;padding:12px 14px;border-radius:14px 14px 14px 4px;background:var(--canvas)}\n.reply2 .dots i{width:6px;height:6px;border-radius:50%;background:#8E9088;animation:dot 1s infinite}\n.reply2 .dots i:nth-child(2){animation-delay:.15s}.reply2 .dots i:nth-child(3){animation-delay:.3s}\n@keyframes dot{0%,60%,100%{transform:none;opacity:.5}30%{transform:translateY(-3px);opacity:1}}\n.er.live .reply2{opacity:0;transform:translateX(-10px)}\n.er.live .reply2.typing,.er.live .reply2.on{opacity:1;transform:none}\n.er.live .reply2.typing .dots{display:inline-flex}\n.er.live .reply2.typing .bub2{display:none}\n.er.live .reply2:not(.on) .bub2{visibility:hidden}\n.er.live .reply2:not(.sort) .rmeta{opacity:0}\n.er.live .reply2.sort .sorted{animation:stamp 420ms cubic-bezier(.3,1.5,.5,1) both}\n@keyframes stamp{0%{opacity:0;transform:scale(1.35) rotate(-4deg)}100%{opacity:1;transform:none}}\n.er-f{position:relative}\n.scan{position:absolute;left:-10px;right:-10px;top:-50px;height:50px;pointer-events:none;opacity:0;background:linear-gradient(transparent,rgba(167,216,255,.2) 55%,rgba(167,216,255,.32) 70%,transparent);border-bottom:1px solid rgba(167,216,255,.55);z-index:2}\n.er.scanning .scan{animation:scan 1.4s linear forwards}\n@keyframes scan{0%{top:-50px;opacity:1}92%{opacity:1}100%{top:calc(100% - 10px);opacity:0}}\n.er-wires path.w-src,.er-wires path.w-out{transition:stroke-dashoffset 650ms var(--ease),stroke 300ms}\n.erfoot{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:10px}\n.erfoot .fnote{margin:0}\n.replay{display:inline-flex;align-items:center;gap:7px;min-height:44px;padding:0 16px;border-radius:999px;border:1px solid var(--inkb);background:transparent;color:var(--canvas);font-size:14px;font-weight:600;cursor:pointer;flex:none}\n.replay:hover{background:var(--ink3)}\n.replay .i{width:16px;height:16px}\n.more4{font-size:12.5px;line-height:18px;font-weight:600;color:var(--dim)}\n@media (min-width:900px){\n  .more4{display:none}\n  .chipg{display:none}\n  .msgc .mtext{padding-right:74px}\n  .msgc .chip2{position:absolute;right:12px;margin-top:-11px}\n}\n@media (max-width:899px){\n  .er > * + *{margin-top:14px}\n  .er > * + *::before{top:-12px;height:10px}\n  .facts2{gap:8px}\n  .fg{gap:4px}\n  /* one compact weighing row: five labeled bars and the tone, on one line */\n  .er-c{display:block}\n  .core{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:end;padding:10px 12px}\n  .wbs{grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}\n  .wbs .wb{grid-template-columns:minmax(0,1fr);gap:3px;font-size:10.5px;line-height:13px}\n  .wbs .wb span.t{height:5px}\n  .dial2{display:block}\n  .dial2 svg{display:none}\n  .dial2 small{font-size:11.5px;line-height:13px;white-space:nowrap}\n  .mtext{font-size:15.5px;line-height:25px}\n  .outc > * + *{margin-top:14px}\n  .outc > * + *::before{top:-12px;height:10px}\n}\n/* the dots sit over the (hidden) reply bubble, so nothing below moves when the reply lands */\n.rbw{grid-template-areas:\"r\"}\n.rbw > *{grid-area:r}\n.er.live .reply2.typing .bub2{display:block;visibility:hidden}\n.reply2 .dots{align-self:start}\n.sumline span{white-space:nowrap}\n@media (max-width:899px){.badges{gap:5px}.badges img{height:26px}}\n/* logos: sized by area so each carries the same visual weight (a long wordmark sits lower than a stacked mark) */\n.logos img{height:auto!important;width:auto}\n.logos li:nth-child(1) img{height:34px!important}\n.logos li:nth-child(2) img{height:14px!important}\n.logos li:nth-child(3) img{height:20px!important}\n.logos li:nth-child(4) img{height:30px!important}\n.logos li:nth-child(5) img{height:21px!important}\n.logos li:nth-child(6) img{height:26px!important}\n.logos ul{min-height:36px}\n.logos img{mix-blend-mode:normal}\n.logos li:nth-child(6) img{height:24px!important}\n@media (min-width:900px){.logos ul{gap:10px}}\n@media (min-width:900px){\n  .er{grid-template-columns:minmax(0,196px) minmax(0,250px) minmax(0,156px) minmax(0,1fr);column-gap:38px}\n  .msgc .mtext{padding-right:66px;font-size:15.5px;line-height:26px}\n  .wbs .wb{grid-template-columns:40px minmax(0,1fr)}\n}\n/* \"worth contacting\" is a signal, so it is Blue everywhere (hero pill, section 4 pill, the waste bar's small segment) */\n.wbar .lm{flex:0 0 5%;background:var(--blue)}\n.lime-l i{background:var(--blue)}\n@media (max-width:899px){.sigs{flex-wrap:nowrap;gap:5px}.sigs .pill{font-size:12px;padding:3px 8px;gap:4px;min-height:26px}.sigs .pill .i{width:12px;height:12px}}\n\n/* ================= Round 18 layer ================= */\n/* section 3: the approved prototypes, desktop from 1100px, phone below (centered, at most 480px) */\n@media (max-width:1099px){#ssd{display:none}}\n@media (min-width:1100px){#ssp{display:none}}\n#get .under{margin-top:22px}\n\n/* Page A's hero card: the summary as three figures, the meetings in Lime */\n.figs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-top:1px solid var(--line)}\n.figs p{display:grid;gap:2px;align-content:start;padding:10px 14px}\n.figs p + p{border-left:1px solid var(--line)}\n.figs b{font-size:22px;line-height:26px;font-weight:700;letter-spacing:-.02em;font-variant-numeric:tabular-nums}\n.figs span{font-size:12px;line-height:16px;font-weight:550;color:var(--soft)}\n.figs .win{background:var(--lime)}\n.figs .win span{color:var(--ink)}\n.hcA .arow .pill{justify-self:end}\n\n</style>\n<svg width=\"0\" height=\"0\" style=\"position:absolute\" aria-hidden=\"true\" focusable=\"false\">\n  <defs>\n    <symbol id=\"i-like\" viewBox=\"0 0 24 24\"><path d=\"M7 10v12\"/><path d=\"M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2a3.13 3.13 0 0 1 3 3.88Z\"/></symbol>\n    <symbol id=\"i-comment\" viewBox=\"0 0 24 24\"><path d=\"M7.9 20A9 9 0 1 0 4 16.1L2 22Z\"/></symbol>\n    <symbol id=\"i-follow\" viewBox=\"0 0 24 24\"><path d=\"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\"/><circle cx=\"9\" cy=\"7\" r=\"4\"/><path d=\"M19 8v6\"/><path d=\"M22 11h-6\"/></symbol>\n    <symbol id=\"i-connect\" viewBox=\"0 0 24 24\"><path d=\"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\"/><circle cx=\"9\" cy=\"7\" r=\"4\"/><path d=\"M22 21v-2a4 4 0 0 0-3-3.87\"/><path d=\"M16 3.13a4 4 0 0 1 0 7.75\"/></symbol>\n    <symbol id=\"i-dm\" viewBox=\"0 0 24 24\"><path d=\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\"/><path d=\"M8 8h8\"/><path d=\"M8 12h5\"/></symbol>\n    <symbol id=\"i-email\" viewBox=\"0 0 24 24\"><rect width=\"20\" height=\"16\" x=\"2\" y=\"4\" rx=\"2\"/><path d=\"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7\"/></symbol>\n    <symbol id=\"i-voicemail\" viewBox=\"0 0 24 24\"><circle cx=\"6\" cy=\"12\" r=\"4\"/><circle cx=\"18\" cy=\"12\" r=\"4\"/><path d=\"M6 16h12\"/></symbol>\n    <symbol id=\"i-wait\" viewBox=\"0 0 24 24\"><circle cx=\"12\" cy=\"12\" r=\"10\"/><path d=\"M12 6v6l4 2\"/></symbol>\n    <symbol id=\"i-reply\" viewBox=\"0 0 24 24\"><path d=\"M9 17 4 12l5-5\"/><path d=\"M20 18v-2a4 4 0 0 0-4-4H4\"/></symbol>\n    <symbol id=\"i-stop\" viewBox=\"0 0 24 24\"><circle cx=\"12\" cy=\"12\" r=\"10\"/><path d=\"m4.9 4.9 14.2 14.2\"/></symbol>\n    <symbol id=\"i-check\" viewBox=\"0 0 24 24\"><path d=\"M20 6 9 17l-5-5\"/></symbol>\n    <symbol id=\"i-job\" viewBox=\"0 0 24 24\"><path d=\"M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16\"/><rect width=\"20\" height=\"14\" x=\"2\" y=\"6\" rx=\"2\"/></symbol>\n    <symbol id=\"i-post\" viewBox=\"0 0 24 24\"><path d=\"M12 20h9\"/><path d=\"M16.5 3.5a2.12 2.12 0 0 1 3 3L7 19l-4 1 1-4Z\"/></symbol>\n    <symbol id=\"i-funding\" viewBox=\"0 0 24 24\"><path d=\"m22 7-8.5 8.5-5-5L2 17\"/><path d=\"M16 7h6v6\"/></symbol>\n    <symbol id=\"i-news\" viewBox=\"0 0 24 24\"><path d=\"M4 22h16a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H8a2 2 0 0 0-2 2v16a2 2 0 0 1-2 2Zm0 0a2 2 0 0 1-2-2v-9c0-1.1.9-2 2-2h2\"/><path d=\"M18 14h-8\"/><path d=\"M15 18h-5\"/><path d=\"M10 6h8v4h-8Z\"/></symbol>\n    <symbol id=\"i-play\" viewBox=\"0 0 24 24\"><path d=\"M6 3v18l14-9Z\"/></symbol>\n    <symbol id=\"i-pause\" viewBox=\"0 0 24 24\"><rect x=\"14\" y=\"4\" width=\"4\" height=\"16\" rx=\"1\"/><rect x=\"6\" y=\"4\" width=\"4\" height=\"16\" rx=\"1\"/></symbol>\n    <symbol id=\"i-arrow\" viewBox=\"0 0 24 24\"><path d=\"M5 12h14\"/><path d=\"m12 5 7 7-7 7\"/></symbol>\n    <symbol id=\"i-down\" viewBox=\"0 0 24 24\"><path d=\"M12 5v14\"/><path d=\"m19 12-7 7-7-7\"/></symbol>\n    <symbol id=\"i-review\" viewBox=\"0 0 24 24\"><path d=\"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\"/><circle cx=\"9\" cy=\"7\" r=\"4\"/><path d=\"m16 11 2 2 4-4\"/></symbol>\n    <symbol id=\"i-inbox\" viewBox=\"0 0 24 24\"><path d=\"M22 12h-6l-2 3h-4l-2-3H2\"/><path d=\"M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z\"/></symbol>\n    <symbol id=\"i-x\" viewBox=\"0 0 24 24\"><path d=\"M18 6 6 18\"/><path d=\"m6 6 12 12\"/></symbol>\n    <symbol id=\"i-eye\" viewBox=\"0 0 24 24\"><path d=\"M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z\"/><circle cx=\"12\" cy=\"12\" r=\"3\"/></symbol>\n  <symbol id=\"i-hire\" viewBox=\"0 0 24 24\"><circle cx=\"9\" cy=\"8\" r=\"4\"/><path d=\"M2 21a7 7 0 0 1 14 0M19 8v6M16 11h6\"/></symbol><symbol id=\"i-cal\" viewBox=\"0 0 24 24\"><rect x=\"3\" y=\"5\" width=\"18\" height=\"16\" rx=\"2\"/><path d=\"M8 3v4M16 3v4M3 10h18\"/></symbol><symbol id=\"i-school\" viewBox=\"0 0 24 24\"><path d=\"M2 9.5 12 4.5l10 5-10 5z\"/><path d=\"M6 11.5V16c3 2.2 9 2.2 12 0v-4.5\"/></symbol><symbol id=\"i-web\" viewBox=\"0 0 24 24\"><circle cx=\"12\" cy=\"12\" r=\"9\"/><path d=\"M3 12h18M12 3c2.6 2.6 3.8 5.6 3.8 9S14.6 18.4 12 21c-2.6-2.6-3.8-5.6-3.8-9S9.4 5.6 12 3z\"/></symbol><symbol id=\"i-pen\" viewBox=\"0 0 24 24\"><path d=\"M12 20h9\"/><path d=\"M16.5 3.5a2.1 2.1 0 0 1 3 3L7 19l-4 1 1-4z\"/></symbol><symbol id=\"i-tag\" viewBox=\"0 0 24 24\"><path d=\"M20.6 13.4l-7.2 7.2a2 2 0 0 1-2.8 0L3 13V3h10l7.6 7.6a2 2 0 0 1 0 2.8z\"/><circle cx=\"7.5\" cy=\"7.5\" r=\"1.5\"/></symbol><symbol id=\"i-goal\" viewBox=\"0 0 24 24\"><circle cx=\"12\" cy=\"12\" r=\"9\"/><circle cx=\"12\" cy=\"12\" r=\"5\"/><circle cx=\"12\" cy=\"12\" r=\"1\"/></symbol><symbol id=\"i-clock\" viewBox=\"0 0 24 24\"><circle cx=\"12\" cy=\"12\" r=\"9\"/><path d=\"M12 7v5l3 2\"/></symbol><symbol id=\"i-archive\" viewBox=\"0 0 24 24\"><rect x=\"3\" y=\"4\" width=\"18\" height=\"4\" rx=\"1\"/><path d=\"M5 8v11a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V8M10 12h4\"/></symbol><symbol id=\"i-search\" viewBox=\"0 0 24 24\"><circle cx=\"11\" cy=\"11\" r=\"7\"/><path d=\"M20 20l-3.5-3.5\"/></symbol><symbol id=\"i-building\" viewBox=\"0 0 24 24\"><rect x=\"4\" y=\"3\" width=\"16\" height=\"18\" rx=\"1.5\"/><path d=\"M9 7h2M13 7h2M9 11h2M13 11h2M9 15h2M13 15h2\"/></symbol><symbol id=\"i-alert\" viewBox=\"0 0 24 24\"><circle cx=\"12\" cy=\"12\" r=\"9\"/><path d=\"M12 7.5v5M12 16h.01\"/></symbol><symbol id=\"i-plus\" viewBox=\"0 0 24 24\"><path d=\"M12 5v14M5 12h14\"/></symbol><symbol id=\"i-refresh\" viewBox=\"0 0 24 24\"><path d=\"M20 12a8 8 0 0 1-14.2 5M4 12a8 8 0 0 1 14.2-5\"/><path d=\"M18.5 3.5V7H15M5.5 20.5V17H9\"/></symbol><symbol id=\"i-credits\" viewBox=\"0 0 24 24\"><ellipse cx=\"12\" cy=\"6.5\" rx=\"7\" ry=\"3\"/><path d=\"M5 6.5v5c0 1.7 3.1 3 7 3s7-1.3 7-3v-5M5 11.5v5c0 1.7 3.1 3 7 3s7-1.3 7-3v-5\"/></symbol><symbol id=\"i-table\" viewBox=\"0 0 24 24\"><rect x=\"3\" y=\"4\" width=\"18\" height=\"16\" rx=\"2\"/><path d=\"M3 9.5h18M3 15h18M9 4v16\"/></symbol><symbol id=\"i-send\" viewBox=\"0 0 24 24\"><path d=\"M21 3 10.5 13.5M21 3l-6.5 18-4-7.5L3 9.5z\"/></symbol><symbol id=\"i-ccheck\" viewBox=\"0 0 24 24\"><circle cx=\"12\" cy=\"12\" r=\"9\"/><path d=\"M8 12.3l2.8 2.8L16.2 9.5\"/></symbol><symbol id=\"i-swap\" viewBox=\"0 0 24 24\"><path d=\"M7 4 3 8l4 4M3 8h14M17 20l4-4-4-4M21 16H7\"/></symbol><symbol id=\"i-phone\" viewBox=\"0 0 24 24\"><path d=\"M5.5 3.5h3.5l2 5-2.5 1.6a11 11 0 0 0 5.4 5.4l1.6-2.5 5 2V19a2 2 0 0 1-2 2A17.5 17.5 0 0 1 3.5 5.5a2 2 0 0 1 2-2z\"/></symbol><symbol id=\"i-shield\" viewBox=\"0 0 24 24\"><path d=\"M12 3l7.5 3v5.5c0 4.6-3.2 8.2-7.5 9.5-4.3-1.3-7.5-4.9-7.5-9.5V6z\"/><path d=\"M8.8 12l2.2 2.2 4.2-4.4\"/></symbol><symbol id=\"i-sort\" viewBox=\"0 0 24 24\"><path d=\"M4 6h16M7 12h10M10 18h4\"/></symbol><symbol id=\"i-moon\" viewBox=\"0 0 24 24\"><path d=\"M20 14.5A8.5 8.5 0 1 1 9.5 4a7 7 0 0 0 10.5 10.5z\"/></symbol><symbol id=\"i-info\" viewBox=\"0 0 24 24\"><circle cx=\"12\" cy=\"12\" r=\"10\"/><path d=\"M12 16v-4\"/><path d=\"M12 8h.01\"/></symbol><symbol id=\"i-link\" viewBox=\"0 0 24 24\"><path d=\"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71\"/><path d=\"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71\"/></symbol><symbol id=\"i-list\" viewBox=\"0 0 24 24\"><path d=\"M8 6h13\"/><path d=\"M8 12h13\"/><path d=\"M8 18h13\"/><path d=\"M3 6h.01\"/><path d=\"M3 12h.01\"/><path d=\"M3 18h.01\"/></symbol><symbol id=\"i-bug\" viewBox=\"0 0 24 24\"><path d=\"m8 2 1.88 1.88\"/><path d=\"M14.12 3.88 16 2\"/><path d=\"M9 7.13v-1a3 3 0 1 1 6 0v1\"/><path d=\"M12 20c-3.3 0-6-2.7-6-6v-3a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v3c0 3.3-2.7 6-6 6\"/><path d=\"M12 20v-9\"/><path d=\"M6.53 9C4.6 8.8 3 7.1 3 5\"/><path d=\"M6 13H2\"/><path d=\"M3 21c0-2.1 1.7-3.9 3.8-4\"/><path d=\"M20.97 5c0 2.1-1.6 3.8-3.5 4\"/><path d=\"M22 13h-4\"/><path d=\"M17.2 17c2.1.1 3.8 1.9 3.8 4\"/></symbol><symbol id=\"i-globe\" viewBox=\"0 0 24 24\"><circle cx=\"12\" cy=\"12\" r=\"10\"/><path d=\"M2 12h20\"/><path d=\"M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z\"/></symbol><symbol id=\"i-target\" viewBox=\"0 0 24 24\"><circle cx=\"12\" cy=\"12\" r=\"10\"/><circle cx=\"12\" cy=\"12\" r=\"6\"/><circle cx=\"12\" cy=\"12\" r=\"2\"/></symbol><symbol id=\"i-sms\" viewBox=\"0 0 24 24\"><rect x=\"5\" y=\"2\" width=\"14\" height=\"20\" rx=\"2\"/><path d=\"M12 18h.01\"/></symbol><symbol id=\"i-signal\" viewBox=\"0 0 24 24\"><path d=\"M2 12h4l3-8 4 16 3-8h6\"/></symbol><symbol id=\"i-db\" viewBox=\"0 0 24 24\"><ellipse cx=\"12\" cy=\"5\" rx=\"8\" ry=\"3\"/><path d=\"M4 5v6c0 1.7 3.6 3 8 3s8-1.3 8-3V5\"/><path d=\"M4 11v6c0 1.7 3.6 3 8 3s8-1.3 8-3v-6\"/></symbol><symbol id=\"i-spark\" viewBox=\"0 0 24 24\"><path d=\"M12 3l1.9 5.8L20 11l-6.1 2.2L12 19l-1.9-5.8L4 11l6.1-2.2z\"/></symbol><symbol id=\"i-hammer\" viewBox=\"0 0 24 24\"><path d=\"m15 12-8.5 8.5a2.12 2.12 0 1 1-3-3L12 9\"/><path d=\"M17.64 15 22 10.64\"/><path d=\"m20.91 11.7-1.25-1.25c-.6-.6-.93-1.4-.93-2.25v-.86L16.01 4.6a5.56 5.56 0 0 0-3.94-1.64H9l.92.82A6.18 6.18 0 0 1 12 8.4v1.56l2 2h2.47l2.26 1.91\"/></symbol><symbol id=\"i-user\" viewBox=\"0 0 24 24\"><circle cx=\"12\" cy=\"8\" r=\"4\"/><path d=\"M4 21v-1a6 6 0 0 1 6-6h4a6 6 0 0 1 6 6v1\"/></symbol><symbol id=\"i-award\" viewBox=\"0 0 24 24\"><circle cx=\"12\" cy=\"9\" r=\"6\"/><path d=\"M8.5 13.9 7 22l5-3 5 3-1.5-8.1\"/></symbol><symbol id=\"i-chev\" viewBox=\"0 0 24 24\"><path d=\"m6 9 6 6 6-6\"/></symbol></defs>\n</svg>\n\n\n<header class=\"hd\"><div class=\"wrap\"><a class=\"home\" href=\"#top\" aria-label=\"Yoke, back to top\"><svg class=\"logo\" role=\"img\" aria-label=\"Yoke\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"5.00 7.00 401.59 102.00\"><path d=\"M16.000 18.000 C16.000 52.000 36.000 58.000 96.000 58.000 C156.000 58.000 160.000 64.000 160.000 98.000\" stroke=\"#F04B37\" fill=\"none\" stroke-width=\"22.0\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M168.000 18.000 C168.000 52.000 148.000 58.000 96.000 58.000 C44.000 58.000 28.000 64.000 28.000 98.000\" stroke=\"#111317\" fill=\"none\" stroke-width=\"22.0\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path transform=\"translate(190.4239 103.9000) scale(0.106250)\" d=\"M279 0V-291L11 -720H196L408 -339H321L532 -720H701L433 -291V0Z\" fill=\"#111317\"/><path transform=\"translate(240.6828 103.9000) scale(0.106250)\" d=\"M302 10Q218 10 154.5 -23.5Q91 -57 55.5 -117.5Q20 -178 20 -257Q20 -336 55.5 -395.0Q91 -454 154.5 -487.0Q218 -520 302 -520Q387 -520 450.5 -487.0Q514 -454 549.0 -395.0Q584 -336 584 -257Q584 -178 548.5 -117.5Q513 -57 449.5 -23.5Q386 10 302 10ZM302 -108Q337 -108 365.5 -126.0Q394 -144 411.0 -177.5Q428 -211 428 -258Q428 -327 391.5 -364.5Q355 -402 302 -402Q249 -402 212.5 -364.0Q176 -326 176 -258Q176 -211 193.0 -177.5Q210 -144 238.5 -126.0Q267 -108 302 -108Z\" fill=\"#111317\"/><path transform=\"translate(299.7606 103.9000) scale(0.106250)\" d=\"M60 0V-720H210V0ZM387 0 175 -265 382 -510H555L312 -242L319 -289L565 0Z\" fill=\"#111317\"/><path transform=\"translate(347.7343 103.9000) scale(0.106250)\" d=\"M300 10Q215 10 152.0 -23.5Q89 -57 54.5 -117.0Q20 -177 20 -255Q20 -334 54.5 -393.5Q89 -453 151.0 -486.5Q213 -520 295 -520Q374 -520 432.0 -488.0Q490 -456 522.0 -399.0Q554 -342 554 -265Q554 -249 553.0 -235.5Q552 -222 550 -210H108V-309H429L403 -291Q403 -353 373.5 -382.5Q344 -412 293 -412Q234 -412 201.5 -372.0Q169 -332 169 -252Q169 -174 201.5 -136.0Q234 -98 299 -98Q335 -98 361.0 -110.0Q387 -122 400 -149H541Q516 -75 455.5 -32.5Q395 10 300 10Z\" fill=\"#111317\"/></svg></a><a class=\"btn\" href=\"#start\">Get started</a></div></header>\n<main>\n  <!-- ================= 1. Hero, Page A ================= -->\n  <section class=\"hero bp\" id=\"top\">\n    <div class=\"wrap hero-g\">\n      <div class=\"hero-t\">\n        <p class=\"eyb\">For teams running outbound in Clay</p>\n        <h1>Book meetings with your dream accounts, without the credit burn</h1>\n        <figure class=\"app hc hc-c hcA\" aria-label=\"Example: this month with Yoke\">\n          <div class=\"app-bar\"><svg class=\"sym\" viewBox=\"5 7 174 102\" aria-hidden=\"true\"><path d=\"M16 18C16 52 36 58 96 58C156 58 160 64 160 98\" stroke=\"#F04B37\" fill=\"none\" stroke-width=\"22\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M168 18C168 52 148 58 96 58C44 58 28 64 28 98\" stroke=\"#111317\" fill=\"none\" stroke-width=\"22\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg><b>This month with Yoke</b><span class=\"ex\">Example</span></div>\n          <ol>\n            <li class=\"arow\"><i class=\"fc fc-f101\" aria-hidden=\"true\"></i><span class=\"who\"><b>Calder Freight</b><small>Ravi Shah, COO</small></span><span class=\"pill lime\">Meeting booked \u00b7 Tue</span></li>\n            <li class=\"ln win\"><span class=\"ic\"><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-cal\"/></svg></span><span><b>9</b> meetings booked</span></li>\n          </ol>\n          <div class=\"bill2\"><p class=\"lv\"><span class=\"lb\">Clay lookups for this list:</span> <b>about 3,600 credits</b></p><p class=\"lv yk\"><span class=\"lb\">Yoke:</span> <span class=\"pill lime\">included</span></p></div>\n\n        </figure>\n        <p class=\"fnote hc-c\">Example people. Photos are AI-generated.</p>\n        <a class=\"btn\" href=\"#start\">Get started</a>\n        <p class=\"sub\"><b>Every lookup included.</b> Yoke checks fit first, researches each account, writes one-to-one and books the meeting. You pay only for what gets sent.</p>\n        <div class=\"proof\">\n          <ul class=\"badges\" aria-label=\"Recognition\">\n            <li><img src=\"https://cdn.prod.website-files.com/6580ba9f4259d2de5a4189c2/6ae4efa064b2f6ca49b86400_yk-t2-04.webp\" alt=\"G2 Users Love Us\" width=\"67\" height=\"84\"></li>\n            <li><img src=\"https://cdn.prod.website-files.com/6580ba9f4259d2de5a4189c2/6ae4efa08db962c6d944a4d1_yk-t2-05.webp\" alt=\"Over 10 years, as the industry\u2019s leading platform\" width=\"144\" height=\"84\"></li>\n            <li><img src=\"https://cdn.prod.website-files.com/6580ba9f4259d2de5a4189c2/67ef255db92715ab84318678_ad721b80-a8d6-478c-951e-a939c2dc1c20.svg\" alt=\"Capterra 4.6\" width=\"278\" height=\"91\"></li>\n            <li><img src=\"https://cdn.prod.website-files.com/6580ba9f4259d2de5a4189c2/6ae4efa0f95959ba16bbec5e_yk-t2-07.webp\" alt=\"Software Advice 4.6\" width=\"208\" height=\"84\"></li>\n          </ul>\n          <p class=\"pl\">Yoke customers</p>\n          <div class=\"cust\">\n            <figure class=\"cq\"><img class=\"ph-c\" src=\"https://cdn.prod.website-files.com/6580ba9f4259d2de5a4189c2/6ae4efa0216daa69864286a5_yk-t2-08.webp\" alt=\"\" width=\"40\" height=\"40\"><span class=\"who\"><b>Xavier Chang</b><span>XC Consulting</span></span><p class=\"res\">33 meetings in 60 days</p></figure>\n            <figure class=\"cq\"><img class=\"ph-c\" src=\"https://cdn.prod.website-files.com/6580ba9f4259d2de5a4189c2/6ae4efbd60754f0de606c9d4_yk-t2-09.webp\" alt=\"\" width=\"40\" height=\"40\"><span class=\"who\"><b>Greg Wise</b><span>OneScreen.ai</span></span><img class=\"clogo\" src=\"https://cdn.prod.website-files.com/6580ba9f4259d2de5a4189c2/6ae4efbda7dc56603d0d9ee5_yk-t2-10.webp\" alt=\"OneScreen.ai\" height=\"16\"><p class=\"res\">60 meetings booked in 60 days</p><blockquote>\u201cI let it run and wait until people are ready to talk.\u201d</blockquote></figure>\n          </div>\n        </div>\n\n      </div>\n      <div class=\"hc-d\">\n      <figure class=\"app hc hcA\" aria-label=\"Example: this month with Yoke\">\n        <div class=\"app-bar\"><svg class=\"sym\" viewBox=\"5 7 174 102\" aria-hidden=\"true\"><path d=\"M16 18C16 52 36 58 96 58C156 58 160 64 160 98\" stroke=\"#F04B37\" fill=\"none\" stroke-width=\"22\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M168 18C168 52 148 58 96 58C44 58 28 64 28 98\" stroke=\"#111317\" fill=\"none\" stroke-width=\"22\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg><b>This month with Yoke</b><span class=\"ex\">Example</span></div>\n        <ol>\n          <li class=\"arow\"><i class=\"fc fc-f101\" aria-hidden=\"true\"></i><span class=\"who\"><b>Calder Freight</b><small>Ravi Shah, COO</small></span><span class=\"pill lime\">Meeting booked \u00b7 Tue</span></li>\n          <li class=\"arow\"><i class=\"fc fc-f202\" aria-hidden=\"true\"></i><span class=\"who\"><b>Northpine Foods</b><small>Joan Mercer, VP Operations</small></span><span class=\"pill\">Replied</span></li>\n          <li class=\"arow\"><i class=\"fc fc-f302\" aria-hidden=\"true\"></i><span class=\"who\"><b>Harbor Lane</b><small>Dana Whitfield, VP Operations</small></span><span class=\"pill sky\">Worth contacting now</span></li>\n        </ol>\n        <div class=\"figs\"><p><b>1,200</b><span>accounts checked for fit</span></p><p><b>60</b><span>worth contacting now</span></p><p class=\"win\"><b>9</b><span>meetings booked</span></p></div>\n          <div class=\"bill2\"><p class=\"lv\"><span class=\"lb\">Clay lookups for this list:</span> <b>about 3,600 credits</b></p><p class=\"lv yk\"><span class=\"lb\">Yoke:</span> <span class=\"pill lime\">included</span></p></div>\n\n      </figure>\n      <p class=\"fnote\">Example people. Photos are AI-generated.</p>\n      </div>\n    </div>\n  </section>\n\n  <!-- ================= 2. Why it matters, Page A: the waste ================= -->\n  <section class=\"sec s-paper\" id=\"why\">\n    <div class=\"wrap\">\n      <div class=\"intro\">\n        <h2 class=\"h2\">You pay to look up people you\u2019ll never contact</h2>\n        <p class=\"lead\">Every lookup, retry and AI step costs credits, whether or not the person is worth contacting. You see the bill only after the run, and <b>when credits run out mid-month, the table stops</b> until someone tops up at about 30% more.</p>\n      </div>\n      <figure class=\"app waste\" id=\"waste\" aria-label=\"Example: one Clay run. 1,200 accounts looked up; 60 worth contacting; 1,140 never contacted, about 3,400 credits spent on them.\">\n        <div class=\"app-bar\"><span class=\"dots\"><i></i><i></i><i></i></span><b>One Clay run</b><span class=\"ex\">Example</span></div>\n        <div class=\"wbx\">\n          <p class=\"span-l\"><span>1,200 accounts looked up</span></p>\n          <div class=\"wbar\"><i class=\"lm\" aria-hidden=\"true\"></i><div class=\"dk\"><b>1,140 never contacted</b><span>about 3,400 credits spent on them</span></div></div>\n          <p class=\"lime-l\"><i aria-hidden=\"true\"></i>60 worth contacting</p>\n        </div>\n        <p class=\"yk-row\"><svg class=\"sym\" viewBox=\"5 7 174 102\" aria-hidden=\"true\"><path d=\"M16 18C16 52 36 58 96 58C156 58 160 64 160 98\" stroke=\"#F04B37\" fill=\"none\" stroke-width=\"22\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M168 18C168 52 148 58 96 58C44 58 28 64 28 98\" stroke=\"#111317\" fill=\"none\" stroke-width=\"22\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg><span>With Yoke: fit is checked on all 1,200 first. Only the 60 worth contacting now get researched and contacted, and lookups are included.</span></p>\n      </figure>\n      <p class=\"fnote\">Example, at about 3 credits an account. Only about 5% of buyers are ready to buy at any given time (the 95:5 rule).</p>\n      <details class=\"more\" id=\"more\"><summary>See how the bill grows as your table does more<svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-chev\"/></svg></summary>\n        <figure class=\"chart\">\n          <figcaption class=\"ct\" id=\"ctitle\">Your monthly bill as your table does more</figcaption>\n          <div class=\"cbox\" id=\"cbox\"><svg id=\"cv\" role=\"img\" aria-labelledby=\"ctitle\" aria-describedby=\"cdesc\"></svg><p class=\"sr\" id=\"cdesc\">Illustration, one seller, 1,000 prospects a month. Your Clay stack is five layers: lead database $120, LinkedIn automation $79, cold email platform $39, workflow runs (Clay Actions) $60, rising to $150 with a monthly re-run, and pay-per-lookup data. It costs $423 a month for email only, $456 with phone numbers, $553 with a waterfall, $620 with AI research and $1,010 with a monthly re-run. Under the axis, Yoke runs as a thin strip across all five: lookups included, you pay for what gets sent.</p><div id=\"ctips\"></div></div>\n          <div class=\"mk rc\" id=\"rc\">\n            <ol>\n              <li class=\"rl\"><span>Email only</span><span class=\"amt\">$423 a month</span></li>\n              <li class=\"rl\"><span>+ Phone numbers</span><span class=\"amt\">+$33</span><small>Phone numbers cost about 10 credits each</small></li>\n              <li class=\"rl\"><span>+ A waterfall</span><span class=\"amt\">+$97</span><small>Fallback providers mean more lookups and more Actions</small></li>\n              <li class=\"rl\"><span>+ AI research</span><span class=\"amt\">+$67</span></li>\n              <li class=\"rl\"><span>+ Monthly re-run</span><span class=\"amt\">+$390</span><small>Re-running the list buys it again, and Actions move up a tier</small></li>\n              <li class=\"rl tot\"><span>Your Clay stack</span><span class=\"amt\">$1,010 a month</span></li>\n            </ol>\n            <p class=\"yk\"><i aria-hidden=\"true\"></i><span>With Yoke: lookups included. You pay for what gets sent.</span></p>\n            <details class=\"dts\"><summary>Details and sources<svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-chev\"/></svg></summary><div class=\"dl\" id=\"rdet\"></div></details>\n          </div>\n          <p class=\"fn\">Illustration: one seller, 1,000 prospects a month, current list prices (Oct 2026). Yoke\u2019s line is illustrative, not a price. Details and sources in each layer.</p>\n        </figure>\n      </details>\n    </div>\n  </section>\n\n  <!-- ================= 3. What you get (shared): the engine room, on ink, live ================= -->\n  <section class=\"sec dark\" id=\"get\">\n    <div class=\"wrap\">\n      <div class=\"sec-top\">\n        <h2 class=\"h2\">The right people, each with a message worth answering</h2>\n        <p class=\"lead\"><b>Yoke runs the whole flow on every account:</b> the waterfall, the research, the scoring and the follow-ups. Then it writes a few lines worth answering.</p>\n      </div>\n<div id=\"ssd\" class=\"ss\"></div>\n<template id=\"ssd-tpl\"><style>\n/* Layout: one dark stage, three zones left to right: the queue, what Yoke finds, and one composer where weighing and writing happen together */\n:host{\n  --ink:#0E1014; --stage:#14171D; --panel:#1B1F27; --line:#2A303B; --mute:#7C8494; --soft:#B7BDC9; --fg:#F2F3F5;\n  --coral:#F04B37; --lime:#CDF05B; --blue:#4D7BFF; --sky:#8FCBFF; --gold:#F2C14E;\n  --font:\"Instrument Sans\",system-ui,-apple-system,sans-serif; --mono:\"JetBrains Mono\",ui-monospace,monospace;\n  color-scheme:dark;\n}\n*{box-sizing:border-box}\n\n.stage{position:relative;background:radial-gradient(1200px 500px at 60% 0%,#1A1F29 0%,var(--stage) 60%);border:1px solid var(--line);border-radius:18px;padding:22px;overflow:hidden}\n.grid{position:relative;z-index:1;display:grid;grid-template-columns:210px 88px minmax(0,270px) 72px minmax(0,1fr);column-gap:0;align-items:start}\n.grid>section:nth-child(1){grid-column:1}.grid>section:nth-child(2){grid-column:3}.grid>section:nth-child(3){grid-column:5}\nsvg.wires{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:2}\n.wires path{fill:none;stroke-width:1.6;stroke-linecap:round;transition:stroke .35s,opacity .4s,stroke-width .35s}\n.zone-h{font:500 11px/1 var(--mono);letter-spacing:.09em;text-transform:uppercase;color:var(--mute);margin-bottom:12px;display:flex;justify-content:space-between;gap:8px}\n\n/* queue */\n.queue{display:grid;gap:6px}\n.q{display:block;padding:8px;border-radius:10px;border:1px solid transparent;cursor:pointer;transition:background .3s,border-color .3s,opacity .3s;opacity:.3;background:none;color:inherit;font:inherit;text-align:left;width:100%}\n.q:hover{opacity:.8}\n.q:focus-visible{outline:2px solid var(--sky);outline-offset:2px}\n.q.on{opacity:1;background:var(--panel);border-color:#363d4a}\n.q.done{opacity:.3}\n.q.on.done{opacity:.6}\n.av{width:34px;height:34px;border-radius:50%;flex:none;display:grid;place-items:center;font:600 12px/1 var(--font);color:var(--ink)}\n.q .row{display:flex;align-items:center;gap:10px}\n.q .t{min-width:0;flex:1}\n.q .nm{display:flex;align-items:baseline;gap:8px}\n.q .t b{display:block;font-size:13.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}\n.q .t .who{display:block;font-size:12px;color:var(--mute)}\n.q .st{margin-left:auto;flex:none;font:500 10.5px/1 var(--mono);color:var(--mute)}\n.q.on .st{color:var(--gold)}\n.q.on:not(.done) .st{animation:work 2.6s ease-in-out infinite}\n@keyframes work{50%{opacity:.6}}\n.q.done .st{color:#93A653}\n.xp{display:grid;grid-template-rows:0fr;transition:grid-template-rows .45s cubic-bezier(.2,.8,.2,1)}\n.q.open .xp{grid-template-rows:1fr}\n.xpi{overflow:hidden;display:block}\n.xpb{display:block;margin-top:10px;padding-top:10px;border-top:1px solid #303643}\n.xpb .v{display:block;font-size:13px;color:var(--soft)}\n.xpb .ok{display:inline-flex;align-items:center;gap:6px;margin-top:8px;font:600 12px/1 var(--font);color:var(--ink);background:var(--lime);padding:5px 8px;border-radius:999px;opacity:0;transform:scale(.8);transition:.3s}\n.q.pass .xpb .ok{opacity:1;transform:none}\n\n/* findings */\n.cats{display:grid;gap:16px}\n.cat{opacity:0;transform:translateX(-8px);transition:.45s}\n.cat.show{opacity:1;transform:none}\n.cat-h{display:flex;align-items:center;gap:8px;font:600 12.5px/1 var(--font);margin-bottom:8px}\n.cat-h .dot{width:8px;height:8px;border-radius:50%}\n.cat-h .scan{font:500 11px/1 var(--mono);color:var(--mute);margin-left:6px}\n.cat-h .scan.busy::after{content:\"\";display:inline-block;width:10px;animation:dots 1s steps(4) infinite}\n@keyframes dots{0%{content:\"\"}25%{content:\".\"}50%{content:\"..\"}75%{content:\"...\"}}\n.items{display:flex;flex-direction:column;align-items:flex-start}\n.cat.sub{margin:-6px 0 0 16px;padding-left:12px;border-left:1px dashed #333a46}\n.cat.sub .cat-h{font:600 11.5px/1 var(--font);color:var(--soft)}\n.cat.sub .cat-h .dot{width:6px;height:6px}\n.cat.sub .it{font-size:12.5px;padding:5px 9px}\n.it{font-size:13px;padding:6px 10px;border-radius:8px;border:1px solid var(--line);color:var(--soft);background:#171B22;opacity:0;transform:translateY(4px);margin-bottom:6px;max-height:44px;overflow:hidden;transition:opacity .3s,transform .3s,border-color .35s,background .35s,color .35s,max-height .45s ease,margin .45s ease,padding .45s ease,border-width .45s ease}\n.cat .it.gone{max-height:0;margin-bottom:0;padding-top:0;padding-bottom:0;border-width:0;opacity:0}\n.it.show{opacity:1;transform:none}\n.it.dim{opacity:.3}\n.it.pick{color:var(--fg);font-weight:600}\n\n/* composer: weighing rail + message in one card */\n.comp{background:var(--panel);border:1px solid #363d4a;border-radius:16px;padding:16px;display:flex;flex-direction:column;gap:12px}\n.comp-h{display:flex;align-items:center;gap:8px;font:500 11px/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--coral)}\n.comp-h .to{margin-left:4px;color:var(--soft);text-transform:none;letter-spacing:0;font-family:var(--font);font-size:12px}\n.tone{margin-left:auto;display:flex;align-items:center;gap:8px;text-transform:none;letter-spacing:0;font-family:var(--font)}\n.tone .tk{font-size:12px;color:var(--mute)}\n.reel{position:relative;display:block;width:120px;height:22px;overflow:hidden;border-radius:6px;background:#141820;border:1px solid #2C323D;-webkit-mask-image:linear-gradient(transparent,#000 22%,#000 78%,transparent);mask-image:linear-gradient(transparent,#000 22%,#000 78%,transparent)}\n.rl{display:block;will-change:transform}\n.rl span{display:block;height:22px;line-height:22px;padding:0 9px;font-size:13px;font-weight:600;color:var(--soft);white-space:nowrap}\n.reel.set .rl span:last-child{color:var(--fg)}\n.reel.set{border-color:#4A5262}\n.body{border-top:1px solid var(--line);padding-top:14px}\n.lines{display:flex;flex-direction:column;gap:10px}\n.ln{font-size:16.5px;line-height:1.45;color:var(--fg)}\n.ln .ch{transition:color .5s ease}\n.ln{position:relative;min-height:1.45em}\n.chips{position:absolute;inset:0;pointer-events:none;z-index:3}\n.tag-src{position:absolute;font:600 10.5px/1 var(--font);padding:4px 7px;border-radius:999px;color:var(--ink);box-shadow:0 0 0 3px var(--stage),0 4px 14px rgba(0,0,0,.45);transform:translate(-100%,-50%) scale(.8);opacity:0;transition:opacity .3s,transform .3s cubic-bezier(.2,1.4,.4,1);white-space:nowrap}\n.tag-src.on{opacity:1;transform:translate(-100%,-50%)}\n.wst{font:500 10.5px/1 var(--mono);letter-spacing:0;text-transform:none;color:var(--fg);margin-left:4px;opacity:0;transition:opacity .3s}\n.wst.on{opacity:1;animation:work 2.6s ease-in-out infinite}\n.wst.on.done{animation:none;color:var(--mute)}\n.wires .w-feed{stroke-width:1.2}\n.wires .w-out{stroke-width:1.6}\n.caret{display:inline-block;width:2px;height:1.05em;vertical-align:-2px;margin-left:1px}\n.caret{animation:blink .8s steps(1) infinite}\n@keyframes blink{50%{opacity:0}}\n.meta{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:var(--mute);opacity:0;transition:.3s}\n.meta.on{opacity:1}\n.meta .sent{color:var(--soft)}\n.reply{display:flex;gap:10px;align-items:flex-start;opacity:0;transform:translateY(8px);transition:.4s}\n.reply.on{opacity:1;transform:none}\n.bub{background:#F2F3F5;color:#14171D;border-radius:14px 14px 14px 4px;padding:9px 12px;font-size:14.5px;max-width:100%}\n.typing{display:inline-flex;gap:4px;padding:12px 14px;background:#2A303B;border-radius:14px}\n.typing i{width:6px;height:6px;border-radius:50%;background:var(--soft);animation:bob 1s infinite}\n.typing i:nth-child(2){animation-delay:.15s}.typing i:nth-child(3){animation-delay:.3s}\n@keyframes bob{0%,60%,100%{transform:none;opacity:.5}30%{transform:translateY(-3px);opacity:1}}\n.outcome{display:inline-flex;align-items:center;gap:6px;font:700 12.5px/1 var(--font);color:var(--ink);background:var(--lime);padding:7px 10px;border-radius:999px;opacity:0;transform:scale(1.35) rotate(-4deg);transition:.35s cubic-bezier(.2,1.4,.4,1);align-self:flex-start}\n.outcome.on{opacity:1;transform:none}\n\n.controls{display:flex;gap:8px;justify-content:flex-end;margin-top:16px;position:relative;z-index:1}\n.btn{font:600 12.5px/1 var(--font);color:var(--soft);background:#1B1F27;border:1px solid #363d4a;border-radius:999px;padding:9px 12px;cursor:pointer}\n.btn:hover{color:var(--fg)}\n.btn:focus-visible{outline:2px solid var(--sky);outline-offset:2px}\n.foot{color:var(--mute);font-size:12px}\n.fadeout .cats,.fadeout .body,.fadeout .after{opacity:0;transition:opacity .45s}\n\n@media (max-width:980px){\n  .grid{grid-template-columns:minmax(0,1fr);gap:20px}\n  .grid>section:nth-child(n){grid-column:auto}\n  svg.wires{display:none}\n  .queue{grid-template-columns:repeat(3,minmax(0,1fr))}\n  .q .st,.q .t .who{display:none}\n  .comp{min-height:0}\n}\n@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}\n\n/* page port: the host stands in for the prototype page (its .wrap was a grid with an 18px gap) */\n:host{display:grid;gap:18px;color:var(--fg);font-family:var(--font);font-size:15px;line-height:1.45}\n/* page port: the small Pause and Replay buttons keep their look but get a 44px tap area */\n.btn{position:relative}.btn::after{content:\"\";position:absolute;inset:-7px -3px}\n.measuring *{transition:none!important}\n</style>\n  <div class=\"stage\" id=\"stage\" aria-label=\"Animated example of Yoke researching accounts and writing messages\">\n    <svg class=\"wires\" id=\"wires\" aria-hidden=\"true\"></svg><div class=\"chips\" id=\"chips\" aria-hidden=\"true\"></div>\n    <div class=\"grid\">\n      <section aria-label=\"Accounts\">\n        <div class=\"zone-h\"><span>Search list</span></div>\n        <div class=\"queue\" id=\"queue\"></div>\n      </section>\n\n      <section aria-label=\"What Yoke found\">\n        <div class=\"zone-h\"><span>Deep enrichment</span></div>\n        <div class=\"cats\" id=\"cats\"></div>\n      </section>\n\n      <section aria-label=\"Outreach\">\n        <div class=\"zone-h\"><span>Outreach</span></div>\n        <div class=\"comp\" id=\"comp\">\n          <div class=\"comp-h\"><svg width=\"16\" height=\"10\" viewBox=\"5 7 165 92\" aria-hidden=\"true\"><path d=\"M16 18C16 52 36 58 96 58C156 58 160 64 160 98\" stroke=\"#F04B37\" fill=\"none\" stroke-width=\"22\" stroke-linecap=\"round\"/><path d=\"M168 18C168 52 148 58 96 58C44 58 28 64 28 98\" stroke=\"#F2F3F5\" fill=\"none\" stroke-width=\"22\" stroke-linecap=\"round\"/></svg><span class=\"wst\" id=\"wst\"></span><span class=\"tone\"><span class=\"tk\">Tone</span><span class=\"reel\" id=\"reel\"><span class=\"rl\" id=\"rl\"></span></span></span></div>\n          <div class=\"body\">\n            <div class=\"lines\" id=\"lines\"></div>\n          </div>\n          <div class=\"after\" style=\"display:grid;gap:10px\">\n            <div class=\"meta\" id=\"meta\"><span class=\"sent\">Sent from your LinkedIn</span><span id=\"time\">9:14</span></div>\n            <div class=\"reply\" id=\"reply\"></div>\n            <div id=\"outcomeWrap\" style=\"display:flex\"></div>\n          </div>\n        </div>\n      </section>\n    </div>\n    <div class=\"controls\"><button class=\"btn\" id=\"pause\" type=\"button\">Pause</button><button class=\"btn\" id=\"replay\" type=\"button\">Replay</button></div>\n  </div>\n  <p class=\"foot\">Example people and companies.</p>\n</template>\n\n<div id=\"ssp\" class=\"ss\"></div>\n<template id=\"ssp-tpl\"><style>\n/* Layout: one phone-width section; a fixed-size stage (about half the screen) where the cloud of facts gathers into a sorted strip and the message writes below it */\n:host{\n  --ink:#0E1014; --stage:#14171D; --panel:#1B1F27; --line:#2A303B; --mute:#7C8494; --soft:#B7BDC9; --fg:#F2F3F5;\n  --coral:#F04B37; --lime:#CDF05B; --blue:#4D7BFF; --sky:#8FCBFF; --gold:#F2C14E;\n  --font:\"Instrument Sans\",system-ui,-apple-system,\"Segoe UI\",sans-serif; --mono:\"JetBrains Mono\",ui-monospace,Menlo,monospace;\n  color-scheme:dark;\n}\n*{box-sizing:border-box}\n/* on wide screens, show a real 390\u00d7844 phone viewport */\n\n.deck{position:relative;isolation:isolate;margin-bottom:12px}\n.deck .u{position:absolute;inset:0;border:1px solid var(--line);border-radius:18px;z-index:-1;pointer-events:none}\n.deck .u{border-color:#2C323D}\n.deck .u1{background:#191D24;transform:translateY(7px) scale(.965)}\n.deck .u2{background:#14171D;transform:translateY(14px) scale(.93)}\n.stage.leave{transform:translateX(-115%) rotate(-4deg);opacity:0;transition:transform .55s cubic-bezier(.55,0,.75,.2),opacity .5s ease-in}\n.stage.enter{transform:translateY(7px) scale(.965);opacity:.6;transition:none}\n.stage{transition:transform .5s cubic-bezier(.2,.8,.2,1),opacity .4s;position:relative;background:radial-gradient(500px 260px at 70% 0%,#1A1F29 0%,var(--stage) 70%);border:1px solid var(--line);border-radius:18px;padding:11px 11px 12px;display:grid;gap:9px;cursor:pointer;user-select:none}\n.stage:focus-visible{outline:2px solid var(--sky);outline-offset:3px}\n.tile{display:flex;align-items:center;gap:10px;transition:opacity .35s}\n.av{width:36px;height:36px;border-radius:50%;flex:none;display:grid;place-items:center;font:600 12px/1 var(--font);color:var(--ink);transition:transform .45s cubic-bezier(.2,1.3,.4,1)}\n.tile .t{min-width:0;flex:1}\n.tile .nm{display:flex;align-items:baseline;gap:8px}\n.tile b{font-size:14.5px;font-weight:600;white-space:nowrap}\n.tile .st{margin-left:auto;font:500 10.5px/1 var(--mono);color:var(--gold);animation:work 2.6s ease-in-out infinite}\n.tile .st.done{animation:none;color:#93A653}\n@keyframes work{50%{opacity:.6}}\n.tile .who{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--mute);white-space:nowrap}\n.icp{margin-left:auto;color:var(--fg);font-weight:600;opacity:0;transform:translateX(-4px);transition:.35s}\n.icp.on{opacity:1;transform:none}\n.lbl{display:flex;justify-content:space-between;font:500 10.5px/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--mute);padding-top:9px;border-top:1px solid var(--line)}\n.lbl .n{text-transform:none;letter-spacing:0}\n\n.body{position:relative;height:var(--bh,300px)}\n.chip,.mchip{font-size:12.5px;line-height:1;padding:7px 9px;border-radius:8px;border:1px solid var(--line);white-space:nowrap}\n.chip{position:absolute;left:0;top:0;color:var(--soft);background:#171B22;opacity:0;will-change:transform;\n  transition:transform .62s cubic-bezier(.22,.8,.22,1),opacity .35s ease,background .35s,border-color .35s,color .35s,box-shadow .35s}\n.chip.pick{color:var(--fg);font-weight:600}\n.chip.rest{opacity:.42!important}\n.chip.act{box-shadow:0 0 0 3px rgba(242,243,245,.08)}\n.measure{position:absolute;left:0;right:0;display:flex;flex-wrap:wrap;gap:7px;visibility:hidden;pointer-events:none}\n.measure.cloud{flex-direction:column;flex-wrap:nowrap;gap:9px}\n.mrow{display:flex;justify-content:center;gap:8px}\n\n.card{position:absolute;left:0;right:0;grid-template-columns:minmax(0,1fr);background:var(--panel);border:1px solid #363d4a;border-radius:14px;padding:10px 12px 12px;display:grid;gap:7px;opacity:0;transform:translateY(10px);transition:opacity .4s,transform .45s cubic-bezier(.2,.8,.2,1)}\n.card.on{opacity:1;transform:none}\n.ch{display:flex;align-items:center;gap:8px;min-height:22px;min-width:0}\n.wst{font:500 10.5px/1 var(--mono);white-space:nowrap;color:var(--fg);opacity:0;transition:opacity .3s}\n.wst.on{opacity:1;animation:work 2.6s ease-in-out infinite}\n.out{display:none;font:700 11.5px/1 var(--font);color:var(--ink);background:var(--lime);padding:5px 8px;border-radius:999px;white-space:nowrap}\n.out.on{display:inline-block;animation:stamp .4s cubic-bezier(.2,1.4,.4,1)}\n@keyframes stamp{from{opacity:0;transform:scale(1.3) rotate(-4deg)}to{opacity:1;transform:none}}\n.wst.gone{display:none}\n.ch svg{flex:none}\n.tone{flex:none}\n.tone{margin-left:auto;display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--mute)}\n.reel{position:relative;display:block;width:88px;height:20px;overflow:hidden;border-radius:6px;background:#141820;border:1px solid #2C323D;-webkit-mask-image:linear-gradient(transparent,#000 22%,#000 78%,transparent);mask-image:linear-gradient(transparent,#000 22%,#000 78%,transparent)}\n.rl{display:block}\n.rl span{display:block;height:20px;line-height:20px;padding:0 7px;font-size:12px;font-weight:600;color:var(--soft);white-space:nowrap}\n.reel.set .rl span:last-child{color:var(--fg)}\n.lines{display:grid;gap:4px}\n.ln{font-size:14.5px;line-height:1.4;color:var(--fg)}\n.ln .ch2{transition:color .5s ease}\n.caret{display:inline-block;width:2px;height:1.05em;vertical-align:-2px;margin-left:1px;animation:blink .8s steps(1) infinite}\n@keyframes blink{50%{opacity:0}}\n.reply{position:absolute;left:0;right:0;display:flex;gap:9px;align-items:flex-start;opacity:0;transform:translateY(8px);transition:.4s}\n.reply.on{opacity:1;transform:none}\n.reply .av{width:28px;height:28px;font-size:10.5px}\n.bub{background:#F2F3F5;color:#14171D;border-radius:14px 14px 14px 4px;padding:7px 10px;font-size:13.5px;line-height:1.35}\n.typing{display:inline-flex;gap:4px;padding:11px 13px;background:#2A303B;border-radius:14px}\n.typing i{width:6px;height:6px;border-radius:50%;background:var(--soft);animation:bob 1s infinite}\n.typing i:nth-child(2){animation-delay:.15s}.typing i:nth-child(3){animation-delay:.3s}\n@keyframes bob{0%,60%,100%{transform:none;opacity:.5}30%{transform:translateY(-3px);opacity:1}}\n.fade .body,.fade .lbl{opacity:0;transition:opacity .35s}\n.reset *{transition:none!important}\n.note{margin:0;font-size:12px;color:var(--mute)}\n\n@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}\n\n/* page port: the host stands in for the prototype's phone screen (a 14px-gap column), centered, at most 480px */\n:host{display:flex;flex-direction:column;gap:14px;max-width:480px;margin-inline:auto;color:var(--fg);font-family:var(--font);font-size:15px;line-height:1.45}\n/* page port: \"Pause\" sits beside the line under the stage, in the same style */\n.notes{display:flex;align-items:center;justify-content:space-between;gap:12px}\n.pz{flex:none;min-height:44px;min-width:44px;margin:-12px -6px -12px 0;padding:0 6px;border:0;background:none;font:inherit;font-size:12px;color:var(--mute);cursor:pointer}\n.pz:hover{color:var(--soft)}.pz:focus-visible{outline:2px solid var(--sky);outline-offset:2px;border-radius:4px}\n</style>\n      <div class=\"deck\"><span class=\"u u2\"></span><span class=\"u u1\"></span>\n      <div class=\"stage\" id=\"stage\" tabindex=\"0\" role=\"img\" aria-label=\"Animated example: Yoke reads public facts about a contact, keeps the four that matter and writes a message from them. Tap to replay.\">\n        <div class=\"tile\" id=\"tile\">\n          <span class=\"av\" id=\"av\"></span>\n          <span class=\"t\"><span class=\"nm\"><b id=\"co\"></b><span class=\"st\" id=\"st\">Working</span></span><span class=\"who\"><span id=\"who\"></span><span class=\"icp\" id=\"icp\">\u2713 Matches your ICP</span></span></span>\n        </div>\n        <div class=\"lbl\"><span id=\"lblt\">Finding data</span><span class=\"n\" id=\"lbln\"></span></div>\n        <div class=\"body\" id=\"body\">\n          <div id=\"chips\"></div>\n          <div class=\"card\" id=\"card\">\n            <div class=\"ch\"><svg width=\"16\" height=\"10\" viewBox=\"5 7 165 92\" aria-hidden=\"true\"><path d=\"M16 18C16 52 36 58 96 58C156 58 160 64 160 98\" stroke=\"#F04B37\" fill=\"none\" stroke-width=\"22\" stroke-linecap=\"round\"/><path d=\"M168 18C168 52 148 58 96 58C44 58 28 64 28 98\" stroke=\"#F2F3F5\" fill=\"none\" stroke-width=\"22\" stroke-linecap=\"round\"/></svg><span class=\"wst\" id=\"wst\">Writing your outreach</span><span class=\"out\" id=\"out\"></span><span class=\"tone\">Tone <span class=\"reel\" id=\"reel\"><span class=\"rl\" id=\"rl\"></span></span></span></div>\n            <div class=\"lines\" id=\"lines\"></div>\n          </div>\n          <div class=\"reply\" id=\"reply\"></div>\n          <div class=\"measure cloud\" id=\"mc\" aria-hidden=\"true\"></div>\n          <div class=\"measure\" id=\"mr\" aria-hidden=\"true\"></div>\n        </div>\n      </div>\n      </div>\n      <div class=\"notes\"><p class=\"note\">Tap to replay. Example people and companies.</p><button class=\"pz\" id=\"pause\" type=\"button\">Pause</button></div>\n</template>\n\n      <p class=\"under\">For founders, agencies and GTM teams: hand off the routine outbound, keep your custom builds.</p>\n    </div>\n  </section>\n\n  <!-- ================= 4. Fresh data and signals (shared; H2 and bottom row per page) ================= -->\n  <section class=\"sec s-canvas\" id=\"fresh\">\n    <div class=\"wrap two\">\n      <div class=\"intro\">\n        <h2 class=\"h2\">Reach people the moment they\u2019re ready</h2>\n        <p class=\"lead\"><span class=\"sigs\"><span class=\"pill sky\"><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-signal\"/></svg>A pricing-page visit</span><span class=\"sr\">.</span> <span class=\"pill sky\"><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-signal\"/></svg>A new VP</span><span class=\"sr\">.</span> <span class=\"pill sky\"><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-signal\"/></svg>A funding round</span><span class=\"sr\">.</span></span> Yoke spots the moment, and keeps every contact fresh at no extra cost.</p>\n      </div>\n      <div class=\"ctcw\">\n        <figure class=\"app ctc2\" aria-label=\"Example: a contact Yoke keeps fresh\">\n          <div class=\"app-bar\"><i class=\"fc sm fc-f302\" aria-hidden=\"true\"></i><b>Dana Whitfield</b><span class=\"co\">Harbor Lane</span><span class=\"ex\">Example</span></div>\n          <div class=\"now\"><span class=\"sg\"><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-signal\"/></svg></span><p><span class=\"pill sky\">Worth contacting now:</span> Dana visited your pricing page today</p></div>\n          <div class=\"bgx\"><p class=\"k2\">Kept fresh in the background</p>\n            <ul>\n              <li><span class=\"ic\"><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-job\"/></svg></span><span><b>Jun:</b> promoted to VP Operations, so the title is updated</span></li>\n              <li><span class=\"ic\"><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-email\"/></svg></span><span><b>Mar:</b> email verified</span></li>\n            </ul></div>\n          <div class=\"kf\"><span>Keeping it fresh:</span><span class=\"bill2 in\"><span class=\"lv\"><span class=\"lb\">Clay:</span> <b>credits for every refresh</b></span><span class=\"lv yk\"><span class=\"lb\">Yoke:</span> <span class=\"pill lime\">included</span></span></span></div>\n        </figure>\n        <p class=\"fnote\">Example people. Photos are AI-generated.</p>\n      </div>\n    </div>\n  </section>\n\n  <!-- ================= 5. How it works (shared) ================= -->\n  <section class=\"sec bp\" id=\"how\">\n    <div class=\"wrap\">\n      <div class=\"intro\"><h2 class=\"h2\">Yoke runs every step, from first signal to booked meeting</h2></div>\n      <ol class=\"steps\">\n        <li class=\"step\">\n          <h3><span>1</span>It learns your market.</h3>\n          <p>Start from your website, LinkedIn or a list from Clay. Yoke learns your buyers, offer and voice.</p>\n          <p class=\"chk\"><span class=\"ok\"><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-check\"/></svg></span><span>no tables to build</span></p>\n          <div class=\"app\"><div class=\"app-bar\"><span class=\"dots\"><i></i><i></i><i></i></span><span class=\"urlb\"><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-globe\"/></svg>yourcompany.com</span><span class=\"ex\">Example</span></div>\n            <div class=\"lrn\"><span class=\"pill\"><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-check\"/></svg>Learned</span>\n              <p class=\"lr\"><span class=\"ic\"><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-user\"/></svg></span><span><b>Buyers:</b> ops leaders at 3PLs and food distributors, 200+ trucks</span></p>\n              <p class=\"lr\"><span class=\"ic\"><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-target\"/></svg></span><span><b>Offer:</b> cut detention and routing costs</span></p>\n              <p class=\"lr\"><span class=\"ic\"><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-pen\"/></svg></span><span><b>Tone:</b> plain, direct</span></p></div></div>\n        </li>\n        <li class=\"step\">\n          <h3><span>2</span>It finds the right people at the right moment.</h3>\n          <p>Signals from site visits, job changes and LinkedIn, with a fit check on every account.</p>\n          <p class=\"chk\"><span class=\"ok\"><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-check\"/></svg></span><span>you approve who it goes after</span></p>\n          <div class=\"app\"><div class=\"app-bar\"><svg class=\"sym\" viewBox=\"5 7 174 102\" aria-hidden=\"true\"><path d=\"M16 18C16 52 36 58 96 58C156 58 160 64 160 98\" stroke=\"#F04B37\" fill=\"none\" stroke-width=\"22\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M168 18C168 52 148 58 96 58C44 58 28 64 28 98\" stroke=\"#111317\" fill=\"none\" stroke-width=\"22\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg><b>Accounts to approve</b><span class=\"ex\">Example</span></div>\n            <div class=\"rows2\">\n              <div class=\"row2\"><span class=\"av2\"><span class=\"mono sm co\">CF</span><i class=\"fc fc-f101\" aria-hidden=\"true\"></i></span><span><b>Calder Freight</b><small><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-signal\"/></svg>opened a Dallas hub</small></span><span class=\"pill sky\">Strong fit</span></div>\n              <div class=\"row2\"><span class=\"av2\"><span class=\"mono sm co\">NF</span><i class=\"fc fc-f202\" aria-hidden=\"true\"></i></span><span><b>Northpine Foods</b><small><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-signal\"/></svg>hiring 3 supply planners</small></span><span class=\"pill sky\">Strong fit</span></div>\n              <div class=\"row2\"><span class=\"av2\"><span class=\"mono sm co\">HL</span><i class=\"fc fc-f302\" aria-hidden=\"true\"></i></span><span><b>Harbor Lane</b><small><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-signal\"/></svg>VP Operations visited your pricing page</small></span><span class=\"pill\">Good fit</span></div>\n              <span class=\"fbtn2\" aria-hidden=\"true\"><svg class=\"i\"><use href=\"#i-check\"/></svg>Approve 3 accounts</span>\n            </div></div>\n        </li>\n        <li class=\"step\">\n          <h3><span>3</span>It reaches out and books the meeting.</h3>\n          <p>One-to-one from your own LinkedIn and inbox. Replies sorted, meetings booked, CRM updated.</p>\n          <p class=\"chk\"><span class=\"ok\"><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-check\"/></svg></span><span>before every send, it checks your CRM, your exclusions and account-safety limits</span></p>\n          <div class=\"app\"><div class=\"app-bar\"><svg class=\"sym\" viewBox=\"5 7 174 102\" aria-hidden=\"true\"><path d=\"M16 18C16 52 36 58 96 58C156 58 160 64 160 98\" stroke=\"#F04B37\" fill=\"none\" stroke-width=\"22\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M168 18C168 52 148 58 96 58C44 58 28 64 28 98\" stroke=\"#111317\" fill=\"none\" stroke-width=\"22\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg><b>Outreach</b><span class=\"ex\">Example</span></div>\n            <ol class=\"tl2\">\n              <li><span class=\"d\"><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-connect\"/></svg></span><span>LinkedIn: connection request</span></li>\n              <li class=\"w\"><span class=\"d\"></span><span>2-24 hrs</span></li>\n              <li><span class=\"d\"><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-dm\"/></svg></span><span>LinkedIn: message</span></li>\n              <li class=\"w\"><span class=\"d\"></span><span>2-24 hrs</span></li>\n              <li><span class=\"d\"><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-email\"/></svg></span><span>Email</span></li>\n              <li class=\"rs\"><span class=\"d\"><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-sort\"/></svg></span><span>Reply sorted: \u201cInterested: Tuesday works\u201d</span></li>\n              <li class=\"bk\"><span class=\"d\"><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-check\"/></svg></span><span class=\"pill lime\">Meeting booked \u00b7 CRM updated</span></li>\n            </ol></div>\n        </li>\n      </ol>\n      <p class=\"fnote\">Example people. Photos are AI-generated.</p>\n      <ul class=\"caps\" id=\"caps\" aria-label=\"What Yoke covers\">\n        <li data-core><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-signal\"/></svg>Signals</li>\n        <li data-core><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-refresh\"/></svg>Fresh data</li>\n        <li><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-target\"/></svg>Fit scoring</li>\n        <li data-core><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-search\"/></svg>Research</li>\n        <li data-core><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-connect\"/></svg>LinkedIn</li>\n        <li data-core><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-email\"/></svg>Email</li>\n        <li><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-voicemail\"/></svg>Voicemail</li>\n        <li><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-sms\"/></svg>SMS</li>\n        <li><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-reply\"/></svg>Reply handling</li>\n        <li><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-swap\"/></svg>CRM sync</li>\n        <li data-core><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-table\"/></svg>Connects to Clay</li>\n        <li><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-spark\"/></svg>Works from Claude or ChatGPT</li>\n      </ul>\n      <button class=\"tgl caps-t\" type=\"button\" aria-expanded=\"false\" aria-controls=\"caps\" data-tgl=\"all\">See all 12<svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-chev\"/></svg></button>\n      <p class=\"under\">Your custom builds stay in Clay. The routine outbound, and its data, move to Yoke.</p>\n    </div>\n  </section>\n\n  <!-- ================= 6. How you pay, compared (shared; H2 and phone layout per page) ================= -->\n  <section class=\"sec s-paper\" id=\"pay\">\n    <div class=\"wrap\">\n      <div class=\"intro\"><h2 class=\"h2\">Pay per send, not per lookup</h2></div>\n      <table class=\"cmp\">\n        <thead><tr><th scope=\"col\"><span class=\"sr\">Option</span></th><th scope=\"col\">How you pay</th><th scope=\"col\">First meetings</th><th scope=\"col\">Your time</th><th scope=\"col\">Upkeep</th></tr></thead>\n        <tbody>\n          <tr class=\"yk\"><th scope=\"row\"><span class=\"ykn\"><svg class=\"sym\" viewBox=\"5 7 174 102\" aria-hidden=\"true\"><path d=\"M16 18C16 52 36 58 96 58C156 58 160 64 160 98\" stroke=\"#F04B37\" fill=\"none\" stroke-width=\"22\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M168 18C168 52 148 58 96 58C44 58 28 64 28 98\" stroke=\"#111317\" fill=\"none\" stroke-width=\"22\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>Yoke</span></th><td>Per message sent; data and research included</td><td>In days</td><td>Minutes a day</td><td>Handled for you</td></tr>\n          <tr><th scope=\"row\">Clay plus sending tools</th><td>Per lookup and per action, plus each sending tool</td><td>Once you\u2019ve built it</td><td>Hours a week</td><td>You</td></tr>\n          <tr><th scope=\"row\">Hire a GTM Engineer</th><td>A salary (median $127,500)</td><td>Months</td><td>Hiring and onboarding</td><td>Them</td></tr>\n          <tr><th scope=\"row\">Build it yourself with AI tools</th><td>API calls, plus your time</td><td>Weeks</td><td>Hours a week</td><td>You</td></tr>\n        </tbody>\n      </table>\n      <div class=\"cmp-p\">\n        <div class=\"mx\" role=\"table\" aria-label=\"Yoke compared with Clay plus sending tools\">\n          <div class=\"mx-h\" role=\"row\"><b class=\"y\" role=\"columnheader\"><svg class=\"sym\" viewBox=\"5 7 174 102\" aria-hidden=\"true\"><path d=\"M16 18C16 52 36 58 96 58C156 58 160 64 160 98\" stroke=\"#F04B37\" fill=\"none\" stroke-width=\"22\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M168 18C168 52 148 58 96 58C44 58 28 64 28 98\" stroke=\"#111317\" fill=\"none\" stroke-width=\"22\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>Yoke</b><b role=\"columnheader\">Clay plus sending tools</b></div>\n          <div class=\"mx-r\"><p class=\"k2\">How you pay</p><div role=\"row\"><span class=\"y\" role=\"cell\">Per message sent; data and research included</span><span role=\"cell\">Per lookup and per action, plus each sending tool</span></div></div>\n          <div class=\"mx-r\"><p class=\"k2\">First meetings</p><div role=\"row\"><span class=\"y\" role=\"cell\">In days</span><span role=\"cell\">Once you\u2019ve built it</span></div></div>\n          <div class=\"mx-r\"><p class=\"k2\">Your time</p><div role=\"row\"><span class=\"y\" role=\"cell\">Minutes a day</span><span role=\"cell\">Hours a week</span></div></div>\n          <div class=\"mx-r\"><p class=\"k2\">Upkeep</p><div role=\"row\"><span class=\"y\" role=\"cell\">Handled for you</span><span role=\"cell\">You</span></div></div>\n        </div>\n        <button class=\"tgl\" type=\"button\" aria-expanded=\"false\" aria-controls=\"cmpmore\" data-tgl=\"hidden\">Compare with hiring or building it yourself<svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-chev\"/></svg></button>\n        <div class=\"cards\" id=\"cmpmore\" hidden>\n          <div class=\"cc\"><h3>Hire a GTM Engineer</h3><dl><dt>How you pay</dt><dd>A salary (median $127,500)</dd><dt>First meetings</dt><dd>Months</dd><dt>Your time</dt><dd>Hiring and onboarding</dd><dt>Upkeep</dt><dd>Them</dd></dl></div>\n          <div class=\"cc\"><h3>Build it yourself with AI tools</h3><dl><dt>How you pay</dt><dd>API calls, plus your time</dd><dt>First meetings</dt><dd>Weeks</dd><dt>Your time</dt><dd>Hours a week</dd><dt>Upkeep</dt><dd>You</dd></dl></div>\n        </div>\n      </div>\n    </div>\n  </section>\n\n  <!-- ================= 7. The offer and the form (shared; marked lines per page) ================= -->\n  <section class=\"sec s-canvas\" id=\"start\">\n    <div class=\"wrap offer2\">\n      <div class=\"ol\">\n        <div class=\"intro\" style=\"margin-bottom:0\"><p class=\"eyb\">Early access</p><h2 class=\"h2\">See who Yoke would contact for you, and what it would say</h2>\n          <p class=\"lead\">Tell us who you are and where to look. Here\u2019s what you get back:</p></div>\n        <ul class=\"cl\">\n          <li><span class=\"ok\"><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-check\"/></svg></span><span>the accounts worth contacting now, and why each one</span></li>\n          <li><span class=\"ok\"><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-check\"/></svg></span><span>the first message for each, in your voice</span></li>\n          <li><span class=\"ok\"><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-check\"/></svg></span><span>what the same run would cost in Clay</span></li>\n        </ul>\n        <div>\n          <figure class=\"app pv2\" aria-label=\"Example of what you get\">\n            <div class=\"app-bar\"><svg class=\"sym\" viewBox=\"5 7 174 102\" aria-hidden=\"true\"><path d=\"M16 18C16 52 36 58 96 58C156 58 160 64 160 98\" stroke=\"#F04B37\" fill=\"none\" stroke-width=\"22\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M168 18C168 52 148 58 96 58C44 58 28 64 28 98\" stroke=\"#111317\" fill=\"none\" stroke-width=\"22\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg><span class=\"ex\">Example</span></div>\n            <div class=\"bd\">\n              <div class=\"acc3\"><span class=\"av2\"><span class=\"mono sm co\">HL</span><i class=\"fc fc-f302\" aria-hidden=\"true\"></i></span><div class=\"acc2\"><b>Harbor Lane</b><small>Dana Whitfield, VP Operations</small></div></div>\n              <p class=\"why\"><span class=\"ic\"><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-signal\"/></svg></span><span><b>Why now:</b> visited your pricing page this week, and Harbor Lane just opened a Savannah site</span></p>\n              <p class=\"fl2\"><b>First line:</b> \u201cDana, congrats on the Savannah site.\u201d</p>\n            </div>\n            <p class=\"cr\"><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-credits\"/></svg><span>Same run in Clay: about 2,900 credits</span></p>\n          </figure>\n          <p class=\"fnote\">Example people. Photos are AI-generated.</p>\n        </div>\n      </div>\n      <div class=\"fcol\">\n        <div class=\"logos\"><p class=\"k2\">Yoke customers</p>\n          <ul>\n            <li><img src=\"https://cdn.prod.website-files.com/6580ba9f4259d2de5a4189c2/6ae4efbdf0fb1f67bd43848e_yk-t2-11.webp\" alt=\"Exponential Results\" height=\"30\"></li>\n            <li><img src=\"https://cdn.prod.website-files.com/6580ba9f4259d2de5a4189c2/6ae4efbda7dc56603d0d9ee5_yk-t2-10.webp\" alt=\"OneScreen.ai\" height=\"30\"></li>\n            <li><img src=\"https://cdn.prod.website-files.com/6580ba9f4259d2de5a4189c2/6ae4efbd27ab59289d22ff0e_yk-t2-12.webp\" alt=\"Catalyst Financial Group\" height=\"30\"></li>\n            <li><img src=\"https://cdn.prod.website-files.com/6580ba9f4259d2de5a4189c2/6ae4efbdd82a98cc50e8f16d_yk-t2-13.webp\" alt=\"AdvicePeriod\" height=\"30\"></li>\n            <li><img src=\"https://cdn.prod.website-files.com/6580ba9f4259d2de5a4189c2/6ae4efbdf0fb1f67bd4384ec_yk-t2-14.webp\" alt=\"Wellington-Altus\" height=\"30\"></li>\n            <li><img src=\"https://cdn.prod.website-files.com/6580ba9f4259d2de5a4189c2/6ae4efbee646e5ef02472510_yk-t2-15.webp\" alt=\"Humi\" height=\"30\"></li>\n          </ul></div>\n      <div class=\"fbox\" id=\"fbox\">\n        <form class=\"gf\" id=\"gf\" novalidate>\n          <div class=\"fld\"><label for=\"f-email\">Business email</label><input id=\"f-email\" name=\"email\" type=\"email\" autocomplete=\"email\" inputmode=\"email\" required aria-describedby=\"e-email\"><p class=\"err\" id=\"e-email\" hidden>Enter your business email.</p></div>\n          <div class=\"fld\"><label for=\"f-li\">LinkedIn profile<em>Optional</em></label><input id=\"f-li\" name=\"linkedin\" type=\"text\" inputmode=\"url\" autocomplete=\"url\" autocapitalize=\"off\" placeholder=\"linkedin.com/in/you\"></div>\n          <div class=\"fld\"><label for=\"f-web\">Website<em>Optional</em></label><input id=\"f-web\" name=\"website\" type=\"text\" inputmode=\"url\" autocapitalize=\"off\" placeholder=\"yourcompany.com\"></div>\n          <div class=\"fld\"><label for=\"f-role\">Your role</label>\n            <select id=\"f-role\" name=\"role\" required aria-describedby=\"e-role\">\n              <option value=\"\">Choose one</option>\n              <option>I build outbound for my company (GTM Engineer, RevOps)</option>\n              <option>I build outbound for clients (agency)</option>\n              <option>I run my own outbound (founder, small team)</option>\n              <option>I lead a sales team</option>\n              <option>I\u2019m a sales rep</option>\n              <option value=\"other\">Other</option>\n            </select><p class=\"err\" id=\"e-role\" hidden>Choose your role.</p></div>\n          <div class=\"fld\" id=\"f-other-w\" hidden><label for=\"f-other\">What\u2019s your role?</label><input id=\"f-other\" name=\"role_other\" type=\"text\" aria-describedby=\"e-other\"><p class=\"err\" id=\"e-other\" hidden>Tell us your role.</p></div>\n          <button class=\"btn\" type=\"submit\">Get started</button>\n          <p class=\"safe\">You\u2019ll see exactly what Yoke would do. Nothing is sent.</p>\n        </form>\n        <div class=\"conf\" id=\"conf\" hidden tabindex=\"-1\" role=\"status\"><span class=\"ok\"><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-check\"/></svg></span><p>You\u2019re in for early access. Your accounts and first messages arrive by email in less than a week. We\u2019ll tell you when your account opens.</p></div>\n      </div>\n      </div>\n    </div>\n  </section>\n</main>\n\n<footer class=\"foot\"><div class=\"wrap\"><svg class=\"logo\" role=\"img\" aria-label=\"Yoke\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"5.00 7.00 401.59 102.00\"><path d=\"M16.000 18.000 C16.000 52.000 36.000 58.000 96.000 58.000 C156.000 58.000 160.000 64.000 160.000 98.000\" stroke=\"#F04B37\" fill=\"none\" stroke-width=\"22.0\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M168.000 18.000 C168.000 52.000 148.000 58.000 96.000 58.000 C44.000 58.000 28.000 64.000 28.000 98.000\" stroke=\"#111317\" fill=\"none\" stroke-width=\"22.0\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path transform=\"translate(190.4239 103.9000) scale(0.106250)\" d=\"M279 0V-291L11 -720H196L408 -339H321L532 -720H701L433 -291V0Z\" fill=\"#111317\"/><path transform=\"translate(240.6828 103.9000) scale(0.106250)\" d=\"M302 10Q218 10 154.5 -23.5Q91 -57 55.5 -117.5Q20 -178 20 -257Q20 -336 55.5 -395.0Q91 -454 154.5 -487.0Q218 -520 302 -520Q387 -520 450.5 -487.0Q514 -454 549.0 -395.0Q584 -336 584 -257Q584 -178 548.5 -117.5Q513 -57 449.5 -23.5Q386 10 302 10ZM302 -108Q337 -108 365.5 -126.0Q394 -144 411.0 -177.5Q428 -211 428 -258Q428 -327 391.5 -364.5Q355 -402 302 -402Q249 -402 212.5 -364.0Q176 -326 176 -258Q176 -211 193.0 -177.5Q210 -144 238.5 -126.0Q267 -108 302 -108Z\" fill=\"#111317\"/><path transform=\"translate(299.7606 103.9000) scale(0.106250)\" d=\"M60 0V-720H210V0ZM387 0 175 -265 382 -510H555L312 -242L319 -289L565 0Z\" fill=\"#111317\"/><path transform=\"translate(347.7343 103.9000) scale(0.106250)\" d=\"M300 10Q215 10 152.0 -23.5Q89 -57 54.5 -117.0Q20 -177 20 -255Q20 -334 54.5 -393.5Q89 -453 151.0 -486.5Q213 -520 295 -520Q374 -520 432.0 -488.0Q490 -456 522.0 -399.0Q554 -342 554 -265Q554 -249 553.0 -235.5Q552 -222 550 -210H108V-309H429L403 -291Q403 -353 373.5 -382.5Q344 -412 293 -412Q234 -412 201.5 -372.0Q169 -332 169 -252Q169 -174 201.5 -136.0Q234 -98 299 -98Q335 -98 361.0 -110.0Q387 -122 400 -149H541Q516 -75 455.5 -32.5Q395 10 300 10Z\" fill=\"#111317\"/></svg><span>\u00a9 2026 Yoke</span></div></footer>\n<div class=\"sbar\" id=\"sbar\" aria-hidden=\"true\"><a class=\"btn\" href=\"#start\" tabindex=\"-1\">Get started</a></div></div>","js":"\n(() => {\n  const RM = matchMedia('(prefers-reduced-motion: reduce)').matches;\n  const icon = (id, cls = 'i') => `<svg class=\"${cls}\" aria-hidden=\"true\"><use href=\"#i-${id}\"/></svg>`;\n  const esc = s => String(s).replace(/[&<>\"]/g, c => ({ '&': '&amp;', '<': '&lt;', '>': '&gt;', '\"': '&quot;' }[c]));\n  const $ = (s, r = document) => r.querySelector(s), $$ = (s, r = document) => [...r.querySelectorAll(s)];\n  const SYM = `<svg class=\"sym\" viewBox=\"5 7 174 102\" aria-hidden=\"true\"><path d=\"M16 18C16 52 36 58 96 58C156 58 160 64 160 98\" stroke=\"#F04B37\" fill=\"none\" stroke-width=\"22\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M168 18C168 52 148 58 96 58C44 58 28 64 28 98\" stroke=\"#111317\" fill=\"none\" stroke-width=\"22\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>`;\n  const NS = 'http://www.w3.org/2000/svg';\n  /* plays while on screen, from the start each time it comes into view; holds its end state otherwise */\n  function onView(el, fn, th = .3) { if (!('IntersectionObserver' in window)) return fn(true); new IntersectionObserver(es => fn(es[0].isIntersecting), { threshold: th }).observe(el); }\n  function clock() { let ts = []; return { at(fn, s) { ts.push(setTimeout(fn, s * 1000)); }, clear() { ts.forEach(clearTimeout); ts = []; } }; }\n  const setBtn = (b, on) => { if (!b) return; b.querySelector('use').setAttribute('href', on ? '#i-pause' : '#i-play'); b.querySelector('span').textContent = on ? 'Pause' : 'Play'; b.setAttribute('aria-label', (on ? 'Pause' : 'Play') + ' the animation'); };\n  function scene(el, btn, start, stop, th = .3) {\n    let on = false, user = false;\n    const go = () => { if (on || RM) return; on = true; setBtn(btn, true); start(); };\n    const halt = () => { on = false; setBtn(btn, false); stop(); };\n    if (RM) { if (btn) btn.hidden = true; return { get on() { return false; } }; }\n    onView(el, v => { if (user) return; v ? go() : on && halt(); }, th);\n    btn && btn.addEventListener('click', () => { user = true; on ? halt() : go(); });\n    return { get on() { return on; } };\n  }\n\n  /* ================= 2A: the cost chart (Appendix A) and the receipt's details ================= */\n  {\n  const LINK = { li: 'https://business.linkedin.com/sell/sales-navigator/compare-plans', hr: 'https://www.heyreach.io/pricing', sl: 'https://www.smartlead.ai/pricing', clay: 'https://www.clay.com/pricing',\n    cl: 'https://www.cleanlist.ai/blog/2026-03-12-clay-pricing-changes-2026' };\n  const CATS = ['Email only', '+ Phone numbers', '+ A waterfall', '+ AI research', '+ Monthly re-run'];\n  /* bottom to top: key, label, second line, $ a month per category, fill, label color */\n  const LAYERS = [\n    ['ld', 'Lead database', null, [120, 120, 120, 120, 120], '#EFECE5', '#45473F'],\n    ['la', 'LinkedIn automation', null, [79, 79, 79, 79, 79], '#E4E0D7', '#45473F'],\n    ['ce', 'Cold email platform', null, [39, 39, 39, 39, 39], '#D8D3C8', '#45473F'],\n    ['wr', 'Workflow runs', '(Clay Actions)', [60, 60, 60, 60, 150], '#C9C3B6', '#2E302B'],\n    ['pl', 'Pay-per-lookup data', null, [125, 158, 255, 322, 622], '#5A554C', '#FFFFFF']\n  ];\n  const TOT = [423, 456, 553, 620, 1010];\n  console.assert(TOT.every((t, k) => LAYERS.reduce((s, L) => s + L[3][k], 0) === t), 'chart totals');\n  const NOTES = { 1: 'Phone numbers cost about 10 credits each', 2: 'Fallback providers mean more lookups and more Actions', 4: 'Re-running the list buys it again, and Actions move up a tier' };\n  const YMAX = 1100;\n  /* key: [name, what it is, typical tools, in this example, sources] */\n  const TIPS = {\n    ld: ['Lead database', 'Where you find prospects and build lists.', 'LinkedIn Sales Navigator, Apollo, ZoomInfo.', 'Sales Navigator Core, $119.99 a month.', [['LinkedIn\u2019s Sales Navigator pricing page', LINK.li]]],\n    la: ['LinkedIn automation', 'Sends your connection requests and messages on LinkedIn.', 'HeyReach, Expandi, Dripify.', 'HeyReach, $79 per sender a month.', [['HeyReach\u2019s pricing page', LINK.hr]]],\n    ce: ['Cold email platform', 'Sends and warms up your cold email.', 'Smartlead, Instantly.', 'Smartlead, $39 a month. Inboxes and domains not counted.', [['Smartlead\u2019s pricing page', LINK.sl]]],\n    wr: ['Workflow runs (Clay Actions)', 'Clay\u2019s platform meter. Every enrichment run, AI step, API call and CRM push uses an Action, even when a lookup finds nothing. Actions can\u2019t be topped up: run out and you move up a tier.', null, '$60 a month for 15,000, then $150 for 40,000.', [['Clay\u2019s pricing page', LINK.clay]]],\n    pl: ['Pay-per-lookup data', 'Every work email and phone number you look up costs credits: about 1 credit for an email, about 10 for a phone number, from $0.05 a credit. Run out mid-month and top-ups cost about 30% more, until a bigger monthly block is cheaper. Lookups that find nothing don\u2019t use credits, but you pay for every number found, right or wrong.', null, null, [['Clay\u2019s pricing page', LINK.clay], ['for the top-up premium, cleanlist.ai', LINK.cl]]],\n    yk: ['With Yoke', 'Data, research, signal watching and sending on LinkedIn and email, in one plan. Yoke contacts only people who qualify on the best information it can find. You pay for what gets sent.', null, null, []]\n  };\n  const tipBody = ([, what, tools, ex, src]) => `<p class=\"w\">${esc(what)}</p>${tools ? `<p><b>Typical tools:</b> ${esc(tools)}</p>` : ''}${ex ? `<p><b>In this example:</b> ${esc(ex)}</p>` : ''}${src.length ? `<p class=\"src\">${src.length > 1 ? 'Sources' : 'Source'}: ${src.map(([t, u]) => `<a href=\"${u}\" target=\"_blank\" rel=\"noopener\">${esc(t)}</a>`).join('; ')}</p>` : ''}`;\n  /* the receipt's \"Details and sources\" carries the same texts as the tooltips */\n  const det = $('#rdet'); if (det) det.innerHTML = Object.values(TIPS).map(t => `<div class=\"dt\"><b>${esc(t[0])}</b>${tipBody(t)}</div>`).join('');\n\n  const box = $('#cbox'), cv = $('#cv'), tipsEl = $('#ctips');\n  if (box) {\n  tipsEl.innerHTML = Object.entries(TIPS).map(([k, t]) => `<div class=\"tip\" id=\"tip-${k}\" role=\"tooltip\" hidden>${tipBody(t)}</div>`).join('');\n  const f = n => n.toFixed(1);\n  const dotSVG = (cx, cy, light) => { const c = light ? '#FFFFFF' : '#686A63'; return `<g class=\"idot\" aria-hidden=\"true\"><circle cx=\"${f(cx)}\" cy=\"${f(cy)}\" r=\"6.5\" fill=\"none\" stroke=\"${c}\" stroke-width=\"1.3\"/><circle cx=\"${f(cx)}\" cy=\"${f(cy - 2.6)}\" r=\".95\" fill=\"${c}\"/><line x1=\"${f(cx)}\" x2=\"${f(cx)}\" y1=\"${f(cy - .6)}\" y2=\"${f(cy + 3)}\" stroke=\"${c}\" stroke-width=\"1.4\" stroke-linecap=\"round\"/></g>`; };\n  const ctx = document.createElement('canvas').getContext('2d');\n  const wrap = (text, px, w) => { ctx.font = `550 ${px}px \"Instrument Sans\", Arial, sans-serif`; const out = []; let line = ''; for (const word of text.split(' ')) { const t = line ? line + ' ' + word : word; if (ctx.measureText(t).width > w && line) { out.push(line); line = word; } else line = t; } out.push(line); return out; };\n  /* same number of lines, as even as they can be */\n  const wrapEven = (text, px, w) => { const n = wrap(text, px, w).length; let lo = 40, hi = w; while (hi - lo > 2) { const m = (lo + hi) / 2; if (wrap(text, px, m).length > n) lo = m; else hi = m; } return wrap(text, px, hi); };\n  const cum = (i, k) => LAYERS.slice(0, i).reduce((s, L) => s + L[3][k], 0);\n  let G = null;\n  function render() {\n    const W = Math.round(box.clientWidth);\n    if (W < 600) return;\n    const RC = 236, X0 = 58, X1 = W - RC, TOP = 36, PH = 360, YB = TOP + PH, YS = YB + 50, H = YS + 26;\n    const xs = k => X0 + k * (X1 - X0) / 5, ys = v => YB - v / YMAX * PH, PW = (X1 - X0) / 5;\n    G = { W, X0, X1, xs };\n    const steps = vals => vals.flatMap((v, k) => [[xs(k), ys(v)], [xs(k + 1), ys(v)]]);\n    const pts = a => a.map(([x, y]) => `${f(x)},${f(y)}`).join(' ');\n    const lay = i => [0, 1, 2, 3, 4].map(k => cum(i, k));\n    const o = [];\n    o.push(`<defs><clipPath id=\"cclip\"><rect id=\"cclipR\" x=\"0\" y=\"0\" width=\"${W}\" height=\"${H}\"/></clipPath></defs>`);\n    o.push(`<line x1=\"${X0}\" x2=\"${X1}\" y1=\"${f(ys(1000))}\" y2=\"${f(ys(1000))}\" stroke=\"#E4E1D8\" stroke-width=\"1\"/><text class=\"tk\" x=\"${X0 - 10}\" y=\"${f(ys(1000) + 4.5)}\" text-anchor=\"end\">$1,000</text>`);\n    o.push('<g clip-path=\"url(#cclip)\">');\n    LAYERS.forEach((L, i) => o.push(`<polygon class=\"lay\" data-tip=\"${L[0]}\" points=\"${pts([...steps(lay(i + 1)), ...steps(lay(i)).reverse()])}\" fill=\"${L[4]}\" stroke=\"#FFFFFF\" stroke-width=\"1\"/>`));\n    o.push(`<polyline points=\"${pts(steps(TOT))}\" fill=\"none\" stroke=\"#111317\" stroke-width=\"2.6\" stroke-linejoin=\"round\" pointer-events=\"none\"/>`);\n    o.push(`<rect x=\"${X0}\" y=\"${YS - 3}\" width=\"${f(X1 - X0)}\" height=\"6\" rx=\"3\" fill=\"#F04B37\" pointer-events=\"none\"/><line class=\"hit\" data-tip=\"yk\" x1=\"${X0}\" x2=\"${X1}\" y1=\"${YS}\" y2=\"${YS}\" stroke=\"transparent\" stroke-width=\"18\"/>`);\n    /* notes, in white inside the dark layer of the step they explain */\n    for (const [k, text] of Object.entries(NOTES)) {\n      const lines = wrapEven(text, 11.5, PW - 22), x = xs(+k) + 11, y0 = ys(TOT[k]) + 19;\n      o.push(`<g class=\"note\" data-k=\"${k}\">${lines.map((t, n) => `<text x=\"${f(x)}\" y=\"${f(y0 + n * 14)}\">${esc(t)}</text>`).join('')}</g>`);\n    }\n    /* totals above each plateau */\n    TOT.forEach((t, k) => o.push(`<text class=\"tot\" data-k=\"${k}\" x=\"${f(xs(k) + PW / 2)}\" y=\"${f(ys(t) - 10)}\" text-anchor=\"middle\">$${t.toLocaleString('en-US')}</text>`));\n    o.push('</g>');\n    o.push(`<line x1=\"${X0}\" x2=\"${X1}\" y1=\"${YB}\" y2=\"${YB}\" stroke=\"#A9A59B\" stroke-width=\"1.4\"/>`);\n    CATS.forEach((c, k) => o.push(`<text class=\"xl\" x=\"${f(xs(k) + PW / 2)}\" y=\"${YB + 24}\" text-anchor=\"middle\">${esc(c)}</text>`));\n    /* labels: inside each layer at the right end; the thin one past the edge with a leader */\n    const RX = X1 - 28, lab = (k, inner) => `<g class=\"lab\" data-tip=\"${k}\" tabindex=\"0\" role=\"button\" aria-label=\"${esc(TIPS[k][0])}: more detail\">${inner}</g>`;\n    const inside = (i, cy) => { const L = LAYERS[i], two = !!L[2], dy = two ? -6 : 0;\n      return lab(L[0], `<text class=\"ly\" x=\"${RX}\" y=\"${f(cy + 4.5 + dy)}\" text-anchor=\"end\" fill=\"${L[5]}\">${esc(L[1])}</text>${two ? `<text class=\"ly2\" x=\"${RX}\" y=\"${f(cy + 4.5 + dy + 13)}\" text-anchor=\"end\" fill=\"${L[5]}\">${esc(L[2])}</text>` : ''}${dotSVG(X1 - 14, cy + dy, L[5] === '#FFFFFF')}`); };\n    o.push(inside(0, ys(60)));\n    o.push(inside(1, ys((120 + 199) / 2)));\n    const ceY = ys((199 + 238) / 2);\n    o.push(lab('ce', `<line x1=\"${X1 - 8}\" x2=\"${X1 + 10}\" y1=\"${f(ceY)}\" y2=\"${f(ceY)}\" stroke=\"#686A63\" stroke-width=\"1\"/><text class=\"ly\" x=\"${X1 + 15}\" y=\"${f(ceY + 4.3)}\" fill=\"#45473F\">Cold email platform</text>${dotSVG(X1 + 150, ceY, false)}`));\n    o.push(inside(3, ys((238 + 388) / 2)));\n    o.push(inside(4, ys(500)));\n    const tY = ys(1010);\n    o.push(`<g class=\"nmg\"><text class=\"nm\" x=\"${X1 + 16}\" y=\"${f(tY + 6)}\">Your Clay stack</text><text class=\"nm2\" x=\"${X1 + 16}\" y=\"${f(tY + 25)}\">Clay + 3 tools you run</text></g>`);\n    o.push(lab('yk', `<text class=\"yk2 b\" x=\"${X1 + 16}\" y=\"${f(YS - 4)}\">With Yoke: lookups included.</text><text class=\"yk2\" x=\"${X1 + 16}\" y=\"${f(YS + 13)}\">You pay for what gets sent.</text>${dotSVG(X1 + 212, YS - 8.5, false)}`));\n    cv.setAttribute('viewBox', `0 0 ${W} ${H}`); cv.setAttribute('width', W); cv.setAttribute('height', H);\n    cv.innerHTML = o.join('');\n    if (!drawn && !RM) { $('#cclipR').setAttribute('width', xs(1)); cv.querySelectorAll('.note,.tot,.lab,.nmg').forEach(e => { if (!(e.dataset.k === '0')) e.style.opacity = 0; }); }\n    bind();\n  }\n  /* tooltips: hover, tap or keyboard; each opens beside its label */\n  let open = null, pinned = false;\n  function show(key, anchor) {\n    hide();\n    const t = $('#tip-' + key); if (!t) return;\n    t.hidden = false; open = t;\n    cv.querySelectorAll('.lay').forEach(l => l.classList.toggle('on', l.dataset.tip === key));\n    const B = box.getBoundingClientRect(), a = (anchor || box.querySelector(`.lab[data-tip=\"${key}\"]`) || box).getBoundingClientRect();\n    const tw = t.offsetWidth, th = t.offsetHeight;\n    let left = a.left - B.left - tw - 14, top = a.top - B.top + a.height / 2 - th / 2;\n    if (left < 0) left = Math.min(a.right - B.left + 14, B.width - tw);\n    top = Math.max(-30, Math.min(top, box.offsetHeight - th + 30));\n    t.style.left = left + 'px'; t.style.top = top + 'px';\n  }\n  function hide() { if (!open) return; open.hidden = true; open = null; pinned = false; cv.querySelectorAll('.lay').forEach(l => l.classList.remove('on')); }\n  function bind() {\n    box.querySelectorAll('[data-tip]').forEach(el => {\n      const key = el.dataset.tip, anchor = () => el.classList.contains('lab') ? el : box.querySelector(`.lab[data-tip=\"${key}\"]`);\n      el.addEventListener('pointerenter', ev => { if (ev.pointerType === 'mouse' && !pinned) show(key, anchor()); });\n      el.addEventListener('pointerleave', ev => { if (ev.pointerType === 'mouse' && !pinned) setTimeout(() => { if (!pinned && !box.querySelector('.tip:hover')) hide(); }, 120); });\n      el.addEventListener('click', ev => { ev.stopPropagation(); if (open && open.id === 'tip-' + key && pinned) hide(); else { show(key, anchor()); pinned = true; } });\n      if (el.classList.contains('lab')) {\n        el.addEventListener('focus', () => show(key, anchor()));\n        el.addEventListener('blur', () => { if (!pinned) hide(); });\n        el.addEventListener('keydown', ev => { if (ev.key === 'Enter' || ev.key === ' ') { ev.preventDefault(); show(key, anchor()); pinned = true; } if (ev.key === 'Escape') hide(); });\n      }\n    });\n  }\n  tipsEl.addEventListener('pointerleave', ev => { if (ev.pointerType === 'mouse' && !pinned) hide(); });\n  document.addEventListener('click', ev => { if (!ev.target.closest('.tip')) hide(); });\n  document.addEventListener('keydown', ev => { if (ev.key === 'Escape') hide(); });\n  /* builds once, left to right in 1.5 s; the first step is there at rest */\n  let drawn = false;\n  function draw() {\n    if (drawn || RM || !G) return; drawn = true;\n    const r = $('#cclipR'), byK = cv.querySelectorAll('.note,.tot'), end = cv.querySelectorAll('.lab,.nmg');\n    const x0 = G.xs(1), t0 = performance.now(), D = 1500;\n    (function step(now) {\n      const k = Math.min(1, (now - t0) / D), e = 1 - Math.pow(1 - k, 2), px = x0 + (G.W - x0) * e;\n      r.setAttribute('width', px);\n      byK.forEach(n => { if (G.xs(+n.dataset.k) + 20 <= px) n.style.opacity = 1; });\n      if (k < 1) requestAnimationFrame(step); else { r.setAttribute('width', G.W); end.forEach(l => l.style.opacity = 1); }\n    })(t0);\n  }\n  const mq = matchMedia('(min-width:1130px)');\n  let watching = false;\n  const start = () => { render(); if (G && !watching) { watching = true; onView(box, v => { if (v) draw(); }, .35); } };\n  const fontsIn = document.fonts ? Promise.race([document.fonts.ready, new Promise(r => setTimeout(r, 1200))]) : Promise.resolve();\n  const more = $('#more');\n  more.addEventListener('toggle', () => { if (more.open && mq.matches) fontsIn.then(start); });\n  mq.addEventListener('change', () => { if (mq.matches && more.open) start(); });\n  let rw = box.clientWidth;\n  addEventListener('resize', () => { if (mq.matches && more.open && Math.abs(box.clientWidth - rw) > 4) { rw = box.clientWidth; hide(); render(); if (drawn) cv.querySelectorAll('.note,.tot,.lab,.nmg').forEach(e => e.style.opacity = 1); } });\n  }\n  }\n\n  /* ================= staged reveals: plays once on view; the first item is there at rest ================= */\n  function stage(root, groups, gap) {\n    if (!root || RM || !('IntersectionObserver' in window)) return;\n    const rest = groups.slice(1).map(g => [].concat(g));\n    rest.flat().forEach(e => e.classList.add('pend'));\n    const io = new IntersectionObserver(es => {\n      if (!es.some(e => e.isIntersecting)) return;\n      io.disconnect();\n      rest.forEach((g, i) => setTimeout(() => g.forEach(e => e.classList.remove('pend')), (i + 1) * gap * 1000));\n    }, { rootMargin: '0px 0px -22% 0px', threshold: 0 });\n    io.observe(root);\n  }\n  /* ================= toggles: closed by default ================= */\n  $$('[data-tgl]').forEach(b => b.addEventListener('click', () => {\n    const t = $('#' + b.getAttribute('aria-controls')), on = b.getAttribute('aria-expanded') !== 'true';\n    b.setAttribute('aria-expanded', String(on));\n    if (b.dataset.tgl === 'all') t.classList.toggle('all', on); else t.hidden = !on;\n  }));\n\n  /* ================= sticky \"Get started\" on phones: after the hero, never over the form ================= */\n  {\n  const bar = $('#sbar'), link = bar.querySelector('a');\n  let heroIn = true, formIn = false;\n  const upd = () => { const on = !heroIn && !formIn; bar.classList.toggle('on', on); bar.setAttribute('aria-hidden', String(!on)); link.tabIndex = on ? 0 : -1; };\n  if ('IntersectionObserver' in window) {\n    new IntersectionObserver(es => { heroIn = es[0].isIntersecting; upd(); }).observe($('#top'));\n    new IntersectionObserver(es => { formIn = es[0].isIntersecting; upd(); }).observe($('#fbox'));\n  }\n  }\n\n  /* ================= the form: one step, checked inline, confirmation in place ================= */\n  {\n  const gf = $('#gf'), role = $('#f-role'), otherW = $('#f-other-w'), other = $('#f-other'), email = $('#f-email');\n  const EMAIL = /^[^\\s@]+@[^\\s@.]+(\\.[^\\s@.]+)+$/;\n  let tried = false;\n  const mark = (input, err, bad) => { input.setAttribute('aria-invalid', String(bad)); $('#' + err).hidden = !bad; return !bad; };\n  function check() {\n    const a = mark(email, 'e-email', !EMAIL.test(email.value.trim()));\n    const b = mark(role, 'e-role', !role.value);\n    const c = role.value !== 'other' || mark(other, 'e-other', !other.value.trim());\n    return [a, b, c];\n  }\n  role.addEventListener('change', () => {\n    const o = role.value === 'other'; otherW.hidden = !o; other.required = o;\n    if (o) other.focus(); else { other.removeAttribute('aria-invalid'); $('#e-other').hidden = true; }\n    if (tried) check();\n  });\n  gf.addEventListener('input', () => { if (tried) check(); });\n  gf.addEventListener('submit', e => {\n    e.preventDefault(); tried = true;\n    const ok = check(), first = [email, role, other][ok.indexOf(false)];\n    if (first) return first.focus();\n    gf.hidden = true; const c = $('#conf'); c.hidden = false; c.focus({ preventScroll: true });\n  });\n  }\n\n  /* ===== showstopper, desktop: the approved prototype (v10), ported by port.py ===== */\n(() => {\n  const CAT = {\n    signal:{label:'Buying signal',short:'Signal',color:'var(--blue)',hex:'#4D7BFF'},\n    person:{label:'Personal',short:'',color:'var(--sky)',hex:'#8FCBFF'},\n    common:{label:'Common ground',short:'',color:'var(--sky)',hex:'#8FCBFF'},\n    offer:{label:'Your offer',short:'Offer',color:'var(--coral)',hex:'#F04B37'},\n    goal:{label:'Goal',short:'Goal',color:'var(--lime)',hex:'#CDF05B'}\n  };\n  const LEADS = [\n    { first:'Ravi', name:'Ravi Shah', role:'COO', co:'Calder Freight', av:'#8FCBFF', fit:'3PL \u00b7 200+ trucks \u00b7 Texas', tone:'plain, direct', tsteps:['upbeat','peer-to-peer','direct, useful'],\n      cats:[\n        {k:'signal', items:['Opened a Dallas hub','Hiring 2 dispatchers','New VP Sales'], pick:0},\n        {k:'person', items:['Post on on-time rates','Joined in 2021'], pick:0},\n        {k:'common', items:['You ran a 40-truck fleet','Both from Houston'], pick:0},\n        {k:'offer',  items:['Cut detention costs for 3PLs','Case study: regional 3PL'], pick:0}\n      ],\n      lines:['Ravi, congrats on the Dallas hub.','Your post on on-time rates rang true from my years running a 40-truck fleet.','We cut detention costs for 3PLs your size.','Worth 20 minutes?'],\n      reply:'Good timing, we\u2019re feeling it in Dallas. Tuesday?', outcome:'Interested \u00b7 Tuesday works', time:'9:14' },\n    { first:'Joan', name:'Joan Mercer', role:'VP Operations', co:'Northpine Foods', av:'#CDF05B', fit:'Food distributor \u00b7 400 staff', tone:'warm', tsteps:['timely','personal','warm, helpful'],\n      cats:[\n        {k:'signal', items:['Hiring 3 supply planners','New cold-storage site'], pick:0},\n        {k:'person', items:['Cold Chain Forum panelist','Ex-Sysco'], pick:0},\n        {k:'common', items:['You spoke on the same panel','Same alma mater'], pick:0},\n        {k:'offer',  items:['Route planning before new hires land'], pick:0}\n      ],\n      lines:['Joan, saw Northpine is hiring three supply planners.','We shared the Cold Chain Forum stage last spring.','I help food distributors plan routes before new hires land.','Open to a quick call?'],\n      reply:'I remember that panel! Thursday works.', outcome:'Meeting booked \u00b7 Thu', time:'10:31' },\n    { first:'Dana', name:'Dana Whitfield', role:'VP Operations', co:'Harbor Lane', av:'#F2F3F5', fit:'Distributor \u00b7 3 sites \u00b7 Southeast', tone:'casual', tsteps:['upbeat','shop talk','easygoing'],\n      cats:[\n        {k:'signal', items:['Visited your pricing page','Opened a Savannah site'], pick:1},\n        {k:'person', items:['Post on dock delays','Promoted in June'], pick:0},\n        {k:'common', items:['Your cold-chain years'], pick:0},\n        {k:'offer',  items:['Cut dock wait times','Savannah customers'], pick:0}\n      ],\n      lines:['Dana, congrats on the Savannah site.','Your post on dock delays hit home from my cold-chain years.','We cut dock wait times for distributors your size.','Worth a look?'],\n      reply:'Not my area, but Lisa Park runs routing. Try her.', outcome:'Referral \u00b7 Lisa Park added', time:'8:52' }\n  ];\n  const LINE_AFTER = {signal:0, common:1, offer:2};\n  const LINE_SRC = [['signal'],['person'],['offer'],['goal']];\n  const EXTRA = [['MH','Meridian Haulage'],['PP','Pacifica Produce']];\n  const RM = matchMedia('(prefers-reduced-motion: reduce)').matches;\n  const host = document.getElementById('ssd'), root = host.attachShadow({mode:'open'});\n  root.innerHTML = document.getElementById('ssd-tpl').innerHTML;\n  const $ = id => root.getElementById(id);\n  const stage=$('stage'), svg=$('wires'), queue=$('queue'), cats=$('cats'), lines=$('lines');\n  let cur=0, timers=[], paused=false;\n  const initials = n => n.split(' ').map(s=>s[0]).join('');\n  const label = (k,l) => CAT[k].label;\n  const short = (k,l) => (k==='person'||k==='common') ? 'Personal' : CAT[k].short;\n\n  let off=true; /* page port: also hold while scrolled out of view */\n  function gate(fn){return ()=>{ if(paused||off){ timers.push(setTimeout(gate(fn),150)); return;} fn(); };}\n  const T=(ms,fn)=>{timers.push(setTimeout(gate(fn),ms));};\n  function clear(){timers.forEach(clearTimeout);timers=[];}\n\n  queue.innerHTML = LEADS.map((l,i)=>`<button class=\"q\" type=\"button\" data-i=\"${i}\"><span class=\"row\"><span class=\"av\" style=\"background:${l.av}\">${initials(l.name)}</span><span class=\"t\"><span class=\"nm\"><b>${l.co}</b><span class=\"st\">Queued</span></span><span class=\"who\">${l.name}, ${l.role}</span></span></span><span class=\"xp\"><span class=\"xpi\"><span class=\"xpb\"><span class=\"v\">${l.fit}</span><span class=\"ok\">\u2713 Matches your ICP</span></span></span></span></button>`).join('')\n    + EXTRA.map(e=>`<div class=\"q\" aria-hidden=\"true\" style=\"cursor:default\"><span class=\"row\"><span class=\"av\" style=\"background:#5E6676;color:#F2F3F5\">${e[0]}</span><span class=\"t\"><span class=\"nm\"><b>${e[1]}</b><span class=\"st\">Queued</span></span></span></span></div>`).join('');\n  queue.addEventListener('click',e=>{const b=e.target.closest('button.q'); if(!b) return; paused=false; $('pause').textContent='Pause'; start(+b.dataset.i);});\n\n  // tone reel: scrolls through options and lands, a little closer each time\n  const POOL=['formal','friendly','bold','curious','concise','playful','upbeat','direct','warm','casual','neutral','candid'];\n  let toneNow='neutral';\n  function reelSet(word,final){const rl=$('rl');rl.style.transition='none';rl.style.transform='none';rl.innerHTML=`<span>${word}</span>`;toneNow=word;$('reel').classList.toggle('set',!!final);}\n  function spin(word,final){\n    if(RM){reelSet(word,final);return;}\n    const n=final?9:5, list=[toneNow];\n    while(list.length<n){const w=POOL[Math.floor(Math.random()*POOL.length)]; if(w!==list[list.length-1]&&w!==word) list.push(w);}\n    list.push(word);\n    const rl=$('rl'); $('reel').classList.remove('set');\n    rl.style.transition='none'; rl.style.transform='none'; rl.innerHTML=list.map(w=>`<span>${w}</span>`).join(''); rl.getBoundingClientRect();\n    const D=final?1300:750;\n    rl.style.transition=`transform ${D}ms cubic-bezier(.12,.75,.2,1)`; rl.style.transform=`translateY(${-(list.length-1)*22}px)`;\n    toneNow=word; setTimeout(()=>{ if(toneNow===word){ reelSet(word,final); } }, D+40);\n  }\n\n  // ---------- wires: each picked finding runs straight to the line it shaped ----------\n  let wires=[]; const NS='http://www.w3.org/2000/svg', GREY='#566072';\n  const SR=()=>stage.getBoundingClientRect();\n  function geom(w){\n    const s=SR(), a=w.a.getBoundingClientRect(), b=w.b.getBoundingClientRect(); let x1,y1,x2,y2;\n    if(w.kind==='feed'){const r=w.a.querySelector('.row').getBoundingClientRect(); x1=a.right-s.left; y1=r.top+r.height/2-s.top; x2=b.left-s.left; y2=b.top+b.height/2-s.top;}\n    else {x1=a.right-s.left; y1=a.top+a.height/2-s.top; x2=b.left-s.left-8; y2=b.top+12-s.top; if(w.dot){w.dot.setAttribute('cx',x2);w.dot.setAttribute('cy',y2);}}\n    const dx=(x2-x1)*.5; w.p.setAttribute('d',`M${x1} ${y1} C${x1+dx} ${y1}, ${x2-dx} ${y2}, ${x2} ${y2}`);\n  }\n  function addWire(kind,a,b,color){\n    const w={kind,a,b}; w.p=document.createElementNS(NS,'path'); w.p.setAttribute('class','w-'+kind); w.p.style.stroke=color; svg.appendChild(w.p);\n    if(kind==='out'){w.dot=document.createElementNS(NS,'circle');w.dot.setAttribute('r','2.6');w.dot.setAttribute('fill',color);w.dot.style.opacity=RM?1:0;w.dot.style.transition='opacity .2s';svg.appendChild(w.dot);}\n    wires.push(w); const s=SR(); svg.setAttribute('viewBox',`0 0 ${s.width} ${s.height}`); geom(w);\n    if(!RM && getComputedStyle(svg).display!=='none'){const L=w.p.getTotalLength(); w.p.style.strokeDasharray=L; w.p.style.strokeDashoffset=L; w.p.getBoundingClientRect();\n      w.p.style.transition='stroke-dashoffset .5s ease, stroke .35s, opacity .4s'; w.p.style.strokeDashoffset=0;\n      setTimeout(()=>{w.p.style.strokeDasharray='';w.p.style.strokeDashoffset='';w.p.style.transition='';if(w.dot)w.dot.style.opacity=1;},520);}\n    return w;\n  }\n  function dropWire(w){w.p.remove();w.dot&&w.dot.remove();wires=wires.filter(x=>x!==w);}\n  function clearWires(){wires=[];svg.innerHTML='';$('chips').innerHTML='';}\n  function render(){ if(getComputedStyle(svg).display==='none') return; const s=SR(); svg.setAttribute('viewBox',`0 0 ${s.width} ${s.height}`); wires.forEach(geom); }\n  addEventListener('resize',()=>render());\n  function follow(ms){const end=performance.now()+ms;const f=()=>{render();if(performance.now()<end)requestAnimationFrame(f);};requestAnimationFrame(f);}\n\n  // ---------- typing with a colored leading edge ----------\n  function typeInto(el,text,ms,color,done){\n    if(RM){el.textContent=text; done&&done(); return;}\n    let caret=el.querySelector('.caret');\n    if(!caret){caret=document.createElement('span');caret.className='caret';el.appendChild(caret);}\n    caret.style.background=color;\n    let i=0;const step=Math.max(16,ms/text.length);\n    const tick=()=>{ const s=document.createElement('span');s.className='ch';s.textContent=text[i];s.style.color=color;el.insertBefore(s,caret);\n      setTimeout(()=>{s.style.color='';},70); i++;\n      if(i<text.length) T(step,tick); else T(220,()=>{done&&done();}); };\n    T(step,tick);\n  }\n  function backspace(el,n,done){\n    const tick=()=>{const chs=el.querySelectorAll('.ch'); if(!chs.length||n<=0){done();return;} chs[chs.length-1].remove(); n--; T(28,tick);};\n    T(380,tick);\n  }\n\n  function setup(l){\n    clearWires(); stage.classList.remove('fadeout');\n    queue.querySelectorAll('button.q').forEach((q,i)=>{q.classList.toggle('on',i===cur);q.classList.toggle('done',i<cur);q.querySelector('.st').textContent=i===cur?'Working':i<cur?'Done':'Queued';});\n    queue.querySelectorAll('button.q').forEach(q=>q.classList.remove('open','pass'));\n    cats.innerHTML=l.cats.map((c,ci)=>`<div class=\"cat${c.k==='common'?' sub':''}\" data-c=\"${ci}\"><div class=\"cat-h\"><span class=\"dot\" style=\"background:${CAT[c.k].color}\"></span>${label(c.k,l)}<span class=\"scan\">scanning</span></div><div class=\"items\">${c.items.map((t,ii)=>`<span class=\"it\" data-i=\"${ii}\">${t}</span>`).join('')}</div></div>`).join('');\n    reelSet('neutral',false); lineEls=[];\n    lines.innerHTML=''; $('meta').className='meta'; $('time').textContent=l.time;\n    $('reply').className='reply'; $('reply').innerHTML=''; $('outcomeWrap').innerHTML='';\n    $('wst').textContent=''; $('wst').className='wst';\n  }\n\n  function pick(it,k){it.classList.add('pick');it.style.borderColor=CAT[k].hex;it.style.background=CAT[k].hex+'29';}\n  let lineEls=[];\n  function addLine(){const d=document.createElement('div');d.className='ln';const txt=document.createElement('span');d.appendChild(txt);lines.appendChild(d);return {d,txt};}\n  function lineAt(li){ while(lineEls.length<=li) lineEls.push(addLine()); return lineEls[li]; }\n\n  // the source chip sits raised over the start of the line for 1 s\n  function writeLine(l,li,t){\n    const text=l.lines[li], ms=Math.min(1000,text.length*17), k=LINE_SRC[li][0], color=li===3?'#F2F3F5':CAT[k].hex;\n    T(t,()=>{\n      const {d,txt}=lineAt(li); let tag=null;\n      if(li===0){ $('wst').textContent='Writing your message'; $('wst').className='wst on'; }\n      if(li<3){ const s=SR(), cr=$('comp').getBoundingClientRect(), lr=d.getBoundingClientRect();\n        tag=document.createElement('span');tag.className='tag-src';tag.textContent=short(k,l);tag.style.background=CAT[k].color;\n        tag.style.left=(cr.left-s.left-6)+'px'; tag.style.top=(lr.top+12-s.top)+'px'; $('chips').appendChild(tag);\n        requestAnimationFrame(()=>requestAnimationFrame(()=>tag.classList.add('on'))); }\n      const finish=()=>{const c=txt.querySelector('.caret'); c&&c.remove(); if(tag){T(300,()=>{tag.classList.remove('on');T(350,()=>tag.remove());});}};\n      typeInto(txt,text,ms,color,finish);\n    });\n    return ms+300;\n  }\n\n  function run(l){\n    let t=150; const q=queue.querySelector(`button.q[data-i=\"${cur}\"]`);\n    T(t,()=>{q.classList.add('open');}); t+=500;\n    T(t,()=>{q.classList.add('pass');}); t+=420;\n    const idx=k=>l.cats.findIndex(c=>c.k===k);\n    const GROUPS=[{cs:[idx('signal')],li:0},{cs:[idx('person'),idx('common')],li:1},{cs:[idx('offer')],li:2}];\n    GROUPS.forEach((g,gi)=>{\n      let decide=t;\n      g.cs.forEach((ci,k)=>{ // common ground starts while personal is still coming in\n        const c=l.cats[ci], el=()=>cats.querySelector(`.cat[data-c=\"${ci}\"]`); let tt=t+k*260;\n        T(tt,()=>{el().classList.add('show');el().querySelector('.scan').classList.add('busy');});\n        tt+=300; c.items.forEach((_,ii)=>T(tt+ii*120,()=>{const it=el().querySelector(`.it[data-i=\"${ii}\"]`); it.classList.add('show'); it._feed=addWire('feed',q,it,GREY);}));\n        decide=Math.max(decide,tt+c.items.length*120+160);\n      });\n      T(decide,()=>g.cs.forEach(ci=>{const c=l.cats[ci], el=cats.querySelector(`.cat[data-c=\"${ci}\"]`), sc=el.querySelector('.scan');\n        sc.classList.remove('busy'); sc.textContent=`${c.items.length} found \u00b7 1 used`;\n        el.querySelectorAll('.it').forEach((it,ii)=>{if(ii!==c.pick){it.classList.add('dim'); it._feed&&(it._feed.p.style.opacity=.3);}});}));\n      const wt=decide+180;\n      T(wt,()=>{g.cs.forEach(ci=>{const c=l.cats[ci], it=cats.querySelector(`.cat[data-c=\"${ci}\"] .it[data-i=\"${c.pick}\"]`);\n        pick(it,c.k); if(it._feed){it._feed.p.style.stroke=CAT[c.k].hex; it._feed.p.style.strokeWidth=1.6;} addWire('out',it,lineAt(g.li).d,CAT[c.k].hex);}); spin(l.tsteps[gi],false);});\n      T(wt+800,()=>{g.cs.forEach(ci=>cats.querySelectorAll(`.cat[data-c=\"${ci}\"] .it.dim`).forEach(it=>{it.classList.add('gone'); if(it._feed){it._feed.p.style.opacity=0; const w=it._feed; T(500,()=>dropWire(w));}})); follow(650);});\n      t=wt+560;\n      t+=writeLine(l,g.li,t);\n    });\n    T(t,()=>{spin(l.tone,true);}); t+=900;\n    t+=writeLine(l,3,t);\n    T(t,()=>{$('meta').classList.add('on'); $('wst').textContent='Message sent'; $('wst').className='wst on done';}); t+=450;\n    T(t,()=>{showReply(l,false);}); t+=2800;\n    T(t,()=>{q.classList.add('done');q.querySelector('.st').textContent='Done';});\n    t+=800;\n    T(t,()=>{stage.classList.add('fadeout');clearWires();}); t+=500;\n    T(t,()=>{start((cur+1)%LEADS.length);});\n  }\n\n  function showReply(l,instant){\n    const r=$('reply'), av=`<span class=\"av\" style=\"background:${l.av};width:30px;height:30px;font-size:11px\">${initials(l.name)}</span>`;\n    r.innerHTML=av+`<span class=\"typing\"><i></i><i></i><i></i></span>`; r.classList.add('on');\n    const fin=()=>{r.innerHTML=av+`<span class=\"bub\">${l.reply}</span>`;\n      $('outcomeWrap').innerHTML=`<span class=\"outcome\">\u2713 ${l.outcome}</span>`; const o=$('outcomeWrap').firstChild;\n      if(instant) o.classList.add('on'); else T(450,()=>o.classList.add('on'));};\n    if(instant) fin(); else T(900,fin);\n  }\n\n  function finalState(l){\n    queue.querySelector(`button.q[data-i=\"${cur}\"]`).classList.add('open','pass');\n    cats.querySelectorAll('.cat').forEach((c,ci)=>{c.classList.add('show');c.querySelector('.scan').textContent=`${l.cats[ci].items.length} found \u00b7 1 used`;c.querySelectorAll('.it').forEach((it,ii)=>{it.classList.add('show');if(ii===l.cats[ci].pick)pick(it,l.cats[ci].k);else it.classList.add('dim','gone');});});\n    reelSet(l.tone,true);\n    l.lines.forEach((t,li)=>{lineAt(li).txt.textContent=t;});\n    $('meta').classList.add('on'); showReply(l,true);\n    $('wst').textContent='Message sent'; $('wst').className='wst on done';\n    requestAnimationFrame(()=>{const q=queue.querySelector(`button.q[data-i=\"${cur}\"]`); l.cats.forEach((c,ci)=>{const it=cats.querySelector(`.cat[data-c=\"${ci}\"] .it.pick`); addWire('feed',q,it,CAT[c.k].hex).p.style.strokeWidth=1.6; addWire('out',it,lineAt(c.k==='signal'?0:c.k==='offer'?2:1).d,CAT[c.k].hex);});});\n  }\n\n  function fixHeight(){ /* page port */\n    const g=stage.querySelector('.grid'); if(!g.offsetWidth) return; const keep=cur; stage.classList.add('measuring'); g.style.minHeight=''; let max=0;\n    LEADS.forEach((l,i)=>{ cur=i; setup(l); const q=queue.querySelector(`button.q[data-i=\"${i}\"]`); q.classList.add('open','pass');\n      l.lines.forEach((t,li)=>{lineAt(li).txt.textContent=t;}); $('meta').classList.add('on');\n      $('reply').innerHTML=`<span class=\"av\" style=\"background:${l.av};width:30px;height:30px;font-size:11px\">${initials(l.name)}</span><span class=\"bub\">${l.reply}</span>`; $('reply').classList.add('on');\n      $('outcomeWrap').innerHTML=`<span class=\"outcome on\">\u2713 ${l.outcome}</span>`; max=Math.max(max,g.offsetHeight); });\n    g.style.minHeight=Math.ceil(max)+'px'; cur=keep; setup(LEADS[cur]); stage.classList.remove('measuring');\n  }\n  let fhW=-1; const refit=()=>{ const w=stage.offsetWidth; if(!w||w===fhW) return; fhW=w; const running=timers.length>0; fixHeight(); if(running) start(cur); else if(!RM) queue.querySelector(`button.q[data-i=\"${cur}\"]`).classList.add('open'); else start(cur); };\n  (document.fonts&&document.fonts.ready?document.fonts.ready:Promise.resolve()).then(refit); addEventListener('resize',()=>{ clearTimeout(refit.t); refit.t=setTimeout(refit,200); });\n  function start(i){ clear(); cur=i; const l=LEADS[i]; setup(l); if(RM){finalState(l);return;} run(l); }\n\n  $('pause').addEventListener('click',()=>{paused=!paused;$('pause').textContent=paused?'Play':'Pause';});\n  $('replay').addEventListener('click',()=>{paused=false;$('pause').textContent='Pause';start(cur);});\n\n  if('IntersectionObserver' in window && !RM){\n    let started=false; const io=new IntersectionObserver(es=>{const e=es[0], was=off; off=!e.isIntersecting; if(e.intersectionRatio>=.3&&!started){started=true;start(0);} else if(started&&was&&!off) start(cur); /* back in view: replay this account */},{threshold:[0,.3]}); io.observe(stage);\n    setup(LEADS[0]); queue.querySelector('button.q[data-i=\"0\"]').classList.add('open');\n  } else { off=false; start(0); }\n})();\n\n  /* ===== showstopper, phone: the approved prototype (v4), ported by port.py ===== */\n(() => {\n  const COL={signal:'#4D7BFF',person:'#8FCBFF',common:'#8FCBFF',offer:'#F04B37'};\n  const ORDER=['signal','person','common','offer'];\n  const LINE_OF={signal:0,person:1,common:1,offer:2};\n  // items: cloud order; k marks the four Yoke uses\n  const LEADS=[\n    {co:'Calder Freight',who:'Ravi Shah, COO',av:'#8FCBFF',ini:'RS',tone:'plain, direct',tsteps:['upbeat','peer-to-peer','direct, useful'],\n     items:[['Hiring 2 dispatchers'],['Opened a Dallas hub','signal'],['Joined in 2021'],['Post on on-time rates','person'],['Ran a 40-truck fleet','common'],['New VP Sales'],['Both from Houston'],['Cuts detention costs','offer'],['Case study: regional 3PL']],\n     lines:['Ravi, congrats on the Dallas hub.','Your post on on-time rates rang true from my years running a 40-truck fleet.','We cut detention costs for 3PLs your size.','Worth 20 minutes?'],\n     reply:'Good timing, we\u2019re feeling it in Dallas. Tuesday?',out:'\u2713 Interested \u00b7 Tuesday'},\n    {co:'Northpine Foods',who:'Joan Mercer, VP Operations',av:'#CDF05B',ini:'JM',tone:'warm',tsteps:['timely','personal','warm, helpful'],\n     items:[['Ex-Sysco'],['Hiring 3 planners','signal'],['New cold-storage site'],['Cold Chain Forum panel','person'],['Shared a panel with you','common'],['Same alma mater'],['Grocery case study'],['Route planning','offer'],['Posts about hiring']],\n     lines:['Joan, saw Northpine is hiring three supply planners.','We shared the Cold Chain Forum stage last spring.','I help food distributors plan routes before new hires land.','Open to a quick call?'],\n     reply:'I remember that panel! Thursday works.',out:'\u2713 Meeting booked \u00b7 Thu'},\n    {co:'Harbor Lane',who:'Dana Whitfield, VP Operations',av:'#F2F3F5',ini:'DW',tone:'casual',tsteps:['upbeat','shop talk','easygoing'],\n     items:[['Visited pricing page'],['Opened a Savannah site','signal'],['Promoted in June'],['Post on dock delays','person'],['Your cold-chain years','common'],['Savannah customers'],['3 sites, Southeast'],['Cuts dock wait times','offer'],['Hiring a planner']],\n     lines:['Dana, congrats on the Savannah site.','Your post on dock delays hit home from my cold-chain years.','We cut dock wait times for distributors your size.','Worth a look?'],\n     reply:'Not my area, but Lisa Park runs routing. Try her.',out:'\u2713 Referral \u00b7 Lisa Park'}\n  ];\n  const RM=matchMedia('(prefers-reduced-motion: reduce)').matches;\n  const host=document.getElementById('ssp'), root=host.attachShadow({mode:'open'});\n  root.innerHTML=document.getElementById('ssp-tpl').innerHTML;\n  const $=id=>root.getElementById(id);\n  const stage=$('stage'), body=$('body'), chipsEl=$('chips'), mc=$('mc'), mr=$('mr'), card=$('card'), linesEl=$('lines'), reply=$('reply');\n  let cur=0, timers=[], chips=[], cloudXY=[], rowXY=[], picks=[], lineEls=[];\n  let paused=false, off=true; /* page port: Pause, and hold while scrolled out of view */\n  function gate(fn){return ()=>{ if(paused||off){ timers.push(setTimeout(gate(fn),150)); return;} fn(); };}\n  const T=(ms,fn)=>timers.push(setTimeout(gate(fn),ms));\n  const clear=()=>{timers.forEach(clearTimeout);timers=[];};\n  const tr=(c,[x,y],s=1)=>{c.style.transform=`translate(${x}px,${y}px) scale(${s})`;};\n\n  // ---- tone reel ----\n  const POOL=['formal','friendly','bold','curious','concise','playful','upbeat','direct','warm','casual','candid'];\n  let toneNow='neutral';\n  function reelSet(w,final){const rl=$('rl');rl.style.transition='none';rl.style.transform='none';rl.innerHTML=`<span>${w}</span>`;toneNow=w;$('reel').classList.toggle('set',!!final);}\n  function spin(w,final){ if(RM){reelSet(w,final);return;}\n    const n=final?9:5, list=[toneNow]; while(list.length<n){const p=POOL[Math.floor(Math.random()*POOL.length)]; if(p!==list[list.length-1]&&p!==w) list.push(p);} list.push(w);\n    const rl=$('rl'); $('reel').classList.remove('set'); rl.style.transition='none'; rl.style.transform='none'; rl.innerHTML=list.map(x=>`<span>${x}</span>`).join(''); rl.getBoundingClientRect();\n    const D=final?1300:750; rl.style.transition=`transform ${D}ms cubic-bezier(.12,.75,.2,1)`; rl.style.transform=`translateY(${-(list.length-1)*20}px)`;\n    toneNow=w; T(D+40,()=>{ if(toneNow===w) reelSet(w,final); }); }\n\n  // ---- typing with a colored leading edge ----\n  function typeInto(el,text,ms,color,done){\n    if(RM){el.textContent=text;done&&done();return;}\n    const caret=document.createElement('span');caret.className='caret';caret.style.background=color;el.appendChild(caret);\n    let i=0; const step=Math.max(15,ms/text.length);\n    const tick=()=>{const s=document.createElement('span');s.className='ch2';s.textContent=text[i];s.style.color=color;el.insertBefore(s,caret);\n      setTimeout(()=>{s.style.color='';},70); i++; if(i<text.length) T(step,tick); else T(200,()=>{caret.remove();done&&done();});};\n    T(step,tick);\n  }\n\n  // ---- layout: measure the cloud and the sorted strip, place the card and reply ----\n  function layout(l){\n    chipsEl.innerHTML=''; mc.innerHTML=''; mr.innerHTML=''; linesEl.innerHTML=''; reply.innerHTML=''; lineEls=[];\n    // cloud rows of two, each pick on the same side as its slot in the strip, so the gather only moves up\n    const un=l.items.filter(x=>!x[1]), pk=k=>l.items.find(x=>x[1]===k);\n    const rows=[[pk('signal'),un[0]],[un[1],pk('person')],[pk('common'),un[2]],[un[3],pk('offer')],[un[4]]];\n    chips=[];\n    rows.forEach(r=>{const row=document.createElement('div');row.className='mrow';mc.appendChild(row);\n      r.forEach(([t,k])=>{const c=document.createElement('span');c.className='chip';c.textContent=t;c.dataset.k=k||'';chipsEl.appendChild(c);chips.push(c);\n        const m=document.createElement('span');m.className='mchip';m.textContent=t;row.appendChild(m);});});\n    picks=ORDER.map(k=>chips.findIndex(c=>c.dataset.k===k));\n    picks.forEach(i=>{const m=document.createElement('span');m.className='mchip';m.textContent=chips[i].textContent;mr.appendChild(m);});\n    // the strip sits at the top; the cloud sits centered in the space the card will use\n    mr.style.top='0px';\n    const rowH=mr.offsetHeight;\n    card.style.top=(rowH+9)+'px';\n    // measure the finished card to fix the stage height for all three accounts\n    const H=body.offsetHeight;\n    mc.style.top=Math.max(0,(H-mc.offsetHeight)/2-8)+'px';\n    cloudXY=[...mc.querySelectorAll('.mchip')].map(m=>[m.offsetLeft,m.offsetTop+mc.offsetTop]);\n    rowXY=[]; [...mr.children].forEach((m,j)=>{rowXY[picks[j]]=[m.offsetLeft,m.offsetTop];});\n    chips.forEach((c,i)=>{c.style.transition='none';tr(c,cloudXY[i],.7);c.style.opacity=0;c.getBoundingClientRect();c.style.transition='';});\n    l.lines.forEach(()=>{const d=document.createElement('div');d.className='ln';linesEl.appendChild(d);lineEls.push(d);});\n  }\n  // fixed stage height: tallest finished account, measured once\n  function fixHeight(){\n    let max=0;\n    LEADS.forEach(l=>{layout(l); l.lines.forEach((t,i)=>lineEls[i].textContent=t);\n      reply.innerHTML=`<span class=\"av\">${l.ini}</span><span class=\"bub\">${l.reply}</span>`;\n      const h=card.offsetTop+card.offsetHeight+8+reply.offsetHeight; max=Math.max(max,h);});\n    body.style.setProperty('--bh',Math.ceil(max)+'px');\n  }\n\n  function setup(l){\n    stage.classList.remove('fade'); stage.classList.add('reset');\n    $('av').textContent=l.ini; $('av').style.background=l.av; $('co').textContent=l.co; $('who').textContent=l.who;\n    $('st').textContent='Working'; $('st').className='st'; $('icp').className='icp';\n    $('lbln').textContent=''; $('lblt').textContent='Finding data'; card.className='card'; $('wst').className='wst'; $('out').className='out'; $('out').textContent=l.out;\n    reply.className='reply'; reelSet('neutral',false);\n    layout(l); stage.getBoundingClientRect(); stage.classList.remove('reset');\n  }\n\n  function lightLine(li,on){chips.forEach(c=>{if(!c.dataset.k) return; const mine=LINE_OF[c.dataset.k]===li; c.classList.toggle('act',on&&mine); c.classList.toggle('rest',on&&!mine);});}\n\n  function run(l){\n    let t=100;\n    if(!RM){$('av').style.transform='scale(.6)'; T(30,()=>$('av').style.transform='');}\n    T(t+250,()=>$('icp').classList.add('on'));\n    t+=250;\n    $('lbln').textContent='searching\u2026';\n    // 1. the cloud: every fact pops in where it sits\n    chips.forEach((c,i)=>T(t+i*105,()=>{c.style.opacity=1;tr(c,cloudXY[i],1);}));\n    t+=chips.length*105+350;\n    // 2. the four that matter light up; the rest dim\n    T(t,()=>{$('lbln').textContent=`9 found \u00b7 4 used`;\n      chips.forEach(c=>{const k=c.dataset.k; if(k){c.classList.add('pick');c.style.borderColor=COL[k];c.style.background=COL[k]+'2E';} else c.style.opacity=.22;});});\n    t+=650;\n    // 3. the rest leave; the four glide up into story order\n    T(t,()=>{chips.forEach((c,i)=>{ if(!c.dataset.k){c.style.opacity=0;tr(c,[cloudXY[i][0],cloudXY[i][1]+6],.92);} });});\n    t+=320;\n    T(t,()=>{$('lblt').textContent='Relevant data'; picks.forEach((i,j)=>T(j*150,()=>tr(chips[i],rowXY[i],1)));});\n    t+=880;\n    T(t,()=>card.classList.add('on'));\n    t+=380;\n    // 4. write, one line per source\n    T(t,()=>$('wst').classList.add('on'));\n    l.lines.forEach((text,li)=>{\n      const ms=Math.min(1050,text.length*17), color=li===3?'#F2F3F5':COL[ORDER[[0,1,3][li]]];\n      if(li===3){ T(t,()=>{lightLine(0,false);spin(l.tone,true);}); t+=900; }\n      else T(t,()=>{lightLine(li,true);spin(l.tsteps[li],false);});\n      T(t,()=>typeInto(lineEls[li],text,ms,color));\n      t+=ms+520;\n    });\n    // 5. the reply, and the outcome takes the status slot\n    T(t,()=>{const top=card.offsetTop+card.offsetHeight+8; reply.style.top=top+'px';\n      reply.innerHTML=`<span class=\"av\" style=\"background:${l.av}\">${l.ini}</span><span class=\"typing\"><i></i><i></i><i></i></span>`; reply.classList.add('on');});\n    t+=950;\n    T(t,()=>{reply.querySelector('.typing').outerHTML=`<span class=\"bub\">${l.reply}</span>`;});\n    t+=450;\n    T(t,()=>{$('wst').className='wst gone'; $('out').classList.add('on'); $('st').textContent='Done'; $('st').classList.add('done');});\n    t+=2600;\n    T(t,()=>stage.classList.add('leave')); t+=560;\n    T(t,()=>start((cur+1)%LEADS.length,true));\n  }\n\n  function finalState(l){\n    $('icp').classList.add('on'); $('lbln').textContent='9 found \u00b7 4 used'; $('lblt').textContent='Relevant data';\n    chips.forEach((c,i)=>{const k=c.dataset.k; if(k){c.classList.add('pick');c.style.borderColor=COL[k];c.style.background=COL[k]+'2E';c.style.opacity=1;tr(c,rowXY[i],1);} else c.style.opacity=0;});\n    card.classList.add('on'); l.lines.forEach((t,i)=>lineEls[i].textContent=t); reelSet(l.tone,true);\n    reply.style.top=(card.offsetTop+card.offsetHeight+8)+'px'; reply.innerHTML=`<span class=\"av\" style=\"background:${l.av}\">${l.ini}</span><span class=\"bub\">${l.reply}</span>`; reply.classList.add('on');\n    $('wst').className='wst gone'; $('out').classList.add('on'); $('st').textContent='Done'; $('st').classList.add('done');\n  }\n\n  function start(i,fromDeck){clear(); cur=i; const l=LEADS[i];\n    if(fromDeck&&!RM){ stage.classList.remove('leave'); stage.classList.add('enter'); setup(l); stage.getBoundingClientRect();\n      requestAnimationFrame(()=>{stage.classList.remove('enter');}); T(450,()=>run(l)); return; }\n    stage.classList.remove('leave','enter'); setup(l); if(RM){finalState(l);return;} run(l);}\n  const pz=$('pause'), setPz=()=>{pz.textContent=paused?'Play':'Pause';};\n  pz.addEventListener('click',()=>{paused=!paused;setPz();});\n  stage.addEventListener('click',()=>{paused=false;setPz();start(cur);});\n  stage.addEventListener('keydown',e=>{if(e.key==='Enter'||e.key===' '){e.preventDefault();paused=false;setPz();start(cur);}});\n\n  const go=()=>{fixHeight(); setup(LEADS[0]);\n    if('IntersectionObserver' in window && !RM){let s=false; new IntersectionObserver(es=>{const e=es[0], was=off; off=!e.isIntersecting; if(e.intersectionRatio>=.5&&!s){s=true;start(0);} else if(s&&was&&!off) start(cur); /* back in view: replay this account */},{threshold:[0,.5]}).observe(stage.parentElement); /* the deck: the stage itself slides out between accounts */} else {off=false; start(0);}};\n  (document.fonts&&document.fonts.ready?document.fonts.ready:Promise.resolve()).then(()=>{ lastW=stage.offsetWidth; go(); });\n  let rz=0, lastW=-1; /* page port: re-measure only when the stage's width changes (it is hidden on desktop) */\n  addEventListener('resize',()=>{clearTimeout(rz);rz=setTimeout(()=>{ const w=stage.offsetWidth; if(!w||w===lastW) return; lastW=w; fixHeight(); start(cur); },200);});\n})();\n\n  /* 2A, inside the disclosure on phones: the receipt adds up one line at a time */\n  stage($('#rc'), $$('#rc .rl, #rc .yk'), .3);\n})();\n"}