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 & 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 & 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 & 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">© 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">×</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.