NEMAWASHI LAB

Strikeout

GSAP

A scroll-scrubbed two-phase animation on the phrase "Make no mistakes." In the first phase (0-40% of the timeline), five hand-drawn scribble paths are progressively revealed over "no" using DrawSVGPlugin, building up a multi-stroke strikethrough. In the second phase (35-100%), a thick mask-based pen stroke traces the handwriting path for the word "enough" (set in Caveat, stored as pre-exported SVG path data), revealing the filled letterforms underneath as if being written in real time. GSAP Observer captures wheel/touch/pointer delta and lerps it into a 0-1 progress value (target += deltaY/300, smoothed at 8% per frame), so the reveal feels physically dragged rather than scroll-snapped.

Scroll to reveal
Make
no
mistakes.
Strikeout

Source

caveat-paths.ts1 lines
export const CAVEAT_PATHS = {"enough":{"viewBox":"1 -36 116 49","d":"M13.25-1.68Q12.24-0.82 10.92-0.67Q9.60-0.53 8.35-1.08Q7.10-1.63 6.29-2.78Q5.47-3.84 5.23-5.21Q4.99-6.58 5.18-8.78Q5.33-10.66 6.38-12.55Q7.44-14.45 8.95-15.94Q10.46-17.42 11.95-18Q12.67-18.48 13.18-18.46Q13.68-18.43 14.74-18.34Q15.84-18.19 16.39-17.90Q16.94-17.62 17.28-17.14Q18-16.42 18.24-15.72Q18.48-15.02 18.48-14.35Q18.29-13.30 17.06-11.78Q15.84-10.27 13.87-9.31Q12.82-8.98 11.57-9.02Q10.32-9.07 9.50-9.65Q8.59-10.03 8.30-9.53Q8.02-9.02 7.78-7.10Q7.58-5.28 8.06-4.44Q8.54-3.60 9.36-3.46Q10.32-3.26 10.87-3.19Q11.42-3.12 12.24-3.60Q13.01-4.08 13.20-4.15Q13.39-4.22 13.51-4.34Q13.63-4.46 14.11-4.94Q14.45-5.28 14.64-5.45Q14.83-5.62 15.07-5.62Q15.31-5.62 15.50-5.40Q15.70-5.18 15.89-5.09Q16.37-5.09 16.10-4.51Q15.84-3.94 15.07-3.14Q14.30-2.35 13.25-1.68M13.20-11.86Q13.73-12.10 14.30-12.55Q14.88-13.01 15.29-13.56Q15.70-14.11 15.70-14.50Q15.70-15.17 15.07-15.62Q14.45-16.08 13.20-15.74Q12.67-15.60 12-15.05Q11.33-14.50 10.73-13.82Q10.13-13.15 9.77-12.62Q9.41-12.10 9.50-12Q9.65-11.76 10.32-11.64Q10.99-11.52 11.83-11.57Q12.67-11.62 13.20-11.86M37.39-2.21Q36.43-2.21 35.81-2.62Q35.18-3.02 34.75-3.98Q34.56-4.66 34.44-5.50Q34.32-6.34 34.32-7.08Q34.32-7.82 34.46-8.06Q34.66-8.26 34.63-8.76Q34.61-9.26 34.61-9.84Q34.56-10.80 34.15-10.92Q33.74-11.04 32.98-10.61Q32.11-10.08 30.72-9.19Q29.33-8.30 27.82-7.25Q26.30-6.19 24.96-5.04Q23.90-3.89 23.69-3.29Q23.47-2.69 23.09-2.69Q22.70-2.50 22.44-2.66Q22.18-2.83 21.70-3.22Q21.36-3.60 21.02-3.96Q20.69-4.32 20.59-4.51Q20.59-4.75 20.74-5.52Q20.88-6.29 21.10-7.06Q21.31-7.82 21.41-8.06Q21.65-8.06 21.82-8.54Q21.98-9.02 22.37-9.60Q22.46-10.18 22.87-11.16Q23.28-12.14 23.62-12.91Q24.29-14.06 24.55-14.83Q24.82-15.60 24.91-16.75Q24.86-16.94 25.01-17.11Q25.15-17.28 25.34-17.28Q25.73-17.66 26.26-17.50Q26.78-17.33 27.22-16.75Q28.08-15.60 27.91-14.38Q27.74-13.15 26.35-10.90Q26.02-10.13 25.85-9.72Q25.68-9.31 25.68-9.07Q25.68-9.07 26.18-9.41Q26.69-9.74 27.34-10.20Q27.98-10.66 28.37-10.90Q28.61-11.14 29.47-11.76Q30.34-12.38 31.32-12.98Q32.30-13.58 32.78-13.68Q33.17-13.87 33.60-14.04Q34.03-14.21 34.22-14.21Q34.61-14.21 35.21-13.80Q35.81-13.39 36.34-12.84Q36.86-12.29 36.96-11.90Q36.96-11.71 36.98-11.52Q37.01-11.33 37.06-11.14Q37.25-10.51 37.27-9.46Q37.30-8.40 37.20-7.54Q37.10-6.67 36.86-6.53Q36.86-6.53 36.89-6.41Q36.91-6.29 37.10-6.29Q37.10-6.10 37.10-6.07Q37.10-6.05 37.10-6.05Q36.86-6.05 36.91-5.64Q36.96-5.23 37.22-4.75Q37.49-4.27 37.78-3.98Q38.35-3.41 38.26-2.90Q38.16-2.40 37.39-2.21M45.31-0.72Q44.69-0.72 44.33-0.96Q43.97-1.20 43.44-1.63Q42.53-2.59 42.14-3.48Q41.76-4.37 41.90-5.18Q42.05-5.57 42.02-5.93Q42-6.29 42-6.29Q41.76-6.53 41.86-6.60Q41.95-6.67 42.05-6.86Q42.34-6.86 42.24-7.39Q42.14-7.78 42.62-9.07Q43.10-10.37 43.82-11.52Q44.11-12 44.69-12.79Q45.26-13.58 45.96-14.38Q46.66-15.17 47.23-15.65Q48.43-16.66 49.34-17.14Q50.26-17.62 51.31-17.86Q52.37-18.10 52.78-18.10Q53.18-18.10 53.90-17.33Q55.01-16.85 55.51-16.18Q56.02-15.50 56.16-14.21Q56.30-12.77 55.94-10.92Q55.58-9.07 53.66-6.34Q52.46-4.61 51.46-3.77Q50.45-2.93 49.06-2.11Q48.05-1.44 47.23-1.13Q46.42-0.82 45.31-0.72M49.92-5.81Q51.07-7.10 51.77-8.26Q52.46-9.41 53.09-11.18Q53.28-11.71 53.33-12.50Q53.38-13.30 53.30-13.99Q53.23-14.69 52.94-14.78Q52.37-15.12 51.55-15Q50.74-14.88 49.78-14.06Q48.29-12.82 47.18-10.97Q46.08-9.12 45.02-6.77Q44.30-5.04 44.71-4.01Q45.12-2.98 46.49-3.29Q47.86-3.60 49.92-5.81M69.94-0.10Q69.46-0.58 68.98-1.42Q68.50-2.26 68.21-3.36Q68.11-3.74 68.14-4.42Q68.16-5.09 68.11-5.38Q67.97-5.04 67.66-4.68Q67.34-4.32 67.06-4.08Q66.86-3.89 66.19-3.34Q65.52-2.78 64.85-2.45Q63.26-1.44 62.23-1.34Q61.20-1.25 60.29-2.40Q59.52-3.02 59.21-3.79Q58.90-4.56 59.18-5.90Q59.28-7.58 59.66-9.19Q60.05-10.80 61.25-13.49Q62.26-15.46 62.78-16.39Q63.31-17.33 63.46-17.52Q64.18-17.76 64.66-17.50Q65.14-17.23 65.23-16.56Q65.52-16.08 65.16-14.93Q64.80-13.78 63.94-12.10Q63.26-10.46 62.71-8.83Q62.16-7.20 62.06-6.05Q61.97-4.90 62.64-4.66Q63.07-4.42 64.15-4.80Q65.23-5.18 66.60-6.72Q67.97-8.26 69.26-11.38Q69.65-12.34 69.84-13.08Q70.03-13.82 70.08-14.74Q69.98-15.31 70.15-15.77Q70.32-16.22 70.90-16.56Q71.09-16.80 71.42-17.02Q71.76-17.23 71.86-16.99L72.62-17.04Q72.82-17.09 72.89-16.82Q72.96-16.56 73.20-16.37Q73.73-15.94 73.49-14.50Q73.25-13.06 72.14-10.46Q71.23-8.50 70.92-7.49Q70.61-6.48 70.56-5.52Q70.56-4.66 70.90-3.89Q71.23-3.12 71.95-2.50Q72.48-2.16 72.55-1.73Q72.62-1.30 72.58-0.72Q72.48-0.29 72.02-0.02Q71.57 0.24 70.99 0.24Q70.42 0.24 69.94-0.10M81.26 9.17Q79.92 9.70 78.46 9Q76.99 8.30 75.94 6.82Q75.74 6.53 75.48 5.93Q75.22 5.33 75 4.70Q74.78 4.08 74.74 3.60Q74.69 3.12 74.83 3.02Q74.98 2.88 75.31 2.93Q75.65 2.98 75.96 3.17Q76.27 3.36 76.37 3.65Q76.51 3.98 76.82 4.51Q77.14 5.04 77.52 5.47Q77.90 5.90 78.10 5.95Q79.01 6.38 79.44 6.34Q79.87 6.29 80.21 6.05Q81.02 5.42 81.55 4.42Q82.08 3.41 82.75 1.30Q83.28-0.48 83.83-2.47Q84.38-4.46 84.82-5.57Q84.96-6.14 85.18-6.55Q85.39-6.96 85.58-7.15L85.87-7.15Q84.82-6.48 84-5.62Q83.18-4.75 81.94-4.22Q81.65-3.89 80.52-3.82Q79.39-3.74 78.34-4.08Q77.66-4.46 77.35-4.66Q77.04-4.85 76.87-5.18Q76.70-5.52 76.42-6.24Q76.08-6.96 76.32-8.59Q76.56-10.22 77.18-11.86Q77.76-13.06 78.86-14.45Q79.97-15.84 81.22-16.97Q82.46-18.10 83.47-18.38Q83.86-18.58 84.31-18.65Q84.77-18.72 85.63-18.48Q86.45-18.38 86.88-18.12Q87.31-17.86 88.27-17.04Q88.90-16.42 89.30-15.79Q89.71-15.17 89.95-14.50Q90.29-13.78 90.22-13.18Q90.14-12.58 89.66-11.95Q89.23-11.33 88.75-10.70Q88.27-10.08 88.03-8.98Q87.79-7.54 87.26-5.74Q86.74-3.94 86.35-2.40L85.58 0.58Q84.38 4.66 83.30 6.65Q82.22 8.64 81.26 9.17M79.54-6.19Q80.50-6.24 81.36-6.58Q82.22-6.91 83.04-7.70Q83.86-8.50 84.67-9.74Q85.49-10.90 85.82-12.17Q86.16-13.44 86.06-14.64Q86.02-15.41 85.82-15.65Q85.63-15.89 85.01-15.79Q84.10-15.65 82.99-14.81Q81.89-13.97 80.93-12.72Q80.21-11.76 79.73-10.42Q79.25-8.98 79.15-7.68Q79.06-6.38 79.54-6.19M94.99-2.59Q94.66-2.54 94.30-2.62Q93.94-2.69 93.60-2.93Q93.22-3.31 93.07-3.53Q92.93-3.74 93-4.22Q93.07-4.70 93.31-5.71Q93.55-6.48 93.89-7.85Q94.22-9.22 94.61-10.56Q94.75-11.33 95.02-12.14Q95.28-12.96 95.57-13.66Q95.86-14.35 96-14.74Q96.38-16.08 96.74-17.09Q97.10-18.10 97.63-19.42Q98.16-20.74 98.93-22.94Q99.98-25.82 100.54-27.34Q101.09-28.85 101.35-29.54Q101.62-30.24 101.71-30.62Q101.71-31.01 101.93-31.20Q102.14-31.39 102.48-31.39Q103.15-31.39 103.56-30.74Q103.97-30.10 104.06-29.21Q104.16-28.32 103.78-27.55Q103.01-25.82 102.14-23.45Q101.28-21.07 100.46-18.79Q99.65-16.51 98.93-14.93Q98.93-14.74 98.78-14.26Q98.64-13.78 98.45-13.39Q98.26-13.01 98.09-12.67Q97.92-12.34 97.92-12.34Q97.92-12.14 97.78-11.62Q97.63-11.09 97.39-10.32Q97.20-9.74 96.94-8.83Q96.67-7.92 96.58-7.30Q96.82-7.73 97.58-8.59Q98.35-9.46 99.02-10.08Q99.79-10.75 100.75-11.57Q101.71-12.38 102.29-12.77Q102.86-13.15 103.32-13.46Q103.78-13.78 103.78-13.78Q103.78-13.97 103.94-13.99Q104.11-14.02 104.30-14.02Q104.50-14.02 104.52-14.06Q104.54-14.11 104.54-14.30Q104.54-14.54 105.10-14.74Q105.65-14.93 106.39-15.05Q107.14-15.17 107.62-15.17Q108.19-15.17 108.53-14.93Q108.86-14.69 109.39-13.87Q109.97-13.10 110.14-12.02Q110.30-10.94 109.92-9.79Q109.92-9.41 109.80-8.71Q109.68-8.02 109.68-7.25L109.39-5.71L110.16-5.71Q110.54-5.71 110.88-5.59Q111.22-5.47 111.22-5.47Q111.41-5.28 111.60-5.11Q111.79-4.94 111.98-4.94Q112.56-4.94 112.42-4.49Q112.27-4.03 111.70-3.65Q110.54-2.88 109.61-2.88Q108.67-2.88 107.90-3.65Q107.14-4.46 106.94-5.47Q106.75-6.48 107.14-8.02Q107.33-10.13 107.35-11.11Q107.38-12.10 106.85-12.10Q106.37-12.10 105.17-11.45Q103.97-10.80 102.48-9.70Q100.99-8.59 99.55-7.25Q98.11-5.90 97.15-4.46Q96.58-3.74 96.05-3.19Q95.52-2.64 94.99-2.59"},"topassfor":{"viewBox":"1 -36 183 51","d":"M8.59-0.34Q8.06-0.43 7.51-0.89Q6.96-1.34 6.55-1.94Q6.14-2.54 6-3.02Q6-3.12 5.88-3.26Q5.76-3.41 5.76-3.41Q5.57-3.55 5.54-4.68Q5.52-5.81 5.66-7.20Q5.81-8.59 6-9.41Q6.24-10.18 6.72-11.50Q7.20-12.82 7.54-13.87L8.83-16.66L6.91-17.18Q6.58-17.28 6.36-17.57Q6.14-17.86 6.14-18.05Q6.14-18.43 6.58-18.98Q7.01-19.54 7.20-19.54Q7.44-19.49 8.09-19.49Q8.74-19.49 9.36-19.54Q9.98-19.58 10.13-19.63Q10.32-19.73 10.51-19.90Q10.70-20.06 10.80-20.40Q11.04-20.93 11.23-21.38Q11.42-21.84 11.76-22.42Q12.10-23.04 12.31-23.47Q12.53-23.90 13.01-24.67Q13.25-25.01 13.54-25.49Q13.82-25.97 14.26-26.30Q14.69-26.69 15.14-26.66Q15.60-26.64 16.32-26.02Q16.70-25.54 16.75-25.30Q16.80-25.06 16.37-24.38Q15.98-23.57 15.48-22.75Q14.98-21.94 14.54-21.12Q13.78-20.06 14.26-19.92Q14.74-19.78 16.94-20.11Q18.34-20.35 18.96-19.99Q19.58-19.63 19.68-18.82Q19.82-17.66 19.44-17.42Q19.06-17.18 17.23-17.18Q16.08-16.99 15.26-16.97Q14.45-16.94 14.06-16.94Q13.44-16.90 13.25-16.90Q13.06-16.90 12.67-16.80Q12.29-16.70 12.12-16.49Q11.95-16.27 11.76-15.89Q11.57-15.70 11.18-14.88Q10.80-14.06 10.22-13.10Q9.55-11.09 9.07-9.10Q8.59-7.10 8.30-5.23Q8.11-4.03 8.35-3.58Q8.59-3.12 9.60-3.02Q10.13-2.98 11.30-3.05Q12.48-3.12 13.15-3.31Q13.68-3.55 14.26-3.82Q14.83-4.08 15.31-4.37Q15.74-4.61 16.18-4.87Q16.61-5.14 16.61-5.14Q16.85-5.52 17.14-5.38Q17.42-5.23 17.62-4.66Q17.62-4.08 17.38-3.46Q17.14-2.83 15.60-1.97Q13.44-0.62 11.64-0.36Q9.84-0.10 8.59-0.34M24-0.72Q23.38-0.72 23.02-0.96Q22.66-1.20 22.13-1.63Q21.22-2.59 20.83-3.48Q20.45-4.37 20.59-5.18Q20.74-5.57 20.71-5.93Q20.69-6.29 20.69-6.29Q20.45-6.53 20.54-6.60Q20.64-6.67 20.74-6.86Q21.02-6.86 20.93-7.39Q20.83-7.78 21.31-9.07Q21.79-10.37 22.51-11.52Q22.80-12 23.38-12.79Q23.95-13.58 24.65-14.38Q25.34-15.17 25.92-15.65Q27.12-16.66 28.03-17.14Q28.94-17.62 30-17.86Q31.06-18.10 31.46-18.10Q31.87-18.10 32.59-17.33Q33.70-16.85 34.20-16.18Q34.70-15.50 34.85-14.21Q34.99-12.77 34.63-10.92Q34.27-9.07 32.35-6.34Q31.15-4.61 30.14-3.77Q29.14-2.93 27.74-2.11Q26.74-1.44 25.92-1.13Q25.10-0.82 24-0.72M28.61-5.81Q29.76-7.10 30.46-8.26Q31.15-9.41 31.78-11.18Q31.97-11.71 32.02-12.50Q32.06-13.30 31.99-13.99Q31.92-14.69 31.63-14.78Q31.06-15.12 30.24-15Q29.42-14.88 28.46-14.06Q26.98-12.82 25.87-10.97Q24.77-9.12 23.71-6.77Q22.99-5.04 23.40-4.01Q23.81-2.98 25.18-3.29Q26.54-3.60 28.61-5.81M47.38 10.75Q47.18 10.75 46.90 10.78Q46.61 10.80 46.37 10.37Q46.18 10.13 46.15 9.65Q46.13 9.17 46.37 7.92Q46.61 7.10 46.75 6.31Q46.90 5.52 46.90 5.14Q46.90 4.94 47.02 4.39Q47.14 3.84 47.14 3.60Q47.38 3.22 47.52 2.54Q47.66 1.87 47.66 1.34Q47.66 0.77 48.24 0.29Q48.24-0.10 48.41-0.67Q48.58-1.25 48.58-1.44Q48.72-2.11 49.22-3.82Q49.73-5.52 50.47-7.68Q51.22-9.84 51.94-11.90Q52.66-13.97 53.23-15.41Q53.81-16.75 54.02-17.74Q54.24-18.72 54.24-19.20Q54.24-19.39 54.34-19.51Q54.43-19.63 54.77-20.02Q55.25-20.50 55.61-20.30Q55.97-20.11 56.50-19.73Q56.88-19.10 57.05-18.67Q57.22-18.24 57.02-17.18Q57.02-16.46 56.78-15.94Q56.54-15.41 56.35-15.14Q56.16-14.88 56.26-14.93Q58.22-15.84 59.74-15.91Q61.25-15.98 62.28-15.38Q63.31-14.78 63.84-13.73Q64.37-12.67 64.37-11.28Q64.37-10.70 64.13-9.91Q63.89-9.12 63.53-8.47Q63.17-7.82 62.88-7.54Q62.69-7.54 62.50-7.22Q62.30-6.91 62.11-6.53Q61.73-6.05 60.89-5.45Q60.05-4.85 59.23-4.49Q58.42-4.13 58.03-4.27Q58.03-4.27 57.91-4.25Q57.79-4.22 57.79-3.98Q57.79-3.89 57.02-3.58Q56.26-3.26 55.25-3Q54.24-2.74 53.47-2.74Q52.46-2.74 52.03-3.12Q51.94-3.02 51.82-2.83Q51.70-2.64 51.70-2.50Q51.70-2.21 51.48-1.42Q51.26-0.62 50.98 0.10Q50.69 0.82 50.45 0.82Q50.45 0.82 50.35 0.96Q50.26 1.10 50.45 1.34Q50.45 1.34 50.42 1.90Q50.40 2.45 50.16 2.83Q50.16 3.22 50.02 3.98Q49.87 4.75 49.68 5.14Q49.68 5.71 49.51 6.26Q49.34 6.82 49.15 6.82Q48.96 6.86 48.91 7.42Q48.86 7.97 48.86 8.21Q48.82 9.41 48.38 10.08Q47.95 10.75 47.38 10.75M53.18-5.28Q53.57-5.28 54.77-5.62Q55.97-5.95 57.24-6.46Q58.51-6.96 59.14-7.49Q60.38-8.59 61.08-10.01Q61.78-11.42 60.96-12.72Q60.58-13.39 59.57-13.27Q58.56-13.15 57.36-12.48Q56.16-11.81 55.10-10.80Q54.53-10.18 54.05-9.26Q53.57-8.35 53.26-7.44Q52.94-6.53 52.90-5.90Q52.85-5.28 53.18-5.28M67.73-1.73Q67.54-2.11 67.25-2.33Q66.96-2.54 66.96-2.74Q66.96-2.93 66.94-3.14Q66.91-3.36 66.72-3.55Q66.48-3.84 66.77-4.87Q67.06-5.90 67.73-7.42Q68.40-8.93 69.31-10.61Q69.70-10.99 70.08-11.62Q70.46-12.24 70.66-12.43Q70.66-12.62 70.80-12.79Q70.94-12.96 71.14-12.96L71.14-13.25Q71.14-13.49 71.59-14.06Q72.05-14.64 72.72-15.34Q73.39-16.03 74.11-16.68Q74.83-17.33 75.31-17.62Q76.32-18.29 77.40-18.43Q78.48-18.58 79.25-17.95Q79.39-17.81 79.73-17.47Q80.06-17.14 80.52-16.73Q80.98-16.32 81.46-15.89L83.23-14.30L82.37-11.90Q81.74-9.98 82.06-8.54Q82.37-7.10 82.99-6.05Q83.23-5.52 83.98-5.04Q84.72-4.56 85.39-4.46Q85.78-4.42 86.11-4.18Q86.45-3.94 86.45-3.41Q86.45-2.93 86.26-2.64Q86.06-2.35 85.58-2.26Q84-2.06 82.63-3.02Q81.26-3.98 80.11-6.19Q79.92-6.48 79.61-7.27Q79.30-8.06 79.25-8.30Q79.06-8.06 78.53-7.42Q78-6.77 77.71-6.48Q74.30-3.02 71.83-1.85Q69.36-0.67 67.73-1.73M69.46-4.42Q69.46-4.08 70.49-4.44Q71.52-4.80 72.72-5.76Q74.35-7.15 76.01-8.83Q77.66-10.51 78.67-11.95L79.73-13.68Q79.25-14.78 78.70-15.19Q78.14-15.60 77.76-15.60Q77.14-15.60 75.91-14.45Q74.69-13.30 73.30-11.38Q71.90-9.46 70.66-7.15Q70.18-6.19 69.82-5.30Q69.46-4.42 69.46-4.42M91.30 0.19Q90.38-0.19 89.57-0.84Q88.75-1.49 88.51-1.92Q88.51-2.35 88.66-2.52Q88.80-2.69 89.50-2.66Q90.19-2.64 91.78-2.45Q92.35-2.45 93.22-2.54Q94.08-2.64 94.82-2.83Q95.57-3.02 95.66-3.31Q95.90-3.31 95.76-3.48Q95.62-3.65 95.42-3.84Q95.23-3.84 94.99-4.01Q94.75-4.18 94.56-4.18Q94.56-4.42 94.10-4.73Q93.65-5.04 93.17-5.23Q92.11-6.10 91.34-6.79Q90.58-7.49 90.77-7.73Q90.77-7.92 90.77-7.94Q90.77-7.97 90.77-7.97Q90.43-7.97 90.02-8.93Q89.62-9.89 89.62-10.66Q89.62-11.23 89.95-12.12Q90.29-13.01 90.86-13.97Q91.44-14.93 92.06-15.55Q92.93-16.37 94.22-17.30Q95.52-18.24 96.79-18.98Q98.06-19.73 98.93-19.97Q99.79-20.30 100.54-20.30Q101.28-20.30 101.86-19.97Q102.34-19.73 102.74-19.27Q103.15-18.82 103.46-18.36Q103.78-17.90 103.87-17.57Q103.87-16.99 103.78-16.30Q103.68-15.60 103.51-15.07Q103.34-14.54 103.01-14.54Q103.01-14.54 102.89-14.52Q102.77-14.50 102.77-14.26Q102.77-13.78 102.05-13.15Q101.14-12.53 100.46-12.41Q99.79-12.29 99.65-12.91Q99.50-13.10 99.46-13.25Q99.41-13.39 99.22-13.39Q99.22-13.39 99.07-13.54Q98.93-13.68 98.93-14.02Q98.93-14.21 99.07-14.38Q99.22-14.54 99.22-14.54Q99.46-14.54 99.84-15.10Q100.22-15.65 100.54-16.30Q100.85-16.94 100.85-17.18Q100.85-17.47 100.78-17.52Q100.70-17.57 100.32-17.57Q99.65-17.28 98.69-16.80Q97.73-16.32 96.89-15.86Q96.05-15.41 95.66-15.02Q95.47-14.69 95.42-14.62Q95.38-14.54 95.18-14.54Q95.18-14.74 94.87-14.38Q94.56-14.02 94.10-13.39Q93.65-12.77 93.24-12.17Q92.83-11.57 92.64-11.28Q92.54-11.18 92.42-10.73Q92.30-10.27 92.30-9.89Q92.11-9.31 92.35-9.10Q92.59-8.88 93.41-8.21Q95.09-6.96 96.05-6.14Q97.01-5.33 97.49-4.80Q97.97-4.27 98.06-3.84Q98.93-2.40 98.59-1.63Q98.26-0.86 96.96-0.29Q96.48-0.05 95.38 0.10Q94.27 0.24 93.12 0.26Q91.97 0.29 91.30 0.19M107.66 0.19Q106.75-0.19 105.94-0.84Q105.12-1.49 104.88-1.92Q104.88-2.35 105.02-2.52Q105.17-2.69 105.86-2.66Q106.56-2.64 108.14-2.45Q108.72-2.45 109.58-2.54Q110.45-2.64 111.19-2.83Q111.94-3.02 112.03-3.31Q112.27-3.31 112.13-3.48Q111.98-3.65 111.79-3.84Q111.60-3.84 111.36-4.01Q111.12-4.18 110.93-4.18Q110.93-4.42 110.47-4.73Q110.02-5.04 109.54-5.23Q108.48-6.10 107.71-6.79Q106.94-7.49 107.14-7.73Q107.14-7.92 107.14-7.94Q107.14-7.97 107.14-7.97Q106.80-7.97 106.39-8.93Q105.98-9.89 105.98-10.66Q105.98-11.23 106.32-12.12Q106.66-13.01 107.23-13.97Q107.81-14.93 108.43-15.55Q109.30-16.37 110.59-17.30Q111.89-18.24 113.16-18.98Q114.43-19.73 115.30-19.97Q116.16-20.30 116.90-20.30Q117.65-20.30 118.22-19.97Q118.70-19.73 119.11-19.27Q119.52-18.82 119.83-18.36Q120.14-17.90 120.24-17.57Q120.24-16.99 120.14-16.30Q120.05-15.60 119.88-15.07Q119.71-14.54 119.38-14.54Q119.38-14.54 119.26-14.52Q119.14-14.50 119.14-14.26Q119.14-13.78 118.42-13.15Q117.50-12.53 116.83-12.41Q116.16-12.29 116.02-12.91Q115.87-13.10 115.82-13.25Q115.78-13.39 115.58-13.39Q115.58-13.39 115.44-13.54Q115.30-13.68 115.30-14.02Q115.30-14.21 115.44-14.38Q115.58-14.54 115.58-14.54Q115.82-14.54 116.21-15.10Q116.59-15.65 116.90-16.30Q117.22-16.94 117.22-17.18Q117.22-17.47 117.14-17.52Q117.07-17.57 116.69-17.57Q116.02-17.28 115.06-16.80Q114.10-16.32 113.26-15.86Q112.42-15.41 112.03-15.02Q111.84-14.69 111.79-14.62Q111.74-14.54 111.55-14.54Q111.55-14.74 111.24-14.38Q110.93-14.02 110.47-13.39Q110.02-12.77 109.61-12.17Q109.20-11.57 109.01-11.28Q108.91-11.18 108.79-10.73Q108.67-10.27 108.67-9.89Q108.48-9.31 108.72-9.10Q108.96-8.88 109.78-8.21Q111.46-6.96 112.42-6.14Q113.38-5.33 113.86-4.80Q114.34-4.27 114.43-3.84Q115.30-2.40 114.96-1.63Q114.62-0.86 113.33-0.29Q112.85-0.05 111.74 0.10Q110.64 0.24 109.49 0.26Q108.34 0.29 107.66 0.19M133.82 5.09Q133.54 5.28 133.18 4.99Q132.82 4.70 132.14 3.94Q131.81 3.55 131.71 3.12Q131.62 2.69 131.76 1.49Q131.95 0.96 131.98 0.48Q132 0 132-0.19Q132-0.48 132.17-1.54Q132.34-2.59 132.53-3.77Q132.72-4.94 132.86-5.57Q132.86-5.62 132.91-5.81Q132.96-6 133.01-6.14Q133.10-6.58 133.27-7.30Q133.44-8.02 133.58-9.07Q133.97-10.27 134.23-11.45Q134.50-12.62 134.50-13.06Q134.50-13.92 135.17-14.30Q135.22-14.54 135.46-15.05Q135.70-15.55 135.89-15.89Q136.85-18.62 137.47-20.23Q138.10-21.84 138.77-23.04Q139.06-23.86 139.42-24.72Q139.78-25.58 140.16-26.06Q140.40-26.69 141.26-27.67Q142.13-28.66 143.09-29.59Q144.05-30.53 144.62-31.01Q145.68-31.54 146.30-31.73Q146.93-31.92 147.94-31.92Q148.85-31.92 149.16-31.70Q149.47-31.49 150.10-30.91Q150.77-30.19 150.86-29.95Q150.96-29.71 150.96-29.04Q150.86-28.42 150.46-27.43Q150.05-26.45 149.59-25.66Q149.14-24.86 148.85-24.82Q148.27-24.62 148.01-24.94Q147.74-25.25 147.74-25.97Q147.74-26.30 147.58-26.62Q147.41-26.93 147.41-26.93Q147.41-27.07 147.48-27.43Q147.55-27.79 147.74-28.13Q147.98-28.61 147.86-28.85Q147.74-29.09 147.22-28.94Q147.07-28.85 146.45-28.37Q145.82-27.89 145.13-27.29Q144.43-26.69 143.90-26.16Q143.38-25.63 143.38-25.49Q143.38-25.49 143.18-25.08Q142.99-24.67 142.46-24.05Q142.13-23.57 141.86-23.11Q141.60-22.66 141.60-22.56Q141.60-22.37 141.58-22.15Q141.55-21.94 141.31-21.94Q141.31-21.94 141.17-21.50Q141.02-21.07 140.64-20.40Q140.45-19.92 140.16-19.42Q139.87-18.91 139.68-18.72L139.73-18.72Q139.73-18.72 139.51-18.12Q139.30-17.52 139.06-16.87Q138.82-16.22 138.82-16.13Q138.82-15.94 139.51-15.94Q140.21-15.94 141.17-16.10Q142.13-16.27 142.90-16.46Q143.57-16.66 143.81-16.66Q144.05-16.66 144.77-16.46Q145.15-16.22 145.42-15.77Q145.68-15.31 145.80-14.90Q145.92-14.50 145.78-14.30Q145.73-14.11 144.72-13.78Q143.71-13.44 142.70-13.25Q141.84-13.06 140.59-12.82Q139.34-12.58 138.41-12.38Q137.47-12.19 137.47-12.05Q137.28-12.05 137.14-11.83Q136.99-11.62 136.99-11.47Q136.99-10.80 136.80-10.46Q136.70-10.18 136.46-9.31Q136.22-8.45 135.96-7.39Q135.70-6.34 135.53-5.47Q135.36-4.61 135.36-4.32Q135.07-3.98 135.02-3.48Q134.98-2.98 134.98-2.59Q134.78-2.21 134.74-1.90Q134.69-1.58 134.69-1.39Q134.69-1.34 134.69-1.20Q134.69-1.06 134.64-0.91Q134.59-0.43 134.52 0.36Q134.45 1.15 134.45 1.92L134.30 3.31Q134.26 3.94 134.16 4.39Q134.06 4.85 133.82 5.09M150-0.72Q149.38-0.72 149.02-0.96Q148.66-1.20 148.13-1.63Q147.22-2.59 146.83-3.48Q146.45-4.37 146.59-5.18Q146.74-5.57 146.71-5.93Q146.69-6.29 146.69-6.29Q146.45-6.53 146.54-6.60Q146.64-6.67 146.74-6.86Q147.02-6.86 146.93-7.39Q146.83-7.78 147.31-9.07Q147.79-10.37 148.51-11.52Q148.80-12 149.38-12.79Q149.95-13.58 150.65-14.38Q151.34-15.17 151.92-15.65Q153.12-16.66 154.03-17.14Q154.94-17.62 156-17.86Q157.06-18.10 157.46-18.10Q157.87-18.10 158.59-17.33Q159.70-16.85 160.20-16.18Q160.70-15.50 160.85-14.21Q160.99-12.77 160.63-10.92Q160.27-9.07 158.35-6.34Q157.15-4.61 156.14-3.77Q155.14-2.93 153.74-2.11Q152.74-1.44 151.92-1.13Q151.10-0.82 150-0.72M154.61-5.81Q155.76-7.10 156.46-8.26Q157.15-9.41 157.78-11.18Q157.97-11.71 158.02-12.50Q158.06-13.30 157.99-13.99Q157.92-14.69 157.63-14.78Q157.06-15.12 156.24-15Q155.42-14.88 154.46-14.06Q152.98-12.82 151.87-10.97Q150.77-9.12 149.71-6.77Q148.99-5.04 149.40-4.01Q149.81-2.98 151.18-3.29Q152.54-3.60 154.61-5.81M164.54-1.68Q164.11-2.02 163.94-2.35Q163.78-2.69 163.92-3.65Q164.06-4.99 164.30-6.02Q164.54-7.06 164.88-8.40Q164.98-8.98 165.43-10.37Q165.89-11.76 166.56-13.39Q167.23-15.02 167.90-16.49Q168.58-17.95 169.06-18.67Q169.44-18.96 169.99-18.91Q170.54-18.86 170.93-18.48Q171.46-18.05 171.10-16.97Q170.74-15.89 169.63-13.58Q169.06-12.29 168.77-11.64Q168.48-10.99 168.53-10.87Q168.58-10.75 168.96-10.99Q169.25-11.52 170.02-12.22Q170.78-12.91 171.65-13.58Q172.51-14.26 173.28-14.78Q174.05-15.31 174.34-15.46Q174.72-15.70 175.22-15.86Q175.73-16.03 175.92-16.13Q177.02-16.66 178.18-16.51Q179.33-16.37 179.62-15.65Q179.66-15.26 179.93-15.07Q180.19-14.88 180.19-14.88Q180.38-14.88 180.41-14.74Q180.43-14.59 180.43-14.59Q180.43-14.26 179.93-14.18Q179.42-14.11 178.66-14.06Q178.03-14.02 177.55-13.82Q177.07-13.63 176.40-13.34Q174.58-12.29 172.92-11.28Q171.26-10.27 169.73-8.59Q169.39-8.21 169.06-7.68Q168.72-7.15 168.34-6.53Q168.10-6.29 167.86-5.47Q167.62-4.66 167.45-3.91Q167.28-3.17 167.28-3.02Q167.28-3.02 167.14-2.57Q166.99-2.11 166.66-1.68Q166.08-0.91 165.70-0.91Q165.31-0.91 164.54-1.68"},"human":{"viewBox":"0 -36 115 40","d":"M6.53-2.59Q6.19-2.54 5.83-2.62Q5.47-2.69 5.14-2.93Q4.75-3.31 4.61-3.53Q4.46-3.74 4.54-4.22Q4.61-4.70 4.85-5.71Q5.09-6.48 5.42-7.85Q5.76-9.22 6.14-10.56Q6.29-11.33 6.55-12.14Q6.82-12.96 7.10-13.66Q7.39-14.35 7.54-14.74Q7.92-16.08 8.28-17.09Q8.64-18.10 9.17-19.42Q9.70-20.74 10.46-22.94Q11.52-25.82 12.07-27.34Q12.62-28.85 12.89-29.54Q13.15-30.24 13.25-30.62Q13.25-31.01 13.46-31.20Q13.68-31.39 14.02-31.39Q14.69-31.39 15.10-30.74Q15.50-30.10 15.60-29.21Q15.70-28.32 15.31-27.55Q14.54-25.82 13.68-23.45Q12.82-21.07 12-18.79Q11.18-16.51 10.46-14.93Q10.46-14.74 10.32-14.26Q10.18-13.78 9.98-13.39Q9.79-13.01 9.62-12.67Q9.46-12.34 9.46-12.34Q9.46-12.14 9.31-11.62Q9.17-11.09 8.93-10.32Q8.74-9.74 8.47-8.83Q8.21-7.92 8.11-7.30Q8.35-7.73 9.12-8.59Q9.89-9.46 10.56-10.08Q11.33-10.75 12.29-11.57Q13.25-12.38 13.82-12.77Q14.40-13.15 14.86-13.46Q15.31-13.78 15.31-13.78Q15.31-13.97 15.48-13.99Q15.65-14.02 15.84-14.02Q16.03-14.02 16.06-14.06Q16.08-14.11 16.08-14.30Q16.08-14.54 16.63-14.74Q17.18-14.93 17.93-15.05Q18.67-15.17 19.15-15.17Q19.73-15.17 20.06-14.93Q20.40-14.69 20.93-13.87Q21.50-13.10 21.67-12.02Q21.84-10.94 21.46-9.79Q21.46-9.41 21.34-8.71Q21.22-8.02 21.22-7.25L20.93-5.71L21.70-5.71Q22.08-5.71 22.42-5.59Q22.75-5.47 22.75-5.47Q22.94-5.28 23.14-5.11Q23.33-4.94 23.52-4.94Q24.10-4.94 23.95-4.49Q23.81-4.03 23.23-3.65Q22.08-2.88 21.14-2.88Q20.21-2.88 19.44-3.65Q18.67-4.46 18.48-5.47Q18.29-6.48 18.67-8.02Q18.86-10.13 18.89-11.11Q18.91-12.10 18.38-12.10Q17.90-12.10 16.70-11.45Q15.50-10.80 14.02-9.70Q12.53-8.59 11.09-7.25Q9.65-5.90 8.69-4.46Q8.11-3.74 7.58-3.19Q7.06-2.64 6.53-2.59M38.54-0.10Q38.06-0.58 37.58-1.42Q37.10-2.26 36.82-3.36Q36.72-3.74 36.74-4.42Q36.77-5.09 36.72-5.38Q36.58-5.04 36.26-4.68Q35.95-4.32 35.66-4.08Q35.47-3.89 34.80-3.34Q34.13-2.78 33.46-2.45Q31.87-1.44 30.84-1.34Q29.81-1.25 28.90-2.40Q28.13-3.02 27.82-3.79Q27.50-4.56 27.79-5.90Q27.89-7.58 28.27-9.19Q28.66-10.80 29.86-13.49Q30.86-15.46 31.39-16.39Q31.92-17.33 32.06-17.52Q32.78-17.76 33.26-17.50Q33.74-17.23 33.84-16.56Q34.13-16.08 33.77-14.93Q33.41-13.78 32.54-12.10Q31.87-10.46 31.32-8.83Q30.77-7.20 30.67-6.05Q30.58-4.90 31.25-4.66Q31.68-4.42 32.76-4.80Q33.84-5.18 35.21-6.72Q36.58-8.26 37.87-11.38Q38.26-12.34 38.45-13.08Q38.64-13.82 38.69-14.74Q38.59-15.31 38.76-15.77Q38.93-16.22 39.50-16.56Q39.70-16.80 40.03-17.02Q40.37-17.23 40.46-16.99L41.23-17.04Q41.42-17.09 41.50-16.82Q41.57-16.56 41.81-16.37Q42.34-15.94 42.10-14.50Q41.86-13.06 40.75-10.46Q39.84-8.50 39.53-7.49Q39.22-6.48 39.17-5.52Q39.17-4.66 39.50-3.89Q39.84-3.12 40.56-2.50Q41.09-2.16 41.16-1.73Q41.23-1.30 41.18-0.72Q41.09-0.29 40.63-0.02Q40.18 0.24 39.60 0.24Q39.02 0.24 38.54-0.10M66.48-2.02Q66.24-2.11 65.76-2.50Q65.28-2.88 64.94-3.82Q64.61-4.75 64.61-6.43Q64.66-7.87 64.68-8.69Q64.70-9.50 64.32-9.50Q63.94-9.50 62.86-8.76Q61.78-8.02 60.38-6.77Q58.99-5.52 57.55-3.98Q57.07-3.46 56.62-3Q56.16-2.54 55.73-2.42Q55.30-2.30 54.72-2.74L54.19-3.17Q53.95-3.41 53.90-3.67Q53.86-3.94 53.95-4.27L55.06-7.44Q55.82-9.17 56.11-9.96Q56.40-10.75 56.40-10.97Q56.40-11.18 56.26-11.14Q55.87-11.09 55.10-10.68Q54.34-10.27 54.10-9.89Q53.90-9.89 53.52-9.46Q53.14-9.02 52.56-8.64Q52.22-8.06 51.24-7.15Q50.26-6.24 49.30-5.28Q48.67-4.75 48.07-3.98Q47.47-3.22 47.06-2.64Q46.66-2.06 46.51-2.06Q45.89-2.06 45.38-2.40Q44.88-2.74 44.64-3.50Q44.26-4.32 44.64-5.78Q45.02-7.25 45.50-9.60Q45.70-10.32 45.74-10.66Q45.79-10.99 45.91-11.35Q46.03-11.71 46.34-12.48Q46.66-13.25 47.33-14.78Q47.66-15.70 47.74-16.15Q47.81-16.61 47.81-16.80Q47.81-17.28 48.07-17.62Q48.34-17.95 48.72-18.10Q49.10-18.24 49.44-18.14Q49.97-18.05 50.38-17.62Q50.78-17.18 50.83-16.42Q50.88-15.84 50.74-15.38Q50.59-14.93 50.45-14.54L49.92-13.25Q49.68-12.72 49.30-11.71Q48.91-10.70 48.62-9.86Q48.34-9.02 48.34-8.88Q48.38-8.74 48.67-8.95Q48.96-9.17 49.42-9.58Q49.87-9.98 50.35-10.37Q51.36-11.33 52.63-12.22Q53.90-13.10 55.06-13.73Q56.21-14.35 56.83-14.54Q57.65-14.54 57.96-14.26Q58.27-13.97 59.04-13.20Q59.38-12.86 59.42-12.34Q59.47-11.81 59.38-11.33Q59.33-11.14 59.09-10.39Q58.85-9.65 58.63-8.98Q58.42-8.30 58.42-8.30Q58.42-8.30 58.97-8.78Q59.52-9.26 60.19-9.82Q60.86-10.37 61.20-10.66Q63.07-12.10 64.46-12.48Q65.86-12.86 66.72-11.47Q67.30-10.94 67.32-10.32Q67.34-9.70 67.34-8.16Q67.39-7.54 67.44-6.67Q67.49-5.81 67.56-5.11Q67.63-4.42 67.73-4.27Q67.87-4.08 68.28-3.96Q68.69-3.84 69.36-3.74Q70.08-3.65 70.22-3.12Q70.37-2.59 69.60-2.11Q68.88-1.68 68.02-1.73Q67.15-1.78 66.48-2.02M72.05-1.73Q71.86-2.11 71.57-2.33Q71.28-2.54 71.28-2.74Q71.28-2.93 71.26-3.14Q71.23-3.36 71.04-3.55Q70.80-3.84 71.09-4.87Q71.38-5.90 72.05-7.42Q72.72-8.93 73.63-10.61Q74.02-10.99 74.40-11.62Q74.78-12.24 74.98-12.43Q74.98-12.62 75.12-12.79Q75.26-12.96 75.46-12.96L75.46-13.25Q75.46-13.49 75.91-14.06Q76.37-14.64 77.04-15.34Q77.71-16.03 78.43-16.68Q79.15-17.33 79.63-17.62Q80.64-18.29 81.72-18.43Q82.80-18.58 83.57-17.95Q83.71-17.81 84.05-17.47Q84.38-17.14 84.84-16.73Q85.30-16.32 85.78-15.89L87.55-14.30L86.69-11.90Q86.06-9.98 86.38-8.54Q86.69-7.10 87.31-6.05Q87.55-5.52 88.30-5.04Q89.04-4.56 89.71-4.46Q90.10-4.42 90.43-4.18Q90.77-3.94 90.77-3.41Q90.77-2.93 90.58-2.64Q90.38-2.35 89.90-2.26Q88.32-2.06 86.95-3.02Q85.58-3.98 84.43-6.19Q84.24-6.48 83.93-7.27Q83.62-8.06 83.57-8.30Q83.38-8.06 82.85-7.42Q82.32-6.77 82.03-6.48Q78.62-3.02 76.15-1.85Q73.68-0.67 72.05-1.73M73.78-4.42Q73.78-4.08 74.81-4.44Q75.84-4.80 77.04-5.76Q78.67-7.15 80.33-8.83Q81.98-10.51 82.99-11.95L84.05-13.68Q83.57-14.78 83.02-15.19Q82.46-15.60 82.08-15.60Q81.46-15.60 80.23-14.45Q79.01-13.30 77.62-11.38Q76.22-9.46 74.98-7.15Q74.50-6.19 74.14-5.30Q73.78-4.42 73.78-4.42M109.68-2.21Q108.72-2.21 108.10-2.62Q107.47-3.02 107.04-3.98Q106.85-4.66 106.73-5.50Q106.61-6.34 106.61-7.08Q106.61-7.82 106.75-8.06Q106.94-8.26 106.92-8.76Q106.90-9.26 106.90-9.84Q106.85-10.80 106.44-10.92Q106.03-11.04 105.26-10.61Q104.40-10.08 103.01-9.19Q101.62-8.30 100.10-7.25Q98.59-6.19 97.25-5.04Q96.19-3.89 95.98-3.29Q95.76-2.69 95.38-2.69Q94.99-2.50 94.73-2.66Q94.46-2.83 93.98-3.22Q93.65-3.60 93.31-3.96Q92.98-4.32 92.88-4.51Q92.88-4.75 93.02-5.52Q93.17-6.29 93.38-7.06Q93.60-7.82 93.70-8.06Q93.94-8.06 94.10-8.54Q94.27-9.02 94.66-9.60Q94.75-10.18 95.16-11.16Q95.57-12.14 95.90-12.91Q96.58-14.06 96.84-14.83Q97.10-15.60 97.20-16.75Q97.15-16.94 97.30-17.11Q97.44-17.28 97.63-17.28Q98.02-17.66 98.54-17.50Q99.07-17.33 99.50-16.75Q100.37-15.60 100.20-14.38Q100.03-13.15 98.64-10.90Q98.30-10.13 98.14-9.72Q97.97-9.31 97.97-9.07Q97.97-9.07 98.47-9.41Q98.98-9.74 99.62-10.20Q100.27-10.66 100.66-10.90Q100.90-11.14 101.76-11.76Q102.62-12.38 103.61-12.98Q104.59-13.58 105.07-13.68Q105.46-13.87 105.89-14.04Q106.32-14.21 106.51-14.21Q106.90-14.21 107.50-13.80Q108.10-13.39 108.62-12.84Q109.15-12.29 109.25-11.90Q109.25-11.71 109.27-11.52Q109.30-11.33 109.34-11.14Q109.54-10.51 109.56-9.46Q109.58-8.40 109.49-7.54Q109.39-6.67 109.15-6.53Q109.15-6.53 109.18-6.41Q109.20-6.29 109.39-6.29Q109.39-6.10 109.39-6.07Q109.39-6.05 109.39-6.05Q109.15-6.05 109.20-5.64Q109.25-5.23 109.51-4.75Q109.78-4.27 110.06-3.98Q110.64-3.41 110.54-2.90Q110.45-2.40 109.68-2.21"}};
Strikeout.tsx269 lines
"use client";

