PageSourceSearch

https://drawgestures.com/

html drawgestures.com collected 2026-09-24 11:06:59 UTC 75,284 bytes, 1,391 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en">
3<head>
4    <meta charset="utf-8">
5    <meta name="viewport" content="width=device-width, initial-scale=1">
6    <meta name="csrf-token" content="s3iM1jKeoc8lJSg1KClZfmPoRHO48pkaIeOUE6jw">
7    <meta name="theme-color" content="#1A1A1A">
8
9    <link rel="icon" type="image/x-icon" href="https://drawgestures.com/favicon.ico">
10    <link rel="icon" type="image/png" sizes="32x32" href="https://drawgestures.com/favicon-32x32.png">
11    <link rel="icon" type="image/png" sizes="16x16" href="https://drawgestures.com/favicon-16x16.png">
12    <link rel="apple-touch-icon" sizes="180x180" href="https://drawgestures.com/apple-touch-icon.png">
13
14                <title>Gesture Drawing App &amp; Timer — Free Online Practice | DrawGestures</title>
15<meta name="description" content="Practise gesture drawing online with a free drawing timer (30 seconds to 10 minutes), curated reference poses and tablet-friendly tools. Web, iOS, Android and desktop. No sign-up.">
16<meta name="keywords" content="gesture drawing, gesture drawing app, gesture drawing app free, gesture drawing website, gesture drawing online, drawing timer, gesture drawing timer, figure drawing timer, gesture drawing practice, pose reference app, pinterest gesture drawing">
17<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">
18
19<link rel="canonical" href="https://drawgestures.com/">
20
21<meta property="og:type" content="website">
22<meta property="og:url" content="https://drawgestures.com/">
23<meta property="og:title" content="Gesture Drawing App &amp; Timer — Free Online Practice | DrawGestures">
24<meta property="og:description" content="Practise gesture drawing online with a free drawing timer (30 seconds to 10 minutes), curated reference poses and tablet-friendly tools. Web, iOS, Android and desktop. No sign-up.">
25<meta property="og:image" content="https://drawgestures.com/og-image.jpg">
26<meta property="og:image:alt" content="DrawGestures — free online gesture &amp; figure drawing practice tool">
27<meta property="og:site_name" content="DrawGestures: Figure Drawing">
28<meta property="og:locale" content="en_US">
29<meta property="fb:app_id" content="335569033855798">
30
31<meta name="twitter:card" content="summary_large_image">
32<meta name="twitter:url" content="https://drawgestures.com/">
33<meta name="twitter:title" content="Gesture Drawing App &amp; Timer — Free Online Practice | DrawGestures">
34<meta name="twitter:description" content="Practise gesture drawing online with a free drawing timer (30 seconds to 10 minutes), curated reference poses and tablet-friendly tools. Web, iOS, Android and desktop. No sign-up.">
35<meta name="twitter:image" content="https://drawgestures.com/og-image.jpg">
36<meta name="twitter:image:alt" content="DrawGestures — free online gesture &amp; figure drawing practice tool">
37
38<script type="application/ld+json">
39{
40    "@context": "https://schema.org",
41    "@graph": [
42        {
43            "@type": "Organization",
44            "@id": "https://drawgestures.com/#organization",
45            "name": "DrawGestures",
46            "url": "https://drawgestures.com/",
47            "logo": "https://drawgestures.com/images/logo.png",
48            "sameAs": [
49                "https://www.instagram.com/drawgestures/",
50                "https://x.com/drawgestures",
51                "https://apps.apple.com/us/app/draw-gestures-figure-drawing/id1552057070",
52                "https://play.google.com/store/apps/details?id=com.darkmat13r.gesturedrawing"
53            ]
54        },
55        {
56            "@type": "WebSite",
57            "@id": "https://drawgestures.com/#website",
58            "name": "DrawGestures",
59            "url": "https://drawgestures.com/",
60            "publisher": {
61                "@id": "https://drawgestures.com/#organization"
62            },
63            "inLanguage": "en-US"
64        },
65        {
66            "@type": "SoftwareApplication",
67            "@id": "https://drawgestures.com/#app",
68            "name": "DrawGestures — Gesture Drawing App & Timer",
69            "description": "Free gesture drawing app with a built-in drawing timer, curated reference poses and tablet-friendly drawing tools. Practise gesture drawing online or on iOS, Android, Windows and macOS.",
70            "url": "https://drawgestures.com/",
71            "applicationCategory": "DesignApplication",
72            "operatingSystem": "Web, iOS, Android, Windows, macOS",
73            "installUrl": "https://drawgestures.com/download",
74            "screenshot": "https://drawgestures.com/images/app_home_page.png",
75            "featureList": "Gesture drawing timer (30s, 1m, 2m, 5m, 10m), auto-advance and shuffle, curated reference poses, Pinterest and Google image libraries, draw on top of references, tablet and pen support",
76            "offers": {
77                "@type": "Offer",
78                "price": "0",
79                "priceCurrency": "USD"
80            },
81            "publisher": {
82                "@id": "https://drawgestures.com/#organization"
83            }
84        },
85        {
86            "@type": "FAQPage",
87            "@id": "https://drawgestures.com/#faq",
88            "mainEntity": [
89                {
90                    "@type": "Question",
91                    "name": "What is gesture drawing?",
92                    "acceptedAnswer": {
93                        "@type": "Answer",
94                        "text": "Gesture drawing is a quick sketch, usually 30 seconds to 2 minutes, that captures the movement, energy and rhythm of a pose rather than its details. Artists and animators use it as a daily warm-up and as the foundation of figure drawing."
95                    }
96                },
97                {
98                    "@type": "Question",
99                    "name": "Is DrawGestures a free gesture drawing app?",
100                    "acceptedAnswer": {
101                        "@type": "Answer",
102                        "text": "Yes. The drawing timer, timed sessions and curated reference poses are free on the web, iOS and Android, with no sign-up and no ads. Pro, from $2.99 a month, adds Pinterest and cloud imports, custom intervals and extra session modes."
103                    }
104                },
105                {
106                    "@type": "Question",
107                    "name": "Can I practise gesture drawing online in my browser?",
108                    "acceptedAnswer": {
109                        "@type": "Answer",
110                        "text": "Yes. Open the DrawGestures web app, pick a reference library, set the drawing timer and start drawing. Nothing to install. The same sessions are available in the iOS, Android and desktop apps."
111                    }
112                },
113                {
114                    "@type": "Question",
115                    "name": "What timer intervals should I use for gesture drawing?",
116                    "acceptedAnswer": {
117                        "@type": "Answer",
118                        "text": "Start with ten 30-second poses to warm up, then move to 1 or 2 minutes for the bulk of the session. Anything from 5 minutes up is closer to figure drawing than gesture drawing."
119                    }
120                },
121                {
122                    "@type": "Question",
123                    "name": "Does the gesture drawing timer advance automatically?",
124                    "acceptedAnswer": {
125                        "@type": "Answer",
126                        "text": "Yes. When the interval ends the next reference image appears on its own, so you never stop to click. Turn on shuffle to see poses in random order."
127                    }
128                },
129                {
130                    "@type": "Question",
131                    "name": "Which devices does DrawGestures work on?",
132                    "acceptedAnswer": {
133                        "@type": "Answer",
134                        "text": "Any modern browser, iPhone and iPad, Android phones and tablets, Windows and macOS. The app is built for tablets, with pen input and drawing on top of the reference."
135                    }
136                }
137            ]
138        }
139    ]
140}
141</script>
141
142
143<meta name="dg:page-name" content="home">
144<meta name="dg:page-type" content="home">
145    
146    
147    <link rel="preconnect" href="https://fonts.googleapis.com">
148    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
149    <link href="https://fonts.googleapis.com/css2?family=Josefin+Sans:wght@300;400;500;700&family=Kanit:wght@300;400;500;700&display=swap" rel="stylesheet">
150
151    
152    <link href="https://drawgestures.com/css/design-system.css" rel="stylesheet">
153    <link href="https://drawgestures.com/css/ds-web.css" rel="stylesheet">
154
155    <style>
156    /* ---- Home page "B Bold" (scoped: .dg-*) ---- */
157    [id] { scroll-margin-top: calc(var(--ds-topbar-height) + var(--space-md)); }
158
159    @keyframes dgHeroIn { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: translateY(0); } }
160    @keyframes dgMarquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }
161
162    /* Pill buttons on this page */
163    .dg-cta-row .ds-btn,
164    .dg-guides__all .ds-btn { border-radius: var(--radius-full); }
165
166    /* Section rhythm + centered headers */
167    .dg-sec { padding-top: 6rem; padding-bottom: 6rem; }
168    .dg-section-head {
169        max-width: 44rem;
170        margin: 0 auto;
171        text-align: center;
172    }
173    .dg-eyebrow {
174        font-family: var(--font-plain);
175        font-size: var(--text-label-small);
176        font-weight: 500;
177        letter-spacing: 0.18em;
178        text-transform: uppercase;
179        color: var(--color-primary);
180    }
181    .dg-section-head .ds-heading {
182        margin-top: var(--space-md);
183        font-size: clamp(1.875rem, 3.4vw + 0.5rem, 2.75rem);
184        line-height: 1.12;
185        letter-spacing: -0.02em;
186        text-wrap: balance;
187    }
188    .dg-section-head > .ds-text {
189        margin-top: var(--space-md);
190        font-weight: 300;
191        text-wrap: pretty;
192    }
193    .dg-strong { color: var(--color-neutral-white); font-weight: 500; }
194
195    /* Hero — centered */
196    .dg-hero {
197        position: relative;
198        padding: 6rem 0 0;
199        text-align: center;
200        overflow-x: clip;
201    }
202    .dg-hero__glow {
203        position: absolute;
204        top: -12.5rem;
205        left: 50%;
206        transform: translateX(-50%);
207        width: 56rem;
208        height: 37.5rem;
209        border-radius: var(--radius-full);
210        background: radial-gradient(ellipse, color-mix(in srgb, var(--color-primary) 13%, transparent) 0%, transparent 65%);
211        pointer-events: none;
212    }
213    .dg-hero__copy {
214        position: relative;
215        max-width: 55rem;
216        margin: 0 auto;
217        padding: 0 var(--space-lg);
218        display: flex;
219        flex-direction: column;
220        align-items: center;
221    }
222    .dg-hero .ds-heading--display {
223        margin-top: 1.75rem;
224        font-size: clamp(2.75rem, 6.5vw + 0.5rem, 4.75rem);
225        line-height: 1.04;
226        letter-spacing: -0.025em;
227        text-wrap: balance;
228    }
229    .dg-hero__lede {
230        margin-top: 1.625rem;
231        max-width: 36rem;
232        font-weight: 300;
233        text-wrap: pretty;
234    }
235    .dg-hero__lede strong { color: var(--color-neutral-white); font-weight: 500; }
236    .dg-cta-row {
237        display: flex;
238        flex-wrap: wrap;
239        align-items: center;
240        justify-content: center;
241        gap: var(--space-normal);
242        margin-top: 2.25rem;
243    }
244    .dg-platforms {
245        display: flex;
246        flex-wrap: wrap;
247        justify-content: center;
248        gap: var(--space-sm);
249        margin-top: 1.25rem;
250    }
251    .dg-platform {
252        display: inline-flex;
253        align-items: center;
254        gap: var(--space-sm);
255        height: 2.5rem;
256        padding: 0 var(--space-md);
257        border-radius: var(--radius-full);
258        background: color-mix(in srgb, var(--color-neutral-white) 3%, transparent);
259        border: var(--border-thin) solid var(--ds-glass-border);
260        color: var(--color-neutral-silver);
261        text-decoration: none;
262        font-family: var(--font-plain);
263        font-size: var(--text-body-small);
264        transition: all 200ms cubic-bezier(0.2, 0, 0, 1);
265    }
266    .dg-platform:hover {
267        background: var(--ds-glass-hover);
268        border-color: color-mix(in srgb, var(--color-neutral-white) 22%, transparent);
269        color: var(--color-neutral-white);
270    }
271    .dg-rating {
272        display: flex;
273        flex-wrap: wrap;
274        justify-content: center;
275        align-items: center;
276        gap: var(--space-sm) var(--space-md);
277        margin-top: 1.375rem;
278        font-family: var(--font-plain);
279        font-size: var(--text-body-small);
280        color: var(--color-neutral-ash);
281    }
282    .dg-stars {
283        color: var(--color-premium-gold);
284        letter-spacing: 0.12em;
285        white-space: nowrap;
286    }
287    .dg-stars--dim { color: var(--color-charcoal-light); }
288    .dg-rating__sep { color: var(--color-charcoal-light); }
289
290    /* Phone centerpiece */
291    .dg-hero__stage {
292        position: relative;
293        max-width: 72.5rem;
294        margin: 4rem auto 0;
295        padding: 0 var(--space-lg);
296        display: flex;
297        justify-content: center;
298    }
299    .dg-phone {
300        width: min(21.25rem, 82vw);
301        padding: 0.875rem 0.875rem 0;
302        background: var(--ds-glass-elevated);
303        border: var(--border-thin) solid var(--ds-glass-border);
304        border-bottom: none;
305        border-radius: 2rem 2rem 0 0;
306        box-shadow: 0 -16px 48px rgba(0, 0, 0, 0.45), inset 0 1px 0 color-mix(in srgb, var(--color-neutral-white) 8%, transparent);
307    }
308    .dg-phone img {
309        display: block;
310        width: 100%;
311        border-radius: 1.25rem 1.25rem 0 0;
312    }
313    .dg-hero__rule { height: 1px; background: var(--ds-glass-border); }
314
315    /* Hero entrance (motion-safe only) */
316    @media (prefers-reduced-motion: no-preference) {
317        .dg-anim { animation: dgHeroIn 0.7s cubic-bezier(0, 0, 0, 1) both; }
318        .dg-anim--d1 { animation-delay: 0.08s; }
319        .dg-anim--d2 { animation-delay: 0.16s; }
320        .dg-anim--d3 { animation-delay: 0.24s; }
321        .dg-anim--d3b { animation-delay: 0.3s; }
322        .dg-anim--d4 { animation-delay: 0.32s; }
323        .dg-anim--d5 { animation-delay: 0.4s; animation-duration: 0.9s; }
324    }
325
326    /* Scroll reveal (enabled by JS, motion-safe only) */
327    @media (prefers-reduced-motion: no-preference) {
328        .dg-js [data-reveal] { opacity: 0; transform: translateY(26px); }
329        .dg-js [data-reveal].is-in {
330            opacity: 1;
331            transform: translateY(0);
332            transition: opacity 0.75s cubic-bezier(0, 0, 0, 1) var(--reveal-delay, 0ms),
333                        transform 0.75s cubic-bezier(0, 0, 0, 1) var(--reveal-delay, 0ms);
334        }
335    }
336
337    /* About — copy + card-free fact strip */
338    .dg-about__copy .ds-text { font-weight: 300; text-wrap: pretty; }
339    .dg-about__copy .ds-text + .ds-text { margin-top: 0.875rem; }
340    .dg-facts {
341        margin-top: 4rem;
342        border-top: var(--border-thin) solid var(--ds-glass-border);
343        border-bottom: var(--border-thin) solid var(--ds-glass-border);
344        display: grid;
345        grid-template-columns: repeat(auto-fit, minmax(min(13.75rem, 100%), 1fr));
346    }
347    .dg-facts > div {
348        padding: 1.75rem var(--space-lg);
349        border-right: var(--border-thin) solid color-mix(in srgb, var(--color-neutral-white) 8%, transparent);
350    }
351    .dg-facts > div:last-child { border-right: none; }
352    .dg-facts__label {
353        margin: 0 0 var(--space-xs);
354        font-family: var(--font-plain);
355        font-size: var(--text-label-small);
356        font-weight: 500;
357        text-transform: uppercase;
358        letter-spacing: 0.14em;
359        color: var(--color-primary);
360    }
361    .dg-facts__value {
362        margin: 0;
363        font-family: var(--font-plain);
364        font-size: var(--text-body-medium);
365        line-height: 1.5;
366        color: var(--color-on-surface);
367    }
368
369    /* Google-data editorial footnote */
370    .dg-gdata {
371        max-width: 51.25rem;
372        margin: 3.5rem auto 0;
373        text-align: center;
374    }
375    .dg-gdata > .ds-heading { font-size: var(--ds-text-lg); }
376    .dg-gdata__intro { margin: var(--space-xs) 0 1.75rem; }
377    .dg-gdata__grid {
378        display: grid;
379        grid-template-columns: repeat(auto-fit, minmax(min(13.75rem, 100%), 1fr));
380        gap: var(--space-lg) 2rem;
381        text-align: left;
382    }
383    .dg-gdata__item { display: flex; gap: 0.875rem; }
384    .dg-gdata__ix {
385        flex-shrink: 0;
386        font-family: var(--font-brand);
387        font-weight: 700;
388        font-size: var(--text-body-medium);
389        color: var(--color-primary);
390    }
391    .dg-gdata__item em { font-style: normal; font-weight: 500; color: var(--color-neutral-white); }
392    .dg-gdata__legal { margin-top: 1.75rem; }
393    .dg-gdata__legal a {
394        color: var(--color-primary);
395        text-decoration: underline;
396        text-underline-offset: 3px;
397    }
398
399    /* Features — card-free editorial grid */
400    .dg-features {
401        display: grid;
402        grid-template-columns: repeat(auto-fit, minmax(min(20rem, 100%), 1fr));
403        gap: 3.5rem 2.5rem;
404        margin-top: 4rem;
405    }
406    .dg-feature { display: flex; flex-direction: column; }
407    .dg-feature__illo {
408        position: relative;
409        height: 12.5rem;
410        border-radius: var(--radius-card);
411        overflow: hidden;
412        background: var(--ds-glass-surface);
413    }
414    .dg-feature__illo img { display: block; width: 100%; height: 100%; object-fit: cover; }
415    /* Source-backed libraries use the brand mark as the thumbnail, on the
416       same paper tone as the hand-drawn illustrations so the grid stays in rhythm. */
417    .dg-feature__illo--logo {
418        display: grid;
419        place-items: center;
420        background: #f1d6a8;
421    }
422    .dg-feature__illo--logo svg { display: block; }
423    /* Optical balance: the Drive mark is a wide triangle, the Pinterest mark a full disc */
424    .dg-feature__illo--logo .sk-icon--google-drive { width: 5.25rem; height: 5.25rem; }
425    .dg-feature__head {
426        display: flex;
427        align-items: baseline;
428        gap: var(--space-normal);
429        margin-top: 1.25rem;
430    }
431    .dg-feature__num {
432        font-family: var(--font-brand);
433        font-weight: 700;
434        font-size: var(--text-body-small);
435        letter-spacing: 0.08em;
436        color: var(--color-primary);
437    }
438    .dg-feature .ds-heading { font-size: 1.3125rem; }
439    .dg-feature .ds-heading em { font-style: normal; color: var(--color-primary); }
440    .dg-feature > .ds-text { margin-top: var(--space-sm); text-wrap: pretty; }
441
442    /* Reviews — marquee */
443    .dg-reviews {
444        border-top: var(--border-thin) solid color-mix(in srgb, var(--color-neutral-white) 6%, transparent);
445        border-bottom: var(--border-thin) solid color-mix(in srgb, var(--color-neutral-white) 6%, transparent);
446        overflow: hidden;
447    }
448    .dg-reviews .dg-section-head { padding: 0 var(--space-lg); }
449    .dg-reviews__avg {
450        display: flex;
451        align-items: baseline;
452        justify-content: center;
453        gap: 0.875rem;
454        margin-top: 1.25rem;
455    }
456    .dg-reviews__num {
457        font-family: var(--font-brand);
458        font-size: 3.75rem;
459        font-weight: 700;
460        color: var(--color-primary);
461        line-height: 1;
462        font-variant-numeric: tabular-nums;
463    }
464    .dg-marquee { position: relative; margin-top: 3rem; }
465    .dg-marquee::before,
466    .dg-marquee::after {
467        content: '';
468        position: absolute;
469        top: 0;
470        bottom: 0;
471        width: 7.5rem;
472        z-index: 2;
473        pointer-events: none;
474    }
475    .dg-marquee::before { left: 0; background: linear-gradient(90deg, var(--color-background), transparent); }
476    .dg-marquee::after { right: 0; background: linear-gradient(270deg, var(--color-background), transparent); }
477    @media (max-width: 640px) {
478        .dg-marquee::before, .dg-marquee::after { width: 2.5rem; }
479        .dg-review { width: 17.5rem; }
480    }
481    .dg-marquee__track {
482        display: flex;
483        gap: 1.25rem;
484        width: max-content;
485    }
486    @media (prefers-reduced-motion: no-preference) {
487        .dg-marquee__track { animation: dgMarquee 36s linear infinite; }
488    }
489    @media (prefers-reduced-motion: reduce) {
490        .dg-marquee { overflow-x: auto; }
491        .dg-marquee::before, .dg-marquee::after { display: none; }
492        .dg-marquee__copy--dup { display: none; }
493    }
494    .dg-marquee__copy { display: flex; gap: 1.25rem; }
495    .dg-review {
496        width: 22.5rem;
497        flex-shrink: 0;
498        padding: var(--space-xs) 0 var(--space-xs) 1.625rem;
499        border-left: 2px solid color-mix(in srgb, var(--color-primary) 45%, transparent);
500    }
501    .dg-review blockquote {
502        margin: 0.625rem 0 0.75rem;
503        font-family: var(--font-plain);
504        font-size: 1.0625rem;
505        line-height: 1.55;
506        font-weight: 300;
507        color: var(--color-on-surface);
508    }
509
510    /* Guides — card-free teasers */
511    .dg-guides {
512        display: grid;
513        grid-template-columns: repeat(auto-fit, minmax(min(18.75rem, 100%), 1fr));
514        gap: 1.25rem;
515        margin-top: 3.5rem;
516    }
517    .dg-guide {
518        display: block;
519        text-decoration: none;
520        color: inherit;
521        transition: transform 250ms cubic-bezier(0.2, 0, 0, 1);
522    }
523    .dg-guide:hover { transform: translateY(-4px); }
524    .dg-guide__img {
525        height: 11.25rem;
526        border-radius: var(--radius-card);
527        overflow: hidden;
528        background: var(--ds-glass-surface);
529    }
530    .dg-guide__img img { display: block; width: 100%; height: 100%; object-fit: cover; }
531    .dg-guide .ds-heading {
532        margin-top: 1.125rem;
533        font-size: var(--ds-text-lg);
534        line-height: 1.35;
535        text-wrap: balance;
536    }
537    .dg-guide__more {
538        margin-top: 0.75rem;
539        font-family: var(--font-plain);
540        font-size: var(--text-body-medium);
541        font-weight: 500;
542        color: var(--color-primary);
543    }
544    .dg-guide:hover .dg-guide__more { color: var(--color-accent-primary-soft); }
545    .dg-guides__all { margin-top: 2.25rem; text-align: center; }
546    .dg-guides__all .ds-btn { border: var(--border-thin) solid color-mix(in srgb, var(--color-neutral-white) 14%, transparent); }
547    .dg-guides__all .ds-btn:hover { border-color: var(--color-primary); color: var(--color-accent-primary-soft); background: transparent; }
548
549    /* Timer presets — card-free interval strip */
550    .dg-timer {
551        list-style: none;
552        margin: 3.5rem 0 0;
553        padding: 0;
554        display: grid;
555        grid-template-columns: repeat(auto-fit, minmax(min(10.5rem, 100%), 1fr));
556        border-top: var(--border-thin) solid var(--ds-glass-border);
557        border-bottom: var(--border-thin) solid var(--ds-glass-border);
558    }
559    .dg-timer__item {
560        display: flex;
561        flex-direction: column;
562        gap: var(--space-xs);
563        padding: 1.75rem var(--space-lg);
564        border-right: var(--border-thin) solid color-mix(in srgb, var(--color-neutral-white) 8%, transparent);
565    }
566    .dg-timer__item:last-child { border-right: none; }
567    .dg-timer__time {
568        font-family: var(--font-brand);
569        font-size: 2.25rem;
570        font-weight: 700;
571        line-height: 1;
572        color: var(--color-primary);
573        font-variant-numeric: tabular-nums;
574    }
575    .dg-timer__label {
576        font-family: var(--font-plain);
577        font-size: var(--text-label-small);
578        font-weight: 500;
579        text-transform: uppercase;
580        letter-spacing: 0.14em;
581        color: var(--color-on-surface);
582    }
583    #timer .dg-cta-row { margin-top: 2.5rem; }
584
585    /* FAQ — native <details> */
586    .dg-faq {
587        max-width: 48rem;
588        margin: 3rem auto 0;
589        border-top: var(--border-thin) solid var(--ds-glass-border);
590    }
591    .dg-faq__item { border-bottom: var(--border-thin) solid var(--ds-glass-border); }
592    .dg-faq__item summary {
593        display: flex;
594        justify-content: space-between;
595        align-items: center;
596        gap: var(--space-md);
597        padding: 1.25rem 0;
598        cursor: pointer;
599        list-style: none;
600        font-family: var(--font-plain);
601        font-size: var(--text-body-large);
602        font-weight: 500;
603        color: var(--color-on-surface);
604    }
605    .dg-faq__item summary::-webkit-details-marker { display: none; }
606    .dg-faq__item summary::after {
607        content: '+';
608        flex-shrink: 0;
609        font-size: 1.5rem;
610        line-height: 1;
611        color: var(--color-primary);
612        transition: transform 200ms cubic-bezier(0.2, 0, 0, 1);
613    }
614    .dg-faq__item[open] summary::after { transform: rotate(45deg); }
615    .dg-faq__item summary:hover { color: var(--color-neutral-white); }
616    .dg-faq__item > .ds-text { padding: 0 0 1.25rem; text-wrap: pretty; }
617
618    /* Final CTA — full-bleed centered */
619    .dg-cta {
620        position: relative;
621        padding: 7rem 0;
622        overflow: hidden;
623        border-top: var(--border-thin) solid color-mix(in srgb, var(--color-neutral-white) 6%, transparent);
624        background: radial-gradient(ellipse at 50% 0%, color-mix(in srgb, var(--color-primary) 14%, transparent) 0%, transparent 55%);
625    }
626    .dg-cta__inner {
627        position: relative;
628        max-width: 45rem;
629        margin: 0 auto;
630        padding: 0 var(--space-lg);
631        text-align: center;
632        display: flex;
633        flex-direction: column;
634        align-items: center;
635    }
636    .dg-cta__inner .ds-heading {
637        margin-top: var(--space-lg);
638        font-size: clamp(2rem, 4vw + 0.5rem, 3.25rem);
639        line-height: 1.08;
640        letter-spacing: -0.02em;
641        text-wrap: balance;
642    }
643    .dg-cta__lede {
644        margin-top: 1.25rem;
645        max-width: 32rem;
646        font-weight: 300;
647        text-wrap: pretty;
648    }
649    .dg-cta__note { margin-top: var(--space-lg); }
650</style>
651
652    
652<script>
653    // Lightweight queue so consumers can call dgAnalytics.track() before the SDK loads.
654    window.dgAnalytics = window.dgAnalytics || (function() {
655        var queue = [];
656        var ready = false;
657        function flush() {
658            if (!window.amplitude || !ready) return;
659            while (queue.length) {
660                var item = queue.shift();
661                try { window.amplitude.track(item.name, item.props || {}); } catch (e) {}
662            }
663        }
664        var api = {
665            track: function(name, props) {
666                if (ready && window.amplitude && typeof window.amplitude.track === 'function') {
667                    try { window.amplitude.track(name, props || {}); } catch (e) {}
668                } else {
669                    queue.push({ name: name, props: props });
670                }
671            },
672            // Conversions are also sent as a plain event so they show up in
673            // funnels alongside cta_click / page_view.
674            conversion: function(name, props) {
675                var payload = Object.assign({}, props || {}, { conversion: name });
676                var ctx = window.dgPageContext || {};
677                if (payload.page_name === undefined) payload.page_name = ctx.page_name || null;
678                if (payload.page_slug === undefined) payload.page_slug = ctx.page_slug || null;
679                api.track('conversion', payload);
680            },
681            _onReady: function() { ready = true; flush(); }
682        };
683        return api;
684    })();
685
686    // Per-page context — read from <meta name="dg:page-*"> tags injected by individual pages.
687    window.dgPageContext = (function() {
688        function meta(name) {
689            var el = document.querySelector('meta[name="' + name + '"]');
690            return el ? el.getAttribute('content') : null;
691        }
692        return {
693            page_name: meta('dg:page-name') || window.location.pathname.replace(/^\/+|\/+$/g, '') || 'home',
694            page_type: meta('dg:page-type') || 'page',
695            page_slug: meta('dg:page-slug') || null,
696        };
697    })();
698</script>
vendor: 1 bytes, line 698
698
699<script type="module">
700    import * as amplitude from 'https://cdn.jsdelivr.net/npm/@amplitude/[email protected]/+esm';
701    window.amplitude = amplitude;
702    amplitude.init("59d3bf7380bdb8ccaa2c9040fb43b2f0", undefined, {
703        serverZone: "US",
704        defaultTracking: {
705            attribution: true,
706            pageViews: false, // we send our own
707            sessions: true,
708            formInteractions: true,
709            fileDownloads: true,
710        },
711    });
712    
713    var ctx = window.dgPageContext;
714    amplitude.track('page_view', {
715        page_name: ctx.page_name,
716        page_type: ctx.page_type,
717        page_slug: ctx.page_slug,
718        page_path: window.location.pathname,
719        page_url: window.location.href,
720        referrer: document.referrer || null,
721    });
722    window.dgAnalytics._onReady();
723
724    // CTAs whose click is itself a conversion. Anything else tagged with
725    // data-cta still emits cta_click, just not a conversion.
726    var CONVERSION_CTAS = ['download_app', 'start_practice', 'subscribe'];
727
728    function flushNow() {
729        try { amplitude.flush(); } catch (e) {}
730    }
731    window.dgAnalytics.flush = flushNow;
732
733    // Last chance to deliver queued events when the tab goes away.
734    window.addEventListener('pagehide', function() {
735        try { amplitude.setTransport('beacon'); } catch (e) {}
736        flushNow();
737    });
738
739    // Outbound + CTA + conversion auto-tracking
740    document.addEventListener('click', function(e) {
741        var a = e.target.closest('a');
742        if (!a) return;
743        var href = a.getAttribute('href') || '';
744        if (!href || href.startsWith('#') || href.startsWith('mailto:') || href.startsWith('tel:')) return;
745
746        var isExternal = /^https?:\/\//i.test(href) && !href.includes(window.location.host);
747        if (isExternal) {
748            window.dgAnalytics.track('outbound_click', {
749                href: href,
750                text: (a.innerText || '').trim().slice(0, 120),
751                page_name: ctx.page_name,
752                page_slug: ctx.page_slug,
753            });
754        }
755        if (a.dataset && a.dataset.cta) {
756            window.dgAnalytics.track('cta_click', {
757                cta: a.dataset.cta,
758                cta_location: a.dataset.ctaLocation || null,
759                cta_destination: a.dataset.ctaDestination || href,
760                href: href,
761                page_name: ctx.page_name,
762                page_slug: ctx.page_slug,
763            });
764            if (CONVERSION_CTAS.indexOf(a.dataset.cta) !== -1) {
765                window.dgAnalytics.conversion(a.dataset.cta, {
766                    destination: a.dataset.ctaDestination || null,
767                    cta_location: a.dataset.ctaLocation || null,
768                    plan: a.dataset.ctaPlan || null,
769                });
770            }
771            // Same-tab CTAs unload the page before the next flush interval,
772            // so push the queued events out now.
773            if (!a.target || a.target === '_self') flushNow();
774        }
775    }, { passive: true });
776
777    document.addEventListener('submit', function(e) {
778        var form = e.target;
779        if (form && form.dataset && form.dataset.conversion) {
780            window.dgAnalytics.track('conversion', {
781                conversion: form.dataset.conversion,
782                page_name: ctx.page_name,
783                page_slug: ctx.page_slug,
784            });
785        }
786    }, { passive: true });
787
788    // Scroll depth — 25 / 50 / 75 / 100
789    (function() {
790        var marks = [25, 50, 75, 100];
791        var fired = {};
792        function onScroll() {
793            var doc = document.documentElement;
794            var max = doc.scrollHeight - doc.clientHeight;
795            if (max <= 0) return;
796            var pct = Math.min(100, Math.round((doc.scrollTop || window.scrollY) / max * 100));
797            marks.forEach(function(m) {
798                if (!fired[m] && pct >= m) {
799                    fired[m] = true;
800                    window.dgAnalytics.track('scroll_depth', {
801                        depth: m,
802                        page_name: ctx.page_name,
803                        page_slug: ctx.page_slug,
804                    });
805                }
806            });
807        }
808        window.addEventListener('scroll', onScroll, { passive: true });
809        onScroll();
810    })();
811</script>
811
812</head>
813<body class="ds-page">
814
815<header class="ds-navbar">
816    <input type="checkbox" id="ds-nav-toggle" class="ds-navbar__toggle-input" aria-hidden="true">
817
818    <div class="ds-container"><div class="ds-navbar__inner">
819            <a href="https://drawgestures.com" class="ds-navbar__brand" aria-label="DrawGestures — Home">
820                <img src="https://drawgestures.com/images/logo-mark.png" alt="" width="30" height="30">
821                <span class="ds-navbar__wordmark">DrawGestures</span>
822            </a>
823
824            <nav aria-label="Primary">
825                <ul class="ds-navbar__links">
826                                            <li>
827                            <a href="https://drawgestures.com/guides"
828                               class="ds-navbar__link "
829                                                              >Guides</a>
830                        </li>
831                                            <li>
832                            <a href="https://app.drawgestures.com/pricing"
833                               class="ds-navbar__link "
834                                data-cta="view_pricing" data-cta-location="navbar" data-cta-destination="web_app"                                >Pricing</a>
835                        </li>
836                                            <li>
837                            <a href="https://drawgestures.com/challenge"
838                               class="ds-navbar__link "
839                                                              >Challenge</a>
840                        </li>
841                                            <li>
842                            <a href="https://drawgestures.com/about"
843                               class="ds-navbar__link "
844                                                              >About</a>
845                        </li>
846                                    </ul>
847            </nav>
848
849            <div class="ds-navbar__cta ds-navbar__cta--desktop">
850                <a href="https://drawgestures.com/download" class="ds-btn ds-btn--primary ds-btn--sm" data-cta="download_nav" data-cta-location="navbar" data-cta-destination="download_page" >Download</a>
851            </div>
852
853            <label for="ds-nav-toggle" class="ds-navbar__toggle" role="button" aria-label="Toggle navigation menu">
854                <svg class="ds-navbar__icon-open" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><line x1="4" x2="20" y1="6" y2="6"/><line x1="4" x2="20" y1="12" y2="12"/><line x1="4" x2="20" y1="18" y2="18"/></svg>
855                <svg class="ds-navbar__icon-close" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M18 6 6 18"/><path d="m6 6 12 12"/></svg>
856            </label>
857        </div></div>
858
859    <nav class="ds-navbar__mobile" aria-label="Primary mobile">
860                    <a href="https://drawgestures.com/guides"
861               class="ds-navbar__link "
862                              >Guides</a>
863                    <a href="https://app.drawgestures.com/pricing"
864               class="ds-navbar__link "
865                data-cta="view_pricing" data-cta-location="navbar_mobile" data-cta-destination="web_app"                >Pricing</a>
866                    <a href="https://drawgestures.com/challenge"
867               class="ds-navbar__link "
868                              >Challenge</a>
869                    <a href="https://drawgestures.com/about"
870               class="ds-navbar__link "
871                              >About</a>
872                <a href="https://drawgestures.com/download" class="ds-btn ds-btn--primary ds-btn--sm ds-btn--full" data-cta="download_nav" data-cta-location="navbar_mobile" data-cta-destination="download_page" >Download</a>
873    </nav>
874</header>
875
876<main id="main-content">
877    
878
879<section class="dg-hero">
880    <div class="dg-hero__glow" aria-hidden="true"></div>
881    <div class="dg-hero__copy">
882        <span class="ds-chip ds-chip--accent ds-chip--md dg-anim">Free · online · iOS · Android · desktop</span>
883        <h1 class="ds-heading ds-heading--display dg-anim dg-anim--d1">The gesture drawing app with a <span class="ds-heading--gradient">built-in timer.</span></h1>
884        <p class="ds-text ds-text--xl ds-text--subtle dg-hero__lede dg-anim dg-anim--d2">Practise gesture drawing online or on your tablet. Pinterest, Google and premium cloud references — <strong>in one place</strong> —
885            with a drawing timer from 30 seconds to 10 minutes.
886            No login. No subscription wall. Just open it and draw.</p>
887        <div class="dg-cta-row dg-anim dg-anim--d3">
888            <a href="https://app.drawgestures.com" class="ds-btn ds-btn--primary ds-btn--lg" data-cta="start_practice" data-cta-location="home_hero" data-cta-destination="web_app" ><svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true">
889            <path d="M8 5.5l10 6.5-10 6.5V5.5z"/>
890        </svg>
891                        Start drawing online</a>
892            <a href="https://drawgestures.com/download" class="ds-btn ds-btn--secondary ds-btn--lg" data-cta="download_app" data-cta-location="home_hero" data-cta-destination="download_page" ><svg width="17" height="17" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
893            <path d="M12 3v12m0 0l-4.5-4.5M12 15l4.5-4.5M4 20h16"/>
894        </svg>
895                        Download the app</a>
896        </div>
897        <div class="dg-platforms dg-anim dg-anim--d3b">
898            <a href="https://drawgestures.com/download" class="dg-platform" title="Download for iPhone &amp; iPad"
899                data-cta="download_app" data-cta-location="home_hero_platforms" data-cta-destination="download_page" data-platform="ios">
900                <svg width="15" height="15" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true">
901            <path d="M16.3 12.8c0-2.2 1.8-3.2 1.9-3.3-1-1.5-2.6-1.7-3.2-1.7-1.4-.1-2.7.8-3.4.8-.7 0-1.8-.8-2.9-.8-1.5 0-2.9.9-3.7 2.2-1.6 2.7-.4 6.8 1.1 9 .8 1.1 1.7 2.3 2.8 2.3 1.1 0 1.6-.7 2.9-.7 1.3 0 1.7.7 2.9.7 1.2 0 1.9-1.1 2.7-2.2.8-1.2 1.2-2.4 1.2-2.5-.1 0-2.3-.9-2.3-3.8zM14.2 5.7c.6-.8 1-1.8.9-2.9-.9 0-2 .6-2.6 1.4-.6.7-1.1 1.8-.9 2.8 1 .1 2-.5 2.6-1.3z"/>
902        </svg>
903                        iOS
904            </a>
905            <a href="https://drawgestures.com/download" class="dg-platform" title="Download for Android"
906                data-cta="download_app" data-cta-location="home_hero_platforms" data-cta-destination="download_page" data-platform="android">
907                <svg width="15" height="15" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true">
908            <path d="M6 9.5h12v8.2c0 .7-.6 1.3-1.3 1.3H15v2.4c0 .8-.6 1.4-1.4 1.4s-1.4-.6-1.4-1.4V19h-1.4v2.4c0 .8-.6 1.4-1.4 1.4S8 22.2 8 21.4V19H7.3c-.7 0-1.3-.6-1.3-1.3V9.5zM3.6 9.4c.8 0 1.4.6 1.4 1.4v4.7c0 .8-.6 1.4-1.4 1.4s-1.4-.6-1.4-1.4v-4.7c0-.8.6-1.4 1.4-1.4zm16.8 0c.8 0 1.4.6 1.4 1.4v4.7c0 .8-.6 1.4-1.4 1.4s-1.4-.6-1.4-1.4v-4.7c0-.8.6-1.4 1.4-1.4zM15.6 2.6l1.1-1.9c.1-.2 0-.4-.1-.5-.2-.1-.4 0-.5.2l-1.1 2c-.9-.4-1.9-.6-3-.6s-2.1.2-3 .6l-1.1-2c-.1-.2-.3-.3-.5-.2-.2.1-.2.3-.1.5l1.1 1.9C6.4 3.8 5 5.8 5 8.1h14c0-2.3-1.4-4.3-3.4-5.5zM9.3 5.9c-.4 0-.7-.3-.7-.7s.3-.7.7-.7.7.3.7.7-.3.7-.7.7zm5.4 0c-.4 0-.7-.3-.7-.7s.3-.7.7-.7.7.3.7.7-.3.7-.7.7z"/>
909        </svg>
910                        Android
911            </a>
912            <a href="https://drawgestures.com/download" class="dg-platform" title="Download for Windows"
913                data-cta="download_app" data-cta-location="home_hero_platforms" data-cta-destination="download_page" data-platform="windows">
914                <svg width="15" height="15" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true">
915            <path d="M3 5.6l7.6-1v7.1H3V5.6zm0 12.8l7.6 1v-7H3v6zm8.6 1.2L22 21V12.7h-10.4v6.9zm0-15.2v7.3H22V3l-10.4 1.4z"/>
916        </svg>
917                        Windows
918            </a>
919            <a href="https://drawgestures.com/download" class="dg-platform" title="Download for Mac"
920                data-cta="download_app" data-cta-location="home_hero_platforms" data-cta-destination="download_page" data-platform="macos">
921                <svg width="15" height="15" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true">
922            <path d="M16.3 12.8c0-2.2 1.8-3.2 1.9-3.3-1-1.5-2.6-1.7-3.2-1.7-1.4-.1-2.7.8-3.4.8-.7 0-1.8-.8-2.9-.8-1.5 0-2.9.9-3.7 2.2-1.6 2.7-.4 6.8 1.1 9 .8 1.1 1.7 2.3 2.8 2.3 1.1 0 1.6-.7 2.9-.7 1.3 0 1.7.7 2.9.7 1.2 0 1.9-1.1 2.7-2.2.8-1.2 1.2-2.4 1.2-2.5-.1 0-2.3-.9-2.3-3.8zM14.2 5.7c.6-.8 1-1.8.9-2.9-.9 0-2 .6-2.6 1.4-.6.7-1.1 1.8-.9 2.8 1 .1 2-.5 2.6-1.3z"/>
923        </svg>
924                        macOS
925            </a>
926        </div>
927        <div class="dg-rating dg-anim dg-anim--d4">
928            <span class="dg-stars" aria-hidden="true">★★★★★</span>
929            <span>4.6 · 2,100+ reviews</span>
930            <span class="dg-rating__sep">·</span>
931            <span>iOS · Android · Tablet</span>
932        </div>
933    </div>
934    <div class="dg-hero__stage">
935        <div class="dg-phone dg-anim dg-anim--d5">
936            <img src="https://drawgestures.com/images/app_home_page.png"
937                 alt="DrawGestures app — Practice Session screen"
938                 fetchpriority="high">
939        </div>
940    </div>
941    <div class="dg-hero__rule" aria-hidden="true"></div>
942</section>
943
944
945<section class="ds-section--lg dg-sec" id="about"><div class="ds-container"><div class="dg-section-head dg-about__copy" data-reveal>
946            <span class="dg-eyebrow">About</span>
947            <h2 class="ds-heading ds-heading--xl">A free gesture drawing app for <span class="ds-heading--gradient">gesture &amp; figure</span> practice.</h2>
948            <p class="ds-text ds-text--lg ds-text--subtle"><strong class="dg-strong">DrawGestures</strong> brings Pinterest, Google and premium cloud libraries together, provides a distraction-free viewer with timers, and lets you sketch on top of references on tablets and desktops.</p>
949            <p class="ds-text ds-text--lg ds-text--subtle">It's the warm-up most pro animators run before any longer figure study — and the timer is the entire skill.</p>
950        </div>
951
952        <div class="dg-facts" data-reveal>
953            <div>
954                <p class="dg-facts__label">Sign-up</p>
955                <p class="dg-facts__value">No login required to start a timed session.</p>
956            </div>
957            <div>
958                <p class="dg-facts__label">Devices</p>
959                <p class="dg-facts__value">Tablet-friendly, lightweight UI. iOS, Android, tablet, desktop.</p>
960            </div>
961            <div>
962                <p class="dg-facts__label">Homepage</p>
963                <p class="dg-facts__value"><span class="ds-text ds-text--md ds-text--mono">drawgestures.com</span>
964</p>
965            </div>
966            <div>
967                <p class="dg-facts__label">Price</p>
968                <p class="dg-facts__value">Free tier · Pro from $2.99 / month.</p>
969            </div>
970        </div>
971
972        <div class="dg-gdata" data-reveal data-reveal-delay="100">
973            <h3 class="ds-heading ds-heading--sm">Why we request Google data.</h3>
974            <p class="ds-text ds-text--md ds-text--muted dg-gdata__intro">Some features use your Google account to improve your experience, for example:</p>
975            <div class="dg-gdata__grid">
976                <div class="dg-gdata__item">
977                    <span class="dg-gdata__ix">i</span>
978                    <p class="ds-text ds-text--md ds-text--muted"><em>Sign in with Google</em> — sync preferences across devices.</p>
979                </div>
980                <div class="dg-gdata__item">
981                    <span class="dg-gdata__ix">ii</span>
982                    <p class="ds-text ds-text--md ds-text--muted"><em>Google Images search</em> — fetch public reference thumbnails.</p>
983                </div>
984                <div class="dg-gdata__item">
985                    <span class="dg-gdata__ix">iii</span>
986                    <p class="ds-text ds-text--md ds-text--muted"><em>Analytics</em> — understand anonymous usage and improve the app.</p>
987                </div>
988            </div>
989            <p class="ds-text ds-text--sm ds-text--muted dg-gdata__legal">We only request the minimum necessary permissions and do not sell your data. Learn more in our <a href="https://drawgestures.com/privacy">Privacy Policy</a> · <a href="https://drawgestures.com/terms">Terms of Service</a>.</p>
990        </div></div></section>
991
992
993<section class="ds-section--lg dg-sec" id="features"><div class="ds-container"><div class="dg-section-head" data-reveal>
994            <span class="dg-eyebrow">Features</span>
995            <h2 class="ds-heading ds-heading--xl">Everything you need for <span class="ds-heading--gradient">better practice.</span></h2>
996            <p class="ds-text ds-text--lg ds-text--subtle">Curated libraries, a distraction-free viewer, drawing tools that get out of your way, and rock-solid tablet support. Six things, done well, instead of fifty done badly.</p>
997        </div>
998
999        <div class="dg-features">
1000                            <div class="dg-feature" data-reveal data-reveal-delay="0">
1001                    <div class="dg-feature__illo  dg-feature__illo--logo ">
1002                                                    <svg class="sk-icon sk-icon--pinterest" width="76" height="76" viewB
1002ox="0 0 24 24" fill="#E60023" aria-hidden="true">
1003            <path d="M12 0C5.373 0 0 5.372 0 12c0 5.084 3.163 9.426 7.627 11.174-.105-.949-.2-2.405.042-3.441.218-.937 1.407-5.965 1.407-5.965s-.359-.719-.359-1.782c0-1.668.967-2.914 2.171-2.914 1.023 0 1.518.769 1.518 1.69 0 1.029-.655 2.568-.994 3.995-.283 1.194.599 2.169 1.777 2.169 2.133 0 3.772-2.249 3.772-5.495 0-2.873-2.064-4.882-5.012-4.882-3.414 0-5.418 2.561-5.418 5.207 0 1.031.397 2.138.893 2.738a.36.36 0 0 1 .083.345l-.333 1.36c-.053.22-.174.267-.402.161-1.499-.698-2.436-2.889-2.436-4.649 0-3.785 2.75-7.262 7.929-7.262 4.163 0 7.398 2.967 7.398 6.931 0 4.136-2.607 7.464-6.227 7.464-1.216 0-2.359-.632-2.75-1.378l-.748 2.853c-.271 1.043-1.002 2.35-1.492 3.146C9.57 23.812 10.763 24 12 24c6.627 0 12-5.373 12-12S18.627 0 12 0z"/>
1004        </svg>
1005                                                    </div>
1006                    <div class="dg-feature__head">
1007                        <span class="dg-feature__num">01</span>
1008                        <h3 class="ds-heading ds-heading--sm"><em>Pinterest</em> library</h3>
1009                    </div>
1010                    <p class="ds-text ds-text--md ds-text--muted">Browse and stream poses directly from any Pinterest board. Boards refresh; your library stays fresh forever.</p>
1011                </div>
1012                            <div class="dg-feature" data-reveal data-reveal-delay="90">
1013                    <div class="dg-feature__illo  dg-feature__illo--logo ">
1014                                                    <svg class="sk-icon sk-icon--google-drive" width="76" height="76" viewBox="0 0 87.3 78" fill="none" aria-hidden="true">
1015            <path d="M6.6 66.85l3.85 6.65c.8 1.4 1.95 2.5 3.3 3.3l13.75-23.8H0c0 1.55.4 3.1 1.2 4.5z" fill="#0066DA"/>
1016            <path d="M43.65 25L29.9 1.2c-1.35.8-2.5 1.9-3.3 3.3L1.2 48.5A9.06 9.06 0 0 0 0 53h27.5z" fill="#00AC47"/>
1017            <path d="M73.55 76.8c1.35-.8 2.5-1.9 3.3-3.3l1.6-2.75 7.65-13.25c.8-1.4 1.2-2.95 1.2-4.5H59.798l5.852 11.5z" fill="#EA4335"/>
1018            <path d="M43.65 25L57.4 1.2C56.05.4 54.5 0 52.9 0H34.4c-1.6 0-3.15.45-4.5 1.2z" fill="#00832D"/>
1019            <path d="M59.8 53H27.5L13.75 76.8c1.35.8 2.9 1.2 4.5 1.2h50.8c1.6 0 3.15-.45 4.5-1.2z" fill="#2684FC"/>
1020            <path d="M73.4 26.5L60.7 4.5c-.8-1.4-1.95-2.5-3.3-3.3L43.65 25l16.15 28h27.45c0-1.55-.4-3.1-1.2-4.5z" fill="#FFBA00"/>
1021        </svg>
1022                                                    </div>
1023                    <div class="dg-feature__head">
1024                        <span class="dg-feature__num">02</span>
1025                        <h3 class="ds-heading ds-heading--sm"><em>Google</em> library</h3>
1026                    </div>
1027                    <p class="ds-text ds-text--md ds-text--muted">Quickly search Google Images for references without leaving the app. Thumbnails fetched on demand.</p>
1028                </div>
1029                            <div class="dg-feature" data-reveal data-reveal-delay="0">
1030                    <div class="dg-feature__illo ">
1031                                                    <img src="https://drawgestures.com/images/illustrations/home_feature_cloud.webp" alt="" loading="lazy" decoding="async">
1032                                            </div>
1033                    <div class="dg-feature__head">
1034                        <span class="dg-feature__num">03</span>
1035                        <h3 class="ds-heading ds-heading--sm">Premium <em>cloud</em> library</h3>
1036                    </div>
1037                    <p class="ds-text ds-text--md ds-text--muted">Curated, ready-to-draw collections from our cloud. Always available, always fresh, no setup required.</p>
1038                </div>
1039                            <div class="dg-feature" data-reveal data-reveal-delay="90">
1040                    <div class="dg-feature__illo ">
1041                                                    <img src="https://drawgestures.com/images/illustrations/home_feature_draw_on_top.webp" alt="" loading="lazy" decoding="async">
1042                                            </div>
1043                    <div class="dg-feature__head">
1044                        <span class="dg-feature__num">04</span>
1045                        <h3 class="ds-heading ds-heading--sm">Draw on <em>top of image</em></h3>
1046                    </div>
1047                    <p class="ds-text ds-text--md ds-text--muted">Sketch rhythms and landmarks right on the reference with lightweight tools — pen, eraser, opacity, undo.</p>
1048                </div>
1049                            <div class="dg-feature" data-reveal data-reveal-delay="180">
1050                    <div class="dg-feature__illo ">
1051                                                    <img src="https://drawgestures.com/images/illustrations/home_feature_tablet.webp" alt="" loading="lazy" decoding="async">
1052                                            </div>
1053                    <div class="dg-feature__head">
1054                        <span class="dg-feature__num">05</span>
1055                        <h3 class="ds-heading ds-heading--sm"><em>Tablet</em> support</h3>
1056                    </div>
1057                    <p class="ds-text ds-text--md ds-text--muted">Optimised for iPad and Android tablets. Pen input, palm rejection, keyboard shortcuts. Works on desktop too.</p>
1058                </div>
1059                            <div class="dg-feature" data-reveal data-reveal-delay="0">
1060                    <div class="dg-feature__illo ">
1061                                                    <img src="https://drawgestures.com/images/illustrations/home_feature_timer.webp" alt="" loading="lazy" decoding="async">
1062                                            </div>
1063                    <div class="dg-feature__head">
1064                        <span class="dg-feature__num">06</span>
1065                        <h3 class="ds-heading ds-heading--sm">Gesture drawing <em>timer</em></h3>
1066                    </div>
1067                    <p class="ds-text ds-text--md ds-text--muted">A drawing timer from 30-second gestures to long-form figure work, with auto-advance and shuffle. The pressure is the practice.</p>
1068                </div>
1069                    </div></div></section>
1070
1071
1072<section class="ds-section--lg dg-sec" id="timer"><div class="ds-container"><div class="dg-section-head" data-reveal>
1073            <span class="dg-eyebrow">Drawing timer</span>
1074            <h2 class="ds-heading ds-heading--xl">A gesture drawing timer that <span class="ds-heading--gradient">keeps you honest.</span></h2>
1075            <p class="ds-text ds-text--lg ds-text--subtle">The timer is the skill. It caps every pose, advances to the next reference on its own, and stops you fussing over details. Pick a preset, press start, draw.</p>
1076        </div>
1077
1078        <ol class="dg-timer" data-reveal>
1079                            <li class="dg-timer__item">
1080                    <span class="dg-timer__time">30s</span>
1081                    <span class="dg-timer__label">Warm-up</span>
1082                    <span class="ds-text ds-text--sm ds-text--muted">Line of action and commitment. Always start here.</span>
1083                </li>
1084                            <li class="dg-timer__item">
1085                    <span class="dg-timer__time">1m</span>
1086                    <span class="dg-timer__label">Daily bulk</span>
1087                    <span class="ds-text ds-text--sm ds-text--muted">Line of action plus rhythm through the pose.</span>
1088                </li>
1089                            <li class="dg-timer__item">
1090                    <span class="dg-timer__time">2m</span>
1091                    <span class="dg-timer__label">Masses</span>
1092                    <span class="ds-text ds-text--sm ds-text--muted">Add the ribcage and pelvis once you are warm.</span>
1093                </li>
1094                            <li class="dg-timer__item">
1095                    <span class="dg-timer__time">5m</span>
1096                    <span class="dg-timer__label">Block-in</span>
1097                    <span class="ds-text ds-text--sm ds-text--muted">Light construction. Crosses into figure drawing.</span>
1098                </li>
1099                            <li class="dg-timer__item">
1100                    <span class="dg-timer__time">10m</span>
1101                    <span class="dg-timer__label">Long pose</span>
1102                    <span class="ds-text ds-text--sm ds-text--muted">Construction and anatomy. Save it for the end.</span>
1103                </li>
1104                    </ol>
1105
1106        <div class="dg-cta-row" data-reveal>
1107            <a href="https://app.drawgestures.com" class="ds-btn ds-btn--primary ds-btn--lg" data-cta="start_practice" data-cta-location="home_timer" data-cta-destination="web_app" ><svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true">
1108            <path d="M8 5.5l10 6.5-10 6.5V5.5z"/>
1109        </svg>
1110                        Open the timer in your browser</a>
1111            <a href="https://drawgestures.com/guides/drawing-timer" class="ds-btn ds-btn--ghost ds-btn--lg" >How to use a drawing timer →</a>
1112        </div></div></section>
1113
1114
1115<section class="ds-section--lg dg-sec dg-reviews" id="reviews"><div class="dg-section-head" data-reveal>
1116        <span class="dg-eyebrow">From the field</span>
1117        <h2 class="ds-heading ds-heading--xl">What <span class="ds-heading--gradient">artists</span> are saying.</h2>
1118        <div class="dg-reviews__avg">
1119            <span class="dg-reviews__num" id="dg-rating-num">4.6</span>
1120            <span class="ds-text ds-text--md ds-text--muted"><span class="dg-stars" aria-hidden="true">★★★★★</span> · <span id="dg-rating-count">2,100+</span> reviews</span>
1121        </div>
1122    </div>
1123
1124    <div class="dg-marquee">
1125        <div class="dg-marquee__track">
1126                            <div class="dg-marquee__copy " >
1127                                            <div class="dg-review">
1128                            <span class="dg-stars" aria-hidden="true">★★★★★</span>
1129                            <blockquote>Great app for timed gesture drawing sessions.</blockquote>
1130                            <div class="ds-text ds-text--sm ds-text--muted">Google Play · v3.7.1 · 2023</div>
1131                        </div>
1132                                            <div class="dg-review">
1133                            <span class="dg-stars" aria-hidden="true">★★★★★</span>
1134                            <blockquote>Pinterest feature works perfectly now! Best app for gesture drawing.</blockquote>
1135                            <div class="ds-text ds-text--sm ds-text--muted">Google Play · v3.6.4 · 2019</div>
1136                        </div>
1137                                            <div class="dg-review">
1138                            <span class="dg-stars" aria-hidden="true">★★★★★</span>
1139                            <blockquote>There&#039;s a great collection of images of all kinds already in the app. Offline works too.</blockquote>
1140                            <div class="ds-text ds-text--sm ds-text--muted">Google Play · v6.3.2 · 2023</div>
1141                        </div>
1142                                            <div class="dg-review">
1143                            <span class="dg-stars" aria-hidden="true">★★★★<span class="dg-stars--dim">★</span></span>
1144                            <blockquote>Simple to use and functional. Great alternative if you can&#039;t be online 24/7.</blockquote>
1145                            <div class="ds-text ds-text--sm ds-text--muted">Community Feedback · 2023</div>
1146                        </div>
1147                                    </div>
1148                            <div class="dg-marquee__copy dg-marquee__copy--dup"  aria-hidden="true" >
1149                                            <div class="dg-review">
1150                            <span class="dg-stars" aria-hidden="true">★★★★★</span>
1151                            <blockquote>Great app for timed gesture drawing sessions.</blockquote>
1152                            <div class="ds-text ds-text--sm ds-text--muted">Google Play · v3.7.1 · 2023</div>
1153                        </div>
1154                                            <div class="dg-review">
1155                            <span class="dg-stars" aria-hidden="true">★★★★★</span>
1156                            <blockquote>Pinterest feature works perfectly now! Best app for gesture drawing.</blockquote>
1157                            <div class="ds-text ds-text--sm ds-text--muted">Google Play · v3.6.4 · 2019</div>
1158                        </div>
1159                                            <div class="dg-review">
1160                            <span class="dg-stars" aria-hidden="true">★★★★★</span>
1161                            <blockquote>There&#039;s a great collection of images of all kinds already in the app. Offline works too.</blockquote>
1162                            <div class="ds-text ds-text--sm ds-text--muted">Google Play · v6.3.2 · 2023</div>
1163                        </div>
1164                                            <div class="dg-review">
1165                            <span class="dg-stars" aria-hidden="true">★★★★<span class="dg-stars--dim">★</span></span>
1166                            <blockquote>Simple to use and functional. Great alternative if you can&#039;t be online 24/7.</blockquote>
1167                            <div class="ds-text ds-text--sm ds-text--muted">Community Feedback · 2023</div>
1168                        </div>
1169                                    </div>
1170                    </div>
1171    </div></section>
1172
1173
1174<section class="ds-section--lg dg-sec" id="guides"><div class="ds-container"><div class="dg-section-head" data-reveal>
1175            <span class="dg-eyebrow">Guides</span>
1176            <h2 class="ds-heading ds-heading--xl">Learn the craft, <span class="ds-heading--gradient">then practise it.</span></h2>
1177            <p class="ds-text ds-text--lg ds-text--subtle">Free written guides on gesture drawing — what it is, how to practise, and the drills that actually work.</p>
1178        </div>
1179
1180        <div class="dg-guides">
1181                            <a href="https://drawgestures.com/guides/what-is-gesture-drawing" class="dg-guide" data-reveal data-reveal-delay="0">
1182                    <div class="dg-guide__img">
1183                        <img src="https://drawgestures.com/images/illustrations/guide-what-is-gesture-drawing.webp" alt="" loading="lazy" decoding="async">
1184                    </div>
1185                    <h3 class="ds-heading ds-heading--xs">What Is Gesture Drawing? A Complete Beginner&#039;s Guide</h3>
1186                    <div class="dg-guide__more">Read the guide →</div>
1187                </a>
1188                            <a href="https://drawgestures.com/guides/gesture-drawing-exercises" class="dg-guide" data-reveal data-reveal-delay="90">
1189                    <div class="dg-guide__img">
1190                        <img src="https://drawgestures.com/images/illustrations/guide-gesture-drawing-exercises.webp" alt="" loading="lazy" decoding="async">
1191                    </div>
1192                    <h3 class="ds-heading ds-heading--xs">Gesture Drawing Exercises That Actually Work (10 Drills)</h3>
1193                    <div class="dg-guide__more">Read the guide →</div>
1194                </a>
1195                            <a href="https://drawgestures.com/guides/gesture-drawing-tips-for-beginners" class="dg-guide" data-reveal data-reveal-delay="180">
1196                    <div class="dg-guide__img">
1197                        <img src="https://drawgestures.com/images/illustrations/guide-gesture-drawing-tips-for-beginners.webp" alt="" loading="lazy" decoding="async">
1198                    </div>
1199                    <h3 class="ds-heading ds-heading--xs">Gesture Drawing Tips for Beginners (and 7 Mistakes to Avoid)</h3>
1200                    <div class="dg-guide__more">Read the guide →</div>
1201                </a>
1202                    </div>
1203
1204        <div class="dg-guides__all">
1205            <a href="https://drawgestures.com/guides" class="ds-btn ds-btn--ghost ds-btn--md" >Browse all guides →</a>
1206        </div></div></section>
1207
1208
1209<section class="ds-section--lg dg-sec" id="faq"><div class="ds-container"><div class="dg-section-head" data-reveal>
1210            <span class="dg-eyebrow">FAQ</span>
1211            <h2 class="ds-heading ds-heading--xl">Gesture drawing online, <span class="ds-heading--gradient">answered.</span></h2>
1212        </div>
1213
1214        <div class="dg-faq" data-reveal>
1215                            <details class="dg-faq__item">
1216                    <summary>What is gesture drawing?</summary>
1217                    <p class="ds-text ds-text--md ds-text--muted">Gesture drawing is a quick sketch, usually 30 seconds to 2 minutes, that captures the movement, energy and rhythm of a pose rather than 
1217its details. Artists and animators use it as a daily warm-up and as the foundation of figure drawing.</p>
1218                </details>
1219                            <details class="dg-faq__item">
1220                    <summary>Is DrawGestures a free gesture drawing app?</summary>
1221                    <p class="ds-text ds-text--md ds-text--muted">Yes. The drawing timer, timed sessions and curated reference poses are free on the web, iOS and Android, with no sign-up and no ads. Pro, from $2.99 a month, adds Pinterest and cloud imports, custom intervals and extra session modes.</p>
1222                </details>
1223                            <details class="dg-faq__item">
1224                    <summary>Can I practise gesture drawing online in my browser?</summary>
1225                    <p class="ds-text ds-text--md ds-text--muted">Yes. Open the DrawGestures web app, pick a reference library, set the drawing timer and start drawing. Nothing to install. The same sessions are available in the iOS, Android and desktop apps.</p>
1226                </details>
1227                            <details class="dg-faq__item">
1228                    <summary>What timer intervals should I use for gesture drawing?</summary>
1229                    <p class="ds-text ds-text--md ds-text--muted">Start with ten 30-second poses to warm up, then move to 1 or 2 minutes for the bulk of the session. Anything from 5 minutes up is closer to figure drawing than gesture drawing.</p>
1230                </details>
1231                            <details class="dg-faq__item">
1232                    <summary>Does the gesture drawing timer advance automatically?</summary>
1233                    <p class="ds-text ds-text--md ds-text--muted">Yes. When the interval ends the next reference image appears on its own, so you never stop to click. Turn on shuffle to see poses in random order.</p>
1234                </details>
1235                            <details class="dg-faq__item">
1236                    <summary>Which devices does DrawGestures work on?</summary>
1237                    <p class="ds-text ds-text--md ds-text--muted">Any modern browser, iPhone and iPad, Android phones and tablets, Windows and macOS. The app is built for tablets, with pen input and drawing on top of the reference.</p>
1238                </details>
1239                    </div></div></section>
1240
1241
1242<section id="download" class="dg-cta" aria-labelledby="dg-cta-heading">
1243    <div class="dg-cta__inner" data-reveal>
1244        <span class="ds-chip ds-chip--accent ds-chip--sm">Ready · Stop reading · Start drawing</span>
1245        <h2 class="ds-heading ds-heading--xl" id="dg-cta-heading">Ready to improve <span class="ds-heading--gradient">your gestures?</span></h2>
1246        <p class="ds-text ds-text--lg ds-text--subtle dg-cta__lede">Start a focused session in seconds — no sign-up required. Free tier ships with timed sessions, reference images and progress tracking.</p>
1247        <div class="dg-cta-row">
1248            <a href="https://apps.apple.com/us/app/draw-gestures-figure-drawing/id1552057070" class="ds-btn ds-btn--primary ds-btn--lg" rel="noopener" target="_blank" data-cta="download_app" data-cta-location="home_footer_cta" data-cta-destination="ios" ><svg class="sk-icon sk-icon--apple" width="18" height="18" viewBox="0 0 32 38" fill="currentColor" aria-hidden="true">
1249            <path d="M26.2264 20.0113C26.1825 15.2574 30.2187 12.9446 30.4033 12.8369C28.1174 9.5875 24.5744 9.14352 23.3293 9.10812C20.3536 8.8028 17.4672 10.8442 15.9513 10.8442C14.4052 10.8442 12.0709 9.13762 9.55512 9.18777C6.31768 9.23645 3.28902 11.064 1.62794 13.9019C-1.80011 19.6883 0.756555 28.1917 4.04089 32.8689C5.68381 35.1596 7.60358 37.7172 10.1164 37.6272C12.5747 37.5284 13.493 36.0991 16.4596 36.0991C19.399 36.0991 20.2613 37.6272 22.8241 37.5697C25.4624 37.5284 27.1235 35.2687 28.7089 32.9574C30.6075 30.3319 31.37 27.7462 31.4002 27.6135C31.3382 27.5928 26.2763 25.7092 26.2264 20.0113Z"/>
1250            <path d="M21.3854 6.03127C22.7076 4.4191 23.6122 2.22577 23.3611 0C21.4474 0.0826 19.0541 1.29063 17.6759 2.8674C16.4566 4.25685 15.3674 6.53425 15.6488 8.67595C17.7985 8.8323 20.0057 7.
125061837 21.3854 6.03127Z"/>
1251        </svg>
1252                        App Store</a>
1253            <a href="https://play.google.com/store/apps/details?id=com.darkmat13r.gesturedrawing&amp;amp;hl=en" class="ds-btn ds-btn--secondary ds-btn--lg" rel="noopener" target="_blank" data-cta="download_app" data-cta-location="home_footer_cta" data-cta-destination="android" ><svg class="sk-icon sk-icon--google-play" width="18" height="18" viewBox="0 0 35 38" fill="none" aria-hidden="true">
1254            <path d="M0.700605 0.585646C0.256825 1.03921 0 1.74537 0 2.65986V35.2795C0 36.194 0.256825 36.9002 0.700605 37.3537L0.810134 37.4533L19.532 19.1817V18.7503L0.810134 0.478712L0.700605 0.585646Z" fill="url(#sk-gplay-a)"/>
1255            <path d="M25.7656 25.2753L19.532 19.1817V18.7503L25.7732 12.6567L25.9129 12.736L33.3042 16.842C35.4136 18.0072 35.4136 19.9247 33.3042 21.0974L25.9129 25.196L25.7656 25.2753Z" fill="url(#sk-gplay-b)"/>
1256            <path d="M25.9129 25.196L19.5319 18.966L0.700562 37.3537C1.40117 38.0728 2.54366 38.1594 3.8429 37.4404L25.9129 25.196Z" fill="url(#sk-gplay-c)"/>
1257            <path d="M25.9129 12.736L3.8429 0.491649C2.54366 -0.220038 1.40117 -0.133384 0.700562 0.585678L19.5319 18.966L25.9129 12.736Z" fill="url(#sk-gplay-d)"/>
1258            <defs>
1259                <linearGradient id="sk-gplay-a" x1="17.8697" y1="35.6192" x2="-6.87723" y2="10.2726" gradientUnits="userSpaceOnUse">
1260                    <stop stop-color="#00A0FF"/>
1261                    <stop offset="0.0066" stop-color="#00A1FF"/>
1262                    <stop offset="0.2601" stop-color="#00BEFF"/>
1263                    <stop offset="0.5122" stop-color="#00D2FF"/>
1264                    <stop offset="0.7604" stop-color="#00DFFF"/>
1265                    <stop offset="1" stop-color="#00E3FF"/>
1266                </linearGradient>
1267                <linearGradient id="sk-gplay-b" x1="36.051" y1="18.9639" x2="-0.504247" y2="18.9639" gradientUnits="userSpaceOnUse">
1268                    <stop stop-color="#FFE000"/>
1269                    <stop offset="0.4087" stop-color="#FFBD00"/>
1270                    <stop offset="0.7754" stop-color="#FFA500"/>
1271                    <stop offset="1" stop-color="#FF9C00"/>
1272                </linearGradient>
1273                <linearGradient id="sk-gplay-c" x1="22.4431" y1="15.5793" x2="-11.1157" y2="-18.7928" gradientUnits="userSpaceOnUse">
1274                    <stop stop-color="#FF3A44"/>
1275                    <stop offset="1" stop-color="#C31162"/>
1276                </linearGradient>
1277                <linearGradient id="sk-gplay-d" x1="-4.03969" y1="48.2061" x2="10.9459" y2="32.8576" gradientUnits="userSpaceOnUse">
1278                    <stop stop-color="#32A071"/>
1279                    <stop offset="0.0685" stop-color="#2DA771"/>
1280                    <stop offset="0.4762" stop-color="#15CF74"/>
1281                    <stop offset="0.8009" stop-color="#06E775"/>
1282                    <stop offset="1" stop-color="#00F076"/>
1283                </linearGradient>
1284            </defs>
1285        </svg>
1286                        Google Play</a>
1287            <a href="https://drawgestures.com/download" class="ds-btn ds-btn--ghost ds-btn--lg" data-cta="download_app" data-cta-location="home_footer_cta" data-cta-destination="download_page" >Smart download</a>
1288        </div>
1289        <p class="ds-text ds-text--sm ds-text--muted dg-cta__note">Free to start · No sign-up · iOS · Android · Tablet</p>
1290    </div>
1291</section>
1292
1293</main>
1294
1295<footer class="ds-footer">
1296    <div class="ds-container"><div class="ds-footer__grid">
1297            <div class="ds-footer__brand">
1298                <p class="ds-footer__wordmark">DrawGestures</p>
1299                <p class="ds-footer__tagline">Gesture drawing practice for artists — timed figure drawing sessions on iOS and Android.</p>
1300                <div class="ds-footer__socials">
1301                    <a href="https://www.instagram.com/drawgestures/" rel="noopener me" target="_blank" aria-label="DrawGestures on Instagram" title="Instagram">
1302                        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" aria-hidden="true"><rect x="3" y="3" width="18" height="18" rx="5"/><circle cx="12" cy="12" r="4"/><circle cx="17.5" cy="6.5" r="1" fill="currentColor" stroke="none"/></svg>
1303                    </a>
1304                    <a href="https://x.com/drawgestures" rel="noopener me" target="_blank" aria-label="DrawGestures on X" title="X">
1305                        <svg viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M17.53 3h3.02l-6.6 7.54L21.75 21h-5.9l-4.62-6.03L5.94 21H2.92l7.06-8.07L2.5 3h6.05l4.18 5.52L17.53 3Zm-1.06 16.2h1.67L7.6 4.71H5.81L16.47 19.2Z"/></svg>
1306                    </a>
1307                </div>
1308            </div>
1309
1310            <div>
1311                <p class="ds-footer__heading">Explore</p>
1312                <ul class="ds-footer__links">
1313                    <li><a href="https://drawgestures.com/about">About</a></li>
1314                    <li><a href="https://drawgestures.com/guides">Guides</a></li>
1315                    <li><a href="https://drawgestures.com/pricing">Pricing</a></li>
1316                    <li><a href="https://drawgestures.com/challenge">Challenge</a></li>
1317                </ul>
1318            </div>
1319
1320            <div>
1321                <p class="ds-footer__heading">Legal &amp; Help</p>
1322                <ul class="ds-footer__links">
1323                    <li><a href="https://drawgestures.com/privacy">Privacy Policy</a></li>
1324                    <li><a href="https://drawgestures.com/terms">Terms of Service</a></li>
1325                    <li><a href="https://drawgestures.com/refund">Refund Policy</a></li>
1326                    <li><a href="https://drawgestures.com/support">Support</a></li>
1327                </ul>
1328            </div>
1329
1330            <div>
1331                <p class="ds-footer__heading">Get the App</p>
1332                <div class="ds-footer__badges">
1333                    <a href="https://apps.apple.com/us/app/draw-gestures-figure-drawing/id1552057070" rel="noopener" target="_blank" aria-label="Download on the App Store">
1334                        <img src="https://drawgestures.com/images/app-store-badge.png" alt="Download on the App Store" loading="lazy">
1335                    </a>
1336                    <a href="https://play.google.com/store/apps/details?id=com.darkmat13r.gesturedrawing" rel="noopener" target="_blank" aria-label="Get it on Google Play">
1337                        <img src="https://drawgestures.com/images/google-play-badge.png" alt="Get it on Google Play" loading="lazy">
1338                    </a>
1339                </div>
1340            </div>
1341        </div>
1342
1343        <div class="ds-footer__bottom">
1344            <p class="ds-footer__copyright">&copy; 2026 Dark Matter. All rights reserved.</p>
1345            <p class="ds-footer__copyright">Made for artists, by artists.</p>
1346        </div></div>
1347</footer>
1348
1349<script>
1350(function () {
1351    if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) return;
1352    if (!('IntersectionObserver' in window)) return;
1353
1354    document.documentElement.classList.add('dg-js');
1355
1356    var revealed = document.querySelectorAll('[data-reveal]');
1357    var io = new IntersectionObserver(function (entries) {
1358        entries.forEach(function (entry) {
1359            if (!entry.isIntersecting) return;
1360            var el = entry.target;
1361            el.style.setProperty('--reveal-delay', (el.getAttribute('data-reveal-delay') || 0) + 'ms');
1362            el.classList.add('is-in');
1363            io.unobserve(el);
1364        });
1365    }, { threshold: 0.15 });
1366    revealed.forEach(function (el) { io.observe(el); });
1367
1368    var num = document.getElementById('dg-rating-num');
1369    var count = document.getElementById('dg-rating-count');
1370    var host = document.getElementById('reviews');
1371    if (!num || !host) return;
1372    var counted = false;
1373    var ioCount = new IntersectionObserver(function (entries) {
1374        if (counted || !entries.some(function (e) { return e.isIntersecting; })) return;
1375        counted = true;
1376        ioCount.disconnect();
1377        var t0 = performance.now(), dur = 1400;
1378        var tick = function (t) {
1379            var p = Math.min(1, (t - t0) / dur);
1380            var eased = 1 - Math.pow(1 - p, 3);
1381            num.textContent = (4.6 * eased).toFixed(1);
1382            if (count) count.textContent = p < 1 ? Math.round(2100 * eased).toLocaleString() : '2,100+';
1383            if (p < 1) requestAnimationFrame(tick);
1384        };
1385        requestAnimationFrame(tick);
1386    }, { threshold: 0.3 });
1387    ioCount.observe(host);
1388})();
1389</script>
1389
1390</body>
1391</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.