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 & 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 & 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 & 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 & 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 & 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 & 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 & 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'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'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'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'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'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;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 & 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">© 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.