import { useRef, useState, useEffect } from "react";
import gsap from "gsap";
import { DrawSVGPlugin } from "gsap/DrawSVGPlugin";
import { Observer } from "gsap/Observer";
import ScrambleLink from "../ScrambleLink";
import { CAVEAT_PATHS } from "./caveat-paths";
import { WRITING_PATHS } from "./writing-paths";

gsap.registerPlugin(DrawSVGPlugin, Observer);

const SCRIBBLE_PATHS = [
  "M0,8 C15,2 35,14 50,6 C65,-2 80,12 95,8",
  "M2,14 C20,6 40,18 55,10 C70,4 85,16 98,12",
  "M-2,20 C18,12 38,24 55,16 C72,8 88,20 100,18",
  "M3,4 C22,10 42,0 58,8 C74,14 90,4 97,10",
  "M0,24 C16,18 36,28 52,20 C68,12 84,24 100,20",
];

function WrittenWord({
  id,
  data,
  writingPath,
  ink,
  width,
}: {
  id: string;
  data: { viewBox: string; d: string };
  writingPath: string;
  ink: string;
  width: string;
}) {
  const maskId = `write-mask-${id}`;
  return (
    <svg
      viewBox={data.viewBox}
      style={{
        width,
        height: "auto",
        overflow: "visible",
        display: "inline-block",
        verticalAlign: "baseline",
      }}
    >
      <defs>
        <mask id={maskId}>
          {/* Black background = hidden */}
          <rect x="-999" y="-999" width="9999" height="9999" fill="black" />
          {/* White thick stroke along writing direction = revealed */}
          <path
            className={`write-pen-${id}`}
            d={writingPath}
            fill="none"
            stroke="white"
            strokeWidth={80}
            strokeLinecap="round"
            strokeLinejoin="round"
          />
        </mask>
      </defs>
      {/* Filled text, revealed by the pen mask */}
      <path d={data.d} fill={ink} mask={`url(#${maskId})`} />
    </svg>
  );
}

