PageSourceSearch

https://imagedownloaderpro.com/contact/

html imagedownloaderpro.com collected 2026-10-02 00:50:41 UTC 77,344 bytes, 929 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en" dir="ltr">
3<head>
4  
4<script src="../assets/js/idp-analytics.js"></script>
4
5  <meta charset="UTF-8" />
6<link rel="preload" href="../assets/fonts/google/3f5fbefcaebcac7125d9.woff2" as="font" type="font/woff2" crossorigin />
7<link rel="preload" href="../assets/fonts/google/345453b756128bd47a09.woff2" as="font" type="font/woff2" crossorigin />
8<style data-idp-text-fonts data-idp-font-profile="null">@font-face{font-family:'DM Mono';font-style:normal;font-weight:400;font-display:swap;src:url(../assets/fonts/google/d893bf46c88fc508ef4b.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face{font-family:'DM Mono';font-style:normal;font-weight:400;font-display:swap;src:url(../assets/fonts/google/54a123c13be845cb93c8.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face{font-family:'DM Mono';font-style:normal;font-weight:500;font-display:swap;src:url(../assets/fonts/google/325a111c24715281444f.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face{font-family:'DM Mono';font-style:normal;font-weight:500;font-display:swap;src:url(../assets/fonts/google/37479ee61710619a2506.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face{font-family:'DM Serif Display';font-style:italic;font-weight:400;font-display:swap;src:url(../assets/fonts/google/bcffbe5867f9234531ed.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face{font-family:'DM Serif Display';font-style:italic;font-weight:400;font-display:swap;src:url(../assets/fonts/google/b867c8dc88057cdaa685.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face{font-family:'DM Serif Display';font-style:normal;font-weight:400;font-display:swap;src:url(../assets/fonts/google/1c85e676902fc697475e.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face{font-family:'DM Serif Display';font-style:normal;font-weight:400;font-display:swap;src:url(../assets/fonts/google/3f5fbefcaebcac7125d9.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face{font-family:'Instrument Sans';font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(../assets/fonts/google/7f598d23186399824189.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face{font-family:'Instrument Sans';font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(../assets/fonts/google/345453b756128bd47a09.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face{font-family:'Instrument Sans';font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(../assets/fonts/google/7f598d23186399824189.woff2) format('woff2');
8unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face{font-family:'Instrument Sans';font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(../assets/fonts/google/345453b756128bd47a09.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face{font-family:'Instrument Sans';font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(../assets/fonts/google/7f598d23186399824189.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face{font-family:'Instrument Sans';font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(../assets/fonts/google/345453b756128bd47a09.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face{font-family:'Instrument Sans';font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(../assets/fonts/google/7f598d23186399824189.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face{font-family:'Instrument Sans';font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(../assets/fonts/google/345453b756128bd47a09.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}</style>
9<style data-idp-icon-fonts>/*!
10 * Font Awesome Free 6.5.1 by @fontawesome - https://fontawesome.com
11 * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
12 * Copyright 2023 Fonticons, Inc.
13 */
14.fa{font-family:var(--fa-style-family,"Font Awesome 6 Free");font-weight:var(--fa-style,900)}.fa,.fa-brands,.fa-classic,.fa-regular,.fa-sharp,.fa-solid,.fab,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:var(--fa-display,inline-block);font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.fa-classic,.fa-regular,.fa-solid,.far,.fas{font-family:"Font Awesome 6 Free"}.fa-brands,.fab{font-family:"Font Awesome 6 Brands"}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.08333em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.07143em;vertical-align:.05357em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.04167em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:var(--fa-li-margin,2.5em);padding-left:0}.fa-ul>li{position:relative}.fa-li{left:calc(var(--fa-li-width, 2em)*-1);position:absolute;text-align:center;width:var(--fa-li-width,2em);line-height:inherit}.fa-border{border-radius:var(--fa-border-radius,.1em);border:var(--fa-border-width,.08em) var(--fa-border-style,solid) var(--fa-border-color,#eee);padding:var(--fa-border-padding,.2em .25em .15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin,.3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin,.3em)}.fa-beat{-webkit-animation-name:fa-beat;animation-name:fa-beat;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-bounce{-webkit-animation-name:fa-bounce;animation-name:fa-bounce;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1))}.fa-fade{-webkit-animation-name:fa-fade;animation-name:fa-fade;-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-beat-fade,.fa-fade{-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s)}.fa-beat-fade{-webkit-animation-name:fa-beat-fade;animation-name:fa-beat-fade;-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-flip{-webkit-animation-name:fa-flip;animation-name:fa-flip;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-shake{-webkit-animation-name:fa-shake;animation-name:fa-shake;-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,linear);animation-timing-function:var(--fa-animation-timing,linear)}.fa-shake,.fa-spin{-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal)}
14.fa-spin{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-duration:var(--fa-animation-duration,2s);animation-duration:var(--fa-animation-duration,2s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,linear);animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin-reverse{--fa-animation-direction:reverse}.fa-pulse,.fa-spin-pulse{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,steps(8));animation-timing-function:var(--fa-animation-timing,steps(8))}@media (prefers-reduced-motion:reduce){.fa-beat,.fa-beat-fade,.fa-bounce,.fa-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{-webkit-animation-delay:-1ms;animation-delay:-1ms;-webkit-animation-duration:1ms;animation-duration:1ms;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-transition-delay:0s;transition-delay:0s;-webkit-transition-duration:0s;transition-duration:0s}}@-webkit-keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@-webkit-keyframes fa-bounce{0%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{-webkit-transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em))}64%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@keyframes fa-bounce{0%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{-webkit-transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em))}64%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@-webkit-keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@-webkit-keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@-webkit-keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0
14),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@-webkit-keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}.fa-rotate-by{-webkit-transform:rotate(var(--fa-rotate-angle,none));transform:rotate(var(--fa-rotate-angle,none))}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%;z-index:var(--fa-stack-z-index,auto)}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:var(--fa-inverse,#fff)}.fa-trash-alt:before,.fa-trash-can:before{content:"\f2ed"}.fa-angle-double-down:before,.fa-angles-down:before{content:"\f103"}.fa-bars:before,.fa-navicon:before{content:"\f0c9"}.fa-lightbulb:before{content:"\f0eb"}.fa-lock:before{content:"\f023"}.fa-plug:before{content:"\f1e6"}.fa-magic-wand-sparkles:before,.fa-wand-magic-sparkles:before{content:"\e2ca"}.fa-globe:before{content:"\f0ac"}.fa-star:before{content:"\f005"}.fa-repeat:before{content:"\f363"}.fa-random:before,.fa-shuffle:before{content:"\f074"}.fa-crown:before{content:"\f521"}.fa-rotate-back:before,.fa-rotate-backward:before,.fa-rotate-left:before,.fa-undo-alt:before{content:"\f2ea"}.fa-shield-alt:before,.fa-shield-halved:before{content:"\f3ed"}.fa-layer-group:before{content:"\f5fd"}.fa-filter:before{content:"\f0b0"}.fa-arrow-right:before{content:"\f061"}.fa-circle-question:before,.fa-question-circle:before{content:"\f059"}.fa-tags:before{content:"\f02c"}.fa-arrow-right-rotate:before,.fa-arrow-rotate-forward:before,.fa-arrow-rotate-right:before,.fa-redo:before{content:"\f01e"}.fa-arrow-left:before{content:"\f060"}.fa-table-cells-large:before,.fa-th-large:before{content:"\f009"}.fa-envelope:before{content:"\f0e0"}.fa-circle-info:before,.fa-info-circle:before{content:"\f05a"}.fa-ticket:before{content:"\f145"}.fa-images:before{content:"\f302"}.fa-download:before{content:"\f019"}.fa-eye-dropper-empty:before,.fa-eye-dropper:before,.fa-eyedropper:before{content:"\f1fb"}.fa-arrow-right-arrow-left:before,.fa-exchange:before{content:"\f0ec"}.fa-upload:before{content:"\f093"}.fa-bolt:before,.fa-zap:before{content:"\f0e7"}.fa-sun:before{content:"\f185"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-play:before{content:"\f04b"}.fa-magnifying-glass:before,.fa-search:before{content:"\f002"}.fa-chevron-down:before{content:"\f078"}.fa-copy:before{content:"\f0c5"}.fa-ruler-combined:before{content:"\f546"}.fa-moon:before{content:"\f186"}.fa-exclamation-triangle:before,.fa-triangle-exclamation:before,.fa-warning:before{content:"\f071"}.fa-paper-plane:before{content:"\f1d8"}.fa-life-ring:before{content:"\f1cd"}
15.fa-sr-only,.fa-sr-only-focusable:not(:focus),.sr-only,.sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}:host,:root{--fa-style-family-brands:"Font Awesome 6 Brands";--fa-font-brands:normal 400 1em/1 "Font Awesome 6 Brands"}@font-face{font-family:"Font Awesome 6 Brands";font-style:normal;font-weight:400;font-display:swap;src:url("../webfonts/fa-brands-400.woff2") format("woff2")}.fa-brands,.fab{font-weight:400}.fa-facebook-f:before{content:"\f39e"}.fa-x-twitter:before{content:"\e61b"}.fa-linkedin:before{content:"\f08c"}:host,:root{--fa-font-regular:normal 400 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:400;font-display:swap;src:url("../webfonts/fa-regular-400.woff2") format("woff2")}.fa-regular,.far{font-weight:400}:host,:root{--fa-style-family-classic:"Font Awesome 6 Free";--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:900;font-display:swap;src:url("../webfonts/fa-solid-900.woff2") format("woff2")}.fa-solid,.fas{font-weight:900}@font-face{font-family:"Font Awesome 5 Brands";font-display:swap;font-weight:400;src:url("../webfonts/fa-brands-400.woff2") format("woff2")}@font-face{font-family:"Font Awesome 5 Free";font-display:swap;font-weight:900;src:url("../webfonts/fa-solid-900.woff2") format("woff2")}@font-face{font-family:"Font Awesome 5 Free";font-display:swap;font-weight:400;src:url("../webfonts/fa-regular-400.woff2") format("woff2")}@font-face{font-family:"FontAwesome";font-display:swap;src:url("../webfonts/fa-solid-900.woff2") format("woff2")}@font-face{font-family:"FontAwesome";font-display:swap;src:url("../webfonts/fa-brands-400.woff2") format("woff2")}@font-face{font-family:"FontAwesome";font-display:swap;src:url("../webfonts/fa-regular-400.woff2") format("woff2");
15unicode-range:u+f003,u+f006,u+f014,u+f016-f017,u+f01a-f01b,u+f01d,u+f022,u+f03e,u+f044,u+f046,u+f05c-f05d,u+f06e,u+f070,u+f087-f088,u+f08a,u+f094,u+f096-f097,u+f09d,u+f0a0,u+f0a2,u+f0a4-f0a7,u+f0c5,u+f0c7,u+f0e5-f0e6,u+f0eb,u+f0f6-f0f8,u+f10c,u+f114-f115,u+f118-f11a,u+f11c-f11d,u+f133,u+f147,u+f14e,u+f150-f152,u+f185-f186,u+f18e,u+f190-f192,u+f196,u+f1c1-f1c9,u+f1d9,u+f1db,u+f1e3,u+f1ea,u+f1f7,u+f1f9,u+f20a,u+f247-f248,u+f24a,u+f24d,u+f255-f25b,u+f25d,u+f271-f274,u+f278,u+f27b,u+f28c,u+f28e,u+f29c,u+f2b5,u+f2b7,u+f2ba,u+f2bc,u+f2be,u+f2c0-f2c1,u+f2c3,u+f2d0,u+f2d2,u+f2d4,u+f2dc}@font-face{font-family:"FontAwesome";font-display:swap;src:url("../webfonts/fa-v4compatibility.woff2") format("woff2");unicode-range:u+f041,u+f047,u+f065-f066,u+f07d-f07e,u+f080,u+f08b,u+f08e,u+f090,u+f09a,u+f0ac,u+f0ae,u+f0b2,u+f0d0,u+f0d6,u+f0e4,u+f0ec,u+f10a-f10b,u+f123,u+f13e,u+f148-f149,u+f14c,u+f156,u+f15e,u+f160-f161,u+f163,u+f175-f178,u+f195,u+f1f8,u+f219,u+f27a}</style>
16<style data-idp-language-critical>.idp-language-switcher summary::after{content:"";width:7px;height:7px;flex:0 0 auto;margin-inline-start:2px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(45deg) translateY(-2px);transition:transform .18s ease;}.idp-language-switcher details[open] > summary::after{transform:rotate(225deg) translate(-1px, -1px);}</style>
17
18
19
20<meta name="viewport" content="width=device-width, initial-scale=1.0" />
21  <meta name="referrer" content="strict-origin-when-cross-origin" />
22  <title>Contact Image Downloader Pro Support | Help, Billing &amp; Feedback</title>
23  <meta name="description" content="Contact Image Downloader Pro support for extension help, bug reports, billing questions, Premium activation, feature requests, partnerships, and feedback." />
24  <meta name="keywords" content="Image Downloader Pro, Contact Image Downloader Pro Support, Contact us., Bug report, Billing / Premium, Premium help, Feature request" />
25  <meta name="author" content="Image Downloader Pro" />
26  <meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1" />
27  <link rel="canonical" href="https://imagedownloaderpro.com/contact/" />
28  <link rel="alternate" hreflang="am" href="https://imagedownloaderpro.com/am/contact/" />
29  <link rel="alternate" hreflang="ar" href="https://imagedownloaderpro.com/ar/contact/" />
30  <link rel="alternate" hreflang="bg" href="https://imagedownloaderpro.com/bg/contact/" />
31  <link rel="alternate" hreflang="bn" href="https://imagedownloaderpro.com/bn/contact/" />
32  <link rel="alternate" hreflang="ca" href="https://imagedownloaderpro.com/ca/contact/" />
33  <link rel="alternate" hreflang="cs" href="https://imagedownloaderpro.com/cs/contact/" />
34  <link rel="alternate" hreflang="da" href="https://imagedownloaderpro.com/da/contact/" />
35  <link rel="alternate" hreflang="de" href="https://imagedownloaderpro.com/de/contact/" />
36  <link rel="alternate" hreflang="el" href="https://imagedownloaderpro.com/el/contact/" />
37  <link rel="alternate" hreflang="en" href="https://imagedownloaderpro.com/contact/" />
38  <link rel="alternate" hreflang="es" href="https://imagedownloaderpro.com/es/contact/" />
39  <link rel="alternate" hreflang="et" href="https://imagedownloaderpro.com/et/contact/" />
40  <link rel="alternate" hreflang="fa" href="https://imagedownloaderpro.com/fa/contact/" />
41  <link rel="alternate" hreflang="fi" href="https://imagedownloaderpro.com/fi/contact/" />
42  <link rel="alternate" hreflang="fil" href="https://imagedownloaderpro.com/fil/contact/" />
43  <link rel="alternate" hreflang="fr" href="https://imagedownloaderpro.com/fr/contact/" />
44  <link rel="alternate" hreflang="gu" href="https://imagedownloaderpro.com/gu/contact/" />
45  <link rel="alternate" hreflang="he" href="https://imagedownloaderpro.com/he/contact/" />
46  <link rel="alternate" hreflang="hi" href="https://imagedownloaderpro.com/hi/contact/" />
47  <link rel="alternate" hreflang="hr" href="https://imagedownloaderpro.com/hr/contact/" />
48  <link rel="alternate" hreflang="hu" href="https://imagedownloaderpro.com/hu/contact/" />
49  <link rel="alternate" hreflang="id" href="https://imagedownloaderpro.com/id/contact/" />
50  <link rel="alternate" hreflang="it" href="https://imagedownloaderpro.com/it/contact/" />
51  <link rel="alternate" hreflang="ja" href="https://imagedownloaderpro.com/ja/contact/" />
52  <link rel="alternate" hreflang="kn" href="https://imagedownloaderpro.com/kn/contact/" />
53  <link rel="alternate" hreflang="ko" href="https://imagedownloaderpro.com/ko/contact/" />
54  <link rel="alternate" hreflang="lt" href="https://imagedownloaderpro.com/lt/contact/" />
55  <link rel="alternate" hreflang="lv" href="https://imagedownloaderpro.com/lv/contact/" />
56  <link rel="alternate" hreflang="ml" href="https://imagedownloaderpro.com/ml/contact/" />
57  <link rel="alternate" hreflang="mr" href="https://imagedownloaderpro.com/mr/contact/" />
58  <link rel="alternate" hreflang="ms" href="https://imagedownloaderpro.com/ms/contact/" />
59  <link rel="alternate" hreflang="nl" href="https://imagedownloaderpro.com/nl/contact/" />
60  <link rel="alternate" hreflang="no" href="https://imagedownloaderpro.com/no/contact/" />
61  <link rel="alternate" hreflang="pl" href="https://imagedownloaderpro.com/pl/contact/" />
62  <link rel="alternate" hreflang="pt-BR" href="https://imagedownloaderpro.com/pt-br/contact/" />
63  <link rel="alternate" hreflang="ro" href="https://imagedownloaderpro.com/ro/contact/" />
64  <link rel="alternate" hreflang="ru" href="https://imagedownloaderpro.com/ru/contact/" />
65  <link rel="alternate" hreflang="sk" href="https://imagedownloaderpro.com/sk/contact/" />
66  <link rel="alternate" hreflang="sl" href="https://imagedownloaderpro.com/sl/contact/" />
67  <link rel="alternate" hreflang="sr" href="https://imagedownloaderpro.com/sr/contact/" />
68  <link rel="alternate" hreflang="sv" href="https://imagedownloaderpro.com/sv/contact/" />
69  <link rel="alternate" hreflang="sw" href="https://imagedownloaderpro.com/sw/contact/" />
70  <link rel="alternate" hreflang="ta" href="https://imagedownloaderpro.com/ta/contact/" />
71<link rel="alternate" hreflang="te" href="https://imagedownloaderpro.com/te/contact/" />
72  <link rel="alternate" hreflang="th" href="https://imagedownloaderpro.com/th/contact/" />
73  <link rel="alternate" hreflang="tr" href="https://imagedownloaderpro.com/tr/contact/" />
74  <link rel="alternate" hreflang="uk" href="https://imagedownloaderpro.com/uk/contact/" />
75  <link rel="alternate" hreflang="vi" href="https://imagedownloaderpro.com/vi/contact/" />
76  <link rel="alternate" hreflang="zh-CN" href="https://imagedownloaderpro.com/zh-cn/contact/" />
77  <link rel="alternate" hreflang="zh-TW" href="https://imagedownloaderpro.com/zh-tw/contact/" />
78  <link rel="alternate" hreflang="x-default" href="https://imagedownloaderpro.com/contact/" />
79  <meta name="googlebot" content="index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1" />
80  <meta name="application-name" content="Image Downloader Pro" />
81  <meta name="apple-mobile-web-app-title" content="Image Downloader Pro" />
82  <meta name="theme-color" content="#2563eb" />
83
84
85
86  <meta property="og:type" content="website" />
87  <meta property="og:site_name" content="Image Downloader Pro" />
88  <meta property="og:title" content="Contact Image Downloader Pro Support | Help, Billing &amp; Feedback" />
89  <meta property="og:description" content="Contact Image Downloader Pro supp
89ort for extension help, bug reports, billing questions, Premium activation, feature requests, partnerships, and feedback." />
90  <meta property="og:url" content="https://imagedownloaderpro.com/contact/" />
91  <meta property="og:image" content="https://imagedownloaderpro.com/img/listing_big.webp" />
92  <meta property="og:image:width" content="1400" />
93  <meta property="og:image:height" content="560" />
94  <meta property="og:image:type" content="image/webp" />
95  <meta property="og:image:alt" content="contact - Image Downloader Pro" />
96  <meta property="og:locale" content="en_US" />
97  <meta name="twitter:card" content="summary_large_image" />
98  <meta name="twitter:title" content="Contact Image Downloader Pro Support | Help, Billing &amp; Feedback" />
99  <meta name="twitter:description" content="Contact Image Downloader Pro support for extension help, bug reports, billing questions, Premium activation, feature requests, partnerships, and feedback." />
100  <meta name="twitter:image" content="https://imagedownloaderpro.com/img/listing_big.webp" />
101  <link rel="icon" type="image/webp" href="../img/logo-imagedownloaderpro-ui.webp" />
102
103
104
105
106
107<noscript></noscript>
108
109
110<noscript></noscript>
111  
111<script type="application/ld+json">
112{
113  "@context": "https://schema.org",
114  "@graph": [
115    {
116      "@type": "Organization",
117      "@id": "https://imagedownloaderpro.com/#organization",
118      "name": "Image Downloader Pro",
119      "url": "https://imagedownloaderpro.com/contact/",
120      "logo": "https://imagedownloaderpro.com/img/logo-imagedownloaderpro.webp",
121      "sameAs": [
122        "https://www.facebook.com/ExtensioHub",
123        "https://x.com/extensiohub",
124        "https://www.linkedin.com/company/extensiohub"
125      ],
126      "contactPoint": [
127        {
128          "@type": "ContactPoint",
129          "contactType": "customer support",
130          "email": "[email protected]",
131          "availableLanguage": [
132            "en"
133          ]
134        }
135      ]
136    },
137    {
138      "@type": "WebSite",
139      "@id": "https://imagedownloaderpro.com/#website",
140      "url": "https://imagedownloaderpro.com/contact/",
141      "name": "Image Downloader Pro",
142      "publisher": {
143        "@id": "https://imagedownloaderpro.com/#organization"
144      },
145      "inLanguage": "en"
146    },
147    {
148      "@type": "ContactPage",
149      "@id": "https://imagedownloaderpro.com/contact.html#webpage",
150      "url": "https://imagedownloaderpro.com/contact/",
151      "name": "Contact Image Downloader Pro Support",
152      "description": "Contact Image Downloader Pro support for extension help, bug reports, billing questions, Premium activation, feature requests, partnerships, and feedback.",
153      "isPartOf": {
154        "@id": "https://imagedownloaderpro.com/#website"
155      },
156      "about": {
157        "@id": "https://imagedownloaderpro.com/#organization"
158      },
159      "inLanguage": "en"
160    },
161    {
162      "@type": "BreadcrumbList",
163      "@id": "https://imagedownloaderpro.com/contact.html#breadcrumb",
164      "itemListElement": [
165        {
166          "@type": "ListItem",
167          "position": 1,
168          "name": "Home",
169          "item": "https://imagedownloaderpro.com/"
170        },
171        {
172          "@type": "ListItem",
173          "position": 2,
174          "name": "Contact",
175          "item": "https://imagedownloaderpro.com/contact.html"
176        }
177      ]
178    }
179  ],
180  "inLanguage": "en"
181}
182  </script>
182
183  <style>
184    *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
185    html { scrollbar-gutter: stable; }
186    :root {
187      --bg: #f6f8fb;
188      --surface: #ffffff;
189      --surface-soft: #edf3f8;
190      --border: rgba(15, 23, 42, 0.1);
191      --text: #111827;
192      --muted: #64748b;
193      --accent: #2563eb;
194      --shadow: rgba(15, 23, 42, 0.08);
195    }
196    body {
197      min-height: 100vh;
198      background:
199        radial-gradient(circle at 14% 12%, rgba(37,99,235,0.12), transparent 32%),
200        radial-gradient(circle at 88% 20%, rgba(14,165,233,0.10), transparent 30%),
201        linear-gradient(180deg, #f8fbff 0%, #ffffff 56%, #f6f8fb 100%);
202      color: var(--text);
203      font-family: 'Instrument Sans', sans-serif;
204    }
205    body::before {
206      content: '';
207      position: fixed;
208      inset: 0;
209      background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.04'/%3E%3C/svg%3E");
210      pointer-events: none;
211      opacity: 0.22;
212    }
213    a { color: inherit; }
214    .page-shell { width: min(1000px, calc(100% - 2rem)); margin: 0 auto; }
215    .topbar {
216      display: flex;
217      align-items: center;
218      justify-content: space-between;
219      gap: 1rem;
220      padding: 2rem 0 1rem;
221    }
222    .brand {
223      display: inline-flex;
224      align-items: center;
225      gap: 0.55rem;
226      text-decoration: none;
227      font-family: 'Instrument Sans', sans-serif;
228      font-weight: 600;
229      font-size: 1.36rem;
230      line-height: 1;
231    }
232    .brand img { width: 30px; height: 30px; object-fit: contain; display: block; flex: 0 0 auto; }
233    .brand > span {
234      display: inline-flex;
235      align-items: baseline;
236      gap: 0.35rem;
237      transform: translateY(0.22em);
238      color: #000;
239    }
240    .brand-pro { color: #dc2626; }
241    .nav-links { display: flex; align-items: center; gap: 1rem; flex-wrap: wrap; }
242    .nav-links a {
243      color: var(--muted);
244      font-size: 0.86rem;
245      font-weight: 700;
246      text-decoration: none;
247    }
248    .nav-links a:hover { color: var(--text); }
249    .nav-links a[aria-current="page"] { color: var(--text); }
250    .hero {
251      text-align: center;
252      padding: 4.5rem 0 2.5rem;
253    }
254    .eyebrow {
255      color: var(--accent);
256      font-family: 'DM Mono', monospace;
257      font-size: 0.72rem;
258      letter-spacing: 0.14em;
259      text-transform: uppercase;
260      margin-bottom: 1rem;
261    }
262    h1 {
263      font-family: 'DM Serif Display', serif;
264      font-size: clamp(2.6rem, 6vw, 5rem);
265      line-height: 1.03;
266      margin-bottom: 1.25rem;
267    }
268    .hero p {
269      color: var(--muted);
270      font-size: 1.04rem;
271      line-height: 1.7;
272      max-width: 620px;
273      margin: 0 auto;
274    }
275    .contact-layout {
276      display: grid;
277      grid-template-columns: minmax(0, 1fr) 320px;
278      gap: 1rem;
279      align-items: start;
280      padding-bottom: 5rem;
281    }
282    .card {
283      background: rgba(255,255,255,0.84);
284      border: 1px solid var(--border);
285      border-radius: 14px;
286      box-shadow: 0 24px 60px rgba(37,99,235,0.08);
287      backdrop-filter: blur(12px);
288    }
289    .form-card { padding: 1.25rem; }
290    .side-card { padding: 1.25rem; }
291    .card-title {
292      font-family: 'DM Serif Display', serif;
293      font-size: 1.7rem;
294      line-height: 1.1;
295      margin-bottom: 0.45rem;
296    }
297    .card-desc {
298      color: var(--muted);
299      line-height: 1.65;
300      margin-bottom: 1.2rem;
301      font-size: 0.94rem;
302    }
303    .idp-form {
304      display: grid;
305      grid-template-columns: repeat(2, minmax(0, 1fr));
306      gap: 1rem;
307    }
308    .field { display: flex; flex-direction: column; gap: 0.45rem; }
309    .span-2 { grid-column: 1 / -1; }
310    label {
311      font-size: 0.78rem;
312      font-weight: 800;
313      color: var(--text);
314    }
315    .req { color: #dc2626; }
316    input, select, textarea {
317      width: 100%;
318      border: 1px solid var(--border);
319      border-radius: 10px;
320      background: #ffffff;
321      color: var(--text);
322      font: inherit;
323      font-weight: 600;
324      padding: 0.82rem 0.9rem;
325      outline: none;
326      transition: border-color 0.16s, box-shadow 0.16s;
327    }
328    input::placeholder,
329    textarea::placeholder {
330      font-weight: 400;
331      opacity: 1;
332    }
333    textarea { min-height: 160px; resize: vertical; line-height: 1.55; }
334    input:focus, select:focus, textarea:focus {
335      border-color: rgba(37,99,235,0.45);
336      box-shadow: 0 0 0 4px rgba(37,99,235,0.12);
337    }
338    .invalid {
339      border-color: rgba(220,38,38,0.5) !important;
340      box-shadow: 0 0 0 4px rgba(220,38,38,0.10) !important;
341    }
342    .button-row {
343      display: flex;
344      flex-direction: column;
345      gap: 0.75rem;
346      margin-top: 0.15rem;
347    }
348    .button-row .btn { align-self: center; padding-inline: 1.4rem; }
349    .btn {
350      min-height: 46px;
351      border: 1px solid var(--accent);
352      border-radius: 10px;
353      background: var(--accent);
354      color: #ffffff;
355      font-weight: 800;
356      cursor: pointer;
357      display: inline-flex;
358      align-items: center;
359      justify-content: center;
360      gap: 0.55rem;
361      transition: transform 0.2s, box-shadow 0.2s, opacity 0.2s;
362    }
363    .btn:hover { transform: translateY(-1px); box-shadow: 0 16px 34px rgba(37,99,235,0.18); }
364    .btn:disabled { cursor: not-allowed; opacity: 0.65; transform: none; box-shadow: none; }
365    .form-note {
366      color: var(--muted);
367      font-size: 0.84rem;
368      line-height: 1.5;
369    }
370    .form-note a {
371      color: var(--accent);
372      font-weight: 800;
373      text-decoration: none;
374    }
375    .toast {
376      display: none;
377      border-radius: 10px;
378      border: 1px solid rgba(16,185,129,0.28);
379      background: rgba(16,185,129,0.10);
380      color: #065f46;
381      padding: 0.85rem 0.95rem;
382      font-weight: 800;
383      line-height: 1.45;
384      margin-top: 1rem;
385    }
386    .toast.show { display: block; }
387    .toast.err {
388      border-color: rgba(220,38,38,0.28);
389      background: rgba(220,38,38,0.10);
390      color: #7f1d1d;
391    }
392    .side-list {
393      display: grid;
394      gap: 0.85rem;
395      margin-top: 1rem;
396    }
397    .side-item {
398      display: grid;
399      grid-template-columns: 32px 1fr;
400      gap: 0.75rem;
401      align-items: start;
402    }
403    .side-icon {
404      width: 32px;
405      height: 32px;
406      color: #64748b;
407      display: inline-flex;
408      align-items: center;
409      justify-content: center;
410      flex: 0 0 auto;
411      line-height: 1;
412    }
413    .side-icon i {
414      width: 1.35rem;
415      height: 1.35rem;
416      display: inline-flex;
417      align-items: center;
418      justify-content: center;
419      font-size: 1.22rem;
420      line-height: 1;
421    }
422    .side-item strong { display: block; font-size: 0.92rem; margin-bottom: 0.18rem; }
423    .side-item span:not(.side-icon) { display: block; color: var(--muted); font-size: 0.86rem; line-height: 1.5; }
424    .email-link {
425      color: var(--accent);
426      font-weight: 800;
427      text-decoration: none;
428      word-break: break-word;
429    }
430    footer {
431      border-top: 1px solid var(--border);
432      padding: 2rem;
433      width: 100%;
434      background: rgba(255,255,255,0.72);
435      box-shadow: 0 100vmax 0 100vmax rgba(255,255,255,0.72);
436      clip-path: inset(0 -100vmax -100vmax -100vmax);
437    }
438    .footer-inner {
439      max-width: 1000px;
440      margin: 0 auto;
441      display: flex;
442      align-items: center;
443      justify-content: space-between;
444      flex-wrap: wrap;
445      gap: 1rem;
446    }
447    .footer-copy {
448      font-size: 0.75rem;
449      color: #52627a;
450      font-family: 'DM Mono', monospace;
451    }
452    .footer-links {
453      display: flex;
454      align-items: center;
455      justify-content: flex-end;
456      gap: 1.1rem;
457      flex-wrap: wrap;
458    }
459    .footer-link {
460      color: var(--muted);
461      font-size: 0.82rem;
462      font-weight: 400;
463      text-decoration: none;
464      transition: color 0.2s;
465    }
466    .footer-link:hover { color: var(--text); }
467    .footer-social {
468      width: 22px;
469      height: 22px;
470      display: inline-flex;
471      align-items: center;
472      justify-content: center;
473      opacity: 0.82;
474      text-decoration: none;
475      transition: opacity 0.2s, transform 0.2s;
476    }
477    .footer-social:hover {
478      opacity: 1;
479      transform: translateY(-1px);
480    }
481    .footer-social i {
482      width: 18px;
483      height: 18px;
484      display: inline-flex;
485      align-items: center;
486      justify-content: center;
487      font-size: 1.05rem;
488    }
489    .footer-social .fa-x-twitter { color: #111827; }
490    .footer-social .fa-facebook-f { color: #1877f2; }
491    .footer-social .fa-linkedin { color: #0a66c2; }
492    @media (max-width: 820px) {
493      .topbar { align-items: flex-start; flex-direction: column; }
494      .contact-layout { grid-template-columns: 1fr; }
495      .idp-form { grid-template-columns: 1fr; }
496      .span-2 { grid-column: auto; }
497      .hero { text-align: left; padding-top: 3rem; }
498      .hero p { margin: 0; }
499      .footer-inner { flex-direction: column; align-items: flex-start; text-align: left; }
500      .footer-links { justify-content: flex-start; }
501    }
502  </style>
503  
503<script
504    defer
505    data-website-id="dfid_1WWxWAsV013KBmAHF77Lv"
506    data-domain="imagedownloaderpro.com"
507    data-disable-payments="true" src="https://datafa.st/js/script.js">
508  </script>
508
509
510  <style id="idp-i18n-ui-styles">
511    .idp-language-switcher{position:fixed;z-index:2147483000;inset-block-start:14px;inset-inline-end:14px;font:600 14px/1.3 Arial,sans-serif;color:#181818}
512    .idp-language-switcher details{position:relative}
513    .idp-language-switcher summary{list-style:none;cursor:pointer;background:#fff;border:1px solid rgba(0,0,0,.16);border-radius:999px;padding:10px 14px;box-shadow:0 7px 24px rgba(0,0,0,.14);white-space:nowrap;display:flex;align-items:center;gap:9px}
514    .idp-language-switcher summary::-webkit-details-marker{display:none}
515    .idp-language-menu{position:absolute;inset-block-start:calc(100% + 8px);inset-inline-end:0;width:min(560px,calc(100vw - 28px));padding:10px;background:#fff;border:1px solid rgba(0,0,0,.15);border-radius:16px;box-shadow:0 18px 60px rgba(0,0,0,.2);overflow:hidden}
516    .idp-language-search{position:relative;margin:0 0 9px}
517    .idp-language-search input{box-sizing:border-box;width:100%;height:42px;padding:9px 38px 9px 13px;border:1px solid rgba(0,0,0,.18);border-radius:10px;background:#f7f7f4;color:#171717;font:500 14px/1.2 Arial,sans-serif;outline:none}
518    .idp-language-search input:focus{border-color:#2563eb;box-shadow:0 0 0 3px rgba(37,99,235,.14);background:#fff}
519    .idp-language-search i{position:absolute;inset-inline-end:14px;inset-block-start:50%;transform:translateY(-50%);color:#5d6470;font-size:14px;line-height:1;pointer-events:none}
520    .idp-language-list{max-height:calc(72vh - 61px);overflow:auto;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px;scrollbar-gutter:stable}
521    .idp-language-menu a{display:flex;align-items:center;gap:10px;color:#171717!important;text-decoration:none!important;padding:9px 11px;border-radius:9px;text-align:start}
522    .idp-language-menu a[hidden]{display:none!important}
523    .idp-language-empty{margin:12px 8px 7px;color:#6b7280;text-align:center;font-weight:500}
524    .idp-language-flag{width:24px;height:18px;object-fit:cover;border-radius:3px;box-shadow:0 0 0 1px rgba(0,0,0,.14);flex:0 0 auto}
525    .idp-language-menu a:hover,.idp-language-menu a:focus-visible{background:#f0f0ec;outline:none}
526    .idp-language-menu a[aria-current="true"]{background:#171717;color:#fff!important}
527    .idp-language-suggestion{position:fixed;z-index:2147482999;inset-inline:14px;inset-block-end:14px;margin:auto;max-width:620px;display:flex;align-items:center;gap:14px;padding:13px 16px;background:#171717;color:#fff;border-radius:14px;box-shadow:0 14px 42px rgba(0,0,0,.28);font:500 14px/1.4 Arial,sans-serif}
528    .idp-language-suggestion a{color:#fff;font-weight:800}.idp-language-suggestion button{margin-inline-start:auto;border:0;background:transparent;color:#fff;font-size:20px;cursor:pointer}
529    html[dir="rtl"] .idp-language-menu{direction:rtl}
530    @media(max-width:600px){.idp-language-switcher{inset-block-start:8px;inset-inline-end:8px}.idp-language-switcher summary{padding:8px 11px}.idp-language-list{grid-template-columns:1fr;max-height:calc(76vh - 61px)}.idp-language-suggestion{align-items:flex-start}}
531    @media print{.idp-language-switcher,.idp-language-suggestion{display:none!important}}
532  </style>
533  
534</head>
535<body>
536  <div class="idp-language-switcher" data-idp-locale="en">
537    <details>
538      <summary aria-label="Choose language"><img class="idp-language-flag" src="../img/flags/gb.svg" alt="" width="24" height="18" />English</summary>
539      <nav class="idp-language-menu" aria-label="Languages">
540        <div class="idp-language-search"><input type="search" inputmode="search" autocomplete="off" aria-label="Search languages" placeholder="Search languages..." /><i class="fas fa-search" aria-hidden="true"></i></div>
541        <div class="idp-language-list">
542          <a href="/am/contact/" hreflang="am" lang="am" data-idp-language="am"><img class="idp-language-flag" src="../img/flags/et.svg" alt="" width="24" height="18" loading="lazy" />አማርኛ</a>
543        <a href="/ar/contact/" hreflang="ar" lang="ar" data-idp-language="ar"><img class="idp-language-flag" src="../img/flags/sa.svg" alt="" width="24" height="18" loading="lazy" />العربية</a>
544        <a href="/bg/contact/" hreflang="bg" lang="bg" data-idp-language="bg"><img class="idp-language-flag" src="../img/flags/bg.svg" alt="" width="24" height="18" loading="lazy" />Български</a>
545        <a href="/bn/contact/" hreflang="bn" lang="bn" data-idp-language="bn"><img class="idp-language-flag" src="../img/flags/bd.svg" alt="" width="24" height="18" loading="lazy" />বাংলা</a>
546        <a href="/ca/contact/" hreflang="ca" lang="ca" data-idp-language="ca"><img class="idp-language-flag" src="../img/flags/es.svg" alt="" width="24" height="18" loading="lazy" />Català</a>
547        <a href="/cs/contact/" hreflang="cs" lang="cs" data-idp-language="cs"><img class="idp-language-flag" src="../img/flags/cz.svg" alt="" width="24" height="18" loading="lazy" />Čeština</a>
548        <a href="/da/contact/" hreflang="da" lang="da" data-idp-language="da"><img class="idp-language-flag" src="../img/flags/dk.svg" alt="" width="24" height="18" loading="lazy" />Dansk</a>
549        <a href="/de/contact/" hreflang="de" lang="de" data-idp-language="de"><img class="idp-language-flag" src="../img/flags/de.svg" alt="" width="24" height="18" loading="lazy" />Deutsch</a>
550        <a href="/el/contact/" hreflang="el" lang="el" data-idp-language="el"><img class="idp-language-flag" src="../img/flags/gr.svg" alt="" width="24" height="18" loading="lazy" />Ελληνικά</a>
551        <a href="/contact/" hreflang="en" lang="en" data-idp-language="en" aria-current="true"><img class="idp-language-flag" src="../img/flags/gb.svg" alt="" width="24" height="18" loading="lazy" />English</a>
552        <a href="/es/contact/" hreflang="es" lang="es" data-idp-language="es"><img class="idp-language-flag" src="../img/flags/es.svg" alt="" width="24" height="18" loading="lazy" />Español</a>
553        <a href="/et/contact/" hreflang="et" lang="et" data-idp-language="et"><img class="idp-language-flag" src="../img/flags/ee.svg" alt="" width="24" height="18" loading="lazy" />Eesti</a>
554        <a href="/fa/contact/" hreflang="fa" lang="fa" data-idp-language="fa"><img class="idp-language-flag" src="../img/flags/ir.svg" alt="" width="24" height="18" loading="lazy" />فارسی</a>
555        <a href="/fi/contact/" hreflang="fi" lang="fi" data-idp-language="fi"><img class="idp-language-flag" src="../img/flags/fi.svg" alt="" width="24" height="18" loading="lazy" />Suomi</a>
556        <a href="/fil/contact/" hreflang="fil" lang="fil" data-idp-language="fil"><img class="idp-language-flag" src="../img/flags/ph.svg" alt="" width="24" height="18" loading="lazy" />Filipino</a>
557        <a href="/fr/contact/" hreflang="fr" lang="fr" data-idp-language="fr"><img class="idp-language-flag" src="../img/flags/fr.svg" alt="" width="24" height="18" loading="lazy" />Français</a>
558        <a href="/gu/contact/" hreflang="gu" lang="gu" data-idp-language="gu"><img class="idp-language-flag" src="../img/flags/in.svg" alt="" width="24" height="18" loading="lazy" />ગુજરાતી</a>
559        <a href="/he/contact/" hreflang="he" lang="he" data-idp-language="he"><img class="idp-language-flag" src="../img/flags/il.svg" alt="" width="24" height="18" loading="lazy" />עברית</a>
560        <a href="/hi/contact/" hreflang="hi" lang="hi" data-idp-language="hi"><img class="idp-language-flag" src="../img/flags/in.svg" alt="" width="24" height="18" loading="lazy" />हिन्दी</a>
561        <a href="/hr/contact/" hreflang="hr" lang="hr" data-idp-language="hr"><img class="idp-language-flag" src="../img/flags/hr.svg" alt="" width="24" height="18" loading="lazy" />Hrvatski</a>
562        <a href="/hu/contact/" hreflang="hu" lang="hu" data-idp-language="hu"><img class="idp-language-flag" src="../img/flags/hu.svg" alt="" width="24" height="18" loading="lazy" />Magyar</a>
563        <a href="/id/contact/" hreflang="id" lang="id" data-idp-language="id"><img class="idp-language-flag" src="../img/flags/id.svg" alt="" width="24" height="18" loading="lazy" />Bahasa Indonesia</a>
564        <a href="/it/contact/" hreflang="it" lang="it" data-idp-language="it"><img class="idp-language-flag" src="../img/flags/it.svg" alt="" width="24" height="18" loading="lazy" />Italiano</a>
565        <a href="/ja/contact/" hreflang="ja" lang="ja" data-idp-language="ja"><img class="idp-language-flag" src="../img/flags/jp.svg" alt="" width="24" height="18" loading="lazy" />日本語</a>
566        <a href="/kn/contact/" hreflang="kn" lang="kn" data-idp-language="kn"><img class="idp-language-flag" src="../img/flags/in.svg" alt="" width="24" height="18" loading="lazy" />ಕನ್ನಡ</a>
567        <a href="/ko/contact/" hreflang="ko" lang="ko" data-idp-language="ko"><img class="idp-language-flag" src="../img/flags/kr.svg" alt="" width="24" height="18" loading="lazy" />한국어</a>
568        <a href="/lt/contact/" hreflang="lt" lang="lt" data-idp-language="lt"><img class="idp-language-flag" src="../img/flags/lt.svg" alt="" width="24" height="18" loading="lazy" />Lietuvių</a>
569        <a href="/lv/contact/" hreflang="lv" lang="lv" data-idp-language="lv"><img class="idp-language-flag" src="../img/flags/lv.svg" alt="" width="24" height="18" loading="lazy" />Latviešu</a>
570        <a href="/ml/contact/" hreflang="ml" lang="ml" data-idp-language="ml"><img class="idp-language-flag" src="../img/flags/in.svg" alt="" width="24" height="18" loading="lazy" />മലയാളം</a>
571        <a href="/mr/contact/" hreflang="mr" lang="mr" data-idp-language="mr"><img class="idp-language-flag" src="../img/flags/in.svg" alt="" width="24" height="18" loading="lazy" />मराठी</a>
572        <a href="/ms/contact/" hreflang="ms" lang="ms" data-idp-language="ms"><img class="idp-language-flag" src="../img/flags/my.svg" alt="" width="24" height="18" loading="lazy" />Bahasa Melayu</a>
573        <a href="/nl/contact/" hreflang="nl" lang="nl" data-idp-language="nl"><img class="idp-language-flag" src="../img/flags/nl.svg" alt="" width="24" height="18" loading="lazy" />Nederlands</a>
574        <a href="/no/contact/" hreflang="no" lang="no" data-idp-language="no"><img class="idp-language-flag" src="../img/flags/no.svg" alt="" width="24" height="18" loading="lazy" />Norsk</a>
575        <a href="/pl/contact/" hreflang="pl" lang="pl" data-idp-language="pl"><img class="idp-language-flag" src="../img/flags/pl.svg" alt="" width="24" height="18" loading="lazy" />Polski</a>
576        <a href="/pt-br/contact/" hreflang="pt-br" lang="pt-br" data-idp-language="pt-br"><img class="idp-language-flag" src="../img/flags/br.svg" alt="" width="24" height="18" loading="lazy" />Português</a>
577        <a href="/ro/contact/" hreflang="ro" lang="ro" data-idp-language="ro"><img class="idp-language-flag" src="../img/flags/ro.svg" alt="" width="24" height="18" loading="lazy" />Română</a>
578        <a href="/ru/contact/" hreflang="ru" lang="ru" data-idp-language="ru"><img class="idp-language-flag" src="../img/flags/ru.svg" alt="" width="24" height="18" loading="lazy" />Русский</a>
579        <a href="/sk/contact/" hreflang="sk" lang="sk" data-idp-language="sk"><img class="idp-language-flag" src="../img/flags/sk.svg" alt="" width="24" height="18" loading="lazy" />Slovenčina</a>
580        <a href="/sl/contact/" hreflang="sl" lang="sl" data-idp-language="sl"><img class="idp-language-flag" src="../img/flags/si.svg" alt="" width="24" height="18" loading="lazy" />Slovenščina</a>
581        <a href="/sr/contact/" hreflang="sr" lang="sr" data-idp-language="sr"><img class="idp-language-flag" src="../img/flags/rs.svg" alt="" width="24" height="18" loading="lazy" />Српски</a>
582        <a href="/sv/contact/" hreflang="sv" lang="sv" data-idp-language="sv"><img class="idp-language-flag" src="../img/flags/se.svg" alt="" width="24" height="18" loading="lazy" />Svenska</a>
583        <a href="/sw/contact/" hreflang="sw" lang="sw" data-idp-language="sw"><img class="idp-language-flag" src="../img/flags/ke.svg" alt="" width="24" height="18" loading="lazy" />Kiswahili</a>
584        <a href="/ta/contact/" hreflang="ta" lang="ta" data-idp-language="ta"><img class="idp-language-flag" src="../img/flags/in.svg" alt="" width="24" height="18" loading="lazy" />தமிழ்</a>
585<a href="/te/contact/" hreflang="te" lang="te" data-idp-language="te"><img class="idp-language-flag" src="../img/flags/in.svg" alt="" width="24" height="18" loading="lazy" />తెలుగు</a>
586        <a href="/th/contact/" hreflang="th" lang="th" data-idp-language="th"><img class="idp-language-flag" src="../img/flags/th.svg" alt="" width="24" height="18" loading="lazy" />ไทย</a>
587        <a href="/tr/contact/" hreflang="tr" lang="tr" data-idp-language="tr"><img class="idp-language-flag" src="../img/flags/tr.svg" alt="" width="24" height="18" loading="lazy" />Türkçe</a>
588        <a href="/uk/contact/" hreflang="uk" lang="uk" data-idp-language="uk"><img class="idp-language-flag" src="../img/flags/ua.svg" alt="" width="24" height="18" loading="lazy" />Українська</a>
589        <a href="/vi/contact/" hreflang="vi" lang="vi" data-idp-language="vi"><img class="idp-language-flag" src="../img/flags/vn.svg" alt="" width="24" height="18" loading="lazy" />Tiếng Việt</a>
590        <a href="/zh-cn/contact/" hreflang="zh-cn" lang="zh-cn" data-idp-language="zh-cn"><img class="idp-language-flag" src="../img/flags/cn.svg" alt="" width="24" height="18" loading="lazy" />简体中文</a>
591        <a href="/zh-tw/contact/" hreflang="zh-tw" lang="zh-tw" data-idp-language="zh-tw"><img class="idp-language-flag" src="../img/flags/tw.svg" alt="" width="24" height="18" loading="lazy" />繁體中文</a>
592        </div>
593        <p class="idp-language-empty" hidden>No languages found</p>
594      </nav>
595    </details>
596  </div>
597  <div class="page-shell">
598    <header class="topbar">
599      <a class="brand" href="/">
600        <img src="../img/logo-imagedownloaderpro-ui.webp" alt="" aria-hidden="true" />
601        <span>Image Downloader <span class="brand-pro">Pro</span></span>
602      </a>
603      <nav class="nav-links" aria-label="Page navigation">
604        <a href="/">Home</a>
605        <a href="/privacy/">Privacy Policy</a>
606        <a href="/terms/">Terms</a>
607        <a href="/contact/" aria-current="page">Contact</a>
608      </nav>
609    </header>
610
611    <main>
612      <section class="hero">
613        <h1>Contact us.</h1>
614        <p>Questions, bug reports, billing issues, or feature ideas? Send a message and we will reply as soon as possible.</p>
615      </section>
616
617      <section class="contact-layout" aria-label="Contact form and support information">
618        <div class="card form-card">
619          <h2 class="card-title">Send a message</h2>
620          <p class="card-desc">This form is delivered to our support inbox through Web3Forms, the same form provider used by our previous website.</p>
621
622          <form class="idp-form" id="contact-form" novalidate>
623            <input name="access_key" type="hidden" value="b0d7b7b8-1ad5-4b33-b969-ba90863f9e6d" />
624            <div class="field">
625              <label for="cf-email">Your email <span class="req">*</span></label>
626              <input id="cf-email" name="email" type="email" placeholder="[email protected]" required />
627            </div>
628            <div class="field">
629              <label for="cf-topic">Topic <span class="req">*</span></label>
630              <select id="cf-topic" name="topic" required>
631                <option disabled selected value="">Select topic</option>
632              <option value="Bug report">Bug report</option>
633              <option value="Extension not working">Extension not working</option>
634              <option value="Billing / Premium">Billing / Premium</option>
635              <option value="Feature request">Feature request</option>
636              <option value="Question about the extension">Question about the extension</option>
637              <option value="Feedback / Suggestions">Feedback / Suggestions</option>
638              <option value="Partnership">Partnership</option>
639              <option value="Other">Other</option>
640              </select>
641            </div>
642            <div class="field span-2">
643              <label for="cf-message">Message <span class="req">*</span></label>
644              <textarea id="cf-message" name="message" placeholder="Describe the issue, expected behavior, and steps to reproduce..." required rows="6"></textarea>
645            </div>
646            <div class="button-row span-2">
647              <button class="btn" id="cf-submit" type="submit">
648                <i class="fa-solid fa-paper-plane" aria-hidden="true"></i>
649                <span>Send message</span>
650              </button>
651              <div class="form-note">
652                Your message will be delivered via Web3Forms. Please do not include payment card details or sensitive data.
653                <a href="/privacy/">Read Privacy Policy</a>
654              </div>
655              <div class="toast" id="cf-toast" role="status" aria-live="polite"></div>
656            </div>
657          </form>
658        </div>
659
660        <aside class="card side-card">
661          <h2 class="card-title">Before sending</h2>
662          <p class="card-desc">A little detail helps us solve issues faster.</p>
663          <div class="side-list">
664            <div class="side-item">
665              <span class="side-icon"><i class="fa-solid fa-globe" aria-hidden="true"></i></span>
666              <div><strong>Page URL</strong><span>If a scan fails, include the website URL and what you clicked.</span></div>
667            </div>
668            <div class="side-item">
669              <span class="side-icon"><i class="fa-solid fa-crown" aria-hidden="true"></i></span>
670              <div><strong>Premium help</strong><span>For activation issues, include your purchase email. Never send card details.</span></div>
671            </div>
672            <div class="side-item">
673              <span class="side-icon"><i class="fa-solid fa-envelope" aria-hidden="true"></i></span>
674              <div><strong>Email fallback</strong><span><a class="email-link" href="mailto:[email protected]">[email protected]</a></span></div>
675            </div>
676          </div>
677        </aside>
678      </section>
679    </main>
680
681  </div>
682
683  <footer>
684    <div class="footer-inner">
685      <div class="footer-copy">&copy; 2026 Image Downloader Pro. All rights reserved.</div>
686      <div class="footer-links" aria-label="Footer links">
687        <a class="footer-link" href="/privacy/">Privacy Policy</a>
688        <a class="footer-link" href="/terms/">Terms</a>
689        <a class="footer-link" href="/contact/">Contact</a>
690        <a class="footer-social" href="https://www.facebook.com/ExtensioHub" target="_blank" rel="noopener" aria-label="ExtensioHub on Facebook">
691          <i class="fa-brands fa-facebook-f" aria-hidden="true"></i>
692        </a>
693        <a class="footer-social" href="https://x.com/extensiohub" target="_blank" rel="noopener" aria-label="ExtensioHub on X">
694          <i class="fa-brands fa-x-twitter" aria-hidden="true"></i>
695        </a>
696        <a class="footer-social" href="https://www.linkedin.com/company/extensiohub" target="_blank" rel="noopener" aria-label="ExtensioHub on LinkedIn">
697          <i class="fa-brands fa-linkedin" aria-hidden="true"></i>
698        </a>
699      </div>
700    </div>
701  </footer>
702
703  
703<script>
704    (function(){
705      const form = document.getElementById("contact-form");
706      const toast = document.getElementById("cf-toast");
707      const btn = document.getElementById("cf-submit");
708      if (!form || !toast || !btn) return;
709
710      const emailEl = document.getElementById("cf-email");
711      const topicEl = document.getElementById("cf-topic");
712      const msgEl = document.getElementById("cf-message");
713      const requiredFieldsMessage = "Please fill all required fields.";
714      const minimumLengthMessage = "Message must be at least 10 characters.";
715      let validationAttempted = false;
716
717      function showToast(type, msg) {
718        toast.className = "toast show " + (type === "ok" ? "" : "err");
719        toast.textContent = msg;
720      }
721
722      function setInvalid(el, bad) {
723        if (!el) return;
724        el.classList.toggle("invalid", !!bad);
725      }
726
727      function getFormState() {
728        const email = (emailEl?.value || "").trim();
729        const topic = (topicEl?.value || "").trim();
730        const message = (msgEl?.value || "").trim();
731        return {
732          email,
733          topic,
734          message,
735          emailOk: /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email),
736          messageOk: message.length >= 10
737        };
738      }
739
740      function validationMessage(state) {
741        return [
742          (!state.emailOk || !state.topic) ? requiredFieldsMessage : "",
743          !state.messageOk ? minimumLengthMessage : ""
744        ].filter(Boolean).join(" ");
745      }
746
747      function refreshValidation() {
748        if (!validationAttempted) return;
749        const state = getFormState();
750        setInvalid(emailEl, !state.emailOk);
751        setInvalid(topicEl, !state.topic);
752        setInvalid(msgEl, !state.messageOk);
753        const message = validationMessage(state);
754        if (message) {
755          showToast("err", message);
756        } else {
757          toast.className = "toast";
758          toast.textContent = "";
759          validationAttempted = false;
760        }
761      }
762
763      emailEl?.addEventListener("input", refreshValidation);
764      topicEl?.addEventListener("change", refreshValidation);
765      msgEl?.addEventListener("input", refreshValidation);
766
767      form.addEventListener("submit", async (e) => {
768        e.preventDefault();
769
770        const accessKey = (form.querySelector('input[name="access_key"]')?.value || "").trim();
771        const { email, topic, message, emailOk, messageOk } = getFormState();
772        validationAttempted = true;
773        refreshValidation();
774
775        if (!accessKey) {
776          validationAttempted = false;
777          showToast("err", "Form is not configured. Please email us directly.");
778          return;
779        }
780        if (!emailOk || !topic || !messageOk) return;
781
782        const payload = {
783          access_key: accessKey,
784          subject: `[Image Downloader Pro] ${topic} - Website contact form`,
785          from_name: "Image Downloader Pro (Website)",
786          replyto: email,
787          message: `From: ${email}\nTopic: ${topic}\n\n${message}`
788        };
789
790        try {
791          btn.disabled = true;
792          const btnText = btn.querySelector("span");
793          if (btnText) btnText.textContent = "Sending...";
794
795          const res = await fetch("https://api.web3forms.com/submit", {
796            method: "POST",
797            headers: { "Content-Type": "application/json", "Accept": "application/json" },
798            body: JSON.stringify(payload)
799          });
800          const data = await res.json().catch(() => ({}));
801
802          if (res.ok && (data.success === true || data.success === "true")) {
803            form.reset();
804            setInvalid(emailEl, false);
805            setInvalid(topicEl, false);
806            setInvalid(msgEl, false);
807            showToast("ok", "Message sent. We will get back to you soon.");
808          } else {
809            const reason = data && (data.message || data.error) ? (data.message || data.error) : "Unknown error from form provider.";
810            showToast("err", "Send failed. " + reason);
811          }
812        } catch (error) {
813          showToast("err", "Network error. Please try again later or email us directly.");
814        } finally {
815          btn.disabled = false;
816          const btnText = btn.querySelector("span");
817          if (btnText) btnText.textContent = "Send message";
818        }
819      });
820    })();
821  </script>
821
822
823  
823<script id="idp-i18n-runtime">
824  (() => {
825    const currentLocale = "en";
826    const locales = {"am":{"name":"አማርኛ","href":"/am/contact/","flag":"../img/flags/et.svg"},"ar":{"name":"العربية","href":"/ar/contact/","flag":"../img/flags/sa.svg"},"bg":{"name":"Български","href":"/bg/contact/","flag":"../img/flags/bg.svg"},"bn":{"name":"বাংলা","href":"/bn/contact/","flag":"../img/flags/bd.svg"},"ca":{"name":"Català","href":"/ca/contact/","flag":"../img/flags/es.svg"},"cs":{"name":"Čeština","href":"/cs/contact/","flag":"../img/flags/cz.svg"},"da":{"name":"Dansk","href":"/da/contact/","flag":"../img/flags/dk.svg"},"de":{"name":"Deutsch","href":"/de/contact/","flag":"../img/flags/de.svg"},"el":{"name":"Ελληνικά","href":"/el/contact/","flag":"../img/flags/gr.svg"},"en":{"name":"English","href":"/contact/","flag":"../img/flags/gb.svg"},"es":{"name":"Español","href":"/es/contact/","flag":"../img/flags/es.svg"},"et":{"name":"Eesti","href":"/et/contact/","flag":"../img/flags/ee.svg"},"fa":{"name":"فارسی","href":"/fa/contact/","flag":"../img/flags/ir.svg"},"fi":{"name":"Suomi","href":"/fi/contact/","flag":"../img/flags/fi.svg"},"fil":{"name":"Filipino","href":"/fil/contact/","flag":"../img/flags/ph.svg"},"fr":{"name":"Français","href":"/fr/contact/","flag":"../img/flags/fr.svg"},"gu":{"name":"ગુજરાતી","href":"/gu/contact/","flag":"../img/flags/in.svg"},"he":{"name":"עברית","href":"/he/contact/","flag":"../img/flags/il.svg"},"hi":{"name":"हिन्दी","href":"/hi/contact/","flag":"../img/flags/in.svg"},"hr":{"name":"Hrvatski","href":"/hr/contact/","flag":"../img/flags/hr.svg"},"hu":{"name":"Magyar","href":"/hu/contact/","flag":"../img/flags/hu.svg"},"id":{"name":"Bahasa Indonesia","href":"/id/contact/","flag":"../img/flags/id.svg"},"it":{"name":"Italiano","href":"/it/contact/","flag":"../img/flags/it.svg"},"ja":{"name":"日本語","href":"/ja/contact/","flag":"../img/flags/jp.svg"},"kn":{"name":"ಕನ್ನಡ","href":"/kn/contact/","flag":"../img/flags/in.svg"},"ko":{"name":"한국어","href":"/ko/contact/","flag":"../img/flags/kr.svg"},"lt":{"name":"Lietuvių","href":"/lt/contact/","flag":"../img/flags/lt.svg"},"lv":{"name":"Latviešu","href":"/lv/contact/","flag":"../img/flags/lv.svg"},"ml":{"name":"മലയാളം","href":"/ml/contact/","flag":"../img/flags/in.svg"},"mr":{"name":"मराठी","href":"/mr/contact/","flag":"../img/flags/in.svg"},"ms":{"name":"Bahasa Melayu","href":"/ms/contact/","flag":"../img/flags/my.svg"},"nl":{"name":"Nederlands","href":"/nl/contact/","flag":"../img/flags/nl.svg"},"no":{"name":"Norsk","href":"/no/contact/","flag":"../img/flags/no.svg"},"pl":{"name":"Polski","href":"/pl/contact/","flag":"../img/flags/pl.svg"},"pt-br":{"name":"Português","href":"/pt-br/contact/","flag":"../img/flags/br.svg"},"ro":{"name":"Română","href":"/ro/contact/","flag":"../img/flags/ro.svg"},"ru":{"name":"Русский","href":"/ru/contact/","flag":"../img/flags/ru.svg"},"sk":{"name":"Slovenčina","href":"/sk/contact/","flag":"../img/flags/sk.svg"},"sl":{"name":"Slovenščina","href":"/sl/contact/","flag":"../img/flags/si.svg"},"sr":{"name":"Српски","href":"/sr/contact/","flag":"../img/flags/rs.svg"},"sv":{"name":"Svenska","href":"/sv/contact/","flag":"../img/flags/se.svg"},"sw":{"name":"Kiswahili","href":"/sw/contact/","flag":"../img/flags/ke.svg"},"ta":{"name":"தமிழ்","href":"/ta/contact/","flag":"../img/flags/in.svg"},"th":{"name":"ไทย","href":"/th/contact/","flag":"../img/flags/th.svg"},"tr":{"name":"Türkçe","href":"/tr/contact/","flag":"../img/flags/tr.svg"},"uk":{"name":"Українська","href":"/uk/contact/","flag":"../img/flags/ua.svg"},"vi":{"name":"Tiếng Việt","href":"/vi/contact/","flag":"../img/flags/vn.svg"},"zh-cn":{"name":"简体中文","href":"/zh-cn/contact/","flag":"../img/flags/cn.svg"},"zh-tw":{"name":"繁體中文","href":"/zh-tw/contact/","flag":"../img/flags/tw.svg"}};
827    const localSiteRoot = window.location.protocol === 'file:'
828      ? new URL("../", window.location.href)
829      : null;
830    const localizeHref = (original) => {
831      if (!localSiteRoot || !original || !original.startsWith('/') || original.startsWith('//')) return original;
832      let localPath = original.slice(1);
833      if (!localPath) localPath = 'index.html';
834      else if (localPath.endsWith('/')) localPath += 'index.html';
835      else if (!/.[a-z0-9]+$/i.test(localPath)) localPath += '/index.html';
836      return new URL(localPath, localSiteRoot).href;
837    };
838    if (localSiteRoot) {
839      document.querySelectorAll('a[href^="/"]').forEach((link) => {
840        const original = link.getAttribute('href');
841        link.href = localizeHref(original);
842      });
843    }
844    const normalize = (value) => String(value || '').toLowerCase().replaceAll('_', '-');
845    const resolveLocale = (value) => {
846      const normalized = normalize(value);
847      if (locales[normalized]) return normalized;
848      if (normalized.startsWith('pt')) return 'pt-br';
849      if (/^zh-(tw|hk|hant)/.test(normalized)) return 'zh-tw';
850      if (normalized.startsWith('zh')) return 'zh-cn';
851      const base = normalized.split('-')[0];
852      return locales[base] ? base : 'en';
853    };
854    const track = (event, details = {}) => {
855      const payload = { event, locale: currentLocale, ...details };
856      if (Array.isArray(window.dataLayer)) window.dataLayer.push(payload);
857      if (window.fathom && typeof window.fathom.trackEvent === 'function') window.fathom.trackEvent(event, { _value: 0 });
858      document.dispatchEvent(new CustomEvent('idp:analytics', { detail: payload }));
859    };
860    window.IDP_LOCALE = currentLocale;
861    track('page_view');
862    const languageDetails = document.querySelector('.idp-language-switcher details');
863    const languageSearch = languageDetails?.querySelector('.idp-language-search input');
864    const languageLinks = [...(languageDetails?.querySelectorAll('[data-idp-language]') || [])];
865    const languageEmpty = languageDetails?.querySelector('.idp-language-empty');
866    const normalizeSearch = (value) => String(value || '').normalize('NFD').replace(/[̀-ͯ]/g, '').toLowerCase().trim();
867    const filterLanguages = () => {
868      const query = normalizeSearch(languageSearch?.value);
869      let visible = 0;
870      languageLinks.forEach((link) => {
871        const matches = !query || normalizeSearch(link.textContent + ' ' + link.lang).includes(query);
872        link.hidden = !matches;
873        if (matches) visible += 1;
874      });
875      if (languageEmpty) languageEmpty.hidden = visible !== 0;
876    };
877    languageSearch?.addEventListener('input', filterLanguages);
878    languageDetails?.addEventListener('toggle', () => {
879      if (languageDetails.open) {
880        if (window.innerWidth > 720) setTimeout(() =>
880 languageSearch?.focus(), 0);
881      } else if (languageSearch) {
882        languageSearch.value = '';
883        filterLanguages();
884      }
885    });
886    document.addEventListener('pointerdown', (event) => {
887      if (languageDetails?.open && !languageDetails.contains(event.target)) languageDetails.removeAttribute('open');
888    });
889    document.addEventListener('keydown', (event) => {
890      if (event.key === 'Escape' && languageDetails?.open) {
891        languageDetails.removeAttribute('open');
892        languageDetails.querySelector('summary')?.focus();
893      }
894    });
895    document.querySelectorAll('[data-idp-language]').forEach((link) => link.addEventListener('click', () => {
896      const targetLocale = link.dataset.idpLanguage;
897      localStorage.setItem('idp_locale_preference', targetLocale);
898      track('language_switch', { target_locale: targetLocale });
899    }));
900    document.querySelectorAll('a[href*="chrome.google.com/webstore"],a[href*="chromewebstore.google.com"]').forEach((link) => link.addEventListener('click', () => track('add_to_chrome_click')));
901    const contactForm = document.getElementById('contact-form');
902    if (contactForm) contactForm.addEventListener('submit', () => track('contact_submit'));
903    if (currentLocale !== 'en') return;
904    const requested = (navigator.languages || [navigator.language]).map(resolveLocale).find((locale) => locale !== 'en');
905    if (!requested || !locales[requested]) return;
906    const banner = document.createElement('aside');
907    banner.className = 'idp-language-suggestion';
908    banner.setAttribute('aria-live', 'polite');
909    banner.innerHTML = '<img class="idp-language-flag" src="' + locales[requested].flag + '" alt=""><span>Image Downloader Pro is available in ' + locales[requested].name + '.</span><a href="' + locales[requested].href + '">Switch language</a><button type="button" aria-label="Dismiss language suggestion">&times;</button>';
910    if (localSiteRoot) banner.querySelector('a').href = localizeHref(locales[requested].href);
911    banner.querySelector('a').addEventListener('click', () => {
912      localStorage.setItem('idp_locale_preference', requested);
913      track('language_switch', { target_locale: requested, source: 'suggestion' });
914    });
915    banner.querySelector('button').addEventListener('click', () => {
916      banner.remove();
917    });
918    document.body.appendChild(banner);
919  })();
920  </script>
920
921<aside class="idp-consent-banner" data-idp-consent-banner hidden aria-label="Privacy policy">
922    <p>We use optional cookies to understand site usage and improve our services and marketing. <a href="/privacy/">Privacy policy</a></p>
923    <div class="idp-consent-actions">
924      <button type="button" data-idp-consent="denied">Reject</button>
925      <button type="button" class="idp-consent-accept" data-idp-consent="granted">Accept</button>
926    </div>
927  </aside>
928</body>
929</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.