export default function Strikeout() {
  const containerRef = useRef<HTMLDivElement>(null);
  const [dark, setDark] = useState(false);
  const [key, setKey] = useState(0);
  const progressRef = useRef(0);

  useEffect(() => {
    if (!containerRef.current) return;
    progressRef.current = 0;

    const ctx = gsap.context(() => {
      const tl = gsap.timeline({ paused: true });

      gsap.set(".scribble-line", { drawSVG: "0% 0%" });
      gsap.set(".write-pen-enough", { drawSVG: "0% 0%" });

      // Phase 1 (0 → 0.4): scribble strikethrough
      SCRIBBLE_PATHS.forEach((_, i) => {
        tl.to(`.scribble-line-${i}`, {
          drawSVG: "0% 100%",
          duration: 0.08,
          ease: "none",
        }, 0.02 + i * 0.05);
      });

      // Phase 2 (0.35 → 1.0): pen writes "enough"
      tl.to(".write-pen-enough", {
        drawSVG: "0% 100%",
        duration: 0.65,
        ease: "none",
      }, 0.35);

      const state = { target: 0 };

      const ticker = () => {
        state.target = gsap.utils.clamp(0, 1, state.target);
        progressRef.current += (state.target - progressRef.current) * 0.08;
        tl.progress(progressRef.current);
      };
      gsap.ticker.add(ticker);

      const obs = Observer.create({
        target: containerRef.current!,
        type: "wheel,touch,pointer",
        onChangeY: (self) => {
          const delta = (self.deltaY ?? 0) / 300;
          state.target = gsap.utils.clamp(0, 1, state.target + delta);
        },
        tolerance: 0,
        preventDefault: true,
      });

      return () => {
        gsap.ticker.remove(ticker);
        obs.kill();
      };
    }, containerRef);

    return () => ctx.revert();
  }, [key]);

  const ink = "#2a3cba";

  return (
    <div
      ref={containerRef}
      className="fixed inset-0 flex items-center justify-center select-none overflow-hidden"
      style={{
        background: dark ? "#0a0a0a" : "#f5f2ed",
        transition: "background 0.4s ease",
        cursor: "ns-resize",
      }}
    >
      <div
        className="fixed top-8 left-1/2 -translate-x-1/2"
        style={{
          fontFamily: "var(--font-flux), sans-serif",
          fontVariationSettings: "'wght' 300, 'SRIF' 100",
          fontSize: 11, letterSpacing: "0.12em", textTransform: "uppercase",
          color: dark ? "rgba(255,255,255,0.2)" : "rgba(0,0,0,0.2)",
          zIndex: 10,
        }}
      >
        Scroll to reveal
      </div>

      <div key={key} style={{ position: "relative", textAlign: "left", lineHeight: 1.15 }}>
        {/* Make */}
        <div style={{
          fontFamily: "var(--font-flux), Georgia, serif",
          fontVariationSettings: "'wght' 300, 'SRIF' 800",
          fontSize: "clamp(48px, 8vw, 96px)",
          color: dark ? "#fff" : "#1a1a1a",
        }}>
          Make
        </div>

        {/* no + enough */}
        <div style={{ position: "relative", display: "flex", alignItems: "baseline", gap: "0.2em" }}>
          <span style={{ position: "relative", display: "inline-block" }}>
            <span style={{
              fontFamily: "var(--font-flux), Georgia, serif",
              fontVariationSettings: "'wght' 300, 'SRIF' 800",
              fontSize: "clamp(48px, 8vw, 96px)",
              color: dark ? "#fff" : "#1a1a1a",
            }}>
              no
            </span>
            <svg
              viewBox="-5 -2 110 30"
              preserveAspectRatio="none"
              style={{
                position: "absolute", left: "-8%", top: "15%",
                width: "116%", height: "70%", pointerEvents: "none",
              }}
            >
              {SCRIBBLE_PATHS.map((d, i) => (
                <path key={i} className={`scribble-line scribble-line-${i}`}
                  d={d} fill="none" stroke={ink} strokeWidth={2.5}
                  strokeLinecap="round" strokeLinejoin="round"
                  style={{ opacity: 0.7 + i * 0.06 }}
                />
              ))}
            </svg>
          </span>

          <WrittenWord
            id="enough"
            data={CAVEAT_PATHS.enough}
            writingPath={WRITING_PATHS.enough}
            ink={ink}
            width="clamp(140px, 20vw, 260px)"
          />
        </div>

        {/* mistakes. */}
        <div style={{
          fontFamily: "var(--font-flux), Georgia, serif",
          fontVariationSettings: "'wght' 300, 'SRIF' 800",
          fontSize: "clamp(48px, 8vw, 96px)",
          color: dark ? "#fff" : "#1a1a1a",
        }}>
          mistakes.
        </div>

      </div>

      {/* Progress */}
      <div style={{
        position: "fixed", right: 12, top: "50%", transform: "translateY(-50%)",
        width: 2, height: 120,
        background: dark ? "rgba(255,255,255,0.08)" : "rgba(0,0,0,0.06)",
        borderRadius: 1, zIndex: 15, overflow: "hidden",
      }}>
        <div style={{ width: "100%", height: "100%", background: ink, transformOrigin: "top", transform: "scaleY(0)" }}
          ref={(el) => {
            if (!el) return;
            const update = () => { el.style.transform = `scaleY(${progressRef.current})`; requestAnimationFrame(update); };
            requestAnimationFrame(update);
          }}
        />
      </div>

      {/* Controls */}
      <div style={{
        position: "fixed", left: 24, top: "50%", transform: "translateY(-50%)", zIndex: 20, width: 160,
        background: dark ? "rgba(20,20,20,0.92)" : "rgba(255,255,255,0.92)", backdropFilter: "blur(12px)",
        borderRadius: 16, padding: "20px 22px",
        boxShadow: dark ? "0 2px 20px rgba(0,0,0,0.3)" : "0 2px 20px rgba(0,0,0,0.06)",
        border: dark ? "1px solid rgba(255,255,255,0.08)" : "1px solid rgba(0,0,0,0.06)", transition: "all 0.4s ease",
      }}>
        <span style={{
          fontFamily: "var(--font-flux), sans-serif", fontVariationSettings: "'wght' 500, 'SRIF' 100",
          fontSize: 12, letterSpacing: "0.1em", textTransform: "uppercase", color: dark ? "#fff" : "#1a1a2e",
        }}>Strikeout</span>
        <button onClick={() => setKey((k) => k + 1)} style={{
          width: "100%", padding: "8px 0", marginTop: 16, borderRadius: 8,
          border: dark ? "1px solid rgba(255,255,255,0.2)" : "1px solid rgba(26,26,46,0.1)",
          background: "transparent", color: dark ? "rgba(255,255,255,0.4)" : "rgba(26,26,46,0.4)",
          fontFamily: "var(--font-flux), sans-serif", fontVariationSettings: "'wght' 300, 'SRIF' 100",
          fontSize: 11, letterSpacing: "0.08em", textTransform: "uppercase" as const, cursor: "pointer",
        }}>Reset</button>
        <button onClick={() => setDark((v) => !v)} style={{
          width: "100%", padding: "8px 0", marginTop: 8, borderRadius: 8,
          border: dark ? "1px solid rgba(255,255,255,0.2)" : "1px solid rgba(26,26,46,0.1)",
          background: dark ? "rgba(255,255,255,0.1)" : "rgba(26,26,46,0.04)",
          color: dark ? "#fff" : "#1a1a2e",
          fontFamily: "var(--font-flux), sans-serif", fontVariationSettings: "'wght' 500, 'SRIF' 100",
          fontSize: 11, letterSpacing: "0.08em", textTransform: "uppercase" as const,
          cursor: "pointer", transition: "all 0.3s ease",
        }}>{dark ? "Dark" : "Light"}</button>
      </div>

      <div className="fixed bottom-6 left-6" style={{ zIndex: 20 }}>
        <ScrambleLink from="STRIKEOUT" to="← LAB" href="/lab"
          className="text-[11px] tracking-[0.1em] text-foreground/30 uppercase hover:text-foreground/60 transition-colors"
          style={{ fontVariationSettings: "'wght' 400, 'SRIF' 100" }} />
      </div>
    </div>
  );
}
writing-paths.ts6 lines
export const WRITING_PATHS = {
  enough: "M5.1,-9.6 Q11.8,-9.6 18.5,-9.6 Q19.5,-9.6 20.6,-9.9 Q29.4,-9.9 38.3,-9.9 Q40.0,-9.9 41.8,-9.4 Q49.0,-9.4 56.2,-9.4 Q57.9,-9.4 59.5,-8.7 Q66.8,-8.7 74.0,-8.7 Q74.6,-8.7 75.2,-4.6 Q83.0,-4.6 90.7,-4.6 Q92.1,-4.6 93.5,-17.0 Q103.2,-17.0 112.9,-17.0",
  topassfor: "M5.5,-13.4 Q12.6,-13.4 19.7,-13.4 Q20.1,-13.4 20.5,-9.4 Q27.7,-9.4 34.9,-9.4 Q40.5,-9.4 46.1,-4.8 Q55.3,-4.8 64.4,-4.8 Q65.5,-4.8 66.6,-9.8 Q76.5,-9.8 86.4,-9.8 Q87.5,-9.8 88.5,-10.0 Q96.2,-10.0 103.9,-10.0 Q104.4,-10.0 104.9,-10.0 Q112.6,-10.0 120.2,-10.0 Q126.0,-10.0 131.7,-13.4 Q141.3,-13.4 151.0,-13.4 Q148.7,-13.4 146.5,-9.4 Q153.7,-9.4 160.9,-9.4 Q162.4,-9.4 163.9,-9.9 Q172.1,-9.9 180.4,-9.9",
  human: "M4.5,-17.0 Q14.2,-17.0 24.0,-17.0 Q25.8,-17.0 27.7,-8.7 Q34.9,-8.7 42.2,-8.7 Q43.3,-8.7 44.4,-10.0 Q57.3,-10.0 70.2,-10.0 Q70.6,-10.0 70.9,-9.8 Q80.8,-9.8 90.8,-9.8 Q91.8,-9.8 92.9,-9.9 Q101.7,-9.9 110.6,-9.9",
};

NEMAWASHI — Kotaro Abe